From 0a3c8a894c283ba86dddeccb807fe90d0f96a640 Mon Sep 17 00:00:00 2001 From: Matthew B White Date: Mon, 26 Mar 2018 14:51:21 +0100 Subject: [PATCH] Namespace docs (#3666) * add docs to system namespace Signed-off-by: Matthew B White * add in the bna documentation tools Signed-off-by: Matthew B White * updates to support both system and network docs Signed-off-by: Matthew B White * adding in fv Signed-off-by: Matthew B White * add intergation tests and possible new start scripts Signed-off-by: Matthew B White * putting back a randomly lost network Signed-off-by: Matthew B White * review comments Signed-off-by: Matthew B White --- .../lib/cmds/generator/createDocsCommand.js | 36 + packages/composer-cli/package.json | 1 + .../composer-cli/test/generator/generator.js | 31 +- .../composer-common/lib/system/historian.md | 2 + .../org.hyperledger.composer.system.cto | 136 +- .../composer-common/scripts/systemmodelgen.js | 2 +- packages/composer-documentation/.eslintignore | 8 + packages/composer-documentation/.eslintrc.yml | 48 + packages/composer-documentation/.gitignore | 64 + packages/composer-documentation/.npmignore | 65 + packages/composer-documentation/LICENSE.txt | 11 + packages/composer-documentation/README.md | 195 ++ .../_bnaTemplate/assets.default/css/404.css | 70 + .../assets.default/css/404.min.css | 1 + .../_bnaTemplate/assets.default/css/404.scss | 90 + .../assets.default/css/composer-style.css | 103 + .../assets.default/css/grid-layout.min.css | 1 + .../assets.default/css/grid-layout.scss | 741 +++++ .../assets.default/css/new-style.min.css | 1 + .../assets.default/css/new-style.scss | 910 +++++ .../assets.default/css/normalize.css | 504 +++ .../assets.default/img/.gitignore | 0 .../_bnaTemplate/assets.default/img/404.svg | 1 + .../assets.default/img/Abstract.png | Bin 0 -> 3215 bytes .../assets.default/img/Artboard 1.svg | 1 + .../assets.default/img/Artboard 1@0.5x.png | Bin 0 -> 25022 bytes .../img/BusinessNetworkFiles.svg | 200 ++ .../assets.default/img/Caret_SW_2.svg | 1 + .../assets.default/img/Composer-Diagram.svg | 127 + .../img/ComposerArchitecture.svg | 441 +++ .../assets.default/img/ComposerComponents.svg | 1 + .../assets.default/img/Contact_us_3.png | Bin 0 -> 27448 bytes .../assets.default/img/Data_Integration.png | Bin 0 -> 9233 bytes .../img/GreenBlockAlone@0.5x.png | Bin 0 -> 7936 bytes .../img/Homepage_Illustration_2.png | Bin 0 -> 273224 bytes .../assets.default/img/Install01.svg | 406 +++ .../assets.default/img/Install02.svg | 1 + .../assets.default/img/Install03.svg | 1 + .../assets.default/img/LetsBlockchain.png | Bin 0 -> 132425 bytes .../assets.default/img/Quick_POC_2.png | Bin 0 -> 7212 bytes .../assets.default/img/Reusable_code.png | Bin 0 -> 7791 bytes .../assets.default/img/Search_Icon_1.png | Bin 0 -> 810 bytes .../assets.default/img/Search_Icon_1.svg | 13 + .../img/VioletBlockAlone@0.5x.png | Bin 0 -> 6149 bytes .../assets.default/img/banner-center.png | Bin 0 -> 143 bytes .../assets.default/img/banner-left.png | Bin 0 -> 373 bytes .../assets.default/img/banner-right.png | Bin 0 -> 382 bytes .../assets.default/img/content-bg.png | Bin 0 -> 1519 bytes .../assets.default/img/content-list-dot.png | Bin 0 -> 99 bytes .../assets.default/img/create_commodity.png | Bin 0 -> 77051 bytes .../assets.default/img/create_trader.png | Bin 0 -> 64673 bytes .../img/developer-tools-commands.png | Bin 0 -> 24157 bytes .../assets.default/img/icon-contributing.png | Bin 0 -> 248 bytes .../assets.default/img/icon-discuss.png | Bin 0 -> 320 bytes .../assets.default/img/icon-documentation.png | Bin 0 -> 198 bytes .../assets.default/img/icon-faqs.png | Bin 0 -> 313 bytes .../img/icon-getting-started.png | Bin 0 -> 238 bytes .../assets.default/img/icon-github.png | Bin 0 -> 407 bytes .../assets.default/img/icon-google-plus.png | Bin 0 -> 227 bytes .../assets.default/img/icon-home.png | Bin 0 -> 265 bytes .../assets.default/img/icon-link.png | Bin 0 -> 396 bytes .../assets.default/img/icon-menu.png | Bin 0 -> 107 bytes .../assets.default/img/icon-requirements.png | Bin 0 -> 259 bytes .../assets.default/img/icon-rss-feed.png | Bin 0 -> 144 bytes .../assets.default/img/icon-twitter.png | Bin 0 -> 376 bytes .../assets.default/img/icon-why-yeoman.png | Bin 0 -> 361 bytes .../assets.default/img/jumbotron-bottom.png | Bin 0 -> 104 bytes .../assets.default/img/nav-bg.png | Bin 0 -> 1177 bytes .../assets.default/img/social-feed.svg | 10 + .../assets.default/img/social-github.svg | 10 + .../assets.default/img/social-gplus.svg | 10 + .../assets.default/img/social-twitter.svg | 10 + .../assets.default/img/stitch-line.png | Bin 0 -> 164 bytes .../assets.default/img/submit_tx.png | Bin 0 -> 77051 bytes .../assets.default/img/subnav-dot.png | Bin 0 -> 84 bytes .../assets.default/js/autotrack.js | 57 + .../assets.default/js/libs/prettify.js | 28 + .../_bnaTemplate/assets.default/js/lunr.js | 2923 +++++++++++++++++ .../_bnaTemplate/assets.default/js/nav.js | 80 + .../_bnaTemplate/assets.default/js/search.js | 63 + .../assets.default/js/search_bar.js | 9 + .../_bnaTemplate/phase1-markdown/acls.njk | 20 + .../_bnaTemplate/phase1-markdown/assets.njk | 19 + .../_bnaTemplate/phase1-markdown/class.njk | 71 + .../_bnaTemplate/phase1-markdown/index.njk | 31 + .../phase1-markdown/participants.njk | 14 + .../_bnaTemplate/phase1-markdown/queries.njk | 14 + .../phase1-markdown/transactions.njk | 19 + .../_bnaTemplate/phase2-html/html.default.njk | 130 + .../_configs/bna-config.yaml | 53 + .../_configs/sns-config.yaml | 56 + .../assets.default/systemns-index.md | 9 + .../_template/phase1-markdown/01_summary.njk | 21 + .../_template/phase1-markdown/02_assets.njk | 33 + .../phase1-markdown/03_participants.njk | 23 + .../phase1-markdown/04_transactions.njk | 26 + .../phase2a-jekyll/jekyll.default.njk | 9 + packages/composer-documentation/bin/opus | 43 + packages/composer-documentation/header.txt | 13 + packages/composer-documentation/index.js | 17 + .../lib/grammar/modelfile-cmts.pegjs | 74 + packages/composer-documentation/lib/opus.js | 229 ++ .../lib/processors/file.js | 44 + .../lib/processors/generators/basics.js | 33 + .../generators/classdeclarations.js | 90 + .../lib/processors/hc_network.js | 61 + .../lib/processors/markdownit.js | 46 + .../lib/processors/nunjucks.js | 70 + .../lib/processors/parsers/modelfile-cmts.js | 1365 ++++++++ .../lib/processors/root.js | 19 + .../lib/processors/stream.js | 67 + .../lib/processors/visitors/info.js | 631 ++++ packages/composer-documentation/package.json | 99 + .../test/carauction-network.bna | Bin 0 -> 7837 bytes packages/composer-documentation/test/opus.js | 104 + .../composer-documentation/test/testfile.md | 1 + .../e2e/verdaccio/npm_serve.js | 3 +- .../composer-tests-integration/.eslintignore | 1 + .../features/cli-generate.feature | 15 + .../composer-tests-integration/package.json | 7 +- .../carauction-network/README.md | 188 ++ .../carauction-network/lib/logic.js | 104 + .../models/org.acme.model.cto | 57 + .../models/org.acme.vehicle.auction.cto | 77 + .../carauction-network/package.json | 1 + .../carauction-network/permissions.acl | 37 + .../carauction-network/queries.qry | 98 + .../scripts/npm_serve.js | 3 +- packages/composer-website/.gitignore | 1 + .../reference/composer.generator.docs.md | 50 + packages/composer-website/package.json | 4 +- 131 files changed, 11588 insertions(+), 25 deletions(-) create mode 100644 packages/composer-cli/lib/cmds/generator/createDocsCommand.js create mode 100644 packages/composer-common/lib/system/historian.md create mode 100644 packages/composer-documentation/.eslintignore create mode 100644 packages/composer-documentation/.eslintrc.yml create mode 100755 packages/composer-documentation/.gitignore create mode 100755 packages/composer-documentation/.npmignore create mode 100644 packages/composer-documentation/LICENSE.txt create mode 100755 packages/composer-documentation/README.md create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/css/404.css create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/css/404.min.css create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/css/404.scss create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/css/composer-style.css create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/css/grid-layout.min.css create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/css/grid-layout.scss create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/css/new-style.min.css create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/css/new-style.scss create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/css/normalize.css create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/img/.gitignore create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/img/404.svg create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/img/Abstract.png create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/img/Artboard 1.svg create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/img/Artboard 1@0.5x.png create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/img/BusinessNetworkFiles.svg create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/img/Caret_SW_2.svg create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/img/Composer-Diagram.svg create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/img/ComposerArchitecture.svg create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/img/ComposerComponents.svg create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/img/Contact_us_3.png create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/img/Data_Integration.png create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/img/GreenBlockAlone@0.5x.png create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/img/Homepage_Illustration_2.png create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/img/Install01.svg create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/img/Install02.svg create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/img/Install03.svg create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/img/LetsBlockchain.png create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/img/Quick_POC_2.png create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/img/Reusable_code.png create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/img/Search_Icon_1.png create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/img/Search_Icon_1.svg create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/img/VioletBlockAlone@0.5x.png create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/img/banner-center.png create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/img/banner-left.png create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/img/banner-right.png create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/img/content-bg.png create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/img/content-list-dot.png create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/img/create_commodity.png create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/img/create_trader.png create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/img/developer-tools-commands.png create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/img/icon-contributing.png create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/img/icon-discuss.png create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/img/icon-documentation.png create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/img/icon-faqs.png create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/img/icon-getting-started.png create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/img/icon-github.png create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/img/icon-google-plus.png create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/img/icon-home.png create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/img/icon-link.png create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/img/icon-menu.png create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/img/icon-requirements.png create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/img/icon-rss-feed.png create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/img/icon-twitter.png create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/img/icon-why-yeoman.png create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/img/jumbotron-bottom.png create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/img/nav-bg.png create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/img/social-feed.svg create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/img/social-github.svg create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/img/social-gplus.svg create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/img/social-twitter.svg create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/img/stitch-line.png create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/img/submit_tx.png create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/img/subnav-dot.png create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/js/autotrack.js create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/js/libs/prettify.js create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/js/lunr.js create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/js/nav.js create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/js/search.js create mode 100644 packages/composer-documentation/_bnaTemplate/assets.default/js/search_bar.js create mode 100755 packages/composer-documentation/_bnaTemplate/phase1-markdown/acls.njk create mode 100755 packages/composer-documentation/_bnaTemplate/phase1-markdown/assets.njk create mode 100755 packages/composer-documentation/_bnaTemplate/phase1-markdown/class.njk create mode 100755 packages/composer-documentation/_bnaTemplate/phase1-markdown/index.njk create mode 100755 packages/composer-documentation/_bnaTemplate/phase1-markdown/participants.njk create mode 100755 packages/composer-documentation/_bnaTemplate/phase1-markdown/queries.njk create mode 100755 packages/composer-documentation/_bnaTemplate/phase1-markdown/transactions.njk create mode 100755 packages/composer-documentation/_bnaTemplate/phase2-html/html.default.njk create mode 100644 packages/composer-documentation/_configs/bna-config.yaml create mode 100644 packages/composer-documentation/_configs/sns-config.yaml create mode 100644 packages/composer-documentation/_template/assets.default/systemns-index.md create mode 100755 packages/composer-documentation/_template/phase1-markdown/01_summary.njk create mode 100755 packages/composer-documentation/_template/phase1-markdown/02_assets.njk create mode 100755 packages/composer-documentation/_template/phase1-markdown/03_participants.njk create mode 100755 packages/composer-documentation/_template/phase1-markdown/04_transactions.njk create mode 100755 packages/composer-documentation/_template/phase2a-jekyll/jekyll.default.njk create mode 100755 packages/composer-documentation/bin/opus create mode 100644 packages/composer-documentation/header.txt create mode 100644 packages/composer-documentation/index.js create mode 100644 packages/composer-documentation/lib/grammar/modelfile-cmts.pegjs create mode 100755 packages/composer-documentation/lib/opus.js create mode 100644 packages/composer-documentation/lib/processors/file.js create mode 100755 packages/composer-documentation/lib/processors/generators/basics.js create mode 100755 packages/composer-documentation/lib/processors/generators/classdeclarations.js create mode 100644 packages/composer-documentation/lib/processors/hc_network.js create mode 100644 packages/composer-documentation/lib/processors/markdownit.js create mode 100644 packages/composer-documentation/lib/processors/nunjucks.js create mode 100644 packages/composer-documentation/lib/processors/parsers/modelfile-cmts.js create mode 100644 packages/composer-documentation/lib/processors/root.js create mode 100644 packages/composer-documentation/lib/processors/stream.js create mode 100644 packages/composer-documentation/lib/processors/visitors/info.js create mode 100755 packages/composer-documentation/package.json create mode 100644 packages/composer-documentation/test/carauction-network.bna create mode 100644 packages/composer-documentation/test/opus.js create mode 100644 packages/composer-documentation/test/testfile.md create mode 100644 packages/composer-tests-integration/features/cli-generate.feature create mode 100644 packages/composer-tests-integration/resources/sample-networks/carauction-network/README.md create mode 100644 packages/composer-tests-integration/resources/sample-networks/carauction-network/lib/logic.js create mode 100644 packages/composer-tests-integration/resources/sample-networks/carauction-network/models/org.acme.model.cto create mode 100644 packages/composer-tests-integration/resources/sample-networks/carauction-network/models/org.acme.vehicle.auction.cto create mode 100644 packages/composer-tests-integration/resources/sample-networks/carauction-network/package.json create mode 100644 packages/composer-tests-integration/resources/sample-networks/carauction-network/permissions.acl create mode 100644 packages/composer-tests-integration/resources/sample-networks/carauction-network/queries.qry create mode 100644 packages/composer-website/jekylldocs/reference/composer.generator.docs.md diff --git a/packages/composer-cli/lib/cmds/generator/createDocsCommand.js b/packages/composer-cli/lib/cmds/generator/createDocsCommand.js new file mode 100644 index 0000000000..db0ffb64d1 --- /dev/null +++ b/packages/composer-cli/lib/cmds/generator/createDocsCommand.js @@ -0,0 +1,36 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +'use strict'; + +const docs = require('composer-documentation'); + +module.exports.command = 'docs [options]'; +module.exports.describe = 'Create HTML Documentation from a Business Network Archive'; +module.exports.builder = function (yargs){ + + yargs.options( + { + 'archive':{alias: 'a', required: true, describe: 'Business network archive file name. Default is based on the Identifier of the BusinessNetwork', type: 'string'}, + 'config':{alias: 'c', required: false, default:'',describe: 'Path to the configuration file to use, default is one specificaly for BNA files'}, + 'outdir':{alias: 'o', required: false, default: './out', describe:'Output Location'} + } + ); + yargs.usage('composer generator docs --archiveFile digitialPropertyNetwork.bna'); + return yargs; +}; + +module.exports.handler = (argv) => { + return argv.thePromise = docs(argv); +}; diff --git a/packages/composer-cli/package.json b/packages/composer-cli/package.json index 586e9fb922..a72f4dd1b5 100644 --- a/packages/composer-cli/package.json +++ b/packages/composer-cli/package.json @@ -50,6 +50,7 @@ "composer-report": "0.19.0", "composer-wallet-filesystem": "0.19.0", "composer-wallet-inmemory": "0.19.0", + "composer-documentation": "0.19.0", "homedir": "0.6.0", "js-yaml": "3.10.0", "mkdirp": "0.5.1", diff --git a/packages/composer-cli/test/generator/generator.js b/packages/composer-cli/test/generator/generator.js index 70aa22d562..110e2ada8e 100644 --- a/packages/composer-cli/test/generator/generator.js +++ b/packages/composer-cli/test/generator/generator.js @@ -15,6 +15,7 @@ 'use strict'; const createCode = require('../../lib/cmds/generator/createCodeCommand.js'); +const createDocs = require('../../lib/cmds/generator/createDocsCommand.js'); const cmd = require('../../lib/cmds/generator.js'); const yargs = require('yargs'); require('chai').should(); @@ -23,13 +24,19 @@ const sinon = require('sinon'); chai.should(); chai.use(require('chai-things')); chai.use(require('chai-as-promised')); - +const mockery = require('mockery'); describe('composer generator cmd launcher unit tests', function () { let sandbox; beforeEach(() => { + + mockery.enable({ + warnOnReplace: false, + warnOnUnregistered: false + }); + sandbox = sinon.sandbox.create(); sandbox.stub(yargs, 'usage').returns(yargs); sandbox.stub(yargs, 'conflicts').returns(yargs); @@ -40,6 +47,7 @@ describe('composer generator cmd launcher unit tests', function () { }); afterEach(() => { + mockery.deregisterAll(); sandbox.restore(); }); @@ -49,6 +57,7 @@ describe('composer generator cmd launcher unit tests', function () { cmd.command.should.include('generator'); cmd.desc.should.include('generator'); }); + it('should call yargs correctly', () => { sandbox.stub(yargs, 'commandDir'); cmd.builder(yargs); @@ -70,4 +79,24 @@ describe('composer generator cmd launcher unit tests', function () { }); + describe('createDocs yargs builder function', () => { + + it('should drive the yargs builder fn correctly',()=>{ + createDocs.builder(yargs); + sinon.assert.calledOnce(yargs.options); + sinon.assert.calledOnce(yargs.usage); + }); + + it('should drive the yargs builder fn correctly',()=>{ + + const mockDocsGen = sinon.stub(); + mockery.registerMock('composer-documentation',mockDocsGen); + + let args = []; + createDocs.handler(args); + + }); + + }); + }); diff --git a/packages/composer-common/lib/system/historian.md b/packages/composer-common/lib/system/historian.md new file mode 100644 index 0000000000..37b01ae118 --- /dev/null +++ b/packages/composer-common/lib/system/historian.md @@ -0,0 +1,2 @@ +## Historian +documentation coming in another pr \ No newline at end of file diff --git a/packages/composer-common/lib/system/org.hyperledger.composer.system.cto b/packages/composer-common/lib/system/org.hyperledger.composer.system.cto index a47363dc80..df0814b372 100644 --- a/packages/composer-common/lib/system/org.hyperledger.composer.system.cto +++ b/packages/composer-common/lib/system/org.hyperledger.composer.system.cto @@ -14,17 +14,22 @@ namespace org.hyperledger.composer.system /** - * Abstract system asset that all assets extend + * Abstract system asset that all assets extend. + * Has no properties, and is soley used as a basis to model other assets. */ abstract asset Asset { } /** - * Abstract system participant that all participants extend + * Abstract system participant that all participants extend. + * Has no properties, and is soley used as a basis to model other assets. */ abstract participant Participant { } /** - * Abstract transaction that all transactions, including system ones, extend + * Abstract transaction that all transactions, including system ones, extend. + * + * Has two properties that are used set and are accessible in all transactions. + * * * @param {String} transactionId Identifier for this transaction * @param {DateTime} timestamp Timestamp for this transaction @@ -35,7 +40,9 @@ abstract transaction Transaction identified by transactionId { } /** - * Abstract event that all events, including system ones, extend + * Abstract event that all events, including system ones, extend. + * + * Has two properties that are used set and are accessible in all transactions. * * @param {String} eventId Identifier for this event * @param {DateTime} timestamp Timestamp for this event @@ -46,12 +53,12 @@ abstract event Event identified by eventId { } /** - * Abstract Registry asset, that is used as the basis for all types of registries - + * Abstract Registry asset, that is used as the basis for all types of registries. + * * @param {String} registryId identity * @param {String} name Name of the regsitry * @param {String} type type of the regsitry - * @param {Boolean} system Is this a system registry + * @param {Boolean} system Is this a system registry? */ abstract asset Registry identified by registryId { o String registryId @@ -61,30 +68,44 @@ abstract asset Registry identified by registryId { } /** - * AssetRegistry type + * AssetRegistry extends the Registry to define the type that of all registries + * that are primarily intended for storing Assets. + * */ asset AssetRegistry extends Registry { } /** - * ParticipantRegistry type + * ParticipantRegistry extends the Registry to define the type that of all registries + * that are primarily intended for storing Participants */ asset ParticipantRegistry extends Registry { } /** - * TransactionRegistry type + * TransactionRegistry extends the Registry to define the type that of all registries + * that are primarily intended for storing Transactions */ asset TransactionRegistry extends Registry { } -/** Asset representing the business network +/** + * Asset to represent the idea of a Business Network. + * All actions will require participants to have access to this Asset. Failure to have at least *READ* access + * will mean that participants are unable to access the network. + * + * Participants who are authorized administrators, can be granted *UPDATE* and/or *DELETE* permissions + * @param {String} networkId of the business network - * @param {String} runtimeVersion of the business network */ asset Network identified by networkId { o String networkId o String runtimeVersion } +/** + * A predefined participant that can be given the authority to adiminister the Business Network + * + * @param {String} participantId Identifier fields of the participant + */ participant NetworkAdmin identified by participantId { o String participantId } @@ -92,7 +113,9 @@ participant NetworkAdmin identified by participantId { // ----------------------------------------------------------------------------- // Historian -/** Asset to represent each historian registry entry +/** + * Asset to represent each historian registry entry + * * @param {String} transactionId Using the transaction id as the uuid * @param {Transaction} transactionInvoked Relationship to transaction * @param {Participant} participantInvoking Participant who invoked this transaction @@ -100,9 +123,10 @@ participant NetworkAdmin identified by participantId { * @param {Event[]} eventsEmitted The events that were emitted by this transactionId * @param {DateTime} transactionTimestamp Use the transaction's timestamp */ +@docsuri('Composer Documentation','../business-network/historian') asset HistorianRecord identified by transactionId { - o String transactionId - o String transactionType + o String transactionId + o String transactionType --> Transaction transactionInvoked --> Participant participantInvoking optional --> Identity identityUsed optional @@ -112,26 +136,62 @@ asset HistorianRecord identified by transactionId { // ----------------------------------------------------------------------------- // System transactions that act on Registries of any type +/** + * An abstract definition of a transaction that affects a registry in some way + * @param {Registry} targetRegistry Registry that will be manipulated + */ abstract transaction RegistryTransaction { --> Registry targetRegistry } +/** + * An abstract definition of a transaction that affects assets in a registry in some way + * @param {Asset[]} resources Resources that will be manipulated + */ abstract transaction AssetTransaction extends RegistryTransaction { o Asset[] resources } +/** + * An abstract definition of a transaction that affects participants in a registry in some way + * @param {Participant[]} resources participants that will be manipulated + */ abstract transaction ParticipantTransaction extends RegistryTransaction { o Participant[] resources } +/** + * Transaction that will add asset(s) to a registry + */ transaction AddAsset extends AssetTransaction { } + +/** + * Transaction that will update asset(s) in a registry + */ transaction UpdateAsset extends AssetTransaction { } + +/** + * Transaction that will remove asset(s) from a registry + * @param {String[]} resourceIds Identifiers of the assets to remove + */ transaction RemoveAsset extends AssetTransaction { o String[] resourceIds } +/** + * Transaction that will add participants(s) to a registry + */ transaction AddParticipant extends ParticipantTransaction { } + +/** + * Transaction that will update participants(s) in a registry + */ transaction UpdateParticipant extends ParticipantTransaction { } + +/** + * Transaction that will remove participants(s) from a registry + * @param {String[]} resourceIds Identifiers of the participants to remove + */ transaction RemoveParticipant extends ParticipantTransaction { o String[] resourceIds } @@ -139,6 +199,13 @@ transaction RemoveParticipant extends ParticipantTransaction { // ----------------------------------------------------------------------------- // Identity + +/** The valid states of an identity + * @enum {ISSUED} identity has been issued + * @enum {BOUND} identity has been bound to a participant + * @enum {ACTIVATED} identitiy has been activated + * @enum {REVOKED} identitiy has been revoked + */ enum IdentityState { o ISSUED o BOUND @@ -146,6 +213,16 @@ enum IdentityState { o REVOKED } +/** + * Asset representing the idea of an Indentity + * + * @param {String} identityId Unique Identifiers + * @param {String} name Name given to this identity + * @param {String} issuer The issuer + * @param {String} certificate The certificate + * @param {IdentityState} state State the indenitiy is in + * @param {Participant} participant Associated participant + */ asset Identity identified by identityId { o String identityId o String name @@ -155,35 +232,60 @@ asset Identity identified by identityId { --> Participant participant } +/** + * Transaction that will issue the indenitiy + * @param {Participant} participant to issue the identity to + * @param {String} identityName name to use for this identity + */ transaction IssueIdentity { --> Participant participant o String identityName } +/** + * Transaction that will bind the identity + * @param {Participant} participant to issue bind identity to + * @param {String} certificate to use + */ transaction BindIdentity { --> Participant participant o String certificate } +/** + * Transaction that will activate the current the identity + */ transaction ActivateCurrentIdentity { } +/** + * Transaction that will revoke the identity + * @param {Identity} identity to revoke + */ transaction RevokeIdentity { --> Identity identity } -// -------------------------------------------------------------------------- +/** + * Transaction that will Start a business network + * @param {Transaction[]} [bootstrapTransactions] optional transactions to use to bootstrap the network + * @param {String} [logLevel] Log level to use optionally + * + */ transaction StartBusinessNetwork { o String logLevel optional o Transaction[] bootstrapTransactions optional } +/** + * Transaction that will Reset a business network. This removes all the data but leaves the structure of the business network intact + */ transaction ResetBusinessNetwork { } /** * Sets the log level of the Business Network runtime to that specified - * @param {String} newLogLevel one of VERBOSE DEBUG INFO WARNING ERROR + * @param {String} newLogLevel a valid debug string */ transaction SetLogLevel { o String newLogLevel diff --git a/packages/composer-common/scripts/systemmodelgen.js b/packages/composer-common/scripts/systemmodelgen.js index 6c69028fa4..4fb1b4819c 100644 --- a/packages/composer-common/scripts/systemmodelgen.js +++ b/packages/composer-common/scripts/systemmodelgen.js @@ -21,7 +21,7 @@ const nunjucks=require('nunjucks'); const targetFile = path.resolve(__dirname, '..', 'lib','systemmodel.js'); const templatePath = path.resolve(__dirname, '..', 'lib','_template'); const modelDirectory = path.resolve(__dirname, '..', 'lib','system'); -const modelFiles = fs.readdirSync(modelDirectory); +const modelFiles = fs.readdirSync(modelDirectory).filter((f)=>{ return path.extname(f)==='.cto';}); // nunjucks is already used in other parts of the codebase // that is the primary reason for choosing it! diff --git a/packages/composer-documentation/.eslintignore b/packages/composer-documentation/.eslintignore new file mode 100644 index 0000000000..46aa5964ae --- /dev/null +++ b/packages/composer-documentation/.eslintignore @@ -0,0 +1,8 @@ +coverage +node_modules +out +lib/processors/parsers/** +test/data +_configs +_bnaTemplate +_template diff --git a/packages/composer-documentation/.eslintrc.yml b/packages/composer-documentation/.eslintrc.yml new file mode 100644 index 0000000000..6ef5e947ff --- /dev/null +++ b/packages/composer-documentation/.eslintrc.yml @@ -0,0 +1,48 @@ +env: + es6: true + node: true + mocha: true +extends: 'eslint:recommended' +parserOptions: + ecmaVersion: 8 + sourceType: + - script +rules: + indent: + - error + - 4 + linebreak-style: + - error + - unix + quotes: + - error + - single + semi: + - error + - always + no-unused-vars: + - error + - args: none + no-console: warn + curly: error + eqeqeq: error + no-throw-literal: error + strict: error + no-var: error + dot-notation: error + no-tabs: error + no-trailing-spaces: error + no-use-before-define: error + no-useless-call: error + no-with: error + operator-linebreak: error + require-jsdoc: + - error + - require: + ClassDeclaration: true + MethodDefinition: true + FunctionDeclaration: true + valid-jsdoc: + - error + - requireReturn: false + yoda: error diff --git a/packages/composer-documentation/.gitignore b/packages/composer-documentation/.gitignore new file mode 100755 index 0000000000..6dddec1296 --- /dev/null +++ b/packages/composer-documentation/.gitignore @@ -0,0 +1,64 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (http://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Typescript v1 declaration files +typings/ + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env + +# default output place +logs/ +_tmp/ + +jekylldocs/* \ No newline at end of file diff --git a/packages/composer-documentation/.npmignore b/packages/composer-documentation/.npmignore new file mode 100755 index 0000000000..0a341d3f70 --- /dev/null +++ b/packages/composer-documentation/.npmignore @@ -0,0 +1,65 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (http://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Typescript v1 declaration files +typings/ + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env + +# default output place +logs/ +_tmp/ + +docs +test \ No newline at end of file diff --git a/packages/composer-documentation/LICENSE.txt b/packages/composer-documentation/LICENSE.txt new file mode 100644 index 0000000000..c90765b470 --- /dev/null +++ b/packages/composer-documentation/LICENSE.txt @@ -0,0 +1,11 @@ +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/packages/composer-documentation/README.md b/packages/composer-documentation/README.md new file mode 100755 index 0000000000..fe400db796 --- /dev/null +++ b/packages/composer-documentation/README.md @@ -0,0 +1,195 @@ +# Hyperledger Composer Opus + +A Proof-Of-Idea to see if the power of template engines, plus the Introspector API, and the NPM meta-data in a BusinessNeworkArchive could be used to generate a set of documentation for the archive. + +This introspection of all the model files etc to get a set of data that can be then transformed into the desired output. + + + +All the information is captured so the next step is (a) produce a set of established decorators such as + +``` +@docs('This is some docs') +assert fred indetified by id { + @docs('the primary key') + o String id +} +``` + +That can be used to provide more in-depth documentation + +## Example + +Best seen with an example.... [https://ampretia.github.io/composer-opus/](https://ampretia.github.io/composer-opus/) + +## Usage +``` +$ npm install -g @ampretia/composer-opus +$ opus +Options: + -a, --archive Archive file to document [string] [required] + -o, --outdir Output Directory [string] [default: "./out"] + -c, --config path to the configuration file[string] [default: "config.yaml"] + --help Show help [boolean] + +``` + +There is a default template and set of structure already defined as a default. This could be customized to suit and it is not restricted to handling markdown and +html. + +## Configuration +The example site was produced with this configuration file - this is in yaml format as the flow through the system is hierarchical + +```yaml +--- +tasks: + # Root task that defines common data for all tasks + taskid : root + processor : root + options : + outputdir : ${_args.outdir} + templateroot: ${default.template} + tempdir : ${default.temp} + subtasks : + # Use Hyperledger Composer taks to extract all information and setup the context + - taskid : ParseNetwork + processor : composernetwork + options : + archive : "${_args.archive}" + # Uses multiple templates specified in 'inputdir' & 'pattern' to work on the context and produce markdown output files + - taskid : CreateMarkdown + processor : njk_multi + options : + inputdir : "phase1-markdown" + pattern : "**/*.njk" + outputextension : ".md" + outputdir : "${root.tempdir}" + + # From the markdown files that are created previously generate html + # This is a two step process, files needs to converted into html and then wrapped in + # the correct header/footer etc. Stream tasks allows the output from one task to go into the second + - taskid : HTML + processor: stream + options : + inputdir : "${root.tempdir}" + pattern : "**/*.md" + outputdir : "${_args.outdir}" + streamId : html1 + subtasks : + # For each markdown file stream into it this will convert into html and pass on the details via the stream" + - taskid : markdownhtml + processor : markdownit + # Single template to be used to process files via stream along with the context + - taskid : htmlrender + processor : njk_single + options : + inputdir : "phase2-html" + template : html.default.njk + extension: ".html" + # Finally need to copy the fixed assets to the output directory " + - taskid : FinalStep + processor : copy + options : + srcdir : "${root.templateroot}/assets.default/**/*" + destdir : "${_args.outdir}/assets" + + +``` + +## Details +At first glance this is complex, but let's break it down bit by bit. The basic idea is there is a sequence of tasks that will be executed in order. These can form a tree so that it is possible to group the tasks. + +```yaml +--- +tasks: + # Root task that defines common data for all tasks + taskid : root + processor : root + options : + outputdir : ${_args.outdir} + templateroot: ${default.template} + tempdir : ${default.temp} + subtasks : +``` + +This defines the top level tasks - identified by *taskid* and the *processor* that will be used to handle this task + +> Each task needs a *taskid* and a *processor* + +This takes some options, namely the *outputdir*, *templateroot* and *tempdir*. These are standard and best left as is. Note the `${_args.outdir}` is taking the output directory from the command line options. + +Sub tasks can be defined and appear under the *subtasks* + +```yaml + + # Use Hyperledger Composer taks to extract all information and setup the context + - taskid : ParseNetwork + processor : composernetwork + options : + archive : "${_args.archive}" +``` + +This is the first subtasked processed using the *composernetwork* processor. This takes the archive specified on the command line and processes it to extract all the data. This is held in an internal 'context' + +This tasks has no subtasks, so execution moves on. + +```yaml + # Uses multiple templates specified in 'inputdir' & 'pattern' to work on the context and produce markdown output files + - taskid : CreateMarkdown + processor : njk_multi + options : + inputdir : "phase1-markdown" + pattern : "**/*.njk" + outputextension : ".md" + outputdir : "${root.tempdir}" +``` +A more complex task,but this uses the *njk_multi* processor. Using [nunjucks](https://mozilla.github.io/nunjucks/) a set of templates are processed against the internal context to generate a set of markdown files. + +The options determine where these are (all relative paths such as the *inputdir* are rooted at the *templateroot* seen earlier on). + +The output of these files is stored in a temporary location. + +Note that the output of these files is markdown format because (a) that's what the template is set up to produce and (b) because of the extension specified in the options. + +Again this task has no subtasks + +```yaml + # From the markdown files that are created previously generate html + # This is a two step process, files needs to converted into html and then wrapped in + # the correct header/footer etc. Stream tasks allows the output from one task to go into the second + - taskid : HTML + processor: stream + options : + inputdir : "${root.tempdir}" + pattern : "**/*.md" + outputdir : "${_args.outdir}" + streamid : html1 + subtasks : + # For each markdown file stream into it this will convert into html and pass on the details via the stream" + - taskid : markdownhtml + processor : markdownit + # Single template to be used to process files via stream along with the context + - taskid : htmlrender + processor : njk_single + options : + inputdir : "phase2-html" + template : html.default.njk + extension: ".html" +``` +This is the most complex task and makes use of the ability to group tasks together. The aim here is to take the markdown files produced previously, and render these as html. This is a two stage process. First the files need converting from markdown to html, and then the core html needs to be wrapped in headers, footers etc. + +This is accomplished by a using a *stream* tasks. This takes inputdir, patter, and an outputdir. It reads all the input, passes it to the first subtask, gets the output, passes it to the next subtask before writing it all to the output dir. + +The first subtask (markdownhtml) does the conversion of each markdown file read into html. +The second subtask (htmlrender) again uses nunjucks but this is using a single template to transform input to output (basically adding the header) + +```yaml + # Finally need to copy the fixed assets to the output directory " + - taskid : FinalStep + processor : copy + options : + srcdir : "${root.templateroot}/assets.default/**/*" + destdir : "${_args.outdir}/assets" +``` + +Final step is a copy to move the 'assets' i.e. css files into the correct location. \ No newline at end of file diff --git a/packages/composer-documentation/_bnaTemplate/assets.default/css/404.css b/packages/composer-documentation/_bnaTemplate/assets.default/css/404.css new file mode 100644 index 0000000000..2740435e85 --- /dev/null +++ b/packages/composer-documentation/_bnaTemplate/assets.default/css/404.css @@ -0,0 +1,70 @@ +@import url("https://fonts.googleapis.com/css?family=Open+Sans:300,400,400i,600"); +html { + font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 16px; + height: 100%; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +body { + font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; + padding-bottom: 0; +} + +h1 { + font-family: "Open Sans"; + font-weight: 300; + font-size: 2.50rem; + color: #3F55AF; + margin-bottom: 0rem; +} + +h2 { + font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-weight: 300; + font-size: 1.35rem; + line-height: 130%; + color: #3F55AF; +} + +p { + font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; + color: #19273C; + font-weight: 400; + font-size: 0.9rem; +} + +.content-chunk { + height: 94vh; + background-color: rgba(241, 243, 247, 0.5); + border-radius: 5px; + margin: 2rem; +} + +.content-chunk .pageproblem-container { + width: 100%; + height: 100%; + display: flex; + flex-wrap: wrap; + justify-content: center; + align-items: center; +} + +.content-chunk .pageproblem-container .pageproblem-info { + display: inline-block; + vertical-align: top; + text-align: left; +} + +.content-chunk .pageproblem-container .pageproblem-info a { + text-decoration: none; + border-bottom: 1px solid #19273C; + color: #19273C; + transition: all 0.2s ease-in-out; +} + +.content-chunk .pageproblem-container .pageproblem-info a:hover { + border-bottom: 1px solid #19273C; + padding-bottom: 3px; +} diff --git a/packages/composer-documentation/_bnaTemplate/assets.default/css/404.min.css b/packages/composer-documentation/_bnaTemplate/assets.default/css/404.min.css new file mode 100644 index 0000000000..95883799dc --- /dev/null +++ b/packages/composer-documentation/_bnaTemplate/assets.default/css/404.min.css @@ -0,0 +1 @@ +@import url("https://fonts.googleapis.com/css?family=Open+Sans:300,400,400i,600");html{font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:16px;height:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;padding-bottom:0}h1{font-family:"Open Sans";font-weight:300;font-size:2.50rem;color:#3F55AF;margin-bottom:0rem}h2{font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:300;font-size:1.35rem;line-height:130%;color:#3F55AF}p{font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;color:#19273C;font-weight:400;font-size:0.9rem}.content-chunk{height:94vh;background-color:rgba(241,243,247,0.5);border-radius:5px;margin:2rem}.content-chunk .pageproblem-container{width:100%;height:100%;display:flex;flex-wrap:wrap;justify-content:center;align-items:center}.content-chunk .pageproblem-container .pageproblem-info{display:inline-block;vertical-align:top;text-align:left}.content-chunk .pageproblem-container .pageproblem-info a{text-decoration:none;border-bottom:1px solid #19273C;color:#19273C;transition:all 0.2s ease-in-out}.content-chunk .pageproblem-container .pageproblem-info a:hover{border-bottom:1px solid #19273C;padding-bottom:3px} diff --git a/packages/composer-documentation/_bnaTemplate/assets.default/css/404.scss b/packages/composer-documentation/_bnaTemplate/assets.default/css/404.scss new file mode 100644 index 0000000000..95bd652ed8 --- /dev/null +++ b/packages/composer-documentation/_bnaTemplate/assets.default/css/404.scss @@ -0,0 +1,90 @@ +// imports from main scss + +@import url('https://fonts.googleapis.com/css?family=Open+Sans:300,400,400i,600'); + +$font-stack: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; +$display-font: 'Open Sans'; +$primary-text: #19273C; +$secondary-text: #8C9696; +$first-highlight: #3F55AF; +$second-highlight: #5068C2; +$third-highlight: #F9F9F9; +$fourth-highlight: #F1F3F7; +$fifth-highlight: #B8C1C1; +$sixth-highlight: #2D3D7D; +$error-colour-1: #FF5C49; +$error-colour-2: #F7E6E6; +$success-colour: #40d5bb; +$keyline-highlight: #E3ECEC; +$white: #FDFDFD; +$black: #000000; +$callout: #FFD640; + + +html { + font-family: $font-stack; + font-size: 16px; + height: 100%; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +body { + font-family: $font-stack; + padding-bottom: 0; +} + +h1 { + font-family: $display-font; + font-weight: 300; + font-size: 2.50rem; + color: $first-highlight; + margin-bottom: 0rem; +} + +h2 { + font-family: $font-stack; + font-weight: 300; + font-size: 1.35rem; + line-height: 130%; + color: $first-highlight; +} + +p { + font-family: $font-stack; + color: $primary-text; + font-weight: 400; + font-size: 0.9rem; +} + +// 404 styles + +.content-chunk { + height: 94vh; + background-color: rgba( $fourth-highlight, .5 ); + border-radius: 5px; + margin: 2rem; + .pageproblem-container { + width: 100%; + height: 100%; + display: flex; + flex-wrap: wrap; + justify-content: center; + align-items: center; + .pageproblem-info { + display: inline-block; + vertical-align: top; + text-align: left; + a { + text-decoration: none; + border-bottom: 1px solid $primary-text; + color: $primary-text; + transition: all 0.2s ease-in-out; + &:hover { + border-bottom: 1px solid $primary-text; + padding-bottom: 3px; + } + } + } + } +} diff --git a/packages/composer-documentation/_bnaTemplate/assets.default/css/composer-style.css b/packages/composer-documentation/_bnaTemplate/assets.default/css/composer-style.css new file mode 100644 index 0000000000..83cfb9fa86 --- /dev/null +++ b/packages/composer-documentation/_bnaTemplate/assets.default/css/composer-style.css @@ -0,0 +1,103 @@ +/*! + * Based off Start Bootstrap - Modern Business (http://startbootstrap.com/) + * Copyright 2013-2016 Start Bootstrap + * Licensed under MIT (https://github.com/BlackrockDigital/startbootstrap/blob/gh-pages/LICENSE) + */ + +/* Global Styles */ + +html, +body { + height: 100%; + font-family: 'Open Sans', sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +html { + font-family: 'Open Sans', sans-serif; +} + +h1, h2, h3, h4, h5, h6 { + font-family: 'Open Sans', sans-serif; +} +body { + /*padding-top: 50px; /* Required padding for .navbar-fixed-top. Remove if using .navbar-static-top. Change if height of navigation changes. */*/ + font-family: 'Open Sans', sans-serif; +} + +.img-portfolio { + margin-bottom: 30px; +} + +.img-hover:hover { + opacity: 0.8; +} + +/* Home Page Carousel */ + +header.carousel { + height: 50%; +} + +header.carousel .item, +header.carousel .item.active, +header.carousel .carousel-inner { + height: 100%; +} + +header.carousel .fill { + width: 100%; + height: 100%; + background-position: center; + background-size: cover; +} + +/* 404 Page Styles */ + +.error-404 { + font-size: 100px; +} + +/* Pricing Page Styles */ + +.price { + display: block; + font-size: 50px; + line-height: 50px; +} + +.price sup { + top: -20px; + left: 2px; + font-size: 20px; +} + +.period { + display: block; + font-style: italic; +} + +/* Footer Styles */ + +footer { + margin: 50px 0; +} + +/* Responsive Styles */ + +@media(max-width:991px) { + .customer-img, + .img-related { + margin-bottom: 30px; + } +} + +@media(max-width:767px) { + .img-portfolio { + margin-bottom: 15px; + } + + header.carousel .carousel { + height: 70%; + } +} diff --git a/packages/composer-documentation/_bnaTemplate/assets.default/css/grid-layout.min.css b/packages/composer-documentation/_bnaTemplate/assets.default/css/grid-layout.min.css new file mode 100644 index 0000000000..1fe89e9910 --- /dev/null +++ b/packages/composer-documentation/_bnaTemplate/assets.default/css/grid-layout.min.css @@ -0,0 +1 @@ +.docs-container{display:grid;grid-template-columns:25% 20% 20% 20% 15%;grid-template-rows:20% 20% 20% 20% 20%}.docs-container hr{display:none}.docs-container .page-sidebar-grid{grid-column-start:1;grid-column-end:2;justify-items:start;overflow-y:scroll;height:100vh;background-color:#FDFDFD;-ms-overflow-style:none}.docs-container .page-sidebar-grid::-webkit-scrollbar{display:none}.docs-container .page-sidebar-grid .docs-pagenav-grid{padding-top:5vh}.docs-container .page-sidebar-grid .docs-pagenav-grid .navbar-brand{padding-left:2rem;text-decoration:none;color:#19273C;font-size:1rem;display:inline-block}.docs-container .page-sidebar-grid .docs-pagenav-grid .top-nav-docs{padding-left:2rem;padding-top:0.5rem}.docs-container .page-sidebar-grid .docs-pagenav-grid .top-nav-docs a{text-decoration:none;color:#8C9696;font-size:0.9rem;padding-right:1rem}.docs-container .page-sidebar-grid .docs-pagenav-grid .top-nav-docs a:hover{color:#3F55AF}.docs-container .page-sidebar-grid .docs-pagenav-grid ul{list-style:none;padding-left:2rem}.docs-container .page-sidebar-grid .docs-pagenav-grid ul li a{font-size:0.9rem;text-decoration:none;color:#19273C}.docs-container .page-sidebar-grid .docs-current-page-grid p{font-weight:300;font-size:1.5rem;padding:2rem;display:block}.docs-container .page-sidebar-grid .context-nav ul{padding-left:0;margin:0}.docs-container .page-sidebar-grid .context-nav ul li{list-style:none;position:relative;overflow:hidden;transition:0.4s;background-color:#FDFDFD}.docs-container .page-sidebar-grid .context-nav ul li.hide{height:4rem !important;background-color:#FDFDFD}.docs-container .page-sidebar-grid .context-nav ul li:hover:after{content:" ";position:absolute;top:0;right:0px;bottom:0;background-color:#3F55AF}.docs-container .page-sidebar-grid .context-nav ul li.active{height:auto !important;border-left-color:#3F55AF}.docs-container .page-sidebar-grid .context-nav ul li.active:after{content:" ";position:absolute;top:0;right:0px;bottom:0;background-color:#3F55AF}.docs-container .page-sidebar-grid .context-nav ul li.activeBorder{border-right:3px solid #3F55AF;transition:none}.docs-container .page-sidebar-grid .context-nav ul li a{padding-left:2rem;padding-right:1rem;display:block;padding-top:0.5rem;padding-bottom:0.5rem}.docs-container .page-sidebar-grid .context-nav ul li a.active{color:#3F55AF}.docs-container .page-sidebar-grid .context-nav ul li ul{list-style:none;padding-left:0;margin:0;margin-left:0rem;margin-top:1rem;padding-bottom:2rem}.docs-container .page-sidebar-grid .context-nav ul li ul:hover:after{content:" ";position:absolute;top:0;right:0px;bottom:0;background-color:#3F55AF}.docs-container .page-sidebar-grid .context-nav ul li ul li{border-bottom:none;border-left:3px solid #FDFDFD}.docs-container .page-sidebar-grid .context-nav ul li ul li:hover{border-left:3px solid #3F55AF;border-right:none}.docs-container .page-sidebar-grid .context-nav ul .caret{float:right;width:13px;height:13px;padding:10px;margin-top:-10px}.docs-container .page-sidebar-grid .context-nav ul .caret.hidden{visibility:hidden}.docs-container .page-sidebar-grid .context-nav a{text-decoration:none;color:#19273C;font-size:0.9rem}.docs-container .page-sidebar-grid .context-nav .docs-footer-grid{margin-top:5rem;margin-bottom:2rem;align-items:end}.docs-container .page-sidebar-grid .context-nav .docs-footer-grid p{font-size:0.8rem;color:grey;padding-left:2rem}.docs-container .page-sidebar-grid .context-nav .docs-footer-grid ul{list-style:none;margin:0}.docs-container .page-sidebar-grid .context-nav .docs-footer-grid ul li{border-bottom:none;padding:0;background-color:#FDFDFD !important}.docs-container .page-sidebar-grid .context-nav .docs-footer-grid ul li:hover{border-right:none}.docs-container .page-sidebar-grid .context-nav .docs-footer-grid ul li a{font-size:0.8rem;color:grey;margin:0;padding-left:2rem;padding-top:0;padding-bottom:0}.docs-container .page-sidebar-grid .context-nav .docs-footer-grid ul li a:hover{color:#3F55AF}.docs-container .page-content-grid{grid-column-start:2;grid-column-end:6;background-color:#F9F9F9;overflow-y:scroll;height:100vh}.docs-container .page-content-grid .content-chunk{margin-left:2rem;max-width:750px;margin-top:5vh;margin-bottom:3rem}.docs-container .page-content-grid .content-chunk ul{font-size:0.9rem}.SiteWrapper .content .page-content-grid .content-chunk p{margin-top:1.3rem}.SiteWrapper .content .page-content-grid .content-chunk p code{background-color:white;border:1px solid #E3ECEC;padding-top:1px;padding-bottom:2px;padding-left:4px;color:#19273C;border-radius:1px}.SiteWrapper .content .page-content-grid .content-chunk h1{font-weight:300;font-size:2em;margin-bottom:3rem;padding-top:5rem}.SiteWrapper .content .page-content-grid .content-chunk h1:first-of-type{padding-top:0}.SiteWrapper .content .page-content-grid .content-chunk h2{margin-top:2rem}.SiteWrapper .content .page-content-grid .content-chunk h3{font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:300;font-size:1.2rem;line-height:130%;color:#19273C;margin-top:2rem}.SiteWrapper .content .page-content-grid .content-chunk blockquote{background-color:white;padding:1rem;padding-left:2rem;margin-left:0;margin-right:0;border-left:4px solid #3F55AF}.SiteWrapper .content .page-content-grid .content-chunk pre{background-color:#272B36;padding:1rem;color:white;border-radius:4px;padding-right:4rem}.SiteWrapper .content .page-content-grid .content-chunk pre code{padding-right:35px}.SiteWrapper .content .page-content-grid .content-chunk code{border-radius:2px;padding-right:5px;padding-top:1px;padding-bottom:1px;font-family:"Source Code Pro";font-size:0.8rem}.SiteWrapper .content .page-content-grid .content-chunk img{max-width:100%;border:1px solid #E3ECEC}.SiteWrapper .content .page-content-grid .content-chunk ul{list-style:none;padding-left:2em;text-indent:-1em;color:#19273C}.SiteWrapper .content .page-content-grid .content-chunk ul li:before{color:#19273C;content:'- \0000a0';font-size:1rem;font-weight:600}.SiteWrapper .content .page-content-grid .content-chunk ul li{padding-bottom:0.5rem}.SiteWrapper .content .page-content-grid .content-chunk ul li p{display:inline}.SiteWrapper .content .page-content-grid .content-chunk ol{border-left:1px solid #E3ECEC;font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:0.9rem;color:#19273C}.SiteWrapper .content .page-content-grid .content-chunk ol li{margin-top:1.3rem}.SiteWrapper .content .page-content-grid .content-chunk a{color:#3F55AF}.SiteWrapper .content .page-content-grid .content-chunk .support-button{position:relative;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;user-select:none;background-image:none;border:1px solid transparent;border-radius:5px;margin:0;box-shadow:none;line-height:40px;cursor:pointer;background-color:#FDFDFD;width:auto;font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:0.9rem;font-weight:400;transition:0.4s cubic-bezier(0.075, 0.82, 0.165, 1);min-width:140px;text-decoration:none;padding:0.5rem;padding-left:1.5rem;padding-right:1.5rem}.SiteWrapper .content .page-content-grid .content-chunk .support-button.primary{background-color:#3F55AF;border-color:#3F55AF;color:#FDFDFD}.SiteWrapper .content .page-content-grid .content-chunk .support-button.primary:hover{background-color:#2D3D7D}.SiteWrapper .content .page-content-grid .content-chunk table{font-size:0.8rem;display:block;background-color:white;padding:1rem}.SiteWrapper .content .page-content-grid .content-chunk table td{border-bottom:1px solid #E3ECEC;padding-bottom:1rem;padding-top:1rem;padding-right:1rem;padding:1rem}.SiteWrapper .content .page-content-grid .content-chunk table th{padding-bottom:1rem;padding-top:1rem;padding-right:1rem;padding:1rem;color:#8C9696}.SiteWrapper .content .page-content-grid .content-chunk table thead{font-weight:600;padding-bottom:1rem}.SiteWrapper .content .page-content-grid .content-chunk table tbody tr{transition:0.4s cubic-bezier(0.075, 0.82, 0.165, 1)}.SiteWrapper .content .page-content-grid .content-chunk table tbody tr:last-of-type td{border-bottom:none}.SiteWrapper .content .page-content-grid .content-chunk table tbody tr:last-of-type:hover{background-color:transparent}.SiteWrapper .content .page-content-grid .content-chunk table tbody tr:hover{background-color:#F9F9F9}@media only screen and (max-width: 1440px){.docs-container{grid-template-columns:25% 25% 25% 25%}}@media only screen and (max-width: 1024px){.docs-container{grid-template-columns:20% 20% 20% 20% 20%}.docs-container .page-sidebar-grid{grid-column-start:1;grid-column-end:3}.docs-container .page-content-grid{grid-column-start:3;grid-column-end:6}.docs-container .page-content-grid .content-chunk{margin-left:2rem;max-width:550px}}@media only screen and (max-width: 768px){.docs-container .page-content-grid .content-chunk{max-width:400px}}@media only screen and (max-width: 599px){.docs-container .page-sidebar-grid{grid-column-start:1;grid-column-end:6;overflow-y:auto}.docs-container .page-content-grid{grid-column-start:1;grid-column-end:6;padding-right:2rem;overflow-y:auto}.docs-container .page-content-grid .content-chunk{max-width:400px}}.highlight{border-radius:4px;position:relative}.highlight .hll{background-color:#424242}.highlight .c{color:#969896}.highlight .err{color:#d54e53}.highlight .k{color:#c397d8}.highlight .l{color:#e78c45}.highlight .n{color:#eaeaea}.highlight .o{color:#70c0b1}.highlight .p{color:#eaeaea}.highlight .cm{color:#969896}.highlight .cp{color:#969896}.highlight .c1{color:#969896}.highlight .cs{color:#969896}.highlight .gd{color:#d54e53}.highlight .ge{font-style:italic}.highlight .gh{color:#eaeaea;font-weight:bold}.highlight .gi{color:#b9ca4a}.highlight .gp{color:#969896;font-weight:bold}.highlight .gs{font-weight:bold}.highlight .gu{color:#70c0b1;font-weight:bold}.highlight .kc{color:#c397d8}.highlight .kd{color:#c397d8}.highlight .kn{color:#70c0b1}.highlight .kp{color:#c397d8}.highlight .kr{color:#c397d8}.highlight .kt{color:#e7c547}.highlight .ld{color:#b9ca4a}.highlight .m{color:#e78c45}.highlight .s{color:#b9ca4a}.highlight .na{color:#7aa6da}.highlight .nb{color:#eaeaea}.highlight .nc{color:#e7c547}.highlight .no{color:#d54e53}.highlight .nd{color:#70c0b1}.highlight .ni{color:#eaeaea}.highlight .ne{color:#d54e53}.highlight .nf{color:#7aa6da}.highlight .nl{color:#eaeaea}.highlight .nn{color:#e7c547}.highlight .nx{color:#7aa6da}.highlight .py{color:#eaeaea}.highlight .nt{color:#70c0b1}.highlight .nv{color:#d54e53}.highlight .ow{color:#70c0b1}.highlight .w{color:#eaeaea}.highlight .mf{color:#e78c45}.highlight .mh{color:#e78c45}.highlight .mi{color:#e78c45}.highlight .mo{color:#e78c45}.highlight .sb{color:#b9ca4a}.highlight .sc{color:#eaeaea}.highlight .sd{color:#969896}.highlight .s2{color:#899ff1}.highlight .se{color:#e78c45}.highlight .sh{color:#b9ca4a}.highlight .si{color:#e78c45}.highlight .sx{color:#b9ca4a}.highlight .sr{color:#b9ca4a}.highlight .s1{color:#b9ca4a}.highlight .ss{color:#b9ca4a}.highlight .bp{color:#eaeaea}.highlight .vc{color:#d54e53}.highlight .vg{color:#d54e53}.highlight .vi{color:#d54e53}.highlight .il{color:#e78c45}.md-typeset div.highlight{position:relative;overflow:visible;padding:0}.md-typeset div.highlight pre{overflow-x:auto;display:block;padding:1rem 1.2rem .8rem}copy-button{background-color:#393F4F;padding:0.5rem;max-width:50px;cursor:pointer;color:white;font-size:0.8rem;display:inline-block;position:absolute;top:0px;right:0px;padding-top:1rem;padding-left:1rem;padding-right:1rem;padding-bottom:1rem;border-top-right-radius:4px;border-bottom-right-radius:4px;transition:0.4s cubic-bezier(0.075, 0.82, 0.165, 1);line-height:1rem}copy-button:hover{background-color:#4B5368}.search-form{padding-left:2rem;padding-right:2rem;padding-top:1rem}.search-form form{display:flex}.search-form .search-box{overflow:hidden;max-width:0;width:250px;transition:max-width 0.5s ease-in-out;border:none;padding-top:8px;padding-bottom:8px;font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;color:#19273C;font-weight:400;font-size:0.9rem;line-height:30px;border-bottom:2px solid transparent;background-color:#FDFDFD}.search-form .search-box.opened{max-width:70%;border-bottom:2px solid #19273C;padding-left:0.8rem;background-color:#FDFDFD}.search-form .search-box.opened:focus{outline:none;border-bottom:2px solid #3F55AF;background-color:#F9F9F9}.search-form .search-box.opened:hover{background-color:#F9F9F9}.search-form .search-icon{padding-top:10px;cursor:pointer}.search-form .search-icon.hide{display:none}.search-form .search-icon:hover{fill:#3F55AF}.search-form .trigger{width:18px}.search-form .submit-input{padding-top:8px;padding-bottom:8px;border:none;background-color:transparent;width:40px;background-image:url("../img/Search_Icon_1.svg");background-repeat:no-repeat;background-position:center;margin-left:0.3rem}.search-form .submit-input:focus{outline:none}.search-form .submit-input:hover{background-color:#F9F9F9}.search-form .submit-input.hide{display:none} diff --git a/packages/composer-documentation/_bnaTemplate/assets.default/css/grid-layout.scss b/packages/composer-documentation/_bnaTemplate/assets.default/css/grid-layout.scss new file mode 100644 index 0000000000..1999656399 --- /dev/null +++ b/packages/composer-documentation/_bnaTemplate/assets.default/css/grid-layout.scss @@ -0,0 +1,741 @@ +$font-stack: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; +$display-font: 'Open Sans'; +$svg-font: 'Source Code Pro'; +$primary-text: #19273C; +$secondary-text: #8C9696; +$first-highlight: #3F55AF; +$second-highlight: #5068C2; +$third-highlight: #F9F9F9; +$fourth-highlight: #F1F3F7; +$fifth-highlight: #B8C1C1; +$sixth-highlight: #2D3D7D; +$error-colour-1: #FF5C49; +$error-colour-2: #F7E6E6; +$success-colour: #40d5bb; +$keyline-highlight: #E3ECEC; +$white: #FDFDFD; +$black: #000000; +$callout: #FFD640; + +.docs-container { + display: grid; + grid-template-columns: 25% 20% 20% 20% 15%; + grid-template-rows: 20% 20% 20% 20% 20%; + + hr { + display: none; + } + + .page-sidebar-grid { + grid-column-start: 1; + grid-column-end: 2; + justify-items: start; + overflow-y: scroll; + height: 100vh; + background-color: $white; + + // Scrollbar overrides + &::-webkit-scrollbar { + display: none; + } + -ms-overflow-style: none; // IE 10+ + + .docs-pagenav-grid { + padding-top: 5vh; + + .navbar-brand { + padding-left: 2rem; + text-decoration: none; + color: $primary-text; + font-size: 1rem; + display: inline-block; + } + + .top-nav-docs { + padding-left: 2rem; + padding-top: 0.5rem; + a { + text-decoration: none; + color: $secondary-text; + font-size: 0.9rem; + padding-right: 1rem; + + &:hover { + color: $first-highlight; + } + } + } + + ul { + list-style: none; + padding-left: 2rem; + li { + a { + font-size: 0.9rem; + text-decoration: none; + color: $primary-text; + } + } + } + } + + .docs-current-page-grid { + p { + font-weight: 300; + font-size: 1.5rem; + padding: 2rem; + display: block; + } + } + + .context-nav { + + ul { + padding-left: 0; + margin: 0; + + li { + list-style: none; + position: relative; + overflow: hidden; + transition: 0.4s; + background-color: $white; + &.hide { + height: 4rem !important; + background-color: $white; + } + &:hover { + &:after { + content: " "; + position: absolute; + top: 0; + right: 0px; + bottom: 0; + background-color: $first-highlight; + } + } + &.active { + height: auto !important; + border-left-color: $first-highlight; + &:after { + content: " "; + position: absolute; + top: 0; + right: 0px; + bottom: 0; + background-color: $first-highlight; + } + } + &.activeBorder { + border-right: 3px solid $first-highlight; + transition: none; + } + a { + padding-left: 2rem; + padding-right: 1rem; + display: block; + padding-top: 0.5rem; + padding-bottom: 0.5rem; + &.active { + color: $first-highlight; + } + } + + ul { + list-style: none; + padding-left: 0; + margin: 0; + margin-left: 0rem; + margin-top: 1rem; + padding-bottom: 2rem; + &:hover { + &:after { + content: " "; + position: absolute; + top: 0; + right: 0px; + bottom: 0; + background-color: $first-highlight; + } + } + + li { + border-bottom: none; + border-left: 3px solid $white; + &:hover { + border-left: 3px solid $first-highlight; + border-right: none; + } + } + } + } + + .caret { + float: right; + width: 13px; + height: 13px; + padding: 10px; + margin-top: -10px; + &.hidden { + visibility: hidden; + } + } + + } + + a { + text-decoration: none; + color: $primary-text; + font-size: 0.9rem; + } + + .docs-footer-grid { + margin-top: 5rem; + margin-bottom: 2rem; + align-items: end; + + p { + font-size: 0.8rem; + color: grey; + padding-left: 2rem; + } + + ul { + list-style: none; + margin: 0; + + li { + border-bottom: none; + padding: 0; + background-color: $white !important; + + &:hover { + border-right: none; + } + + a { + font-size: 0.8rem; + color: grey; + margin: 0; + padding-left: 2rem; + padding-top: 0; + padding-bottom: 0; + + &:hover { + color: $first-highlight; + } + } + } + } + } + + } + } + + .page-content-grid { + grid-column-start: 2; + grid-column-end: 6; + background-color: $third-highlight; + overflow-y: scroll; + height: 100vh; + + // ::-webkit-scrollbar { + // display: initial; + // } + + .content-chunk { + margin-left: 2rem; + max-width: 750px; + margin-top: 5vh; + margin-bottom: 3rem; + + ul { + font-size: 0.9rem; + } + + } + + } + +} + +// Text styles + + .SiteWrapper { + .content { + .page-content-grid { + .content-chunk { + + p { + margin-top: 1.3rem; + + code { + background-color: white; + border: 1px solid $keyline-highlight; + padding-top: 1px; + padding-bottom: 2px; + padding-left: 4px; + color: $primary-text; + border-radius:1px; + } + } + + h1 { + font-weight: 300; + font-size: 2em; + margin-bottom: 3rem; + padding-top: 5rem; + + &:first-of-type { + padding-top: 0; + } + } + + h2 { + margin-top: 2rem; + } + + h3 { + font-family: $font-stack; + font-weight: 300; + font-size: 1.2rem; + line-height: 130%; + color: $primary-text; + margin-top: 2rem; + } + + blockquote { + background-color: white; + padding: 1rem; + padding-left: 2rem; + margin-left: 0; + margin-right: 0; + border-left: 4px solid $first-highlight; + } + + pre { + background-color: #272B36; + padding: 1rem; + color: white; + border-radius: 4px; + padding-right: 4rem; + + code { + padding-right: 35px; + } + } + + code { + border-radius: 2px; + padding-right: 5px; + padding-top: 1px; + padding-bottom: 1px; + font-family: $svg-font; + font-size: 0.8rem; + } + + img { + max-width: 100%; + border: 1px solid $keyline-highlight; + } + + ul { + list-style: none; + padding-left: 2em; + text-indent: -1em; + color: $primary-text; + + li:before { + color: $primary-text; + content: '- \0000a0'; + font-size: 1rem; + font-weight: 600; + } + + li { + padding-bottom: 0.5rem; + p { + display: inline; + } + + } + } + + ol { + border-left: 1px solid $keyline-highlight; + font-family: $font-stack; + font-size: 0.9rem; + color: $primary-text; + li { + margin-top: 1.3rem; + } + } + + a { + color: $first-highlight; + } + + .support-button { + position: relative; + text-align: center; + white-space: nowrap; + vertical-align: middle; + -ms-touch-action: manipulation; + touch-action: manipulation; + user-select: none; + background-image: none; + border: 1px solid transparent; + border-radius: 5px; + margin: 0; + box-shadow: none; + line-height: 40px; + cursor: pointer; + background-color: $white; + width: auto; + font-family: $font-stack; + font-size: 0.9rem; + font-weight: 400; + transition: 0.4s cubic-bezier(0.075, 0.820, 0.165, 1.000); + min-width: 140px; + text-decoration: none; + padding: 0.5rem; + padding-left: 1.5rem; + padding-right: 1.5rem; + + &.primary { + background-color: $first-highlight; + border-color: $first-highlight; + color: $white; + + &:hover { + background-color: $sixth-highlight; + } + } + + } + + // Table styling + + table { + font-size: 0.8rem; + display: block; + background-color: white; + padding: 1rem; + + td { + border-bottom: 1px solid $keyline-highlight; + padding-bottom: 1rem; + padding-top: 1rem; + padding-right: 1rem; + padding: 1rem; + } + + th { + padding-bottom: 1rem; + padding-top: 1rem; + padding-right: 1rem; + padding: 1rem; + color: $secondary-text; + } + + thead { + font-weight: 600; + padding-bottom: 1rem; + } + tbody { + tr { + transition: 0.4s cubic-bezier(0.075, 0.820, 0.165, 1.000); + &:last-of-type { + td { + border-bottom: none; + } + &:hover { + background-color: transparent; + } + + } + &:hover { + background-color: $third-highlight; + + } + } + } + } + + } + } + } + } + + //media queries + + @media only screen and (max-width: 1440px) { + .docs-container { + grid-template-columns: 25% 25% 25% 25%; + } + } + + @media only screen and (max-width: 1024px) { + .docs-container { + grid-template-columns: 20% 20% 20% 20% 20%; + + .page-sidebar-grid { + grid-column-start: 1; + grid-column-end: 3; + } + + .page-content-grid { + grid-column-start: 3; + grid-column-end: 6; + .content-chunk { + margin-left: 2rem; + max-width: 550px; + } + } + + } + } + + @media only screen and (max-width: 768px) { + .docs-container { + .page-content-grid { + .content-chunk { + max-width: 400px; + } + } + } + } + + @media only screen and (max-width: 599px) { + .docs-container { + .page-sidebar-grid { + grid-column-start: 1; + grid-column-end: 6; + overflow-y: auto; + + // #off-canvas { + // position: fixed; /* or choose `absolute` depending on desired behavior*/ + // top: 0; + // bottom: 0; + // width: 300px; + // left: -340px; + // transition: transform .3s ease-in-out; + // } + + } + + .page-content-grid { + grid-column-start: 1; + grid-column-end: 6; + padding-right: 2rem; + overflow-y: auto; + .content-chunk { + max-width: 400px; + } + } + } + + // .toggle { + // display: inline-block; + // } + // + // #nav:target { + // transform: translateX(340px); + // } + + } + +// CSS Styles for Code highlighting +.highlight { border-radius: 4px; position: relative;} +.highlight .hll { background-color: #424242 } +// .highlight { background: #000000; color: #eaeaea } +.highlight .c { color: #969896 } /* Comment */ +.highlight .err { color: #d54e53 } /* Error */ +.highlight .k { color: #c397d8 } /* Keyword */ +.highlight .l { color: #e78c45 } /* Literal */ +.highlight .n { color: #eaeaea } /* Name */ +.highlight .o { color: #70c0b1 } /* Operator */ +.highlight .p { color: #eaeaea } /* Punctuation */ +.highlight .cm { color: #969896 } /* Comment.Multiline */ +.highlight .cp { color: #969896 } /* Comment.Preproc */ +.highlight .c1 { color: #969896 } /* Comment.Single */ +.highlight .cs { color: #969896 } /* Comment.Special */ +.highlight .gd { color: #d54e53 } /* Generic.Deleted */ +.highlight .ge { font-style: italic } /* Generic.Emph */ +.highlight .gh { color: #eaeaea; font-weight: bold } /* Generic.Heading */ +.highlight .gi { color: #b9ca4a } /* Generic.Inserted */ +.highlight .gp { color: #969896; font-weight: bold } /* Generic.Prompt */ +.highlight .gs { font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: #70c0b1; font-weight: bold } /* Generic.Subheading */ +.highlight .kc { color: #c397d8 } /* Keyword.Constant */ +.highlight .kd { color: #c397d8 } /* Keyword.Declaration */ +.highlight .kn { color: #70c0b1 } /* Keyword.Namespace */ +.highlight .kp { color: #c397d8 } /* Keyword.Pseudo */ +.highlight .kr { color: #c397d8 } /* Keyword.Reserved */ +.highlight .kt { color: #e7c547 } /* Keyword.Type */ +.highlight .ld { color: #b9ca4a } /* Literal.Date */ +.highlight .m { color: #e78c45 } /* Literal.Number */ +.highlight .s { color: #b9ca4a } /* Literal.String */ +.highlight .na { color: #7aa6da } /* Name.Attribute */ +.highlight .nb { color: #eaeaea } /* Name.Builtin */ +.highlight .nc { color: #e7c547 } /* Name.Class */ +.highlight .no { color: #d54e53 } /* Name.Constant */ +.highlight .nd { color: #70c0b1 } /* Name.Decorator */ +.highlight .ni { color: #eaeaea } /* Name.Entity */ +.highlight .ne { color: #d54e53 } /* Name.Exception */ +.highlight .nf { color: #7aa6da } /* Name.Function */ +.highlight .nl { color: #eaeaea } /* Name.Label */ +.highlight .nn { color: #e7c547 } /* Name.Namespace */ +.highlight .nx { color: #7aa6da } /* Name.Other */ +.highlight .py { color: #eaeaea } /* Name.Property */ +.highlight .nt { color: #70c0b1 } /* Name.Tag */ +.highlight .nv { color: #d54e53 } /* Name.Variable */ +.highlight .ow { color: #70c0b1 } /* Operator.Word */ +.highlight .w { color: #eaeaea } /* Text.Whitespace */ +.highlight .mf { color: #e78c45 } /* Literal.Number.Float */ +.highlight .mh { color: #e78c45 } /* Literal.Number.Hex */ +.highlight .mi { color: #e78c45 } /* Literal.Number.Integer */ +.highlight .mo { color: #e78c45 } /* Literal.Number.Oct */ +.highlight .sb { color: #b9ca4a } /* Literal.String.Backtick */ +.highlight .sc { color: #eaeaea } /* Literal.String.Char */ +.highlight .sd { color: #969896 } /* Literal.String.Doc */ +.highlight .s2 { color: #899ff1 } /* Literal.String.Double */ +.highlight .se { color: #e78c45 } /* Literal.String.Escape */ +.highlight .sh { color: #b9ca4a } /* Literal.String.Heredoc */ +.highlight .si { color: #e78c45 } /* Literal.String.Interpol */ +.highlight .sx { color: #b9ca4a } /* Literal.String.Other */ +.highlight .sr { color: #b9ca4a } /* Literal.String.Regex */ +.highlight .s1 { color: #b9ca4a } /* Literal.String.Single */ +.highlight .ss { color: #b9ca4a } /* Literal.String.Symbol */ +.highlight .bp { color: #eaeaea } /* Name.Builtin.Pseudo */ +.highlight .vc { color: #d54e53 } /* Name.Variable.Class */ +.highlight .vg { color: #d54e53 } /* Name.Variable.Global */ +.highlight .vi { color: #d54e53 } /* Name.Variable.Instance */ +.highlight .il { color: #e78c45 } /* Literal.Number.Integer.Long */ + +// Copy to clipboard + +.md-typeset div.highlight { + position: relative; + overflow: visible; + padding: 0; +} +.md-typeset div.highlight pre { + overflow-x: auto; + display: block; + padding: 1rem 1.2rem .8rem; +} + +copy-button { + background-color: #393F4F; + padding: 0.5rem; + max-width: 50px; + cursor: pointer; + color: white; + font-size: 0.8rem; + display: inline-block; + position: absolute; + top: 0px; + right: 0px; + padding-top: 1rem; + padding-left: 1rem; + padding-right: 1rem; + padding-bottom: 1rem; + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; + transition: 0.4s cubic-bezier(0.075, 0.820, 0.165, 1.000); + line-height: 1rem; + &:hover { + background-color: #4B5368; + } +} + +// Search Bar + +.search-form { + padding-left: 2rem; + padding-right: 2rem; + padding-top: 1rem; + + form { + display: flex; + } + + .search-box { + overflow: hidden; + max-width: 0; + width: 250px; + transition: max-width 0.5s ease-in-out; + border: none; + padding-top: 8px; + padding-bottom: 8px; + font-family: $font-stack; + color: $primary-text; + font-weight: 400; + font-size: 0.9rem; + line-height: 30px; + border-bottom: 2px solid transparent; + background-color: $white; + + &.opened { + max-width: 70%; + border-bottom: 2px solid $primary-text; + padding-left: 0.8rem; + background-color: $white; + + + &:focus { + outline: none; + border-bottom: 2px solid $first-highlight; + background-color: $third-highlight; + } + + &:hover { + background-color: $third-highlight; + } + } + } + + .search-icon { + padding-top: 10px; + cursor: pointer; + + &.hide { + display: none; + } + + &:hover { + fill: $first-highlight; + } + + } + + .trigger { + width: 18px; + } + + .submit-input { + padding-top: 8px; + padding-bottom: 8px; + border: none; + background-color: transparent; + width: 40px; + background-image: url('../img/Search_Icon_1.svg'); + background-repeat: no-repeat; + background-position: center; + margin-left: 0.3rem; + + &:focus { + outline: none; + } + + &:hover { + background-color: $third-highlight; + } + + &.hide { + display: none; + } + } + +} diff --git a/packages/composer-documentation/_bnaTemplate/assets.default/css/new-style.min.css b/packages/composer-documentation/_bnaTemplate/assets.default/css/new-style.min.css new file mode 100644 index 0000000000..90bdebb4cf --- /dev/null +++ b/packages/composer-documentation/_bnaTemplate/assets.default/css/new-style.min.css @@ -0,0 +1 @@ +@import url("https://fonts.googleapis.com/css?family=Open+Sans:300,400,400i,600|Source+Code+Pro");html{font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:16px;height:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;padding-bottom:0}h1{font-family:"Open Sans";font-weight:300;font-size:2.50rem;color:#19273C}h2{font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:300;font-size:1.35rem;line-height:130%;color:#19273C}p{font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;color:#19273C;font-weight:400;font-size:0.9rem}svg{font-family:"Source Code Pro"}button{position:relative;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;user-select:none;background-image:none;border:1px solid transparent;border-radius:5px;margin:0;box-shadow:none;line-height:40px;cursor:pointer;background-color:#FDFDFD;flex-basis:auto;width:auto;padding-right:30px;padding-left:30px;font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:0.9rem;font-weight:400;transition:0.4s cubic-bezier(0.075, 0.82, 0.165, 1);min-width:140px}button:focus{outline:none}button+button{margin-left:0.8em}button h1{display:inline;margin-right:.5em}button[disabled],button[disabled]:hover{opacity:.65;cursor:not-allowed}button.primary{background-color:#3F55AF;border-color:#3F55AF;color:#FDFDFD}button.primary:hover{background-color:#2D3D7D}button.primary.active,button.primary:active,button.primary:focus{background-color:#2D3D7D}button.primary[disabled],button.primary[disabled]:hover{background-color:#B8C1C1;border-color:#B8C1C1}button.secondary{background-color:#FDFDFD;color:#3F55AF;border-color:#E3ECEC}button.secondary:hover{background-color:#5068C2;border-color:#5068C2;color:#FDFDFD}button.secondary.active,button.secondary:active,button.secondary:focus{background-color:#5068C2;border-color:#5068C2;color:#FDFDFD}button.secondary[disabled],button.secondary[disabled]:hover{border-color:#B8C1C1;color:#B8C1C1}button.expand{background-color:#FDFDFD;border:1px solid #F1F3F7;border-radius:25px;box-shadow:0 0 20px rgba(0,0,0,0.1);padding:0;font-size:0.75em;line-height:25px;color:#8C9696}button.action{border:none;border-bottom:2px solid transparent;background-color:transparent;color:#19273C;min-width:0;padding:0;border-radius:0px}button.action:hover{color:#3F55AF;background-color:transparent;border-bottom:2px solid #3F55AF}button.action:hover svg.ibm-icon{fill:#3F55AF}button.action:focus,button.action.active,button.action:active{color:#3F55AF;background-color:transparent;border-bottom:2px solid #3F55AF}button.action:focus svg.ibm-icon,button.action.active svg.ibm-icon,button.action:active svg.ibm-icon{fill:#3F55AF}button.action[disabled],button.action[disabled]:hover{background-color:transparent;color:#F1F3F7;border-bottom:2px solid #F1F3F7}button.action[disabled] svg.ibm-icon,button.action[disabled]:hover svg.ibm-icon{fill:#F1F3F7}button.icon{background-color:transparent;min-width:0;padding:0}button.icon:hover{color:#3F55AF;background-color:transparent}button.icon:hover svg.ibm-icon{fill:#3F55AF}button.basic{background-color:#FDFDFD;border:1px solid #F1F3F7;border-radius:0.25em}.overlay{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAYAAADEUlfTAAAAGUlEQVQImWPwS9olhQsz+CXtkmLABQabJABXUBO1fQxIrwAAAABJRU5ErkJggg==) repeat,linear-gradient(137deg, #3F55AF 0%, #5376D4 40%, #5477D5 42%, #597FDE 52%, #B4E4FF 100%);overflow:hidden;top:0;left:0;bottom:0;right:0;z-index:-100}.hero_container{width:70vw;margin:auto;margin-top:17vh;display:flex;position:relative;flex-direction:row;z-index:10;box-sizing:border-box}.hero_container .leftcontent{flex-basis:40%;display:flex;flex-direction:column;padding-right:2rem;padding-bottom:8rem}.hero_container .hero_illustration{flex-basis:55%;padding-bottom:5rem;box-sizing:border-box}.hero_container .hero_illustration img{max-height:30rem}.hero_container button{box-shadow:0 1px 7px 0 rgba(0,0,0,0.2)}.hero_container h1{color:#FDFDFD;line-height:50px}.hero_container .social-container{display:flex}.hero_container .social-container ul{display:flex;flex-direction:row;margin:0;padding:0;height:100%}.hero_container .social-container li{margin-right:1.5rem;flex-direction:column;justify-content:center;height:100%;display:flex}.hero_container .social-container .icon2{font-size:1.2rem;height:100%;width:100%;transition:0.4s cubic-bezier(0.075, 0.82, 0.165, 1);color:#FDFDFD}.hero_container .social-container .icon2:hover{color:#2D3D7D}.buttoncontainer{margin-top:3.5rem;margin-bottom:1rem;display:flex}.readmore{margin-bottom:2rem;color:#FDFDFD}.readmore a{color:#FDFDFD;text-decoration:underline}.homepage-callout{display:flex;background-color:#FFD640;box-shadow:2px 2px 10px 0 rgba(0,0,0,0.2)}.homepage-callout .callout-copy{margin:auto;margin-top:1rem;margin-bottom:0.5rem}.homepage-callout .callout-copy a{text-decoration:none;border-bottom:1px solid #19273C;color:#19273C;transition:all 0.2s ease-in-out}.homepage-callout .callout-copy a:hover{border-bottom:1px solid #19273C;padding-bottom:3px}.navbar{display:flex;flex-basis:auto;width:100vw;height:4rem;margin:auto;background-color:none;color:#19273C}.navbar-fixed-top{border:none}.indexnav{display:flex;flex-direction:row;align-items:center;width:100%;height:3rem;z-index:11;padding-top:0px;position:absolute}.navcontent{font-size:0.9rem;display:flex;width:70vw;margin:auto;padding-top:2rem}.navlogo{flex-grow:1;flex-basis:100%;flex-shrink:1}.navlogo .brand{font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;color:#FDFDFD;font-weight:400;font-size:0.9rem;cursor:pointer;text-decoration:none}.navlogo .brand a{text-decoration:none}.menuitems{display:flex;justify-content:flex-end;flex-basis:auto;flex-shrink:1;height:100%}.menuitems ul{display:flex;flex-direction:row;margin:0;padding:0;height:100%}.menuitems ul li{margin-left:1rem;margin-right:1rem;flex-direction:column;justify-content:center;height:100%;display:flex}.menuitems ul li a{color:#FDFDFD;text-decoration:none}.menuitems ul li a:hover{border-bottom:1px solid #FDFDFD;padding-bottom:3px}.footer-bg{display:flex;background-color:#3F55AF;width:100vw;height:auto}.footer-container{display:flex;width:70vw;margin:auto;padding-top:3rem;margin-bottom:4rem}.footer-container .footer-left{display:flex;flex-grow:1;flex-shrink:1}.footer-container .footer-left p{color:#FDFDFD}.footer-container .footer-left .icon2{font-size:20px;height:100%;width:100%;transition:0.4s cubic-bezier(0.075, 0.82, 0.165, 1);color:#19273C}.footer-container .footer-left .icon2:hover{color:#3F55AF}.footer-container .footer-right{display:flex;justify-content:flex-end;flex-basis:auto;flex-shrink:1;height:100%}.footer-container .footer-right ul{display:flex;flex-grow:2;flex-direction:row;margin:0;padding:0;height:100%}.footer-container .footer-right li{margin-left:2rem;flex-direction:column;justify-content:center;height:100%;display:flex}.footer-container .footer-right li a{color:#FDFDFD;text-decoration:none;font-size:0.9rem}.footer-container .footer-right li a:hover{border-bottom:1px solid #FDFDFD}.footer-container .footer-right li p{opacity:0.6;color:#FDFDFD}.trio{margin-top:9rem;margin-bottom:7rem;margin-left:auto;margin-right:auto;width:70vw;display:flex;flex-direction:row;justify-content:space-around;flex-wrap:wrap}.trio p{text-align:center}.trio h2{text-align:center;padding-bottom:1rem}.trio .trio-left{justify-content:center;flex-grow:0;flex-basis:20%;flex-shrink:1;flex-wrap:wrap}.trio .trio-left img{display:flex;height:60px;width:auto;margin:auto}.trio .trio-center{justify-content:center;flex-grow:0;flex-basis:20%;flex-shrink:1;flex-wrap:wrap}.trio .trio-center img{display:flex;height:60px;width:auto;margin:auto}.trio .trio-right{justify-content:center;flex-grow:0;flex-basis:20%;flex-shrink:1;flex-wrap:wrap}.trio .trio-right img{display:flex;height:60px;width:auto;margin:auto}.contact-bg{background-color:#F1F3F7;position:relative;padding-bottom:4rem;padding-top:4rem;height:auto}.contact-bg .contact-us{display:flex;flex-direction:row;justify-content:center;margin-left:auto;margin-right:auto;width:70vw}.contact-bg .contact-us .contact-illustration{flex-basis:40%;flex-grow:0}.contact-bg .contact-us .contact-illustration img{display:flex;height:17rem;width:auto}.contact-bg .contact-us .contact-content{flex-basis:50%}.contact-bg .contact-us .contact-content .social-icons{display:flex;flex-wrap:wrap;flex-direction:row}.contact-bg .contact-us .contact-content .social-icons .icon3{margin-top:0.5rem;margin-right:1rem;color:#3F55AF;font-size:1.5rem;width:auto}.contact-bg .contact-us .contact-content a{color:#19273C}.contact-bg .contact-us .contact-content a:hover{text-decoration:none}.contact-bg .contact-us .contact-content .community{color:#3F55AF;border-bottom:1px solid #3F55AF;padding-bottom:3px}.contact-bg .contact-us .contact-content .community:hover{color:#2D3D7D;border-bottom:1px solid #2D3D7D;padding-bottom:3px;text-decoration:none}.contact-bg .contact-us .contact-content .social-icons>div{display:flex;flex-basis:calc(40% - 30px);justify-content:center;flex-direction:column;margin-right:2rem}.contact-bg .contact-us .contact-content .social-icons>div>div{display:flex;flex-direction:row}.contact-bg .contact-us .contact-content button{margin-top:1rem;margin-bottom:1rem}.contact-bg .contact-us .contact-content p{margin-top:1rem}@media only screen and (max-width: 1200px){.hero_container{flex-direction:column-reverse;-webkit-flex-direction:row}.hero_container .hero_illustration{padding-bottom:2rem}.contact-bg .contact-us .contact-content .social-icons>div{flex-basis:calc(50% - 30px);flex-direction:column}.contact-bg .contact-us .contact-illustration{margin-right:2rem}}@media only screen and (max-width: 900px){.hero_container{-webkit-flex-direction:row}.homepage-callout .callout-copy{padding-left:2rem;padding-right:2rem}.trio{flex-direction:column;max-width:30rem;margin-top:4rem;margin-bottom:4rem}.trio .trio-left{margin-bottom:3rem}.trio .trio-center{margin-bottom:3rem}.trio .trio-right{margin-bottom:3rem}.contact-bg .contact-us{flex-direction:column}.contact-bg .contact-us .contact-illustration{padding-bottom:2rem}}@media only screen and (max-width: 750px){.hero_container{-webkit-flex-direction:row}.contact-bg .contact-us .contact-content .social-icons>div{flex-basis:calc(50% - 30px);flex-direction:column}.contact-bg .contact-us .contact-content .social-icons>div>div{flex-direction:row}}@media only screen and (max-width: 500px){.indexnav{overflow:hidden;height:auto}.indexnav .navcontent{flex-direction:column;-webkit-flex-direction:row}.indexnav .navcontent .navlogo{margin-bottom:0.5rem}.indexnav .navcontent .menuitems{justify-content:flex-start}.indexnav .navcontent .menuitems ul{margin-top:0.5rem}.indexnav .navcontent .menuitems ul li{margin-left:0;margin-right:2rem}.hero_container{-webkit-flex-direction:row}.trio{-webkit-flex-direction:row}.contact-bg .contact-us{-webkit-flex-direction:row}.contact-bg .contact-us .contact-content .social-icons{flex-direction:column;-webkit-flex-direction:row}.contact-bg .contact-us .contact-content .social-icons>div{flex-basis:calc(50% - 30px);flex-direction:column;-webkit-flex-direction:row}.contact-bg .contact-us .contact-content .social-icons>div>div{flex-direction:row;-webkit-flex-direction:row}.contact-bg .contact-us .contact-illustration img{height:auto}.hero_container .leftcontent .textcontent .buttoncontainer{display:flex}.footer-bg .footer-container{flex-wrap:wrap;flex-direction:column;-webkit-flex-direction:row}.footer-bg .footer-container .footer-right ul{flex-direction:column;-webkit-flex-direction:row}.footer-bg .footer-container .footer-right li{margin-left:0}.footer-bg .footer-container .footer-right li a{padding-top:0.6rem}.footer-bg .footer-container .footer-right li a:hover{border-bottom:none}}h2.everybody{background-color:#e1e1e1;background-image:url("../img/Artboard 1@0.5x.png");background-repeat:no-repeat;background-position:left 5px center;background-size:32px 32px;border-radius:5px;max-width:100%;padding:5px 5px 5px 48px;text-align:center}h2.alice{background-color:#e1f7d5;background-image:url("../img/GreenBlockAlone@0.5x.png");background-repeat:no-repeat;background-position:left 5px center;background-size:32px 32px;border-radius:5px;max-width:100%;padding:5px 5px 5px 48px;text-align:left}h2.bob{background-color:#c9c9ff;background-image:url("../img/VioletBlockAlone@0.5x.png");background-repeat:no-repeat;background-position:right 5px center;background-size:32px 32px;border-radius:5px;max-width:100%;padding:5px 48px 5px 5px;text-align:right}h2.warning{background-color:#f6d155;border-radius:5px;max-width:100%;padding:5px 5px 5px 5px;text-align:left} diff --git a/packages/composer-documentation/_bnaTemplate/assets.default/css/new-style.scss b/packages/composer-documentation/_bnaTemplate/assets.default/css/new-style.scss new file mode 100644 index 0000000000..62df3a78e7 --- /dev/null +++ b/packages/composer-documentation/_bnaTemplate/assets.default/css/new-style.scss @@ -0,0 +1,910 @@ +@import url('https://fonts.googleapis.com/css?family=Open+Sans:300,400,400i,600|Source+Code+Pro'); + +$font-stack: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; +$display-font: 'Open Sans'; +$svg-font: 'Source Code Pro'; +$primary-text: #19273C; +$secondary-text: #8C9696; +$first-highlight: #3F55AF; +$second-highlight: #5068C2; +$third-highlight: #F9F9F9; +$fourth-highlight: #F1F3F7; +$fifth-highlight: #B8C1C1; +$sixth-highlight: #2D3D7D; +$error-colour-1: #FF5C49; +$error-colour-2: #F7E6E6; +$success-colour: #40d5bb; +$keyline-highlight: #E3ECEC; +$white: #FDFDFD; +$black: #000000; +$callout: #FFD640; + + +html { + font-family: $font-stack; + font-size: 16px; + height: 100%; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +body { + font-family: $font-stack; + padding-bottom: 0; +} + +h1 { + font-family: $display-font; + font-weight: 300; + font-size: 2.50rem; + color: $primary-text; +} + +h2 { + font-family: $font-stack; + font-weight: 300; + font-size: 1.35rem; + line-height: 130%; + color: $primary-text; +} + +p { + font-family: $font-stack; + color: $primary-text; + font-weight: 400; + font-size: 0.9rem; +} + +svg { + font-family: $svg-font; +} + +button { + position: relative; + text-align: center; + white-space: nowrap; + vertical-align: middle; + -ms-touch-action: manipulation; + touch-action: manipulation; + user-select: none; + background-image: none; + border: 1px solid transparent; + border-radius: 5px; + margin: 0; + box-shadow: none; + line-height: 40px; + cursor: pointer; + background-color: $white; + flex-basis: auto; + width: auto; + padding-right: 30px; + padding-left: 30px; + font-family: $font-stack; + font-size: 0.9rem; + font-weight: 400; + transition: 0.4s cubic-bezier(0.075, 0.820, 0.165, 1.000); + min-width: 140px; + + + &:focus { + outline: none; + } + + & + button { + margin-left: 0.8em; + } + + h1 { + display: inline; + margin-right: .5em; + } + + &[disabled], + &[disabled]:hover { + opacity: .65; + cursor: not-allowed; + } + + &.primary { + background-color: $first-highlight; + border-color: $first-highlight; + color: $white; + + &:hover { + background-color: $sixth-highlight; + } + &.active, &:active, &:focus { + background-color: $sixth-highlight; + } + + &[disabled], &[disabled]:hover { + background-color: $fifth-highlight; + border-color: $fifth-highlight; + } + } + + &.secondary { + background-color: $white; + color: $first-highlight; + border-color: $keyline-highlight; + + &:hover { + background-color: $second-highlight; + border-color: $second-highlight; + color: $white; + + } + &.active, &:active, &:focus { + background-color: $second-highlight; + border-color: $second-highlight; + color: $white; + } + + &[disabled], &[disabled]:hover { + border-color: $fifth-highlight; + color: $fifth-highlight + } + } + + &.expand { + background-color: $white; + border: 1px solid $fourth-highlight; + border-radius: 25px; + box-shadow: 0 0 20px rgba(0,0,0,0.1); + padding: 0; + font-size: 0.75em; + line-height: 25px; + color: $secondary-text; + } + + &.action { + border: none; + border-bottom: 2px solid transparent; + background-color: transparent; + color: $primary-text; + min-width: 0; + padding: 0; + border-radius: 0px; + + &:hover{ + color: $first-highlight; + background-color: transparent; + border-bottom: 2px solid $first-highlight; + + svg.ibm-icon { + fill: $first-highlight; + } + } + + &:focus, + &.active, + &:active { + color: $first-highlight; + background-color: transparent; + border-bottom: 2px solid $first-highlight; + + svg.ibm-icon { + fill: $first-highlight; + } + } + + &[disabled], &[disabled]:hover { + background-color: transparent; + color: $fourth-highlight; + border-bottom: 2px solid $fourth-highlight; + + svg.ibm-icon { + fill: $fourth-highlight; + } + } + } + + &.icon { + background-color: transparent; + min-width: 0; + padding: 0; + &:hover{ + color: $first-highlight; + background-color: transparent; + + svg.ibm-icon { + fill: $first-highlight; + } + } + } + + &.basic { + background-color:#FDFDFD; + border:1px solid $fourth-highlight; + border-radius: 0.25em; + } + } + +//Homepage top section + +.overlay { + background: + url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAYAAADEUlfTAAAAGUlEQVQImWPwS9olhQsz+CXtkmLABQabJABXUBO1fQxIrwAAAABJRU5ErkJggg==) repeat, + linear-gradient(137deg, #3F55AF 0%, #5376D4 40%, #5477D5 42%, #597FDE 52%, #B4E4FF 100%); + // box-shadow: 2px 2px 10px 0 rgba(0,0,0,0.20); + overflow: hidden; + top: 0; + left: 0; + bottom: 0; + right: 0; + z-index: -100; +} + +.hero_container { + width: 70vw; + margin: auto; + margin-top: 17vh; + display: flex; + + position: relative; + flex-direction: row; + z-index: 10; + box-sizing: border-box; + .leftcontent { + flex-basis: 40%; + display: flex; + + flex-direction: column; + padding-right: 2rem; + padding-bottom: 8rem; + } + .hero_illustration { + flex-basis: 55%; + padding-bottom: 5rem; + box-sizing: border-box; + img { + max-height: 30rem; + } + } + + button { + box-shadow: 0 1px 7px 0 rgba(0,0,0,0.20); + } + + h1 { + color: $white; + line-height: 50px; + } + .social-container { + display: flex; + +ul { + display: flex; + + flex-direction: row; + margin: 0; + padding: 0; + height: 100%; +} +li { + margin-right: 1.5rem; + flex-direction: column; + justify-content: center; + height: 100%; + display: flex; + +} +.icon2 { + font-size: 1.2rem; + height: 100%; + width: 100%; + transition: 0.4s cubic-bezier(0.075, 0.820, 0.165, 1.000); + color: $white; + &:hover { + color: $sixth-highlight; + } +} + + } + +} + +.buttoncontainer { + margin-top: 3.5rem; + margin-bottom: 1rem; + display: flex; + +} + +.readmore { + margin-bottom: 2rem; + color: $white; + //display: flex; + a { + color: $white; + text-decoration: underline; + } + +} + +//Homepage callout section + +.homepage-callout { + display: flex; + background-color: $callout; + box-shadow: 2px 2px 10px 0 rgba(0,0,0,0.20); + .callout-copy { + margin: auto; + // width: 70vh; + margin-top: 1rem; + margin-bottom: 0.5rem; + a { + text-decoration: none; + border-bottom: 1px solid $primary-text; + color: $primary-text; + transition: all 0.2s ease-in-out; + &:hover { + border-bottom: 1px solid $primary-text; + padding-bottom: 3px; + } + } + } + +} + + +//Navbar overrides of bootstrap + +.navbar { + display: flex; + + flex-basis: auto; + width: 100vw; + height: 4rem; + margin: auto; + background-color: none; + color: $primary-text; +} + +.navbar-fixed-top { + border: none; +} + +//New style navbar + +.indexnav { + display: flex; + + flex-direction: row; + align-items: center; + width: 100%; + height: 3rem; + z-index: 11; + padding-top: 0px; + position: absolute; +} + +.navcontent { + font-size: 0.9rem; + display: flex; + + width: 70vw; + margin: auto; + padding-top: 2rem; +} + +.navlogo { + flex-grow: 1; + flex-basis: 100%; + flex-shrink: 1; + .brand { + font-family: $font-stack; + color: $white; + font-weight: 400; + font-size: 0.9rem; + cursor: pointer; + text-decoration: none; + a { + text-decoration: none; + } + } +} + +.menuitems { + display: flex; + + justify-content: flex-end; + flex-basis: auto; + flex-shrink: 1; + height: 100%; + ul { + display: flex; + + flex-direction: row; + margin: 0; + padding: 0; + height: 100%; + li { + margin-left: 1rem; + margin-right: 1rem; + flex-direction: column;; + justify-content: center; + height: 100%; + display: flex; + + a { + color: $white; + text-decoration: none; + &:hover { + border-bottom: 1px solid $white; + padding-bottom: 3px; + } + } + } + } +} + +//New style footer + +.footer-bg { + display: flex; + background-color: $first-highlight; + width: 100vw; + height: auto; +} + +.footer-container { + display: flex; + + width: 70vw; + margin: auto; + padding-top: 3rem; + margin-bottom: 4rem; + +.footer-left { + display: flex; + + flex-grow: 1; + flex-shrink: 1; + + p { + color: $white; + } + .icon2 { + font-size: 20px; + height: 100%; + width: 100%; + transition: 0.4s cubic-bezier(0.075, 0.820, 0.165, 1.000); + color: $primary-text; + &:hover { + color: $first-highlight; + } + } +} + + .footer-right { + display: flex; + + justify-content: flex-end; + flex-basis: auto; + flex-shrink: 1; + height: 100%; + ul { + display: flex; + flex-grow: 2; + flex-direction: row; + margin: 0; + padding: 0; + height: 100%; + } + li { + margin-left: 2rem; + flex-direction: column; + justify-content: center; + height: 100%; + display: flex; + + a { + color: $white; + text-decoration: none; + font-size: 0.9rem; + &:hover { + border-bottom: 1px solid $white; + } + } + + p { + opacity: 0.6; + color: $white; + } + + } + } + +} + +// Trio of icons + +.trio { + margin-top: 9rem; + margin-bottom: 7rem; + margin-left: auto; + margin-right: auto; + width: 70vw; + display: flex; + + flex-direction: row; + justify-content:space-around; + flex-wrap: wrap; + + p { + text-align: center; + } + + h2 { + text-align: center; + padding-bottom: 1rem; + } + + .trio-left { + justify-content: center; + flex-grow: 0; + flex-basis: 20%; + flex-shrink: 1; + flex-wrap: wrap; + img { + display: flex; + + height: 60px; + width: auto; + margin: auto; + } + + } + + .trio-center { + justify-content: center; + flex-grow: 0; + flex-basis: 20%; + flex-shrink: 1; + flex-wrap: wrap; + img { + display: flex; + + height: 60px; + width: auto; + margin: auto; + } + } + + .trio-right { + justify-content: center; + flex-grow: 0; + flex-basis: 20%; + flex-shrink: 1; + flex-wrap: wrap; + img { + display: flex; + + height: 60px; + width: auto; + margin: auto; + } + } +} + +//Contact us section + +.contact-bg { + background-color: $fourth-highlight; + position: relative; + padding-bottom: 4rem; + padding-top: 4rem; + height: auto; + +.contact-us { + display: flex; + + flex-direction: row; + justify-content:center; + margin-left: auto; + margin-right: auto; + width: 70vw; + + .contact-illustration { + flex-basis: 40%; + flex-grow: 0; + img { + display: flex; + + height: 17rem; + width: auto; + } + } + + .contact-content { + flex-basis: 50%; + + .social-icons { + display: flex; + + flex-wrap: wrap; + flex-direction: row; + + .icon3 { + margin-top: 0.5rem; + margin-right: 1rem; + color: $first-highlight; + font-size: 1.5rem; + width: auto; + } +} + + a { + color: $primary-text; + &:hover { + text-decoration: none; + } + } + .community { + color: $first-highlight; + border-bottom: 1px solid $first-highlight; + padding-bottom: 3px; + &:hover { + color: $sixth-highlight; + border-bottom: 1px solid $sixth-highlight; + padding-bottom: 3px; + text-decoration: none; + } + } + + .social-icons > div { + display: flex; + + flex-basis: calc(40% - 30px); + justify-content: center; + flex-direction: column; + margin-right: 2rem; +} +.social-icons > div > div { + display: flex; + + flex-direction: row; +} + + button { + margin-top: 1rem; + margin-bottom: 1rem; + } + + p { + margin-top: 1rem; + } + } +} +} + +//Media queries + +@media only screen and (max-width: 1200px) { + .hero_container { + flex-direction: column-reverse; + -webkit-flex-direction: row; + .hero_illustration { + padding-bottom: 2rem; + } + } + .contact-bg { + .contact-us { + .contact-content { + .social-icons > div { + flex-basis: calc(50% - 30px); + flex-direction: column; + } + + } + .contact-illustration { + margin-right: 2rem; + } + } + } + } + +@media only screen and (max-width: 900px) { + + .hero_container { + -webkit-flex-direction: row; + } + + .homepage-callout { + .callout-copy { + padding-left: 2rem; + padding-right: 2rem; + } + } + + .trio { + flex-direction: column; + max-width: 30rem; + margin-top: 4rem; + margin-bottom: 4rem; + + .trio-left { + margin-bottom: 3rem; + } + .trio-center { + margin-bottom: 3rem; + } + .trio-right { + margin-bottom: 3rem; + } + } + .contact-bg { + .contact-us { + flex-direction: column; + .contact-illustration { + padding-bottom: 2rem; + } + } + } + } + +@media only screen and (max-width: 750px) { + + .hero_container { + -webkit-flex-direction: row; + } + .contact-bg { + .contact-us { + .contact-content { + .social-icons > div { + flex-basis: calc(50% - 30px); + flex-direction: column; + } + .social-icons > div > div { + flex-direction: row; + } + + } + } + } +} + +@media only screen and (max-width: 500px) { + .indexnav { + overflow: hidden; + height: auto; + .navcontent { + flex-direction: column; + -webkit-flex-direction: row; + + .navlogo { + margin-bottom: 0.5rem; + } + + .menuitems { + justify-content: flex-start; + ul { + margin-top: 0.5rem; + li { + margin-left: 0; + margin-right: 2rem; + } + } + } + } + } + + .hero_container { + -webkit-flex-direction: row; + } + + .trio { + -webkit-flex-direction: row; + } + + .contact-bg { + .contact-us { + -webkit-flex-direction: row; + .contact-content { + .social-icons { + flex-direction: column; + -webkit-flex-direction: row; + } + + .social-icons > div { + flex-basis: calc(50% - 30px); + flex-direction: column; + -webkit-flex-direction: row; + } + .social-icons > div > div { + flex-direction: row; + -webkit-flex-direction: row; + } + + } + .contact-illustration { + img { + height: auto; + } + } + } + } + + .hero_container { + .leftcontent { + .textcontent { + .buttoncontainer { + display: flex; + } + } + } + } + .footer-bg { + .footer-container { + flex-wrap: wrap; + flex-direction: column; + -webkit-flex-direction: row; + .footer-right { + ul { + flex-direction: column; + -webkit-flex-direction: row; + } + + li { + margin-left: 0; + a { + padding-top: 0.6rem; + &:hover { + border-bottom: none; + } + } + } + } + } + } + +} + +// Needs further cleanup + +h2 { + &.everybody { + background-color: #e1e1e1; + background-image: url("../img/Artboard 1@0.5x.png"); + background-repeat: no-repeat; + background-position: left 5px center; + background-size: 32px 32px; + border-radius: 5px; + max-width: 100%; + padding: 5px 5px 5px 48px; + text-align: center; + } + + &.alice { + background-color: #e1f7d5; + background-image: url("../img/GreenBlockAlone@0.5x.png"); + background-repeat: no-repeat; + background-position: left 5px center; + background-size: 32px 32px; + border-radius: 5px; + max-width: 100%; + padding: 5px 5px 5px 48px; + text-align: left; + } + + &.bob { + background-color: #c9c9ff; + background-image: url("../img/VioletBlockAlone@0.5x.png"); + background-repeat: no-repeat; + background-position: right 5px center; + background-size: 32px 32px; + border-radius: 5px; + max-width: 100%; + padding: 5px 48px 5px 5px; + text-align: right; + } + + &.warning { + background-color: #f6d155; + border-radius: 5px; + max-width: 100%; + padding: 5px 5px 5px 5px; + text-align: left; + } +} diff --git a/packages/composer-documentation/_bnaTemplate/assets.default/css/normalize.css b/packages/composer-documentation/_bnaTemplate/assets.default/css/normalize.css new file mode 100644 index 0000000000..a571a19cfd --- /dev/null +++ b/packages/composer-documentation/_bnaTemplate/assets.default/css/normalize.css @@ -0,0 +1,504 @@ +/*! normalize.css 2012-03-11T12:53 UTC - http://github.com/necolas/normalize.css */ + +/* ============================================================================= +HTML5 display definitions +========================================================================== */ + +/* +* Corrects block display not defined in IE6/7/8/9 & FF3 +*/ + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +nav, +section, +summary { + display: block; +} + +/* +* Corrects inline-block display not defined in IE6/7/8/9 & FF3 +*/ + +audio, +canvas, +video { + display: inline-block; + *display: inline; + *zoom: 1; +} + +/* +* Prevents modern browsers from displaying 'audio' without controls +* Remove excess height in iOS5 devices +*/ + +audio:not([controls]) { + display: none; + height: 0; +} + +/* +* Addresses styling for 'hidden' attribute not present in IE7/8/9, FF3, S4 +* Known issue: no IE6 support +*/ + +[hidden] { + display: none; +} + + +/* ============================================================================= +Base +========================================================================== */ + +/* +* 1. Corrects text resizing oddly in IE6/7 when body font-size is set using em units +* http://clagnut.com/blog/348/#c790 +* 2. Prevents iOS text size adjust after orientation change, without disabling user zoom +* www.456bereastreet.com/archive/201012/controlling_text_size_in_safari_for_ios_without_disabling_user_zoom/ +*/ + +html { + font-size: 100%; /* 1 */ + -webkit-text-size-adjust: 100%; /* 2 */ + -ms-text-size-adjust: 100%; /* 2 */ +} + +/* +* Addresses font-family inconsistency between 'textarea' and other form elements. +*/ + +html, +button, +input, +select, +textarea { + font-family: sans-serif; +} + +/* +* Addresses margins handled incorrectly in IE6/7 +*/ + +body { + margin: 0; +} + + +/* ============================================================================= +Links +========================================================================== */ + +/* +* Addresses outline displayed oddly in Chrome +*/ + +a:focus { + outline: thin dotted; +} + +/* +* Improves readability when focused and also mouse hovered in all browsers +* people.opera.com/patrickl/experiments/keyboard/test +*/ + +a:hover, +a:active { + outline: 0; +} + + +/* ============================================================================= +Typography +========================================================================== */ + +/* +* Addresses font sizes and margins set differently in IE6/7 +* Addresses font sizes within 'section' and 'article' in FF4+, Chrome, S5 +*/ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +h2 { + font-size: 1.5em; + margin: 0.83em 0; +} + +h3 { + font-size: 1.17em; + margin: 1em 0; +} + +h4 { + font-size: 1em; + margin: 1.33em 0; +} + +h5 { + font-size: 0.83em; + margin: 1.67em 0; +} + +h6 { + font-size: 0.75em; + margin: 2.33em 0; +} + +/* +* Addresses styling not present in IE7/8/9, S5, Chrome +*/ + +abbr[title] { + border-bottom: 1px dotted; +} + +/* +* Addresses style set to 'bolder' in FF3+, S4/5, Chrome +*/ + +b, +strong { + font-weight: bold; +} + +blockquote { + margin: 1em 40px; +} + +/* +* Addresses styling not present in S5, Chrome +*/ + +dfn { + font-style: italic; +} + +/* +* Addresses styling not present in IE6/7/8/9 +*/ + +mark { + background: #ff0; + color: #000; +} + +/* +* Addresses margins set differently in IE6/7 +*/ + +p, +pre { + margin: 1em 0; +} + +/* +* Corrects font family set oddly in IE6, S4/5, Chrome +* en.wikipedia.org/wiki/User:Davidgothberg/Test59 +*/ + +pre, +code, +kbd, +samp { + font-family: monospace, serif; + _font-family: 'courier new', monospace; + font-size: 1em; +} + +/* +* Improves readability of pre-formatted text in all browsers +*/ + +pre { + white-space: pre; + white-space: pre-wrap; + word-wrap: break-word; +} + +/* +* 1. Addresses CSS quotes not supported in IE6/7 +* 2. Addresses quote property not supported in S4 +*/ + +/* 1 */ + +q { + quotes: none; +} + +/* 2 */ + +q:before, +q:after { + content: ''; + content: none; +} + +small { + font-size: 75%; +} + +/* +* Prevents sub and sup affecting line-height in all browsers +* gist.github.com/413930 +*/ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + + +/* ============================================================================= +Lists +========================================================================== */ + +/* +* Addresses margins set differently in IE6/7 +*/ + +dl, +menu, +ol, +ul { + margin: 1em 0; +} + +dd { + margin: 0 0 0 40px; +} + +/* +* Addresses paddings set differently in IE6/7 +*/ + +menu, +ol, +ul { + /*padding: 0 0 0 0;*/ +} + +/* +* Corrects list images handled incorrectly in IE7 +*/ + +nav ul, +nav ol { + list-style: none; + list-style-image: none; +} + + +/* ============================================================================= +Embedded content +========================================================================== */ + +/* +* 1. Removes border when inside 'a' element in IE6/7/8/9, FF3 +* 2. Improves image quality when scaled in IE7 +* code.flickr.com/blog/2008/11/12/on-ui-quality-the-little-things-client-side-image-resizing/ +*/ + +img { + border: 0; /* 1 */ + -ms-interpolation-mode: bicubic; /* 2 */ +} + +/* +* Corrects overflow displayed oddly in IE9 +*/ + +svg:not(:root) { + overflow: hidden; +} + + +/* ============================================================================= +Figures +========================================================================== */ + +/* +* Addresses margin not present in IE6/7/8/9, S5, O11 +*/ + +figure { + margin: 0; +} + + +/* ============================================================================= +Forms +========================================================================== */ + +/* +* Corrects margin displayed oddly in IE6/7 +*/ + +form { + margin: 0; +} + +/* +* Define consistent border, margin, and padding +*/ + +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} + +/* +* 1. Corrects color not being inherited in IE6/7/8/9 +* 2. Corrects text not wrapping in FF3 +* 3. Corrects alignment displayed oddly in IE6/7 +*/ + +legend { + border: 0; /* 1 */ + padding: 0; + white-space: normal; /* 2 */ + *margin-left: -7px; /* 3 */ +} + +/* +* 1. Corrects font size not being inherited in all browsers +* 2. Addresses margins set differently in IE6/7, FF3+, S5, Chrome +* 3. Improves appearance and consistency in all browsers +*/ + +button, +input, +select, +textarea { + font-size: 100%; /* 1 */ + margin: 0; /* 2 */ + vertical-align: baseline; /* 3 */ + *vertical-align: middle; /* 3 */ +} + +/* +* Addresses FF3/4 setting line-height on 'input' using !important in the UA stylesheet +*/ + +button, +input { + line-height: normal; /* 1 */ +} + +/* +* 1. Improves usability and consistency of cursor style between image-type 'input' and others +* 2. Corrects inability to style clickable 'input' types in iOS +* 3. Removes inner spacing in IE7 without affecting normal text inputs +* Known issue: inner spacing remains in IE6 +*/ + +button, +input[type="button"], +input[type="reset"], +input[type="submit"] { + cursor: pointer; /* 1 */ + -webkit-appearance: button; /* 2 */ + *overflow: visible; /* 3 */ +} + +/* +* Re-set default cursor for disabled elements +*/ + +button[disabled], +input[disabled] { + cursor: default; +} + +/* +* 1. Addresses box sizing set to content-box in IE8/9 +* 2. Removes excess padding in IE8/9 +* 3. Removes excess padding in IE7 +Known issue: excess padding remains in IE6 +*/ + +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ + *height: 13px; /* 3 */ + *width: 13px; /* 3 */ +} + +/* +* 1. Addresses appearance set to searchfield in S5, Chrome +* 2. Addresses box-sizing set to border-box in S5, Chrome (include -moz to future-proof) +*/ + +input[type="search"] { + -webkit-appearance: textfield; /* 1 */ + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; /* 2 */ + box-sizing: content-box; +} + +/* +* Removes inner padding and search cancel button in S5, Chrome on OS X +*/ + +input[type="search"]::-webkit-search-decoration, +input[type="search"]::-webkit-search-cancel-button { + -webkit-appearance: none; +} + +/* +* Removes inner padding and border in FF3+ +* www.sitepen.com/blog/2008/05/14/the-devils-in-the-details-fixing-dojos-toolbar-buttons/ +*/ + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +/* +* 1. Removes default vertical scrollbar in IE6/7/8/9 +* 2. Improves readability and alignment in all browsers +*/ + +textarea { + overflow: auto; /* 1 */ + vertical-align: top; /* 2 */ +} + + +/* ============================================================================= +Tables +========================================================================== */ + +/* +* Remove most spacing between table cells +*/ + +table { + border-collapse: collapse; + border-spacing: 0; +} diff --git a/packages/composer-documentation/_bnaTemplate/assets.default/img/.gitignore b/packages/composer-documentation/_bnaTemplate/assets.default/img/.gitignore new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/composer-documentation/_bnaTemplate/assets.default/img/404.svg b/packages/composer-documentation/_bnaTemplate/assets.default/img/404.svg new file mode 100644 index 0000000000..3ada533e0e --- /dev/null +++ b/packages/composer-documentation/_bnaTemplate/assets.default/img/404.svg @@ -0,0 +1 @@ +404 \ No newline at end of file diff --git a/packages/composer-documentation/_bnaTemplate/assets.default/img/Abstract.png b/packages/composer-documentation/_bnaTemplate/assets.default/img/Abstract.png new file mode 100644 index 0000000000000000000000000000000000000000..638fc7b2583469f6917900fff3995d167c1f0f5b GIT binary patch literal 3215 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 z2w2Artboard 1 \ No newline at end of file diff --git a/packages/composer-documentation/_bnaTemplate/assets.default/img/Artboard 1@0.5x.png b/packages/composer-documentation/_bnaTemplate/assets.default/img/Artboard 1@0.5x.png new file mode 100644 index 0000000000000000000000000000000000000000..3a626fdf733075c254959ca15fe1ee37241b4989 GIT binary patch literal 25022 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

asu*0RooDN78ODVDPiUSaR)8L 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 literal 0 HcmV?d00001 diff --git a/packages/composer-documentation/_bnaTemplate/assets.default/img/BusinessNetworkFiles.svg b/packages/composer-documentation/_bnaTemplate/assets.default/img/BusinessNetworkFiles.svg new file mode 100644 index 0000000000..3a8690708c --- /dev/null +++ b/packages/composer-documentation/_bnaTemplate/assets.default/img/BusinessNetworkFiles.svg @@ -0,0 +1,200 @@ + + + + Business Network Definition + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/composer-documentation/_bnaTemplate/assets.default/img/Caret_SW_2.svg b/packages/composer-documentation/_bnaTemplate/assets.default/img/Caret_SW_2.svg new file mode 100644 index 0000000000..b3f1be6a3e --- /dev/null +++ b/packages/composer-documentation/_bnaTemplate/assets.default/img/Caret_SW_2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/composer-documentation/_bnaTemplate/assets.default/img/Composer-Diagram.svg b/packages/composer-documentation/_bnaTemplate/assets.default/img/Composer-Diagram.svg new file mode 100644 index 0000000000..d2b2f0cb26 --- /dev/null +++ b/packages/composer-documentation/_bnaTemplate/assets.default/img/Composer-Diagram.svg @@ -0,0 +1,127 @@ + + + + BNA Overview + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/composer-documentation/_bnaTemplate/assets.default/img/ComposerArchitecture.svg b/packages/composer-documentation/_bnaTemplate/assets.default/img/ComposerArchitecture.svg new file mode 100644 index 0000000000..60d74ed236 --- /dev/null +++ b/packages/composer-documentation/_bnaTemplate/assets.default/img/ComposerArchitecture.svg @@ -0,0 +1,441 @@ + + + + Composer Components + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/composer-documentation/_bnaTemplate/assets.default/img/ComposerComponents.svg b/packages/composer-documentation/_bnaTemplate/assets.default/img/ComposerComponents.svg new file mode 100644 index 0000000000..ab7bc53890 --- /dev/null +++ b/packages/composer-documentation/_bnaTemplate/assets.default/img/ComposerComponents.svg @@ -0,0 +1 @@ +ComposerComponentsREST \ No newline at end of file diff --git a/packages/composer-documentation/_bnaTemplate/assets.default/img/Contact_us_3.png b/packages/composer-documentation/_bnaTemplate/assets.default/img/Contact_us_3.png new file mode 100644 index 0000000000000000000000000000000000000000..e95592b727c27723146ecdb2b4ffbbb222fea292 GIT binary patch literal 27448 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 literal 0 HcmV?d00001 diff --git a/packages/composer-documentation/_bnaTemplate/assets.default/img/Data_Integration.png b/packages/composer-documentation/_bnaTemplate/assets.default/img/Data_Integration.png new file mode 100644 index 0000000000000000000000000000000000000000..c63c6aafe850105f9a5b6d9dfe1da811cec50dfd GIT binary patch literal 9233 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

U$2nWN2?|;? zSlq$P`0xcwQ0QGCSPiX$b8!hyTa;z8&5D)J`(KsW(u{UFxOn(SO~lXEnI!cS>LgFQ za`RYgip%rtq@dC_BH7P`%RTxUBzrcXd$Sr75Xw#;c9XOoIZ}4=KrY<-r)!*tjf2ns zb45F08}NklnV&x(ULP?cKtS*H$=E z0;lmb5KqxshxBmxb(|FrTd&#g@g@n2eM)ENdEj>6fOT%0d#GawVf|RNibFR^M!V9e zw&^@lc*JdSaXMJs%BbnD(AF&4l^aR-{-L=+FIJxMxRMmV65-*(y%@tl=&rSHQH?L| zkGY_EON(#YB-Z&a(|Eq@Tr-t0_7pRboB7|P04!!G4KKW}$Ux#&ki2NKuXnh2KBE&# zf>Hr9(ii5Vq-Mc*0>s)kQ+)AnV{OU-FlBZ|w7u;SrDRVKP!z6)%ZVl4BSy3Rq1OF~ zT^hq#Bv2{nQVn;@B;3u#H4iIh;Wb2IlxzL;I!_EEhS%A*1O?vH5L6WYvUxv^Jd~C>U9Y{&$pW=WP1LeDl)olWOgb-2D(=&ntOj*duy+M z-cfzC8r~Ws1hzxI1aVviThiHQnL9g2Z)Njiu(IYS(N}Hpu-7`LhlHrB=xK<9X{>$T zYYF&yEy%KgxsSt zeS)|SL|sEk8iST7@wcLLK+_bT;}o$8()9GU&yr}<4EUp2SQ0c1?gWdM1wP$O7@TM{ zxLjXL4iI@aJ*~1j9t=Gs@?JQeE#eI|2>r{P=*#!Fc6JAa&Neu|KmHB)&CS)>JQ#C* zcTASKc~GFc@&oVC_en~$pvs$dRQO5uN|DU;X+wx;!a?alGhw2{~$3)cqPVfB;gc(^Ado6x+@Bo?KI@xOM0oWEYxi0@2Ec-18eN zEz)i|G-24FDtzQXthg~gZAuPM3q(4f?T89Ttxn(Qv9bFG)+9vmXu}$E%d&Q%W*9yE z!K?}=BefU$BnjwrD>2tdBeIV?7~^smid`odjne9#+T*&A>t{)GYj&g%O-Re z8beNm8(Z#wq>GIJZ2*qPy#5Ys zRETRFDea|*Nmx8R;^^~=Sv@4Uv<%q8s8bTIHD@4YGLktUdaoSZe zG^LohiPXXKe$A0Zn!=dXKJCmgQOhT~BCcT0V_}{FmzB#cnH?NgBBjqpBh#`6iPDCB zKOnile~(#Sr>dN&C}z*%gwp>lQc$!Jz?Q4Qh+|J-4tZ?J&0zqrkt$KZ#i#pUhJJe- z7{^wf3;;S^z;q6lOdxM`N^w4WkLMe>lCQ0yL|J{U;~s~0HdlB?QECP$^#u=Gji8*E zn?F@Su`&Wdd$yP)<7~$eNUhW6SRDx-VArn7__it@dh`?DWA`54`a-X&fR5u%u_16$}r4d6m57 za8yTgwzWggQjxC{&H($+`1C4p%&JSl_)s-qmq!IXc`>2w+cdQXfT$y+Su4+?E2?UUP1h? z&JBP>*I-LA;E{3V`U>;;_1R2YXB087=cZzS+2Qr8?CZ4|9{j19rt3fJLRTTI=Rlp| z^Zv|#{6^0yC#K`tLD2oVfy2pq&SU1v!zy*aljv>#`Tdp$>+R2g^###CQ!}5oiC1nY zE1w?7zdwu!>b0C9g+=GAxMx=R@lZi7@GOXFlCe;W{}5tUmCNhXH@qY(KZT^N&1{+Hi^Z%V#g1NIYifFXFUP>xLq|6&rQ`h) zST>&2uHX#;0T0dU7to>eoSg|2muGim=|v5AZoe%McgX+Vk`=iqljxnX!lYqV<-qRv zqyG3oebfoqr151UDb%_aGe6<>>;mgZ}Bt23}` zL*KayJtwZU_ZzdfJf_Wtnm;OH`|?39x;h)lZ%H7w>=d%YYeQ^%5=R6&9aeG6A>3>(`6(ugPhTxS6t&YST#<2L`g z#7iFH0XF*9&JDHc!jqkLV~9=O%_14f@D$m6`0xR0Jk~p^?rfsb=H?eHq;#v}-%~Iu z(;geR!i5DA@!!4{OkkH7_*Sa0br6|SY4C0P5o>|8nCp4Fijd@CHtF{R--0m zwfH6O)^;vO%Pyg4-y_`YDrO|^+Y}{d!EeFlo|8$`J1N@Vr57Tc+Rr0>seZw#0PR?3 znb|MZF}|A}xGagpz}2OIRmO)O3V&)UQ=2^Mj#JqQm{ZwFxL3F0$sIHgkEjIOVLR)u z@ff@VDm%K=1oDY53zl2hSz4d8fLwNYEw}WL4RFYHJY-*gEkunQE_~B7SsE|GYi1c+ z8QtRUcZ1WRw|OP+V=M0@G?3;mT6*kzmw7~b6nS}8HsAg!2qE?G9KIgBv>%!;=YEowITKUBR1R9wr}H5w-&0YYQJgS)#2cXtWyF2OChLmGF2I|K_5oZ#;6 z?gS71s?WLid-orMfi&H_ckf-b)~dPYob_#?{a1rZ`9A>me;d7Aup;|{j@EhZu|g&H z4LS;>kbqc9;8V{KGIE1&Zg7YFgaW3!Z_W#Ak(d{f^=u=m;-th)i|EWcR^{D)%pAcmnCD87R!aGcez;VW;0EA+zZosOU zFvGF8_DMu3nmKRTZ5b=)H;Wj5g{J>W3$_EQe7J9yuQ)|yR)U_uJrlBzj#)P=wN*^A zCLq-MxwyXZ)2{i7clLJSikJA;t=d1!c|Gv1-;th)9pGzziGZ!~|4WhqI53&EyRVIK z-0P15Pl%39-1iS_IqXj%<;|DQ&DUx8CwFgKwxDDg^#%<0aW)=NDQq@gd!JfwdL_d%SU!|A^x)=N)$k$>Yr?gc>ey^;V*79BkAROfO2r zxGp=CI4`U|Jv|ml@z}8KKWR|Jb z$2cQzt8Q}`Rv}r_2^p1{-RX# zs-pT){K zlFZvgr>hau&*xRzE3Bu^#94KVQeQWbv&^HaL@|Vye7alADVhW;mZ(q+%?P~Dc4v6KWa@xUdYjdo5 zk9V#vNaK1{ZySgZK)ff`q?GV`t{9FTMfMwsRUakVu6{fu^6bDR!aN%#tyf$^;uXV5 z?}L;4sCD?LH2{X$2P)F7K9X<_`Sr&|&Zk9kO!EWqBQ7x~v{rnk$=U>A&HZh;xT4KB>bhQ~qfgXE#jGX6xgns#L zB77P0iU{maiE!lo_pO%4A24TrXHRetvKhxi&yFVnH zM-Diw`gC9S>*xS)<=22n`Z5>D1UtZmGAz#9989b zbD&eSz;thOA|S|ghHHQd)IY_d!xi=$I6S`{?jAb%>`(8|5KGdsnrx!8^Xbm2G9E*B zpNoQh<+mI7{=Ug(D!w~Z#$UL;<$Dlc-XSC#)`5-xH@S|BTCV42>0n1b%yezNtyXzF zm%kJss{{iM)Q=e8z+}w7nLk#bP*yWGGA1c*L`CU`+tm5Huqq)WRQf_^d8(xyn=PCR zjgtzrUmv|L0^b}oV2)DSFoi6Z+}OMG*;_?Fo*mMKCb>>(x&9RwAwwLQWC|QQ5HYg- zIIYegW8MO`qSm&qjsb=GuKN5Z4RwCrmmD1A=gkFg zbKBswW3ju6z(~#RbX1kgj5y`@I|@|b6O-G)6|(YBStbz>%v@$4epNDaSH{SBw~lW~ z19m-FFGHrxUE;>mFf(av2#qfyTtiW0XBqG4GvyiQne6%E1mGoxd7a-Ug(C0{4)+g)ucj9nODAVJxTjj%R^3Ril%eU# z;yH{yfZqjMd&!f0ADJyE**7%Qx6|B+0awYw{>@ujScKLUdP3yOYfTTqDip|z6e+5F zkCjO%MogqtBw7|iqF{ZO;X}wzNQ1e#7%o*lvN#)|kxTSZNuYo|Ir3gHu}1!d^@kkm zhlV$jKe0w%1xm<$VA{d_Y-IW!KSZhiu&x!MYT~OLhkTj-O&1a)J9orj<( z5{N;?6sOtWh|oOEtmN9#ty(l*<|oADCxGP0BVsk&(2HWenV}zBd_mxoso5&_4Jr6w z=>^eKy@dv@Sa+u&+u^eJ569`PNRF9}Zs*(p9&*h?pT0iC*UqYN@b`Y$*Wo@nSFQiE zvc3Se1?Ilrv^hOIzEA9&jCt}-7JnmU`JP~K(cmGvWgITj{^3E?_3sJY_3aV<=Z!16 z=7F~@54hkT^ff<*hP_t9PXC_iJct-S+A9d1$GAySw-rG0oP=edi zT4T{%9bfLT-XKL&;s6?-SeJ;;=^4BeZ9Hy+KoEFt3+Ag#dW*o-$U#?4+IqjvEn*YV z+weg={i78-?Z1;Y03SY$Iyn`TwZB;teA4J}h~>8q_hbhrbrrTkscrENX`|_WtGm(i zRwUMqtL$8$Z-2grw&Y>L2RV01M8k`n)avcK$4A6q-sH=1Jf~EyUk`Z$)(lEX6~VqT5M13qOwOv)mgo-HWg0gD(5n=(7*Zw{)lTQLX2q zc>D_4Dk4-8fg{32!&%Vj4(L=-P-Ofm{27)A8LQNBiVPg<@ccUASYK)OC+(IR|ERf( zB!>jF@oPwszP)EDL7Zk<)~S+5Cd>G}jsT7zYAL|jdF|@4EkH+RoV;UBK8qYak$^^D zQw|@nWP-&7Abio!41}%_078q253T$)Bmx-{tM6^neldSmg-sYbLuZ|Mq(A8 zZTGKvdm8ZOZsb&F5S+3Od7i*!63>Jce2G}ds~N~y zNZScFz&XE3z?9!L_(oaX-1AM2Vr{S@=ypp9FQNO-fteQiTVw^AHZIKmz+Pmk!GbTN z!6fFsM5w_vg@E};+Mo8xUr6wWSfE&mF!eamwAwd{>SmJxQ?mT;@M#jl-^FD72fhLY zejy7AR@uyl2J~E7tR%|N*A>Z&{Q3tkpL3t)+Q_SZll&yN(e*)!yat^R5Cc9D3TA~0 z6iuL@QtGLG`T!O!{*ufufR}qT0Sdk`KBuoRtl~x#<9hH|J146m0YDm6 z-u6k|88?)-`H1#sThe9Rm%=h>-of7Y`v{kZ8SAi`g-UejrnQI8Yq0sgiuAfr7L1t#%7wu^bT&)b~m4EI%tzE zxo%@UUx#y9+bw5cujt@=yrw&)nu8s~bdhZcDdQf~M%yzC|9-<29Vu-CFhowaQdD8Z z5?T5K7K~hi(Q=27T~+*~`Urcww03E0VN;ajvDE-{uiwKk{*R+^l4e$K%gzbmsj!wN zWmjWx7#KNSzs_}ek|Q{MF=oS{;}h^DN{B4eyLpvQ-0tlNJL(p2@Wak zQ%UG{Yg=~p5$+oJ0aOURr+apYINYItF@}Fqfmwgj8rL0CV?4UZCZoCS^-6S$-Q)b7 zqcl%y%Q-A`f;Q^O1V)PlU{&1SkbNscscjsHtV(_VDdd zD{|vm`oowiOe`^?URbnmc+{%bQRD(Rj08OS(cr98TU=fOrq|SlK#`20i$|MkmWp$+ zRK?)BFl=8AF7lp1z2;#!5!P(h*jI3HuPi8rhDijBj2f$=H#0dyPwg4hw0az!5Rb}# zr=-L9o~cp8GtW$Z79g7i1s5*jY%H%(2M-YgT83D`8Qzt=dc3Q3Q8j>2wGN ze*n8APZ>UbXbZNKL~Ru@Y@a$NfcO$R61y~Zkh;nhMEEbf3@45Yulz|Lp4&i$L*q!^jdTprkf2w&9K0J3God)`u#^3sTp6j3t}64x_78iKxN$oIUSPryqvr}c ziov~*h{TVaX-4-y%nop}<4v{5MwXO38m!ic1))fKxkLTMS zFn9vC$g*j=XAP3o%5gSKhwh?jd+eft-u|DP<;S-ATYMw?ReFd1?!Uh!%l}N;cttfs zU*g@itGevu~z{b~j4vzu0uLps-(&_FQY+Y#4J;cP>(C6&^7lrn-tFKAM?Mo9n zp7wq3M>w79uB*S7S6%};4>y$gbi4yK7SkMcUh%8De%zN6sxG%_&NFmxSpQ7sAZ(aQzy2{urG-+;AZ9e&|?RG8uE*y8|&&gZZdT)$}xqsN}fhyf= zE9IRut;3(5S*vsk5E*TJk#(xYywq_?SZJ7!4hbk(Hx*58$d$<$nHfcaP(xpt+bt{z zD7-R5>=owgqS~Mw)Ngiic>+h4&3rY&u{6~V;RF$7hH@FvX$*hoWZX<%K}D`fXt8P9z!3~1Dr zkQo%@<~kPEu=K`EW8JX9G9rcvj-t%;Bq7l;AFax1gIPg(O+=`d7xbFmi&Nupe~B)+ z!`e%}9A#tPY?)SYB=i&2M4Ix;loQWNk`=8G@HR2;scjcabRW---|HQKKZESW}6c=00vva$KnRf~5-Lfh%`=Q&#ak_;dZjNcZ$QB>n# zToQ9KM&I7nl*3L_LU&dFP{5xfw)RJjCuui{3#*~e(P^*$?T6zcVg)PVqMGq>r9MFH zG34X|udrnwV+VDcu^amKmS(WH*wR)@R^+K`h}vPH5P2z1ie*kCeMYB`Mpr{|;%@0y zt1eAEI}({m^4+Uad!VrymsYbX6k}$65)tD*|SP0D?Jbf2BtT*NC3?A&wuwc2=Fhz$iv8WsRZh7wcvH2o^Qq zffvxwmK1i@F`YttSmwEDeT5*z8f1&>79}_>8Q1l$`qgfLKi2bw6t_D}v3N$zM%?Gh0oFF4qq zxDM;+p6@NiUv0f1LB!>dw6(84$H zaS%oJj9_A{r{(LN zeSFH$on9s(K+UoHeioOQpx!n%TNDu*qv=0tN=hyjD7K|*Xc>T79PsTm2>_X9 z9N;+W*dr9mMDs!kiKS%fIQ$AX9f-RzXVHqj8=MeET$_C;y};q759G*=&dpVR2TwA2 zi^MddCY?Ce=2NqtV~9rI;DlHuC9N_^O$E0tKHMXkJz6E2lVf#+bDPX*%dYtTWsreH znW39?(m*&)QA1wAg|WkM*|#W) zC%C=`@GV)~KTyqFaE)eW{? zS7>uYLP`+>B9D|5o#N+ZVIWyaz;lTOy(n6qKja|$&wq+hupuKUPK7Ju9s*U`W8&oz z_KC2YCADwqk%tHwhWw7rb=Ck)Sp|4cAV32YD3Z8R=9;V9?!t-rp1yKDb8ECD*4-gj zMs_jj-W5QmLj=pVDfN({4L=+n>0Ga`qZ*$(0Cf(qfD}}|1*sW;MP`B`)8ISHoH|fe z0fwDf5jmiD7y*oFHc35Ee^Kg-D%4PN^C6d&^ir8&QStDKZg%%!@Lb6t)Xt!~?!&BR zFKB?l>akU+`6&^-A2BIOgUx{ogp;gY4U{3W5}AdS!50;;rn<3g*~h<`A1a}4I+*_o zS<0)#4L3MM-QKROEqhTobtD_6j$5`pA%(JtkPA*F&%Frf3vp{Y=Rbzc?VO1MT85G1 zKtdM)a2dxHBkZ4V4O~sXPe>f->{L+^-B-sc=tSK&Zf*%Q7?&=IWR;6`&UX$0LSoc} zzP(jNA*;l#K4$R){Iu=U=TX*SpZMN+i1ui`qJ#qA68xR<< zC+E|RP0RI^eWmv$%u3>MLJ!lBtZS2gY=^jBG%>SIjWTga+B@;C!wtVj!3^YRO0JkS z6L>DvL!DbvR!$fhZdkj}HL>@cnT)3EK0iEmN4WO&<67wD z_-Do6N1q8^1O~rRAsyv%O?^@0yGX#RIKB8ZbBF1d`iEU%RMc>4+L)xcn4NY)F}nHg zr75>d8ay(-*-kup>bGRWx>NHzn%u*Ed&qf+pY=VBkPFoUX(N)W$6(sWFe|VjC8`atrlyk!N!5*r@d+Uk3L%<7qh36zNAAt0u-q~5 zI3kWA^7I!Kn?Z|j?b+ck5doCo>vx7}^?nC7rMj}V{==fg?9n{%*z0feZPh0hP^j}g zSGh^7u@wZdsvNRsPO%eH(gmw6FgViAzDz4Y6SW6V-bOKU)&R4#DEY)Vi66wtV_Q#2 zw`3Ws%i~(ViN&HLvABz3YH~_65BktF#QXRlA6%kB4hnaaupYcKkp2qMRWEzp;=)#t zk*U81RGS|@TYJDu-gw2cW@;S=y%Ys1mFN(e0heWE7l1W^$@n1gv3CC+YuY?36>z7r zSn7`swyl-rsqv)j3IV0I@%W_ZUGqtE3P*{6iGi(4d{(6~D(C!Xs!CAH$0;7Y>Zi8D z1AT|bEYB+QFp{COr9x>pE|P0kYQ%}?^!U!*B;z8<#vaGWs}hAObp#O;r>0|tF8HSB z4kd7DyYU3YV=MEuHG~5VOQP#EGj?1Ba+o+fPV_vB)D74u8R0iSD;qVB8-_Mgjtf52 z;*SXlHvl+gH03jwZ!>^eLAbet@<}vB{L1qL%#csb&(Hs7#EZUwjd)^slu>c@9u@|% zSWF(8Q+`g(8Q7Pi~AR#llXZ@0v5iSI=o|Oi!ORka~B4 z@{8<+gE3idLY^-+v0KtU6C|$9 z9TN+&Qym?dkr2Mc2}&>yMwOhUsibFjNFH4!;AVw$e@1BQF8blP0=n6^7TW&}iuUb85Za=hI@%o?r?W1k@d7XXm1qeRUyIq62yJc>Vrlw5o#?|D- zR23;Yuj}!5G#+s?QqtxYN-GCN?T)T~O&>cV>9c-aobm*OybsiPnU>}Mw;IK7xGqwP zQosOTK?2y4rvC6reZJs#1^g%>vm4ad!=|dfzC%1peZR2AQ=iLi`3FMFn;%${^9i>QtJOX+J*=RDP z0HM`lF_fZ@1hbM}@(8oQRs%gYi;ZMeY>-TWSQvYql$X~>P91fY1R-`B>4(?p3nxwZ zqYWvcHt37sjgEX&2rgO}PgQF2mNk5+#5du-Z>DP}Du=mw^(eK!MSh5diy0FZ=fov< z(Nqpin;~w;y9AVZkm+Xs-e0eBrd;iJHI8$c&R^+ z6vE~w(2texoq@#Mp;;=)Bic)v_fixPm)8aQ3vt<5)5&8I=`k`LO?>ecX3Wxhi5ka7 zU+I?qGua%%tu3X2+u%nSJkcN~F5dkiK}P*vo6;PMVPE>-4fK7CmXNq3wySG^7_t4) zB1$CVoU{u6OEWVLF=F_KV-!3FLNGvJf^wv{fA8kEm;VrebwtmFFIkuO`a_du&Oh|{ z|1@USl#)Mr3k81Bd^6?jhmgVgGC%@I+IrL9Gc@>hG(+k#Ax zCGzaHjQzfdi`rJ!D&`$B&(j8-=azrw3vv!sG{9QjSt)%zP)MhN6dt>< zjw)4VmYCDaMarj*WaQCb!P9(+*t$^b14MLii;b^D%$9htN!*>`0;{M#rrur#&!C|K4#exDMYQ(q9D%={ttz%9gChrg{u2 zY14?4p4b~)#hjn*JQ+C;p@L6g*VjX?4=$^{p6+9~`<1^v=nes5_WUC^s9q1f#)qSB zIw?3Ao*PJ=-d@K1zi$anLp+N0T1aHD=cmxc-SLpSZowDL*vNl*8pro*Alr%c(vlQ^ zhj$hk6}=hDVdVT1&&=5HL!^;M^eYjpZ4EvHkRAigUey~BRz?12kD_C?FFa45hW>ky z`F>v&=IWT80RmErbs}#&2-P~~44*#!ywv`Zb+viZ6H!=Oa0Z+&vLCX82W4CY?gskw+7S6o&pj_7Idi&;0N)p6ZQ_^z zoX~${pJe#q{*sQSStSJ#DukOL)hQV6nKH|>#@@IHLHCeeh&&TOO*|A1r&*SDH$!jm zBWYjz3_c8uqk>=29lW##lCk3KgbxSr1yKNzy%nS;;#N(aD};hpnO^@Nde(nMBN>+T z5YkZy!8i&5lWwT2Flr&GR0;SFgzZ8oMz^g{qN}42;-)XrLq%Fg2(K~Fk9~O+bvM%X zr|WMn=e0byarrYoHhCV-nULxePbG_+%U}Yew{LH5M03G39Dgw^1_lL=Fc+#D0Rir+ zk;1addPcfQqr2h^(${5Xxmd%WQAwK?a#DF$livVreb^}P0ua6>bE`P zgdz9d($gUy|P+^N&7o-QX#d4H!JFTsb{!>^Vc zWHKKm0ft)jmh+VjxW}f_%_l_>h&Y8WKV>DzbRjxsDwgOtmz>c#=BjkM`59 zeg{ldYa}8h!f+?T1%}enlSJd z4B|=c`ZE7DasijO_IfXO2TZC##_v5b4Wes5MIGMn(O6f)7xhqY_i4eYH`g64B;U3#cWiCFUA7sFCg35EP_V#WcpC|mP;it1^l#OeG$@3~5Jx~dNa zZCvbuLQx7AMY+xIG<9m~t^cDS0wU`_G2!3&gGUcEj$*bOa!QjzU-W-@pIpleLfJLZ z>q%<7US~1RoWxHX%o2?0qJ)F1ET=H<%hMUgRQldM)OnqxWG~VbQZvf`MV~XbrW93$ zS#Gi#1NLndC?c3Xpnjz&G$S243d15VFm2V;mIcF*vnplmmkKaB zs|+&-Q>V^AoBEBJQtcOo@a%q0y=V%CrYKyL5E#6C4OjMo|ADcRcn}HlK zBqJe10Z8e95eb&x8*vi~OCvH;3a@~uW8*-f(dc3WRT%{>MIf3hVJiJ87z^TqG=ku~ zcS~~`n-Sd2pTd{MfwOPiM2MZNjgD3fo!THQuZ{$RqDYf7Wa%V%te2)Nv!LjWvj_uF z_B2Lo*oRs4^pw{YD1SV3c6B9$i$ychWJ66P9mdxx+IBYUYYBQ}5XXbAq7 zSEj8{DcMU~MB1As>MEE*H%H7HcN*vf4#Oah2_`?`xY}{Bi~{C?5_7ep)}()JV|r0u z6NraOtcN6B$-CaPo5{qCO>ykw@NzpZPz?WzkN;EMgZ$wkrMod#V_|7MUEbop{A9Z9 zbAtt+X3KJ&-Qx1`U<%vnmbCRkU0Ve9biLhr;1h}$^lMQA1z^5$G{i7B(%*AyVN}7k$!G?jM?`W*enN;5JXh|V&(g4 zXMzeOI(E4jU}gp=*qjaTl9JDw4ZWqr>Y**l%c}_k!yDuS<}U|lqAv|ysDKnQC+AdYlUKR;w@gsJ|0~5~>T}fVJK9sCDF?ovi9DO+QK4&W)8vS_>P76K_*T(gE zNSPM6HAyd(QI(i=Wlyr08USJpeur2zps{35%!`BKnWh{ki8KV<^;EL}kTv8qrX@h6 z5>}S(P-CJfGM_ua1R^$eg|{FO=M~MuwSkcV48{pZld9HvfThYWEkd=yXV6`(>9f^jQ8NFj)_nN#M8@0wc!BGvbi>-4I@`x z&75u3kJH2;AAnmzwCjrIoYPwH4trPK=)$FckD|=FJ$((Jj*}P!hIWdhBat9>f=rfG zl*g4-^pn>F%tqLN13OU?%nANp!UL1S)&%wX-p*s#ezawi=Kl(X9uxF%f03fs5ps*r z2f|NifWCfx^}T2L@kExE`_BimVV<5ax_c;~blk3X)>s_d-rum4>9hb)f12IcWHVmW^IIuZZsEKStI| z3rj)YhmAWx-I3yZ`U)%wLW`1vtBgFWmk`m}gySL}TGps8SjSHL>~hc-(85ubS)dz3 zL{ss?W>!?d8uFbDNp1}d$b!eFwQoegodT>eFht0P(uJ)oFhE)*$YpF4Q}RL4^`fbViPD*{$e=8 znoC7_xY-a;*(kYjnYr?QT9G8^709g86PE&+c=$69nMWZr4XjL7RPvkKnGqW=AggNK zMp_M1At#uM50J1S0}DtyMxx3|D%~JBvmjIHFbkH_5%QyK3gI7S z{;0Ggq9OHkFX|Q%`UFCQIIOn822l(QT#&P8819WxeuBa*XCqcm_C#OyWUZGn^LrL_ zVNC->6;SF_!c*2JwHl+TWV5o{=Aa&YK>M-VBoB%hFEd!6blFp({OkIeAIorKx5w3nFA5ud<3r z2Tlq>9EBJRwt_VQ7+=8g(Z!uLmxboRJqeURW``mz*m9=hPgGGh&j;O|fNU)d8~~(3 z>_QG2)M;igyO-&8rO7HpyVzEa%Be-JD17DiTrm7 z@cjy#0RqV+Cf4E?^M`=33T)f}DVS0alJ}RnBb5B#wIAFIqKLHL?_{X2TQZveyiXFA z{&Fr28@9qu;!J1}O<=2a)dCCrH6*%bDe3(u2<}%gigWF&C>X9Qt90)(9q3!^Q`we1 zP`(1<{5TJLKN#%2HT%<;8Jg>(WGw@27fjUU8LOJh_sGhFK*}Cre?9?%Ya_+iuwheW zthhFxp@Ux*t_w&g;ou(Jqj7u0u`!AdQ+W?Z|4K=R2ZVV=ElN=ExG+i{%^h8Ko*B>2 z^Y_V+$kfLFSk&sc=^L@;v#u(aHW-x_98HT*#eMLujoh@}Dy~gXUYy9&+mqS+e5`VL zVSQH5v4kr*g@yC5M}Dk)>bjr0#Cu%3W!j*AaA@U(RjXk0JN>_Z?hs@A9@{<+Ub-m#m<~$Co&-bKPJ#(!XZ9Z2cFZX!0PI__iAYSmj>?37|>; zxgR4J`_q4c?q!^dF^Z}<^w{H39atD$_YP}6SsC`e#;!Pe25d7h>H(1uQ#b+^WTI7< z`f8hRiC_w)2(RevQ9{qskCES73+Swc zRg6!X?l0%>4kxFdBqr(@*gT>xg*r7~EaJl~t^iR7O`*y0?*9031&|gAo4)%jKRgKA z_iMQBCE5Im+4kah<9|NCXr|Crx*p?)2LEH89daZMS*8?<5KRo`vg9Cme zOI&Ru9T1q?0r%D2+h^6FC7-WS`zWkE^7s?fI$*6!6lMEQ_v&9!+!K-4h%rQ=6T0Ci zA61e)L`sk;QRmoWf4P8y9Dsf=g5Hppz>t?_$3rYZ6iHO&s%Z_H=pF%OTEZ%+B2 zg#2N=nf1|Y=l;hc;NKfyz@QUXNUa7LV|%A|2&*B_ zCtcV!H~o9fmp98mPV?9`f800-rf&V=45*}HG^hI5TFwL?PNKa3VaI-M=t{9^?#+0( zo2GgDr`F|cu=wHFrr9;FcF8Ra0BNUNlf?^-u6}GwE-?uYf610S&ZM7ecmxir#<^ij zG0W^+daVEb_5hoIV>FPW>T3AP95R^fn)69tz#fcxd@aE6gd7=Rs}SX za+sbiW^6Z#*vAJ~ktU>lyZC;6EBk^*jg#9`UK^aZpKoW~N<6Y#tkzkUu*&r%{ezu? zP^n={n*UBtF@SvjHpI7Wff?eumPa?GY`WAQ&j0o5e%PN@SL10b_d0W*fo!hcTJ=|O zRbSlSMlMTkOx3^CJyCx_1OUXuoOk~;S&9hCs}TW29vL=+BuUbFPc7r&Q<)bA$NZ1dz}6Z-c|p9A{7p^2g5+Tib$ z7(X?u>|Y&{685hU(7;hHE;Lg!_JgP&OaTABz8P!z{%i}HlrH=wHR$>Cnv%!~1Lwa( zRoq(Ly}P97aOUEdhTj*WZwRMncg@K&CsITK8?CBo(o|X|?^3yEgY{{K-i^U6I_QH1X=JqkC=?%v&bqxtA&%7dX=GxR z7?~5A;?-!tES%qUmmXN^#f{2HnA12;DsF64XR~tl^jI2OJy3L`=sy~D>@Wp2r#r}6`KNzO`FKRQh0*NutW0WXcz5E@9Y5&qSgN%npnJsSr8T1!ytYIVSzbR#pH52F5PFn*P`5 z2QZ~`fY_sOmozJDv2Jm<;GGODb#?SX??+Nz%-ps%ThW(?HJvjDg{c`fnH?$Jz|}{n zs3bMfnvj-igG3roO@UYq!Wa3Cl;+-;VZpH6AoEN<4eoPcus?KdFX zo$vd;6+Z!i*%KhppxqF^`XzJS8r&90LK_x4p9IboC!7L6@r7l{)hN zc3P=dG6aE?yaZMvz>tb5`#u5005Bk&ze4+d$x!Zd_RmhbS3#(r%&g&swas-p<}a(r6w`zz;MBju!uoRR3;SBD$Uj$?+C zVZOHVz$wB>SwKg(vhf8aUJVJp$_+FK#wfgJyhj( zj-zwCbyZh$tzhPXZ*w!xebkUakdH9|%uXJhpg5QvbnP z=1(g=Xi%PuzjMkUrDZ_s6wwIRO6XZ>X6hi>1UynPX`An*yB|N7S_pNUWR7UgF1zD3 zkzgjVJ_T-%g{Dax3>Zz} z@e+gJW=LC2qVnJZGxx)f3TT23_k@_3(n6Hk0LNE~jgZq|6!M;?=##uc$^0?0*c>^i zE>PDlrQ(DQm!FYYZ*Tt!nUcyNEe@vIvT$S|6oyFp)c~WU+uJ5jDH#(iNx>RsCDhaNQJFsYQ+D22 zV9yP|M^1);p~;}O00d^X=6PnKGe6&mkp3!4JTBL>s>YK{4XQe$nZYRp#3Ol3T;MPY z#Ht@mX@C`<&535k;?rpVKB51~*gdU1TkZD6wLNLKytKVDMA7fh%hnSrx#)dA1FF`W z_`g?hpr?uV=CVaR*Rrv19-0>lTv1K~ZP=aoaC z#Bt*OcR3jQ;Bj^#1dt6vKgxaCo&iq=^n%;3PukgreKH@f9gtBeN&a|p>paawK7dDC zW_b8aunJ6nm)Snl)5&%4xC`(?=wbC!^Q~V7s7aZJAI`VAAKS}eDxH&h!2ulhc1gOH zXRQaP3^3I^W;$;VmG{ltDBf$ME@PGJzUh|VU@_pj5n}QogR5iXPS5M+?k)FqXE}&) zHugI+9Ox=Ce_#LtHkx$~k z<}Z`XX>tt!mZO$K(Gf4pB0wnWAl-rhS5l*E^4VD{5M|!y=RX6UT1S_TSo>Szk~W{L zzI-1c8J%|2hi%KE<jq_=|d_p_c#Rg z`01AJtk2^&xV{1rFW40(u3$z907%EUqXxF$qEp-UY@7IaNI8cv7%I87L`6N{%wo=N zm~8(T(GfK9eA7*a4Xhj&S|++4BH=l)CB&=q7)KODlq(VzN-PnhrieyodWMHqXK!yS z<`hDdX4%=5x_t+}in5J~ zlP+8&j*3qFKSS5HP0Z9E5;EqmhAb>r7p)5ow+%rLA%qWU7c$M+TlU4|$9Ajr!I(ox?j{N38JEjWkDKcV)kL<3L254@M(kY;9gHmvLaK263bOPKBbv| z3g7$sb^I!&sjjXEl+XsxN3*qK%MQ?Is0%wMYA?n|#>Dk4srhSZM*Myo9=w^1*8CZj zIm$7nnC1oc!n=MhXk#IgennAqucvtLN+KFzvH(YvzDzd@*x0 zU5>%&%*$=f{587OfDWMWWXey>8H-If%+kR8sv+djH*I2{c3z>r2{DwlC2sI-e~mC| z@J@DRX|c`2OZ9a|gY$6EE0HI_)WM(5V|SmrG;J+t_#r&7>DKkU*M!~mh<`}SBN50( zYQu+1Phd-}wv*=oKwCDky?a8}bO&$6vwruddzgW-slB%4iby0+^>0_LH*n(!E6Hf= z34p`fwkdB0(@gv23Y08;737dzU@}m={FfHkUi^AO<*$SVnl1w;X84jFz~$j1NZrql zc_Een@o{37M}%0td@x09D2~0mqs1v>oDgYfk@oV!ING4}mXPwD3~O6^ju7%w0DyA9 zt1D4|oPu&MyWY#^Ae9xJtoiGr@}6u2$N{`j&^oEgO3mIr^Tk)pphy6IkHQxAP*W;m zwpu@8cjT?QcOXB41{iqZ7*nzw_MzHZB}ghAF$#WLwCOY{$au#Vky)uAmfEq80m1$Z zu9;A``;R#V3aWwptQnK!BH%ZfktXn~_RnSy!xx(`zf8pasBQKKb1}N4x#zufEJ{8Tf>mtHK(*$2gsc?5 zneF?OZ&CsZeV?}_fo;MpQ{O|y%YTvB|3D1C;fSF2M3jPr;OoYetxXR!`{9zwsqCex z_4E(nUJ+%kQWAE)A|$GL5tf7fLoh&1|0APR|XhMSc-x_#*V5-2)_n zr15orflWYel56tipzU1;h5ox&Ag2&QEJ9+h%Q)zj0vA^FT`sw;5CRV1&-vr&L*m7f zB1is6t9{Qidc-m6Le2U7Un>g5C{KJkEySKimL6tS3!`F?uMa;5J_oXnxVV9yAf$cx`%G0ySt?u zq#LBWyZ@K>TmSF-tu@OfI?UYr+$YZ2d!Ky@B!X$B{UvfPbH`!*(TfX>=U9c+Uk%(* zwwy=}yFdKyel$pbxMRX668LTB{QwV?-oD}V-u5ozy=TL`uzK}>{hL45{`-7wvV@4M z>lL?nqv_Fm2UMTQ-TXmzf{z4xoV5Slyo0~%OlT9^`ORjh+d4RN^gA==bptpnUVTiz zUisHwWT}BXXVP<~qo4ZMZG&z)u(A-nChDphwDf){!!@7WFoMC)9QAju*72vy*6nWE zfXgK@V=>#*sG!@he@1=CKWbd7NV%xlkPD^3QZ$KL{19<3MuRoOV+8r} zCD+9GrgyJ0)rsig-E)LIoJeMF7C&w4tRka$z@ByM&-exM^;Zx=gPf%lV5?*3>1_mWEwts}!F~_UR z>6_yz76!)oGCBAR%-*?gI4LJyj2CHf={~ZVA!e8k&j^Z`BUd+~I?=r-jAHRcsBMwy zYIHcx2onvocjkCO6YcqKj)EWl{O(UtE1zKJ>|*kH;(_Z$Ii1|mBP%b7%Wr>_X@bjt zHIfBtd*A;Bd_B(p80l>e8p&1Hd<}WEj=J;@1nM$iMn^cu$I3wZo^HB|>J)E(|JY2L!>lLM%ZTOl$BUV{adH>_D&DEQ;r~@yr{<`m}FAI2pA$KR{|AqGCdBp%UcdC~XFgD1cLjr310O{7| z!W`-*dlikcpl?~oLe3{RmQSbp^G|qG7TOk%;IulDD(CmWR6w&z-3nFF%jIuEj~tXy zS7)=L5?D80A-5zN@+{o;Fs8#8r)|-ueRxOW!ZPtePo#?jHAEkbV#j)6g{!V3AmyY& zWnh5e+okf2&Lc4`m7L;p;$xW`P$Heg>l}8z?S*_*51r>8y8MTUK!;+oZxosw+s)TZ zL2HwdRh}QS+$>VCfyn82=CD7szlW!5W^0;k@Paa| z(M1pTs*{jX@Uo@Sii3y5<n3N=0y%qbir;?cDpMRP?vz7GJ&VnCKACH-~mH5C6|`jo{6X#7*La^eGJc2g&PRS5<4au@#lc2Llme(R%^^8TbmI8V2M2NU^Q z^tqa=Fv_v)4~kW0^+99Hgy)$*ps$ejE5cvi`s|wSvo`xLYP6BTKeiQ^zWItKWVD|W zK40%!y~+vzBA4*_GNJvIy}h_q(p!72KOQQ744&W0_B?17Sb9UQx7nES5>mhF9S8vB zh_8jtk?BwPdM`6Kcgv)n6`QY7=N7%(Y4@bw)=06M|9R`HLE9_X@tQdNYw6Xh_pfGD zLGw=%F>K&!2pPf$D4A;F=iYCR=u{^(=ag&|0sg+_m8ngg`sd(dre;!q3Be|ls9N8? z2E}`I|DX_I0gb0?&P3|`CLtZ!Ir-R`s?s+#N154t9W~1?Wg)|O)D^QC_ho!`R!DV` z&8s$U$u%RWEH}oOn|R4dk2BXJe|OJz=OP2Cd((1lu5c17eo8@oT%w96yeb_g%=r*h zpOupPQ_5W0wpWehS9UFoodwLwx}!23@eN#&1+iv+C3nKhO*$Gzh`Ty>g&0Hw#41km z+bVMB;zo4h^JgjVx|EkiY+3un)YmGtiDq@8JrLz*KXX?qrylm;fj&;-p&R;XQ%FHg$+K9)ZY4>Hw1 zX21_t@U)eqyo#Z*=$AIFml*1YI(3_0?Z%wXeQE0+yayvzvyN*bak-x%^in5qx<3PJ z)e#}STYj2r^l$<{z?}!pAM&T$><@Fx@cQ_La*o;hppD^GKUgxvik88Sa%7MEGpFzH zHr2ipOQV_EuFi;q04b5Q?gW>t+x=bpcY8}6)T&gD-!EqM$$Lv?=8)Yr8aa6AWsz@aujEgXN<gf|-ns-)EYqd{IrxO9% z=~XA=mhpz@Mt zEOWY^=vq{?f~BSS4%PC;%~)x#d+-#u<~gj-3h z`7`Y6R6q`K-yKxU2QN+HBT8(q7MPpmCrqPYP~Cs(2mV!)0h(3JSAXlEEir~*e2Hls z3S&4Ska7^Vf{4V`?g$E7Zw?@_r|4E4Rppbi^JD^PM4o-y65a)2TGYxZnymB**9zou z(|rujiv4sztAYUUR&_X}4%(PYIOEK(QUymWh}YNRmeQvFkw7&oZXfeAig5Oi`E6qa zt)x*FH*g`Hj$_}9MRmN~g&1as;cZM<>js5br_OEIZTM)|w7ulM;$iwf+ z#FUhmtT9?{{~2JV>{V~Dlf%27u#KOURXAkq#LF0*8V^;DSBp_vk~Vc`@rMcAE&jCA z#;15anvq?cnI5oWA{KZPld2Ek`Vy0ub^PR_P)Mo3 z@8LEvz@g)^G!3+Z=g-)VV<(8um@S^Pegl2a-s25a`R`s?Lqy2kXw3F;~*DSTc2zLj`5N5XjZ#N9r9>0bp0Z$gzY zDHqPc^yPU44k4i83z48L$^^EU6gA16L;U*#D+Tq5M7?GS69;^^xKhgI==oZj)S7!Y zl;Po+v^e2!e(NZlfb|iz&g!t|@fWwMQx>XwM@Pf!3;mvif{2W*yOHSeF!ZftN@-Vsd!^Q|;*(ptX5B;kUU54>~ilh(V{5zB=53 zktd#3<-%|d={mZs<;*v?fa9BK2n%K^#O zS~V_s^z=lD&?d1&MWlK0k4WR=Zz_&bRPh1k;Rtu-01;$|ySdQFs6^KAna%l3y+G1m z=FdObNUs8D0^NsP+am#hu97dVYlZi`1l*5|Qc_8RvbjBx79ZTXJGVVcaqIGbOyGfQ zPbwcoE(nJdTq4lAoBWtn`~qH4fLIsG9f1Tz?nM$98oGlV34=K z(IYa5zJQS;?X6$z#SQNqmEItkS-9Xi$+7s>qeiJNb&F^ zvNiV7M(wKIh>Vr9G*(LR>)H5_sb+cHJK6228Q zWEQyXOo^aR+L0aw>9Asz?9% zCkU^RD=BLq1+hh!qH{}qQtHWwsjx&e^ABc*wwTlG2kbZ%5un|gR%;G75o}|NO4M_ma_C?;Uy2gzNee=5cc8ozh)rZYt6>%t}Db%*rZNXRHw~2&WM(SVbkp zQf(BN38n%&$;qw7uCe(~PIBb_lhSe%2)oH9H(;qDFYQL-+JCA=S7s1ypwdfqs*0ygloc>Fo5=W!&HEuiZmQ?rF_xOpvsUd@`YFrynnr&VCN?=7d7 z9CnRox)XlPr0VM3!V^{>q;KnD*gk;Xr5}nhTHLX&x%#YXcD?Z_l}w&Ja9kxi3PsEe zAwq)b+J4MZ1o9!f`a^X-L3TB))h~aEA(OCC!?1|X>7WQQYBlh7YREU^Kq|j+g`gg- zW^P;9;`U&P3sLD~mdiT4(ItZ{n^}YzM$8f&Au|;HGxn&}3k2&9j<8XR%b5>ry{xx% zD2AhjLS_gC6*~rJGbNHy_J*F-`PBRwTAM)~I6dowdQ_-gY3cclvVYP-J8)LbD#gb& zK#4XA$i;n!pTH(91+a}=VI2gybWvk>O+|iq;~Jgcgtkt!@+p4&Lx%Q&nW8)BZ@OGA z1lqfpTIRyoI6k9###FPf0;L?G5X~}sjKegV92?&gu!+n; zZC1fd6(duqK`FIKnQIcm0Cjp11FK|L*G$b;8N@J*%if5&%fb;VvOwYrRr}&%V&g@l zMP$$SGtOq3=B*`1C{*(FC->)46ss|uKn+yfIXW6UK-fxu($+p<}FI8QCJ` zj$YsrOQ6v*H$O0AML^aPvT{pmik6QgF%wl1@pKT$5lTo_1M})sN%uuWeQ$V1Ld!9) z==u#Lx*sB`lcv^0#~c|B)^LU7DpV;%cfeTe@kYgu!a?A`dm+<4T8<x3WUPe)q`zF7CJEA)Zj#MSlnk$0m!LEk$ z`mA~}U>++}ZKc3k;;K>&n3O!5)=)Dw5=RV6 zT^}ay-24QZvQPf!iubvQ3wZy^1ejtZ;lr2o4w8NC1jp=ZzX62UDvuL`Yv~c@N-G?# zQFn_>mcYF*9EZHRke(vR2xaBJPCcB83bOIwZV?59>5g|S;p745q4S#RzMVv3R>5ea z16#&2CPHDfSKgm=-TX=yZ?dtD?B2fv=6`n(8b~OtS^6Z|z-_aYMgdg+f`L||Wwrn1Unuu=&#t{~@1gOAQxYFFs= zIx%e4{ecELvFnz=3#E@N%CjZlzAv=ca|5=RSa(u*Q`~}*Bg5-cj5{hByd&m?Cb7A? zjW=?_#J2$I_j;4{&Mok#P2`Ml>cIG zu-~?&mah(?w=-sU%#K!n=rTu^6}qBv@blsbydrnR7z4uq4d`uK6S5&ohaXln8~yE^B%Q z191m1qElk1%QV*AIhT$Sq=~%yM-@wQr@t|QF!ByAt0rC~-nb@(h@&Hyf>Q8)UJ!b7 zK3WV&tz`)b7I-Q_=;UI4c<4(tzvAg6?mkFC*@4xKT0_*t)d>kg?-17sGnXbe>~V>m zsmbJk17vKS*tBkA6EtjjWNtm-+HLo=@R1BLxuXX97qY<0_|=dVCrhdrkU-b5~iHV`ryzFhcKNXV&!avR0jp-d|QY{SOf*b3U?Nx+J<4yF>Hi6 zDRf)v+faUGU~|PS!DsH!ihDwbEjz0An@PMwx5TBb&9D3c;|kwLF(~9)zt>wM7Pmu} zBKp)O4T^&6bmT<5cBT0{KblpDyZ<3@I*mOBEjYf{sv!1gKq?&&ulR~!c6>^V)L9lB zQdfq);2~ylJVzu4ZW0X(!;Sx}C?B?ffeUg2+=;CVdJQ8T3)@0^RhU_#)P|KU@Zq#t zNFaaGhPLkMtgmUstYB-w5@siO(^q^4Sx&EmNrq-9@;adW#!%G4DxW89@(^XAu%P#C ze}yra4Zm(HsxHc!7}31nk~#58z*34TOnOgu(4?^IxrxJW?|g>LLycPHHH!=kUM6(; zTNkz~76-Q!nnwYq+6s;{HR;O4Q(`LBE`wmnGxd`H;y3{xrx8r|0%?byi=V^=6>yX} zhPY<4yE))m_pMv~PE~?b*iw-!qg!_YfBj_&)jy)(>S^8>CyhsIJGbbRF$0E}dG6xF zbQ;-&BR()jz_cAu3CVXRZK{1&y8VVrl&9i$e_X>C&${uJ9u>1lFJf$LvrDDoqt&mi zG94@D_|J4dec~3kf)_BDN;C->{xL#eRaN($$1!n*fRR+N55Zun*_gmVqTY=VhpfD4 z8-FTuHKgieM(~EZ$$MKftxB&%e4 zT8X5Th^LJ*EgI-o1VPlOVId*Pf`eL|0(?^8Y#X{wG*n>4J8lEefIN-5PYHoWJWlYx zAL57CSor2(VQ4U=wWdX@0NI-@4=rGt%UoIzn7nj91TkFZ*Cy0dxaC)yYQ&4JT zkztLlVVY^(&0KvYS-}^kQHqK!GcDoyu9Imjoa}g|PL(ndYb~u(0m-5i%@c{v-3eCu zIHi6?35f+>*3wE9%qoIa%5j`_MwXs>(IR(w7ur%|8trm%v@^-E$u3Hjv)>G+frueT zA}(iO(^~Qi2K~uDX}S8slGJdn=pH+x%wC(6tm5&(>ZNBwC51^6Rm+E5O}>-nGFUv= zud}~HTr12|`SYA3u+rB>RhF@X%~3ki(p6&rDcSeJH2Lo;>EL4&W5E)uV&~W-AgoJ$ zmy<+LV@gU86Nv1Ou2FaF6-(jB!j9tW76&WDoP$4jWx>RPeIuoks%gGHI74gOoJP#} z){%{1Q1Yke-kB}+0SxRCTr{PmH3w^>AU(Dyzhf&kOEnwTjvJosM}4(INOYn7mO6M~ zB(v(zPn~j8;pBHQ)6yo;$caSENEsh3ooMAG4F7Q{+Hzm}61-YX@hTD7fEfr`y|08V zf@W<5Wg$T;NHXUah7Va7gAyb}I($S=gsq(@ZN-mr@q2ScTw#y6d09cH;Sf3BVo-g> zkL(?i{KkTy5{8dpd`+SbL&wk*jRyNTqH38SXgyf$avWaao@t!#ITa1`4%jiGN<_cj zzRW`LN#FZnq5p3ooKqu7S>)k_@}L6zKqx(K>3rY{0U4jx3qRvm?3{s8WSKMr?`K#i z`q@33LUIiXy#zStcIAH8eKnZX=~%qm1?EPw**s6F-T0s|8R)CC4Ul7w#S% ziC^w6-=H2Lo&OWEUiYTwDMv+amezzPDYXxT zY`js)qQ7iYb7KleBN08oD2wC-mTtsyu2yDSg!;0P5ukqyXioMLBlG$`OZe&)$OkxGMN6%xhee)o6U88@Lj!@6c}w~s|0 zxL+U~z@Q?@_~`^+d>bk5aoeegk5l?CSbHocA-RyvVxCOF-lxhpX@GzvH7q(6L(T>g z2Of~eyPW_X)y!Q!rigUK^-$MMY4#6XUBqo^E)>IfZYZ+jTQ~;PtDbFI`+ckrf?@@~ zv#LpdhAtx?Y5(0kd+#jCD%>pRczTMSOprV<4pEc_xp$?~^4Fqxyx1Gn#$1 zM8aBZn9pr(%aM*DE2T%IFSk2=I7%Iaf zoi-SnGopvpeK2|UMD%jQ>mI6k&2xZ&!cfHCE)=SqgjhNd*tdb^OK3gy>?jE9P!*#5D_p_aHHZx7~57 zMU0vpr6Ew^W_qrw`4O*yK@o=;>D(Vo{1dXRDnl;`d254)pzJH0u(zmV#HCrSEWhhN zsbx#3edbo^!DOuuLQnFQNwWP)($u{@N=;Fl!sYG!HbxSX$NZ1W0Zv||jzLa)(nm0& z_PAwJ{o&T8|ByN(`qxptoaStp1SV8DGF*RcnUKMu>%9xu%O)2?n_Lm0*8y25= z{b)Qyb=2NHamJ#n$av?>#lbm zkU=fp)qix1I4oSBGe^0hp@+oNo_42dXB2OmWsqz(ZkSvq%r|(JKr7vmdVd8nk(86q zmTY8VGV-=7cip5D{LOsI)KavFwT@20Uvi2r1S+~wbk-lwDY)bOuNkYY@t1opD~Ft? z8#ZY{eBWFwlJV}27A=wn$wZYeIW?t@r=OiPnxcV#>*n*;y%u*}Aq%JAHbIX}l z?Y&{|r8}eUg|dzE^e%itA-mAEK~f!?t;HWbYLTFY$N`-nqeQ=xn(=?~p?Wlg{xib7 z^nUSA($7Rbc21+N+v05pTw8G;sRQkwjFM7)IB*;%#z1iWZhY{{sZzwA$H=)SB#{AZ zQu7Noja|s2=0gmlBqdG4zW&>!JT#Rbo~A=X3MGS>jo{&=WIEom20R6Pn3}KQ6|R=L z&H?{BS&nmq&^6*CtmFKxYvZhI-$McdYMim>E$JO=j~MgUTeOHRs@OhdQOSrHG8^L; zEmF#aNc)dlW>yXknU@BB*APz@fmBHcPw0~|t@j?VMKLHC)+JWpxdgKjl#Yw&&dJQ3 zkbODqwV5`mPa3yk%b|DvModk~LgnvI5}+xhtz)}2frCn@h+WSxyk)%S6copXhP-W1 z>lS5V{)eY?GvNzb$YwOOOeEQ+o47Eiq6(#Xpz7^E!QpG9o82d$xu|!Lw1xnH|{0)bUy&UBr|isp_`RrLR$8&=H7Etn=0= zZmRYQeYiZ&;~R2*`EIz@Mq8KTX7`>{15B>&?!JslFWE~ysK~4AV*%>n<73jJ!6Ghqjz`KFu zC`v(0%X~BaA>r1LkHb7Vv(YnMin*y z9m16J3K>6pGN#pWzKL{Nzck^nTke{+iUdFyuBLCv<_1q`R_=*U4d-I7v&(0i2$~nV zTZ(RYgt}3lOjCXU*1ppk$J1`O=%XciFE-SOUQuqP5UIj*e)#6XMO%gS{dQrkm)~A4shrHCcKqil%eI@ev)T?Ln{gI z8)k?)NejF8+t3RYHKzq_6<}^!sH5BL}0zbfui*2g*(zK?61x9{5;)rk%`^fr$)q%jZI z(c*Z-F37*-S3?d2h1jwSQI4gEi;|IcS&plw@JZ?vd?zwPt_6z#SCBudi_SFn-`wLB zHd51!c&v+!t8u0pu$Xt1nQXie@?>wNk$LXz8(cT)o79U9KFDqBv09R-cjH<1Tn7uD z#M(F5cm_X;?MFyAesbBhIm4N(QOrI6!bs;q!yFwOJ&-rWKrYsO4aEXkK?zUHlznH2 zG+n)F!3_&SoWL3z(Y)^E8HBZy_$bBsJdYt}hVnP)8i4D9q@ufP*H`x#GE;i*R`~+i z_bTH_vbC1;>-;b?>>@soFKIKGTyZX2iYNEZ2qH?R%;p}vW(fa*)O>Gr!f2t!<`{(( z7JFwkPz+NzmOe^8%7v-SkW5MK13U-}fN~Orj45>Qpn|RBjoWWS*BF7-?X^aoO zQ6?)o);Xpr_V-Bk9w6hP+F~$Qa{V764Z#4Qnb@9aa;7KYx_I!!Ztt%z?IvgTu2T}M zwFl2>l#uYLt7DUwO9t6Ef=0gH>pe{58y5;i_(c3d|LlK zfgMq%ZD_EC?5&0Z0n*u=MZ65IkV#{Z28EfDBphKh>;DI{O(Z#TOFoq-u|VSc74U>E z?ex|j=P?VWH5FBHw+Pk7WF&{ExfaD{uQwPn+Bz#SQ70yKhrCd8vc?W_YqJ7m2q)J? zbtmH}b4{xNu>Ioz{@J?8mO21_U@$g@PNf1&1!4wDK2>^ToJPX*^h{0d_j&tJ zkEmH$Ns^)|226#|_m@ltzj>@p-PUsCnbL?1FQ`K>-WNtQa11(`lg@?m^Zg9BaGaRH zwvOeRb2z0Cej+x`qmSyBQLZ0z^z>dO41sO}C_9m&F&zhG{zh@yFK&X3A2Lia4k&z2-$N07yzg-H1^1}Z;7f7wYHL3 zqc?9#nq)4q_oY$5|Ha9N<;Et~eia6Ma&LGyIp!0*aLw3qK3IIRz+T3Ci8Wo?HC1P` zhNO45t;M}F2DDKVxF29zxoiOZ4t!|sh`y=qFum>>|2dofjY3b`#KR=2Yk&Wel@$I)hY%`+vHp5;|gat@8U0sdRQURrN!+>px+13;1ezQ$`;dr8Gl+U z@k!B30S`Bt%8{i;Ruk?kOO;J@;%Z=L(%4d=)i-C&=;{$X8(H3-QfZ>b!L#gqJiH}e zK_fD*At8eaq$}MBYZ#G{odTy#9XJyYNLlwA&7_&$dF<7R7dwEK3xdFm_TDv zll?*5!{Z>26FM=)97#t+E&PSL$h9?Q26ve8Cc$eazQM;1Bj>MIWMlFaq zzKljZ_9-Kr=bHE{O`#Kyv;&12iLE`(C^DZp>mu{+-6tsL`%4v?#Hja3(|=`V;zKOq z0_+(B#{_zZfBZC`VEsnMg(O}R5K#BFsCd6WHpfA)=w3&U0X5=?Mt-ilI^zNH4HMA( zmx!~f6WUY#I#E0yl`>2gHx2k-w(L$Pq?oFm?-9ju#?Au;+WL{&?}!5<(hRP5!Oy3C zxOeMnZ3COb6ba=51DbF8fG!O-Eq7Osr!)dP{;Q7>0*_~+&$syktgeql)ff4gtXC6MOV6kLUDSYv@)F&Qur|j&UzWlXwbWnZXD3Gb$)a>p*2;-$u1&v~~?6nC4@SlgFx26>AH1UKb zTNWt%e|wT$-NA@*@@F2S;y!w)aRD=rk%Pjyw`iDg0VLtTE~->GzO;3(nj~o{s7L9a zf(jhH2DH|Be>SHlJ{qa2imfY${YT+2>v=H)@3)E;9E$!)Mc2%ux*mx{G5!ozu`u~0 zhNfq{fw*J#m$wd%p+j8G&-isHwx)}hU}`ZBh^(x*ft4mUh=3!{a(AV&|FA>2=K5r( z`y4}7?^AOEiNQ-c%+wS|cE7R#Vk~RL4rO5eHejVKSo$ZbJfFcSU0}J?mKJQi(_SQH{n8{d2eoEBN(5VX)}u$n2$2f%-M6k zH#wK~c95Hzv&uRAN13;82O2n<&@iWoAtAibF?zDfVJE!h2cAMyGVywU@PYL_ucXxM zXOwDuGjGr$ims_;AC`&=yK&wSq(08^ah+z4t1@NuS>c^6p}QQ{#sw-X>r7u>j`R6` zz2o&dwx&BZ=ht&O!4&_x0oKFCwx8*xp{cx1zS4!h6Ej|6$S74Nh7r8&X&)7tn)7iB z3T=K>)Fg+oA#CeUH#f;Y&jW4=MzeSs?#H3Xwu`9$2+ykG$ZBs^>)jHJ`K%RVsk&YS zk9np8El_ZQ$<}?%C!UxjFt9tSaZRk9RcS@9cRTpyu8UN!J3(*kJgM08K%gz7q4#iH z=`cw{+jTk9Mu|w1b7bIRc9&$Or@s9G#<@%={b5Osw(wx|_7 zDfSD>=~np@k9Y#p=Ng+3nsm4LiF=N{M&Qc- zV@WdXdd_2o;96A>GXd6sEl)p-q%XN2I9XlG{S6UHB_mI{&noK#RyuD8%6yptih)`U ze=T4V)+%9U7Q52Vwus9y`?!BZXv;Qh&(=w+n6-+UYli=z6uoBVgQ=EZE0sx!vYKJ7 zxPk`7ls_V;nwqFmgMHd(^g{Ok##$W@3}T8VlExa`!=rdfh)P+yKedgzHiO#iEZ7QJ zsP-J`)6MZ$USC}4|M27JVcFHZv#UYYt9ci=DCMZhfv-uk(&9d7sij~Mp0lL*olPa{ zHvw&?(GWk*D4(PhM)9EGEk{D)Eyml|@n1Vn>T3ZKyZ=NY&h-A3hDSDWs zSn}THFeObenL&8X94LV1L~Kkob_v?s>YH!(iSMX{ktR;!0qMz(zVr{gc zFC>hvR6EkIX-x|!R0Iyln7p$}qix=|G4T)4>xB%E0Yzj{(D2E!V4g_8pi<}Ix`s0b zzNicj9{#?;;-kf&5jlq>5fQ&DLi4ED%?c|~>Qc`POg>kO9fn16{PsvSkq-aZ?Tk$# zvY2um?^n{+-yL@wHB+jf0Tlb)ZqVT(&(P@{)`Mx}8vE{i0pjO2yZ2J2+=MfV7Atjl z3enNF*=C06*?nV`E*GXX+%PwGlKH<})5|6dj~8jlMU!RnvQrE9sKVxxmNKy9zzb27 zpec@_OLHbdjzQW2Qj@WCgyY2=Gv_e`IwvGf`)x$q(g9)4k8_8A%W3S3zDNlh@HIxby_maFYZV#4UxVCCg9z6BIjDlf?lCQ2GUS zC;0_M{`=dJw)VXbg5kG?Uc6FBmaG#6gkp@rtd6_=y8 zQu(bA^yrWEZPIn&n2Y*Ih3clU`}V{I^2mn(uP!C$zK5FmjWkQd7PsJIRvZschJ4U- zeh#2a2mmW zlY63hpC`Fo;?lfoDIsy@rEbG|4PxB~!W(q@eUI-l}s@b|V`#9Z=N!%m} zxLjfm7r7&JjY5WC!!wR1cTVx0Da&VwAY(J@c8SIYrcCbPIHl#W!cw@O%}f=hSbF0# zQ5IY?^lP#|7U!pLAtekTD6=#_k}dYuO;&Eb$!F63ZCaD*Dt0PfJm-2y0P+gY$s-&< zz)@6Z{hb6)+MRV%>2$_Y8Xmqotn2uQKEaA5fy{hO)F$CAi<0E%)ep7s43iup{j(1{}k~-JdmBxahP5n{yM)3_nb_6UN5p z+5hQ_2cwK0Qt1@^V{~RX1U7ZvVeqbxgO9FWtra~VDsK_eHGv0W=iJ>~4BvSEM~U|;cn4f~umKMQO2E23|Fe++`}ekR=+ZiAb0M2Fza%pQ zXyN@n%fv(@@_SDrh?anbVAmc~UR~`Ma+;M;33M&lw@7_szpDK# zEC~$(B!;s^^e~mT{}4)*hx&^{~z?pDmC}RindG^u5_Z(e4Lfg$3D{ZrgK0cyn8e93N|%wN4h4RJRaeaasFs zXUIL{pCJ~Gimc&m;lu{EYix0qZz3dESwnZ`c$z!YbrvfdV5Es!e_v*rY{!pIYU{`< zN>W>j<12}eRr**GRF8^Ou>?M!bv3wXMw>`RQ_&6b^d=??42^H>%yBis`*^c2UK4dh zrOVVbWsKHoVvQP7qkdv_xn(nB(#dOSN?G>Elb4#Dr<`PEtCe=kNo)&tyB_)Ec-oJ_ zTn`gd9}OcuRdv-S4+UCf%G?z5Rrkb3|ClKi6+o9b zAXfNOC$Nl#WlpM2S}?g&=vAQ+vNMLj&Nfd>IJ7CPz#7L4OVu=F< z=#beRaYV}+XRIDNSLMRg#J~k+p#n4-n)Qb!_j7LBxT6&&&h)vpFkxY~?EF2M+ALZ@V6O`8%!l(s4&0 zS@m+tvI>}R-QIs`?|K#<0*D6i^YcwYgXa?@52gIHr`+3Wxz_tMJA;MQ2k7R6`MT=Y zPJDcVdtwq2_4vntFQa(PYfh(VGT{Fr0WMvuFKcqI$7`Y%_ZUsa)4Pm^iP^hxIiJd= zh8K9;GXBxaC5ZR^#mjn}n%)+aMj$Ro9(}R(lNhiNErbhiFzL(kbDH8>Cd7)8o9yAG zR;xwpg-(pdp1Jl@9=O=*r77ESs#zn`e;kFKByOM42n6?HZC*AO1C$3eceGKsMnc=( zFXa2hc#TIA|Z zsem{IP&A!;2>5qs1kG$VUsN*`WHcbDg_G zKC5THBCZt#=PE9Q5LOrk+h&D@Bwuk=<|*TKwZWJ#n42_ zs2uLgbDoi6F5*=DXPegS8dRCe3VYaaP2nPG>=X5B0vpgkP-HH1W52RFrc=MX#(46f z!~`~=f!lCO(86%iYi^(FezK5|Qj2DoMlasY%J#sE5t0cQmlHmLWslp+$zA2El1MHU z28z3(r5ZOxl=uY38k&@QuHGnC?E@q2F`Ie!tY8c-RUdGvPS<7ln1lWpErtdMSdnW0 zgKHq#I(niCA~{5$!0FX9OvD{A zq(`wC^uMUdI|Leu%tBSDDB8kzs8!^YMJ9ZZRg@ceh^)dJy*AR@zLlt)v`#E1E(z^d z&=9(eI5xVN(eeBFR*^E~3!3;~iXVhmk@hN{fWbBSAx+UJnra@PN%lSg*$ewG7&*&OfjSGi;yM1kVr4E>Vi`7Wt2 z8ENJQ6I?(qHrmGQ=xgE{|27`Y)b%}}5{0#jSo<^=01%D)b`i`T0WNGxKmf60q zvw%P<@mL+5YZOmcEiA$u{gYXk5uos*rORci=X@q&FxVG<&!DEJcsL|(gJR?=!lkIt zQP+u46aN`tOGsb3tCgp|W^#m3l>9d{1W@>!0_pkKz00e{{)n;Ke&{7uMQjqM+yu9W{&g#8ZOREajXBzAnjloI&8J? zDDeFUK7Cb@qk&x2)$^9)#WFp+n$TTIrTm3J$iz=b z=S^VQMK(7H2-{NX*nUd^Qvz^)A=qNRCpa`xJ`R^+k8vsk?E}BH;U;Uw6U%GrD4y|% zrT3!R(lrc#j9RY5o3Cf<3qVE8x7~d3aX%YFwiEar>@>Sex;*p>P0o^d1^n!jt#*5O z`wCB594(Fx&col`*S87x{Y6n7)y?&BW}+F>%eFHHyijj(foT8Yj>#)+Jgqvl@$&QQ zjWRbm{R=)`0E7DayK9j?qw51wL>jz9*RA5WuRe>FaiIV%Wc;uK^4z{-aEblRsaZ+~ujrMFAUCk+s? z8@K!+Hi%hlx2y87<|CPY4Du&@NicbHaGm`1~r?{Z=6KT=(6Q#J##>j zk$u@ItX8cG%&5h%@}887xr&;_bbF)J&Z7?K1oUzT8uPq&dX0b5?>8@a&%5)18-A92 z_zeq`&T{vuemd>P%*bjp@>9Yst9Cpl0A>Oz-aIpA0wa+0yaq;3xe2>O3kbhAFW_yX#V zcGLiOWI3PnYTmnHCx*1P&aDGE>f;RnbqHTOg8@o+eKvsUfk88-v+;La$@8IE;LTs2 z)dzAXsU4AUs7F?>g!wYXUFoNaRYvgo$G8{|rCIz^E)j?c;qud>y?f|!!>`#yUqJt1 z4=?H9K3Gsh)InM#TCXVwFxeZ|Drg^OX|9*|G|cVpWz9YsxnN_A*oc~WnNj(6;N-S= zCPq)ZMXsaObP6)JrDtbftY{8ht*iNyEDUR?0%%Umr8B?8QUK5%cCC*3@_V6(f62dB zp)u^sgEE1Okmnrldw@m3J3_Bg#@Qs`fz#TxnMIn9E&5gB5>T1WeJnTFu!ER@=!fS9 zz<^=sdmy0AE%y%9fsZ%?^mUach5>T? z5AOr|@^9~$^!@_O-OhfO+{GqMI?Ug>LD9A=($yV$y%!FeQJsyg1U-X?6|UE5$?WnC zXzh_>WDoD-vq$y1a`uQ827EkE;130AhA;GP>7??@Pwx-Pt6gRp0G=oknBn~7l5H2Q zq-CQHN#YszY)tKsh_BH%kXLU2Uu$M>O{({}UylbQtuJ@Nydygu;_2IG`2wKs{)hRv zUW`}Brmi$W!oY@NouWP`9Vk0Ow)^9?wJel*p`g1w@TdP+#5Ft^k>=bH1)=XqYB$N2y=^egXsMe5f(d~<2P znZlUQ-N4rfTOn@1%_u5V!UV4RkK%|Lz5jKkGCt-0A)PE>6y=l68F19{<)R+u!vJUe zk7dqtSu~l|oCdd;#h=OPhOm)WeN?muB4As<%~qM+s|*eX*?SDmrh~>m>UoG*=WDz0 zW)E+$w>Zla0F$JoN4?9Di$)Us52*EC}c7B-;hl$!vSFitpqo6-)C45L~%yW_+ zrTr7(`%K^jR9Qgph=tef%kB30;XMBs)WgZ~oztS;?|j~w%G~Un>AN|V^C1Eo0*}eC zLWHWss^CW*?*wcwI%Sr({%a_pt1KDWze*lTE57By~mvA zb4*A%s9e&$s7d(X;41>M6iOEt9RQ)tu{5!Ru6d7e z)lc!HeJCtH%3my@((}E@gzA5|^Iz#7NPs~Hpf7SUwEqEsnVN-5=LK3vAjFcK)hSuT zC~gZE1N9K+4D}!X4#VdK;~;w(clZA;Z}-9d$5)r`^BwT}EDnbm$uOW5p?5mh{%Esu z>-#Vj)^fG@8~nBU-8BE>`TWwww+(awAJ(H7$jeUoOM0~CdbPQ)%Y7f0n$B$r&gB@M zk^#lsUFA``rmn~Sw#zvv=02j50P`qrfRM*#1Iq*mQ050XUSmDM zt2iC&bonKAxK3~dC{C+9bwL1!2inPQtwA|q1p}}NrL)MeF^OxHvf=Z~BGYp=X2$j* z*6CpzF+Qf(Jc0@igpemmP`8Re;Ks(+?TA+TGC|O_Lru)k?(fZAmc#nFusl`&x^Ae! zJ6>9j@9RSH*s)FGDU8(uw?l-uEu7|%W_s)g9Hnm$o%G;|b??v{IzGIgSXKoO05xZ~ z@CQ!EMtDIrE8C&z&@U7WwHK;tL~pP8L`=5dZEB5ZiWy!S_{u*n3A-X`is1}YtKfX%0m-zl|*2B1j%rxLo4ef$9$ zfbHf>CJH!F>t8G-i!~LnA4=f%7$eeO?UkN*Q%4Mb_?}%CCUj0i>CC76^&guRlEY=E zca5`7eNKQzA%-cp3A;isT2)&%bAO?vyganyC!#FM@J1^TCjhb%ut3Tw)`_n3M#Ba+N*|2j*kcHV=o zb#|TwL-aC6iyw}wb?d*AzhrV}1F~hnMfDvYBzYctu|BrvhV1)?xuKJgq1({XruQ78 zS+M?>m~?Oxi*8xsnwp{I(19Aha7q!Gl0~mRflUw4j^Nhr8$NTnvxJ+E zBX637LY`9rsz?)Laag`TViGb8xZaAv?x+|z0@lx*?DL-M;BPKQZl|?#%z~-|#48y> zk)o)u=$*)sa2Y&-qU#klUSqFa*3$IT3tWH@n^GF|(}|j#;fq*Ej_O7GUQw9ZcHBjI z0omGd8(;Gd0O!BX1`;@nLfoe}@Pv;vvBDI_q3+*{*S$?=wv;eMiNIG}Qa?G_@;0xd z?2TE1JPl0 z1^=XzJuMs#_Z+l&3QjaoQkoj<(`L*#;{bO&q$Nr@nbhz$hZi%f`kzP3AZ)qsq4qzp zb9gcAhOA)MFXB)_YV}>Wa;m>F&1Zu(+AB4Xj^r7R^tza3#4r>5aG#IR-O5AJfv7W$lCVrkk%7yw%ZtPwY@@E;+8ob^6F&ln>ddRk^7E&JNw46fS4*gi*;v7OeWjN^tk zUp=OSP&3Uw+va4k?QZet!i6xu`skkw0hbof2$#p|DUD5|1KY+?+?8|9_1RP{xV5{- zMeR8s8oh>>iS1hmdhDA;e79(7HEmheDE~#8Aao?`0Y#L*Fll$Yp8lXfHi$d+hv1`FatlK?Ky|1t5`!Q~pi2CMdJ>KKldv}`WNZZ!0 zy=b3|-e<7{t(`*tf)fA6!zZa&(Ix=c$y0~`$u+|jkEa41rW_`B1?**D9t}_Fpw$Dz z=Aa%ZpBt6B>zGQKR{U||eYS{8Qo0+%hWiOz^g9eSg1~sXko(CLp{;oKUuT$WE-!qo zxFU}eF5+r?+OP6^TD#Po=U55S$GksOJ)3(NX56QiSFm-&2;^_LxUS>&=S$xRXG#Qh)zk7JmU28|zS^IJJps zWg0=kGiXh~3gZl#B>zQN*+&IOOXtDnjfN=hb{~w2rR4Q&1!psFeXo8qp3;&#h-UbL z9vFW*+w!OL%$A3Pk}sa&YM`8rWY(-Jg;m0xdF4k3riKC9r~T(J$|Bpm!m8wygbbuZ z-`2ULPf(mZrJdxvcR9SGI$CQ@wv6?BVfwb{h;|BwnH<^~>ixLZ3Lsv^TP1#|lmyw0 z-!k>$9s4Fi;!0&w(F8$WLvdhJ9iQW;Jggtc2a9*_c2vMz8Bm3sNa+Ip`?Vtt6U4AS zB8v$Iw2^Wuva#)Q@p5=WCkT3QsVFp+>yMi(}Gh3^C=Hl`i{Gv;#h!{Ttj{Dd|R^YH^3{ay73|4KN6}lWwQkVc5}xL zmAJ4>z*z~H=cR$^;*cX^A3nPZCJJ)IXema`;^h}s1%kQMmRg~I*_Wh==|4j*Z)ZLZO;#<*v2CMG9;E8d-hLJ+LJbFY^Vc)z! zSD2d>6LcqGqvOT0j^+-H-pMc+{JjXhiLGEU{hCV~q7Nm)Ht_Pmzk!bc5d-M5uOlW* zPI61@TD@!4W?a*2=)C#@5^+F59qIrtS$%}XPBsT#d)p1 z0ac5x;6SB48HSc{m(xK?_Hox!3qX zDCc93GMh`O)NdeW(PV`av5J!gdMd>`wvJK zGp&Jj#wW1JL5b4MOBIBR_C5$bGjt%NV(tA1)*HAtPA_m_Hzma>QLrG;ud|QcyD_Mh z*jYm^`ssG2@ZyE0Cx?;aR`&EgNNOmO)FL`CvTEH}z{Lb?!9+0|@O+C?n~Ti%x(Q1g zs^JQvxg!7&WJ$Iv1&UA}5>-wkS^X8zzVo$R{lJu|Ju- z`_BGG0oNaVd!@NWF%27Tuw@M^iTyjVJ9@t2_06`7(bDYj+R47;)iCb^g} zngKeLB2c+fVrX282!0j!(#AVUr!fhyvE~9^34G#|UO)%Nqd@)yno8}5;S$;Dg$nog z8%2U{$h@Xz^iS$AkSs+IYk}rPq0JGQqPmoi28oJ{j)TS|OWbGjQ!et`nkyTS{&gIT zHXF$xg5d0Hi(z|T^GyX5p1X?S^R1rAh^-3bMS@>dRRAF)Pg$Od*UFj*;0Zzi-h z>D*{=xnZ~GKy}&tn1J}3mV}59#r7pWh)F(^YzM$u?&0CJ9@S4LeNkq2CeM{J+WiMS z7hnxnQv2R*sjggY6a({9W}8=B1gBT?W#^daqK**0lY-nSGBO=|u z;T2iQOR9fo@fbQa)hDD4M9!NuX#jj49KPW)p75*BXi@yCAqcmFV62>~m+{=*o zX(i1i(H{+nt!(tX;QUf*cq6{iinA9Su^D63mKQP+!pyK=NXI;=qlDQ$-FpYziGVFS z@T?eWd>t*+H9L$G*<6Fax!-N8t*QP|H3Ql+-BI)W0s;?kEa_b!UYF3B_*Jz4s zvtkY3cWlPCcU)WRBb$%g)^b}bp)?wTXyu-_@9K5*nMy#{H-wRH`M)3iA_;)(uMd>$QB zvw?qrYj?kiv`JdKyA`~sUk+Nt@)|mS{Ft8(4dVWWhQ|&}F&;?MerYj zi4NLox#D&NQh@t^%8q$ywMn`9C+X(P^P7{*fCd-6hYY2)1FR~ojA-fP&tHqGxOv)B zCmWA19v9EGJippein2>I`o;o!dZqVXH^B9_<>hxpyv!%;R&538sNDCIon8sz$^=|C z9$F%=4oyRM8@oTu7;UAdUwI3XvNzh?oKMTE1DGIZ=7pKxn>=XVXrYyo2|Gv-mX3JZ zdq}RSK^zMf2`!EO1$|NNrifha_b)ip|BL*NS z8Z72oy%4#NRR5&@Y6MG%Y_D{ECN5hW=s~Pq_`U*12@tx@BypZ=t)My`e;0=DwV`l6 zsm*1QuuOEfq4F&Qre6GD%}Fy>^kB_zjKiXROV+^;ch*zSlFPZ`+r}2@>Ub}vHJvsf z64la4){uVYHIH1Oy45fa<$#4lVaFgyUVcgc?BYb~ig|==4LOIVKfXrq{iSyN@24a2 z>PxI2y3EWfc7lZkTNd}Jk`T^ji*=fh2-fU;%rZxH zsa-4pFtX|9V4 zx~1|pA-qfFF?#cXyal8Vqa&M^(tfGg`m4#z~LUdR{xG1QN9`NGVdvB;W?;P0jKe7ZxDlN^|bGh=|kv#3D z4gui_v4&IlI{CMn)r9Gg;9fk#-3%e;tH>BE=D0!4*G#Q*DI&lGIt zQnOeMoP`+|0sL!B+ER| zOA@ufDB5>q7oT+hNS7`%X+1fqLMp*xcNjZ>y36|wV=a+ZDJG#z9Isj-C0^a0LV^YQ zKA=(+W3oUBfM5~nKNIq{Ur3N!>`M}SE8Gj??N-%-!Oe42oQk(@+4qRi+WAJ>%*#vy zU=_bhc7L7u)24d_-`+yPMPEr2VfWYc;3cIC=FG;>##b|u0co>S^FSGkh1@})JuzTx z$D7mt889Nh2l6hX&G+wA^Xw z={l^|$0KV=SqhC}QZl+Q=Ntf1>~pZ3CLL1FU3FfgVn(-M7BNJ`jmf2aw2>xE5-o{4 z|4B|&SA~3af+v=c@^w^YG$UD~YHHJnq6DmPB#~TfB@qPQOoQVs5*|4>Bp!iEgLI%q z8G+Db`vQF@k%5JeOH%b~Om2-epzJt3lT%&W#Z@t}#YXXdlhplOaavl^dH{WKOeRm@$C!6XF%SF=>07&x)y0!Z zx6*(6IH9AgK^+amUScd^H9W9`WhakqyW-M?wCo9y+`LlYoW&{5{NjwYlLD2jT{l<>a)mAO&wTWp+@LH_@ zfS#<;{Rf1RbafeW#Vu7ZAF{~eAg`?wAze|(@vEP`1kFf#mvUSpv5eaH5vu$w@8I4# z+cZQ90G2`tjPG0|Na6k({F-=gn8~Bh6yk6Ne<_pBDgDM62h#+>TX~K>dpJ~Vk`kWC zQY*;Z+)}7uGA7?yQGPuoOHBi{K^MC(ACVFumo*2cuMGit>twwhy}zJvsnD(k%Abg$qCJUGRO zFmVNho_L$Mc(rJ>z>WIW_LZj;tuUTAIkit^w-%7dyN-F%H`e9jYL4_qNqw;G^pe4fYhU}!2`MuaO z4!qyOY9VM!t9NjH4D}rc2#?nLsn*Ba3JOaXL>VXl9d*n(DhK^kBShe*dk!=DsAzCI z!T4`zy*nMrpsEk+kXO`u#g)g8IswTSQLhlOnuHLvO|^#jnz&7w7M&)va+1>Bp~d~J zei5^f?@U4SEiOm^^BYgI+-R5vRb9ij1k-&V_R% zLl?{s!72tdeSgGg8tre1mi-imM|prMKw6t2y`DE3Kr=UrAf&b0Bly#GuHT}v)*u1^ zEVEYcmAw4o@WT0AzoIATz6p-~a*gxg_mFxQR)Ar4%m_sKHfT~stx*_iHS} zY^p!XbaN4ao^aOmJ=F5puO5|#)$V*a7NF`=8&#Sbzh{^cfyU{7LB?LeiWXHW7}AlH z9#a2Ee0>u}lSrEfQ_b?VC;pn<(u1-;>zY3M zGv`tcw}aJE60NqO)&;E`8()wZfl>BhHP6HaX?0%InfN1FjUtOuyxz{I)AyT=Vnq}8 z{V{6Q&A&K}vNm~Eo=o056X5N@W?0|SdXfY!5ONEMW1BKo{OrPC+mL^9NEx27j>9Q* z9JOz~ygziAIrE)jHiysnRr!@7dARv!?1^TfMj8NzwW2C&oB&g(dEG)NB4`!B`vkrWjh1J9B8 zK8^j7-I3KP=sbxK`=l(}-6JlFA%V>&&g==(1QMbx+*UtopH{<{|&n#t{A9`1rGfc=QYWDovrdCG%&>jASYjAMC z+WFG9*M^CBW^26e@*}_p_2hsd)hpfe9o5pu8HR_y+^-@pvYZpDz4kZ5?Un|X2WVL5 z>KPqwIMe-uAeGJury>3qF7+{`*OewG#6uJb{RyTd^#SI%y#1YnY<2LF8xBnsTebEZ z8%EZvJOdj8R$F5J(^2V$+3gW&52lFaJmSMyLb$~yr=2<03sn)LWj^o=?|)2a){W3A zpkF!ZDZXKQ)!bvLYfXs5l+6Saf;KC!xDq<};pbMc0Vu;RW!GHU>dIK$=!ZsEt}FGs z9M3po@b{2;TN9`Q%V1cui!x+YQ2+Y_cU=b5gs8H2gF{|bQzmQ~w4~N?d^!ZnG`Y$J z=CK-pmMA#+z~{qXGfYmhhPbjF_3YD;U|EEVnJa^S_6ZhqUSM<18o&o*IWYm%3L zM~#34FQR?VHiYxm5tH9@viBHLPxFp!T68$DtVabc7KGUfqu=hzZ}f<{x(SPOiX1SN zxCwiYN`N>g%DcI~XIofsc7wNTCqVxuWWp&RN9K^A{nOV)S*vs1MXl>i1m$WF?MV8& zv5oY}39TSIQ^rM3!5Fhn2Z!j!?1Siu94d+h-Q@OipcS-sUvjL!-|eo* zQVQq};@3Yp@693=6qZ7U^g8#Q)D-qwfCL0fg$d^SR-{%k;liiaKnduzCB`4Mkt{Y3 z#>Sz_J6t=O3J)jh2;TWfz;m$e%h{tNQhvkl)F-+8$Xu&BI&`Hu?Y zczmN?9R$a65<6|IRIWmpPUvb2dR`%N&R+3A7K1yCe;}Ye!dV0+u{e{ILT5~WHHT;N zj|1WkKDn5!NI}`A`~rG@nB2MYSbZT!d`0aRktuQ4a%NihE1+tdyO3*~q*3UN(f(=7 zJ4PCi*_SC4m{f1@?w4yH+KZ?Wm3`AjAQ2B*Rnb#6dbz#RgIQ;07PXi;vo#L2XE?4J zZwBgl%BN{jE6?bA3le~9W;O_lji6#SUZloQOHiPWQy03FK3Y^+F~?MAYGu>{_>^(GCSrj0Qld>Dns=P+T`LntNMABLmoiNdPV} z1;X-b7JgmsoQl}vNNh9@q{dr(_)EI+C70m!Cm4Wqk+sA2tkW~8xTb8=r^9jj0MHN7 z9VQ_EK#$ilx1J9i+%s~vhbbxfb{fqB8rDL3*U0ZffkGxPD_gfoAi&)m4x26QC|Tq4 zb%5S;(qSV=RXmyykpY~}2(e5w;bLmB3MqafXcjNG)PykgZ6xU4+OsX@gpRxl3%SFi zw}be%_U&17|Gb*0=H$sMgx7VA(#rzv(f8hnl`VBQysiX>4Zg_fWWxd{JVvQoCQd`mQkn{O~D1mNSgk*ZXN8QLG3A&Wlc}MZ+#wS&V^GLP;9(Es6DB&iZb|_ zlZj!DEt8Abw$$94@6SuG{Xwi^BdGlIe=){wKiHOqs7JCk880WdMXe#Xh48k_@utI( zdrLo`aeDHT2#bEQ%zL~W`AdE>36o~MuHX*WQIo13OF^q-X&J0ifOh_AG?7 zOte^tVvLAIN5mr`HvTJvVt!O~rRF-*QO&l9cufBUL`$8|;idm7kYMU> zD@w1iCCDi)4ry&REi7CetTYPhSJvE{_m0eJG6bo)5&eAU#xUQ7CBj18Cqz2EysD4k zs~A6zFNmZPV}CeTpZ`Hmu|*-_b|owrHw&AiQRw4zet3T=!bD8h4Dm6?Xs!Nt;nwL! zhWZN~YPc<~2(iNEA56vBhU6)=GQ)}6WX(2VDH{l+2PCJp0iQNa9Z!i7(DTGuF3m4g z6(_6gg;O}ata0)NKQKH|D}6tYv$x--7RK1Vs=*6VvMOQ10pE&%tx>1`Q=kkh>XR1$1}|&e)pFVpTtsFQ>6hNteWCl{fI@c> zPDVC4hKW&e+F%CV-wK6HcQ62C^rS}tj_X1)?lZ$WwENqMGI&VQ; zs;+D^oI*Z5_~*FBCy-fue#KT|L28BX;ixtiWl+;I#<6G!uv#G(Nym{I~~Cy zhDrGD94}^On*hElc1fYzd0!m~N$Mb4d z?(;ul)Tq~nP5Vz9RGg<5*#bY_H=8}Sm&ya3`sLb9yW_~}1dklHAV!GeTm&w|!GYQD zt4HT+yRd?q`RpX8V#ayHJsSl;wE%kFS$9(*aXCvBB1~Liz>|-c&W1qj?V~4)Bb)1v zbZ8_!Kl=nOXTO<<7yYjapy{QO>%(q{B2ks$Hd=P`{E)u92U` z;*s2!!r#~Slbt|(D4Xwd@W7vUxMazs5?gVf^W7V6-DTB$W8`Z1<;0ab%{xfKZ#AO_ zhBRm!gK4@3ud)j`^)6o{vGd3^H-3mR;hsz78%r)W`&@ipGM$obY=Y^K{Zy@8e9MVB z#PDlivQoiRpYa))z{(@iCWEhP8#ywLw^ztUZ#}wKu9~F=A+s{`ZE9P8eA6yO#W7sk z0?|_{GkZbzi}pgd<0;i})v${pDHUB<=c+^`U8dP{G|TYVh|#S1sq#hDZa+jeqj@yL zJIKOv&ur-i1IL47N?o5`i*H^@q~T}HJEw#t(Rgun5SAR zTO4vg6$ATmP3Wf60##NJG%rL=|H%%4S#P(Bf2SO zIdi=orlu!-?Ayp#Bl!(GtgP~OOe|l9flso?UrC>;an;?LCkC<+Fdq^@oJgSgJn3wCs za4xl*tkotdB|@Z8hk__g*pod-UhecZqV_UCvaZ5+j8xSOK`cSmAkGR_*=FbGgGR!b zj?u{~HnA*=1d!{z%G}!PgndtJFx)6}n4CsT1BtDh@QzDBQ)F@uZ(IBXB!XfA;1`4u zOo~H4XPG8rjKL}Ws9~CyWre$RHOy4yLNUWO6IXxP_B(7FOgV|*Z@n?o^?bbK;5oJf zXzWP1qZ6-_Ah2yO04v4!=}!Si>+ujnd*@W<1MTx^E8!WS7{u#6-qnL4iqCY1JwYuu z#j90=I*Wxq-?sa4SNhW1qE6seW_z#eoYb`L6B3c8R+yxurnZ{co854((=&WqTJ6nO z9*&g*E=QeU+e@viqy?A#CO=!wET#P(xv$+>iVB+(fnB@Quoziy);<5K9{LMTZF%19 z94q0&l|3f8+ifbEAp*rH%c2oLz=u#Ka9E-rBB=dBhz~3Ki`0Vxpb58wqv0FdbNDd_Sd8QT&_FflVn^fR;O=2@XSHMHuNV#E(b ztl*QfXh{`IOEh%`Yuk`3SqPU^exsU;&L|a00Dp>z=yU?h&2d>ayRhg8rX}&IN}@T7 zN^I=5E#dZ)Eo1T|SxpI5JrR=^tZbrY0M@ggd4_|}>~}P|j~sBL1_DPIf z5Q~`6tE^u+)+S%jB20oGB9dwIkQ*02ebtr%vX86C-NrTLk*!=o&fvoMRp33+2>T0~ zlan*X{g=Q*iK``jD^cs4RPXPf?9P-*pnrmBg#pf`Xx(vd`ofu9lho1$s)5IX~(MO?^Uh95v|s;Z^Zuxq$k|QAvwX3R8(s`b$`63Vg^)V zk&UG3)W}A6y(;O9Z|{KG7-&Vt*m2pF{;{f(mL24ZuJ%DJ;_%j8!X%XPS#q&^yg!;? zFA1|>kh!L44pE8z7Mva3&*X7nUQ9(H6650OF?rw~a++tgSswMLk!@plmT7h;&Lh^j z@qXFvj?NZhx8hK*?exerxO9~#j{e)HJT-Ho^#1tj;rLE__Q|L3eB)dudQd`ksEtTe zk!9gq+UQqO>}$Ii`?X$HzAJ&j<~nho$IChQeISKAAm&S zPfO%TPEQ9p|3JBD#%mp9k$C)lJ4bInAJxurx~voJL}un#ea6(g-*H3P^#K%^U*nZi z!*uDp0Hw|Sk1v3CTkPYT0Y1Rm!}SUDA;k7&+`(twTi(_=1ru>}IVuUR67xLxKCk}cL!K-W z-%{}3lbPyK;fTE;j9nP#f~$B-b2|gq-gq=`6B~3psn*^zeuD=6c7W&u21okzBl%n? zz3IC;t+ji2`!+J|*9k*wcS49o+ry==T-rUiV7^%HP&;TLv#_aGL9w+r2Up+8i>TJJl8d z^Qryukqk=4aK-2Bg_>)ik_G$oR4Eavng#Qdro3ek5G;63Pt6vXnMQWoFD|3mNqbLaQkU0DS-Au*F-O&=7BcY#TP@mbRe ztDrq8O@3d@W1?P_QP~8Z^u4{MG*R4}=ZG2vt$;6+ra-<})9G`%u_h`4;L(&qd{!5e z04;OoV7FN!TA(KMaY~Fy-G3|YumgEt%xbvNXh@@$ssCv|=X2NgXJ1E?x#g)V$;-Y0r}$ICa0lZ_8%{IJta^c~Vg?#;o&`IbJu+&2k^DjO z8yZFMPtUcalga*j!%y6^0zeo!{3Ip6umvy}D54j0#@!)|%>uR#LL0YcMNa1X%bx&= zCL6{@`Z&`Fpsg#j@48Pwfm;4x^SY4zO+RdcgSoBAirx2?{fv!kECCyM0QmV6NRyNT z`8t5CbVsx$+2s|7;TnBhJYHUyWQW+*}YJi17I4LdW3%s@#T=C^Z$W zRaUDR4TjniKIQ~~OaLNtoT|(B$;MN)k@a%U02(_MQL|GUM`4q96^;kQI**&IbqHDY zqJO>)SsdYHRl9+Co|q9-0o?ME;KQH=a-FrV*(0UH^pt|CveYm&f?ngO^(bW&njb*8 z6c=>eM7B$vFKu#)%Wz8}0gG6qX?jv>YwU)Bm!O{qGV+@1a7FD2k3L@(s|`@u%wc|g zj8YmM#yjcH?Movn)?ss9IDVVNTh*OV*~(gvWaO|7Ksb}je9~h-Il;HYae|_odh3Wx z5%CLrKU1XE9~(RmGf`VMH#l!2gI+CIj}CRVmB&pWE)4cFSSjd@gJp@J3Z_sNHCw~# zLAL?mAn7Zt5&YDm;uAqL*qrHm?B%Mk^@)K7_)5_V&htHNEI>M<{2wAazZEYney@-B8%GHa0G{E50V`!zm)>KqHZ%_6@5wfPZ~vMMYVZ zQ`i!nhQ|*$^AF9^uhz3g(@a^Yu7mL!)q47&HV4Y)f)WRpPwxR)RqbIj|KzU{1(XI2 zY%f9^a1o~^m_DhT$BkpYfl!hc7{lkQ=k}1Y)!_bI?t9MtbXDK}mr3?l8VYFhh44Qx z(VMkBm7e@LmGh1S6hWj;Q?FoRQGj`ea#gGrQJzg&vfH3wU&)fCm`9{tfd6iLf&q{!C@;_< zz8OUNVA1HMm8F)qI(93CRC)4K0dcIH5ww)k^s&8#PNQ2KVyvIdh$ZWBimZ*l2JeEeo)h0Z^PAiELtK|%UoTXYv^XwVl>V7 z+tYeFyzN5Iv3C$v`Tkbtc91;oD_Z)@&8=h_@b7^X%CdqMs5zVWjc31dz&Y|-e-FNf z?DI}Ke8gd|ei*ao=MXUciN(`6B*V`ExCvWds=mm~2(j-!R(DCFywe0~Bx_Fo&zRm8 z0-CXW3e)^2Kr_CW{b|{(%Uze|6@De(Qr&;wuqTsXOo7qp7OFV^tytes3uditdT>U_ z#p}wR>X;U$$dMN*v$&x9yFr&FnnacIKt3x>DybwG2cl>!Nvh!yc}zvJR!9b*9U9sC zN}2%lA;EKJcywaryUHgAgOq!)zu*23MQ z=|IdZoN<#ztP(@6RQANHtIVo`k*GGn5k(hUO*At2XP)SchnzjP$G09pO1xAaSyfbt zfNGrMR9ejBhKQMx>T?EdNK|Ib`ga$7{vpgvV~bnb8T4(^0^=Cy#5P*orCoyT9Mb+? z*1!)WhNw%t#G?NTLmt1S{9&E%tsii(V++8p0O-ya^SrHP@@{;&GPz4k?pv92OqL@{ zYLZ27_GXgq?Fp1@_0SuyN+ey3{-?&&C^g6Su%5Z}UzQuyw4myo)r#R6MnpJGN z01qKWF^W1^N~9^@w=oEb1M?CyYY#0 zi5&66XbDiaaNHjx`7C78@3K0hjKd%Oz=e@G8lB}_X=WK&_GBYobqL}CpwjLBRIO)t zUxpo7o>tK6i5B1Ct92nG^!p<~*a2l4L&t7gOp*+0uWc~CFMr^-k4G)O1F1ul6*7qk zdTC*VU>VO1C4kR5n>;ioD%WjZCEBl_b>*5Y?j5Z4{sf!VdUe1biMOK;|84NrTy*Ja zh1c0jlbLkT^Fb+MHB}=h7}FKB_%p@QkUsDzCO%RVUE~S?ooC6rZ9li#NQUvbd-kp# z!L&2lGB0q4a?|7*sRjSP%%V~`1=Jvc>Wr4GU`wf0-HW`@zyV};y&myUWr+rle_uHj z%=3F=l~2i5DOb{0Z9h39V5(_yu5NC%-80KmvZ{}eml2fgz8!-4%*8!WBw2@ueqMws z<7HUn*NR_u`AH!EqsV%$$ps??J8ehx$%Q{)Q zDz_cZ)Sx&0;$!5qteqMAWQceW2{$d8B8z0s_lpa>-f2Z$eMR&kA7?xks?4IjS^BWo zxW0-4!D%5OmlIh;Jid;t)z&>5WUjtlh|8(N4yNj!trZa+S-SiYqbCx*qMD+#rX@LZ zd}15ESaLGIjIR|ON=RDFDD0Iip_#`qX(_^Gu0(Z%oe;aweWH0$*)P8c#mRVrH{_93 zC;e2ix}Vc}UuOQ#S&5M}I!BXVn3pix{m3r&0=WG$0ocH88CF-smb~mtLRF^8MYhhT zWFtyv-Ra(cfZRSn10{#1$O6bEQ2qlw4eiD&taz6d@Y7)uPd~ueb>+lrw?1(KpbyJ# zd70>k?kNUUSshYUbvZ!`7AXn_P!k0LII3luM%>k~n>ySOzxja$&q7q5{Ab3=V`DTR57V<3p91;?&$g7!uy4)qNW_X94Q? zI!^qucBlAZx5eRp!V!^6mc>b4(8*mtv^wHBBz4DFO2&vXX^{9tYraR)x*&qqLY3#5 z0hk*A{7&HD2Z5|>2jJcYOSr*;Xt$ibldH2_2i;l+wD^azj!PYKox` zJN*kmMf9`<7QYzZA{~l4N|lBqSV)QnN#1lA9r4sF_lc*+hFha=i$HkXTGK;tID85s z@7V{E7nSpKgH4fx_7@Sa-1@&_1hcbE>5@f1Qg4NGM$!fTw6I`LyUB-kT^NQnCM z(Vnw-p6<-r-&}OXy>&8Q^UZiP>gpb>ud1pFmdrC0stO%Z8mgI{v48G`KTEx4b~Ask z=Yuac#w)7ir}vlGLV!%NDh}yUp+i%v{S~D`9;&FR?cU%|M!3KQ3z9wGnwZYB1mV!= zUbO78qRb<1vqGCgtx^%>?Bcc{V8x^L76a%C{sr!(#w`kn`$qy|GVmy=&47bRfS{-_ z6#~HcfH&eUvx~2X82^SJga=qS3lWRIp!4W-8u0ac;K|*vxtu-()d!DgQB-oCk0%KM zVIU@OEWlv{aJ!I=T$Rfez^gb-1W@W;H`%GlMwt5c0Cj~|>ko@APGHzd$KkNn^-1?W zO}?Q^8IDr$-OdYFX@cDRN~BsQaYoeBOU+Xf9Qkj~;+9@#`ylKZ} z-p8Wd99VdVtB6)Vvkk5?Ha`FIl8J(FDNZ7k6gRd!Q7AS?oNV7(T(VDdzH8m6U~hk| zcYP{K{@6vK**iKbACx=kO`{0=tj9M8Z46E(Snzas1lF-I90IY<3A=k_V1 zzAdr!J&oA#R48=5lGrDes&3?;>8!(t+iFBuPE13`6iX#VgO{#utxt_e%~g*4!8ohf z*-l1<#b=*<977WDnfTpM^!;~f( z;4>oBK`Y*By6%DC?`6i;j272c@R5JIWDZ*&oQ$P(hYJIhRoFq)nbfl8b&^(CHuXiD zivp6>J!`%^aXc{rHnOyr?|HQ{u7Akxy(pWubR-r4ivlQFh%FruF>Boxjq_JL(c?hM zTg}|7aXf#j9kVq05V)GS7hF9XxHIe75-Z&7UIuit0!Qo1q-0vij-Rth!pOo$x5Cy6 zAQi{kH=+fZA0=A}16SSp%$mq6HroC8Ck%G4JmFVs_iQ#!^7S|Br?p7T=?vmZt_zu9 zPQ|GA_ZC7uF4v$;7tA94-K~xrJ902{Z<3-i%#4x zANK@ad7Nm->RP&#XqC>^Xs%d}ILoCnxtSiXu5jR1yPb$yAEq~EdPfVOd=xAqRS6L} zO$(+dKHFkycal}@x%K|@$T!w_PZ%w$I>FvFk~~!s+>;mdQ(QJHw5|7_m3UR^l2;Fp z1?khTS<(8Py-qX;mvjh-Wf6RnNQ}%{GiX={`1*&Wb4@f6M%Zkho;+WrS-a>@{{HM! zn%=0&^7VUSrnb#@D(l_dOjnkrUpxDywtT#omObKc!todw8QVU`238XMVCTsGVi@jc zK>uS@L0MhWR*`O+;nAq=TqrgTi=eA30VSrZwPo73r$%QOeptT0qR_shVD z7A?alO0nMd;MMy`eYRANc0pemG%K&9-}ScZ*J7|_zZGa|@n|ZT+Z}=?GE|2#C}2>? zG^?YYF14%~N)4+y3lCRKcQ2@qQPMnRhAL(tqg9CIeh`R<+(Vxir$RtI-DteuGp!#~`B-04J zh*N|>0wpy;D)_k|I-dTm-cbC+8nRJg$Do5kz9wnXANyx#UZgSB)6dP3m0Y;hLJ~OH z9?I;vyM2RptIDzO8yq*Y4Wm1=Gv zc9%*m-N5016m40$k?Sd%Pj#~S5~<56=>{J&Ev?%MuM?t zzOSz5bwNv^GQ`Nw9z2C&pm&HzQR9NWZ7xb3DL=|1Yy9E6(qXoZRj7hr^w20G2FFmP z$0_ecwQ``b49wo78Ruu z-t`sV5<&r9q_CIXg6208=o~aOOUfUy%`hUMeorc@Rs2!8@PjDnu*%Q%z;%xwappO)jt4{ATM_{O^UPqAP$ykUk#$u0RGigLlVYC_Gmthj8+s^uL1d6N3smH*(SXnT=#kmtIWF7<+>jreP1mIpqu*&wpxRQtgTa#Oslru~%f z#P4*Wn}jM~8#<|{{YdoJ5p=h!D*MdPSPuWZF&{oXKT}}(k|pEm?-2ylEgV{G>CmLY6qq9OUADM8tVZ?HH7JK6uK!bwe-ut}aLjZ?>hW?Je zq&km_LmdrC6P_lvU~t`Z)S&-40Uy8@)DwO_2>)EYw$o-6z{J)^VJlJMa0Vb^g?qm_ zAyzwnaUYI&bBKIHsvKKV9s|+z?T9*Y539~52K&x-if{oEXkNg^O4vFXm-RMh4*j3y z1JC-;(r%@y5uD?EsXHtZU>b@uYWx%)vW_PpHyNp!eyw%D#zlM+H|DP>m;d2t(shNy zs^;kGq%J~JF42?!W|iZv3=PdBwM8uR{hz=WknbB;?4=yStdnBOLaM(FvVUbn2iL#T zaDyxk2E#k#TC8uTP*hz>J-6~=L$OvPRhE0;)Ul&p?7}HW7h7P?ng4t6|NYt{Ht!(W zWEwx+FyTv3&4Vx^l|EIpeU~`OP%_R~rc+H0%nokqExiwu>#$;Tux#)-S~A;QO-J$* z_Q@9$aWBDdk`gZ!wp&(%KPAQ1BaWi}5xe`vwmH=zI#w%)*f7vdFX`byN89CGjd=}C z934$;1MTPbNsO|BQZ}is+Y4^|85z<@`Ql4E1H-pX3bKzGaLv4XH1=j=x~tjlW;jKi zZA_6-avO|@J4#bpPERv8ekK~Q)3f~EF=`#MpMCD%A9HUT+S^KjHOA2Y;?f%UOnas5 zZ~o)>PDbx6w#8u?&`8(LmF*u_rFkM()JLs# z!-3A@N(mjmn&|W3&lP#fih8{J<17Lg5_TmEwi^X9`y7lEnUGEcNZ#ZJDh2%tjreW2 zHHD(yXi9kt$M{f4F$U_X0$H5_bf-O{N)dLYe1t@SmoHo)d`zof>uQElhLBcv>vq}t z#DVB*EiWT#KH`EXlpMIauHd14NGa03xU-_$44}V& z_mrSXXf?pHQ*^x|?>tm!|LB z0nJJLeB1xW^L_JbSHUTOvWvt?mBo-(cX^FpGl2HQ%5mtcCG~i2dz?^M5 z3GA;)9n(trAWO@`dWn>6aj0#+HD1kV;`ePH3R}ZB(q_SIGp(7YZ3-_&&jW`iBIG!c17w{Cc9h%YwIgo;|FSuy6>2E|@Afq|y|SU(P* z6fNJGDw;2Lx@v+^rtO-o^Q%F&Fs;ed(^O4w+eHU-_NfqfTc6z*alDVHv>kbbbk%_Axv4r=5%0uSb}yzBc=H0oX| zIXO+#<$$ZdH+f}OXC8F^3gn_W9H$4}_*J#%Vv;{Se$cETz6yO7C|8=CgCl^c3F7(343{yL&C33t|6=BY%zuJ zO!2vOhCiBbinLl>-&Hq$M|w*;kkXg}O%hp;K9ric=9-aO5q*_^EUeaiicEp2YQB@O zbvZu#MuT=;{Mq5QotA!$ToO&dGoHmr^etbXEQ}I1#y!-V8|MY!I})eyCLUmM~b6Mb?Bq6!dRoL~~VjO$Gtdm|UP z+ULX+khA!I4ItDh&Z=SR&=trhV<`K+vZK*lfxj|CqbE!nqgZS=##-Cc6$4v5I3SH_oEC0GvGoS&C~)cG!Uh+ogdHSl&taX*#E zS3;#P0NP|zW+AtkysPD2P9pnr!Z@xX9>YY1>j@E+F0|%!>ew{T$IQYY*Dr_`ewRJY zM8Lg=l)uqichTlL?dRX4MV{z-j}tv2Nb-NIjv-@ax{~pyjOPMoxm%Q&1S{5o{J;>W zeTgqh&dq_8Gnsw11O-jQa6+1f-p+t0MsC3SAW5X^F}&zP&T6^#=!@4pMb$tsPo>XF z;#9KQ!?7h!fLpiMs3}2!lYVWr*R6EO?fL_QVVlK?dTpc9(9?apJU<_H9+k!B&7`wT zRU#8i)BU*{NzA)f-ly3Cva-sjs%h`ePI`|m(Mi6nDi9B5onJ&SHM%AoTp$LED0En0 z7EKG7*m=dMkq!iK*>_Dd0K>gnD+Xy64)0PIAD)3h;=jRIYhU9$uw$p^&8A)v!p1f* zydnMU&4+0tU~F|s%8}*~u;_^G?OGiF8@0jXA!&(7pTo9zrvG+`B)5w^e$H#4iH0ZN zm^pl-*F1r@->-k#Tw)qk?49ky;wu<(_S&b_zob^|iKfGq)t=#9mrPycxskn-f;3^} zZ$e%`nxWvI68F3(U37uI+x9Wnz)EPdT>@kYy-KcIQU@UedB?LRT! zKcU#jRw))3CpCh_XBMgxyq+-iuC6N_$X{67k|?S#%>g4rD{2`sKE@;DU`bN`I6vpWE-zC|CRq6tu*ZtRcH=SrB``_z8qS9GI@D& zdnE4ziRdTZ7w%_gIQ$&kOB+Qwv(r-g)}{i<%#6(>M!!M9hUlVOH$_k6Y6gj*prM=U zeah$(`J#=v5o8}616jTBt*X9=6r0SF&qwYb{Krk>rXs)Cqce6xjs@@O0Fy6Kf%DSqAjQ(A1LH;_L2vz2BY5Fr|K44VcFy2!dYk$N2 ziZgIjJET|pD#wSYk|d~KHDuKJS_kXEF7%Q^x2Oxx?O+zS7);RZh%@-PcR39zn zWBq2@BD@MM{-BSzqSLEErjCy-UKi%$H=L z;vo(S#giAmbgMLc9|IDrTjpR@>S4T=597_10z=?8>@h@zbeCj(@$GnzryIr3%3v$6&t}e7c*l8V_)jk?WAOtlbpNHYNoS|Gyq^lzL zcGfHz4d~kLT(>5jal{X6b$a8tFBJYz81mp*HM<)@`P)_iCkwNLD{v8`JB?p9e*?qB z2314xeF@da{2TJtE}EG(&wNDs{ZVA%gNPHQ(u|rIB0x!6mVOQy_t77 zHeXfla>&~65V3u**tSwIbO^+}eodD!LCa%5DK`)?E)|AJ^LyK$Hw5ETKNneI~^x8FT0FB(4kwVnG4ZTborf+X zs;-4hG&*?8Pbc2jMmc;>v{{v*GeC6CVuQ8o=sH#@F%{UO)yJ!l=Z&!hzgH7#66Q%; zkr-N`#9exYCZ8OHJzvn-WD&)9x&0=!kBzn&!!edJwGX{d)a!eZ2SHX5hVB9Oy%Wz2 zv2RDcz$eqNl~Oe#wp&b2)bVX=xPe7-6kl)Q@)K$dZyJqgLd{wv*-0F7Sw0QL7nOO) zAuZ@O7cdyQdqkW-AgrP`YJvl4WQ1F+z5*$F?E)SfqwdQLfN z@y)}xZ7i$31c0$2V}p25Lh~~ZMlR`_nl=^GiplO?Zb3;(PyBZ5)#&1H3DVf0IQF^z z8GaXZ5M65RWqGf^F2dc~!H!>8RL21 zSolR6kN(E@lvKx5i{nmTo%fKRJKawaDU)Gj9H_*xR`xGAW zOu3}`5r-|ADRcQcI-|i=?lyj64p^9lhw=CnxT-R~zc1L>)!Es_NPU%qf@Gp z^&{1w^jj<1=8vX9<*auXt{I zQM3q2AH42W62NhwdAVJM*sa4Eao5H>%!uFR>Y$`JFJ#>5|oUhQ2(C~VdLX-dK zy2DftL8{iU$zAYqd~r2hf9Q>~f$=uKZ3!cP!(Lm+tVu~3o=%{edk0Eb63x_x@No-g zJ~aTlfMQk~+HwfRZHZ=cAudQ)159idO8_I-;3@&ZlFAIG+8}5C?tRNohR1SKXH*bX zHi#+P%B84TXu=d4I2q+T+*5iS7AYxuYxKrVOC752{5*oAuD|b2`ulrVrjMPGg(q3l68CqDF1JI3Ck>%|)il}7t zjELP7As2PlW#LrD@i=!*$*eX`xL3fhM6D6ag`u3Rk58%f;~4qchX&+pN9U_Py6-WQ zS-`HC;Z6@f#V?l9nNWOINX7YpvZtqiOP`~GX`%SOiA}=t3}xJKdS_=Iw6`_EKx9(t z1XY*N*bo6X#Ea0E?h*%U)+Prz{a+aI8Pfjd<;nOJ(_@+eNUduJ!tb9wS$Zs&4MK=bGXK{qED(q%H2#$ zBI|9)LWEWZj~jxBg#;Q5sYt>>4jFgw#vI9E7)(iT#O!8Ht?7A06pt^iBEy^8?B$<02Pbv;+Bk>+oR$n$qefL;AGbst zSvhsKw%ITn!z(4gtC$5Yp^433;V7@fG88Z|o(E=iPO<>f4X_=kES3y35JxW)O!nC( zFWs*s|KpN6KMP?l=0kt!IK=Sb>YW3D=h{bOXFNd(Y!&uZbk&jYq zfC8H-$L{r=towCQgEWGQMh{(2RWn|H+=+g3GVe}vLLsr`)NMc=vx@3o?aa!GFOozL zG7YCrdU_dO2Lu1k#&{>zm=<=XAlVo7Xq6k>A_eei-42~-4LDpbCa_r=2}~>tgzgzA zkxG!yK484Bo0gK`-_>^)%IF@pQolG7R8edQ*7_b~cdTuQI9k>>F5SsXzK{{b{w{rg z>VEw(JNxrC9tqzCUO!D=DnoRzVS1@)LedpKxi)6q`@V7CL3(UYi{Pp z51Wh-Q)MuGX}eRKUlv3irR%got%Q1rmwK1gKud(_PJ@w?hJ~N>glZnWKYrf){5NO# zFF0QCx@mBGfCxyb$9{xeEOY{4PF3!U@EOX(348LF-FSjFl6r8CjiG~V0p-^kOq|rr zRP37{rsR-7Bvjm5+Qh_a=&15A#<}zm9IE>m+BPvIBd06iyNEIvzvpIo41+ro|7~U= zW@1u$e7@@IxMnnyXSHyCDM1#9M~i4;>L8*~a;$5Tt8f#hibidt&ikp3sRYt&xhiy!#Y{!jy{i!j>(&i$X29-V zDag(F5;->qhwz)3wiK;ZOmgae$}B=rolVfPA0@-=uMUlLsAPl78wwmI9@P9WqQtp? z9o)qB^0<+;W0msXUx@aeLyiI<4Y26DMG5^%<)6yYGZ6p!fg7D<)c|o!0bj)am5MBi zcu;Jc0)CVMBDm2_Y}ZrNq9FG`%YC6N-K3;4Ew50>iy)c}&;O&a&a>2S0|U4JE#m#% zmi0BOJsO0>vxLb%@m|eHBG?HAr_Va@ZOpZ=vxf#cO}`T_-~|{te0TgK)~wcga<9N1 zJMLl0_enoBRI36iWMM!~H1rXM0cUoPj)%A)S+Fkp)Dd>4717zHR8OgolKpkQ#eUAO z`qU_5=$!f&K60<+GvK4kph^UV`rF>EDLPC{IIY^&0vw1ll_AgDE}->L#{NvQ2eY5i zEh<~{R;;7H7n25S)~m-%5l22UXc9L~j?g~KnKa*eH-mg3RHukSSE0|Y!VeX<#=KDS zR9}aR+TnGYfS6YXj%Yc2iJ))(%*X7)l=@s5T8zIuu%gX{dh1UQEl*F^TTkatt7(tp z-fL+~EDz(}_cr(4Pp2&>OHX%CQ~)0PL?ca}$N{L{Kq8t@<7((rBrP7CF(21u5$k0} z&=lUhFQ(z^q|eJmvt7C_FPrEhONK@gebql?ut75yu-LvyEMTo?*nTVu^|68)e5|`m&|5CSyudG(zYQNIEi^{C-(817eOZ9YphrlLS?=_LZ`kl>S8S`}VaErQC+sXUhL| zs%}eIJK<5?EZ;Pd#cP+1a5HlC{{TH?IR*fCBa!Fiv|C|H!Zqb`+Mya3(q2DO=D~v^ zF-^ph+__F{>yS;YR*Yk=Xc+I3E#)|VXwdd(#3TFh=G0}_f{I$+)}+CY=7QbCWbYbj zX?t_WIkCliQE)7G6Dhn`O{aKGa}SQRTQYJd%;WA8<`S=Vugj6+sTt9CN?osXI+0H@ zKK_TZlF1FWL7fg)b(QYezP+6jQ$p+TsScVBl*uI^ zgut&B6fd?8-kC+0N&fO@a}|%wPXtu!8C_1|z`=DL8e^^epy}m1S_1 zv-0X}o#T4_@ac8x0wpqfJD}g{t#jx+u9iI={dDodwY&+rQixrDYgG`joq9v`RP)sR zB>I9xml^AeZVs@BGtpQn%CMO(es`xy3;hF44z7hvGkxz`f7FoW@PAbxbS0Tr#D=0g ze3MB~>c3KQ6Z`sKhbrkv_Gf-1okJ+PD+q)hS(Fqba%H zlVqC-URQTei4=zTu(uWTM^HKJ{-{r?vppn!Gz%`FL1GMqFITy=+niAETP4xrtbwE| ziFA)y??QdX0e*RUQc9-zTg={Y{;Au|hdjqJgKS@|k=ytvy zIylhxE8gA1U3B&qZ9V3FKE8q5Bk4GWjh*Kft;H8O!eF`q>&09q{4JyiOk{Be2NQ?b zH9xm5*@c`o)u95*G+PV9q{tmbt;UldKRN|dL73Pgog*ePT{8+vHIQj^Ez3dRH8~m3 z1!a4%Q<-g0?{83E1pQZOx>2`;RivVSW9#2YK%<@z|!e3jSio=G=Q~Sz& zzDtT`D1FgGU_Sl%5)^bYxp#%pcUDgQBmp_p>VUtCDsIghZ{vK*ocKhaUS}p z2|6v^(G-NE3qO{9qu!gA@@AA!i)VW#ESzo0^&5FmGBY}yk{=9C;`K9-CF-p17oegQ z;#=u>ON`+gKJ21u;Nmi=dCX|N43?ZY`YFGsiWvHj+0~cy{LU3wknEaf9LSgTdD;Cw z;_1X29w6rk5dJimPF3A9mDj*S0-AZD?kZ8FxIUbTCTn;-EUczfI5Y2qGK0H~KWiB& zOv1OaWQxXVmDAJv-KN;MrTydt2eW|;k~y1qHB9cm=}r334zRJ2#=4%k(*=*E4(ln#9zh6{&1dcNZVadRx+_sRnwf*!dbTF)F#d4 z)JEW7!yqC~Fes`L7xDg}9mDIkD*7*pj-%UK??-tgf%?%N0S||GMP-cKT#Fl|rNgZN zj>MZiO{ZE`iSUj7H!(NYvu8Sw=k{F2I(#(@RmYgqIMp~*65ZuJB4W?@n^Le<~i@;)f@?! zKJ4QUSz8mw74)E^8%kcj3W>D+ z%gQr-#M0oH8co3=PdQ;TX?v9dOY)@tf~4$Qq9z^5uZJZwH=Lkc9dH^E2_LTzu#u6?m z_dTE*wL$cR2;iVOG}6?4qFPgh+x|kTs!dyG;?nBxOmlrBnufE6J0x)Ng z*Zy~PYj~8nPqHOZ&=tfQNv=`S;q zWcM^_!&`vWaHS8@9D|_GTFvJ)&9n^NAW+ONOCv%v=W|S3V&w-sR)_94qef>8);weJ zZLGiFjq-3NJ$Q#a8?b+{kCqyAk|+Z3*{n)m66`96pmuxGWt>A2pd&B_H8ja*RrOd{za@L9E*Vxuo}) zeaQU?oKPDx_&OaZTsM9aKR4fhR(%uGB`6=1NSp&#-5bV%Cz?A#G-s)gEdGx z+4CzHaBxduQc;UyHh47EAJ>Y}ekjev`upp63oK(X^5+Fl!KY(9AGHNs>QCR2=bEL! z!ZVj7-R!t`tZIWa6(E-|ng~Tj-!^mo_OmsCV6lU$QIzrk5sX`nxkX~PQHUwU2I%~4 zXxRPnC4VxeZIyP|YiZmmcz2g6^fxmYf6B7Pk$}_G*R}c)RkF?z##-W-PG$$rPD?xHE^stqXRGZ>w3Z4fX|Ev-O-x7ox0cnSEL6}rE z=4G=d_k~5%kV-KA;v_Mna0um-O&Bv<&8PBW0>8sE)l|+VHY<8hDO;OgHdQez=Tjpf z(Q3U!;pgI2#X^GZIbH?>D)4a?d%A%FeV6`)BQx~Kvi+So_Q zWWQqnX!fvlfc(*l-n&iii7R%CKwg_Aw%{GJA0rpD;gn`(JRaQcZZ3IZ*NA`r%m)MP96eVgUdTHsT3u~bx%_Jh zDYvsu=2LHR1&L;*PpPD+qcnYod8DevA4Ko%wVO%LxMVXwR$;CrQ2>_QvD=tbvyn}M zYWPKN?c%q#xV3o>dUSF0^(N*^kDz2;aT6$pxfXu#s$&1b^h0EH3z9_k>3+q#-zfOJ zm#t^`{IRPewWnmigbaJaC28IBq*S4wFYwFIMyUtNBCFg&qUf$jbMH6rW!Qh@n?C?@ z#$qf8?<0*+^M()XpGHMp+p7V)0tT{q)8BH7OMkeSQCLdxm;UUOVV|)iks!n`g(JdE*nPXa$k;-kJ-h(mRnvOo2T85F2If-85kcj ziBRK)Avz#jq;>C>1w^KfXj=2f;fvzbL_TThlqday-li$Xc z*E-hmzeTD5MZF*+LU3Qz5HU-r^_PX8R75GHQ&q% z{EC{cM>vHXn9pTkvCj>PzMR$faFJ@T&2l8qZ<63XusYz&$BDtO6p2c;rw8gQ4yZL| zmg-$bvW)DG2^ATV=T2!5YlIPCE`lOy5H3>McO_PkI9S-6!@$oI)5GZ_?%4Z0{p;Jx zo8&fYa1$)^-UI+viz|x-*e);@;4`ss>xE@aHxpI1($cHHg94o~*vHS__zuxE2`RNA zrgu0X2?fhNtLE`ZJrg&lRg`kBYi$43Gdioz_N`NWsH2D8P$+I^moumfPcZkSy!@B6 z={?&`;p*5KWU9?!U zPm-Pv!=Q>b%X0@sK7CW`d`5KA$3Efiz0>?fiDM zR5C-11{?*etMUxb;#Z8z1ab0+c%61Gt%Llv6zRiiO838q`HD zr_kp#;s6S1HUPB#VZi@0;e`wk4V8L__@uIcS_-3p6J{kz@5Z=y=(wiC8}9u(6M&0D zU|h`1;zex2DymPhA)46W&A}!qDZK-&>0H(KR4|&@;9i_NevXonwX@rU9SC2_&ay^N zpjXr$U-*JzJk?DSI*MUxxWdIP`Tca_#as8Q5j`3(^u|vA%>CRk)c{=BgcDp!#OCQ# z$$~i{P~eJ4^#B86$)e1%>kNNxhRd&_mxu~T8h!=${53J%ET&BpSzlM112_oaEpuiA z5YAJ{BKHTC%;SZM2l%>H3i=K~pJ#khqY n9pEjd9laIJITsAF!r}e1R%gE2bQcH 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%0Ah?YB_UM)3RPcX>ySj40ZQ8z;8v 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

8(YD!!oFa;%FKV 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 PAlUG#>6K#LJ7NC=*OS_U literal 0 HcmV?d00001 diff --git a/packages/composer-documentation/_bnaTemplate/assets.default/img/Install01.svg b/packages/composer-documentation/_bnaTemplate/assets.default/img/Install01.svg new file mode 100644 index 0000000000..0a24a3c0a1 --- /dev/null +++ b/packages/composer-documentation/_bnaTemplate/assets.default/img/Install01.svg @@ -0,0 +1,406 @@ + + + + + + + + Install01 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/composer-documentation/_bnaTemplate/assets.default/img/Install02.svg b/packages/composer-documentation/_bnaTemplate/assets.default/img/Install02.svg new file mode 100644 index 0000000000..eef4f11bde --- /dev/null +++ b/packages/composer-documentation/_bnaTemplate/assets.default/img/Install02.svg @@ -0,0 +1 @@ +Install02 \ No newline at end of file diff --git a/packages/composer-documentation/_bnaTemplate/assets.default/img/Install03.svg b/packages/composer-documentation/_bnaTemplate/assets.default/img/Install03.svg new file mode 100644 index 0000000000..154e46ce15 --- /dev/null +++ b/packages/composer-documentation/_bnaTemplate/assets.default/img/Install03.svg @@ -0,0 +1 @@ +Install03 \ No newline at end of file diff --git a/packages/composer-documentation/_bnaTemplate/assets.default/img/LetsBlockchain.png b/packages/composer-documentation/_bnaTemplate/assets.default/img/LetsBlockchain.png new file mode 100644 index 0000000000000000000000000000000000000000..b5996a91c929fa94b3554e7c5543f92c39f22e83 GIT binary patch literal 132425 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

>KEDyx9KSR zJR~V}TLK@}7>@1Ph4wIxC*TbGQ(%CdCg?0%{j5J^lr+?B{tW&Lg4k)+dog5K(sL~+ zBbxG9e9%8>opAnbP_}tx{SR>OVPLV~nJ;4epk>R|G!2%V{kQRnq4kxoApm4l*uerdYAYP-%IBt$|C`5@A<{GPtTve(%5En42{XUyCJD9>9S zyFoV%vY#;h-y24c82mq13`AJ>zhAXcBYuX3Cr38;LjqIW+rg{Im#r^cJFl~E`fpW@ z>*A`HK487h2+)4LvOU}W>X!DpW|*znzwZrSvp~ zB1$b#IFvlr%N5D{iePS{*~C9|&eI|2-@Vm~A{BHzzt}e)&nMe(bJm}!p-pRF!Uu_G z6ek24lZCy5LL5I~*xg`YFvC7WxAHUb9R<7?BdV^y@CyJ+2Jt$IO!M3Z=<0i|Rfao) zk_t@B1kYCH1Y2h7Nv?=Ba8}<=;+kWikT=2mb5h0*!sY?$Ij(C(5!iQRGY=1LaV+Lw zk`d}cb+MaZ{Xy_B*vMaBOR~)>zh#)ijjjPHN(j0Fc=s3n zaeHX&2cx{O$)=iBqtsqkfXdG0)J#5E30GSgQucAE(B0h)An$ntgBc6eqVeqH70?Vu zzd#MrSXX!_80DSZH1}ke&&cqCB+z5=O8>Lgr>kvjYI=^~a7!g6B3|x08mx_iAA(qI zXi|E>vIy$IA`_+R;={I07Pcb%*%HoU#E%&Id=6BJLkxQ)SklQ{l+VXpQ+`Om>wQCL zXu`{x^5ftnb|3dt3=@uG+7T4=bmzDTz-Q0mgaA=3#)LBf_!yc`%>jNT5Y11NnD=de zsWnWcMWLx$A2R%f^)by0Z9dMJ-})$wmFB87c81GTj79{JVUfOpHfsqPpHq9BO&?f8 z)!~{h@Xzcn>cukfycN=xU^?YikSFnxa@vk!-&Wib2NbHFyKl9yle&H64qUZ$8~fHIpKyJh&fC2o>@Jc!iU~ z@L&$75p%Fuzjx>~+(wo}!a(xD8TlErLZn~9>2FlC5@^3T$kBpl>DC(C&(CMc?zn?+ zJT1=Oeeu~IiHSi`dGS7&?@S_E%AcuX=BK%+7`OsRYKKrPj|2-ZgpsL-4A#SfFk=<=Q>5Ze$Y1%t6sM-79o*|75fG&yV%~B;9X^r$I(|=6v z#QgU^Soxn;+~doa?^1j3Juh?Mg}s9pe)GQ#QYgP?n97?Pps28MLKpD=UjlS3O^@*L z|4pCN;zSFjPpY6g`Ve2?@&R-AvmS$4$)Po!Ggw(_f1*L@PQSf0hxD`E|6=d0!=l>4 z|50g0kU@}+Q6!WSNol2&lx|Ux7*b@&0R}{nMx>;XZloJjO6l$pMmk1vs2T3&95~;@ zIp=%Nz5m_cea;^|&t_)!+H1Y*jn7+aUk?ojqG1DgDO^K`ieE2Y5ZkyQ>(j0+dm|nMTJdn{i*nWcea=CD*FAewd!rsJ3 zYwqEm)o7>6EAHB_z0exn-7~ZgoVnnDg)Ei3G**hfN7G+e zvK#TC7pS@SeF~XHS(7ul!qGH$`h^TGavw?d5-@Heyb9=2nZ2y zqQSYZdSr29uM~mIC0_^N@R={e`9fJlZ3+Eb+~NHBXq&G}J|K_1?q*1OJ})x0^$Od< zB>}H;VQVsTAcGY)w!u-E-G?W*yzg(wXZawK397rXypmUju(-e+YV#2*T#M#9=vr^A z_HduH$*vOSeekyYKA)b|&v1KTV`^*otB92cciJ9GzIfY&of2?8BU|{nbpc8z?y|%= z`MThBbo1$DzYOL5Lg-o%k)R!KZ51mtQSID%?wqGFM{p9_i!7YZ%{nhtN3wq*i zJF%8WR~mi=+qyM|v>gkqeviDFfKK)i->5~7rTSGnDzlbIgFr6eS&Bc2_yyce|IbTx ze9u;IAgpdAc}iWB7<(W|?tk5;TIk(xM^TM2jTB+q9+>bG!@denXXXV=>GMpv_REW~ zuczvk&97|(h0n={hx$lS_?vPv)l1eUoGGN`6k$()A{H*Od~1qFNWVdttyO--JEws> zB^f}U@TBWpQ6Imictq@}xM!~z$uO^~A7m}vq!)Yjdc?yM!(QpXuI%RTN`a62>-#<7 z;zP~@UWbgCRJq3}1+%5SB4g+(kv`3@Bbz0Af=N3V&m$LgS?m<{PGoPFH>>CuvTIY0 zl)?-=&vj1mR@id>tod{*-L3c&f;NkK!?i&v}m`_ap(!5SkeMV+z734 z>_|TzcW`MAl!jAKaiD0a(%nk9;Et$FO_Hl;hK)extKI$kzLsCUwRV%y;Yu@rEAh?= z_!W6cLcdjxo4&zmaW!}l9QOxEMhyMn;Z3P>l`Y$2Zjz7hrw-D7%C{#$7QBw{(2-x; zN#-@{T26Fx5;OlfO_cK0vXheflHX!q>o(>)37d=0B2BfT*|aUt1pzk{{lRt6mJb5$ ze?VZJqwUXoUOz`=Erfni(2Msz?CdmKoEX)TfAZr##s{^OF5KS~uk!i&8^-FFGA06o z*eMg4?dqUM0+Rv*cPC{L+3TIRZ{K<-TEQ?c@E+du}P;6Sw@gU(yV9r}kwk zDQof<7PY8_ElJ+l-01fPUj%AyUS2*Yee@BYoM0NwzPA|XsV-@4imr*di)I~}NqtL9 zwmlzN#)-#o?rnmXC%5pc=lk%4-DgQOruV|OHrqK~RBK+0DRA2sUptzt>4I&gyu0e} z0Y&T#le)Y5$Eq~Qy$x~yQF&_>&Kg{sUt^aPW&_mB{9G;>tl9ZZ?-Zd_@6{3D!mthy$h9QI_E*D)uU*HNgg53h6~=I*lg;%Fr^F4-Cr z*kT3h^2=4RW9=E4J=%?Be!kehDmx52MTccR(Llk{R3}y@@daDB+o?Xhe9_O%^VgqI z%mrLwA}l4zrq*pbxG^I?)m>6;A*t<462}QUwFHw}W%ma(wHaP*j&HWYQ{7vY)a||B zhNkI9K;Ob+J+lt!`E1OKQVoAP3ve0SyP|r1vJpE4cmv==r^PyB{{bVC%*0`zw4e!3 z^@RJ|cKtkK?oEkaSF@$ULk8j;tFMDMU$u&z(+#E9v0PfNMD`{&0)gMf+JRL4EM!`w z?1M2G$%qxG>T9|ZyZb^a$n;CblwmyVVP?dJHffqt8DZH*nh#D&z5N*OV}0m$l-RkT zG-(yP)c;20!RM$CYD(kLLByASidye!QES#(*AIPt94am3VV(aDyg_wN=}P{{IZ^zn zzQl;V!pHUqf)`yB1~Wv47(WcU;#hWfL&~SQF3YSZK1k|ed3?G=k|2NZS6u04W~W~5 z11RzLLiW~6*Fcd()#0ww&SHjJ5O#OxO^Lp0#+F^jgTpp|mWxe*md$COp z`eL}DH%W|3ZPJ&}5C4E}>X(YcpIrRuOsIFZ!c`|Y!tVF}6xVmvze>8P;t@mm@GkM!`(8l_QsJ z9eSh+ordhVNR(YEK*wf=9+As5v1y5Uv2r_HS@pL%Cvi6LA-CzOj%KImwy zx^J-mX0c_wURtc)T+c0>W&XxB=QqqkN%*SIjzu6pttTgS;&W9NRjhE3^yR^n49;{| zVJj^ct6?O!GZb3pW~Ps)_AV3OAQ0v{ht!kTE}63o2vwh)yl7uyE`5BXdhd(sSjm1X zaDJ$|{WoRBnu~s~61YS*G^91VIWoSd5~xKhb3(T(II>)xCu|9HSj7$8PzzZQeInDp z&M043V41G|_DbKTOFJZvOrF$|q;B4Vgt~jD#AhJ2jk(=i4RUGn^TL$`q0(p%A$a=5 zMxqW@aLU#;VO+AlRZMc~{cy-(K(>ZKkGzr`ZT8b|cWy6@#=N(>`qISG_ig_vLs z2e>WoJI7u>^zYlYPtw50wO0T8F)_-Zh%oq{}8nBb@Qi+%wLzQxwn+^&uDFzrv_ z>R4fZODB2}Fq~L;=j}$%72H@X($ z5n$Jvsotxb(!k4eitshlRlM8WToTK>*o}kZpC+yMU)8H|U=F5T?7gFQWiLKe*R3lI z^15qhrcQqQMovYD)y`!&*-4eqE-laO%8i=HS_Ch606p3qh^>Ycfgpw*!D5(^K!V98u87lD``gB5INzIXb2KEz9+5`S;QHDD&g$S=@C zi*$S1D?GdIutJ)A zsee8DMjNF1{X+IW^s-^Cm1!ERdrAYuJaFloZSkCFg5`XP=Gq-sJ1WS<`o*s<7PEZN zCDm`Y@6#y*M^QT_2%*@(%G0Us`2%k6yQ$Qk-3-@wtdo|0pGRSHV0~cp!R;zBiMHNo z0?|K$CnpzP-FLjeSiO-$p-YJNgzObcAG-MmWNUlF5<)lei5TQ7t`U5HHu8N=Wid5S zJIhkr3Hv=SR+#)3Yi94oDB8kQ<)reyw{X|!Wm<{itBz!oyyb7IbG*X`kZqaJrD8R# z8`bld^Pxw_u<(!#2ht=HsCL83Qow#d!P0<#K@r;EH`5}vLGB0lfucTn4V36(u zUbj#vo3QtPllntJ<++5oLy%(wr?oaTLp>PIcLex#K_HcL5tj2f<#&B3d<9Eiav;}< zkrQa<33GLiiJi*MggcQt@^K#o%gw*f_B01z*hA`w!w1nTwny7h??sl%3zB+ZaMAB- z9Qu}7ygSJ0(1R&GMWb4+jQgX_BA*>M^yV6WtfYAH**sJ!j`WL2RbX^~*gB07LvPeB z&7EipA_Xzt2v+a^X#rC?4VU64MJI48)nM-@UsnCh{3C{G_ zC{gM9wrkB%8B&TJkrOgTOZ|f@oz>9+5(UjdQj!{?o?=tCMLpU)UiVX7bv_6!blbdS zSPk_NutlfOP-CZTQ-38m$MxsT)9@3TWj7%Jq>6}CQx zie6$|X=_}HFXz0ZKbzpQYe3wuFo6$N3PaRbujn?gL+38zX&6i-6cjO*Z5RP(;#1vu zeGXdu(|(x?V$;h?ZUaFHDd3LaP%M7YgVme4jll?JVQO!C7VvFO)nt8AKk&iAQa$MSfpgw(_`9%xB`&#% z<4W5WdoIS`_IyyiFm-+48g|N2Uhu=ez{)e8{vR%rtN|?oC&LbvWG*#c*3Mc{5>$P* z03Nr?yAQyG8Vwfd^De?)Z0yOuJv-eCQbxxux!f#%#*y-xO&i{X;T)!Co=Ay@=sGhu4^%o`+_&Q-uxw^>;rp zUUOpqRev4uejonD`~3%vm+XCY(GxqReLK?#nd+o=fxC8%i)M719V|cd-PIkac1ihC z7iokdzzS=}*8W#Q(#J^>kb_9e%1a-=uYzx5YBb=ROeMGnL}@S^u4MM4O-}t_b~cW* zu7m;h?E5c-HGx1uRf0`TI)VE}q2GH-y~S=@#&pE($B5xbSxl#)hI78VN)Pyz>JP$y zO<6w!O;~0+Pw! z$2dFOCDf5Y_}K(Gab=+I)N*W$wHcdd2*uwiUDrQlLFoc z&Ux?SpBOVq7f{>&DL$SLKYwQaHyi!gEDA_}rI>@ABy?T5K>$-e@+Ezb5a`rb~? zyY(ukiw=X(548f2xst(&*Re|`ZC7RC? z1lTvsL3l5lnf_H!*nG zx!V8Hzkg_CNx2(6U+|=Z4mMl27o0-+!ZJdk>yyZ2JE=f1>=Xt!{N7|8GtdqrUxd8t zE#jM7fKpJxhW|T?74{0@1{cf!Xk$(4NpBzSDI30OxF4}N*03DWU+m?{mMKI^^{-5% zdGl8cDX5J91iZxF`TFm0hx-Is+$8>oob5l5^d0KA3>A=-`CEqSpZMQJ1<3k-kU6XG z`G*1jeAj=2|Ct&Wu#e#|6ppdB!*n3#?J@T5iwkjI1VWCRf~2hIj4wKP3d8T90_N@1 zH72FQ-Y;iVaa*JZEKc?5r_b_RkG-{lUamvo?c7owxaoe&BBIoNf-hxJJoypZbuKKN z7J(5VjQ1K(OA8NTBZ<1ZLw^Ce%4=_0i-sq~bcg*~EkOxe7NYkP9`^2AnjjUeiijlGJ;H=7aR94-vWc2e3JYNc&k=C^HtE? zo4%lvk^kvuY_&i!f|)i^dFV}!|MI< zlqg=58V8L-8qOkPaF;nlvF;|LD;&PPn-D~$*x4_~qNJRZaJR~BA`b^kmG|1hKiSk1 zo9(4VZeHhU{z;;mgdqrR3vJ$Q6l3bltY{`4HlnmIsI~f82A%)e+gM~a9x~$k>AP9~ zPDsc;k1d9u=g_d9H;FMw4zr7FLz+Di=d_=?{=Zmnz{v05>T!XWT@dNcj`~|KS=%KF z?M*mp9A$Skwi!kkBwW&SXAJrU*M^%Da)ooE@ew^k3y7j5TkZx*5dSs%_x~F%Fu(2< zb=ePpYLs53?h`wyN?>y!Ws~L_@AH;)h?dH9*vQtw{D@;^#xzAP+(D*PDZ8FglvE#n zSX1J|;t1rVFF<&Km5uiYq&*wIilGzrMl6FJ%Tln#m zeQ&z>9~(e;qvsWtsx*B2s92E8vVnsoc*G`4Vi)6PXeF%HYv`y>=sKlI>>84uY&IFS z>7#o&x;3YHO-bQS&oEJGaX>R2kPTvZ7gGgY^EmQx~@#(KWY z8oX^8Sj?FkXuyc0#)u z?r-D^eLdOgkfY(IIM!ks^;(CS#_K6MLU66p?hj8y_*ZS=tNIOGiEe`o(v44Rna>^? z4?J{E-t;r@P@Ny#^-z6xcnUU2f6pJABui>u<(Y+wCYasn)PIijS50KIcXgK3s2(VR zYu6S-oSO!7|gwU?~d&?P_2+M4%@M|G9>mf5p~O&!q+u?!+0>si8` z=)6ujmuV&7owc#Sq|6{fXEaTPR}cJ#;AWqgKX`pst3l_HNThGSKp4gkwx zOZ4>2a^~l`amwqGPfnI54rDKuJCZ}XG&eAo+?Ja`=pxj@%JcrPw)Fl>e)35|wL9s~ zHYzH@)xtLD$7UVhI+U-1G!@Ybr<-D~iFHU)W-%8Ocfl*=vgpoaD5bk!i`*YuCY|hn zow7=lvWrS%{xQ$Tfu-$QzAhGLJUJw_(`rTJho6elu~n?Gaz(o$?h{52WxiZ`xn!ju zd%rYA)Z6@rxf5L+)J62*7$a3xCFVynSbOHzlm-CH(Y$REk9!di56@Ha_>H5y0wmjU zrJbf-#($7Wz{;Lfl!wR^S@q^sS}msu+2x7s+QRtDBO4Q3!_6=HS-{AYYy-RS>=8Lm zoqkLGnQ8AJ;E~!?=RN=U|Lp?Ms{5l9Jro=*I$Jn#Czv6|n~6Z4%Rh+GA~- z;E;CiTS=rKlc#iN456n3Fw56wUMS#5a)QCPp)N#cOnWCsQUOnz)VsF?t^$afHk1UO zwxr#1IPGKzHQ>pvC+Q^?EDX749nQ{4pxopo=-5g-KF#q~u2F)4hZATQ18prhrRhGB z(k2LTYE4Y2L9lYys)?N8a*HIqtn=qB9%~E2_brRFVGU@HDu9Mi zZS6BPB0~WJU8@pqkp-Rtz;eAR*A_s7o={lvh1U>~AJ>CsTxm+INzOARzVKL55_*Nl z0r0TBf&hotd*!PIfX^6-yiLD>GlZ-c0T8v z;{nAq*GljB%6Lk)pUkHI4Z|rfe@H$V+=ued9{7KQgZ?AS|H<5fc&d}TUd1C`aztz(V#mxNeYy|+9K&d>?D z29OCXxdRBt<5<#DQ$~3E&J0e9Oo{Q@dj+Ntxm8zFCo4|91Pg=$Vr=K954F)kz<$vW z!_Mnd9t+NNqc6d4`;Yd9oNNMo)D_S~P2nWRcNm;AT#_gcR*}aQH3;L&YQhmu47+Qo zl02M;T^PSMS1x>e8_Q_q@#8>ekmpu)`KtdkW-FK}E2RxP8+|YAz!lcLuG4@p zfR4qw1F~FVBdc^O%s`Ld(G?)-_5dP#`UzXs=cX%urme#b?)uOSw=DDPvTG~vi77&? zMkyGN`&%8m-^D_vFTGXn8YE=(CMo^%2piJzl5 z`uWk2(UTF+#Rrr2(yBulV;=Qd<6h3IUW_f?w6dkbHDrNWO(gZjLZ(`BOZFlFp8gcQ0j`RGjl6nRhV$Mx{j zJ6>?xm7Q+|lN%cn&evhL=`Z^ggDGo6M&pJ<-r`9wm}m{J-Fj19LGeJw;2qLxZJ%&Y zTTRSLc{qr=bS&T~+W@R~kaa4!Dt^kQ&9 zf{rBLn%k%fT*6a~r8+%Ri4=rSKu!B|U^W5V@aG;K@dotU8x@H9Zj3@kz9*Z0*8|{P zb65$5h-(o4szXbKj`X_BzPpYj@hc{)UBe^YQVqbHM?G^CPR-_LJP^QL(iDHS6TMZ0 z0DGBTb_x=o6_ZLaYRqfKTI7lF?GyG#0m9j4^7hZiNh?6_mNG|VWzbO{0@QO7gHQCE9)_eBE^dWqmL$tDnX z{HncYv=rGhEKvp)E@UW|9e*4MjWB&88V~%16F>9q8jR!8qdVSlifYP{QCc^&7!U** z8rrt@AKM$dt;Mu_PMK=`<=qd|h4cn*>}gXBNENi`KECJudYg#Eeda)izpzSfxV&I* z9^K8KU>He%AePj?DUSL$Dut!K`}|mv&du1?Z8k8{{XI=%Y$@NA(Ry3Ca%&($fBK2) zlYo4;k4uURamuQv${7=_JgD`P?@C(;iuBhpS>0;#Jp&42!_x`C2YZ&6oVI1<&H69Usq2FP`!I!In(cKI=gMDAG4cI9rsq6>AKdBaTIk}Us+!aD0DB%b?w#$pYhyyBsF`c)sqGzi_x3X-#qHK`WZtC zk89dCoy_ifXKf|w&(5f5nyH$IFnGk9=8GOoC;Al%80J_xy6tm|Q(4aQlPD}3*6o;1 z*dePo$E|dDUyat|ZS2@iQzbx>65DdQ8DM)!vtP)E28{v>RABpQy8Jr=JM6>+hTRP` zNtmrLELEx0-YGgj#65OfnI0sTHN=@lWTF9ehP*vqF4uW7CY5!t zJZ1+-YHz`aU@nsfnrZ9#GgDu=VP4wVeiGZzuCjJSxS(?AhXD#p8)e>yIZ2ay9qS|7 z;y@Dy0KQT68x|%m)z<`DNH9B6@B7U$X*KF8;lb;3>N`g#GCZj7{exZnyp^j2P7wN8=#^SEf)vN z);gUJ(xrMub~bhDinq9uAdD4`+f z13&9M4vRotUY6z|_z~o2mno7NB}?Kr-`Y4`d8;oic{!Im@u)?j8Hf0mf@^_oCQ{MV zyl!%`2s0;T_YyqX05gR?8ILl(yVIO%bd&5=sihP`3acFKeX(xmprk9)D)TuLl0)4{MvY?_m zuG+fyoCZ;jfCO3JYY~#@RIARut8goS3pIjs%b?wZlP1Y@qJaz)e0UWmdCKnbCx(+kzW0m?sEeT(>5lT%{W7nHPf{HvrA2@8f{CXOSG0?Pt(u6O-P&Uofh-e_kOyA}pV z##jmQgI4O%jeCu)ac*Dw>cvq8OVebqgD_Rb(XojPMM|VJLKYXC359->AUFW<^>iSScc8@;$g&9vIwCsKTbSU=% zNy^mnAsZGB8}MTJ=H+SrntaUo)MrH~pP1ydznNs=aL+6;hJ%*3#+nWp-@}6SXAy9L zyEpxG7$o-A-yd+q1RwuGRH9&mj5{hD#^@2F=v9s=a%FeaTf6CB+5E;%cMb+uD`jmp z8(!U9bJ~KZqitwdMk5MMU%y^`?~-l_aj9iYo7=D`d0Q@?Xo_;H;W5aa{E>LLu6Q`B z5&cu4#IHWalyvZQmancxCaLTT?{^6*nR6)2D<|VcRl=kCL+D+4hRX3pwYKp?idL>;*IYb@r^~dJU$*2Ry}q<| zvVFXtBQ|(PJ<_`uC#8#zcX0(``gosT3#4k%17a~jJ(GXdIjp8*FOweU4QWVH(Lfz$ z$5W%HT|L8Mt=x~AM@Fhd*LBtO3%H-V>xHb>FTa8Y*BK-&*O%&{2G++V{0@CP?^sw# zY;yrc--b16pSEXvnpahaj*03ii_B$2F_F!Y)JA4J-iuZ(I`AQ0YWUD|I=ah#E%!;q zuzyFCcdi4bXB&gqo z@k~nY^U<9(9!oa$M+zClNlLt~lBK&&5;Um7Y{do|o_1#5h_+{rDsihFi7i_y9*DP% zyM#2os%UAk&kxO9VfcN;E@cbsc(SS8rU6!y>U$eMY%%ttT1bag?^Q9&lBigZ8!HmB zpNn@3<~Ba+o3_4YSC}q*)awY5XIBX2ae38ITe>OAWTn!Js-iKjOX6vn-X3k8d4$y~ z#E~O+Ayjhqz7ew%#y7om5p-eWWj3hN+S0;%FBD3Uc?! zLHYRw-6$<>z^2+82eYlK9B$_2ueX=%Y*6;Sf~K3%)E)DPC{V6o$>u+U3$u0OE5HcF z(9iW=*=VoHBc}1=!eD!R0yb{Zbqk{t#%r0j{@v)fDkaM)=hnVNMYDQ>-q8~&z)k^y zh>x{gRZiV0bK(;L5We&`0kFbJ@epAxbQI8at8u`U-cyTxg!MQqh|!-~oScqI-@ z;pl*%(BDU!sPj#B*}YBX!>pr%qWk&+cuqMm5EzOO?3FTRUYuo~vm4*p`(; z(T2|$?A1gCID9(K*Jl6~%qtbjGoQPv}wH?|KN7-Oaf8v zVGK8q6H7@14N4*aF}bnmB+#V&mYexQwvn+|U*n4cneb6D-DqCoBKa4LHK?vV^mxD1 z%jxw>ghbsP1G@)xlpv+7S1_GZqeutD_g+z`|J^78g-SacXt}7CyyfB-D-DO2kURWQ=j?*0aBZjXvlK2`8j{k`YQkkMKIu0I<UhV$Kbkeu*qZvoC?0T_n{)k$f|aM8t}(n-uBT8_1H+7%@tXm94669 zAJrw%j7HLK5M^eq>4p{w2Xu``w-j>Lh`LS-gN$I?e9=OA65scPK%n4IVOPRa63m{E zV94O_B)EEp@5EEp2BzE%Z+TL~7!ye6Z1;*hR_i=u-2}S*YqVO`lj<@iik(__OSi{; zMU#Z*IKo?$qcW4N9*MDuR6bL1oAuJpRRVz1ji?r;Py>bA8C$}dwO=6z7iYivQ>axl(dRO$4HZuB=CF_S@ztU{*VTFp`{ zToOZ2OQ*i&%3aqZHQLkAi^`{oioh=dw3IS$wgrNk9UQRtfY50@+eZW<+Yvs!m+Aa; zMA$tc$$*~ZxP^a5S4>X8#y|8}m(x>T&>+qf?dD-V)E#D6gQ%Bqe)g@BOFc*3+JMy9 zhkq0ua$`+y8#)%c7|M&t;ZD+8gDvnDw%Cf*rh8-_d`W?J)9HL0`ISfZBiPd%n|ze% z4C<(zKpjByor`;c!8v%+O9VTK^^5dWsgJ`CX8n&hq}|FysWa{TOExnPLRwp*Nt%W# z4pQ>h`YJ8DI&|)s$#%qsMY*n=MN{eyn>W5WX*Eq8)C;yEmVkE}b)~8s+n61MN%&kR z5gl{WQfdOiWlVz2U-@t{0i3+5c)w|gezFMpL$X5=Ww3*>OtF8Gk0>SR?KkFtXfdkn zfN39ZlSmIICN3tZ)j8fpC)~YfYUls~tW~j_;TnSJs~=xWAw1J`oa2IJyo|@*99kUH79kiYMo50wicpXj0vozZd2=D`yQc4R0D>gQ&~p#b?O(w~%gZef`J$=3f?!-!YtczID+?47>_6Gq{S2g9{vU9xaGYnB+CcZ@;Y{U%_L%W}Pg;Vn1!|WrIG8(at{Zc= zL{zV=nR5Nu+|5cx-<`T_jKE2J|H09apyTjV$lhTU49-8f6#(s4eH~U`KXS0S?))s%t?<4JY>S&OSJ%@;1*VtXWgUn4hEFm5S= z*zaJrhyZhoAy4rKWYwa%&v{XhvUw9PTA`MWUC$hx*h*IZ9hj6EVsn1nBFXUkv+lIK)euY>M?Qrd8f$n(UxbSU?&Ug z06Cnl`!sTHuoy*WFRLv8UVfx-gl=tdj}+gk0RjnCYdI|4G0R2PwnyL5+)b>xB{{DB z?_o~q%&6r;tLfJMdhH~%o%c!=mGOdDMf0!(e~m}Gx_jsfaqAM`4aHLo8J`6xpPVon zZ~)9X6>+BsC&gYrqRfdixT`c?cTA1d_3$7Sl|W8ZSIs_z6l!*-=nU&k3ity~BnZh9R-rU@KO zCnDHDtumiCot>1W8~A>3Lg!AZ8j^`1w57V$Dd7odByZdvYO^NBKI^T}H?Oe-+xyHk z-mO}gKN{?r#lK>Dl4JfY`VZhfB!F+vMUF4}5$aJj-jGb51Mm~4(F2mxA_K*f>|EE^ zzxhd7$v!;5>D_t&{RTFfw=euY_GermJ2%Hs``_UIk>!8#Hb7GM{{U|B+MosPB>CYS zk~Dw+&ihmAp5THUFrZ)Wa<)3{6LyJ zoEKECjxUWaLN2V#Mlz+Vs00eultx6bZFKMD07+!dTEy_?Z0 z=^BlRbAyz2eh{zCWI+-bPal{eBKa({w_QstRrU)#vpRk-p6-QY`$=6!!3%svPsuU{=D`>a!Jk1puD9@(L z$pQvj6uqYA!oucc0xo0JsM*d!H20JFaZ*Ck?G}nhiAnl?nI^Lepns;zOY&`r*|ieP zH>LUFyG&j5+hl`Co%#L$_kW%6Fxx#DIYbSw6iQ&D%p7Ro6XDy-RmG-wR%%*!e&y$f!Edwvo9zc2>#8 z5&;PAgUIp5tKgSjxR}NUxNQVx>on{GOiK)q$}E1`AorD|VC^f>G#~Es-44HemSLqJ zb++sG+N+a5Ljr?_?f`S|p#he3zDDe#Uunq_1 zJnK_B&z&>M-ok5vOAdG#j+JCFu_U~I?hG{Jz9dDSZGS%3Qwr5w?Vi0$Ah!3Oqf#2ZAGHt`Hjq)haxM9y?^C+YzDph( zZmIIom;lw1OY7M5<(Y@z#4F2=7&~EJzk(pankTnVcegenjjmf!r-TQ}zVIyCJ0o{l zT_OFyju%GSR7_Wa-4ud(sj+FeUh?glQX@Ir-ISB^KAc`V~(J5LU2l=MY zl8Ui+`B{{N(TNQEjnC+7wErUp#OS-{(syH^#4KjzJtL|31^-CHIvE% z3Qt+f+5Pb9dsViV=i-FWvd-+ufUc)NpY z*VS`LzO#q^0Z7Pyi-7@M5Pyn+{Q+jqE_^7>JAZR88IZwVG{}>JaXpigkBJj7P`bFQ zIwLw#nMEn)s(MD6I9ImA*dFS5FIB=H#i`H0%bhgj{6*vpm!G-<|1(v|z)KO>DV=cw zEyw$2aJ9uSqgN*oOqNI%6=&O&(OHuU+j}{_(6UTR(Yjqx(V`;I5Lr;(oNuYs6eMpG z0Wn-QR;jIb(WdK&r{DQx44J61a=b@(+Xq;XYP!MSR(rN=J?Ug}5E?!0&W)KtHW)3E zW_m6TWhC`<`d7m z^|#fWu|~2pHXMC?q%_m`@%cOO|KSkb}@ z*{_~%K%!=M`5A-9wWbGNPSXDGo2-f_|D|U-lX*@au0QASJ^dE=Hc9!Tm+EjotIxb{ zBq@A{X5*p5t-ET7j$*r=?kJMt>wWxohi{{sOm>Ktq^*v7w~F#7Z1g7fzK}GnD$q(8 zdN_&tC`#n|D)I=5Z_hOIp+7^Cq zhYKFDx}}{-T$0mL9E@>Bj5=(L`O8-%u-gI|ZRPywRI~1RXUCO~ZHF-s-Fgy@sJUE0 zHpcDNsieX{r9qJG(CoD$i)Z@A;e9n;#zjl4E9@mzV}*etS`HD>d%1iaLu}87X6Ld) zcf;Hxs+WH2AW3yyTdqV)CD`dY2#kzMIMKBFk_$ztw^Q3~S+gVB`Uv0Nds0VG(W)W< z)zs^%6JK{jYAQ)MES4p;ZW%`E+6US`oQ@nVL&~S#Z{lBqm8W6EEQfUK#CfN~EqGZG zqj_car!LH286cSod&e_tt7Wk0S3vLAcl9IttM)}@bkB+6?(_A8KX@CRqwuXWR7AWu z`FrTkQO2q9=R2|2RJ#pbNt&yZY(m!G%Mo&}D}I#O(uUJCRv%CmyYt~oFUg@p(-?Q+ zoL&W#K)BP%OKa7L^}1NV!lnE^AlU8eO(W$Hr%d#C-&J?ps8#{X?`=9e>(o1TLpXj= z)0smpnFanvQ|Cy1Q+Fm=MyK-0K|4!AN7I3*eT8-`fezdn=1$x=Rh5lpL^js_BdzL;W|!l;Q>lw`VPEGd>-jC&ca2V_2( zF!UH+oHXyDVlc6ZxR*C9CmEq?cUHXm7nLAGnT0Ri_#lonwF~odit1v-F7+5{iw}`X zmy_ni5LgJfEiU=Yn1QH@av zO$3rJ&rl%C@}eJ&yIjbK?3N?&VwYq24#92`owEOY9 z0kQkQ)W8Z8I45lHtUK&4wBQ6kCh@aTdiEu#mj#qgKpjhc_pYe`Bsd-=S6TN_uAX@G#*?v$q;aM(E<(uvH2>bsLh2xop2&oh}g+Sj%2-)Tnuf z;Zjyu=gj7=impSIeh_rhLLY|hKSay`!GZ#G*=js5y~mk%RCHAUMND_<)!xwJw4yBw z?d1YWx6FSe)NKr07Rjlwh|lI5L(3)FZVPKGbP(h5G$Kcw8+y&Wg9i&X#zu_0%7dNZ zdd~|Gn|)S^09%fmtT?vau}KEHt)a~sN;S6+H8n5!MoqR)iTJ#-RAUot396iV9f=wh zm)%b!IsEZiq^2KbqFtJfTwmthTfef>rT@PeikJ6sbFfsK7H6a&bfaj)*yEQ|b!L`% z;|E$UJ(r__>Wnc~xdSB$7NtarXhRQ(BBa_@(Zb_sO$Sw?ohxzB9UAKP;y%y?`^xMd z<~u&InOL~-4;?G?_k$7LI%LeQ)2T|G>lM~62=UPlNz~e2pQex)-8S71306pyA?lo< z$(42S4lWuqDNKh=mI}|;Sw`@XB>GuPc!-xr%T4UL3u$+YS&R}KK0l69+IXdHLh{in zOQ@9SdDHuA6-~3cnIn?sO-jZ1!QK2RkTq$z5uJ#~T^5x(z6_;yE*EXfAOD+`W=oV5 z0|!(MwCaElRK_nv%EJxID)fqV=IC+o({g-K#8OE+jxI&yvntqQk-)?2Xtc40D z8d4S}WEm_PxF`^Y`>s0xWhmvA(XGo}^A2=-Cb9fmvjxlH24od*=SK!wow8kn_MuPP z5*J12{;%$?|DWl7k5@W%9?6#;*Y#x)opTe#QgfC#G$nF;spvG+gk`=)+6YUMOPy=w z+?o)ZA}KU644F@Gp1q1#n2Cp&YAC<6`oGOs1L9Rixk$1Z+=k9Xslw!2MhGprXakmtMV zNj;xgaZRo$6#Y6yU`UQ~H27&{52;hYF5$;0f+VF$(SjM^z29 zIT)C#C?JrLZ>w_$!0Sap%Fjh^(gt6@BM_?}AdeIs4O{hn6Y|v+x8AoE_>`Zu8H$5q zw3!;fwyp)YQqkKEM`0uk08}yTpuy? zUKx7~v5cO|%W${0`_o;n>URlU6D!RQbNWILS-zP55d(+@3M{;hLyO$&6~&mn+=S`M zTe;qTZz>x3jNW{@M9GA-D7z+*fz}UA_tDMj&z-;@{JGCS49H3^79J8qsxrbAi_@*C zm2JNK7rh29oO(xb5HudeU=rV|1wQrmUY2L`;Pk1SvvPm({{FH_qPv{EXT1(XcmqC2 z4GDJMg}&6-nai^q@EpcMtEk1XdF*mDt^^LQl)NEKVjUL-q~nUz6f}31<0tGrJTg{L zEIB`T*W1v!{b~hZ?T|SfupbM4hL!tUEFW-I{AFZGtm6>&I%rL_enFUVey<44I4n5|AL* z_g@MFEILNgcPeIh2qM)nWW5EM^ix_MKxVAtaD?f7Mu`g%@OU3GF83K9)sr8|rMmEA zOTKK3`&sW=Ztrcg*gJYqlD~Y?yt?;j1qL6pHzJ?NYC4=D=&(swimy#j;7S=&#(~DU z3(hSr6zy)mSPZS~gk*??7xd|yhZJ;0=eN|Cl%lj`!IQuBfI)75u}3duiLN4hccswd zR3*wcw>zqIM+hi#r6hKyMlc#UPptDEk=`rV2%*9aIKop$?o(T1>ozB}emBlCoev#k ztF%z5wg0d_s&}or6J(APil_y9vvoEFKIm%f10_~;%mc6R8xl3e&XVnB!W|RoTRab1 ziqp_1@9>TVZ;2ngSx`SUT=CVu?6JtPzGk-q?zWi3GTXq2m-xH|kqQRlGKHof`28fm znrR9?Dtd7-sX=mvUt{w)c z)k#{m^7zxQbo6`OQUnaM0IOB;Zhr*pofprwNU1YOedULHh|d*;DTPCS|!P-((ffe#J^(J_G?9C>yxY&iZ=Cj2}k2zAk?!1gjHS_N1|n)os$;uQU!x zkxmtHp@VbDydy4dOMs9kO`O*MBW3(|+Q3mN%EYkpdboakIy6+UU*=$eo?w&)pH1T7 zy<;RrYNr(0;pq{oivq5+-9ecS0$l)?xXQMAX{HVTTN_(Jxz~cP{Sv&+BL=6l{r&Yq zVm?=YVzY$S#bvzDfp_6A_B6GHt+~GX&D3{0X>03rb0wZy;v2oPp)><_+(OJGb|!@_ zWu>YLy+j^MFquMLQ0H6X?22kWZ3bs|>>)*$ZHkHbCw%Ky>yS$iCPZTauP>ClCLlOw zklIy2FMcpHS_W`Mg`7@ip^Xg*Gq8)xt|}|mf~F3mG(hkMxRG$I$AZl zuTPl*dT>rsiisA&3cC!`#F}H9lchajFkpi4k>>PNR|~L!uaG8I8lDEzp0J50puUEe z4r^^bS{(&qJqFB@SZPmK7l6Lafi2dKnhg-^Lx)NSL#+w_qJbV^8g)TCYDPe;$BP0? lH8w*3JEQ-*Wsb7xx`02vQ@YWHby^L=cgZFWn3_#t30pj1WXX5EKxlI|b>1vW=Le($XPF zj8TH5go08^$#eZZ&+GZ)?(S~qd_L!%d+PnZQ5I(Utjzq(006KW8t5PZ0D=O)*Pmhd z_nF?&37(j|3~YS>fJfrr0Wm~~{{#SmSwo$h){m!tn@1Z7B6!>bT z#X?M5!z9=YVn1Z^30zcWN#ldE=RZ{tqRypfb$wv)V#w@LrJam^g?auIy^twe$cg`k~q~2sWfpkT9_YB z7z!Bl8T_@h6Tprzq)pUG>K(U4DvtIX*2_k>Jw!JRv)casEQf$XoV%o7oelK z#76SlbqO}r-Y|?_bvRbyPKK++3LUZQKyOXt6I`18l%e_GUtY^#~Wye--0$90tit@5j@ReyfxK-jsGO{@Gt1wL*Z zpfypr`bf{fDmTqM!`Os=oAs;foiOeT>^2Y`uA(-&Cuc!>a_67ccicD6J!7Pmb;jt% zccnfq&+W3*?Ft1Lx`as@6`iIgmCYVvz%)F=mut3P1sIP&{{K)k^5 zt9H?_JMwa!Mg(iZO^)JqZUl;DPs~r>F~-F>s3JErDW;7 zMj>tP_Cp}ojHTv7wc)jW=zUj0LN>cxkxg{km_@28wmb2ex2t?O|AbZkDTQr8v`^FX zYe1}{3~E8NbYH74ZoSm7rcup+WvBgOg2^X5%fi+v_U`VFJbW`_Foj1E2%CAAh?N-3 z!11-}=7>g$>pizT8*#WzD5F*St8CJEG`e=n@g(5zu|@)q5H*jy9xMWdlb^0u_)Fs^ zFF*2j{lvIfwWQQGvVFK9@a*WwV*M6F7(BmBr;A_u(j*3z>o1H*i{rbs!-+Mfof4WbPk9USz{=7rs&x&ZhN09K_ zh#wpXN;HqWEtB=Rf+|YEw?7o~|?MZnf-h=GE`3H~6W?`Inn)B)KIXvDTlxl$|e& z=coCZ^wPQtaIDoLzzq5|hRDmt$CWB8|6SciK5}=nXdrR7>My8E{>wS*OK$ecko-5P zZ|`}#mVt-7%u^nz5;^S9CJ#&Asq6z^uIFmtm}wE)#i6Rlk&U&ww#oG(U27Df0ke9!w`NG^y6HOs^@ zwsm}D%=Kol?^EBzJ)r0rrsW`5Z_X{yU=<_IZMMFk-Wn650(LQ2iUg8Fz9xFw8|by~ z8?{c0(1=L%j&e8aj9K>(F=B;hH-rB0j{qvTdk-q7Qd1CbC#)r*=r#sSIiQ@d?mAbx}%N>aq`u3L8woIXh< z+*s3G8O0R%CZ*UyiCIoXKp?ElhssYQ0XnBL8b8Ibm)a8^`Tdi@-j#-?2By64<5PAb zgF&FZl2md0sG9yGJi{!pFpJ8UYNOUW-E$sOVpNLa<#l{!>0v`M8;$@ylf{1qq5{Jg zc6kF#*QkxrVg!nr0xSO)ix-G8jap^Twn=Ir<>Gnv;3x|cAuJBEI{b>CZ>U(U+<1Xk z(5kE>pvdktDoWOmTwh(8bj9UZ6YTg;e3|Na? zYktKKhBeZq3yGD{;O(^=Hwo!pI9iAaaxoswm~(+!k^<=k7=FHsA8Q5hQDq_hR)8(^ zR#J%sg-+$@)?T=|AG~}3V}Gdj^UKzpT05!`z1OD%X=PkE>dsao%k3o@uL4?lt42SRpKFJ@%49}50Kh{|#{;ua#; zRq6`~B`S}+BCtkIKTezfj2wTQGOgw8#93Ez7${XJ@@MR~IV)9!w$-!s3FK!QLUh_{ zPEDBH7us)WP6gbV8xNe3^)NsD%K}@f#=f}2GV1LWw(&5C|7kZQ9-}fFw zHG^^59u}vKAs4?{QA#onklm9JRyfE+EcN%w7GkCkM}I%7;+AVGLK~Z~(&ansOfi3b z_}}3$l9s`L-V1n|2s?hD0MGp;uPd z{q6F#7G{94-YW!KgQ?u+xU49lml$ZV(a4d5@Sx?TVW$;DUKiWw`lP>|VQF^Tl7#9< zI-YyNFyd+34g@y-4eDCBP%J)9WbmtCets4b2~n-RCOuv=`-k!pZRflosHC`r$gKsd z%wVw^hd1$q;HAz(cbv%j-ZxsuXByx4zKx=uK8xdoJ8-NnjAXI3UT?PRAiS-~-(>~{ zqcrZmvHlMjNi-ADkn&u7pDLwC=7bkf&eIY}qV9Uwmz%*qqNN&m@U-qfT(JFvZ$CzE z)TjJ5DM1TGPV@w}hTY#&u}jH}$F!i-a82qO5zA?NtZkEgHMnB(N6N@J)Gfeb`V_e( zIUb9Ol3xR-N+k`O_~w!{V~?`r#SNKp<`^Uu&s~JX(u3ViI`@i2;=P(1I3#cK9#c$wq1fMA0hS@TSGCyc zr2ulK=L<#hiiTZh6JyK-Sc#f9S{Ftz=EhdRBj?&sJ_1&xv?$cQM;D#%R2#{?ad|=u zcDu#D?cGEAW&XUCjoY^uH_Um*u`PeC6iHa9glnBr)EP?xHu9yedBVM?C-!Sk4SWIE(L8IQERSkY)w&O z!Km*%yq_#z3PZstbh$a5vnmZ58QV}tP0P!#O&8Z#{O75!aC4j_x|@=w8VT(EDoRV; zW4qeJrfBB1XR5B98aPob>&?^Lycg6x8HZ}aE|=_%WSMQ>sg0pGZuw0$4@uvv@p6s7 zrfvp(n=$P?q2m`=Pc`$sbAcj*YOp!jJ)i1bEAp=2J$jpYl(QFieK;v6JyqcPT;P1! zufha2XaZ_dpEXjcK(dkf^M|$H=cUsNC&XQfp`D7@i!ROeL-#vml^y3hxMc)z2dEeK zxf3NTr!ZOTitaak$$GkD>nmbfMy8e>O@AAI9GOV!JvY=Nb{InY>pW%2h;<@UZSIxX zuoSK#K!wdo$KW0d^3hh?UZ1Z`dIVk^4wm4q}j88LmT;z{p%g zXe}|XtPQL9qJsYc4mRrCr29_yl-joYRKc$9{9me;b2GA_BRZH8i}rm{n;dkuNcGd1 zOBvgLm}kSa6&|ElTRm*_;69%GPLfnPTIsI;c^H%G7S(ew9>#^4wCRVTtO6KH!(|=3 zGFFm?-lyL4*_}rHyvt)W75~~R3+v1K`+`P^z5K#hVhbs_rst!09an~aWBiRB+^B_G z!450)s)6O7{AQuKDE`u7Ux{ZE!;y1?WftYgu#cdu&&7=G*FO(;6wEd9Dmt%G>ej4A zM(CMC+a3?=nZ`1x8x7goWBNmuQPDw%ld@*|PveT0eLLO2oVF@ohE0!H&!HCPoS?01 zICp^x%{f#`b|u*GtEqYB(3#ilr3ixTaa%1zdXR*=+yHKqBwV8v6hh;c0I!4{;qbV|2)=F1t8*MVDn-ye$j3@{3Ess8l zapGz!97LZ?W6IU%Sh|AUVSQ;JZV}{S{%uA2-#>;UMmLEcPi&RXFRyb>*vO1WJ6ESG z^-31mJIvNGb*`(BIsd8XJP-ePlEch}cK!c?%(lK)Gefs!>L7lgwODY9udxKt2?%PS za0SC;Y_Yuzh-y=%u=45mmQCQx>-!<07Nk3sglZaNnIV3;<9`L0fy9Ql&oM{sBDKk? zS8%LXIP>k#mmxqCy+m#@y4KBxkJW^Rm1O^ zqEqynBx;g}E8$v=?URekuFoHdx>@vGU)lRcM2*Cv`~REKQWa@i!7kx4tS>bx#g{gm z&HT_10=Ln;xjTX{fS{wE(egreAu6m+Y8l(&4`s{~v1N#dG6`UEgo9T)#~W}LRS^^N z2dnZ2w_f>CHaET#U1!g4s7jZv6{OH^IIbdga3L^pZpIdW%-2hrVa8K{e=9Yn7ZpIHx{` z)!Q{y#QQo@Wy7+oBOl73c){-dV%`u&%fn`wS~wnRYHYtK5}&b=)PBR^7yrtN4R_H- z(XG)FevhVR`&9j{vqOO=0sXT}txjs^obo4zAYY9^f(L|)9>7!c z;v|HvqiuI@i(q@-dP*UO|DW4+f1TO&)O{mAFXp^0TFe=JJ=M+`Vxfhi~k3Q8g9xOBrk%^g_OT8Ie{&vs9oJBx=TY+I#2=b6bAz0g|)g!g@qvS zGbv@=*$qV!eWg+8JsDX)h`4H0G01Iw<}ywqU7sj4&F{7PH9lIOD3K4%Q7sX!E%70N z_R~3`=jV48yc;4{AIll(vMV+Q-@zzggqWM1I#>I8d-f_@K+L5;v_T+9hfDknKe>Sl zt-fE4EMMWEHul>PSQK3>25W@bz4ufz<=lkRk&ubZ;@B8L^N$-t85^ridSx9CXDuh&o$j}u3=_@-zGT%f9c-8EPl_l; z!w<+rN7!dxzSs!Za=l8F?jvt7<3LCytw&^#g}n3fif?hk2h4t*>xLKvOjPFtprdQH z-v$Tj9o{+#v4jtIZufmyR}Kl}rR^CejIy!Hy^ZjAZq0VX4v$3 z9%U|-lj}+s&5~@qTB_o_7w3|*Ix*|CH2t116cvcRfWMxsKx^*tf)!MuoY%2_sYrWL z@$@t8kCDrWMVXN4MIYS@Ztic}>tdHt`u|F)r#qv9K4>g~F}{X?6$4LRRI%mO={BP>qbmp^)>%i*gXBc*5^`d?NJ5N zL}xVxZGvWWm_=gv;T!OtcE6j?gi$uCAy{8eqx}09rStUr{Z9{3T^{lf_-IyPS7Ter0W&RABb7(y{!`NO{=M5-Jmi1!b9;=&j-VXnm}RZz%?%7T zkGox^zib&_25}IXFu5tb&#jghkrO&7c(rrg{=Fp3do&l$|o`LZPM*UQMPIL2%VIOM{5}zTQ;d!F{ABtS@`)?G27HpsfM`kC>{HO zxa@?>Bt!*niG@h>(k^Sg-Q6Lkb3oEd&H1gnkV=p%Vh?JD5Ssa*NR*|NJAArp7DrL9 zmVmm|6w_Tv^fMVkl-KlvBR&C61m`rb`90pa6(mH&n#hHM!VB!(>hd4_(y?^4j@OHJ?jmCKR+x2_Qxk5|`8_gC#E86*xF2hM`~Fw@ zqI>-*MtIs4n`@FH3Bt3kyCSXHr3@;zAS*nwG({^?AVCGI8;8cE$9_UueS{5|0gLVo zV9<RfbV%an#;!KfW23SM?EGBp@Fhwf8Vi`;Lv=tBk-K1A_B6rNN#(PI77oF5(=h z6BZE<=x=F(terp{LIMgOhEatLQZP9f>gL>Zd_gGhfLw}rs%!z;?TQjR?dAM$hafk& zU`Kn&>tVloj|B4d+d{M$B3FIhG^tzIV31I*J_YA}?f z_=-JAw%CZwc}=e(j@1_=U>L3F2Ax^765#}C)WX2363y4@q;E}Q)1iM|G|V0%&j|wt zWKP~Q<5GoG4Y8q(iSdxX75)nrTk(VhY=+Ia_u`6}T!mU2NH5)u&#VoT!=G5Ye6Im% z%LFG{a0g8gc5UnHS&05+tuU)RCtivjD%kQypf%q!Cze0u%# z0yxj9ZMKAr@$64(&%l~0s5&vBY`Kdwaj@@a)v{RLO?Y};2m{IYHSG~lT2uRu$nb#h|#a1HT12=U!@LbgvK zPHrwaE4P#6Os_MiiJ1rZY?U^Qdv2eARTl(Obw#DGjEn!hj!>o(3EUWT-vHCsNf){y z=`N?V7^~T7gi}`sL|DGQo*D>H>K$8&j@SVT1^2B;;ZFaEcGu80?|?HJ*PBA@7JV|a z94plvEG{lF)q&n#ouzu-6ZWM;2rGU1_a3BB7X9i88&9Xsu#0{Sif1kN%cqH!x+cNS zQz$qRM#9=&>STR=uYP7JavwzPU~l8_*&)8{%O>T!*(icEjJvf2Nch^9W5(q0RzleS zDV=Yty{X!*!4g+hx76bou*|fnnfliOW7~bgX#RqDPp^eMKiL;r{^iqs+)P+mobT!s zrI7fpRZ=qCVsW4VK?+ApObWv$L>_J8k@UA=IaBO+CZV7)Uy@mw+Rj<888^y`j`GcU zM5mQ$$-*Y{6WsyT!NrHtiiz?33A6@YZ_UBjt$uVf|Le+F>P=MSRhUknvj#Z26LlI6 zP@a=_A>wBrKxGQhhBdvlrf0_M))-P2(mI)dHPbrrh&?>??**UO^y72Zx!mCEKfqAe LOs8DiDeV6My)d}r literal 0 HcmV?d00001 diff --git a/packages/composer-documentation/_bnaTemplate/assets.default/img/Reusable_code.png b/packages/composer-documentation/_bnaTemplate/assets.default/img/Reusable_code.png new file mode 100644 index 0000000000000000000000000000000000000000..26e9273906f207386c24a0b7f5640272ca75143c GIT binary patch literal 7791 zcmXY0cRbbK|GzTgB74isxYvm4+9{iBU-#M(vaalvt!rc}8AbNGu9dRNjD!-|AuF3g zMz(&(=llEPdSCbPKIgp7d9CO3d14LpG^nBMPzVGnNN?;908Qb*(#6QVhie(v6lAQnZvMDNfQ&XdCd+3wk7MwrK;U8v&u@zL$JtzCtB zG@Mj9A@U$thKPqX`;V>%BIf05LxWf%QiQkBCrE;-WALselP%dV%S*QR6(GyaE1e88 zyYuSem-F-J3vwwT^x!|944lUoeN7vSP+4Oll7gG9!X|MN$^xp~VvyGT92$+5l}_>h z4dA8;7XkxlcgrJjNKH>xb-6aVj$)p)Xj!za4B88iR8XFDU|NFHtK%bA7i5NxMkW6L z)m0U_HueXhX$A%quq!4{`>V+s8H+e2o?vZ@Tz``c3C*a!WF0yqDzJnqD+zev=RNLe~rH+5h6?;$(q0}{uoAaN#>*dTzW1m<+8z7 zmhATsg?Z#6HBB)&KYE9q0XiOfHTzGL*mj9wpZ}4gris4p_84z5Fxi_Tk;OJ1-3PTb ze^7PF!%&BUAD!av!#=mu%*UrzOd(DR4(Z+Mtr(x{2D0ifF35MzC8h@hKw7e%8p$nHbt_YRK-}(Y;!fhLt4=OA zrc@3dx^4w$iq_UK+*xL7I)P*Sb~MYd{9Bh7 zNfq}U4+J3hJp+iXgAq?wj#s{2(HhVV_m|^GqquNTTbY6ng2jte5(*3Bw@Vm@a}E}{cl$TB zb<~XC-0@WkOd=;uOO=t^hsVtGC;G1ORy`mkscT~U-Mu({+23*e_3PRXD>1;{gds}Z zFG{I2uOu;&saN_xl`c$h2Ntcw85n5A77Rl^+UW|8K12=KT;|V(4h@b)zQy@;J?9Sn zlsyr0*@TzNz|cU;`6F733NgB&GQoEDvuc>N$U5iFN{gM*pAaediyyH{!gzIilAjUy zr({{F@z?e2fGh9Lo`_Gl$TwYIdWaUUVkb>wye{WU)X3M^Oz`C3CRx#8i}r32^WaL~ zx+!th?8C8s(@Pqf$HXkar+8s5Rp-}Q0XDW-sZ6q_{*Z`ssrmhyv&(1}s_$M;4GeVI zvIB|sD8yZ^x^zSc6MG$h%u?nUJ$vUni5JEfk?07km11W_5lM>u_O}F)hU=?|QNL)C zwFd<9^HMGq8WkHI^{ytkTdCo zTxX1S6el~p%Ds@R^3moyI}qHC3K=*1c*0+XNA^N5ofDc8k~o(P0pE3!`{cQfn!&i#EbIb z{rur^wILdm-9*7(70L@ND$hl48Us0oC%~#IVgz{gr< z8fD;Eu~%IR7O8lcm7Fb+i^hEZme7XtQ69Wmhk1g+MkMK&akVaifzt)W1WpOkR*<+} z=LyTUtb@~yh}uj8dz2vJi@A<1PZOqef`*+~T?&?{Bc5q84GvHDdBPacUpq2;-=4Ei z?p8STGr^{}mFnEn)os2BV(eqQ${-T0caZxYmdG?HHmNbXSiyy5WVa$qFj0?~cHmJa z`mI)tRa@YilM8*4cEC>Oz&k1U*pW#SFn^;t)$um;NMWOBIy+N3|39yrR}Z+MFbSya zf8Wu;xrtDpa03JHNW`<}jxEqUZF&pd-o{EJIIX6@LjBhVKbUXCZcUzc>}{q_4Wb@Jt_{oF0><{>tkPQmpWS-(k!C^R+z2 znZMA8uUp<-n%ot=Cim}St8kr;6d@Su#+sjb4Vj&BTH*LKY&P6Bt}MlI@1;7gi5J;Z zxMR<(V6CCwO26o;iDgTh>F)w&xkWeFNBFv$xnzMkaO8ubD zBsMsXGN8UzLD3|S;B%E!{BX|cQp9M1-8y=W+D*YEA$YrfT2^a+Ph8*p#SZEdratKN zrk*SELp*z-pMM-3p*PBRcvCN`sFmm*B-Gx&GdFW_iZHXB>A9NG5d;oLShch`bA2Begv--K z_I$OV@Kv(+Ic8S@Q-)&$!?MHTeQ4;R1YX*fpDJL=5;m7N=fiGp)n8NoDH@7PL;x&R zs^46;aUd${`XD#l;!?3EY|RZ_ov59k7>6?txHj0Fxx1#p-he_J!pB>!@=eiAZ(S~M+j;BQ zuYCWK!qO%-fW4kioBhbO=z<(7DkdH2E^24YcpA&pkGj;Wn^sPi^L@KvN z;B@6}`kci{Tgj-~_M902psUdtb&hUuXldSD^wCUN@)^&v4-j==8B3}coNr7Ox^wy} ztK1>`4(TYGwInN*F6tJ434l0EZOiD4x4$erZ&H>IHKx{-9V&7#=`1Sb=NbF^tmBA2 zWwK&4Z#v0NkGrH1q-<^j#NbqzQnq`&yO9wJAJkQ=gatsRX!2y1~TzAK4^6jw-8=QCe8VvXJaTvfEpT!s>BMy4c_BiMk)} zcHVSUjTo2>$f>yrd8{-cMpGkJJ=vz2JhtYO4}UgzzZsuQM$E_S>pO(4>!^gdrdC@) z33Q~sT6XCHWpuPAAbjA+s9jwITtX)?6~hQY<(Gb<)X4Y{vX~(~XPw1}g-T|usNXPRSZL-JdIa5z8V&|5L>b@)u)HLb+2GPSa_-WKyMb5@i| zmiaa~hW311{WoaBhYowgjgs%4tWBEpt8z%NpFg(s<6s#J*;SV}jm?iis_8s2`L=5n z_{G}Ub9BgzU|C#(toTJS3rZDHmEz?k{oUQGNYEbFJYT?Z|^4%MnEIpg0}M za0y7p=*%G4UV!VJo4b>x{30@=ORD<*-fCBh6U?!hC#+k2Rb|Xqg>Or%+rr=QS$Z3) zrTOSL-GwF@5Hp`mnWuPWfx4TvIPK>WRL!@4EL{}@{i{C%GVJW#zRCHpmwKi7iuy}Q z_OE|;*`t7qDfADspIk*wmze{5)PZ-*)G(0xe<$ub?Q^bYHpb{cOkpl`%e+N8P58|zUT6nW0tVJq!{&7-)`aN}F#OTnSyA=GB-&BPI zLb|I1b^=cCff(3j|G4K*syO19vh5H9J-=feH||x&hyFfYCNcCxM%BUxs|k?y1#k2Y z%c_#wxAnuA|8q9M=-jl$tV?I%#%h(%u0ZYO_{8(iUN;ELN=ML+bQiC}$YdhV#9#jU zXWdJ;*%xN=ws5-QpSwf6cUiyQEeiM`XZG=ZgDkWZ2+L-;n5cRVX4cQTMWpRnb17TG zD{c(ZS=CJ-(%t+FYKJ1Zh?!tut2(sa{EgobS5%MeNvDR{+GRty?ORruGL+ya=^9CK zqQT5RKzNeXV2rq}UU+}+6i;tAtlfbgFlcM~MlN4l*TRC4$&1V6>5&nS!Kv|8q{j6y zFOH)C;ZM9ZGVbQ)y7lt!AIHzI_%z2+Tsq2V#YUq`E z$6`O7;wL#WR_C_R8AkfYd?ko5xLH2ESuX0V^}&xZSnTy{l779XZFKf-lU7dVfP1|Y z#z(c-4VbObeE#~DnOF=K_1A96b;fr26dwaL0*R~48l@@%NqYMRJ-h}t+`c6Fy(N`3 zc_s2@KR<7oySN|VSKSU=7wt<07ef+E=e&um{=wN%u16LwtD#E`8X6)yuZ5t&3iQ;d zs3FKb{En4iOoJ35U2>95@@aW_%drQ+--F%^AL)l3GzbO1*7L6_(9ktU%Eil$*0P&{ z*l~L9#pSoUCbnHMGU&`k`sk*{qx~X2FH+g($60+9ETnZ1-4Ka3#T}Y|JKHlt5m&ii zoJkZivKEhwtS9JpM>#VAsyc8?R{k!@I+;6-x`cA!Tg1^mjpF&qM8*NvdCzDM6Pntk zV-?L!sm-CR?|D)qc>A(j`LA2WDhcmMqIUOaf)LiHepfQug2O>6@Kh>t#hd@RD~r^v z>_7Cee5C8xD$_nH#_4tx-~MxlOdZ$OJ+bKk7&akLWCQ3wBYAQnUXFgcPM-4R)l7B? z)5mQ2>=$jGwUO26mKj6Ag%l$p#l)h1ewLsI!yDTInWltagteKqvtx*iC6bY;u0~Mq zA*%4zBcu{S6o@c?Ch9IXo-Rcc)OYe@g7wd8Emln#5IIETUQqxHIs%0!BEyz7D`^4r z0&#NKi>JyFzm&qVa=34IcnUG1jsAT7jR8G^sj~Jtng#4S&Q8~-QIHEUGOp(VW+<@( z7JMqrkO;OfFRZxnjMX6x{dd224U=E^)TS==bK*q=} zjJDGi#zz;{4AJC)mK$nao?~QgYnb|8i+aClzbHakA*LWN9Tzu)7Me_+`#H<$m^1P- z_HAlKt|%Kt z2F4L(H3Vdip{QKxhAPBI3uhr7O17;rp?R%u@(im|=H9uR&GN#yV!S%o2M9cJ0xZ;J zf=X$shzI_qmVW-91TaE>tXfDKmNY#l8t@e zi6WfZqedIZ1WgC=eMPp0qeC5(fp*tT2)CMJ@XTt$7RH=cZea@jzO0+kp`2mkEkG6< z|Nd$|ny#+SLf5SCFEO6chR*`V9t%oek7EkXTn9+UU@(IhOYuPWV%2o6g`*>kPaC9s zi&UAH&-3>Xo{McBB^Vm)(-V2zl3SoeKEvDA^1PSm7f$O@D~-~ZAdTB_V8gr%wWPjV2Y+~^&+hL+5FS9Qy>)64^Tk?`_87UFAAaS5hW22rwOnN8)21-* zVQNUQ`sVs4^3hA0&O{Tk(e%lPnkJ(x;Kleor3!YFYXewJF+>=@r17Ge z2G(aK^x$kwT(Rjd1f(R-!LmH6$_)h?8Tnj-uuM+}F^{2c4hD)nDja$3G*#Q!ti-`& zXzv-o-;l6x_^vxs)BZ=cX4AdYo=3*zw!%E5qxTKhg$vOI&$z>4Q6jcxDJY0yQIMm8 z(b3NQgCA1v`)|Nx_5~vWI&q7GSi~F5VX*bhx2`=nSn) z5&Cg7xXJ0z+spV*3x#ek?sd|~!L zsJHS64Z>+LKL{L~jen_JzEwTc6#p;{XMQA%fIi-T01EX*2T~*Ot#cw+xmMd(N8O5R zglfE|ihRg7$cJ(;b&Pkp!Q(n<+N!-O47o&v@!hs@r*yMCaB`k5N@ z0rfh;`e0F>OYXs91YSYamn$H>GIOaNbO2Gq?C^H1m%m@4?>Y0_L;st=);UY}nWl-+ z=;O&e%ouO^!+m}yVGB~);=B}PTDLXR6s#4XaJ-Dc(njLuBPSh;9dbm8_T>)3X2p5z z*O7_J2CWT^%{A^h@{)@EomVW+8!4@W1L=XvZLpdg3%XWx<$HBNF{}z5N9_;Wq8gfc zDdOst?2J4o@jBoFBhzH5;6fib=q4rDe7!b6Kur+lr>S4T>05zvH@$+N_ zN(ZFpA&@V9>F4Od5`PLo>_5B^&PZ5#1JS|Y0w&M=HZrX)MJLL{sgO``5BxxXX1Fd$ zGCg6o;x1do?p#69OOvycMGmUSrCLL?mxOvPNo9d0L7w-tKZ()=>W>+Xpm5mi*d6HO z#JB~NPO|f-Oj@_2%G%%lM2|Ysgs(U@Wl1i&i_{XMC1pFGhp6L=P7Se_CIz+VsefeO z>oi>|{i64upib@ne0%ai(7grHSVn0_nqDzbzrt`& zS;CEZw^pxj3<1rmvQn7+` z#ak8Jbg%+w4V6dJsYt+XYeZUv+NQXM@rRRyt5{O2dO7wUL!fY*2damhw22Z=%msi2 nq>#o&dM4fvR;8mK{t*wZ+Af~Zr+)@F$Pg_xJ=H4Z`?&uD9`3{B literal 0 HcmV?d00001 diff --git a/packages/composer-documentation/_bnaTemplate/assets.default/img/Search_Icon_1.png b/packages/composer-documentation/_bnaTemplate/assets.default/img/Search_Icon_1.png new file mode 100644 index 0000000000000000000000000000000000000000..084a39c40e792c01599ed0822e40c1ce04d6e11c GIT binary patch literal 810 zcmV+_1J(SAP)KBgM&jBJP*6nBDkw@(P!RkB z^x$0x_y-8$QM}cI2;xDDp1f!xsV$9`fHsX)N^44uwX zV>a9t0719SeMV4SaCo5YiQb(a9j&`<>bVslo=onrO?ZJ0gZQ%EOPu6UF`Sx+lvIkU(T^-~l1Ig02FxL*I#-Q;WQmhJDh4ya_Qyp{ zq#FIm5+`|745!&bO6pM6=tpkhnmj57GYE`e9oMP-sjgLr)nxJ~9N~$_%a>Dg(BMKN zr}j^zQe9q-s*d~`;{rJ0y_$?L&ZwZNi03TL7OQ4|XqSo8!8JSAm_=f&iC4eDkukf* zTIV#yCxr3H_N~V=nM_r3x%XB8Qm*a)Ks*AQpQ9{rTs*&V_0n)UownWNbp9uRH2VEV zJJ4(Nn3nk-$4w^&xj$2wydyc}?ioND{p^X})Ct?N-r%SR0B5&KQ + + + Search_Icon_1 + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/packages/composer-documentation/_bnaTemplate/assets.default/img/VioletBlockAlone@0.5x.png b/packages/composer-documentation/_bnaTemplate/assets.default/img/VioletBlockAlone@0.5x.png new file mode 100644 index 0000000000000000000000000000000000000000..bdc14a34e79193d41c011f5cd0307275f6200c61 GIT binary patch literal 6149 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 VDZjpqD--|#002ovPDHLkV1hsC@Q?ri literal 0 HcmV?d00001 diff --git a/packages/composer-documentation/_bnaTemplate/assets.default/img/content-list-dot.png b/packages/composer-documentation/_bnaTemplate/assets.default/img/content-list-dot.png new file mode 100644 index 0000000000000000000000000000000000000000..0b71ad3068a8ce0af7279a98b1492049663d9002 GIT binary patch literal 99 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%0Ay4xlTMe+ zbGuyMq!n82#VS{Xv`M!yaq@;01hPh~#{QN!yOv>y=wH`#{Tf}8J*!~X z5{uX$k=2Y@=O9r7YGU-b^rxo(yc)=h83cZ%&RgRhiC7x|llE1Q4ZrRheEI_{KoT7{T&fkb-*^|8GIc3y_#uIL^Zia%ACN^oUNAw_ETQMlO)*(5?OF@+)F>N zz!10#FN?%3bFhydg-flUfej4A&V@muPj^$!;tz@A7jE+9n{kDzl%}m8faV^#X z_n!y*09=3g=dCzEECLzIO{M{dQJhe%xPvmSvG@iQj@W3-KW^M&a3D3+7;Aqz%Qp?6 zkfg&`{vaZv6X|kuHGuN-HAGB{^;xHuON@gr%!*G!{8~&O9KQ|mmgf@w;mM!B*quji4oFd zw;-;^S&N)tBgc%|)Op)Gs1zi%en3K;<2EQ`aanAI0alfo$^Oo9bXkxT!dx+Sca@DFFW^& z8LoTqD97_w(YJLpfWGV`EuRAH0V7Uz;JI{d2F7Uf-_QYQPS$+NGteY1CWet0)k(3ng?gFPPgW!IEs+7Y~h672x**+v-qtnEJS zS>&J20@+KApC8$v=`~)Bf30C+ge7s^R_#({^^aX~s>P~lk9TB>f|zQXMuMQglAQC? zdh@*QUk=w3VuBEG|9!aR$`oFzu>)c<<4mRONERCezMITIoZ2fQUXWV^dsP$qh-jN; zhE;2thQpUFMk+lvVts1GW&u6{w1LdFp_^v}4-NVUoz~S!TJe@v4zY~Dn)>>%8Ia{X z4K=JlQ8>kHW-KbR?~4-q(6U95AyzHlK4NW*C$$yhFDmVkWn=_~aCJv*9K~Qb)z5j) zQwCnKU?K4VHnM5_@`r19VESgE#!(C$#3bK1tjs#o!tkKHG$=pZyzVuJHEsOEf=w_e zuAVfS;H0;@qYZOI*&f+(Z6tXme-!et$^CIedV*hUsM^-r9+Nr03UN~nj?A1zBYQVUR!^KymKLfqVb(K1WuJBystz)$mwgK zJ)Tkn#;js%a8f5y=zXm+=YE#f_pFO*4i5y`D5&4 zwF1w!$Q#XH0wUv_aO963k>f(|+IN!Di&Q(R?k?vELA5*zrF=tu_&C(a5AU(G&S?>Q z)y{xV);2ifZSWJmkY>E7%rnvSjoPd0#%XySGlGz0kvD-TazHBS!&Ny{d(%85fRfJBx z>szgzE5NV22L{lF=^7#yTs1fTB$8$;V;rv@R^sC|&ekNCg_`H<_tg70f_cW7McJ@r zA2vz888RIf7;i(Wc*a;**g_A(c2=l>l9U)=PgX41Zd(%0lkti*h+Ddngr$qc;4{!u zL4yK!1*7J!Qj}i9xPS;+XL zjZi>pPSGFSZ9H3ODN&AGa||K$$^Ud_t~4NjbcMM;j9XY~6S^cb$?mw@3I99HWt-o4 z3RfAF4m2eKl6xILf3T7EPHgL_7bm2oV0Q}rDj?R=QPVs(TVh#Njx~_ElWAro*+^&E z%=i5(kuCCmyrchclcpo->X*A^wZtLLLsk$+HYU&~W*z{NCG9e#w^aw)`dnw!*MEs^ z^9;P&vtgH1rjO5pTF41^P7xQF3cazigw$?obv z*CL;OB(Z5NNmep$d=z;zr@v!Mbl^|;c)Lfw>({$(V^3ZV(0QLYvBrelZlYwezru#x zEj^aDC*Re}nhY$zqz-l83;?d@uU~Lz8{ECL+8@+v@-pOT_B@sFM7~EYt|!(u;tmc$ zJN2_QOAqNu;abkDM5L+x9L_$$Z9J=*6u`&S2pLGTAa{KjZr54!S}n#~aRFqA%#5WM zwCi?QtP1(Sh3v`T9AvjTTwCnf+#+B5lEUzCO*sdgeZQ|#Aae1E>S++bR3M970YjyS&bfD0*`U9~9K^stzuh?^^p z(X{z#HJnohdYln3b9?r@n9lj6I;8EHZAU^k#JxGFxrLwBJeUnL;;zd;O3dx!yquf% zm{6{y2ab`q9F@5(EP!wG0S>_MWu;)CyKwW;2!_XvcMwIr_2m6@)hK-JZ=?3AgCZqd z)t5oZzzs?WdOXPGrMV>tNr4SZ?5%dn-mBw9pa})KK|`cRH)H@HbLN_S`uUo$KPIwR z$SK!1mKkOt6+y;a0QPwNUT_c_M$Uu@cRV4>NfkygZ&hq(abp-Tw`1Fgs&qxn8@6zo z3<+XG4OEnrX~cu_M_tH@)%7q2SnAaKnxw)0O+m>Mn`%X0i4FZ z4}M4xGtY^Or96U;>=u@9G*$K_+r>8pF|_X8mKQ0l>y>#wTiN)C4!G}KKTmEr`(p0K z{w%cMIa9dhHnK3UkkDZ4Qx? zz5kKmWbgOsG~XV;O7i=j`svam zPcMW^4R5Tx->N(wML@L_zrj+CJe`bO0>wH=K$saPP8IZfJGXE$m73)8z0~NVEa8U{ z@PITe5?=8vpJLk5-kOwJ&IK_;N#dr?zCFHwdI$x8%WmYTQsshq;OP4Pax2UmjU9%c4=(Gh}zq#p~==87B+dRD$0V=-UXzs<&m zZ1k@HhCLojWc;FK^Hb#B8R3M81U+7IQUJB;lN}LaSUrFP)VqY7jk`2i5(bp|vwiO{ z9ydt+Jl(-7bbiu7e48>AbbZ_Xm{tbSkLCr@ENwQC8nP99K5l>C=f{RTY}ioMpp|E( z$TeqCZxGITrYv}fReTm&Uc!7y8g@(x%zB8lV&^Pf3$2yp4Ct?sn8XP3J~>}oq-*g zyo&R6w5Z1ZYD!@-9yRphwgsXxAG4oSTgpCZMYPgK5V`7?3P~Rg0Q_(wb>P z>mZ358>k`6D)uBgsH@55@ls!bS3jzsQdNwrzx$6dng4C8Me*-1=4y6DKdhr4_i|ic zQUYbgqnfv2)>yAl)l7+!#D-AJSb1p$R!R#DWtCb&f;>>cLT=bm6k;zLkR|i;q&MYd1 zpdP*3rOFp$AIR8hDree!P#Pl=ot{2TDp2W^c|}<+9|?mmSssH*;(sBc%uPERB)e99 z*9Ib>bvwTi_qKCI2L;2`=erk+vCk-g3nCzhJg-jX*MzfxAuOqlF6=Rh1q742jk3`U=NX(EZ*7Jz;c z5pLo#Vy-tr8m%%YcaYDAWKf2ws?(?)EC~#FXMeXzx;mWoF)jUQLrf6bp`v2!=44lC@-i z!Aa;lm!OSG#pJK;Upz2*?clVM*q~pAgU*a7AFrdhetawX*+B->uYxI?FTXZWJutfm z)!iK~L2+L}FS8id94Yw}U@O3*n z&wxdIJ=)5BazJ(jl**F%y4!~k^verADarO?Gx&5ACG@O1Ig6o{HGyfaPu^$KCP^jb z+L$9(RRu6eA9q&>W{44p60|0uU-oiQuHlNKH zo)WdPqghw8Lj}MItNHq`-^eYe9AKd0j?FuMg`*>p{1wq|{TANc9Ex~XX^H#Ng&~2= z=CM@Vve#4sk<2 zR~}$;tuE>)c_wG+j*@_N4;x5wYiOL5Lt0cgD=1BV)Ypc#gmRm-7Jq)cqKybkZk<@g zX7yu5Dw&|Ah?8SA6|5iSNJ>d0j*eE!N^SzJQw|D#t)-5?VXktHs%v}*tN#U+c2SPP z5_lyJksrhKm&`d8u-F(e3OR##?w^5 ze{{h#)RC=h^tUZz4kXG-M(5Ogkr?J z^{A(!rt2m-Sb~kQWtNx22s0Xp?~5t8XhT~`;xGPmJ~Xlha}+<(Z@f=5^S#Qz0THZn zZ2}8;tVj7y_iT6Ejc#}yT9gpiGCp!P0U9_i9Gq*E@HK(&_R+G~qj7%m1rIQiC8e(2 zyiFN2pPL8O1cHH#U%Y`m5w<3S%Syx6A;?oM)p_aB-e*4UduHuoTu!q5GcyBo`mXCf z<|h62JOg2^#VA?V-8xFvADCH$XunXi!o$qpxwu$SrI)D@fxT$;2+W#Cp?+&UtGAr> z&FNsq&5t3Xfu;t73B%pP(=XJ7>WIklB6nDIQP^8S&XO5wx?JdV^#o@NYOq94R?-VA zNuN&@w07|b?0YL@0t~o}qw&qtA47OHIW<>nHj-)l50cF}_4zG(B%F^PuFFOToqt#KU)1pfGx238zk=)+2oAzZ?yP;hGFe zH`2}Waixa&uDe8qd@?V#CC4u;v&9frT1N05HKRXotw;fb;aA<*47H!nH)PFv+Y8av z$26Ebr|`iKXPiGSkGfg-@s1b>-4$k@6vUYHtp=5JCk<_Nw1HZHO}-LASAuWI@GK73 zu?P#8pk8iK8g5dbDALho9X%{}QIRYP7XGsxk=qOastg>wA2l1?s;Voz_UIqv&G~{?b%O!`%0o?mV3`F&{5{85#IJ(9ZdWp=iOyvjS63Q+ExAGIr1?4d zqob5$2nNXcLiC%wwjP1(gAq+jBZJ#DAR;G9cEmZ?!gqi^)fn0am*$_q*CAI#?tbIG z$h(K#zhJ$Av_0Sn+=QXKdlu(<8Evw*CgyU>Z}V60+SgvMK%VbOtujfc>|$g}O52F_P`VEW zpQ~w!ph^h<5R|7koIoEtNO}`^Of0jRpBjFYN{4q81$7)2WASVb-KSMJT7A6W@~umT z+_%@ZeExMrfVes4TWfg;YQ|LT9Ot8Qpz%j6=+C(?@oAqF#xL{Wc?-)Or&9!bt6>`X zw9hw2ho^p*{7CM)zEfaMmOHc@P;rdf?L=u~sM^fU8^O1QZ+Sre?E1vE^q87>I?4F} z!DJrjtwt7dKIKtEFxox8-eitcL*eKllr&1T#Lz8P?Tv{XeaMxgk1fV;?Manko}fb< z=A_3E*)Ro+yc-gua!^U z?#LhU&gxMlpS{4QQS!0eIY%dCR2I@c!NHD5YoPxS@04P+5EBuj{qY4WlOUL;ync#Z zQ=^NXV%FItaDj4PVP3+2E%998jcvMBpymltXv_nz6ailNp0w?J0D`%tkVfHc&aP{P zyowXMri+9uD_hKi@^ zN3HcD{@wj6_=_!Uh%=;@3N5I(*cx5(ZEAEN4W70=55oQW^)ggR%R^c!cbVx|38A5| z0=u2jTH=llqPC{e;~jSBnte$^ifj*`dv_*9`)QV8u*_xIIO?^t zHiLSFY4V48H@LcsmKXKWqS%_HKecR0z~g1!D615|XnzQDA5UFgkiXFlxu_8?82kR)9_Xg#UND%IGm1o==N=FL&Sk3^{k7&cVTTaPi98I zzKOk=#GlJiH&sr5xBIFAX~CKBsm63!F>=!09>`O}FH)$-TXbT#BeChLo?Gk&tVd*V{aH z#@ulaYiLGB+_SVf?aSB+&FR~K>?fMMm5(NusOv%`)c_VQUW{^nUYXkr6}8e>u2&4T zfmA{8&KzSUlh2Y>Ik#s`rjob*idHW^PLC!}vQYVqw?FO-_@BNI!*&QbHpjSnXs@zH zJ1$kH$R`|Fb*ZQ<{9T6b?L*Jxr9cVXXM+}+*XT|)>7BxrCtNN~5t zp>ekmAZQ>2cc*a)5F|L=xCVEZ>Adgn`|h2pTT^$YX6DbXI_LB`Yp=c6UTZzivzLdQ z#Oy(VGj1=9^}3!(X5@S=p-G{y70`WT;k2I5ZO$KUQbAHjJ_t8BFHSDi4E1_8;RvX1U<`!@!w{;-I9*e>0(jlt1mo2Aa>Loda4^F8Ru-n_Po zpI?ouMS+};{|mMaokNf z%*1eHo1@%d7n`mKPG@9`>(mD0L!pN{hux%z*qE%mjl(CJULc{q5q^MfSevDG>If3s z0&1Sa&5R^dd46R+#*!iznO`r81dNnV6t$_N0o>4rs{C3<{j-_hfxI}+CT~GS5g`)c z;4w&i5gIIcC&9IvN!L)1-@8GWk(1do-6!Vz!OqMH7%FQrso-sb4G=UWqc~7?@u9v` zWx2*NY2+6d329yQO--H4tA!93mLG3h7f&t<2QBn(G#PD#3tqUp=f%#X?2kt;T4B|h z^)s_ zHwH+?HDdE>TXm~(b!YP{TL@F!RC%!$w`g6UQ_BO3I&o*MBp0z5m5VD&i(N!el^Ofa z-7K-E`PG>sl5|Sr?CdnMUTZ_(_`dFYXQ!-L zp+=yM-`#vLA}MOb9q48-fYj|6T#O?VMziDybLeLo9GF<18JGQZyy{_QVV=e;_&0)TtS?`z8+OJl6#lpgD3C>~iHJ@oR7N@{!@X44ZTCQYX-f z*EeDi_e$DP8elK$=xD#bvn9h=Oo9Vles_ZPnMYl5SOlFLCf#&x0>>F&_rrtfTLMR{ zZRhtQ0WK;yhw4>m15w>3&CuoG%c;@1;tq9n#zW2bGyT2w>z#{_Y?4`a`Rqt{U<(7mzL7EN8&4ZT^_K}|K9(pk=YlqN<>6Jwibiv_ zN_Wd?aCwF!5i9Fr{;`nD_oiMicNYuGf#~<5anJd2*IwPTO1Pb3UP!Z$wU}Tvt8P#55wb_v#@1MX~P1G2*7< zwywo)?8Y4VNRU>)>~Gzhhd_Cl&cmcub!|I>re)pKle0AA>~Z^!Q{^chqpo@QkUm<(H4tO}*ksVxlJd}lR z_j8N?Xa2_h^ZBLTcjv=1<^N(TbevYuUuQ?6*9%R5di}2!k&lxfXvlK+2=gD>#^(RT zWq<&OiVP$F;X@=|4|-9gl;ykp59){?aEMqOMDiW-fH+sg^gmNWjy{{_^ssi`b3d&F z-dX#d^^-&Ls!{%uLg2iL-+w75*PV~54=c})v?r!dN4d^dzjgk{3&Ketb*4`wxesga z{XFi3g#Pph{&VLUjSp~0`VMVLA@-j~wZHveuwVXO!pRWgPm!7V-*k^qKnq7{DVmSx z%JXTzo~e26-Y?u8bG){;w)WmR&zicrxL?1p?HwIzo@FHtF9j$^XW{G!Q|`JZ*v1Hn z_tgG<^C!tRNkmD>kTbZO;(1>0cl*8n`t0gi1A&BVnES(10XPjn+J#=v${q*#VY$QCfYyLSIfHgjP7U?r%wNLiQ7QY22 zV3Lsy8a%s4d1XZu-SUvgan7!rp0hPyFI~+K*`d=9?_#;jX(146FAqfaava=T85Mm$ zAqK+2Q>Ht1hGas`*@>_(MZ^bwgL#sY%L(C-?ql+oUJD3vv<$TOU9t?RRfALW&S3+C z1$m7KZe?}~+qdV3TnUWQoa87Thx#T^q7UK!e3XN~Hfhc&y(oVoZi`XSVFhoH-b=h_ z!?x<`+E{Q4`^ELOnX_#sZuj~7-l5lVN}5Jg!-k7|P4!`ETPPRq!u0IS6y|C_ZD_w( z9Z*Qoo#h-TSX|Z$KL>LeK7^k0rSh0CN-_Kkp(a@LGa@bsgY-u+QsX)jnjE*ph97`*hVYQAs9!%HecXtvOYLa;9iGvTv1N+7k^+-rWeU zl$CM9<-7V9_XMow&$buNM4G&AS}VACYdv1`3zm;k(2g~U%+*vkM>fR$0l=j4&0N#DRVUKn0R7SN@iT|)%&+|e>1J%bi+coC3sMo*Ogd)=-r zK0DhxIQMXN2b|+olpwO{=ulo*BLu)zROGL&zFVvg`it*v)TLYfLr5gzK`oip+Exed zUM5lM3#Tt@r=aA*bE6j(+2haY3u9zpMyUwhn1|Eqy|7xyi8V3|rKM6@Y9ta!7cfp@ z;^m(&xMYznK3NeJS%QbS{o=D9?7wvkDc(VX{+K2h;e6JB{}7vHP_+4fvR zUDQ>&Es^eA4WD%MSu}&tRl=Edf0L;0%06ATZP>7 z5Zm_WblfplM=stx2peI-#s)v%v#*$OHo2mSt`tFz?BM7CiL4Plw=fF0s3=lBQqEPL zpM_Mf(`#r;VaFN79HM}vCCxX0xXv?RP(Ah$p|ZXhv%zC4GTH~Lv+p$t&fMgJc1(%0 zsdryreq#-Zhji%t!m>)Bo$$MJS1kk6(BWZ*FcldUZAX63_-XS%e>D20iiqbdNdR<8 zE1@Ket-Zu)@a%#O-WymuXF}%x#6HB!u3~5^8?J(ynDsSmXcL(vh*Qhx4DqeO{P>TO zf!&w10>6PtM*7iF{lo#rlrbAG)uI##Kn}L;0IgH=p&$Ewzwbx}d@1q9_7XEvLKlmD zH>KZNqA?_B&B=x=hkrgnKT#cTU(Ng2`kjI&VA&af(|b8JpsUDqXyUJL zhWSa!EGCYCzr{76kjUjS3h*G}tDO$9^T?|{(*X>#^bIo=`(w1jm|20I@D$Bt?5>As z_LtPPcOh;j7vi`|P=oJODx^=8#Loy6D3|IchtrnV&X2tJjJEYm> z{Qxz;G&MHt|Gkd*>=xiKDcB5F0wz&nb}goSCJIVyXLx#U$-Qm~Y%(B9r}b%ja_$&g^RU!YmQHZblmqr(7>Co4G zr#>Kw#E5TmVp~7r3LYS*fsKPxUd;zX;J3vZ0aaYlV`3J(C46gnY;WOSjn;6P=53%G zyZ&2&iCLu%?@RnI#(jLeFxU_tEpkm)W@2Vg#-?|`OC@zDSrJdqnw|)l5>p3T*TKN@ zMCg*ov@Qu9oe*-A0r?Ow&nh#sDr0Ozr<*&~#v?b^kV<|e_-U(wIF(3BQQuYqF3wa_ zCly^1){)pI5YspR9X&E$#Z!K{yOx0w@$|w6VRr6wA_ZYs^-ll%hb-kAAnnI#AqGi$ zGJJ8~nt|3bjD30y?W zi$%1sgvkHVpNxvS_jgho2fBizKn^hp(8t;dvLrlRok)3cf$`2@m6ylb-1n`|d%YJ*lE0RB_faLuJ8?PMcJ@H%(S}JCgr*$_s zJ{gHUD1;`Sanp-Fz8qRw)bAZKBPH0#U01V39oYHIx1fdnJcz({OworLC>p9U-R_6l z#7KWF4hOx6gF_PGK{&q^(Hj{h&(b~~tThWsL)o-uhVN-LB5}6HKhoy1(7{}3L6I}c^waS z3qpodA$}T9!xFNa;)Jym04_8ci}B{LWttFf}YMBEG~?tUEu!}#IShP3cJ+OOC6rACar zkrm4xR8rsc3SNr&ayj>cL=V})BzsTwohz4LC@q6T6&{eQ&$SAm;CQnPw$9qM<&b~* zk*!vJcw%yHBz-2XINkRG>+M;-kF^J8f}-Cl$!c8cur6fDFl*#xJZ2Cmh*zNwP}8Aj z`pRa za$@$^;EQbQmoL>V=*x-xH>N;d?DO54PL$CxF?>S(;N=dFBgfOG-dE~xmE;{5t#soP zTDA_#f8|x*h+E7Hq}1lni%XNA{$U?t8&V|%MA?Df@iuTcSf=xX|vRJ{tQuHz+QrijaJKo{)l#jiM z%L}?xbbH?AoI;-6{;p-H8=2gS>WSxkb9Xg>dDohmnDaHdFIM~8juittBZ{&xcE;8b zU-$5VV^u-p8M8&oy5`bk4Dk~^#ld9*`{t%~L4g}y*+Ijv8S!bIy3ojJ90O$2h6`qG~x{>IcHKir`8opCXD+1@2m%4w$zU3_+G|)G~8fKKS z;@ohn#f*+1aGA5$v2l=PG*Gjo@aSs|v*bYc)6-9FFh#OvRiv7iQS6vENF;%sfbvw{)=K|GCAmCOG2G?k{;J72!8-Pz&oqbag@ z!b5B5Q@;G@;aBm0XYOGkdJCms=mYrm7X!5u06=+THEhE5-<-Pl1a3M564#isBt7k* zy;+fR$BqD%w12lLVlwe-m~HS`V%ooW*E*5==U=Vhh^@lblYcW^KdS#lru$!-3Nrs! zdb$vAPDxBm9b)>|44VX}T#w|fZIU%LH34{@D?54j-4U?Ipb_e? zT-@9}ll}PbYJWE~F{}N}wiT|7AfCj(FertTSvT9vzo-n(U zDZXkvX0^=C`d@S68>tYqF$C9J|CootRt1T`Fv7i6uA?&orlO)SN6o(r2%hV1@%AsE zwHw&7Jmn}9r{!LexS27jzaJ$V;{0Ye{9jS!h_PtnuDw0X-2CM^dH}88(AJx}b9yiH zoN)GkKLpLl>VvUCKve{n9}&D$@XFadApKv}#)LqYdB|DY@0dG|0!cE)4<<2{y)!w7AAsvwEh)f_5l&Oz7_jV`NSzf z;Rr+Z-xAX1q1KS}+W#+qvg|Xol|Ja_Z!%Qx^$K~1Hwq4Z%1-?BkMjr8z&{VxhS~C6 znOE*1ljvh=8eLUE5N9$eI32{w6RBXJPKv`b#y6+cZ-CkQ_m*40-_PqPOXT!Dl(?`z zVp#nH42wYNNd;?|Z!M$Xi+iMcTmbz_NEd>6n&|@MZN&eMUgB{K{M)a`6e_2MVM0PZ z{(7v)QW!x$Dmfq|?~ZuiBAsOkUbw!bF3u2kTOFibC~q-hU% z2y9Lqnf-Csg;p0+=bgucf{)q!_qBY`{tm~nz@}^Pc?3?2X-sqv3m+GfF?`Fojtr{O&_xfmY?62Jf1PA=Tp2#h_lXKe-!Ub;wX|Zu zX&x6dGNGxd|FvWU^8B~e#y5H_F-o#BdahmgjxuZ&56+acJ5G)qcP@)EkS|8L65koc zZGCav9WpKw{6~q~hxMNq<=8YyP72PCv=sRyaF1;%94pWiK z+)o6F52c!-H9>I=7)mDGtQ?qXmc(RawrdAvQ;_~IG3(96bZA>y!_D~&2{C$oa5w%8 zfjH9;aO`=ne#F&LR?C1jMS!0)@+~{7-tYA1mD;@ka1z3P&jf>iQJ0i*OaRk=Uc2u7 zX1>bNf{XEj=T;JEIj#)2I6UH>%QdyrrLUI7IeBo1{ol{SiKglWs@u1K7Op^~?MAOW z*L{+U*Q4fEr4b{4ClK={PzCNuAW?cfWDC8bJWEF$kSME|kJ#E3HQ~?@1gd)XbUU^d z-7ZoJh2mcgVI&ZoX=)`#0#t{yElnFSQLWG;->R4|3uf%vDQK;=$@Xi!nL>ZNF{Npu z6@T{IX#NAm)2ivBX-t&-*esGUHMeu8KOuR;uOXlH(Z-IGvz5Ug=LF8!ScB&WOgE?z z3{}l|Jf7)J{+e=cQ2E(EmDqiflV8i6_;Z{&?11(p{oW`wBJ1-T0Qb2uT-FOkH14&_ z_#cF$g@vBcVX6-j6wU5`HkYhU>UUA}y}>n}pVyTgshHwl6Q;D{9Pb(l>2&l}j9ABy z4%;eDm=h^791U{EA?|WmL+887jV!&V=0kCf0hW(aDVgeygn@E`)9Dl~M4KzbMh% zbbd!0l61$CO*y+tN$#W9Q4{CcaI?cs*x)JqF2#Xd;#??@9xfEAaHIp**vh4j_&&q^ zu>mVz?Dr$Ddk~}ZDQOZ!Bc=HzzQ z<5TiwfuXXR>iqp-v*#w=1zdJcAB4=v&Vz+XnlSFQ){1q6g3QRhhQUMQ^C$^~>is(4 z;n?Fi85$w|DXu&;9yOqm);WfNL(fVMk1R*VVX*fF>xo)(VQCHI-zIn85Sa-AnXlRCwfo!x~5%*`w{PlA3#x047AcSEFROidn{;5d5 zFqr^kV22@Ihqt*?D>@Hn$!bm+n!@d$C+G94@RT%}u^7|UeV3z5A$w|Ld=m2b>hJW< zt{$PC*Gs()AbFzC^#^=1!Y?R2e8PxD7~#dN zw}%F?CK!Nd6%Gf4vs>uMcFMk4Bdg91^2A?FOiTr*WC5tC9h^^lCR@=5A2-WNexQlw zMwH{2qht6W3o6DjTF;KJ)n*ge!(axcvdTf7yi~?i<~~p&4hm6oGk;QCqwKY*i5ug?`fY9og{cH~!8L<7*E=f8Mrkr*Tg(VQ*( zLKX3@`e?11Do(|usNN!W&@nP&>HsLk>O>@Ke91qp1V#3F=+{Yzw~22&8FLO9bs(yP zSf!kOU)W_qPk&1mK~<5?tvZtMG0t9Z_mo1WV(IZ-MX@a?RGS%AWOQ|7M@o-X{b@YkfF($02cjIrpG$0}=Er32N?@6(f7X{YoFO>Cfq^ zM)gXiICAuts=5Qhg=1;;VG*Li?YNf{qSykIM#|2gIm#R<*MVEc{Ui(1-?t44 z3YDW8N|u}Xg$?-qynxB+#pvQaKQbFwm%){#=PPZ3e0K4Y3JzsmT?x$S5q>_Yki~Cu zMy*_9bG`H&NQW8?FUMahTba=NqN?)Ern@ye7?|O;FvLh+AFonmsrFA$iKbcN?02=W zA?Vn#Lbw|&Z%?Xc1NZB!1w>~IPNqY$qX{l98t8bN0$E-Xg?k=(YZ=6ZFJf+XdIz@- zuuSWGUhSqviZmqvNB@y#vf9r7-igb6>tkc7X+ zb6(^?Ngc?&XFz=)fvRPafubj>8um>}RnJuR!{Ud@U&B}lSk=!?icVf=7PM`O+l$J( z3sQ1#42UW0IJIsV5*q68FNK+_foRMYq@A~Vab*$%-dZMc-N6X6Z*|DBvgNG3cmcdK zWLad2-?Es?AAyt7VzI%MDmO6Uuw4&frZio1n`&HTa{dX;RMn53_@>A4y0e4jommnR zS|*7I9frT{r5O^f(1^^(^=X@g3LY$FUJVaV!i*xS<=zgJmG*QWW9)~@jE;|4xaU!N zcr=t)-d7$Y*_D*q(X;HM__j(U=3XFEh;H3Jj?Q;u`=nu)^DeG#*vFtHglN5+iwxfr z*xcI6Pl8r)nD#8{e_cs$a+IWJJZ3K2d4cIxH}QMy3e?zPZN;)`#f`p6`da!X5v2MC zD*%I+e{@m%eJVhY^U!HYw5n{MuB8AauE;<$rE|E`bNjcBe%t+q!7C!6h3=;4U=)IL z^@(Zii1i*)wyIJUpuaF;2UVW63*}@vZQK3bjql~92hiC&=rNG<4kU?Bwi#31_t71W zw<)W@pniPZJv@|u3u0_VMb)}yAgOhIHv!oR=_!?{7t*G`_7Sno`Y=<& z{*#em14RNPv2Y*kP%XDf{7{q6q<$S%L~3SMLfgM^$~V!D!U*z86>iFJYaqd;)jtLL zjjI_)R3_mN5n1LJl;L`KzTjYa^ERGoQwL^E2oJ*tOJOiYYhL5<@LOu+FqGb_Mg*Sr zOY-hcoTKvXGHVfKeZ$zJmcqskN+f^d5}v@Q6FR4oVfE9;Vk--9&w!_p_Gb55B{SA* z4LqWhK8UkQ65bWM1w#aIXPL;g6XJ@!jl&Ze8>gc5k&NIxnqOKpD(D`ynT;o8yr^Mf zUNj^;#2Z#8430`8R>FoM|%_9yOM^Y4DdV4>E9+gHbQjSL$tJIdK6;%wVGe^!>yKzXS8yd{K=kP5ZjBVJ} zBQi^=;1R4a%PM}CI;-cvhO|JT-Q3(VxDChCzE$Xrv5veCE5LC^ycu+j!)0Hdq`eUG z^{eoWLCLvwVf?IO#& zU)pB>PtR%&r>!JNE0+>Yn3?AzW)4qTe!O*^c!gLSsgl`f?}_h zO_0UOHp(}J^<{mB5e-P+_4vWP294UyPRW|Mps9i4=$bpv$}DWq<&zB%K}MF51~>cb zY1bA){frJBJv)YIW1xqZ5PcsMM}$TO9oq+85Fp4zGFMPj`hrIWS8I7OF8uQ!=W705 z4Q>rGXiI^M8L|fWw3&w+1H(YM#IV)e_7jSrqJ#G+4yMMuz>%bcoPnCNC%j(+H7t7x zz*VLNT#W-m%&lx+h=1W!xIbpo0SangA6I~`+5?ojcJ49P1S6AKJ;oV*=Uu(qSl zxswV?k0){Ga!7oqA3nD2+ALKatgb{s8_`d z2p8Khckw{bk~i_AT@>@lw{+e^wC=6_DTU>{Zi!X-A+i(!tx@M&N839Zr(&?7y4v zP>YF$eaUe8gO?{dy65*#$_nYP-UsF}=OA+v1ugPxqpxO;1^$~Om%r%sbXTY*zl7A; zHZ-K!?Ctdr-=VIzS2$mu`DC{;MNB8F#A12o=R+vA(zZ&h*BBZ5$k(|x1N@()9^A_K z1cjsT?kKdY{|H}du#HCr?IvCNan8~lv2F%M+Ju3n);k}b-kG|?7v{YDLh2-$_{4Um zn}w&;5;CJ+L4Jt|WX2A|hgO-k@+cOP-E)ifJUY(cDNyhi-YUn?mNd(-WxYXzNw*DLJ5Nmfg~h|dft#kbr~-5zoko1Grn4mBIP3O-Vb!Ar~@t!ZlqFl;k^ac4&AJBjyc!R&+iy$TeqHAg=8SiOdT_p^nxst)CuKS2)3$m{2?>l8{A*<_+ZV0`RQjLQI-sYj9zw|n>znfXzzX)Wp z19Lmoo2xuAY8ray$=HC0qz@c!SL>EygI3hxu#UUv>T26_Ar(AV(}jpW;?&iY2dtU? zKg~Vq-A+{<4*lYsWyrjZ35}wuYmhX2ds=WoBLp$WlLhY<2Q4BjQ4w~Z3QxYTDitat z`z&Ds4PmmR&c?^`Cb|UHkTt-gzq5uicDLG}6R(DDFsELg*FDeK{s&FdR0KRg$3ff+@k!-2GYWghKWST==0_$QnFz5+2g36YA-d^2h?>3|I`G` z+p2XaYi=D0_L>0 z6#Sq;Y}CSq8Hy(3t#v|h8M5qAJK`+&L^l>h~#*GPDzu7&WPNbty9WfvF>TgcST2GWaK$ZpmOm>MT3 zD7i3Ng+ou6M95Qs#(bR~{!R-!21CLsBSUyb$ED|0KR@lQ8Tbe$(<~2KGV4hF;^^6Q z=1pdNK)&3#?Vg%>GP~*KK1XBY;!=qG{!8BUfG|l{*;SrAnuAl{xwLPyhb!lEs(E!2 z0*$9twfmLw%E=2jL3XuZe(mb&701AXHz3t%sKz&HwXP$P@?&AFTS57#$;!bsc=h#> z#P5Qf0~sTDVyunMj$DK@L3&)`)5 z&KzP=@cdSc=8T|%rw=w}uCih<_3N`KgRik)X$o4(kb)t&&QMk?-g8$oAQO7acs53F%%fSHMW0x~DfdEvIo@n>{RA@; zd2hWYpP=Mo5^Zgw!Z3%X_GxFB+41S4rJrcQgm6n!EJhorNl=vEZ9s(C`|{Yb=jC-e#2JO_mWMeH$t1_Kyy(A3TvksQ95zY;3G}oXVe}+p1{x6lB784d%W_>xrQ3On^ZQ@VQk$~U-g{B`h8YA(YX^DeI?_rYqgr5 zDaAyb1`oV6ONA*zvCg3_KX~eeQ&C7cTt-@$z_FQ*Bx9{7TseoHyaL#Pa6lO>dY_<^`p|@PqJ0AM|7mI_oN7F>87JlwzUnh zmnjF@5kJ7}o!=W14>VQa=VXLrH_Mg4=4DTkjlV?yJ~~O zN`zQKPF>uMRBqh7beya|BVfx9-bO9Mh&SN#M3IKxi#rw;)`3%jKlnTcOOltd8Dban z^2)q+dL;?WJT-I$=H@Z&;XIpRx9g?ZQU{?0eEj^e)=7|w83=|3lHyHR7=s`;PJENc z?KrY<9mv~YDX4st&jxX>2ISR6%MCA3rkDdnlsp4ZO+FH&Ss8!p4f5ztYu{ zc#vvk!tgjow=d`IQPII{>OkZd5Dtblzp$x&RB%R1bxYKmmDf1tV;Mj_T{oETM);Od zFD1n|#V;-%aOjj6;_t}K=Nw%+}yk*Vp@UZ2m&-dHn=dQM20L^lXts2L%0$;2XEk*q5%a7v6PEYc zMRlZ^^8p<~P;4ZfPco^TcDCIUJyZzeu6z;`FWjzf^NT8Q{@8_#&z=ilI-B4Bl2hf* z=58>M)L5hL!HHFzw~h?SiyiVnxf%Elw6Y}juSh#E>$|BKU(ZQy0bhLHA|t090P1lX zS)m2=4C9~C|I_b^N#yj@Ky5PaNX$%&?wb}1Q|)fWn^lXwgQ$W5 zkqc~Wpo=B>RLaKgpCbkHcVa?1M0xw$33o>USXb8tZB3Ne*w`7_rhP&Hdio<0yeUXr ze7+0UXnbK|1-S=y99Lv~J_je(yJXT+VZiIlDNcRk40%0}pzZ$NgoIFdWvLX~OaE)$ z{3>3P;9$2GaG_>C*~N(Ol_Y~>8IR%+D>QjjkvD8V9F%zNfNtu7zNl!E0}53e4&7jD znwoKa*(-AoAfX_k;zPz{<+cTzx~X(C_LuB%e2eCMYV4VkAKa=+0Sk8Ydaqw0%%rH# zFMLo`_4(a>xC()IW0YPmO-PGGnd?T3Rlb>BG2W%7>VJ5NRuE!D4^pR`{M155Mx#P1 z+EJD82#t-T^UBa)pey=@e;yNKg0zd0i2E|@;CuQJLjB%Fr#DiU& zrFeFLsh5G9FA~~u;0J@ybxnq?T#u=#F;=)B#}FFxS0FLlMFo0QjtX3s7v zzy#;|QXW2x@>CQw{fK_7z&7wOR5dw(W?cu>{d;l^8qs8yHWH4c+YGvUqOar5ao`*B8pB@W<-+@ak~E-r?|FPpeG&d~Rb&{%m< zCmBMcz+e>Z?}LnSDA3ANb|$Gy6Z>mT`VeX-uhQ@(hl~W{mQobS5*aYqs-6N(@98jR}6_!PFXUw77 z((aMHGQ->$e98yCKj<0?a!4uecG>(Mu6TL}mEDz}JVW?^rcxs`jm+6dt*rF?aEzm{ zED8_a&G6to9vQP1olTYMSW3lMNEZrNaaF!m^Zalj1<-gmQB$kz=s_t!)24W~n8pZn zFepiG$HYcre9~1kF{!L>6p0W3RNXhdNYT~~Ym8!#{q-w;a#nleIKInxrrgpNK@ZnU z%DEYhTH0Zkj2tc`PxR{5oXgd)P6iYf{G*8ZNL(hU?K>xYeCE4Dg=DpZDL1}bgK$Ym zSek*yUBzv^Ys=KI)*lz1*Co<{G^CcB=Ds^3a9u2V|3_XB>Jy9^1Ex9GvxF9Z60rMg z(H7v~AWY(nqKLFPEqoiZ9e-v4(_1k~Xm6J$<=i)B7p*-CZI281v8R~SjgG{Zh7&>}!He9MY(L862m6pYhHDd> zeNkRfEc!`y__eQ^1%8%QXCF}@7ERaJ9C!1}gZPhAprUeJ9AfJ=I~$|=vJCh^u@~fj zUs8(RKFTR7)95+bc1J>4i7HPOg_WFa3LWf8P+Uv~d0HjC{tyTm7&lw)?(MI(3Y8^P z2Cq8JF7Mm7<=_*BrWRn@edm_ar#6PSbIcv`)F*w_ZClPWofQ-@((;lAIc{IeDvw(6!HcBr>E zU{&4N5XJ!wkGRKd;*C7ZUm4xz@q3`{nd(JhVYz#7z-f{E?A(-^qNN+UwFEjjxeSSk zLE87?e)&pml>ti9bb)mvVPgjis|{xX(bhSX7r(I7z~23mS^KGc%x@`Yn3E8xga$?rzMLagE1@Lso$aRaylS-XoB_AD3n^XYNclux z=K9MaXJ*;028<^&?oal4TkznZ$~IELu6<=SIJU{DX90*bJCgay~3(@heDK zwfWJ1w|^-B1Jl59DCfY(o6~}-*E@GN!m7n?ZzTxQnj_EG3qYiXhrp?YP6pV%Jv9Sq z|BWld16VKOJlA|`yxP@zp&PX``!V-sg`jCnkZYbcyrxqKKO5RML*>OkGZ_OEi#U|| z{lqxc0;zV#m3yZk)MG(7AtMykAIxDyD*c4a#&Z*MV0v6+M$LS9`UlMc?c&-$q z3~I-WttTgtTtnbsju5ROe-MmxnpoTb-X&sjm$(hC_MZ`9qlk;Uv~etv4{+ot$JT+& zkzUMI?jr%Cn)|DqO7xa(F7 zniq3b1wc^H*eLy5gi<1$aQP2{$|u)2H9a^vlOuITn~t0JmuVVrIV|GULn~LRQ|;Bt zyNzcZ&GdU41sNZZHLponY6v3KwAnwr<;N&)i|=Lmtyeep3c=Mr50J}+xyYccxt%Ydo&-@6}}G|omq zilZDvghHEXGvXIoP`K)z3`};zr#YvTc}&6#l}K1rKI9j>kZuSPo_GmJ=x&dD=&B*D zi8HgkNsu$LrOMoUwPsTUnke2E6*k}B#lm&M_4bvJSC-#io$N6+f}nCrN(L;-=;?uA zn(g6rRZ?Mc{TDbPK#QadGHg@Yw>QYB3K}ZTL3FNv7}oc~`Lxr~fzRkq{6k)jRDpO% zaNt^})IY#0jFu49_Y%@)Az-kKkVfnpH3gD>tFzwjpIQei%`nzM0uBS_ZuvaXT)AQ!e;r}{^h*Iv(~<_zA- zYw4auZt`klY3i>G%ZScaH}j3$fhg2D%k*<{gAy7Ll=@Mw={(|m!Wa6Pu^MOAEe(jb z^=5A@eJG5#uK6ozL)1YNNt8I^_j02exZS%$g>i7;XFDa#TIg?I&G_rjEgJTp(m0n` z*ZRYpb9qiXSb?&nY(GtiK0JME=3-5N#mnEck#%2w!rIFPqZdb+bTOkSH_P~iwL<8> zg~^81{Gh+M6sBhdfqC7uOfat7ACreRR^yINgv+ zXIw00dv`KN$`S>GL9)0|#+TS08?*qf%5SJU%|`B`>Aka>djL+?WJ zlI^R7h|XxqlrV~ZTyJfm<}l3Sli&|Moh8VifDyEh&wGj$0YlS+5s+8-yFAn|jNVTv zXgsqm)-k#qE?UB>PrFBZ1YTKmI4kc7jG4BgZ=ogJURN~bGa2HD8p%^ZFt*qduKF$C zlg1_pRYSb*S@q#KMIT9+wfH}70ybK{Jx@$bi}=zZjmV(5wrPgp!cV{T2CwoFMyAS> z?KXb4LaXkl{Dj&gSX$lC5obK>Bq<4nV~YFk*2QX59&T_ayFW8XCZ9U*x}8{U4OQ zRaBIX7dI+O$H36t2!hPe4bq^rba!_Q9U?GvOGZ6?+Zl=*3 zz9bce1Zy%13QWE4 z4O@PMFVZz^bFooB5QSKnhI+5jA8k2k271@Uj4Yq8isDAMvPSxa+p}4Qgoj=+pY9KD zh7J*BpY?GA;+k>fh2>&f$~~HM z!G4M2VR21I3h;tp30>Yw8aYuXa9+cKB;;6>W@nwRNF;@jLtECM+D-wgR5Qp$eyay! zAqtJAG7(6bU+8y_tT}RlIRNenLtf)y1NerVr4`a68bhZGN8P-u(yAYJU*I;7y2_Jd^O}3vzr$6cl-L{~(zB1wOn(s8_ z3Q)N`NrwVY{irnQ2eenrFS)95XH3u7=4PbDt>IjPF1&&`>gFH9kk{eUkdcEIK`scH z5A5%`|MXM*yt$Q$4&`-M=%s^AWD-p#vgkk=mF@|)5A~973 zHjzw>R@UcyEnRIh6f}&*MO<=8hR4-G1~e5j_ZX8Vb`0EvAuvejPt%RzbqCypzkBAK z-S_gr&ZU97&sKW-tKX~o+$x= zXd}Cf^B<6_;fP7aGf^inL`0Y&0pqBdX!$L}ktGMn%gdf#)>HA6)tHqF=j4v>hwk$$ z*eyt1D;oV>tJn{GJ&6{o#*Mbl_2G$<6!cPOfq^IPT=%iL`-=!##O0$iUvlqcO$EzF zlA$ag|Hv_~{M3$Sfg8K7yk%`@vJ4zU5>WT1H%Jj`Jzq{Ko5<{;WmTYS!J?@E=Ffgl^Sy>m`yy$2c2pEdX+4!5kmF6m*UbErtjW_`S5~I6Z_~D;#FK+;-izqV!1w> z%|cN|N#2GjaWwNgTcPAap1mkAmJY`ybxj^`dEQB^j3jPCO`NmGiQ8&VMgz;%AGy)^Wj{?Fnyf#Koqy8|2426x8%uyj9|3%BZgFdD!MZaPHF#p) z^-yF?p?7Sadr)$hPxF(3H(B)ZQTMcy&dwA(r8dSsRzict(l}i!x>>~uY23IGvs67FB56E|t2tq2$vIv1B!bPYqxMW_ zpZ^SaD&9R^HXzrQilaE=O z?=@>x?79k-s3Vjz#Wh?oqZ&3$-l(ZanM{$~V!`qoE{VU+sKzDuy-lfJ7xnwh{Bg{! zcEJ2#+bM*iYI0iZREfvomgb_5P4PWQ&B_$hVA3KeQ)r~G_cOB;Ef?PKN{ex$rk>&3y)`W2~{fR?o zOpGm`uK@@bbS&6ZT+#YsN~R?4NGLS?V5+lBcuQPZaB?`>FZc7I(sYX`Y!7P2512k4 zC?oeRNy~Q~s7U zleJY(ri>E%w03Nz0gv+ZbdaGDHSBC9sP56>W0YZnqe3It4*OJ+ZQaBw;@9zeUl&V! zL7@SJkTQTTN5s_;V{AOZDb3pi(u(G@p)*F4fQgCi?E#GIzsrpGM7wcM@ohX6LD*Yc zJ5N^S%-@1S*rO6oZAyaxS`(W<rVp7BvX@%emqu`f_w+KBwm|HjDrix(7mC4Fms0GQx=d1m=HRGf4g6JaNlC>yPCd zUloSNaAg#EM=wGi%JKMcjyr5RxbYAcY)(WP01A0st+;~Er#VHXZ(WHr)f%w3_tmHX zryK7!g0xf9vt`s3(erxUw?xI?j$`Q!_W5W6jcngi_8&SIV zl*5pH#z%GzABC6pV@dR=rgN!@MS4ovduUQ}Z3FpdXKBQL+cVBjDjygVuu437w*DO&+w<~3B#xKSUZEr9t zQJOlq<1e8-8F;ZlYwJ-)#+&o%Yu{FBEazR=1vUkdDb5Jdv)CEp0Pvs^!oQ<3%BduL0cj``BDe>YflTVr*?e}AR{;rR zw8T&(?_o=>!o3uj;_n$yQ!{nbO;6AhUpC2el0;QRAP{DTznNu~z12xr>${_VQaN{V zYv+6_pO|{F{m89B9#q-LaBV}%77*YZpr6$lvw~q_$XfYCTbo@KMeB9XQ({~8`$9%8 zmf9`)Ps9sM>lCBbP;zB1b0jc#@Oace5%<=fTxI=JsG#eN?8-s?7YbTh9TxcXz6Xh) zbC|PY5$mM)_4gtkZ*2b7K$npsVHRj(Yvc-S8sA=AN`fyuaD}H|8Z@59F5}e5rVN9j zG39R0T8jEXOB?C^yoQrg&9^o;xk~l@yX{8x5e+h*hmnnK!w-ix$48W#x>KB- zq3O3yDpiPB?}S?%??OUqDTV&|Ze5%p;Q3V!9HkVg&&^AVnh8A)O2?%%VE-(@xJXWU zUA`s+C+nJL7P_c&AO1}1RsJZ~DcEg$qddj^Ex#NuBUAFPKB<4LUZ>sx0n12d*`G3I z<%Oy5BZ7zdqbH5awuWZr&r)SIH%>v#v1D!#Zjs{g17(%Kq{SglY%0@|N>XVUIZ>RBd5%c3u3O7&{@+;5s-FWoAgfI`+b+P~1#fpArV z!$YcpKdsigg)+UeGVxT`S8GjT>hJbDjft~~#k_+*ZR|)&I-*HbeK#F`K98qD-Z~AL zX@po=i-f8&)&Vye*7l6<9$7w+5Yrus(t`ADq{~l*Vv2@(#Is}L)y;l#&*s`10~COYPr)>rJ?y*wntn?YJK2tVZibfLw6uA5qK_}8@WGAQDhdCw9f~X8Bz6f83k#c% z`QPv30)fCvivRry47BhkF8JRQw}-EutP2@Wjo$Z1SH(QZliZVmP2p(rW6`zNjcq1A zO;#lms!C)w%cP6{2+rj%?N#S^gBvpm)YLS=uSGm%W#Xg5sDpXYYFz6tto=OJ);;~p zxB_j**QRy~e=zrkh^jU2PgK4qG+?q|9FiW3FU;aYi=gEfj@~|M>N!RE3|$^S3Wkik zzE-_8C9@?aIqD3Wz+`x+ogYlLm}H*~%1Zli8-3R`-;op^MvvKwey$&?cQh~MO=!W^ z%oCKJoVQ`|g+yn6yu?~0Rzig)Z0uuqTAf`9v%PJxEv(t?CpWjSK5=^5ub%FH zWq;Wro11?E1)GJA1);1q5euQ~NDQhh!Bk;lUvzL+?V}|p{T|Y8;v;~}y35MR4NCre z!y`up6YuSvsq+f+uSQM`=a2~?d=H^HzmD-uu!HGXyNJ_%t0)`nJu67wsF1cP- zW}lT3XOo~+m&$?Cm(!uO(qgB*5k%kH`4UCrpC6|b+JlW9y*T*XgtnG`*jenbr` z3I~TWs4lUP=>v<{Qt8*U+t+QpCDi5f&XIqe00usXjnH2WR>VJlJ-h_fGCyM1yGj&Ks)_b*z znPGh{3DGY4)umajBzZgVzdeQ7`lapha=j77i-9rD>WRBM^l@o16RSykHN$7QWw*hC4&3nYy2!mH>b6+~~XUs+gLF=AhP)+P~A9 zJr=C?sY_aYgFOIb>9$FB_K=QpE--H@@rg;|VgMOegAv2Xvv_Y@Qrep}qCSHD&bis- z(TdZGTw5zt7IsH66kXyp;*T%#;G&JZQiRxUYCYmKQ4PJYe=}9dod7lNWQkDRSvQFB z)+v<2cncL916tctZs}WCTy~V28U}IIURAUdJS4F)t=A&54*OP{#86>hX#{E-P-zH> zY_I<%{8QZ!*0rJiXzXNx94?pv?~lhzk))m?y3uMS4~NDBKvLI3}*bYOsu%u|NE}MkQwvi z$F1Eh(1oK9imla=RcBon*2j;#FVu}ea1Ri9rhN|0u`G)EaoaNLL|M1mleVW9pZJid z(mBRYjfTFIrII{!31{VP+Q-Q9VlunaN@HX23N3xvcT0 za7f2dE%C7`MQDrgF<`X|>Xt)e6`rn`)6z5d<;daX=LH}!t{seg4@ zd^Yj1ibKfbeBdF=p@2aux1|o9U zZ)>7Msa()UcV+frcka1o;=NCz48FX5Heu<-^bXOdl`M>=)x(O%c##%n8om!r^6P3w%p zyK2v+{eF1yCqu;mf((g{wz9AK2AgjBY&p-X+n$?OW#B)p?Jy4H%CPNzz=&r0Gx0qX z)v#=N*=d>b`}Q?D`~sD>?Xxzsppf=H7DIG^7}#JCEc!g;=hTr#AN-8V&O{~4PqADp z5H;D_4{6v5v9fLtKCg0bXbRgaghN-$sM0VHpRZa&PisA&t|rTIgQ;f?*--tqkqK?@ z!nCh{wQ=A-)xt#^ODF|Oy)&B-Drq$~-XynpZ~P9QUmL#9FZ%^w=tTE2a`;0CD!P-H ztQzKY{`cL5y*L)w#Znzts({a?ngW4hrfhKQPhQ0Z%`Hg>avrz_>9-?FOp1C=zO8eB zp^Z>vaEUM*+icQ->G63`#rLmzzuZ*TH?Eu9XS@6QD1Y9`*Mj%o9P2#7Bg%pk@^)Nw zsT4n;czHN)m!Z^yXAU12H`C zX5QTVJt0Li#y-Vhak*@2FIibzTMPkjpUIVl5DbL_Ha?E9{Wh0^Vurk$FSjXjtcSS9 zUDfRrDUus!B;?`;AKWOXieY+kSY$l$q= zvmf#C5r=T4C0xK*JxP2eVhwz5L(oR^$zcI-CH8aZ^t)#=j|bI9cM5@zI6u(v5(NfQ zE(TB|*XF*+jZ**LGsHo>3U@a84-PR&c*(Glr`?@Y0lrJ-m}Y6Y=Psw}XtKddMK0O` zh4EpBFOq3Tin4)5)bb5$i~oVh;NBLx0GpeW#LJR}UK+Xh)f8qwrBJXc77;r)`}fme zHn`-$RMQ23{QkXj(J5cvHg;Y`8-gmG{bKznHdUz&HT@ZrbaBxXtGKbEdl6~^cWS2> z%02Yw=C%TUjSH_W042iLXTy&`L$NOwG-LXRcuXcju;@ zEurc2GN4xYi-kKps(g@2L~FP6*MgzL(NCzt~&2t+0zv_CXw)?lqcUj~|K(S9)wV??rtS?!VRHD5vq9qY=gpdZze7v1&oY0aWv=aPhWA_H6PLXlt z#v4(w2kWTu)$X14o5Qms!d&?V$cdL-BZqGxg$BdC=FA8QMIx`WpUWF_Mwj?xKg6?l zrY!-lpco3wz_$1gxN;}8Y@Z^_rcJ{{oZiTcFtZB?M-Os_IANhmtJ_i$Rz-H%vP^M% z5%5|LI_JK8L=N?t)C%}|F2mb@i*;~3#m*KOLZ-^c0?2tB9B`+I2}vwxWCpoyUN62; z+%>0`zCBU3oG?9K#*ASI=~$NR@s>s& zB%;hamd*G#I&j_OfTbiO=Oaj%72z)^+_cE33(Bcu`z-SFoVbPT&Tq%l(~@#%$3uK{ z_U&f|tQOY`o-z#VzUkXN@SE~8N7}qOg=DNfiTCxtMH^^r@ovTT5gOZbpKhv?89cg?Gj)M%wezCW-C!JAmrBjP_@S;* zK?{C~-%gC}Y#;47v1#<37ht-@#^kl-p{A3y*CSSvbWgov?4+{ zHl!nLE1gQgug>%#e??W#_BcAnWRlNYCg&n+YmM<4Pjzn6Rwwc+DzR)CW%!oUdi#&e zht;R2LZZv@PRT2PzHC^Dv?YcWEHb;(FN$!c_F8 zwnw#CjjTjKylpg9AKu#yt?q$qJ1bT!T@^e({>NZG&o-fNYwfgv?l2w3;`mt`#(9Ds80Mc&^!0~cB9up^wZ1I2)zoKlwy zI&Cd#ef=822b57<+0tXi&YL_w1jPWEZe>FW1Erx!i58a=Kujmkdrju@^i-Kbau-cs zjj)9zw+82z<#!ohu!0g+6??yCuNIV|txS5t6M85@e*5H@+JwK`eioQ!1pq4D48}vl z4p|dK>fy)oA{^9Vh7K+gdc7G^+NBi%y+tFj=KK2fTg$uLni|hf;Hs&{n!%~#NMb_6 z^!;Nw%kK@CQj`45*qV#yIk6N#6z8)SI=yTX86Qi*Wx?gCsii>0t5-T}b~awM5YtW2 zk2!8*ry8n0y1vxZw4PbdPk^%x1XjjRvmRJmde)>Be~7wL3-_$j)B1Ym$&b@*s)JXL zzq@&5oSd96<3S9ds|1#nlEd6MH1|E3{HF~%q)Me_$Skqc@)Hv~e|vBqxXHj&Twyus zl)xG-ORq-)k!dzUnr2x*>pJZ&2t__SOwtW@Pje=U$`jee`vpPoBVBF{xv4Nwjcs`( zYOBiOi9>&t5tY}vZpOP^j2I4azud}~W0%gjh%(fSaxIB zie+7=`C0q-{4S*3)#&SSxY|6rgZvfxI*j#4Alx$cV9Pv*S&1cn+%DZa?3-;4f-8z+ z)Wn9QipgQ5mm@xkVrP6>YC5Hqq#2vLWm1kIdFn&!5>5Rz<}r&>_Yyp{*-~m)0SI5M z2jIDgxRan+yg921A!H&dDtzvSVH#cM|R_WGKyE-miJGeOp9f3jl)(OpO}<3zze$TS$juZ zQZ;{Ujt6g@SbAymCOLQl^JY72MJ`q5W{A%A-}uOo9UgXdw0q%9J<|EX;Qy)q=blJ{ zxEWoXgg&za!y;nEj^jU)v#?0Y-#VnG`YJN1I*|@q@VVvTY8F9p>Sr)4k}YcPF}lOs zQCm!Cw+8ow3Z|e`cB7VNu1GFC(7q$Ba z2e4{e3tL2ZBU>`hU8rhcw_-Dg_#^cuMoh_;N4tpGXD?39bqV0A84j-C+(u5^8|KLs zjZl3N4K@z_UyaG8PKfDGGRpeQ^Am%Z>D~f0PFFog7!-$}0!aPO-7nXuVz&YbB}0)! zwa1kDT#4F-7~#c9jJF!WS>XEL!;}QHlCXPsTH!AOoE_dB)lyO2Bl+KpCvi<_V3As_MR@Z9Vz}g1pLdG=x9|S#XK8oIOye*)dV# zd}*gNOyCFTRY1j;9*HM;&?MlbciEJT)F*VxwMiL7m6j#FH)YnsuRVG%0^myx`Hxvi zAV$=;SN9TX4=k-c9DQ$<+8O=0&6TSCbJWi#@>fSBO|t`xQec$R*s1_qRae*3VFg+# zqUa*{#nP3+W5{TGUpOiX%UGT~PN4eXV-<&9f1s7MA70t$_2z-`f2e7m)c+8v;8h~E zIU}=^Z(#)z!$QvZxw$Jj#jkhg&JV>+pCvF9#h#}4c>+u04Sr-Z4=fc~=w%vq_ePWK z7N3UJmt$}!%^R7uV5^%y3=fY>dqG&?N#e?JBq*H1tmGpsgR5sht%NnhXMae@ekc>2 zxJ129fc1$g;jOELTai#oSjy3%-^Avg%Cky?4F^N&

sx(6K@>uzF9ZU^5MN&Bd% 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�}zMzSU@LM|5eAr5kaDfcwxjC}Adq zZ)5R)12D+qeZX>cBuF*C=X>&?Nt|6v65J-YC_1N(=O68ZJPWDHjj;?`wc>tv64|Yf z!MK>ZR+ft@djC%6CkGWcC@aW8bDy$}pYb5l`T-VmPn9Xw@RTxgc&v8Szvb*;gV#Kj zlv8Yut)?DV?e^>jz6#@bIa@PuUk6aL;k~Ve#<2agrlsy%@y={dey*|k?>!9^@g_kV zqwq-|naiKEL6=^GD+e+6{hvOoLp$ecaeGs{yb1gqt35tFXb@1Xpa(BU&JlVdeG^mr zgKZ1i?E(|Xh)d|5OKaAr2PMc7KQ-box-Zi*6U>xx+e5Yyy^+f3HJBB6^HB8b#F2z< zLPSJ~VLQzYFXWwW@**~Gevx46S%^`JT#om)59S3x-jl?Zz$9Q|&FvoD-t+)-NgG0mTlw=&74=x-pe zhIG<<-<>cE-Q{tKvg6({IG%O_U%TMe4Bz#d(}SO zyL<6Uq|OH~8H3;^wA02ZY{W6Y5tG(xM%qYsG`#pogI)gaK3wv6>!G)f+X18XK?UVo zR`SLmq_8P1Uzv7u{h`tAbPGe~e$mj-0{O_gBB{k$ncatRfL63A8V&C_`_>AmdS$~; z`utKE0o!}_nV72kq(<|_%gbS|`r2UawT&&zLES<~asyrYtdl2ogwz~QTrlfWmzyF% zO+gBM;a`+m8Zm-FukYtMWUzbN&#Tz=mHcNnGw5P>Mx_i-NxWCj<(_})X>CP^kFGtVYj7@!*h|t*@4;OuQC%d+21uAy@)&4n{8Wf9A`C?g2LB^7rnF_ zi68RJAP_=24WYPutoXMs?7AULGv;N)K8S}_$uSH9hwk>(1jPO5S*_1Ct%~{reO}^D zRs^2U1(xPE@;|_aV=V8v zw`wxj0v9+CNQhHgagu|gmmIR@7ri$Iag4utFvS7!nG#ii4XAtmgIiL;`l@#W1_E() zEb=Cd^&{nt_=U)Iqoe80Nb=vXl7yjzFSKR|OdbX?`|u{&Umlefp>6NSvB+g(iyr``(j}7J|-7YU7tP>z|$N zrUY|cRcBspe`RLGet4eV=+qH1p3P|t!*9C0M|3o7DoY+Wg7WF)b+EV2RXt)V`L+^1 zXN#DNd!L2tzo2haUF4I{RYNWA2gk=~tEq;RhBIz&ll*IWY`_RjY z&Q<6xbx6{?)Fs)Il<X~F&UGnReFajVFWG?2F zBjisZRYGR5HH0kX^2j8ohV$X|oOs_;`o}a<**beXcgTf+TOjj$V5h?coVa|Y_NsC4 zseI59ZSH$7)IijHqaX708{C!=>c?6RrWoiEjL(DMTAT(R0nJ9WpWyD*Fo{q1@3@#z{FPN$h& zlh_xcmhEfp>BPth^Fy9ksBl>KMS>(Zhy}_pCFbU_zv|V8-G)D$ju@Qm#8?8=Ys|gR zt3@zcC-D%#2(^dArp_dL(}X`kn;z0cWapS9QCul3gV!%ToqCMcw9x$m(M{^1$iU@5hT z+Y-mlhEXBM3^Ahz%u5@;?~IS?jUu)moAnQMst0mwXWEj=RUNtec&i8j9i!x2)r%Sq z-tr8+M}3z*WR@{t_EL=a)ELX?@%eD}1BjXdvJk?DJ6|pkda!~}58T7nd?#iJ%;@lH zykq(Z^X7^}D=y0=@(TxrI9yGd?i<4#{$02NO?o?e4n&?N(Dy|RO(K^bgZwnR>+92N zf7xrVSOJ@{+ko}|(` zcav3E=D1xK|Nciw+yL>gq&iQikeobi7c{eAI7kXxK6ae5{as4!w##m>hDAK#b0sW% zM=h!QNQTv&EgihOFYNFU?r`n+!~9Lm=Ii-r&F{)yx_9lKXT);}IxRL15HG}KL9aYN zxpN-T#g0*n*dO0K6u0<~94?jcz)UGq`sc@bUgg8hTcI0rUIIkHPPh8ttsJ^KN*JN2 z{I*CRZP%Yi(jGLT%$L1F(5wZbxGZs+xgMF_T!Iv2Y!ZLs_VY>6W;~Ucz_B4!xM6+xf#(EN&*7%s!&c4rezC~q`u=lv*5{l5FlEV;ngLO=sg7XegED0-Zv7|im>;Y zq-OSo*Fac0@Eh0e;JahQ2A9S&<*lCjt+kb3pX?f#!_Z`AoD?eeBTe5^R;!hq}_m

?c z*33J#C4=8-2vMJ}=U(6mif2TtS3+pE)(CTJO6$Q*=5FrQWoIiv<+>b=KfFL`i?RMB zd}H)i$_5&q!;#wQN|eGD-$J-98A^>my3%Lr%e$K<%QXVG_ysQFpxEv&lzUkw>eLSwq#|r1>6ry=#HgPx%dFv*F5;caq(FAms#*)vz-_v3#_warTDJ* z5;VEEjtRbRmB`k?2W6YS`?=1mxu(4RL%oDV-!~-GW60E%k!fAn_S5yRu5;=o-PQ7$0V+R>p|cg^CCQ95 z@%rVM&M9w+o5w5~&adtrtM(LBlo_LVpK3j#@b!2%4cia)VQ$aRj+sS0&4yBg^p%&|4bllFz>u2H zYQZ^`Kq=~kH(^h8yneeu=SE3&VY?jl3)3YXlEtVY@CkP5*~X>6l)y1IOs)s6c{i

~PEkSzSc}J(07OEyx*#=vtCT4LP^8BOK!Q6gCu!XsF z2EqV}%^L98n&6VIUSPBE!ISLZpDTO4WZWXFdh_Pbu*j%2lPgG{$3+1-PZn~SyC4~b zr7<7ei#j=f%O;TOGN9A$Mj#vvp`Q#As)CxHem;6))?aDYe+iODjI$pus>OL~w{L!P zTp5hMn*}+Rq%+d!a#p&x*7T`EIZAH>zw;Cbfn}*6TCUY>Vjh=MGGSAL@1fF25)|1wbkWwf`1hCP#KX(&8*0>bEkgf-X3Z!dLIcf%e2jJ*8IX{(Y0SV zOo{SbtLo4QpX;_a6Wu2xU&4VBZdGqemyx3smetEkidb!J;XEUgwO_ux#8sLKWS|)3 z*LHd<@$l(7$-CwnMmcZEcOQ@`I^?|M%dtXYk)yWlN~rS9V-r}FbFZr39? zyLx7by6j{Z{WPIIISpU?-R^w|Ij?$M4kz}-Ic3_=ClOniFXHYPpi^vgG63G^$km`# zoi(dVV_=2x^%$=$%o|Y5yX_#ZlSaEL5l!V&>&oQ#!hA5j&S^WZszB5N1LIjAbmwUU zK1B$v^B#e=F)>s(FC|T=UFbj(!TyXuRm|+es6qe=HB*IzTPJ7DJ{(8|bsE30-*L+5 z4%(}6R)GbNmQhexU4NGyu)OU(WS!>i0^FXe4^Vl}SDh9oVusi7#6OGg!%> zs!}h7ieb674kMVSZ=(RN9B($$-E`41)fV3JABFN;5sd2`zMU1mpo`x+Zq|#sVgkm} zR5cGW3rw2Y@~ggk0U>S#r5v`LLA#a9whPir?H}EL(9CfXJMl{6>tL?SCqq0INKiNvDoD+b#Lves3CZz4D1qByyHCL%KmKAZxheY=YcS{O3KlTBk%( zF?(xtH~6%|Dez)1{W^i7Z>3ENcU4S+!f36IqzC-+xTd>4CPeD~oH7_z+bA^F;c2e+ zF}_}I21!zBM(!E=cdky47li%MH-BV_675{CvjB3PAG%(M6Q+E+F8%QJG6mdoAlRT) z^SP@56Qr+m%(GlHwdZT)dD84k!O5=vLMXjN5Kp78L*l~qxxt2rAAkdGJ~6*BanA}p z9eS$Llql?fZ2BWdm}E}j?5^7-{<>?5-lcyifucM2`jjppBO!Ek+5bs19Gb({7J2P} zxijeEENpEf^bNo3b}FXwJMsR_tx}pzdJ!SA8-0J4l7ptpCq-$E)Z9;^BUc*-8~lom zgY3kYw@}*JH8QgtIN6GpLjr2@y)i1;Gm%}m8t{?$p^9q-iQsjH`#pw2ie=C87h28* z>i5y5QOt;4S?{bCv(4!SpfBb92LU{mkK&Y z$D%TMZ&n(3`oBEM<6Bjd3U2vQtnA9h6eQwF&LN0Zn_1Pyq6L*BTpPmlbVZS3u9l@o zMRcpj!k)_OS9KdB3wOB3VM%@$%&zbWc1ccZ`JU#_PCX624_NzZCi@d&)Y4yj`?1Uu z1Xi+gi9&pdgGPd*rQK5&YqeU%EkM%m*1m!KDQ^BUAb6v_X@wXKwq6`&kPiE-uhnJS zvf2iiCSV?6n?|?0Zvkt-4VIK3Mv1nzUVb8@f~Hi`(g_)n@N3ws_HyMn8^?b*^xQp} zdB1H$*hQGOD*4)$AhJkoC)E_`QkBSVw%E@mooThIeKXddD zD=O`*#nl+@tiA7nf!fD<>1M;Jz#7=g?b%9$fukp= zw9w^dLOxM5uFg-+^-Sn5rs}(E5)B#2g>jyVia-D+yMqTYl7NDf31z=82v;OaJ?V42 z76sPZr!>T52p#XebiVv8PJLhb>-Gk(h{f^mse)!6VvUp2F36^pKn=1p?N6t!Y3XZM zr1fCI6{1P>(P&x5eT ztnYvZ@RL^>k<2}q0<%<+Vo@(2W`{&U(I7?&)YOI(6I9m2Iz;r4{Yo(0N|8y;*VDj@ zWh;&)UF!vhLQPYQe|D=+x8L?9PidKwBTghpyd9|WP$k(w7Z6fEG$1(}QrT&9;=X6} zGBjL{vS9tOi+?V_=W${luL6@+u*!?i%Ro_MULM}h=c6O$tMbDQ232VdE( z69zCM91%_nmV8_d1IMzg4N!c~GW7h#{pPev_4*r=5f z;t+a>o62kc_Frbb8@~nh=fj4pXtH_^w6<2{?(H2} zlS0GH!je_mJuE0FI5hY~5RKL?^%^XBO4?F(3{Cg}=3GO-U*9 zXM%1wG)6ahpLrgf8zY_J9s9`VXf#BAE~xM~-wPo)qM3VJCg$yVqijs$_BsQ^8@?)| zIQQC!4UV|dY^lX-xN4M!SHKXz2auX)Ix~E;1=QP2b$x0RO{g8T;J}p^-SyV`;7)(t z+u8EUnx#jmW+cm;c;QavfJ4qynS6jILp}wP}>AQ7!7p1Z71E^IeNmphL8?jbrM`M zwPFpL>h7{R7BR$gb&hcn-CtMDU;pNyN|>d7-FyK{Di=CQ0-(?_n*H$5Gvy!NfJ|U$ zGM$JagZmBgiUjM`Wc;$-<_${cST!M_mxkP@$l)RzfofRqdw=^EgZ2E)KJpJvmvxmN zlsT=Mn8bRVL5Rj&SM$E)GYXOijaZ`*#mb0@yf&7)9P~Y@TB@X6c;xh{Q~v<3veA_7 zDvb4YkS~y`n?kP_&Lj=Yh3CtB+QPHT?(^(8%^hv*65Bflczj}N68{2X1ntEo z$=n2e>HQGtwxBi^>1DH)%JFaupxxK+Q74(P$QXmSWfZ5g@9f4tJFBa28=eNc{V->)Mk$Fx-ZUw(D9arOsX_!C>-(wYiDdr>Z0Q117+g z+hc~Rx2H87=M=++#S&esCh3@f*1b)gVKL5iMYjML5|DP52N?99zX1JI9Ohfcf5Z0H zVBD%dC7&Tr&c2IQhD?nK4d!6kG@v8Me7;Z8nW43ELY7CzFvI$5+2b5&7ujpQ} z?>oo_-4e1I?=WddHi|1)C&3snF^l!S zV!>ULV{_*r&IbMzws| zc{oTd^SCWtxE89N!d<)Mg|$){=-^@FBD~XV_u}tpVG2xgr@$CGYdW{^c)U44($__# z>JMkgbQNje%h_iewvJVgY)(2bd_N$hY8%xy-Q7hTxW|ABft#tms{`IM@w-r`c3?wU z-Llx+w?zCjOp>{;aVSrRBHhnyzJZvK(qW^x{9%NtyiCOBNc$gRrt5h6ZGQ=Y;-jE0 zf9Uvvmm8#iQm=OEnjx#h!+d{=!~P+3 zAM5TxHm}u9NKl7%Z~oG7=>+B~CkmWyPWunrdP{(;{0XPN<^Su#;-b9Y768=4wg>4O z1dB1z8-=BlcQVxXLac8@m6Scd?;0U4#0)tgD<82wR0zUi<{gs2qGeSN8#7(n=iUF+ zmXwi^NjL8W?5jy)Um_b5h0NgrL1T-waEovCLfGeuUhh>|uj=3vFJ|1sPVzv{O||LI zUH?gC{Fshfu}A*1*_YDdxg|@%Cm~T1G7??X_sq|k^Vi5Qta-_Q;_wN>z)N$zcy$j~ zdbyCe($R^PHxtheS=$V5gA522LO&@1k8L`^C@-@|g1a9yxJf5|YK9c7Ps09jhIUk{ z?@P-jdE^@*7lnW(3afyXuBbz?iQUB;TZ~MpmIAgMiv#oTtk;K5c&jGf939&LvT0*= zhJr>tK1VG+pNJ(^U|0@+m*Qi2R%U40{BB|6>`=wwZ>{^20FC=#aRx7~$;pA-lFfB3 zsEG{aNz~zDT@j+Rt9n{{`n1~`p(n5=lMQyXMCdUKyw2%JxP?i|#;*jpAN^zdH?BW1 zo0LvIIh2pfRlFwq`#d=~96kS)MVAcyeg6a$S(4B-{&J}^%>Q3p@CihQIsgegjxRzx z-1tjPt13!3CY#v@<6U6y`D;l~qIc}=*B3*RZ~kp`^gB(~M}F^{d}~BpW)A6Y7&rnU zLqkK=w%c?ila3Qo;(uv>;H8Z|>_?-=3Q-)RM44JU+&BW8rxIm_ZK&2QeRcY~=~CK# z_ixGt;HVDT7k}I}I(oypH!d_L=IQ@TelT^I{%WaNg)sd`0B;nl+f7>9*>N=0{Xhoj z{7aU?kuSyaKLof|=6?wA#M=L0?iX4A7v^^ParYwRn}*CZLo&JQe}v# E1Ar^3CIA2c literal 0 HcmV?d00001 diff --git a/packages/composer-documentation/_bnaTemplate/assets.default/img/create_trader.png b/packages/composer-documentation/_bnaTemplate/assets.default/img/create_trader.png new file mode 100644 index 0000000000000000000000000000000000000000..d60b8b8083182e27274735c38d94fa74bb23951d GIT binary patch literal 64673 zcmb@ubx>Pf*YMpIcXuyEic{Q+6)4`KAz0BA2^9C@4yAapBE_8`#R*!x!QF~WZ~_E) z>2*E#J=`os!&>%2C?g#|u;&S#{YbPio?EkmhKQ*H})Uf$Q+-)0?8Ma?NU3us_YxO$X$KTGp4H0vJ4X3APr)N)2NG+j%MU@R= zG?Zn*##Vl(Alv)-YeMD=W-6A5KbbD0V%w|06`P8Ag{66SO}mLpc<*+QvE9_5&rFeC zMd=O0*RNk0F@ydd5y8WDFb)!#Irr{CZ59ZF1|I^2^ zL|xsPEf^eLRmD3wHD#LNyp*6P%|b&+8F6yLUtU#3^l!gC7)AN{D3_P`;MD2iavK96 zfH>pHKN_LRwt}s!}RD`ghzY1S*{W%64950|PfAtqV{_ks9v&xiOsasfq4ZXG8nU>rgLA4Q19CjqpY!dpyy)Bb@_h_Z*C3> zzt2U$dE+)7?vb3d+Au{6mojA_nz?aE$)Ou^i5Gv3!QTrNV8d(v(fh4E0KD##s%MhW z77=~MU+q_TB5&?+nA}c8vi<#xKc4OHOo%EUTO6I95(AICHe~MEqaV)Bcu$gB$pH%z zAwQlJHjD-h-!BC)1kHn7)HKxnH#W|%SS##?2Y$MZjg48vbv^KK@nG9AN(;}e+Aye= zGwUx;hsoLST7>rAwWB5Eka5?xuLi62JSR_8*nAkb+ORN>OkT@~>mZw6_Vul({Mz*Q zdG&;UW~if>tGW7?QN&pJaBE|_uF6{J&6EZ>RqPNM*H-*;K!##k-_5d6^ zwWL(fh4RA{X&H&QTfK&eA+SI9!3fue*9S>o-@Nff3079*tt_F_rPaN#sm|XSMKCc& z?5{sNFg{u{_2-OyxG)VMT76aqa>Wu5SkW*LW6%NUr>Eh%32v;ZQ~0{8(Utb$H&GA< zb~Y&>!W33dtuSaO8s*=bFNNngSmKFJErkSqBga)A2`IYOPuY@HHzs=(7U!wA&|3hX z8U^&udy?otco`F>{LD9Rzkbs-*PFeqr1P(`4#^-uI`s<>I%fOx3GnxW@n6b^U1&Nl zta@;mNLJKreX^W(HFx&vm>ko<>q0b9J1R*(pnLH!Ew50J>osb@#+e^SX71)jr1>t# zJSN9H3XARUf)W4ph}c-F4MF14_HZYV0J$G3B8I+u>Mx|fC=G{VBu(q8;k$QTHE`a4 zf>IKEJ>_rf>K~d&wD{o1kqe$%i-)k(BNzCvo@In>jOxzO;Yu0 zu8&@}?40di_zNvBA67Y%m@RnSI)QYZJR?fx#8McBQa9U%Zwm4YG54syeRmvA4YeKEF(i5jGRqkTN0&%1D0u&%s7`FA4Qp`_h%!J51Vr)#d{{Q z@5ffB5gV;v>Hn@a$j@v2Bg^;xnKjk@GWR#^_q#L1i0u_+OgkW1eeCb01-2fdM)=H0 zSAm-wi2Rx=^2>Xno;J~x@$$CCaRIShLae<_|R78tIA(i^F$)H|?e5 zZroXv>1pK9BDQ`$QOTg67487@jgs)#qR0xQ-A6k^2EDx21}r-J;bGpx?CTTX?LxNk z?mlBbd1e}qDRzt9#_Id*Y@=DWeV2(uN_wik0feY{`U`#C8SKrHVh7Sb0#h8W^R;op zkF^`ekwGutovDVNOf61FUh7+@{53`E;n=CaHMZV|rQin@-=BeBI4|#U@XW4sY6h^y zKAhF@=DOcJ6L0o5Sk$NeLxJKE-?Q80kRb%#BY){qzB#{{^a zLwi{UN^^oC-T7YVGv=O`5Os z?he?lbBSh#F+Z;{c?L9))gWh}fmUe9+^#Okp_dVG zrxkK4e(DPcdIUjURc&~!&DngiDJRMvI<<16rP}E|

fq|2n!3-x6C~{+xk-S>1Gp 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 Z2i&af1B!YcPTj%3bTpoUYSe7s|35^bo2mc+ literal 0 HcmV?d00001 diff --git a/packages/composer-documentation/_bnaTemplate/assets.default/img/developer-tools-commands.png b/packages/composer-documentation/_bnaTemplate/assets.default/img/developer-tools-commands.png new file mode 100644 index 0000000000000000000000000000000000000000..c2787d6efaca7af37bf3018e3352139b36916f0d GIT binary patch literal 24157 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 literal 0 HcmV?d00001 diff --git a/packages/composer-documentation/_bnaTemplate/assets.default/img/icon-faqs.png b/packages/composer-documentation/_bnaTemplate/assets.default/img/icon-faqs.png new file mode 100644 index 0000000000000000000000000000000000000000..1ce28229ff68b5c1f427266bac1cfd02457d5d66 GIT binary patch literal 313 zcmV-90mlA`P)1Q~Cs+%mC9&rlAyL!fV_Wz`Hu0UwMc@->`-F19#X1p+brrl zR6bHT3`zY?`=g;5A!U+0=gWTq<3pz-sNVRA00000 LNkvXXu0mjfO!AC+ literal 0 HcmV?d00001 diff --git a/packages/composer-documentation/_bnaTemplate/assets.default/img/icon-getting-started.png b/packages/composer-documentation/_bnaTemplate/assets.default/img/icon-getting-started.png new file mode 100644 index 0000000000000000000000000000000000000000..e20a3c6f9e1e71c177b0997fab170a348a0beabf GIT binary patch literal 238 zcmVvTd01})U6gr3kkjp7s#|CBLCI_DaAgq|gQ*4l14XIV-)!fY1BABV*lrPf*^ zOoO&CCqpsZ5@QU)S2A=@DTVMxh3=C+poIc$mi`r*QhEc2Xb7QK@6<1|H|hr6d*Ni> o`~6TD_1)hn9~2I)zw=1H03=4Xdq6F)wg3PC07*qoM6N<$f=m8h_y7O^ literal 0 HcmV?d00001 diff --git a/packages/composer-documentation/_bnaTemplate/assets.default/img/icon-github.png b/packages/composer-documentation/_bnaTemplate/assets.default/img/icon-github.png new file mode 100644 index 0000000000000000000000000000000000000000..2786f1de7009ce103ac14bb9d5b913ed1f44b123 GIT binary patch literal 407 zcmeAS@N?(olHy`uVBq!ia0vp^q9Dw{3?%2B3|#`G`~rMJT!C~NHjt5#0TFI!Xn@O? zm6ZY66DCXmlAAVdnl)<{kg;aXnzpvKlP6E^-@kuZGkXotM5&S>zhDN33XTMYjEDw{ zfCdig_rFV0N;^WyCnru3PyBEH|| z%;5gvxYFx{y14F4*(WsERliDo`O@hL-RCC@7SD{f3;q{T_2sPaFSkGcjjb43lJ>n6U);dK VY;gSMETB&rJYD@<);T3K0RY>btGoaJ literal 0 HcmV?d00001 diff --git a/packages/composer-documentation/_bnaTemplate/assets.default/img/icon-google-plus.png b/packages/composer-documentation/_bnaTemplate/assets.default/img/icon-google-plus.png new file mode 100644 index 0000000000000000000000000000000000000000..c6e409320d19c63594c52aeeea616dc1929bbf81 GIT binary patch literal 227 zcmeAS@N?(olHy`uVBq!ia0vp^q9Dw{1|(OCFP#RYR(ZNOhE&|TdSxT;VFdx!fa!X% z%f3ix8Z#*`S>)$kuB;Ha@c^&GdA2t$KZHJ&dNj1AEQwF(Q}20tyXf5Z=L=U{tJ1e* zFWM5|%Dni^@2wZ|IU0k!Y#F`oY8VT*7563eeAaM?@!q@J{6XfG>VDt(yXu54T4b$t zE$m%T+V?dtgiE#e*3%b%Ua$Wj5N>e1_<(BH%=EyX`E2MWa>O zr44iRq(t^VlXyFmS^T%iUK5>#w#QbFVdQ&MBb@0J3>yVgLXD literal 0 HcmV?d00001 diff --git a/packages/composer-documentation/_bnaTemplate/assets.default/img/icon-link.png b/packages/composer-documentation/_bnaTemplate/assets.default/img/icon-link.png new file mode 100644 index 0000000000000000000000000000000000000000..cef9df0d44974edd6d90f0846d70b5a82cc9cb34 GIT binary patch literal 396 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbK}U4T!BE07*Q(6p`j4bXbck|4ie z24&r_;Ba&1Y>Qv%T+7~{=M9-& zaB6Zi+lO3NHKU@4!i9^TT~}YCRrtAIi?z|M=gG8h%$GduQZF`oHr}wd*!VwWiaqBp V_Rdx2^LB&6)YH|^Wt~$(69C!jZkqrA literal 0 HcmV?d00001 diff --git a/packages/composer-documentation/_bnaTemplate/assets.default/img/icon-menu.png b/packages/composer-documentation/_bnaTemplate/assets.default/img/icon-menu.png new file mode 100644 index 0000000000000000000000000000000000000000..9e041a4b41d0f595321198a5a9cb351b714b7c4e GIT binary patch literal 107 zcmeAS@N?(olHy`uVBq!ia0vp^l0YoL$P6TJYPh`sQfvV}A+A9B|Ns9>Z_d99WHFWm z`2{mLJiCzwyU6hlr98F=A zrj0JL?>imGL4DuTXM*6ePX!a>sW+7^VR~IQO_V3~|EUkP!5j0E(S~}hwxj?6002ov JPDHLkV1h+mZBqaM literal 0 HcmV?d00001 diff --git a/packages/composer-documentation/_bnaTemplate/assets.default/img/icon-rss-feed.png b/packages/composer-documentation/_bnaTemplate/assets.default/img/icon-rss-feed.png new file mode 100644 index 0000000000000000000000000000000000000000..23647b63cf4bbf4f4be178a2a3f25d989e563753 GIT binary patch literal 144 zcmeAS@N?(olHy`uVBq!ia0vp^q9Dw~3?#2q`mzEk&H$efS0J4R27PxYWCJt}Z=UMLpa*aJ*978y+CpR!H3tb(i>kts^?7Y&E)k%Y$Lt(s literal 0 HcmV?d00001 diff --git a/packages/composer-documentation/_bnaTemplate/assets.default/img/icon-twitter.png b/packages/composer-documentation/_bnaTemplate/assets.default/img/icon-twitter.png new file mode 100644 index 0000000000000000000000000000000000000000..1e01076a03d488195c8b2d3ad01689cd9480d782 GIT binary patch literal 376 zcmeAS@N?(olHy`uVBq!ia0vp^q9Dw{3?%2B3|#`GG6Q@pj>76;NIM#|ITV|iH8{fnAd+1lUlh;wY2x`H`P2ZEtg|`tJwuL ze72c(E?rjkf7=I@rIibXF5G=7p_Hqdx1i<2F{vvTmha7f_E3s3^z@Qds;Orh#7p-$ z%+T&hVg0SUf1_Ad`=6{5e=9^5mana?Gy9 d>+(*sf01G(;^K)DCn8I2+qP}y%$YqsJwU<5ix+R$u))>ye>>1bsgfYSV1@>ViiQLU z4g&>&2LFbJh75}W4ImZK&>-68y9=mlgQtsQh{WZ!7fuT`8St=P@Se2q5<6?im;d!w zf({k9KN%RJ_Z z-^lr9Cmm78cld)4|D+37PdDvMJiT^B_e$-f*QD(-%O#65Cd9rkSsT3V!EN{Lg>P4> z9<;aWzy0LmWR(M-AKPu)`dIRK^UXt*vqYk9ciK)XzLe`b=kLqvYe8wji$l7Lr-UVI bJkZKd>t;LHS>mh?bUTBmtDnm{r-UW|#XFji literal 0 HcmV?d00001 diff --git a/packages/composer-documentation/_bnaTemplate/assets.default/img/jumbotron-bottom.png b/packages/composer-documentation/_bnaTemplate/assets.default/img/jumbotron-bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..fbc53621426b75e97143f1c1f0ffe9ae11288336 GIT binary patch literal 104 zcmeAS@N?(olHy`uVBq!ia0vp^!a!`#$P6ScJ|rFjQfvV}A+A9B|Ns9>Z_d99WHFWm z`2{mLJiCzwbP0l+XkKSZg2D literal 0 HcmV?d00001 diff --git a/packages/composer-documentation/_bnaTemplate/assets.default/img/nav-bg.png b/packages/composer-documentation/_bnaTemplate/assets.default/img/nav-bg.png new file mode 100644 index 0000000000000000000000000000000000000000..2fedca957495b2ed5edd7f99d712dfd5be1a6a4a GIT binary patch literal 1177 zcmV;K1ZMk*P)T0{{R3>Jly@0000IP)t-s>gwv} z=jZI~?C$RF<>lq@@bKRA(>DMB1VTwfK~zY`w3R`w6fqD(pPgp!q+ws3fqmw~0eU#W zhx;D}S_3-}NC-uWl<38Zol=DZ-6evfjgF6Vq?kpE4Z?aOGDVS6b@b_6f#noCz^R&5 z;39MbIY^8O($nBJ;4m;+TfhPX6fd|5lqs|$CV`fcLyEKE?a~52l0ul2OT}qHnXHcJ zjMWAM0?2@)_ZMhtVL4eC*iZw^Q|(}GwX9YG&j4bIoxlN1z~hy>+6LENZ4Ie!5r!%< z2)c+$U1x+SE!Q~aSOHw!1fB|5h0F6P536dcG|ETc0q;u*uR4K*GS!u84e~?(F?cfo z#;AbR;quymt=Y>3)z}NLaCkqGpjZixqE(uF20Du&HhhPN=~rZhui2xlkta$_Sv@d=|^h-Y@d_NEdH-3rLu< z(#={32=Ug7F9qnB0;-1#EF}V9{g^vH1%H;W4 zpBF9Yx(ucjwF2E0`XVj?casB|jYaVfsih?^vIB&eovAsFn*gSAK|caQX|i_wkpL&c zli!7sVrzljR0jmF0hW+?tDmjUwKRAzF@Y+ta$KMX8|E5y2KN+P0=-Tkc87(pi3G4l zWEx`e7xKz({}8{cCmB5qm@ zqj*>G_h3XpxlgM zA5p~(LfQ5xEIMilNg#_h!vYY4yO{tY0D|?F&0|HvzP|nrm`f_ZE~V2t?@(y&=g@{; zk_i7|5i@^Ftpi%Op%?&wXFC9#tN@&J0A7nAUmAdE{J~7s2u%9Yfw*54lrzP`=Ey5? z3DHAj$MR;|`vpRA2oJ03wLX4ro#FkGP}C__CEnC7Vb4q7iq;Crk(QZjHruI rtK1v6y))y1 literal 0 HcmV?d00001 diff --git a/packages/composer-documentation/_bnaTemplate/assets.default/img/social-feed.svg b/packages/composer-documentation/_bnaTemplate/assets.default/img/social-feed.svg new file mode 100644 index 0000000000..66dcf29891 --- /dev/null +++ b/packages/composer-documentation/_bnaTemplate/assets.default/img/social-feed.svg @@ -0,0 +1,10 @@ + + + + diff --git a/packages/composer-documentation/_bnaTemplate/assets.default/img/social-github.svg b/packages/composer-documentation/_bnaTemplate/assets.default/img/social-github.svg new file mode 100644 index 0000000000..fcf8b68218 --- /dev/null +++ b/packages/composer-documentation/_bnaTemplate/assets.default/img/social-github.svg @@ -0,0 +1,10 @@ + + + + diff --git a/packages/composer-documentation/_bnaTemplate/assets.default/img/social-gplus.svg b/packages/composer-documentation/_bnaTemplate/assets.default/img/social-gplus.svg new file mode 100644 index 0000000000..e3e3bb39eb --- /dev/null +++ b/packages/composer-documentation/_bnaTemplate/assets.default/img/social-gplus.svg @@ -0,0 +1,10 @@ + + + + diff --git a/packages/composer-documentation/_bnaTemplate/assets.default/img/social-twitter.svg b/packages/composer-documentation/_bnaTemplate/assets.default/img/social-twitter.svg new file mode 100644 index 0000000000..17409cf977 --- /dev/null +++ b/packages/composer-documentation/_bnaTemplate/assets.default/img/social-twitter.svg @@ -0,0 +1,10 @@ + + + + diff --git a/packages/composer-documentation/_bnaTemplate/assets.default/img/stitch-line.png b/packages/composer-documentation/_bnaTemplate/assets.default/img/stitch-line.png new file mode 100644 index 0000000000000000000000000000000000000000..33d19199c2b6f5b7ce5666bf24a0222e6b6b78e5 GIT binary patch literal 164 zcmeAS@N?(olHy`uVBq!ia0vp^d>}Rl8<3oNC%zs?WqZ0fhG?8mPDn`LNKlaFXz2Ls zu*PB0F}4}+eyU_JMPA~6EW)snd7{+w!*jTpUw2-3!myRa*`TrE*w-H_ECnZ2AAIg( z(mAq$#olrKm*mcQY)OlF?v_k>pw2SkZ}a*47R+5UCLEJWe_rUx#BgArK(Z+30cD`I N44$rjF6*2UngI2%J6!+( literal 0 HcmV?d00001 diff --git a/packages/composer-documentation/_bnaTemplate/assets.default/img/submit_tx.png b/packages/composer-documentation/_bnaTemplate/assets.default/img/submit_tx.png new file mode 100644 index 0000000000000000000000000000000000000000..fd829667a326ac771940b9141979f1407291e4c0 GIT binary patch literal 77051 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%0Ay4xlTMe+ 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

sx(6K@>uzF9ZU^5MN&Bd% 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�}zMzSU@LM|5eAr5kaDfcwxjC}Adq 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

' + item.title + '

'; + appendString += '

' + item.content.substring(0, 150) + '...

'; + } + + searchResults.innerHTML = appendString; + } else { + searchResults.innerHTML = '

No results found

'; + } + } + + function getQueryVariable(variable) { + var query = window.location.search.substring(1); + var vars = query.split('&'); + + for (var i = 0; i < vars.length; i++) { + var pair = vars[i].split('='); + + if (pair[0] === variable) { + return decodeURIComponent(pair[1].replace(/\+/g, '%20')); + } + } + } + + var searchTerm = getQueryVariable('query'); + + if (searchTerm) { + document.getElementById('search-box').setAttribute("value", searchTerm); + + // Initalize lunr with the fields it will be searching on. I've given title + // a boost of 10 to indicate matches on this field are more important. + var idx = lunr(function () { + this.field('id'); + this.field('title', { boost: 10 }); + this.field('author'); + this.field('category'); + this.field('content'); + + for (var key in window.store) { // Add the data to lunr + this.add({ + 'id': key, + 'title': window.store[key].title, + 'author': window.store[key].author, + 'category': window.store[key].category, + 'content': window.store[key].content + }); + + } + }); + + var results = idx.search(searchTerm); // Get lunr to perform a search + displaySearchResults(results, window.store); // We'll write this in the next section + + } +})(); \ No newline at end of file diff --git a/packages/composer-documentation/_bnaTemplate/assets.default/js/search_bar.js b/packages/composer-documentation/_bnaTemplate/assets.default/js/search_bar.js new file mode 100644 index 0000000000..1d4619af51 --- /dev/null +++ b/packages/composer-documentation/_bnaTemplate/assets.default/js/search_bar.js @@ -0,0 +1,9 @@ +$(document).ready(function() { + $('.trigger').parent().on('click',function() { + $('.search-box').addClass('opened'); + $('.submit-input').removeClass('hide'); + $('.search-icon').addClass('hide'); + $('.search-box').focus(); + }); + +}); diff --git a/packages/composer-documentation/_bnaTemplate/phase1-markdown/acls.njk b/packages/composer-documentation/_bnaTemplate/phase1-markdown/acls.njk new file mode 100755 index 0000000000..38996da865 --- /dev/null +++ b/packages/composer-documentation/_bnaTemplate/phase1-markdown/acls.njk @@ -0,0 +1,20 @@ +# Access Control Rules + +{% for rule in acls.rules %} + +### {{rule.name}} + +{{rule.description}} + +* _Action_ : {{rule.action}} +* _Noun_ : {{rule.noun}} +* _Participant_ : {{rule.participant}} +* _Predicate_ : `{{rule.predicate}}` +{% if rule.transaction %}* Transaction : {{rule.transaction}}{% endif %} + +> If I am a **{{rule.participant}}** and {% if rule.transaction %}I am issuing **{{rule.transaction}}** on{% else %}I am accessing{% endif %} the resource **{{rule.noun}}** {% if rule.predicate == 'true' %}{% else %} and **{{rule.predicate}}** is true {% endif %} +then my action will be **{{rule.action}}**ed + +{% endfor %} + + diff --git a/packages/composer-documentation/_bnaTemplate/phase1-markdown/assets.njk b/packages/composer-documentation/_bnaTemplate/phase1-markdown/assets.njk new file mode 100755 index 0000000000..af5aace96e --- /dev/null +++ b/packages/composer-documentation/_bnaTemplate/phase1-markdown/assets.njk @@ -0,0 +1,19 @@ +# Asset Model + +{% for asset in types.asset %} +#### {{asset.name}} +**{{asset.fqn}}** - **{{asset.description}}** + +| Name | Type | Description | +| -------- | ---- | ----------- | +{% for id,info in asset.properties %}|{{id}}|{{info.type}}|{{info.description}}| +{% endfor %} + +{% for extra in asset.decorators.docs %} +{{ asset.decorators[extra] }} +{% endfor %} + +{% endfor %} + + + diff --git a/packages/composer-documentation/_bnaTemplate/phase1-markdown/class.njk b/packages/composer-documentation/_bnaTemplate/phase1-markdown/class.njk new file mode 100755 index 0000000000..c610a59b80 --- /dev/null +++ b/packages/composer-documentation/_bnaTemplate/phase1-markdown/class.njk @@ -0,0 +1,71 @@ +--- +layout: default +title: {{name}} ({{module | capitalize }} API) +section: api +sidebar: sidebars/accordion-toc0.md +excerpt: The Client, Admin, and Runtime components of Hyperledger Composer . +index-order: {{index}} +--- +# {{name}} + +{{commentData.description}} + +### Details +- **Extends** {{extends}} +- **Module** {{module}} + +### See also +{% for sa in seeAlso -%} +- {{sa}} +{% endfor %} + +## Method Summary +| Returns | Name | Description | +| :-------- | :---- | :----------- | +{% for method in methods %}| `{{method.returnType}}` | [{{method.name}}](#{{method.name | lower }}{% for args in method.methodArgs %}-{{args}}{% endfor %}) | {{method.description[0]}} | +{% endfor %} + +## Method Details +{% for method in methods %} +{% if method.name == 'constructor'%} +## new {{name}}() +{% else %} +## {{method.name}}({% for args in method.methodArgs %}{{args}}{% if not loop.last %},{% endif %}{% endfor %}) +{% endif %} + + + +{% for l in method.description -%} +{{l}} +{% endfor %} + +{% if method.example %} +### Example +```javascript +{{method.example}} +``` +{% endif %} + +{% if method.return %} + +### Returns +`{{method.return.type}}` - {% for l in method.return.description -%} +{{l}} +{% endfor %} + +{% endif %} + + +### Parameters +{% if method.parameters -%} +| Name | Type | Optional | Description | +| :----------- | :----------- | :----------- | :----------- | +{% for p in method.parameters -%} +|**{{p.name}}**|`{{p.type}}`|{{p.optional}}|{{p.description}}| +{% endfor %} +{% else %} + +No parameters +{% endif %} +{% endfor %} # method list +--- \ No newline at end of file diff --git a/packages/composer-documentation/_bnaTemplate/phase1-markdown/index.njk b/packages/composer-documentation/_bnaTemplate/phase1-markdown/index.njk new file mode 100755 index 0000000000..3a4a7991e8 --- /dev/null +++ b/packages/composer-documentation/_bnaTemplate/phase1-markdown/index.njk @@ -0,0 +1,31 @@ +{{core.readme}} + +# Summary + +## Asset Definition +| Namespace | Name | Description | +| -------- | ---- | ----------- | +{% for asset in types.asset %}| {{asset.fqn}} | {{asset.name}} | {{asset.description}} | +{% endfor %} + +## Transaction Definition +| Namespace | Name | Description | +| -------- | ---- | ----------- | +{% for tx in types.transaction %}| {{tx.fqn}} | {{tx.name}} | {{tx.description}} | +{% endfor %} + +## Participant Definition +| Namespace | Name | Description | +| -------- | ---- | ----------- | +{% for pt in types.participant %}| {{pt.fqn}} | {{pt.name}} | {{pt.description}} | +{% endfor %} + +## ACL +{% for rule in acls %}- {{rule.description}} +{% endfor %} + +## Queries +{% for query in queries %}- {{query.description}} +{% endfor %} + + diff --git a/packages/composer-documentation/_bnaTemplate/phase1-markdown/participants.njk b/packages/composer-documentation/_bnaTemplate/phase1-markdown/participants.njk new file mode 100755 index 0000000000..51668e515a --- /dev/null +++ b/packages/composer-documentation/_bnaTemplate/phase1-markdown/participants.njk @@ -0,0 +1,14 @@ + +# Particpant Model + +{% for pt in types.participant %} +#### {{pt.name}} +**{{pt.fqn}}** - **{{pt.description}}** + +| Name | Type | Description | +| -------- | ---- | ----------- | +{% for id,info in pt.properties %}|{{id}}|{{info.type}}|{{info.description}}| +{% endfor %} +{% endfor %} + + diff --git a/packages/composer-documentation/_bnaTemplate/phase1-markdown/queries.njk b/packages/composer-documentation/_bnaTemplate/phase1-markdown/queries.njk new file mode 100755 index 0000000000..8f551e9f4c --- /dev/null +++ b/packages/composer-documentation/_bnaTemplate/phase1-markdown/queries.njk @@ -0,0 +1,14 @@ +# Predefined Queries + +{% for query in queries %} + +### {{query.name}} +__{{query.description}}__ + +Will issue this query +``` +{{query.selector}} +``` + +{% endfor %} + diff --git a/packages/composer-documentation/_bnaTemplate/phase1-markdown/transactions.njk b/packages/composer-documentation/_bnaTemplate/phase1-markdown/transactions.njk new file mode 100755 index 0000000000..430941b45d --- /dev/null +++ b/packages/composer-documentation/_bnaTemplate/phase1-markdown/transactions.njk @@ -0,0 +1,19 @@ +# Transaction Functions Detail + +{% for fn in scripts.files %} + +*Identifier* {{fn.identifier}} +*Functions* +{% for f in fn.functions %} +#### {{f.name}} + +```javascript +{{f.text}} +``` + +![{{f.name}}]({{f.name}}.svg) + +{% endfor %} +{% endfor %} + + diff --git a/packages/composer-documentation/_bnaTemplate/phase2-html/html.default.njk b/packages/composer-documentation/_bnaTemplate/phase2-html/html.default.njk new file mode 100755 index 0000000000..bc7779e836 --- /dev/null +++ b/packages/composer-documentation/_bnaTemplate/phase2-html/html.default.njk @@ -0,0 +1,130 @@ + + + + + + + {{core.name}} + + + + + + + + + + + + + + + + + +
+
+
+ +
+ +
+ + + + {% if 'index' in basename %} + + {% else %} +
+

{{ basename | title }}

+
+ {% endif %} +
+ + + +
+ + + +
+
+ {{body}} +
+
+ + + +
+
+ + + + + +
+ + + + + + + + + diff --git a/packages/composer-documentation/_configs/bna-config.yaml b/packages/composer-documentation/_configs/bna-config.yaml new file mode 100644 index 0000000000..74dd577370 --- /dev/null +++ b/packages/composer-documentation/_configs/bna-config.yaml @@ -0,0 +1,53 @@ +--- +tasks: + # Root task that defines common data for all tasks + taskid : root + processor : root + options : + outputdir : ${_args.outdir} + templateroot: ${default.bnaTemplate} + tempdir : ${default.temp} + subtasks : + # Use Hyperledger Composer taks to extract all information and setup the context + - taskid : ParseNetwork + processor : composernetwork + options : + archive : "${_args.archive}" + docsPrefix : "${_args.extDocsRoot}" + # Uses multiple templates specified in 'inputdir' & 'pattern' to work on the context and produce markdown output files + - taskid : CreateMarkdown + processor : njk_multi + options : + inputdir : "phase1-markdown" + pattern : "**/*.njk" + outputextension : ".md" + outputdir : "${root.tempdir}" + + # From the markdown files that are created previously generate html + # This is a two step process, files needs to converted into html and then wrapped in + # the correct header/footer etc. Stream tasks allows the output from one task to go into the second + - taskid : HTML + processor: stream + options : + inputdir : "${root.tempdir}" + pattern : "**/*.md" + outputdir : "${_args.outdir}" + streamid : html1 + subtasks : + # For each markdown file stream into it this will convert into html and pass on the details via the stream" + - taskid : markdownhtml + processor : markdownit + # Single template to be used to process files via stream along with the context + - taskid : htmlrender + processor : njk_single + options : + inputdir : "phase2-html" + template : html.default.njk + extension: ".html" + # Finally need to copy the fixed assets to the output directory " + - taskid : FinalStep + processor : copy + options : + srcdir : "${root.templateroot}/assets.default/**/*" + destdir : "${_args.outdir}/assets" + diff --git a/packages/composer-documentation/_configs/sns-config.yaml b/packages/composer-documentation/_configs/sns-config.yaml new file mode 100644 index 0000000000..41275317b4 --- /dev/null +++ b/packages/composer-documentation/_configs/sns-config.yaml @@ -0,0 +1,56 @@ +--- +tasks: + # Root task that defines common data for all tasks + taskid : root + processor : root + options : + outputdir : ${_args.outdir} + outclean : false + templateroot: ${default.template} + tempdir : ${default.temp} + subtasks : + # Use Hyperledger Composer taks to extract all information and setup the context + - taskid : ParseNetwork + processor : composernetwork + options : + systemns : true + archive : "${_args.archive}" + docsPrefix : "${_args.nsDocsRoot}" + # Uses multiple templates specified in 'inputdir' & 'pattern' to work on the context and produce markdown output files + - taskid : CreateMarkdown + processor : njk_multi + options : + inputdir : "phase1-markdown" + pattern : "**/*.njk" + outputextension : ".md" + outputdir : "${root.tempdir}" + + # From the markdown files that are created previously generate html + # This is a two step process, files needs to converted into html and then wrapped in + # the correct header/footer etc. Stream tasks allows the output from one task to go into the second + - taskid : HTML + processor: stream + options : + inputdir : "${root.tempdir}" + pattern : "**/*.md" + outputdir : "${_args.outdir}" + streamId : html1 + subtasks : + # For each markdown file stream into it this will convert into html and pass on the details via the stream" + # - taskid : markdownhtml + # processor : markdownit + # Single template to be used to process files via stream along with the context + - taskid : htmlrender + processor : njk_single + options : + inputdir : "phase2a-jekyll" + template : jekyll.default.njk + extension: ".md" + streamId : html1 + # Finally need to copy the fixed assets to the output directory " + - taskid : FinalStep + processor : copy + options : + srcdir : "${root.templateroot}/assets.default/**/*" + destdir : "${_args.outdir}" + diff --git a/packages/composer-documentation/_template/assets.default/systemns-index.md b/packages/composer-documentation/_template/assets.default/systemns-index.md new file mode 100644 index 0000000000..0cacddbb3c --- /dev/null +++ b/packages/composer-documentation/_template/assets.default/systemns-index.md @@ -0,0 +1,9 @@ +--- +layout: default +title: System Name Space Reference +section: sns +sidebar: sidebars/accordion-toc0.md +excerpt: System Namesapce +index-order: 1500 +--- + diff --git a/packages/composer-documentation/_template/phase1-markdown/01_summary.njk b/packages/composer-documentation/_template/phase1-markdown/01_summary.njk new file mode 100755 index 0000000000..397c83be0e --- /dev/null +++ b/packages/composer-documentation/_template/phase1-markdown/01_summary.njk @@ -0,0 +1,21 @@ +# Summary + +## Asset Definition +| Namespace | Name | Description | +| -------- | ---- | ----------- | +{% for asset in types.asset %}| {{asset.fqn}} | {{asset.name}} | {{asset.description}} | +{% endfor %} + +## Transaction Definition +| Namespace | Name | Description | +| -------- | ---- | ----------- | +{% for tx in types.transaction %}| {{tx.fqn}} | {{tx.name}} | {{tx.description}} | +{% endfor %} + +## Participant Definition +| Namespace | Name | Description | +| -------- | ---- | ----------- | +{% for pt in types.participant %}| {{pt.fqn}} | {{pt.name}} | {{pt.description}} | +{% endfor %} + + diff --git a/packages/composer-documentation/_template/phase1-markdown/02_assets.njk b/packages/composer-documentation/_template/phase1-markdown/02_assets.njk new file mode 100755 index 0000000000..8f7df20c12 --- /dev/null +++ b/packages/composer-documentation/_template/phase1-markdown/02_assets.njk @@ -0,0 +1,33 @@ +# Asset Model + +{% for asset in types.asset %} +## {{asset.name}} +The fully qualified name is **{{asset.fqn}}** + +{{asset.description}} + +### Additional Information + +{% if asset.decorators.docs %} + {% for extra in asset.decorators.docs %} +{{ asset.decorators[extra] }} + {% endfor %} +{% endif %} + +### Properties + + +| Name | Type | Description | +| -------- | ---- | ----------- | +{% for id,info in asset.properties %}|{{id}}|{{info.type}}|{{info.description}}| +{% endfor %} + + +### References +{% if asset.decorators.docsuri %} +[{{asset.decorators.docsuri[0]}}]({{asset.decorators.docsuri[1]}}) +{% endif %} +{% endfor %} + + + diff --git a/packages/composer-documentation/_template/phase1-markdown/03_participants.njk b/packages/composer-documentation/_template/phase1-markdown/03_participants.njk new file mode 100755 index 0000000000..9619c1a323 --- /dev/null +++ b/packages/composer-documentation/_template/phase1-markdown/03_participants.njk @@ -0,0 +1,23 @@ + +# Particpant Model + +{% for pt in types.participant %} +### {{pt.name}} +The fully qualified name is **{{pt.fqn}}** + +{% if pt.decorators.docs %} + {{pt.description}} +{% else %} + {% for extra in pt.decorators.docs %} + {{ pt.decorators[extra] }} + {% endfor %} +{% endif %} + + +| Name | Type | Description | +| -------- | ---- | ----------- | +{% for id,info in pt.properties %}|{{id}}|{{info.type}}|{{info.description}}| +{% endfor %} + + +{% endfor %} \ No newline at end of file diff --git a/packages/composer-documentation/_template/phase1-markdown/04_transactions.njk b/packages/composer-documentation/_template/phase1-markdown/04_transactions.njk new file mode 100755 index 0000000000..d88147af5b --- /dev/null +++ b/packages/composer-documentation/_template/phase1-markdown/04_transactions.njk @@ -0,0 +1,26 @@ +# Transaction Functions Detail + +{% for tx in types.transaction %} +### {{tx.name}} +The fully qualified name is **{{tx.fqn}}** + +> {{tx.description}} + +{% if tx.decorators.docs %} + {{tx.description}} +{% else %} + {% for extra in tx.decorators.docs %} + {{ tx.decorators[extra] }} + {% endfor %} +{% endif %} + +| Name | Type | Description | +| --- | ---- | ----------- | +{% for id,info in tx.properties %}| {{id}} | {{info.type}} | {{info.description}} | +{% endfor %} + +{% endfor %} + + + + diff --git a/packages/composer-documentation/_template/phase2a-jekyll/jekyll.default.njk b/packages/composer-documentation/_template/phase2a-jekyll/jekyll.default.njk new file mode 100755 index 0000000000..19807cadeb --- /dev/null +++ b/packages/composer-documentation/_template/phase2a-jekyll/jekyll.default.njk @@ -0,0 +1,9 @@ +--- +layout: default +title: {{ basename | title }} +section: sns +sidebar: sidebars/accordion-toc0.md +excerpt: System Namesapce +index-order: {{callindex + 1500}} +--- +{{body}} diff --git a/packages/composer-documentation/bin/opus b/packages/composer-documentation/bin/opus new file mode 100755 index 0000000000..ce002ae6a4 --- /dev/null +++ b/packages/composer-documentation/bin/opus @@ -0,0 +1,43 @@ +#!/usr/bin/env node +'use strict'; + + +const opus = require('../lib/opus'); +const yargs = require('yargs'); + +// Standard Command yargs processing. +let results = yargs + .option('a', { + alias: 'archive', + demandOption: true, + describe: 'Archive file to document', + type: 'string' + }) + .option('o', { + alias: 'outdir', + demandOption: false, + default: './out', + describe: 'Output Directory', + type: 'string' + }).option('c', { + alias: 'config', + demandOption: false, + default: '', + describe: 'Path to the configuration file to use (advanced use only)', + type: 'string' + }) + .help().argv; + + +let result = opus(results); + +result.then(()=>{ + console.log('All done'); + // process.exit(0); +}).catch( + (err)=>{ + console.log('Fail'); + console.log(err); + process.exit(1); + }); + diff --git a/packages/composer-documentation/header.txt b/packages/composer-documentation/header.txt new file mode 100644 index 0000000000..53fc57962c --- /dev/null +++ b/packages/composer-documentation/header.txt @@ -0,0 +1,13 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ \ No newline at end of file diff --git a/packages/composer-documentation/index.js b/packages/composer-documentation/index.js new file mode 100644 index 0000000000..fc37c38b20 --- /dev/null +++ b/packages/composer-documentation/index.js @@ -0,0 +1,17 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +'use strict'; + +module.exports = require('./lib/opus.js'); \ No newline at end of file diff --git a/packages/composer-documentation/lib/grammar/modelfile-cmts.pegjs b/packages/composer-documentation/lib/grammar/modelfile-cmts.pegjs new file mode 100644 index 0000000000..1296314e2c --- /dev/null +++ b/packages/composer-documentation/lib/grammar/modelfile-cmts.pegjs @@ -0,0 +1,74 @@ +{ +var functions = {}; +var buffer = ''; +var f=''; +} + +start + = unit* {return functions;} + +unit + = func + / string + / multi_line_comment + / single_line_comment + / any_char + +NamespaceToken = "namespace" +AbstractToken = "abstract" +ConceptToken = "concept" +AssetToken = "asset" +TransactionToken = "transaction" +EventToken = "event" +ParticipantToken = "participant" +FromToken = "from" + +type + = "transaction" + / "asset" + / "event" + / "concept" + / "participant" + + +func + = m:multi_line_comment spaces? Decorators spaces? AbstractToken? spaces? type spaces id:identifier {functions[id] = m;} + / "function" spaces id:identifier {functions[id] = null;} + +multi_line_comment + = "/*" + ( !{return buffer.match(/\*\//)} c:. {buffer += c; } )* + { + var temp = buffer; + buffer = ''; + var temp2=f; + f=''; + //return "/*" + temp.replace(/\s+/g, ' '); + return temp; // this is the useful one + } + +single_line_comment + = "//" [^\r\n]* + +identifier + = a:([a-z] / [A-Z] / "_") b:([a-z] / [A-Z] / [0-9] /"_")* {return a + b.join("");} + +spaces + = [ \t\r\n]+ {return "";} + +string + = "\"" ("\\" . / [^"])* "\"" + / "'" ("\\" . / [^'])* "'" + +any_char + = . + +DecoratorArgs + = (string ",")* string + +Decorator + = "@docs" "(" DecoratorArgs ")" + / "@docsuri" "(" DecoratorArgs ")" + +Decorators + = (Decorator spaces )* \ No newline at end of file diff --git a/packages/composer-documentation/lib/opus.js b/packages/composer-documentation/lib/opus.js new file mode 100755 index 0000000000..5758425b5b --- /dev/null +++ b/packages/composer-documentation/lib/opus.js @@ -0,0 +1,229 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +'use strict'; +const winston = require('winston'); +const path = require('path'); +const fs = require('fs'); +const yaml = require('js-yaml'); +const util = require('util'); +const rimraf = util.promisify(require('rimraf')); +const mkdirp = require('mkdirp'); +const _ = require('lodash'); + +// setup the logging +winston.loggers.add('opus', { + console: { + level: 'silly', + colorize: true, + label: 'composer-opus' + } +}); + +const LOG = winston.loggers.get('opus'); + +let _processors = {}; +require('./processors/nunjucks')(_processors); +require('./processors/root')(_processors); +require('./processors/stream')(_processors); +require('./processors/markdownit')(_processors); +require('./processors/file')(_processors); +require('./processors/hc_network')(_processors); + + +/** + * This setups the internal context that holds all the state for the documentation processing + * + * @param {Object} node The element that is currently being setup + * @param {Object} context The context structure + * @param {Object} parent Parent node + */ +function setupContext(node, context, parent) { + + for (let i in node.subtasks) { + setupContext(node.subtasks[i], context, node); + } + + if (!node.options) { + node.options = {}; + } + + if (parent) { + node.options.parent = parent.taskid; + } + context[node.taskid] = node.options; + + LOG.info(`${node.taskid} ${node.processor}, parent = ${node.options.parent}`); +} + +let depth=0; + +/** + * Process a node. + * + * Each node, will has a pre and post execution phase - inbetween which each child node is procesed + * + * @param {Node} node node to process + * @param {Object} context current context to be processing + */ +async function processNode(node, context) { + + let process = _processors[node.processor]; + + // do any pre-processing that might be required + let pad = new Array(depth+1).join(' '); + LOG.info(`${pad}>>>> Processing..... ${node.taskid} [processor => ${node.processor}]`); + if (process.pre) { + await process.pre(context, node.options); + } + + // loop over all the children and process those + let t = _.cloneDeep(node.subtasks); + if(t){ + depth++; + for (const i of t) { + await processNode(i, context); + } + depth--; + } + + // do any post-processing that might be required + if (process.post) { + await process.post(context, node.options); + } + + LOG.info(`${pad}<<<< Processed...... ${node.taskid}`); +} + +/** + * Is an object? + * + * @param {Object} a value to test + * @return {boolean} True if object, false if not + */ +function isObject(a) { + return (!!a) && (a.constructor === Object); +} + +/** + * Given the String of a dotted path to a object property, actually resolve that to the value + * + * @param {String} path the.dot.notation.of.object.property + * @param {Object} obj to find the value of + * @return {Object} value of the supplied property + */ +function resolve(path, obj) { + return path.split('.').reduce(function (prev, curr) { + return prev[curr]; + }, obj); +} + +/** + * Function to vist the keys of an object and look for strings that + * have a specific regular expression. + * + * If they are found, then it will repalce said regular expression with the value + * from the same object. + * + * Single pass only! + * + * @param {Object} obj Object to process + * @param {Object} context The internal context + */ +function visit(obj, context) { + + let keys = Object.keys(obj); + + for (let key of keys) { + let value = obj[key]; + if (isObject(value)) { + visit(value, context); + } + if (typeof value === 'string') { + let matches = value.match(/\${(.*)}/); + if (matches) { + let replacement = resolve(matches[1], context); + let m = '${' + matches[1] + '}'; + obj[key] = value.replace(m, replacement); + } + } + } + +} +/** + * Main function for the system + * + * @param {Object} args details from yargs of command line options + */ +async function go(args) { + + let rimrafOptions = {}; + let context = { + _args: args, + default: { + template: path.resolve(__dirname, '..', '_template'), + temp: path.resolve(__dirname, '..', '_tmp'), + bnaTemplate: path.resolve(__dirname, '..', '_bnaTemplate'), + } + }; + + try { + + // set some defaults here and not in the bin, dir - as that will struggle with the relative location paths + if (!context._args.config || context._args.config===''){ + context._args.config=path.join(__dirname,'..','_configs','bna-config.yaml'); + } + + // load in the config information + let configFile = path.resolve(context._args.config); + LOG.info(`Loading configuration from ${configFile}`); + context.tasks = yaml.safeLoad(fs.readFileSync(configFile, 'utf8')).tasks; + + // + rimrafOptions = Object.assign({}, fs); + rimrafOptions.disableGlob = true; + + + + // put the meta data into the context tree + setupContext(context.tasks, context); + + // deal with any issues of variables + visit(context, context); + + // clean out the temporary and output directories + LOG.info(`Clearing out the ${context.root.tempdir}`); + await rimraf(context.root.tempdir, rimrafOptions); + + if (context.root.outclean===false){ + LOG.info(`NOT Clearing out the ${context.root.outputdir}`); + } else { + LOG.info(`Clearing out the ${context.root.outputdir}`); + await rimraf(context.root.outputdir, rimrafOptions); + } + mkdirp.sync(context.root.outputdir); + mkdirp.sync(context.root.tempdir); + // start off with the root node and off we go. + await processNode(context.tasks, context); + + LOG.info('All done'); + } catch (error) { + LOG.error(error); + throw error; + } + + +} + +module.exports = go; diff --git a/packages/composer-documentation/lib/processors/file.js b/packages/composer-documentation/lib/processors/file.js new file mode 100644 index 0000000000..2b1931d085 --- /dev/null +++ b/packages/composer-documentation/lib/processors/file.js @@ -0,0 +1,44 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +'use strict'; + +const vfs = require('vinyl-fs'); +const path = require('path'); +const winston = require('winston'); +const LOG = winston.loggers.get('opus'); +const map = require('map-stream'); + +let logname = function(file,cb){ + LOG.info(`Input glob is ${file.path}`); + cb(null,file); +}; + +let copy = async function(context,meta){ + + // use the vinyl fs to move the names + await new Promise( (resolve)=>{ + LOG.info(`Copying from ${meta.srcdir} to ${meta.destdir}`); + vfs.src([meta.srcdir]).pipe(map(logname)) + .pipe(vfs.dest(path.resolve(meta.destdir))) + .on('finish',resolve) + .on('close',resolve); + }); + + +}; + +module.exports = function(processors){ + processors.copy = { post: copy }; +}; \ No newline at end of file diff --git a/packages/composer-documentation/lib/processors/generators/basics.js b/packages/composer-documentation/lib/processors/generators/basics.js new file mode 100755 index 0000000000..4976bca541 --- /dev/null +++ b/packages/composer-documentation/lib/processors/generators/basics.js @@ -0,0 +1,33 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +'use strict'; +/** Gets the basic information and adds to the context + * @param {Object} context The internal context + * @return {Object} the updated context + */ +function basics(context) { + let bnd = context._bnd; + let bndMeta = bnd.getMetadata(); + context.core={}; + context.core.description = bnd.getDescription(); + context.core.name = bnd.getName(); + context.core.version = bnd.getVersion(); + context.core.readme = bndMeta.readme; + context.core.networkImage = bndMeta.packageJson.networkImage; + return context; +} + +module.exports = basics; \ No newline at end of file diff --git a/packages/composer-documentation/lib/processors/generators/classdeclarations.js b/packages/composer-documentation/lib/processors/generators/classdeclarations.js new file mode 100755 index 0000000000..63a10c6084 --- /dev/null +++ b/packages/composer-documentation/lib/processors/generators/classdeclarations.js @@ -0,0 +1,90 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +'use strict'; + +const parser = require('../parsers/modelfile-cmts.js'); +const doctrine = require('doctrine'); +const path = require('path'); +const fs = require('fs'); + +/** + * Merges the additional tags located from the comment with those already parses + * @param {Object} resource class declaration currently being processed + * @param {Object[]} tags array of tags to be added to the resource (if parameters) + */ +function tagMerge(resource,tags){ + + for (let t=0; t{ + // need to added the parsed comments to the existing structure + for (let i=0; i { + return current(context,options); + }, context); + + // remove the BusinessNetworkDefinition and the metadata + delete context._bnd; +}; + +module.exports = function(processors){ + processors.composernetwork = { post : process }; +}; \ No newline at end of file diff --git a/packages/composer-documentation/lib/processors/markdownit.js b/packages/composer-documentation/lib/processors/markdownit.js new file mode 100644 index 0000000000..9bdfe2423f --- /dev/null +++ b/packages/composer-documentation/lib/processors/markdownit.js @@ -0,0 +1,46 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +'use strict'; + +const fs = require('fs'); +const MarkdownIt = require('markdown-it'); +const markdownItAnchor = require('markdown-it-anchor'); + +let htmlify = async function(context,meta){ + + let md = new MarkdownIt(); + md.use(markdownItAnchor, { + level: 1, + permalink: false, + permalinkClass: 'header-anchor', + permalinkSymbol: '¶', + permalinkBefore: false + }); + + + let produce = (file,cb) => { + + let contents = fs.readFileSync(file.path); + file.contents = Buffer.from(md.render(contents.toString())); + cb(null, file); + }; + + context[meta.streamId].pipeElements.push(produce); + +}; + +module.exports = function(processors){ + processors.markdownit = { post: htmlify}; +}; \ No newline at end of file diff --git a/packages/composer-documentation/lib/processors/nunjucks.js b/packages/composer-documentation/lib/processors/nunjucks.js new file mode 100644 index 0000000000..f7a4b769f0 --- /dev/null +++ b/packages/composer-documentation/lib/processors/nunjucks.js @@ -0,0 +1,70 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +'use strict'; + +const path = require('path'); +const nunjucks = require('nunjucks'); +const vfs = require('vinyl-fs'); +const map = require('map-stream'); + + + +let multipleTemplates = async function(context,meta){ + + let templatePath = path.join(context.root.templateroot,meta.inputdir); + // Note autoescape false - otherwise the --> in the cto file is replaced with --> + let env = nunjucks.configure(templatePath, { autoescape: false }); + let srcPath = [path.join(templatePath,meta.pattern)]; + + let produce = (file,cb) =>{ + let renderedMarkdown = env.render(file.path, context); + file.contents = Buffer.from(renderedMarkdown); + file.extname=meta.outputextension; + cb(null, file); + }; + + await new Promise((resolve) => { + vfs.src(srcPath) + .pipe(map(produce)) + .pipe(vfs.dest(path.resolve(meta.outputdir))) + .on('finish',resolve); + }); + + +}; + +let singleTemplate = async function(context,meta){ + + let templatePath = path.join(context.root.templateroot,meta.inputdir); + context.callindex = 0; + // Note autoescape false - otherwise the --> in the cto file is replaced with --> + let env = nunjucks.configure(templatePath, { autoescape: false }); + + let produce = (file,cb) =>{ + context.body = file.contents.toString(); + let orderSeparator = file.basename.indexOf('_'); + context.callindex = parseInt(file.basename.substring(0,orderSeparator)); + context.basename = file.basename.substring(orderSeparator+1,file.basename.indexOf('.')); + let renderedMarkdown = env.render(meta.template, context); + file.contents = Buffer.from(renderedMarkdown); + file.extname=meta.extension; + cb(null, file); + }; + context[meta.streamId].pipeElements.push(produce); +}; + +module.exports = function(processors){ + processors.njk_multi = { post: multipleTemplates }; + processors.njk_single = { post: singleTemplate }; +}; \ No newline at end of file diff --git a/packages/composer-documentation/lib/processors/parsers/modelfile-cmts.js b/packages/composer-documentation/lib/processors/parsers/modelfile-cmts.js new file mode 100644 index 0000000000..430c91db4b --- /dev/null +++ b/packages/composer-documentation/lib/processors/parsers/modelfile-cmts.js @@ -0,0 +1,1365 @@ +module.exports = (function() { + "use strict"; + + /* + * Generated by PEG.js 0.9.0. + * + * http://pegjs.org/ + */ + + function peg$subclass(child, parent) { + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor(); + } + + function peg$SyntaxError(message, expected, found, location) { + this.message = message; + this.expected = expected; + this.found = found; + this.location = location; + this.name = "SyntaxError"; + + if (typeof Error.captureStackTrace === "function") { + Error.captureStackTrace(this, peg$SyntaxError); + } + } + + peg$subclass(peg$SyntaxError, Error); + + function peg$parse(input) { + var options = arguments.length > 1 ? arguments[1] : {}, + parser = this, + + peg$FAILED = {}, + + peg$startRuleFunctions = { start: peg$parsestart }, + peg$startRuleFunction = peg$parsestart, + + peg$c0 = function() {return functions;}, + peg$c1 = "namespace", + peg$c2 = { type: "literal", value: "namespace", description: "\"namespace\"" }, + peg$c3 = "abstract", + peg$c4 = { type: "literal", value: "abstract", description: "\"abstract\"" }, + peg$c5 = "concept", + peg$c6 = { type: "literal", value: "concept", description: "\"concept\"" }, + peg$c7 = "asset", + peg$c8 = { type: "literal", value: "asset", description: "\"asset\"" }, + peg$c9 = "transaction", + peg$c10 = { type: "literal", value: "transaction", description: "\"transaction\"" }, + peg$c11 = "event", + peg$c12 = { type: "literal", value: "event", description: "\"event\"" }, + peg$c13 = "participant", + peg$c14 = { type: "literal", value: "participant", description: "\"participant\"" }, + peg$c15 = "from", + peg$c16 = { type: "literal", value: "from", description: "\"from\"" }, + peg$c17 = function(m, id) {functions[id] = m;}, + peg$c18 = "function", + peg$c19 = { type: "literal", value: "function", description: "\"function\"" }, + peg$c20 = function(id) {functions[id] = null;}, + peg$c21 = "/*", + peg$c22 = { type: "literal", value: "/*", description: "\"/*\"" }, + peg$c23 = function() {return buffer.match(/\*\//)}, + peg$c24 = { type: "any", description: "any character" }, + peg$c25 = function(c) {buffer += c; }, + peg$c26 = function() { + var temp = buffer; + buffer = ''; + var temp2=f; + f=''; + //return "/*" + temp.replace(/\s+/g, ' '); + return temp; // this is the useful one + }, + peg$c27 = "//", + peg$c28 = { type: "literal", value: "//", description: "\"//\"" }, + peg$c29 = /^[^\r\n]/, + peg$c30 = { type: "class", value: "[^\\r\\n]", description: "[^\\r\\n]" }, + peg$c31 = /^[a-z]/, + peg$c32 = { type: "class", value: "[a-z]", description: "[a-z]" }, + peg$c33 = /^[A-Z]/, + peg$c34 = { type: "class", value: "[A-Z]", description: "[A-Z]" }, + peg$c35 = "_", + peg$c36 = { type: "literal", value: "_", description: "\"_\"" }, + peg$c37 = /^[0-9]/, + peg$c38 = { type: "class", value: "[0-9]", description: "[0-9]" }, + peg$c39 = function(a, b) {return a + b.join("");}, + peg$c40 = /^[ \t\r\n]/, + peg$c41 = { type: "class", value: "[ \\t\\r\\n]", description: "[ \\t\\r\\n]" }, + peg$c42 = function() {return "";}, + peg$c43 = "\"", + peg$c44 = { type: "literal", value: "\"", description: "\"\\\"\"" }, + peg$c45 = "\\", + peg$c46 = { type: "literal", value: "\\", description: "\"\\\\\"" }, + peg$c47 = /^[^"]/, + peg$c48 = { type: "class", value: "[^\"]", description: "[^\"]" }, + peg$c49 = "'", + peg$c50 = { type: "literal", value: "'", description: "\"'\"" }, + peg$c51 = /^[^']/, + peg$c52 = { type: "class", value: "[^']", description: "[^']" }, + peg$c53 = ",", + peg$c54 = { type: "literal", value: ",", description: "\",\"" }, + peg$c55 = "@docs", + peg$c56 = { type: "literal", value: "@docs", description: "\"@docs\"" }, + peg$c57 = "(", + peg$c58 = { type: "literal", value: "(", description: "\"(\"" }, + peg$c59 = ")", + peg$c60 = { type: "literal", value: ")", description: "\")\"" }, + peg$c61 = "@docsuri", + peg$c62 = { type: "literal", value: "@docsuri", description: "\"@docsuri\"" }, + + peg$currPos = 0, + peg$savedPos = 0, + peg$posDetailsCache = [{ line: 1, column: 1, seenCR: false }], + peg$maxFailPos = 0, + peg$maxFailExpected = [], + peg$silentFails = 0, + + peg$result; + + if ("startRule" in options) { + if (!(options.startRule in peg$startRuleFunctions)) { + throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); + } + + peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; + } + + function text() { + return input.substring(peg$savedPos, peg$currPos); + } + + function location() { + return peg$computeLocation(peg$savedPos, peg$currPos); + } + + function expected(description) { + throw peg$buildException( + null, + [{ type: "other", description: description }], + input.substring(peg$savedPos, peg$currPos), + peg$computeLocation(peg$savedPos, peg$currPos) + ); + } + + function error(message) { + throw peg$buildException( + message, + null, + input.substring(peg$savedPos, peg$currPos), + peg$computeLocation(peg$savedPos, peg$currPos) + ); + } + + function peg$computePosDetails(pos) { + var details = peg$posDetailsCache[pos], + p, ch; + + if (details) { + return details; + } else { + p = pos - 1; + while (!peg$posDetailsCache[p]) { + p--; + } + + details = peg$posDetailsCache[p]; + details = { + line: details.line, + column: details.column, + seenCR: details.seenCR + }; + + while (p < pos) { + ch = input.charAt(p); + if (ch === "\n") { + if (!details.seenCR) { details.line++; } + details.column = 1; + details.seenCR = false; + } else if (ch === "\r" || ch === "\u2028" || ch === "\u2029") { + details.line++; + details.column = 1; + details.seenCR = true; + } else { + details.column++; + details.seenCR = false; + } + + p++; + } + + peg$posDetailsCache[pos] = details; + return details; + } + } + + function peg$computeLocation(startPos, endPos) { + var startPosDetails = peg$computePosDetails(startPos), + endPosDetails = peg$computePosDetails(endPos); + + return { + start: { + offset: startPos, + line: startPosDetails.line, + column: startPosDetails.column + }, + end: { + offset: endPos, + line: endPosDetails.line, + column: endPosDetails.column + } + }; + } + + function peg$fail(expected) { + if (peg$currPos < peg$maxFailPos) { return; } + + if (peg$currPos > peg$maxFailPos) { + peg$maxFailPos = peg$currPos; + peg$maxFailExpected = []; + } + + peg$maxFailExpected.push(expected); + } + + function peg$buildException(message, expected, found, location) { + function cleanupExpected(expected) { + var i = 1; + + expected.sort(function(a, b) { + if (a.description < b.description) { + return -1; + } else if (a.description > b.description) { + return 1; + } else { + return 0; + } + }); + + while (i < expected.length) { + if (expected[i - 1] === expected[i]) { + expected.splice(i, 1); + } else { + i++; + } + } + } + + function buildMessage(expected, found) { + function stringEscape(s) { + function hex(ch) { return ch.charCodeAt(0).toString(16).toUpperCase(); } + + return s + .replace(/\\/g, '\\\\') + .replace(/"/g, '\\"') + .replace(/\x08/g, '\\b') + .replace(/\t/g, '\\t') + .replace(/\n/g, '\\n') + .replace(/\f/g, '\\f') + .replace(/\r/g, '\\r') + .replace(/[\x00-\x07\x0B\x0E\x0F]/g, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x80-\xFF]/g, function(ch) { return '\\x' + hex(ch); }) + .replace(/[\u0100-\u0FFF]/g, function(ch) { return '\\u0' + hex(ch); }) + .replace(/[\u1000-\uFFFF]/g, function(ch) { return '\\u' + hex(ch); }); + } + + var expectedDescs = new Array(expected.length), + expectedDesc, foundDesc, i; + + for (i = 0; i < expected.length; i++) { + expectedDescs[i] = expected[i].description; + } + + expectedDesc = expected.length > 1 + ? expectedDescs.slice(0, -1).join(", ") + + " or " + + expectedDescs[expected.length - 1] + : expectedDescs[0]; + + foundDesc = found ? "\"" + stringEscape(found) + "\"" : "end of input"; + + return "Expected " + expectedDesc + " but " + foundDesc + " found."; + } + + if (expected !== null) { + cleanupExpected(expected); + } + + return new peg$SyntaxError( + message !== null ? message : buildMessage(expected, found), + expected, + found, + location + ); + } + + function peg$parsestart() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + s2 = peg$parseunit(); + while (s2 !== peg$FAILED) { + s1.push(s2); + s2 = peg$parseunit(); + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c0(); + } + s0 = s1; + + return s0; + } + + function peg$parseunit() { + var s0; + + s0 = peg$parsefunc(); + if (s0 === peg$FAILED) { + s0 = peg$parsestring(); + if (s0 === peg$FAILED) { + s0 = peg$parsemulti_line_comment(); + if (s0 === peg$FAILED) { + s0 = peg$parsesingle_line_comment(); + if (s0 === peg$FAILED) { + s0 = peg$parseany_char(); + } + } + } + } + + return s0; + } + + function peg$parseNamespaceToken() { + var s0; + + if (input.substr(peg$currPos, 9) === peg$c1) { + s0 = peg$c1; + peg$currPos += 9; + } else { + s0 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c2); } + } + + return s0; + } + + function peg$parseAbstractToken() { + var s0; + + if (input.substr(peg$currPos, 8) === peg$c3) { + s0 = peg$c3; + peg$currPos += 8; + } else { + s0 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c4); } + } + + return s0; + } + + function peg$parseConceptToken() { + var s0; + + if (input.substr(peg$currPos, 7) === peg$c5) { + s0 = peg$c5; + peg$currPos += 7; + } else { + s0 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c6); } + } + + return s0; + } + + function peg$parseAssetToken() { + var s0; + + if (input.substr(peg$currPos, 5) === peg$c7) { + s0 = peg$c7; + peg$currPos += 5; + } else { + s0 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + + return s0; + } + + function peg$parseTransactionToken() { + var s0; + + if (input.substr(peg$currPos, 11) === peg$c9) { + s0 = peg$c9; + peg$currPos += 11; + } else { + s0 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c10); } + } + + return s0; + } + + function peg$parseEventToken() { + var s0; + + if (input.substr(peg$currPos, 5) === peg$c11) { + s0 = peg$c11; + peg$currPos += 5; + } else { + s0 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c12); } + } + + return s0; + } + + function peg$parseParticipantToken() { + var s0; + + if (input.substr(peg$currPos, 11) === peg$c13) { + s0 = peg$c13; + peg$currPos += 11; + } else { + s0 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c14); } + } + + return s0; + } + + function peg$parseFromToken() { + var s0; + + if (input.substr(peg$currPos, 4) === peg$c15) { + s0 = peg$c15; + peg$currPos += 4; + } else { + s0 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + + return s0; + } + + function peg$parsetype() { + var s0; + + if (input.substr(peg$currPos, 11) === peg$c9) { + s0 = peg$c9; + peg$currPos += 11; + } else { + s0 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c10); } + } + if (s0 === peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c7) { + s0 = peg$c7; + peg$currPos += 5; + } else { + s0 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c8); } + } + if (s0 === peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c11) { + s0 = peg$c11; + peg$currPos += 5; + } else { + s0 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c12); } + } + if (s0 === peg$FAILED) { + if (input.substr(peg$currPos, 7) === peg$c5) { + s0 = peg$c5; + peg$currPos += 7; + } else { + s0 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c6); } + } + if (s0 === peg$FAILED) { + if (input.substr(peg$currPos, 11) === peg$c13) { + s0 = peg$c13; + peg$currPos += 11; + } else { + s0 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c14); } + } + } + } + } + } + + return s0; + } + + function peg$parsefunc() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parsemulti_line_comment(); + if (s1 !== peg$FAILED) { + s2 = peg$parsespaces(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parseDecorators(); + if (s3 !== peg$FAILED) { + s4 = peg$parsespaces(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + s5 = peg$parseAbstractToken(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + s6 = peg$parsespaces(); + if (s6 === peg$FAILED) { + s6 = null; + } + if (s6 !== peg$FAILED) { + s7 = peg$parsetype(); + if (s7 !== peg$FAILED) { + s8 = peg$parsespaces(); + if (s8 !== peg$FAILED) { + s9 = peg$parseidentifier(); + if (s9 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c17(s1, s9); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.substr(peg$currPos, 8) === peg$c18) { + s1 = peg$c18; + peg$currPos += 8; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsespaces(); + if (s2 !== peg$FAILED) { + s3 = peg$parseidentifier(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c20(s3); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } + + return s0; + } + + function peg$parsemulti_line_comment() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c21) { + s1 = peg$c21; + peg$currPos += 2; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c22); } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + peg$savedPos = peg$currPos; + s4 = peg$c23(); + if (s4) { + s4 = peg$FAILED; + } else { + s4 = void 0; + } + if (s4 !== peg$FAILED) { + if (input.length > peg$currPos) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c24); } + } + if (s5 !== peg$FAILED) { + peg$savedPos = s3; + s4 = peg$c25(s5); + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + peg$savedPos = peg$currPos; + s4 = peg$c23(); + if (s4) { + s4 = peg$FAILED; + } else { + s4 = void 0; + } + if (s4 !== peg$FAILED) { + if (input.length > peg$currPos) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c24); } + } + if (s5 !== peg$FAILED) { + peg$savedPos = s3; + s4 = peg$c25(s5); + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c26(); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesingle_line_comment() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c27) { + s1 = peg$c27; + peg$currPos += 2; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c28); } + } + if (s1 !== peg$FAILED) { + s2 = []; + if (peg$c29.test(input.charAt(peg$currPos))) { + s3 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c30); } + } + while (s3 !== peg$FAILED) { + s2.push(s3); + if (peg$c29.test(input.charAt(peg$currPos))) { + s3 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c30); } + } + } + if (s2 !== peg$FAILED) { + s1 = [s1, s2]; + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseidentifier() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (peg$c31.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c32); } + } + if (s1 === peg$FAILED) { + if (peg$c33.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c34); } + } + if (s1 === peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 95) { + s1 = peg$c35; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c36); } + } + } + } + if (s1 !== peg$FAILED) { + s2 = []; + if (peg$c31.test(input.charAt(peg$currPos))) { + s3 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c32); } + } + if (s3 === peg$FAILED) { + if (peg$c33.test(input.charAt(peg$currPos))) { + s3 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c34); } + } + if (s3 === peg$FAILED) { + if (peg$c37.test(input.charAt(peg$currPos))) { + s3 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c38); } + } + if (s3 === peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 95) { + s3 = peg$c35; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c36); } + } + } + } + } + while (s3 !== peg$FAILED) { + s2.push(s3); + if (peg$c31.test(input.charAt(peg$currPos))) { + s3 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c32); } + } + if (s3 === peg$FAILED) { + if (peg$c33.test(input.charAt(peg$currPos))) { + s3 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c34); } + } + if (s3 === peg$FAILED) { + if (peg$c37.test(input.charAt(peg$currPos))) { + s3 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c38); } + } + if (s3 === peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 95) { + s3 = peg$c35; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c36); } + } + } + } + } + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c39(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsespaces() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c40.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c40.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c41); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c42(); + } + s0 = s1; + + return s0; + } + + function peg$parsestring() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 34) { + s1 = peg$c43; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c44); } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 92) { + s4 = peg$c45; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c46); } + } + if (s4 !== peg$FAILED) { + if (input.length > peg$currPos) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c24); } + } + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 === peg$FAILED) { + if (peg$c47.test(input.charAt(peg$currPos))) { + s3 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c48); } + } + } + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 92) { + s4 = peg$c45; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c46); } + } + if (s4 !== peg$FAILED) { + if (input.length > peg$currPos) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c24); } + } + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 === peg$FAILED) { + if (peg$c47.test(input.charAt(peg$currPos))) { + s3 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c48); } + } + } + } + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 34) { + s3 = peg$c43; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c44); } + } + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 39) { + s1 = peg$c49; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c50); } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 92) { + s4 = peg$c45; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c46); } + } + if (s4 !== peg$FAILED) { + if (input.length > peg$currPos) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c24); } + } + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 === peg$FAILED) { + if (peg$c51.test(input.charAt(peg$currPos))) { + s3 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c52); } + } + } + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 92) { + s4 = peg$c45; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c46); } + } + if (s4 !== peg$FAILED) { + if (input.length > peg$currPos) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c24); } + } + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 === peg$FAILED) { + if (peg$c51.test(input.charAt(peg$currPos))) { + s3 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c52); } + } + } + } + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 39) { + s3 = peg$c49; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c50); } + } + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } + + return s0; + } + + function peg$parseany_char() { + var s0; + + if (input.length > peg$currPos) { + s0 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s0 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c24); } + } + + return s0; + } + + function peg$parseDecoratorArgs() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = []; + s2 = peg$currPos; + s3 = peg$parsestring(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s4 = peg$c53; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + while (s2 !== peg$FAILED) { + s1.push(s2); + s2 = peg$currPos; + s3 = peg$parsestring(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s4 = peg$c53; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c54); } + } + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsestring(); + if (s2 !== peg$FAILED) { + s1 = [s1, s2]; + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseDecorator() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + if (input.substr(peg$currPos, 5) === peg$c55) { + s1 = peg$c55; + peg$currPos += 5; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c56); } + } + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 40) { + s2 = peg$c57; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parseDecoratorArgs(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 41) { + s4 = peg$c59; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c60); } + } + if (s4 !== peg$FAILED) { + s1 = [s1, s2, s3, s4]; + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.substr(peg$currPos, 8) === peg$c61) { + s1 = peg$c61; + peg$currPos += 8; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c62); } + } + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 40) { + s2 = peg$c57; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parseDecoratorArgs(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 41) { + s4 = peg$c59; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c60); } + } + if (s4 !== peg$FAILED) { + s1 = [s1, s2, s3, s4]; + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } + + return s0; + } + + function peg$parseDecorators() { + var s0, s1, s2, s3; + + s0 = []; + s1 = peg$currPos; + s2 = peg$parseDecorator(); + if (s2 !== peg$FAILED) { + s3 = peg$parsespaces(); + if (s3 !== peg$FAILED) { + s2 = [s2, s3]; + s1 = s2; + } else { + peg$currPos = s1; + s1 = peg$FAILED; + } + } else { + peg$currPos = s1; + s1 = peg$FAILED; + } + while (s1 !== peg$FAILED) { + s0.push(s1); + s1 = peg$currPos; + s2 = peg$parseDecorator(); + if (s2 !== peg$FAILED) { + s3 = peg$parsespaces(); + if (s3 !== peg$FAILED) { + s2 = [s2, s3]; + s1 = s2; + } else { + peg$currPos = s1; + s1 = peg$FAILED; + } + } else { + peg$currPos = s1; + s1 = peg$FAILED; + } + } + + return s0; + } + + + var functions = {}; + var buffer = ''; + var f=''; + + + peg$result = peg$startRuleFunction(); + + if (peg$result !== peg$FAILED && peg$currPos === input.length) { + return peg$result; + } else { + if (peg$result !== peg$FAILED && peg$currPos < input.length) { + peg$fail({ type: "end", description: "end of input" }); + } + + throw peg$buildException( + null, + peg$maxFailExpected, + peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, + peg$maxFailPos < input.length + ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) + : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) + ); + } + } + + return { + SyntaxError: peg$SyntaxError, + parse: peg$parse + }; +})(); diff --git a/packages/composer-documentation/lib/processors/root.js b/packages/composer-documentation/lib/processors/root.js new file mode 100644 index 0000000000..712c7d54c2 --- /dev/null +++ b/packages/composer-documentation/lib/processors/root.js @@ -0,0 +1,19 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +'use strict'; + +module.exports = function(processors){ + processors.root = { }; +}; \ No newline at end of file diff --git a/packages/composer-documentation/lib/processors/stream.js b/packages/composer-documentation/lib/processors/stream.js new file mode 100644 index 0000000000..313d4b68e4 --- /dev/null +++ b/packages/composer-documentation/lib/processors/stream.js @@ -0,0 +1,67 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +'use strict'; + +const path = require('path'); + +const vfs = require('vinyl-fs'); +const map = require('map-stream'); +const winston = require('winston'); +const LOG = winston.loggers.get('opus'); + +let setupStream = function(context,meta){ + + let srcPath = path.join(meta.inputdir,meta.pattern); + context[meta.streamId] = { + srcPath: srcPath, + pipeElements : [] + }; + LOG.info(`Setup the stream and stored in context under ${meta.streamId} ${srcPath}`); +}; + +let logname = function(file,cb){ + LOG.info(`Input glob is ${file.path}`); + cb(null,file); +}; + +let execute = function(context,meta){ + // get the array of the stream bits based on the key + // supplied + let pipeElements = context[meta.streamId].pipeElements; + + let glob =[context[meta.streamId].srcPath]; + LOG.info(`Input glob is ${glob}`); + LOG.info(`Output for stream will go to ${meta.outputdir} `); + let stream = vfs.src(glob).pipe(map(logname)); + + // create a promise and attach it to the stream to be resolved when the + // events on the stream are triggered. + let streamPromise = new Promise((resolve,reject)=>{ + stream.on('finish',resolve); + stream.on('error',reject); + stream.on('close',resolve); + }); + + for (let element of pipeElements){ + stream = stream.pipe(map(element)); + } + + stream.pipe(vfs.dest(path.resolve(meta.outputdir))); + // pass the streamPromise out to be handled outside + return streamPromise; +}; + +module.exports = function(processors){ + processors.stream = { pre : setupStream, post: execute }; +}; \ No newline at end of file diff --git a/packages/composer-documentation/lib/processors/visitors/info.js b/packages/composer-documentation/lib/processors/visitors/info.js new file mode 100644 index 0000000000..08d9ec1061 --- /dev/null +++ b/packages/composer-documentation/lib/processors/visitors/info.js @@ -0,0 +1,631 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +'use strict'; + + + +const AssetDeclaration = require('composer-common').AssetDeclaration; +const ClassDeclaration = require('composer-common').ClassDeclaration; +const EnumDeclaration = require('composer-common').EnumDeclaration; +const ConceptDeclaration = require('composer-common').ConceptDeclaration; +const EnumValueDeclaration = require('composer-common').EnumValueDeclaration; +const AclRule = require('composer-common').AclRule; +const Field = require('composer-common').Field; +const ModelFile = require('composer-common').ModelFile; +const Script = require('composer-common').Script; +const BusinessNetworkDefinition = require('composer-common').BusinessNetworkDefinition; +const RelationshipDeclaration = require('composer-common').RelationshipDeclaration; +const ParticipantDeclaration = require('composer-common').ParticipantDeclaration; +const TransactionDeclaration = require('composer-common').TransactionDeclaration; +const FunctionDeclaration = require('composer-common').FunctionDeclaration; +const Query = require('composer-common').Query; +const QueryFile = require('composer-common').QueryFile; +const debug = require('debug')('concerto:infovisitor'); + +/** + * Convert the contents of a {@link ModelManager} instance to a set of JSON + * Schema v4 files - one per concrete asset and transaction type. + * Set a fileWriter property (instance of {@link FileWriter}) on the parameters + * object to control where the generated code is written to disk. + * @private + * @class + * @memberof module:composer-common + */ +class InfoVisitor { + + /** + * Visitor design pattern + * @param {Object} thing - the object being visited + * @param {Object} parameters - the parameter + * @return {Object} the result of visiting or null + * @private + */ + visit(thing, parameters) { + + if (thing instanceof BusinessNetworkDefinition) { + return this.visitBusinessNetwork(thing, parameters); + } else if (thing instanceof ModelFile) { + return this.visitModelFile(thing, parameters); + } else if (thing instanceof AssetDeclaration) { + return this.visitAssetDeclaration(thing, parameters); + } else if (thing instanceof ParticipantDeclaration) { + return this.visitParticipantDeclaration(thing, parameters); + } else if (thing instanceof TransactionDeclaration) { + return this.visitTransactionDeclaration(thing, parameters); + } else if (thing instanceof EnumDeclaration) { + return this.visitEnumDeclaration(thing, parameters); + } else if (thing instanceof ConceptDeclaration) { + return this.visitConceptDeclaration(thing, parameters); + } else if (thing instanceof ClassDeclaration) { + return this.visitClassDeclaration(thing, parameters); + } else if (thing instanceof Field) { + return this.visitField(thing, parameters); + } else if (thing instanceof RelationshipDeclaration) { + return this.visitRelationshipDeclaration(thing, parameters); + } else if (thing instanceof EnumValueDeclaration) { + return this.visitEnumValueDeclaration(thing, parameters); + } else if (thing instanceof AclRule) { + return this.visitAclRule(thing, parameters); + } else if (thing instanceof Script) { + return this.visitScript(thing, parameters); + } else if (thing instanceof FunctionDeclaration) { + return this.visitFunctionDeclaration(thing, parameters); + } else if (thing instanceof QueryFile) { + return this.visitQueryFile(thing, parameters); + } else if (thing instanceof Query) { + return this.visitQuery(thing, parameters); + } else { + throw new Error('Unrecognised type: ' + typeof thing ); + } + } + + /** + * Visitor design pattern + * @param {BusinessNetworkDefinition} businessNetworkDefinition - the object being visited + * @param {Object} parameters - the parameter + * @return {Object} the result of visiting or null + * @private + */ + visitBusinessNetwork(businessNetworkDefinition, parameters) { + + businessNetworkDefinition.getModelManager().getModelFiles().forEach((decl) => { + decl.accept(this, parameters); + }); + + parameters.ctx.scripts = { files: [] }; + businessNetworkDefinition.getScriptManager().getScripts().forEach( (script) => { + script.accept(this,parameters); + }); + + parameters.ctx.acls = { rules: [] }; + businessNetworkDefinition.getAclManager().getAclRules().forEach((aclRule) => { + aclRule.accept(this, parameters); + }); + if (parameters.ctx.acls.rules.length===0){ + delete parameters.ctx.acls; + } + + let queryFile = businessNetworkDefinition.getQueryManager().getQueryFile(); + if (queryFile){ + parameters.ctx.queries = queryFile.accept(this,parameters) ; + } + + + return null; + } + + /** + * Visitor design pattern + * @param {AclManager} aclRule - the object being visited + * @param {Object} parameters - the parameter + * @return {Object} the result of visiting or null + * @private + */ + visitAclRule(aclRule, parameters) { + debug('entering vistAclManager'); + + let jsonSchemas = { + description: aclRule.getDescription(), + name: aclRule.getName(), + verb: aclRule.getVerbs(), + noun: aclRule.getNoun().getFullyQualifiedName(), + + participant: aclRule.getParticipant().toString().replace(/ModelBinding/i,'').trim(), + transaction: aclRule.getTransaction(), + predicate: aclRule.getPredicate().getExpression(), + action: aclRule.getAction() + }; + parameters.ctx.acls.rules.push(jsonSchemas); + + return null; + + } + + /** + * Visitor design pattern + * @param {Script} queryFile - the object being visited + * @param {Object} parameters - the parameter + * @return {Object} the result of visiting or null + * @private + */ + visitQueryFile(queryFile,parameters){ + debug('enterng visitqueeryfile'); + + let schema = []; + + queryFile.getQueries().forEach((query)=>{ + schema.push(query.accept(this,parameters)); + }); + + return schema; + } + + + /** + * Visitor design pattern + * @param {Script} query - the object being visited + * @param {Object} parameters - the parameter + * @return {Object} the result of visiting or null + * @private + */ + visitQuery(query,parameters){ + debug('enterng visitquery'); + + + let jsonSchemas = { + description: query.getDescription(), + name: query.getName(), + selector: query.getSelect().getText() + + }; + + return jsonSchemas; + } + + /** + * Visitor design pattern + * @param {Script} script - the object being visited + * @param {Object} parameters - the parameter + * @return {Object} the result of visiting or null + * @private + */ + visitScript(script, parameters) { + debug('entering visitScript'); + + let jsonSchemas = { + identifier: script.getIdentifier(), + name: script.getName(), + functions:[] + + }; + + script.getFunctionDeclarations().forEach((declaration) => { + parameters.first = true; + jsonSchemas.functions.push(declaration.accept(this, parameters)); + }); + + parameters.ctx.scripts.files.push(jsonSchemas); + + return jsonSchemas; + + } + + + /** + * Visitor design pattern + * @param {ModelFile} modelFile - the object being visited + * @param {Object} parameters - the parameter + * @return {Object} the result of visiting or null + * @private + */ + visitModelFile(modelFile, parameters) { + debug('entering visitModelFile', modelFile.getNamespace()); + + // Save the model file so that we have access to it later. + parameters.modelFile = modelFile; + + // Visit all of the asset and transaction declarations, but ignore the abstract ones. + let jsonSchemas = []; + modelFile.getAssetDeclarations() + .concat(modelFile.getTransactionDeclarations()) + .concat(modelFile.getConceptDeclarations()) + .concat(modelFile.getParticipantDeclarations()) + .concat(modelFile.getEventDeclarations()) + .concat(modelFile.getEnumDeclarations()) + .filter((declaration) => { + + if (parameters.system){ + // only system types + return declaration.isSystemType(); + } else { + return !declaration.isSystemType(); + } + + }) + .forEach((declaration) => { + parameters.first = true; + jsonSchemas.push(declaration.accept(this, parameters)); + }); + return jsonSchemas; + + } + + /** + * Visitor design pattern + * @param {AssetDeclaration} assetDeclaration - the object being visited + * @param {Object} parameters - the parameter + * @return {Object} the result of visiting or null + * @private + */ + visitAssetDeclaration(assetDeclaration, parameters) { + debug('entering visitAssetDeclaration', assetDeclaration.getName()); + + // If this is the first declaration, then we are building a schema for this asset. + let jsonSchema = {}; + if (parameters.first) { + jsonSchema.$schema = 'http://json-schema.org/draft-04/schema#'; + jsonSchema.title = assetDeclaration.getName(); + jsonSchema.description = `An asset named ${assetDeclaration.getName()}`; + jsonSchema.type = 'asset'; + parameters.first = false; + } + + // Apply all the common schema elements. + return this.visitClassDeclarationCommon(assetDeclaration, parameters, jsonSchema); + + + } + + + /** + * Visitor design pattern + * @param {FunctionDeclaration} fnDeclaration - the object being visited + * @param {Object} parameters - the parameter + * @return {Object} the result of visiting or null + * @private + */ + visitFunctionDeclaration(fnDeclaration,parameters){ + debug('entering visitFunctionDeclaration', fnDeclaration.getName()); + + // If this is the first declaration, then we are building a schema for this asset. + let jsonSchema = {text:fnDeclaration.getFunctionText(), + name:fnDeclaration.getName(), + paramaterNames:fnDeclaration.getParameterNames(), + paramaterTypes:fnDeclaration.getParameterTypes() + }; + + return jsonSchema; + } + + /** + * Visitor design pattern + * @param {ParticipantDeclaration} participantDeclaration - the object being visited + * @param {Object} parameters - the parameter + * @return {Object} the result of visiting or null + * @private + */ + visitParticipantDeclaration(participantDeclaration, parameters) { + debug('entering visitParticipantDeclaration', participantDeclaration.getName()); + + // If this is the first declaration, then we are building a schema for this asset. + let jsonSchema = {}; + if (parameters.first) { + jsonSchema.$schema = 'http://json-schema.org/draft-04/schema#'; + jsonSchema.title = participantDeclaration.getName(); + jsonSchema.description = `An participant named ${participantDeclaration.getName()}`; + jsonSchema.type = 'participant'; + parameters.first = false; + } + + // Apply all the common schema elements. + return this.visitClassDeclarationCommon(participantDeclaration, parameters, jsonSchema); + + } + + /** + * Visitor design pattern + * @param {TransactionDeclaration} transactionDeclaration - the object being visited + * @param {Object} parameters - the parameter + * @return {Object} the result of visiting or null + * @private + */ + visitTransactionDeclaration(transactionDeclaration, parameters) { + debug('entering visitTransactionDeclaration', transactionDeclaration.getName()); + + // If this is the top declaration, then we are building a schema for this transaction. + let jsonSchema = {}; + if (parameters.first) { + jsonSchema.$schema = 'http://json-schema.org/draft-04/schema#'; + jsonSchema.title = transactionDeclaration.getName(); + jsonSchema.description = `A transaction named ${transactionDeclaration.getName()}`; + jsonSchema.type = 'transaction'; + parameters.first = false; + } + + // Apply all the common schema elements. + return this.visitClassDeclarationCommon(transactionDeclaration, parameters, jsonSchema); + + } + + /** + * Visitor design pattern + * @param {ConceptDeclaration} conceptDeclaration - the object being visited + * @param {Object} parameters - the parameter + * @return {Object} the result of visiting or null + * @private + */ + visitConceptDeclaration(conceptDeclaration, parameters) { + debug('entering visitConceptDeclaration', conceptDeclaration.getName()); + + // If this is the first declaration, then we are building a schema for this asset. + let jsonSchema = {}; + if (parameters.first) { + jsonSchema.$schema = 'http://json-schema.org/draft-04/schema#'; + jsonSchema.title = conceptDeclaration.getName(); + jsonSchema.description = `A concept named ${conceptDeclaration.getName()}`; + jsonSchema.type = 'concept'; + parameters.first = false; + } + + // Apply all the common schema elements. + return this.visitClassDeclarationCommon(conceptDeclaration, parameters, jsonSchema); + } + + /** + * Visitor design pattern + * @param {ClassDeclaration} classDeclaration - the object being visited + * @param {Object} parameters - the parameter + * @return {Object} the result of visiting or null + * @private + */ + visitClassDeclaration(classDeclaration, parameters) { + debug('entering visitClassDeclaration', classDeclaration.getName()); + + // Apply all the common schema elements. + return this.visitClassDeclarationCommon(classDeclaration, parameters, {}); + + } + + /** + * Visitor design pattern + * @param {ClassDeclaration} classDeclaration - the object being visited + * @param {Object} parameters - the parameter + * @param {Object} jsonSchema - the base JSON Schema object to use + * @return {Object} the result of visiting or null + * @private + */ + visitClassDeclarationCommon(classDeclaration, parameters, jsonSchema) { + debug('entering visitClassDeclarationCommon', classDeclaration.getName()); + + // Set the required properties into the schema. + Object.assign(jsonSchema, { + decorators: {}, + properties: {}, + allproperties: {}, + required: [] + }); + + if (!jsonSchema.type) { + jsonSchema.type = 'object'; + } + + // If no description exists, add it now. + if (!jsonSchema.description) { + jsonSchema.description = `An instance of ${classDeclaration.getFullyQualifiedName()}`; + } + + // Walk over all of the properties of this class and its super classes. + classDeclaration.getOwnProperties().forEach((property) => { + + // Get the schema for the property. + jsonSchema.properties[property.getName()] = property.accept(this, parameters); + + // If the property is required, add it to the list. + if (!property.isOptional()) { + jsonSchema.required.push(property.getName()); + } + + }); + + // Walk over all of the properties of this class and its super classes. + // classDeclaration.getProperties().forEach((property) => { + + // // Get the schema for the property. + // jsonSchema.allproperties[property.getName()] = property.accept(this, parameters); + + // // If the property is required, add it to the list. + // if (!property.isOptional()) { + // jsonSchema.required.push(property.getName()); + // } + + // }); + + + classDeclaration.getDecorators().forEach((decorator) =>{ + jsonSchema.decorators[decorator.getName()] = decorator.getArguments(); + }); + + // If this is a top level schema, now we need to write it to disk. + if (jsonSchema.$schema) { + + // let fileName = `${classDeclaration.getFullyQualifiedName()}.json`; + let newInfo = { + 'fqn': classDeclaration.getFullyQualifiedName(), + 'name': jsonSchema.title, + 'description': jsonSchema.description, + 'type': jsonSchema.type, + 'properties': jsonSchema.properties, + 'allproperties' :jsonSchema.allproperties, + 'decorators': jsonSchema.decorators + }; + + parameters.data[jsonSchema.type].push(newInfo); + } + + // Return the created schema. + return jsonSchema; + + } + + /** + * Visitor design pattern + * @param {Field} field - the object being visited + * @param {Object} parameters - the parameter + * @return {Object} the result of visiting or null + * @private + */ + visitField(field, parameters) { + debug('entering visitField', field.getName()); + + // Is this a primitive typed property? + let jsonSchema; + if (field.isPrimitive()) { + + // Render the type as JSON Schema. + jsonSchema = {}; + switch (field.getType()) { + case 'String': + jsonSchema.type = 'string'; + break; + case 'Double': + jsonSchema.type = 'number'; + break; + case 'Integer': + jsonSchema.type = 'integer'; + break; + case 'Long': + jsonSchema.type = 'integer'; + break; + case 'DateTime': + jsonSchema.format = 'date-time'; + jsonSchema.type = 'string'; + break; + case 'Boolean': + jsonSchema.type = 'boolean'; + break; + } + + // If this field has a default value, add it. + if (field.getDefaultValue()) { + jsonSchema.default = field.getDefaultValue(); + } + + // If this is the identifying field, mark it as such. + if (field.getName() === field.getParent().getIdentifierFieldName()) { + jsonSchema.description = 'The instance identifier for this type'; + } + + // Not primitive, so must be a class or enumeration! + } else { + + // Look up the type of the property. + let type = parameters.modelFile.getType(field.getType()); + + // Render the type as JSON Schema. + jsonSchema = type.accept(this, parameters); + + } + + // Is the type an array? + if (field.isArray()) { + jsonSchema = { + type: 'array', + items: jsonSchema + }; + } + + // add on the decorators + jsonSchema.decorators={}; + field.getDecorators().forEach((decorator) =>{ + jsonSchema.decorators[decorator.getName()] = decorator.getArguments(); + }); + + // Return the schema. + return jsonSchema; + + } + + /** + * Visitor design pattern + * @param {EnumDeclaration} enumDeclaration - the object being visited + * @param {Object} parameters - the parameter + * @return {Object} the result of visiting or null + * @private + */ + visitEnumDeclaration(enumDeclaration, parameters) { + debug('entering visitEnumDeclaration', enumDeclaration.getName()); + + // Create the schema. + let jsonSchema = { + type: 'enum', + enum: [] + }; + + // Walk over all of the properties which should just be enum value declarations. + enumDeclaration.getProperties().forEach((property) => { + jsonSchema.enum.push(property.accept(this, parameters)); + }); + + // Return the schema. + return jsonSchema; + + } + + /** + * Visitor design pattern + * @param {EnumValueDeclaration} enumValueDeclaration - the object being visited + * @param {Object} parameters - the parameter + * @return {Object} the result of visiting or null + * @private + */ + visitEnumValueDeclaration(enumValueDeclaration, parameters) { + debug('entering visitEnumValueDeclaration', enumValueDeclaration.getName()); + + // The "schema" in this case is just the name of the value. + return enumValueDeclaration.getName(); + + } + + /** + * Visitor design pattern + * @param {RelationshipDeclaration} relationshipDeclaration - the object being visited + * @param {Object} parameters - the parameter + * @return {Object} the result of visiting or null + * @privateparent + */ + visitRelationshipDeclaration(relationshipDeclaration, parameters) { + debug('entering visitRelationship', relationshipDeclaration.getName()); + + // Create the schema. + let jsonSchema = { + type: 'string', + description: `The identifier of an instance of ${relationshipDeclaration.getFullyQualifiedTypeName()}` + }; + + // Is the type an array? + if (relationshipDeclaration.isArray()) { + jsonSchema = { + type: 'array', + items: jsonSchema + }; + } + + // Return the schema. + return jsonSchema; + + } +} + +module.exports = InfoVisitor; \ No newline at end of file diff --git a/packages/composer-documentation/package.json b/packages/composer-documentation/package.json new file mode 100755 index 0000000000..bda685b5ef --- /dev/null +++ b/packages/composer-documentation/package.json @@ -0,0 +1,99 @@ +{ + "name": "composer-documentation", + "version": "0.19.0", + "description": "Generates documentation packages for Hyperlegder Composer Business Networks", + "bin": { + "opus": "bin/opus" + }, + "main": "index.js", + "scripts": { + "pretest": "pegjs ./lib/grammar/modelfile-cmts.pegjs ./lib/processors/parsers/modelfile-cmts.js && npm run lint", + "systemnsDocs": "./bin/opus --archive dummy.bna --outdir ./out --config ./_configs/sns-config.yaml --nsDocsRoot=../composer-common/lib/system/", + "lint": "eslint .", + "postlint": "npm run licchk", + "licchk": "license-check", + "test": "nyc mocha --recursive -t 10000", + "mocha": "mocha --recursive -t 10000", + "nyc": "nyc mocha --recursive -t 10000" + }, + "keywords": [], + "author": "MBW", + "license": "Apache-2", + "devDependencies": { + "chai": "3.5.0", + "chai-as-promised": "6.0.0", + "chai-things": "0.2.0", + "eslint": "3.17.1", + "folder-zip-sync": "1.0.4", + "jsdoc": "3.5.5", + "license-check": "1.1.5", + "mocha": "3.4.2", + "mockery": "2.0.0", + "moxios": "0.4.0", + "nyc": "11.1.0", + "pegjs": "0.9.0", + "sinon": "2.3.8" + }, + "dependencies": { + "chalk": "1.1.3", + "comment-parser": "0.4.0", + "composer-admin": "0.19.0", + "composer-client": "0.19.0", + "composer-common": "0.19.0", + "debug-stream": "3.0.1", + "doctrine": "2.0.0", + "js-yaml": "3.10.0", + "lodash": "4.17.4", + "lodash.clonedeep": "4.5.0", + "map-stream": "0.1.0", + "markdown-it": "8.4.0", + "markdown-it-anchor": "4.0.0", + "mkdirp": "0.5.1", + "nunjucks": "3.0.1", + "ora": "1.2.0", + "prettyoutput": "1.1.1", + "rimraf": "2.5.4", + "vinyl-fs": "2.4.4", + "yargs": "10.0.3" + } + , + "license-check-config": { + "src": [ + "**/*.js", + "!./coverage/**/*", + "!./node_modules/**/*", + "!./out/**/*", + "!./lib/processors/parsers/**", + "!_bnaTemplate/**", + "!_configs/**", + "!_template/**" + ], + "path": "header.txt", + "blocking": true, + "logInfo": false, + "logError": true + }, + "nyc": { + "exclude": [ + "coverage/**", + "lib/processors/parsers/**", + "out/**", + "scripts/**", + "systest/**", + "test/**", + "_bnaTemplate/**", + "_configs/**", + "_template/**" + ], + "reporter": [ + "text-summary", + "html" + ], + "all": true, + "check-coverage": true, + "statements": 100, + "branches": 100, + "functions": 100, + "lines": 100 + } +} diff --git a/packages/composer-documentation/test/carauction-network.bna b/packages/composer-documentation/test/carauction-network.bna new file mode 100644 index 0000000000000000000000000000000000000000..a3424b6285f82268d289a6243c5a026c15e5042c GIT binary patch literal 7837 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 literal 0 HcmV?d00001 diff --git a/packages/composer-documentation/test/opus.js b/packages/composer-documentation/test/opus.js new file mode 100644 index 0000000000..84f4c6a0fe --- /dev/null +++ b/packages/composer-documentation/test/opus.js @@ -0,0 +1,104 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +'use strict'; + +const chai = require('chai'); +chai.should(); +chai.use(require('chai-as-promised')); +chai.use(require('chai-things')); +const sinon = require('sinon'); +const os = require('os'); +const path = require('path'); +const fs = require('fs'); +const tool = require('../index.js'); +const rimrafOptions = { disableGlob: true }; +const mockery = require('mockery'); +const {promisify} = require('util'); +const rimraf = promisify(require('rimraf')); +const InfoVisitor = require('../lib/processors/visitors/info.js'); + +describe('ClassUndertest', function () { + + let sandbox; + let tmpDir; + + before('Create temporary working directory',()=>{ + // The parent directory for the new temporary directory + const ostemp = os.tmpdir(); + tmpDir = fs.mkdtempSync(`${ostemp}${path.sep}`); + }); + + after('Remove the temporary directory',()=>{ + return rimraf(tmpDir,rimrafOptions); + }); + + beforeEach(() => { + sandbox = sinon.sandbox.create(); + mockery.enable({ + warnOnReplace: false, + warnOnUnregistered: false + }); + }); + + afterEach(() => { + sandbox.restore(); + mockery.deregisterAll(); + }); + + describe('#mainCode', async function() { + it('should handle the system namespace', async function() { + let args = { outdir:path.join(tmpDir,'systemns'), + config: path.resolve(__dirname,'../_configs/sns-config.yaml'), + nsDocsRoot:path.resolve(__dirname,'../../composer-common/lib/system/') + }; + await tool(args); + }); + + it('should handle a sample bna', async function() { + let args = { outdir:path.join(tmpDir,'bna'), archive : path.resolve(__dirname,'carauction-network.bna'), + extDocsRoot : path.resolve(__dirname) + }; + await tool(args); + }); + + it('should handle errors within the main docs loop',async ()=>{ + let mock = { + resolve: sinon.stub(), + join : sinon.stub().throws(new Error('wibble')) + }; + mockery.registerMock('path', mock); + + delete require.cache[path.resolve(__dirname, '../index.js')]; + delete require.cache[path.resolve(__dirname, '../lib/opus.js')]; + let tool = require('../index.js'); + let args = { outdir:path.join(tmpDir,'systemns'), + config: path.resolve(__dirname,'../_configs/sns-config.yaml'), + nsDocsRoot:path.resolve(__dirname,'../../composer-common/lib/system/') + }; + tool(args).should.be.eventually.be.rejected; + }); + + it('should handle errors in the visitor class', async function() { + (()=>{new InfoVisitor().visit({});}) + .should.throw(/Unrecognised type/); + }); + }); + + + + + + +}); \ No newline at end of file diff --git a/packages/composer-documentation/test/testfile.md b/packages/composer-documentation/test/testfile.md new file mode 100644 index 0000000000..8af992f854 --- /dev/null +++ b/packages/composer-documentation/test/testfile.md @@ -0,0 +1 @@ +This is a test markdown file \ No newline at end of file diff --git a/packages/composer-playground/e2e/verdaccio/npm_serve.js b/packages/composer-playground/e2e/verdaccio/npm_serve.js index 27ce7abaeb..ad7fbfe1bd 100644 --- a/packages/composer-playground/e2e/verdaccio/npm_serve.js +++ b/packages/composer-playground/e2e/verdaccio/npm_serve.js @@ -62,7 +62,8 @@ let packages = [ 'composer-cli', 'composer-connector-server', 'composer-playground-api', - 'composer-playground' + 'composer-playground', + 'composer-documentation' ]; // Packages to be installed in integration test(s) diff --git a/packages/composer-tests-integration/.eslintignore b/packages/composer-tests-integration/.eslintignore index aca226f63f..eff4eaba4d 100644 --- a/packages/composer-tests-integration/.eslintignore +++ b/packages/composer-tests-integration/.eslintignore @@ -9,3 +9,4 @@ resources/sample-networks/marbles-network-update resources/sample-networks/queries-network resources/sample-networks/trade-network resources/sample-networks/tutorial-network +resources/sample-networks/carauction-network diff --git a/packages/composer-tests-integration/features/cli-generate.feature b/packages/composer-tests-integration/features/cli-generate.feature new file mode 100644 index 0000000000..0d5ce2e0af --- /dev/null +++ b/packages/composer-tests-integration/features/cli-generate.feature @@ -0,0 +1,15 @@ +@cli @cli-generate +Feature: Cli generate steps + + Scenario: Using the CLI, I can issue the command to generate doc for my networks + Given I have the following folders + | ../resources/sample-networks/carauction-network | + And I run the following expected pass CLI command + """ + composer archive create -t dir -a ./tmp/carauction.bna -n ./resources/sample-networks/carauction-network + """ + When I run the following expected pass CLI command + """ + composer generator docs -a ./tmp/carauction.bna + """ + Then The stdout information should include text matching /Command succeeded/ \ No newline at end of file diff --git a/packages/composer-tests-integration/package.json b/packages/composer-tests-integration/package.json index 565489196c..8e97fdea3a 100644 --- a/packages/composer-tests-integration/package.json +++ b/packages/composer-tests-integration/package.json @@ -15,9 +15,10 @@ "test": "exit 0", "test-tagged": "cucumber-js --tags @busnet", "test-inner": "cucumber-js --tags 'not @cli-report'", - "test-inner-nohsm": "cucumber-js --tags 'not @hsm'", - "int-test": "npm run pretest && npm run lint && npm run start_verdaccio && node ./scripts/npm_serve && npm run test-inner && npm run stop_verdaccio", - "int-test-nohsm": "npm run pretest && npm run lint && npm run start_verdaccio && node ./scripts/npm_serve && npm run test-inner-nohsm && npm run stop_verdaccio" + "test-inner-nohsm": "cucumber-js --tags 'not @cli-hsm'", + "setup":"npm run pretest && npm run lint && npm run start_verdaccio && node ./scripts/npm_serve", + "int-test": "npm run setup && npm run test-inner && npm run stop_verdaccio", + "int-test-nohsm": "npm run setup && npm run test-inner-nohsm && npm run stop_verdaccio" }, "repository": { "type": "git", diff --git a/packages/composer-tests-integration/resources/sample-networks/carauction-network/README.md b/packages/composer-tests-integration/resources/sample-networks/carauction-network/README.md new file mode 100644 index 0000000000..52877bc70d --- /dev/null +++ b/packages/composer-tests-integration/resources/sample-networks/carauction-network/README.md @@ -0,0 +1,188 @@ +# Fabric Composer Car Auction Demo + +This is an interactive, distributed, car auction demo, backed by Hyperledger Fabric. Invite participants to join your distributed auction, list assets for sale (setting a reserve price), and watch as assets that have met their reserve price are automatically transferred to the highest bidder at the end of the auction. + +## Understanding the Business Network + +The easiest way to interact with the demo is using our work-in-progress [Composer Playground web application](http://composer-playground.mybluemix.net). Composer allows you to define a business network (defining the data model and writing transaction processing logic), manage assets & participants and submit transactions. + +The data model for the auction business network is defined in a CTO model file, managed in GitHub [here](https://github.com/fabric-composer/sample-networks/blob/master/packages/carauction-network/models/auction.cto). + +The data model is very simple (less than 50 lines). It defines the structure of the assets, participants and transactions for a very simple auction. + +The business logic is defined in a single Javascript file [here](https://github.com/fabric-composer/sample-networks/blob/master/packages/carauction-network/lib/logic.js). The logic consists of two Javascript functions that are automatically invoked by the Fabric Composer runtime chain code when transactions are submitted for processing. + +The `makeOffer` function is called when an `Offer` transaction is submitted. The logic simply checks that the listing for the offer is still for sale, and then adds the offer to the listing, and then updates the offer in the `VehicleListing` asset registry. + +The `closeBidding` function is called when a `CloseBidding` transaction is submitted for processing. The logic checks that the listing is still for sale, sorts the offers by bid price, and then if the reserve has been met, transfers the ownership of the vehicle associated with the listing to the highest bidder. Money is transferred from the buyer's account to the seller's account, and then all the modified assets are updated in their respective registries. + +Access control for the business network is defined [here](https://github.com/fabric-composer/sample-networks/blob/master/packages/carauction-network/permissions.acl). + +### Developer Unit Testing + + > Note that if you `git clone` the [repository](https://github.com/fabric-composer/sample-networks) for the Business Network you can run a unit tests for the logic in the business network using the Fabric Composer embedded runtime which simulates a Hyperledger Fabric using a pure Javascript runtime. Simply run: + + ``` +cd packages/carAuction-network +npm install +npm test +``` + +The unit test [here](https://github.com/fabric-composer/sample-networks/blob/master/packages/carauction-network/test/CarAuction.js) simulates an entire auction and checks that the business logic functions as expected. + +## Connect to Composer + +You can connect to Composer [here](http://composer-playground.mybluemix.net). If you have used Composer before you may need to clear your cached browser data. + +> Playground currently only supports the web profile. + +After you are connected make sure that Composer is communicating with the **'hyperledger'** connection profile by clicking the network dropdown at the top-right of the menu. The web profile allows you to test in isolation using a simulated hyperledger, storing the ledger in browser local storage. The 'bluemix' connection profile is to a version of Fabric Composer deployed to bluemix. + +## Setting Up the Demo + +Before you can hold an auction you need to create and invite some participants to your business network and have something to sell! + +### Create Your Participant & Issue an Identity Card + +Switch to the Test tab, then click on the `User` participant registry, then click on the `Create Participant` button to create a new instance of a user. + +The JSON representation of the User should be: + +``` +{ + "$class": "org.acme.vehicle.auction.User", + "email": "daniel.selman@uk.ibm.com", + "firstName": "Daniel", + "lastName": "Selman", + "balance": 10000 +} +``` + +Substitute `daniel.selman@uk.ibm.com` with your email address. Congratulations you are now a participant in this business network! + +> Playground does not yet support issuing and managing Fabric identifies. + +You now need to issue an identity card for this participant. Click the green ID card icon to the right of your participant. Enter an user id, for example `daniel.selman` and select the "Identity can be used to issue other identities?" checkbox so that this user has permission to invite other users into the business network. + +You can switch between identities using the menu option at the top right of the screen. + +### Create Assets + +Now that you are a participant in the business network and have been issued an identity card you can own assets and take part in an auction. + +#### Create a Vehicle + +First, let's create a vehicle for auction. + +Click on the `Vehicle` asset registry, and then click on the `Create Asset` button to create a new instance of a vehicle that can be auctioned. + +The JSON representation of the Vehicle should be: + +``` +{ + "$class": "org.acme.vehicle.auction.Vehicle", + "vin": "CAR_001", + "owner": "daniel.selman@uk.ibm.com" +} +``` + +Substitute `daniel.selman@uk.ibm.com` for the id of the participant you created above. Congratulations you are now the owner of the vehicle `CAR_001`! + +#### Create a Vehicle Listing + +The `VehicleListing` asset is used to list vehicles that are available for auction. + +Click on the click on the `VehicleListing` asset registry, and then click on the `Create Asset` icon to create a new instance of a vehicle listing. + +The JSON representation of the `VehicleListing` should be: + +``` +{ + "$class": "org.acme.vehicle.auction.VehicleListing", + "listingId": "LISTING_001", + "reservePrice": 4000, + "description": "Ford Mustang", + "state": "FOR_SALE", + "vehicle": "CAR_001" +} +``` + +Congratulations, you've just listed your Ford Mustang for auction, with a reserve price of $4000! + +### Create Additional Participants + +> Playground does not yet support inviting participants via a URL + +An auction with one person is not much fun, so you need to either invite people to use Composer to create their own participants and identities, or you can do it for them. To make it easy for participants that you've created to join the business network (auction) when an identity is issued a personalised URL is generated that you can send to allow participants to join the business network in a single click. + +You can send this text via email or Slack to give people an easy mechanism to launch Composer and join your business network. + +## Bidding on a VehicleListing + +As soon as a `VehicleListing` has been created (and is in the `FOR_SALE` state) participants can submit `Offer` transactions to bid on a vehicle listing. + +Click on the Submit Transaction button to submit a new transaction for processing by the business network. + +The JSON payload should be: + +``` +{ + "$class": "org.acme.vehicle.auction.Offer", + "bidPrice": 250.00, + "listing": "LISTING_001", + "user": "daniel.selman@uk.ibm.com" +} +``` + +Substitute the id of the participant submitting the transaction for `daniel.selman@uk.ibm.com` and set the bid price as high as you'd like to bid. Remember the vehicle will only be sold if the reserve price is met and it will go to the highest bidder! + +The `Offer` transaction is processed by the `makeOffer` function described above. + +## End the Auction + +To end the auction someone has to submit a `CloseBidding` transaction for the listing. + +Click on the Submit Transaction button to submit a new transaction for processing by the business network. + +The JSON payload should be: + +``` +{ + "$class": "org.acme.vehicle.auction.CloseBidding", + "listing": "LISTING_001" +} +``` + +This simply indicates that the auction for `LISTING_001` is now closed, triggering the `closeBidding` function that was described above. + + +## Check the Results of the Auction + +To see if the Vehicle was sold you need to click on the `Vehicle` asset registry and then check the owner of CAR_001. If the reserve price was met you should see that the owner of the vehicle has been modified. + +If you check the state of the VehicleListing is should either be `SOLD` or `RESERVE_NOT_MET`. + +If you click on the 'User' asset registry you can check the balance of each User. You should see that the balance of the buyer has been debited by the amount they bid, whilst the balance of the seller has been credited. + +## View the Blockchain + +> Not yet supported in Playground + +You can inspect the blocks and transaction created by Hyperledger during the course of the auction using the Hyperledger Explorer. Details TBD. + +## Reset the Auction + +To reset the auction you need to edit the VehicleListing to reset its state to `FOR_SALE`. Simply click on the `VehicleListing` registry and then click the pencil icon to update the VehicleListing back to its original state. + +The JSON representation of the `VehicleListing` should be: + +``` +{ + "$class": "org.acme.vehicle.auction.VehicleListing", + "listingId": "LISTING_001", + "reservePrice": 4000, + "description": "Ford Mustang", + "state": "FOR_SALE", + "vehicle": "CAR_001" +} +``` diff --git a/packages/composer-tests-integration/resources/sample-networks/carauction-network/lib/logic.js b/packages/composer-tests-integration/resources/sample-networks/carauction-network/lib/logic.js new file mode 100644 index 0000000000..a3d6510a2e --- /dev/null +++ b/packages/composer-tests-integration/resources/sample-networks/carauction-network/lib/logic.js @@ -0,0 +1,104 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * Close the bidding for a vehicle listing and choose the + * highest bid that is over the asking price + * @param {org.acme.vehicle.auction.CloseBidding} closeBidding - the closeBidding transaction + * @transaction + */ +function closeBidding(closeBidding) { + var listing = closeBidding.listing; + if (listing.state !== 'FOR_SALE') { + throw new Error('Listing is not FOR SALE'); + } + // by default we mark the listing as RESERVE_NOT_MET + listing.state = 'RESERVE_NOT_MET'; + var highestOffer = null; + var buyer = null; + var seller = null; + if (listing.offers) { + // sort the bids by bidPrice + listing.offers.sort(function(a, b) { + return (b.bidPrice - a.bidPrice); + }); + highestOffer = listing.offers[0]; + if (highestOffer.bidPrice >= listing.reservePrice) { + // mark the listing as SOLD + listing.state = 'SOLD'; + buyer = highestOffer.member; + seller = listing.vehicle.owner; + // update the balance of the seller + console.log('#### seller balance before: ' + seller.balance); + seller.balance += highestOffer.bidPrice; + console.log('#### seller balance after: ' + seller.balance); + // update the balance of the buyer + console.log('#### buyer balance before: ' + buyer.balance); + buyer.balance -= highestOffer.bidPrice; + console.log('#### buyer balance after: ' + buyer.balance); + // transfer the vehicle to the buyer + listing.vehicle.owner = buyer; + // clear the offers + listing.offers = null; + } + } + return getAssetRegistry('org.acme.vehicle.auction.Vehicle') + .then(function(vehicleRegistry) { + // save the vehicle + if (highestOffer) { + return vehicleRegistry.update(listing.vehicle); + } else { + return true; + } + }) + .then(function() { + return getAssetRegistry('org.acme.vehicle.auction.VehicleListing') + }) + .then(function(vehicleListingRegistry) { + // save the vehicle listing + return vehicleListingRegistry.update(listing); + }) + .then(function() { + return getParticipantRegistry('org.acme.vehicle.auction.Member') + }) + .then(function(userRegistry) { + // save the buyer + if (listing.state == 'SOLD') { + return userRegistry.updateAll([buyer, seller]); + } else { + return true; + } + }); +} + +/** + * Make an Offer for a VehicleListing + * @param {org.acme.vehicle.auction.Offer} offer - the offer + * @transaction + */ +function makeOffer(offer) { + var listing = offer.listing; + if (listing.state !== 'FOR_SALE') { + throw new Error('Listing is not FOR SALE'); + } + if (listing.offers == null) { + listing.offers = []; + } + listing.offers.push(offer); + return getAssetRegistry('org.acme.vehicle.auction.VehicleListing') + .then(function(vehicleListingRegistry) { + // save the vehicle listing + return vehicleListingRegistry.update(listing); + }); +} diff --git a/packages/composer-tests-integration/resources/sample-networks/carauction-network/models/org.acme.model.cto b/packages/composer-tests-integration/resources/sample-networks/carauction-network/models/org.acme.model.cto new file mode 100644 index 0000000000..acfc835f3b --- /dev/null +++ b/packages/composer-tests-integration/resources/sample-networks/carauction-network/models/org.acme.model.cto @@ -0,0 +1,57 @@ +namespace org.acme + +enum CarType { + o HEAVY_GOODS + o LIGHT_GOODS + o SPORTS + o SUV +} + +asset Car identified by id { + o String id + -->Driver owner + o CarType carType +} + +concept City { + o String postcode +} + +concept Address { + o City city +} + +participant Driver identified by email { + o String email + o String firstName + o String lastName + o String[] middleNames + o Address address + o Integer age + o Boolean trustworthy + o DateTime dob + o Long length + o Double height +} + +participant Regulator identified by email { + o String email + o String firstName + o String lastName +} + +transaction MyTransaction { + +} + +concept TestConcept { + o String value + o String[] values +} + +asset TestAsset identified by assetId { + o String assetId + o String[] stringValues + o TestConcept conceptValue + o TestConcept[] conceptValues +} diff --git a/packages/composer-tests-integration/resources/sample-networks/carauction-network/models/org.acme.vehicle.auction.cto b/packages/composer-tests-integration/resources/sample-networks/carauction-network/models/org.acme.vehicle.auction.cto new file mode 100644 index 0000000000..c98d24ded1 --- /dev/null +++ b/packages/composer-tests-integration/resources/sample-networks/carauction-network/models/org.acme.vehicle.auction.cto @@ -0,0 +1,77 @@ +/** + * Defines a data model for a blind vehicle auction + */ +namespace org.acme.vehicle.auction + +/** + * @param {String} firstpart Start + * @param {String} secondpart and the end + */ +concept VIN { + o String firstpart + o String secondpart +} + +/** + */ +@docsuri('alink','uri') +asset Vehicle identified by vin { + o String vin + --> Member[] owner +} + +/** + */ +enum ListingState { + o FOR_SALE + o RESERVE_NOT_MET + o SOLD +} + +/** + */ +@random('here') +asset VehicleListing identified by listingId { + o String listingId + o Double reservePrice + @field('decorator') + o String description default="fred" + o ListingState state + o Offer[] offers optional + --> Vehicle vehicle +} + +/** + */ +abstract participant User identified by email { + o String email + o String firstName + o String lastName +} + +/** + * @param {Double} balance the users balance + * @author Frank Blogs + */ +participant Member extends User { + o Double balance +} + +/** + */ +participant Auctioneer extends User { +} + +/** + */ +transaction Offer { + o Double bidPrice + --> VehicleListing listing + --> Member member +} + +/** + */ +transaction CloseBidding { + --> VehicleListing listing +} diff --git a/packages/composer-tests-integration/resources/sample-networks/carauction-network/package.json b/packages/composer-tests-integration/resources/sample-networks/carauction-network/package.json new file mode 100644 index 0000000000..dbfb2a8d1b --- /dev/null +++ b/packages/composer-tests-integration/resources/sample-networks/carauction-network/package.json @@ -0,0 +1 @@ +{"name":"carauction-network","version":"0.0.7","description":"Car Auction Business Network","scripts":{"prepublish":"mkdirp ./dist && composer archive create --sourceType dir --sourceName . -a ./dist/carauction-network.bna","pretest":"npm run lint","lint":"eslint .","postlint":"npm run licchk","licchk":"license-check","postlicchk":"npm run doc","doc":"jsdoc --pedantic --recurse -c jsdoc.conf","test":"mocha --recursive","deploy":"./scripts/deploy.sh"},"repository":{"type":"git","url":"https://github.com/fabric-composer/sample-networks.git"},"keywords":["car","auction"],"author":"Fabric Composer","license":"Apache-2.0","devDependencies":{"browserfs":"^1.2.0","chai":"^3.5.0","composer-admin":"latest","composer-cli":"latest","composer-client":"latest","composer-connector-embedded":"latest","eslint":"^3.6.1","istanbul":"^0.4.5","jsdoc":"^3.4.1","license-check":"^1.1.5","mkdirp":"^0.5.1","mocha":"^3.2.0","moment":"^2.17.1"},"license-check-config":{"src":["**/*.js","!./coverage/**/*","!./node_modules/**/*","!./out/**/*","!./scripts/**/*"],"path":"header.txt","blocking":true,"logInfo":false,"logError":true}} \ No newline at end of file diff --git a/packages/composer-tests-integration/resources/sample-networks/carauction-network/permissions.acl b/packages/composer-tests-integration/resources/sample-networks/carauction-network/permissions.acl new file mode 100644 index 0000000000..abb8467863 --- /dev/null +++ b/packages/composer-tests-integration/resources/sample-networks/carauction-network/permissions.acl @@ -0,0 +1,37 @@ +/** + * Access Control List for the auction network. + */ + +rule Member { + description: "Allow the member read access" + participant: "org.acme.vehicle.auction.Member" + operation: READ + resource: "org.acme.vehicle.auction.*" + action: ALLOW +} + +rule VehicleOwner { + description: "Allow the owner of a vehicle total access" + participant(m): "org.acme.vehicle.auction.Member" + operation: ALL + resource(v): "org.acme.vehicle.auction.Vehicle" + condition: (v.owner.getIdentifier() == m.getIdentifier()) + action: ALLOW +} + +rule VehicleListingOwner { + description: "Allow the owner of a vehicle total access to their vehicle listing" + participant(m): "org.acme.vehicle.auction.Member" + operation: ALL + resource(v): "org.acme.vehicle.auction.VehicleListing" + condition: (v.vehicle.owner.getIdentifier() == m.getIdentifier()) + action: ALLOW +} + +rule All { + description: "Allow the member read access" + participant: "org.hyperledger.composer.system.Participant" + operation: ALL + resource: "**" + action: ALLOW +} \ No newline at end of file diff --git a/packages/composer-tests-integration/resources/sample-networks/carauction-network/queries.qry b/packages/composer-tests-integration/resources/sample-networks/carauction-network/queries.qry new file mode 100644 index 0000000000..f2cea77046 --- /dev/null +++ b/packages/composer-tests-integration/resources/sample-networks/carauction-network/queries.qry @@ -0,0 +1,98 @@ +/** + * New query file + */ +query Q1 { + description: "Select all drivers" + statement: SELECT org.acme.Driver +} query Q2 { // test missing whitespace + description: "Select all regulators" + statement: SELECT org.acme.Regulator FROM mycustomer.Registry +} + +query Q3 { + description: "Select all transactions" + statement: SELECT org.acme.MyTransaction +} + +// single line comment +query Q4 { + description: "Select all Drivers called Dan" // inline comment + statement: SELECT org.acme.Driver WHERE (firstName=='Dan') +} + +/** + * Multiline comment + */ +query Q5 { + description: "Select all Drivers called Dan Selman" // inline comment + statement: SELECT org.acme.Driver WHERE (firstName=='Dan' AND lastName=='Selman') +} + +query Q6 { + description: "Select all Drivers called Dan Selman with parens" + statement: SELECT org.acme.Driver WHERE (firstName=='Dan' AND lastName=='Selman') +} + +query Q7 { + description: "Select all Drivers called Dan Selman with parens limit" + statement: SELECT org.acme.Driver WHERE (firstName=='Dan' AND lastName=='Selman') LIMIT 5 +} + +query Q8 { + description: "Select all Drivers called Dan Selman with parens skip" + statement: SELECT org.acme.Driver WHERE (firstName=='Dan' AND lastName=='Selman') SKIP 5 +} + +// all on a single line +query Q9 {description: "Skip" statement: SELECT org.acme.Driver SKIP 5} +query Q10 {description: "Limit" statement: SELECT org.acme.Driver LIMIT 5} + + +query Q11 { + description: "Select all drivers aged 44" + statement: + SELECT org.acme.Driver + WHERE (age==44) +} + +query Q12 { + description: "Select all drivers aged less than 44" + statement: + SELECT org.acme.Driver + WHERE (age<44) +} + +query Q13 { + description: "Select all drivers aged less than or equal to 44" + statement: + SELECT org.acme.Driver + WHERE (age <= 44) +} + +query Q14 { + description: "Select all drivers aged older than 44" + statement: + SELECT org.acme.Driver + WHERE (age >44) +} + +query Q15 { + description: "Select all drivers aged older than or equal to 44" + statement: + SELECT org.acme.Driver + WHERE (age>= 44) +} + +query Q16 { + description: "Select all drivers aged older than or equal to PARAM" + statement: + SELECT org.acme.Driver + WHERE (age>= _$ageParam) +} + +query Q17 { + description: "Select all drivers aged older than PARAM" + statement: + SELECT org.acme.Driver + WHERE (_$ageParam < age) +} diff --git a/packages/composer-tests-integration/scripts/npm_serve.js b/packages/composer-tests-integration/scripts/npm_serve.js index c3a1379ff6..41f1fe74bf 100644 --- a/packages/composer-tests-integration/scripts/npm_serve.js +++ b/packages/composer-tests-integration/scripts/npm_serve.js @@ -65,7 +65,8 @@ const packages = [ 'composer-cli', 'composer-wallet-inmemory', 'composer-wallet-filesystem', - 'generator-hyperledger-composer']; + 'generator-hyperledger-composer', + 'composer-documentation']; // Packages to be installed in integration test(s) const testPackages = [ diff --git a/packages/composer-website/.gitignore b/packages/composer-website/.gitignore index dcb86252e8..df9c074399 100644 --- a/packages/composer-website/.gitignore +++ b/packages/composer-website/.gitignore @@ -51,5 +51,6 @@ out jekylldocs/install*.sh jsondata/** jekylldocs/api/**/* +jekylldocs/systemns/**/* _jsondata/** allData.json diff --git a/packages/composer-website/jekylldocs/reference/composer.generator.docs.md b/packages/composer-website/jekylldocs/reference/composer.generator.docs.md new file mode 100644 index 0000000000..6832adfac4 --- /dev/null +++ b/packages/composer-website/jekylldocs/reference/composer.generator.docs.md @@ -0,0 +1,50 @@ +--- +layout: default +title: Hyperledger Composer Generator CLI +section: reference-command +sidebar: sidebars/accordion-toc0.md +excerpt: Composer Archive List CLI +--- + +## Name + +composer generator docs - create documentation for a Business Network + +## Synopsis + +``` +composer generator docs + +Options: + --help Show help [boolean] + -v, --version Show version number [boolean] + --archive, -a Business network archive file name. Default is based on the Identifier of the BusinessNetwork [string] [required] + --config, -c Path to the configuration file to use, default is one specificaly for BNA files [default: ""] + --outdir, -o Output Location [default: "./out"] + +``` + +## Description + +This will take the Composer business network definition as input and create html based documentation for all aspects. + +## Options + +* `-a` `--archiveFile` +The path to the business network archive file. This will be the source that is used to create the artifacts +* `-c` `--config` +The configuration that controls how the documentation is produced. An existing template is in-built and this does not need to specified. +Reserved for future expansion +* `-o` `--output` +The output directory with the html. index.html is the starting point. +* `--help` +Shows the help text +* `-v` `--version` +Shows the version number + +## Example Usage + +```bash +composer generator docs --archiveFile digitalPropertyNetwork.bna + +``` diff --git a/packages/composer-website/package.json b/packages/composer-website/package.json index 69b642f065..4e2c465be1 100644 --- a/packages/composer-website/package.json +++ b/packages/composer-website/package.json @@ -9,8 +9,9 @@ }, "scripts": { "jsdocpub": "jsdoc --pedantic --recurse -c ./jsdoc-template/jsdoc.conf -t ./jsdoc-template -a public,undefined -d ./jekylldocs/jsdoc -R ./jsdoc-template/JSDOC-README.md", + "systemnsDocs": "../composer-documentation/bin/opus --archive dummy.bna --outdir ./jekylldocs/systemns --config ../composer-documentation/_configs/sns-config.yaml --nsDocsRoot ../composer-common/lib/system/", "doc": "npm run apiref && ./scripts/generate-uml.sh && npm run jsdocpub", - "apiref": "mkdirp ./jsondata && ./scripts/generate-apidocs.sh ", + "apiref": "npm run systemnsDocs && mkdirp ./jsondata && ./scripts/generate-apidocs.sh ", "docpub": "jsdoc --pedantic --recurse -c ./jsdoc-template/jsdoc.conf -t ./jsdoc-template -a public,undefined -d ./jekylldocs/jsdoc -R ./jsdoc-template/JSDOC-README.md", "docpriv": "jsdoc --pedantic --recurse -c ./jsdoc-template/jsdoc.conf -t ./jsdoc-template -a all -d ./jekylldocs/jsdoc-contrib -R ./jsdoc-template/JSDOC-README.md", "jekyllserve": "./scripts/setup-jekyll.sh && npm run apiref && cd ./jekylldocs && jekyll serve --config _config.yml,_unstable.yml", @@ -40,6 +41,7 @@ "composer-client": "0.19.0", "composer-common": "0.19.0", "composer-runtime": "0.19.0", + "composer-documentation": "0.19.0", "jsdoc": "3.5.5", "mkdirp": "0.5.1", "node-plantuml": "0.5.0",

?c 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 E1Ar^3CIA2c literal 0 HcmV?d00001 diff --git a/packages/composer-documentation/_bnaTemplate/assets.default/img/subnav-dot.png b/packages/composer-documentation/_bnaTemplate/assets.default/img/subnav-dot.png new file mode 100644 index 0000000000000000000000000000000000000000..9c3e2c4ca53818b98222d965831118bbfcdf13a4 GIT binary patch literal 84 zcmeAS@N?(olHy`uVBq!ia0vp^EI`c60V3u8ruhOXX-^l&5DwX7k6^Fr>1F1=or=1; gZ|wz^86I$9nDdo;qjytzA5a;Cr>mdKI;Vst0J}33p#T5? literal 0 HcmV?d00001 diff --git a/packages/composer-documentation/_bnaTemplate/assets.default/js/autotrack.js b/packages/composer-documentation/_bnaTemplate/assets.default/js/autotrack.js new file mode 100644 index 0000000000..e3746cd500 --- /dev/null +++ b/packages/composer-documentation/_bnaTemplate/assets.default/js/autotrack.js @@ -0,0 +1,57 @@ +(function(){var f,aa="function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){if(c.get||c.set)throw new TypeError("ES3 does not support getters and setters.");a!=Array.prototype&&a!=Object.prototype&&(a[b]=c.value)},k="undefined"!=typeof window&&window===this?this:"undefined"!=typeof global&&null!=global?global:this;function ba(){ba=function(){};k.Symbol||(k.Symbol=ca)}var da=0;function ca(a){return"jscomp_symbol_"+(a||"")+da++} +function l(){ba();var a=k.Symbol.iterator;a||(a=k.Symbol.iterator=k.Symbol("iterator"));"function"!=typeof Array.prototype[a]&&aa(Array.prototype,a,{configurable:!0,writable:!0,value:function(){return ea(this)}});l=function(){}}function ea(a){var b=0;return fa(function(){return bwindow.gaDevIds.indexOf("i5iSjo")&&window.gaDevIds.push("i5iSjo");window[c]("provide",a,b);window.gaplugins=window.gaplugins||{};window.gaplugins[a.charAt(0).toUpperCase()+a.slice(1)]=b}var D={S:1,T:2,U:3,W:4,X:5,Y:6,Z:7,$:8,aa:9,V:10},G=Object.keys(D).length; +function H(a,b){a.set("\x26_av","2.1.1");var c=a.get("\x26_au"),c=parseInt(c||"0",16).toString(2);if(c.length=g:(g=d.intersectionRect,g=06E4*this.timeout||this.c&&this.c.format(b)!=this.c.format(c))?!0:!1}; +T.prototype.b=function(a){var b=this;return function(c){a(c);var d=b.a.get(),e=b.isExpired(d);c=c.get("sessionControl");d.hitTime=+new Date;if("start"==c||e)d.isExpired=!1;"end"==c&&(d.isExpired=!0);b.a.set(d)}};T.prototype.j=function(){var a=this.b;w(x(this.f,"sendHitTask"),a);this.a.j();delete Aa[this.f.get("trackingId")]};var U=30; +function V(a,b){H(a,D.V);window.addEventListener&&(this.a=z({increaseThreshold:20,sessionTimeout:U,fieldsObj:{}},b),this.c=a,this.b=Ba(this),this.f=sa(this.f.bind(this),500),this.m=this.m.bind(this),this.i=Q(a.get("trackingId"),"plugins/max-scroll-tracker"),this.P=new T(a,this.a.sessionTimeout,this.a.timeZone),b=this.m,v(x(a,"set"),b),Ca(this))}function Ca(a){100>(a.i.get()[a.b]||0)&&window.addEventListener("scroll",a.f)} +V.prototype.f=function(){var a=document.documentElement,b=document.body,a=Math.min(100,Math.max(0,Math.round(window.pageYOffset/(Math.max(a.offsetHeight,a.scrollHeight,b.offsetHeight,b.scrollHeight)-window.innerHeight)*100)));if(this.P.isExpired())za(this.i);else if(b=this.i.get()[this.b]||0,a>b&&(100!=a&&100!=b||window.removeEventListener("scroll",this.f),b=a-b,100==a||b>=this.a.increaseThreshold)){var c={};this.i.set((c[this.b]=a,c));a={transport:"beacon",eventCategory:"Max Scroll",eventAction:"increase", +eventValue:b,eventLabel:String(a),nonInteraction:!0};this.a.maxScrollMetricIndex&&(a["metric"+this.a.maxScrollMetricIndex]=b);this.c.send("event",y(a,this.a.fieldsObj,this.c,this.a.hitFilter))}};V.prototype.m=function(a){var b=this;return function(c,d){a(c,d);var e={};(B(c)?c:(e[c]=d,e)).page&&(c=b.b,b.b=Ba(b),b.b!=c&&Ca(b))}};function Ba(a){a=t(a.c.get("page")||a.c.get("location"));return a.pathname+a.search} +V.prototype.remove=function(){this.P.j();window.removeEventListener("scroll",this.f);var a=this.m;w(x(this.c,"set"),a)};C("maxScrollTracker",V);var Da={};function W(a,b){H(a,D.W);window.matchMedia&&(this.a=z({changeTemplate:this.changeTemplate,changeTimeout:1E3,fieldsObj:{}},b),B(this.a.definitions)&&(b=this.a.definitions,this.a.definitions=Array.isArray(b)?b:[b],this.b=a,this.c=[],Ea(this)))} +function Ea(a){a.a.definitions.forEach(function(b){if(b.name&&b.dimensionIndex){var c=Fa(b);a.b.set("dimension"+b.dimensionIndex,c);Ha(a,b)}})}function Fa(a){var b;a.items.forEach(function(a){Ia(a.media).matches&&(b=a)});return b?b.name:"(not set)"} +function Ha(a,b){b.items.forEach(function(c){c=Ia(c.media);var d=sa(function(){var c=Fa(b),d=a.b.get("dimension"+b.dimensionIndex);c!==d&&(a.b.set("dimension"+b.dimensionIndex,c),c={transport:"beacon",eventCategory:b.name,eventAction:"change",eventLabel:a.a.changeTemplate(d,c),nonInteraction:!0},a.b.send("event",y(c,a.a.fieldsObj,a.b,a.a.hitFilter)))},a.a.changeTimeout);c.addListener(d);a.c.push({da:c,ca:d})})}W.prototype.remove=function(){for(var a=0,b;b=this.c[a];a++)b.da.removeListener(b.ca)}; +W.prototype.changeTemplate=function(a,b){return a+" \x3d\x3e "+b};C("mediaQueryTracker",W);function Ia(a){return Da[a]||(Da[a]=window.matchMedia(a))}function X(a,b){H(a,D.X);window.addEventListener&&(this.a=z({formSelector:"form",shouldTrackOutboundForm:this.shouldTrackOutboundForm,fieldsObj:{},attributePrefix:"ga-"},b),this.b=a,this.c=p("submit",this.a.formSelector,this.f.bind(this)))} +X.prototype.f=function(a,b){var c={transport:"beacon",eventCategory:"Outbound Form",eventAction:"submit",eventLabel:t(b.action).href};this.a.shouldTrackOutboundForm(b,t)&&(navigator.sendBeacon||(a.preventDefault(),c.hitCallback=ta(function(){b.submit()})),a=z({},this.a.fieldsObj,A(b,this.a.attributePrefix)),this.b.send("event",y(c,a,this.b,this.a.hitFilter,b)))};X.prototype.shouldTrackOutboundForm=function(a,b){a=b(a.action);return a.hostname!=location.hostname&&"http"==a.protocol.slice(0,4)}; +X.prototype.remove=function(){this.c.j()};C("outboundFormTracker",X);function Y(a,b){var c=this;H(a,D.Y);window.addEventListener&&(this.a=z({events:["click"],linkSelector:"a, area",shouldTrackOutboundLink:this.shouldTrackOutboundLink,fieldsObj:{},attributePrefix:"ga-"},b),this.f=a,this.c=this.c.bind(this),this.b={},this.a.events.forEach(function(a){c.b[a]=p(a,c.a.linkSelector,c.c)}))} +Y.prototype.c=function(a,b){if(this.a.shouldTrackOutboundLink(b,t)){var c=b.getAttribute("href")||b.getAttribute("xlink:href"),d=t(c),e={transport:"beacon",eventCategory:"Outbound Link",eventAction:a.type,eventLabel:d.href};navigator.sendBeacon||"click"!=a.type||"_blank"==b.target||a.metaKey||a.ctrlKey||a.shiftKey||a.altKey||1>b/4).toString(16):"10000000-1000-4000-8000-100000000000".replace(/[018]/g,Ja)}(); +function Ka(a,b){H(a,D.Z);if(document.visibilityState){this.a=z({sessionTimeout:U,visibleThreshold:5E3,fieldsObj:{}},b);this.c=a;this.i=this.f=null;this.u=this.u.bind(this);this.o=this.o.bind(this);this.F=this.F.bind(this);this.M=this.M.bind(this);this.b=Q(a.get("trackingId"),"plugins/page-visibility-tracker");b=this.M;var c=this.b;(c.a.externalSet=c.a.externalSet||[]).push(b);this.m=new T(a,this.a.sessionTimeout,this.a.timeZone);b=this.u;v(x(a,"set"),b);window.addEventListener("unload",this.F);document.addEventListener("visibilitychange", +this.o);"visible"==document.visibilityState&&this.o()}}f=Ka.prototype; +f.o=function(){var a=this;if("visible"==document.visibilityState||"hidden"==document.visibilityState){var b=La(this,this.b.get()),c={time:+new Date,state:document.visibilityState,pageId:Z};this.i&&"hidden"==document.visibilityState&&clearTimeout(this.i);this.m.isExpired()?"hidden"==this.f&&"visible"==document.visibilityState?(clearTimeout(this.i),this.i=setTimeout(function(){a.c.send("pageview",y({transport:"beacon",queueTime:+new Date-c.time},a.a.fieldsObj,a.c,a.a.hitFilter));a.b.set(c)},this.a.visibleThreshold)): +"hidden"==document.visibilityState&&za(this.b):(b.pageId==Z&&"visible"==b.state&&Ma(this,b),this.b.set(c));this.f=document.visibilityState}};function La(a,b){"visible"==a.f&&"hidden"==b.state&&b.pageId!=Z&&(b.state="visible",b.pageId=Z,a.b.set(b));return b} +function Ma(a,b,c){var d=c,d=void 0===d?+new Date:d,e=!a.m.isExpired();b=b.time&&d-b.time;(e=e&&0=a.a.visibleThreshold&&(e=Math.round(e/1E3),b={transport:"beacon",nonInteraction:!0,eventCategory:"Page Visibility",eventAction:"track",eventValue:e,eventLabel:"(not set)"},c&&(b.queueTime=+new Date-c),a.a.visibleMetricIndex&&(b["metric"+a.a.visibleMetricIndex]=e),a.c.send("event",y(b,a.a.fieldsObj,a.c,a.a.hitFilter)))} +f.u=function(a){var b=this;return function(c,d){var e={},e=B(c)?c:(e[c]=d,e);e.page&&e.page!==b.c.get("page")&&"visible"==b.f&&b.o();a(c,d)}};f.M=function(a,b){a.time!=b.time&&b.pageId==Z&&"visible"==b.state&&Ma(this,b,a.time)};f.F=function(){"hidden"!=this.f&&this.o()};f.remove=function(){this.b.j();this.m.j();var a=this.u;w(x(this.c,"set"),a);window.removeEventListener("unload",this.F);document.removeEventListener("visibilitychange",this.o)};C("pageVisibilityTracker",Ka); +function Na(a,b){H(a,D.$);window.addEventListener&&(this.a=z({fieldsObj:{},hitFilter:null},b),this.b=a,this.s=this.s.bind(this),this.I=this.I.bind(this),this.C=this.C.bind(this),this.w=this.w.bind(this),this.A=this.A.bind(this),this.D=this.D.bind(this),"complete"!=document.readyState?window.addEventListener("load",this.s):this.s())}f=Na.prototype; +f.s=function(){if(window.FB)try{window.FB.Event.subscribe("edge.create",this.A),window.FB.Event.subscribe("edge.remove",this.D)}catch(a){}window.twttr&&this.I()};f.I=function(){var a=this;try{window.twttr.ready(function(){window.twttr.events.bind("tweet",a.C);window.twttr.events.bind("follow",a.w)})}catch(b){}};function Oa(a){try{window.twttr.ready(function(){window.twttr.events.unbind("tweet",a.C);window.twttr.events.unbind("follow",a.w)})}catch(b){}} +f.C=function(a){"tweet"==a.region&&(a={transport:"beacon",socialNetwork:"Twitter",socialAction:"tweet",socialTarget:a.data.url||a.target.getAttribute("data-url")||location.href},this.b.send("social",y(a,this.a.fieldsObj,this.b,this.a.hitFilter)))};f.w=function(a){"follow"==a.region&&(a={transport:"beacon",socialNetwork:"Twitter",socialAction:"follow",socialTarget:a.data.screen_name||a.target.getAttribute("data-screen-name")},this.b.send("social",y(a,this.a.fieldsObj,this.b,this.a.hitFilter)))}; +f.A=function(a){this.b.send("social",y({transport:"beacon",socialNetwork:"Facebook",socialAction:"like",socialTarget:a},this.a.fieldsObj,this.b,this.a.hitFilter))};f.D=function(a){this.b.send("social",y({transport:"beacon",socialNetwork:"Facebook",socialAction:"unlike",socialTarget:a},this.a.fieldsObj,this.b,this.a.hitFilter))};f.remove=function(){window.removeEventListener("load",this.s);try{window.FB.Event.unsubscribe("edge.create",this.A),window.FB.Event.unsubscribe("edge.remove",this.D)}catch(a){}Oa(this)}; +C("socialWidgetTracker",Na);function Pa(a,b){H(a,D.aa);history.pushState&&window.addEventListener&&(this.a=z({shouldTrackUrlChange:this.shouldTrackUrlChange,trackReplaceState:!1,fieldsObj:{},hitFilter:null},b),this.b=a,this.c=location.pathname+location.search,this.G=this.G.bind(this),this.H=this.H.bind(this),this.B=this.B.bind(this),a=this.G,v(x(history,"pushState"),a),a=this.H,v(x(history,"replaceState"),a),window.addEventListener("popstate",this.B))}f=Pa.prototype; +f.G=function(a){var b=this;return function(c){for(var d=[],e=0;e122||(d<65||j>90||b.push([Math.max(65,j)|32,Math.min(d,90)|32]),d<97||j>122||b.push([Math.max(97,j)&-33,Math.min(d,122)&-33]))}}b.sort(function(a,f){return a[0]-f[0]||f[1]-a[1]});f=[];j=[NaN,NaN];for(c=0;ci[0]&&(i[1]+1>i[0]&&b.push("-"),b.push(e(i[1])));b.push("]");return b.join("")}function y(a){for(var f=a.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),b=f.length,d=[],c=0,i=0;c=2&&a==="["?f[c]=h(j):a!=="\\"&&(f[c]=j.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return f.join("")}for(var t=0,s=!1,l=!1,p=0,d=a.length;p=5&&"lang-"===b.substring(0,5))&&!(o&&typeof o[1]==="string"))c=!1,b="src";c||(r[f]=b)}i=d;d+=f.length;if(c){c=o[1];var j=f.indexOf(c),k=j+c.length;o[2]&&(k=f.length-o[2].length,j=k-c.length);b=b.substring(5);B(l+i,f.substring(0,j),e,p);B(l+i+j,c,C(b,c),p);B(l+i+k,f.substring(k),e,p)}else p.push(l+i,b)}a.e=p}var h={},y;(function(){for(var e=a.concat(m), +l=[],p={},d=0,g=e.length;d=0;)h[n.charAt(k)]=r;r=r[1];n=""+r;p.hasOwnProperty(n)||(l.push(r),p[n]=q)}l.push(/[\S\s]/);y=L(l)})();var t=m.length;return e}function u(a){var m=[],e=[];a.tripleQuotedStrings?m.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):a.multiLineStrings?m.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/, +q,"'\"`"]):m.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);a.verbatimStrings&&e.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var h=a.hashComments;h&&(a.cStyleComments?(h>1?m.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):m.push(["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),e.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,q])):m.push(["com",/^#[^\n\r]*/, +q,"#"]));a.cStyleComments&&(e.push(["com",/^\/\/[^\n\r]*/,q]),e.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));a.regexLiterals&&e.push(["lang-regex",/^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]);(h=a.types)&&e.push(["typ",h]);a=(""+a.keywords).replace(/^ | $/g, +"");a.length&&e.push(["kwd",RegExp("^(?:"+a.replace(/[\s,]+/g,"|")+")\\b"),q]);m.push(["pln",/^\s+/,q," \r\n\t\xa0"]);e.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,q],["pun",/^.[^\s\w"-$'./@\\`]*/,q]);return x(m,e)}function D(a,m){function e(a){switch(a.nodeType){case 1:if(k.test(a.className))break;if("BR"===a.nodeName)h(a), +a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)e(a);break;case 3:case 4:if(p){var b=a.nodeValue,d=b.match(t);if(d){var c=b.substring(0,d.index);a.nodeValue=c;(b=b.substring(d.index+d[0].length))&&a.parentNode.insertBefore(s.createTextNode(b),a.nextSibling);h(a);c||a.parentNode.removeChild(a)}}}}function h(a){function b(a,d){var e=d?a.cloneNode(!1):a,f=a.parentNode;if(f){var f=b(f,1),g=a.nextSibling;f.appendChild(e);for(var h=g;h;h=g)g=h.nextSibling,f.appendChild(h)}return e} +for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),e;(e=a.parentNode)&&e.nodeType===1;)a=e;d.push(a)}var k=/(?:^|\s)nocode(?:\s|$)/,t=/\r\n?|\n/,s=a.ownerDocument,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=s.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);for(l=s.createElement("LI");a.firstChild;)l.appendChild(a.firstChild);for(var d=[l],g=0;g=0;){var h=m[e];A.hasOwnProperty(h)?window.console&&console.warn("cannot override language handler %s",h):A[h]=a}}function C(a,m){if(!a||!A.hasOwnProperty(a))a=/^\s*=o&&(h+=2);e>=c&&(a+=2)}}catch(w){"console"in window&&console.log(w&&w.stack?w.stack:w)}}var v=["break,continue,do,else,for,if,return,while"],w=[[v,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"], +"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],F=[w,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],G=[w,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"], +H=[G,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],w=[w,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],I=[v,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"], +J=[v,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],v=[v,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],K=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,N=/\S/,O=u({keywords:[F,H,w,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END"+ +I,J,v],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),A={};k(O,["default-code"]);k(x([],[["pln",/^[^]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]), +["default-markup","htm","html","mxml","xhtml","xml","xsl"]);k(x([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css", +/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);k(x([],[["atv",/^[\S\s]+/]]),["uq.val"]);k(u({keywords:F,hashComments:!0,cStyleComments:!0,types:K}),["c","cc","cpp","cxx","cyc","m"]);k(u({keywords:"null,true,false"}),["json"]);k(u({keywords:H,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:K}),["cs"]);k(u({keywords:G,cStyleComments:!0}),["java"]);k(u({keywords:v,hashComments:!0,multiLineStrings:!0}),["bsh","csh","sh"]);k(u({keywords:I,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}), +["cv","py"]);k(u({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["perl","pl","pm"]);k(u({keywords:J,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb"]);k(u({keywords:w,cStyleComments:!0,regexLiterals:!0}),["js"]);k(u({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes", +hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);k(x([],[["str",/^[\S\s]+/]]),["regex"]);window.prettyPrintOne=function(a,m,e){var h=document.createElement("PRE");h.innerHTML=a;e&&D(h,e);E({g:m,i:e,h:h});return h.innerHTML};window.prettyPrint=function(a){function m(){for(var e=window.PR_SHOULD_USE_CONTINUATION?l.now()+250:Infinity;p=0){var k=k.match(g),f,b;if(b= +!k){b=n;for(var o=void 0,c=b.firstChild;c;c=c.nextSibling)var i=c.nodeType,o=i===1?o?b:c:i===3?N.test(c.nodeValue)?b:o:o;b=(f=o===b?void 0:o)&&"CODE"===f.tagName}b&&(k=f.className.match(g));k&&(k=k[1]);b=!1;for(o=n.parentNode;o;o=o.parentNode)if((o.tagName==="pre"||o.tagName==="code"||o.tagName==="xmp")&&o.className&&o.className.indexOf("prettyprint")>=0){b=!0;break}b||((b=(b=n.className.match(/\blinenums\b(?::(\d+))?/))?b[1]&&b[1].length?+b[1]:!0:!1)&&D(n,b),d={g:k,h:n,i:b},E(d))}}p 0) { + tokens.push( + new lunr.Token (str.slice(sliceStart, sliceEnd), { + position: [sliceStart, sliceLength], + index: tokens.length + }) + ) + } + + sliceStart = sliceEnd + 1 + } + + } + + return tokens +} + +/** + * The separator used to split a string into tokens. Override this property to change the behaviour of + * `lunr.tokenizer` behaviour when tokenizing strings. By default this splits on whitespace and hyphens. + * + * @static + * @see lunr.tokenizer + */ +lunr.tokenizer.separator = /[\s\-]+/ +/*! + * lunr.Pipeline + * Copyright (C) 2017 Oliver Nightingale + */ + +/** + * lunr.Pipelines maintain an ordered list of functions to be applied to all + * tokens in documents entering the search index and queries being ran against + * the index. + * + * An instance of lunr.Index created with the lunr shortcut will contain a + * pipeline with a stop word filter and an English language stemmer. Extra + * functions can be added before or after either of these functions or these + * default functions can be removed. + * + * When run the pipeline will call each function in turn, passing a token, the + * index of that token in the original list of all tokens and finally a list of + * all the original tokens. + * + * The output of functions in the pipeline will be passed to the next function + * in the pipeline. To exclude a token from entering the index the function + * should return undefined, the rest of the pipeline will not be called with + * this token. + * + * For serialisation of pipelines to work, all functions used in an instance of + * a pipeline should be registered with lunr.Pipeline. Registered functions can + * then be loaded. If trying to load a serialised pipeline that uses functions + * that are not registered an error will be thrown. + * + * If not planning on serialising the pipeline then registering pipeline functions + * is not necessary. + * + * @constructor + */ +lunr.Pipeline = function () { + this._stack = [] +} + +lunr.Pipeline.registeredFunctions = Object.create(null) + +/** + * A pipeline function maps lunr.Token to lunr.Token. A lunr.Token contains the token + * string as well as all known metadata. A pipeline function can mutate the token string + * or mutate (or add) metadata for a given token. + * + * A pipeline function can indicate that the passed token should be discarded by returning + * null. This token will not be passed to any downstream pipeline functions and will not be + * added to the index. + * + * Multiple tokens can be returned by returning an array of tokens. Each token will be passed + * to any downstream pipeline functions and all will returned tokens will be added to the index. + * + * Any number of pipeline functions may be chained together using a lunr.Pipeline. + * + * @interface lunr.PipelineFunction + * @param {lunr.Token} token - A token from the document being processed. + * @param {number} i - The index of this token in the complete list of tokens for this document/field. + * @param {lunr.Token[]} tokens - All tokens for this document/field. + * @returns {(?lunr.Token|lunr.Token[])} + */ + +/** + * Register a function with the pipeline. + * + * Functions that are used in the pipeline should be registered if the pipeline + * needs to be serialised, or a serialised pipeline needs to be loaded. + * + * Registering a function does not add it to a pipeline, functions must still be + * added to instances of the pipeline for them to be used when running a pipeline. + * + * @param {lunr.PipelineFunction} fn - The function to check for. + * @param {String} label - The label to register this function with + */ +lunr.Pipeline.registerFunction = function (fn, label) { + if (label in this.registeredFunctions) { + lunr.utils.warn('Overwriting existing registered function: ' + label) + } + + fn.label = label + lunr.Pipeline.registeredFunctions[fn.label] = fn +} + +/** + * Warns if the function is not registered as a Pipeline function. + * + * @param {lunr.PipelineFunction} fn - The function to check for. + * @private + */ +lunr.Pipeline.warnIfFunctionNotRegistered = function (fn) { + var isRegistered = fn.label && (fn.label in this.registeredFunctions) + + if (!isRegistered) { + lunr.utils.warn('Function is not registered with pipeline. This may cause problems when serialising the index.\n', fn) + } +} + +/** + * Loads a previously serialised pipeline. + * + * All functions to be loaded must already be registered with lunr.Pipeline. + * If any function from the serialised data has not been registered then an + * error will be thrown. + * + * @param {Object} serialised - The serialised pipeline to load. + * @returns {lunr.Pipeline} + */ +lunr.Pipeline.load = function (serialised) { + var pipeline = new lunr.Pipeline + + serialised.forEach(function (fnName) { + var fn = lunr.Pipeline.registeredFunctions[fnName] + + if (fn) { + pipeline.add(fn) + } else { + throw new Error('Cannot load unregistered function: ' + fnName) + } + }) + + return pipeline +} + +/** + * Adds new functions to the end of the pipeline. + * + * Logs a warning if the function has not been registered. + * + * @param {lunr.PipelineFunction[]} functions - Any number of functions to add to the pipeline. + */ +lunr.Pipeline.prototype.add = function () { + var fns = Array.prototype.slice.call(arguments) + + fns.forEach(function (fn) { + lunr.Pipeline.warnIfFunctionNotRegistered(fn) + this._stack.push(fn) + }, this) +} + +/** + * Adds a single function after a function that already exists in the + * pipeline. + * + * Logs a warning if the function has not been registered. + * + * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline. + * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline. + */ +lunr.Pipeline.prototype.after = function (existingFn, newFn) { + lunr.Pipeline.warnIfFunctionNotRegistered(newFn) + + var pos = this._stack.indexOf(existingFn) + if (pos == -1) { + throw new Error('Cannot find existingFn') + } + + pos = pos + 1 + this._stack.splice(pos, 0, newFn) +} + +/** + * Adds a single function before a function that already exists in the + * pipeline. + * + * Logs a warning if the function has not been registered. + * + * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline. + * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline. + */ +lunr.Pipeline.prototype.before = function (existingFn, newFn) { + lunr.Pipeline.warnIfFunctionNotRegistered(newFn) + + var pos = this._stack.indexOf(existingFn) + if (pos == -1) { + throw new Error('Cannot find existingFn') + } + + this._stack.splice(pos, 0, newFn) +} + +/** + * Removes a function from the pipeline. + * + * @param {lunr.PipelineFunction} fn The function to remove from the pipeline. + */ +lunr.Pipeline.prototype.remove = function (fn) { + var pos = this._stack.indexOf(fn) + if (pos == -1) { + return + } + + this._stack.splice(pos, 1) +} + +/** + * Runs the current list of functions that make up the pipeline against the + * passed tokens. + * + * @param {Array} tokens The tokens to run through the pipeline. + * @returns {Array} + */ +lunr.Pipeline.prototype.run = function (tokens) { + var stackLength = this._stack.length + + for (var i = 0; i < stackLength; i++) { + var fn = this._stack[i] + + tokens = tokens.reduce(function (memo, token, j) { + var result = fn(token, j, tokens) + + if (result === void 0 || result === '') return memo + + return memo.concat(result) + }, []) + } + + return tokens +} + +/** + * Convenience method for passing a string through a pipeline and getting + * strings out. This method takes care of wrapping the passed string in a + * token and mapping the resulting tokens back to strings. + * + * @param {string} str - The string to pass through the pipeline. + * @returns {string[]} + */ +lunr.Pipeline.prototype.runString = function (str) { + var token = new lunr.Token (str) + + return this.run([token]).map(function (t) { + return t.toString() + }) +} + +/** + * Resets the pipeline by removing any existing processors. + * + */ +lunr.Pipeline.prototype.reset = function () { + this._stack = [] +} + +/** + * Returns a representation of the pipeline ready for serialisation. + * + * Logs a warning if the function has not been registered. + * + * @returns {Array} + */ +lunr.Pipeline.prototype.toJSON = function () { + return this._stack.map(function (fn) { + lunr.Pipeline.warnIfFunctionNotRegistered(fn) + + return fn.label + }) +} +/*! + * lunr.Vector + * Copyright (C) 2017 Oliver Nightingale + */ + +/** + * A vector is used to construct the vector space of documents and queries. These + * vectors support operations to determine the similarity between two documents or + * a document and a query. + * + * Normally no parameters are required for initializing a vector, but in the case of + * loading a previously dumped vector the raw elements can be provided to the constructor. + * + * For performance reasons vectors are implemented with a flat array, where an elements + * index is immediately followed by its value. E.g. [index, value, index, value]. This + * allows the underlying array to be as sparse as possible and still offer decent + * performance when being used for vector calculations. + * + * @constructor + * @param {Number[]} [elements] - The flat list of element index and element value pairs. + */ +lunr.Vector = function (elements) { + this._magnitude = 0 + this.elements = elements || [] +} + + +/** + * Calculates the position within the vector to insert a given index. + * + * This is used internally by insert and upsert. If there are duplicate indexes then + * the position is returned as if the value for that index were to be updated, but it + * is the callers responsibility to check whether there is a duplicate at that index + * + * @param {Number} insertIdx - The index at which the element should be inserted. + * @returns {Number} + */ +lunr.Vector.prototype.positionForIndex = function (index) { + // For an empty vector the tuple can be inserted at the beginning + if (this.elements.length == 0) { + return 0 + } + + var start = 0, + end = this.elements.length / 2, + sliceLength = end - start, + pivotPoint = Math.floor(sliceLength / 2), + pivotIndex = this.elements[pivotPoint * 2] + + while (sliceLength > 1) { + if (pivotIndex < index) { + start = pivotPoint + } + + if (pivotIndex > index) { + end = pivotPoint + } + + if (pivotIndex == index) { + break + } + + sliceLength = end - start + pivotPoint = start + Math.floor(sliceLength / 2) + pivotIndex = this.elements[pivotPoint * 2] + } + + if (pivotIndex == index) { + return pivotPoint * 2 + } + + if (pivotIndex > index) { + return pivotPoint * 2 + } + + if (pivotIndex < index) { + return (pivotPoint + 1) * 2 + } +} + +/** + * Inserts an element at an index within the vector. + * + * Does not allow duplicates, will throw an error if there is already an entry + * for this index. + * + * @param {Number} insertIdx - The index at which the element should be inserted. + * @param {Number} val - The value to be inserted into the vector. + */ +lunr.Vector.prototype.insert = function (insertIdx, val) { + this.upsert(insertIdx, val, function () { + throw "duplicate index" + }) +} + +/** + * Inserts or updates an existing index within the vector. + * + * @param {Number} insertIdx - The index at which the element should be inserted. + * @param {Number} val - The value to be inserted into the vector. + * @param {function} fn - A function that is called for updates, the existing value and the + * requested value are passed as arguments + */ +lunr.Vector.prototype.upsert = function (insertIdx, val, fn) { + this._magnitude = 0 + var position = this.positionForIndex(insertIdx) + + if (this.elements[position] == insertIdx) { + this.elements[position + 1] = fn(this.elements[position + 1], val) + } else { + this.elements.splice(position, 0, insertIdx, val) + } +} + +/** + * Calculates the magnitude of this vector. + * + * @returns {Number} + */ +lunr.Vector.prototype.magnitude = function () { + if (this._magnitude) return this._magnitude + + var sumOfSquares = 0, + elementsLength = this.elements.length + + for (var i = 1; i < elementsLength; i += 2) { + var val = this.elements[i] + sumOfSquares += val * val + } + + return this._magnitude = Math.sqrt(sumOfSquares) +} + +/** + * Calculates the dot product of this vector and another vector. + * + * @param {lunr.Vector} otherVector - The vector to compute the dot product with. + * @returns {Number} + */ +lunr.Vector.prototype.dot = function (otherVector) { + var dotProduct = 0, + a = this.elements, b = otherVector.elements, + aLen = a.length, bLen = b.length, + aVal = 0, bVal = 0, + i = 0, j = 0 + + while (i < aLen && j < bLen) { + aVal = a[i], bVal = b[j] + if (aVal < bVal) { + i += 2 + } else if (aVal > bVal) { + j += 2 + } else if (aVal == bVal) { + dotProduct += a[i + 1] * b[j + 1] + i += 2 + j += 2 + } + } + + return dotProduct +} + +/** + * Calculates the cosine similarity between this vector and another + * vector. + * + * @param {lunr.Vector} otherVector - The other vector to calculate the + * similarity with. + * @returns {Number} + */ +lunr.Vector.prototype.similarity = function (otherVector) { + return this.dot(otherVector) / (this.magnitude() * otherVector.magnitude()) +} + +/** + * Converts the vector to an array of the elements within the vector. + * + * @returns {Number[]} + */ +lunr.Vector.prototype.toArray = function () { + var output = new Array (this.elements.length / 2) + + for (var i = 1, j = 0; i < this.elements.length; i += 2, j++) { + output[j] = this.elements[i] + } + + return output +} + +/** + * A JSON serializable representation of the vector. + * + * @returns {Number[]} + */ +lunr.Vector.prototype.toJSON = function () { + return this.elements +} +/* eslint-disable */ +/*! + * lunr.stemmer + * Copyright (C) 2017 Oliver Nightingale + * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt + */ + +/** + * lunr.stemmer is an english language stemmer, this is a JavaScript + * implementation of the PorterStemmer taken from http://tartarus.org/~martin + * + * @static + * @implements {lunr.PipelineFunction} + * @param {lunr.Token} token - The string to stem + * @returns {lunr.Token} + * @see {@link lunr.Pipeline} + */ +lunr.stemmer = (function(){ + var step2list = { + "ational" : "ate", + "tional" : "tion", + "enci" : "ence", + "anci" : "ance", + "izer" : "ize", + "bli" : "ble", + "alli" : "al", + "entli" : "ent", + "eli" : "e", + "ousli" : "ous", + "ization" : "ize", + "ation" : "ate", + "ator" : "ate", + "alism" : "al", + "iveness" : "ive", + "fulness" : "ful", + "ousness" : "ous", + "aliti" : "al", + "iviti" : "ive", + "biliti" : "ble", + "logi" : "log" + }, + + step3list = { + "icate" : "ic", + "ative" : "", + "alize" : "al", + "iciti" : "ic", + "ical" : "ic", + "ful" : "", + "ness" : "" + }, + + c = "[^aeiou]", // consonant + v = "[aeiouy]", // vowel + C = c + "[^aeiouy]*", // consonant sequence + V = v + "[aeiou]*", // vowel sequence + + mgr0 = "^(" + C + ")?" + V + C, // [C]VC... is m>0 + meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$", // [C]VC[V] is m=1 + mgr1 = "^(" + C + ")?" + V + C + V + C, // [C]VCVC... is m>1 + s_v = "^(" + C + ")?" + v; // vowel in stem + + var re_mgr0 = new RegExp(mgr0); + var re_mgr1 = new RegExp(mgr1); + var re_meq1 = new RegExp(meq1); + var re_s_v = new RegExp(s_v); + + var re_1a = /^(.+?)(ss|i)es$/; + var re2_1a = /^(.+?)([^s])s$/; + var re_1b = /^(.+?)eed$/; + var re2_1b = /^(.+?)(ed|ing)$/; + var re_1b_2 = /.$/; + var re2_1b_2 = /(at|bl|iz)$/; + var re3_1b_2 = new RegExp("([^aeiouylsz])\\1$"); + var re4_1b_2 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + + var re_1c = /^(.+?[^aeiou])y$/; + var re_2 = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; + + var re_3 = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; + + var re_4 = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; + var re2_4 = /^(.+?)(s|t)(ion)$/; + + var re_5 = /^(.+?)e$/; + var re_5_1 = /ll$/; + var re3_5 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + + var porterStemmer = function porterStemmer(w) { + var stem, + suffix, + firstch, + re, + re2, + re3, + re4; + + if (w.length < 3) { return w; } + + firstch = w.substr(0,1); + if (firstch == "y") { + w = firstch.toUpperCase() + w.substr(1); + } + + // Step 1a + re = re_1a + re2 = re2_1a; + + if (re.test(w)) { w = w.replace(re,"$1$2"); } + else if (re2.test(w)) { w = w.replace(re2,"$1$2"); } + + // Step 1b + re = re_1b; + re2 = re2_1b; + if (re.test(w)) { + var fp = re.exec(w); + re = re_mgr0; + if (re.test(fp[1])) { + re = re_1b_2; + w = w.replace(re,""); + } + } else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + re2 = re_s_v; + if (re2.test(stem)) { + w = stem; + re2 = re2_1b_2; + re3 = re3_1b_2; + re4 = re4_1b_2; + if (re2.test(w)) { w = w + "e"; } + else if (re3.test(w)) { re = re_1b_2; w = w.replace(re,""); } + else if (re4.test(w)) { w = w + "e"; } + } + } + + // Step 1c - replace suffix y or Y by i if preceded by a non-vowel which is not the first letter of the word (so cry -> cri, by -> by, say -> say) + re = re_1c; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + w = stem + "i"; + } + + // Step 2 + re = re_2; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = re_mgr0; + if (re.test(stem)) { + w = stem + step2list[suffix]; + } + } + + // Step 3 + re = re_3; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = re_mgr0; + if (re.test(stem)) { + w = stem + step3list[suffix]; + } + } + + // Step 4 + re = re_4; + re2 = re2_4; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = re_mgr1; + if (re.test(stem)) { + w = stem; + } + } else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1] + fp[2]; + re2 = re_mgr1; + if (re2.test(stem)) { + w = stem; + } + } + + // Step 5 + re = re_5; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = re_mgr1; + re2 = re_meq1; + re3 = re3_5; + if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) { + w = stem; + } + } + + re = re_5_1; + re2 = re_mgr1; + if (re.test(w) && re2.test(w)) { + re = re_1b_2; + w = w.replace(re,""); + } + + // and turn initial Y back to y + + if (firstch == "y") { + w = firstch.toLowerCase() + w.substr(1); + } + + return w; + }; + + return function (token) { + return token.update(porterStemmer); + } +})(); + +lunr.Pipeline.registerFunction(lunr.stemmer, 'stemmer') +/*! + * lunr.stopWordFilter + * Copyright (C) 2017 Oliver Nightingale + */ + +/** + * lunr.generateStopWordFilter builds a stopWordFilter function from the provided + * list of stop words. + * + * The built in lunr.stopWordFilter is built using this generator and can be used + * to generate custom stopWordFilters for applications or non English languages. + * + * @param {Array} token The token to pass through the filter + * @returns {lunr.PipelineFunction} + * @see lunr.Pipeline + * @see lunr.stopWordFilter + */ +lunr.generateStopWordFilter = function (stopWords) { + var words = stopWords.reduce(function (memo, stopWord) { + memo[stopWord] = stopWord + return memo + }, {}) + + return function (token) { + if (token && words[token.toString()] !== token.toString()) return token + } +} + +/** + * lunr.stopWordFilter is an English language stop word list filter, any words + * contained in the list will not be passed through the filter. + * + * This is intended to be used in the Pipeline. If the token does not pass the + * filter then undefined will be returned. + * + * @implements {lunr.PipelineFunction} + * @params {lunr.Token} token - A token to check for being a stop word. + * @returns {lunr.Token} + * @see {@link lunr.Pipeline} + */ +lunr.stopWordFilter = lunr.generateStopWordFilter([ + 'a', + 'able', + 'about', + 'across', + 'after', + 'all', + 'almost', + 'also', + 'am', + 'among', + 'an', + 'and', + 'any', + 'are', + 'as', + 'at', + 'be', + 'because', + 'been', + 'but', + 'by', + 'can', + 'cannot', + 'could', + 'dear', + 'did', + 'do', + 'does', + 'either', + 'else', + 'ever', + 'every', + 'for', + 'from', + 'get', + 'got', + 'had', + 'has', + 'have', + 'he', + 'her', + 'hers', + 'him', + 'his', + 'how', + 'however', + 'i', + 'if', + 'in', + 'into', + 'is', + 'it', + 'its', + 'just', + 'least', + 'let', + 'like', + 'likely', + 'may', + 'me', + 'might', + 'most', + 'must', + 'my', + 'neither', + 'no', + 'nor', + 'not', + 'of', + 'off', + 'often', + 'on', + 'only', + 'or', + 'other', + 'our', + 'own', + 'rather', + 'said', + 'say', + 'says', + 'she', + 'should', + 'since', + 'so', + 'some', + 'than', + 'that', + 'the', + 'their', + 'them', + 'then', + 'there', + 'these', + 'they', + 'this', + 'tis', + 'to', + 'too', + 'twas', + 'us', + 'wants', + 'was', + 'we', + 'were', + 'what', + 'when', + 'where', + 'which', + 'while', + 'who', + 'whom', + 'why', + 'will', + 'with', + 'would', + 'yet', + 'you', + 'your' +]) + +lunr.Pipeline.registerFunction(lunr.stopWordFilter, 'stopWordFilter') +/*! + * lunr.trimmer + * Copyright (C) 2017 Oliver Nightingale + */ + +/** + * lunr.trimmer is a pipeline function for trimming non word + * characters from the beginning and end of tokens before they + * enter the index. + * + * This implementation may not work correctly for non latin + * characters and should either be removed or adapted for use + * with languages with non-latin characters. + * + * @static + * @implements {lunr.PipelineFunction} + * @param {lunr.Token} token The token to pass through the filter + * @returns {lunr.Token} + * @see lunr.Pipeline + */ +lunr.trimmer = function (token) { + return token.update(function (s) { + return s.replace(/^\W+/, '').replace(/\W+$/, '') + }) +} + +lunr.Pipeline.registerFunction(lunr.trimmer, 'trimmer') +/*! + * lunr.TokenSet + * Copyright (C) 2017 Oliver Nightingale + */ + +/** + * A token set is used to store the unique list of all tokens + * within an index. Token sets are also used to represent an + * incoming query to the index, this query token set and index + * token set are then intersected to find which tokens to look + * up in the inverted index. + * + * A token set can hold multiple tokens, as in the case of the + * index token set, or it can hold a single token as in the + * case of a simple query token set. + * + * Additionally token sets are used to perform wildcard matching. + * Leading, contained and trailing wildcards are supported, and + * from this edit distance matching can also be provided. + * + * Token sets are implemented as a minimal finite state automata, + * where both common prefixes and suffixes are shared between tokens. + * This helps to reduce the space used for storing the token set. + * + * @constructor + */ +lunr.TokenSet = function () { + this.final = false + this.edges = {} + this.id = lunr.TokenSet._nextId + lunr.TokenSet._nextId += 1 +} + +/** + * Keeps track of the next, auto increment, identifier to assign + * to a new tokenSet. + * + * TokenSets require a unique identifier to be correctly minimised. + * + * @private + */ +lunr.TokenSet._nextId = 1 + +/** + * Creates a TokenSet instance from the given sorted array of words. + * + * @param {String[]} arr - A sorted array of strings to create the set from. + * @returns {lunr.TokenSet} + * @throws Will throw an error if the input array is not sorted. + */ +lunr.TokenSet.fromArray = function (arr) { + var builder = new lunr.TokenSet.Builder + + for (var i = 0, len = arr.length; i < len; i++) { + builder.insert(arr[i]) + } + + builder.finish() + return builder.root +} + +/** + * Creates a token set from a query clause. + * + * @private + * @param {Object} clause - A single clause from lunr.Query. + * @param {string} clause.term - The query clause term. + * @param {number} [clause.editDistance] - The optional edit distance for the term. + * @returns {lunr.TokenSet} + */ +lunr.TokenSet.fromClause = function (clause) { + if ('editDistance' in clause) { + return lunr.TokenSet.fromFuzzyString(clause.term, clause.editDistance) + } else { + return lunr.TokenSet.fromString(clause.term) + } +} + +/** + * Creates a token set representing a single string with a specified + * edit distance. + * + * Insertions, deletions, substitutions and transpositions are each + * treated as an edit distance of 1. + * + * Increasing the allowed edit distance will have a dramatic impact + * on the performance of both creating and intersecting these TokenSets. + * It is advised to keep the edit distance less than 3. + * + * @param {string} str - The string to create the token set from. + * @param {number} editDistance - The allowed edit distance to match. + * @returns {lunr.Vector} + */ +lunr.TokenSet.fromFuzzyString = function (str, editDistance) { + var root = new lunr.TokenSet + + var stack = [{ + node: root, + editsRemaining: editDistance, + str: str + }] + + while (stack.length) { + var frame = stack.pop() + + // no edit + if (frame.str.length > 0) { + var char = frame.str.charAt(0), + noEditNode + + if (char in frame.node.edges) { + noEditNode = frame.node.edges[char] + } else { + noEditNode = new lunr.TokenSet + frame.node.edges[char] = noEditNode + } + + if (frame.str.length == 1) { + noEditNode.final = true + } else { + stack.push({ + node: noEditNode, + editsRemaining: frame.editsRemaining, + str: frame.str.slice(1) + }) + } + } + + // deletion + // can only do a deletion if we have enough edits remaining + // and if there are characters left to delete in the string + if (frame.editsRemaining > 0 && frame.str.length > 1) { + var char = frame.str.charAt(1), + deletionNode + + if (char in frame.node.edges) { + deletionNode = frame.node.edges[char] + } else { + deletionNode = new lunr.TokenSet + frame.node.edges[char] = deletionNode + } + + if (frame.str.length <= 2) { + deletionNode.final = true + } else { + stack.push({ + node: deletionNode, + editsRemaining: frame.editsRemaining - 1, + str: frame.str.slice(2) + }) + } + } + + // deletion + // just removing the last character from the str + if (frame.editsRemaining > 0 && frame.str.length == 1) { + frame.node.final = true + } + + // substitution + // can only do a substitution if we have enough edits remaining + // and if there are characters left to substitute + if (frame.editsRemaining > 0 && frame.str.length >= 1) { + if ("*" in frame.node.edges) { + var substitutionNode = frame.node.edges["*"] + } else { + var substitutionNode = new lunr.TokenSet + frame.node.edges["*"] = substitutionNode + } + + if (frame.str.length == 1) { + substitutionNode.final = true + } else { + stack.push({ + node: substitutionNode, + editsRemaining: frame.editsRemaining - 1, + str: frame.str.slice(1) + }) + } + } + + // insertion + // can only do insertion if there are edits remaining + if (frame.editsRemaining > 0) { + if ("*" in frame.node.edges) { + var insertionNode = frame.node.edges["*"] + } else { + var insertionNode = new lunr.TokenSet + frame.node.edges["*"] = insertionNode + } + + if (frame.str.length == 0) { + insertionNode.final = true + } else { + stack.push({ + node: insertionNode, + editsRemaining: frame.editsRemaining - 1, + str: frame.str + }) + } + } + + // transposition + // can only do a transposition if there are edits remaining + // and there are enough characters to transpose + if (frame.editsRemaining > 0 && frame.str.length > 1) { + var charA = frame.str.charAt(0), + charB = frame.str.charAt(1), + transposeNode + + if (charB in frame.node.edges) { + transposeNode = frame.node.edges[charB] + } else { + transposeNode = new lunr.TokenSet + frame.node.edges[charB] = transposeNode + } + + if (frame.str.length == 1) { + transposeNode.final = true + } else { + stack.push({ + node: transposeNode, + editsRemaining: frame.editsRemaining - 1, + str: charA + frame.str.slice(2) + }) + } + } + } + + return root +} + +/** + * Creates a TokenSet from a string. + * + * The string may contain one or more wildcard characters (*) + * that will allow wildcard matching when intersecting with + * another TokenSet. + * + * @param {string} str - The string to create a TokenSet from. + * @returns {lunr.TokenSet} + */ +lunr.TokenSet.fromString = function (str) { + var node = new lunr.TokenSet, + root = node, + wildcardFound = false + + /* + * Iterates through all characters within the passed string + * appending a node for each character. + * + * As soon as a wildcard character is found then a self + * referencing edge is introduced to continually match + * any number of any characters. + */ + for (var i = 0, len = str.length; i < len; i++) { + var char = str[i], + final = (i == len - 1) + + if (char == "*") { + wildcardFound = true + node.edges[char] = node + node.final = final + + } else { + var next = new lunr.TokenSet + next.final = final + + node.edges[char] = next + node = next + + // TODO: is this needed anymore? + if (wildcardFound) { + node.edges["*"] = root + } + } + } + + return root +} + +/** + * Converts this TokenSet into an array of strings + * contained within the TokenSet. + * + * @returns {string[]} + */ +lunr.TokenSet.prototype.toArray = function () { + var words = [] + + var stack = [{ + prefix: "", + node: this + }] + + while (stack.length) { + var frame = stack.pop(), + edges = Object.keys(frame.node.edges), + len = edges.length + + if (frame.node.final) { + words.push(frame.prefix) + } + + for (var i = 0; i < len; i++) { + var edge = edges[i] + + stack.push({ + prefix: frame.prefix.concat(edge), + node: frame.node.edges[edge] + }) + } + } + + return words +} + +/** + * Generates a string representation of a TokenSet. + * + * This is intended to allow TokenSets to be used as keys + * in objects, largely to aid the construction and minimisation + * of a TokenSet. As such it is not designed to be a human + * friendly representation of the TokenSet. + * + * @returns {string} + */ +lunr.TokenSet.prototype.toString = function () { + // NOTE: Using Object.keys here as this.edges is very likely + // to enter 'hash-mode' with many keys being added + // + // avoiding a for-in loop here as it leads to the function + // being de-optimised (at least in V8). From some simple + // benchmarks the performance is comparable, but allowing + // V8 to optimize may mean easy performance wins in the future. + + if (this._str) { + return this._str + } + + var str = this.final ? '1' : '0', + labels = Object.keys(this.edges).sort(), + len = labels.length + + for (var i = 0; i < len; i++) { + var label = labels[i], + node = this.edges[label] + + str = str + label + node.id + } + + return str +} + +/** + * Returns a new TokenSet that is the intersection of + * this TokenSet and the passed TokenSet. + * + * This intersection will take into account any wildcards + * contained within the TokenSet. + * + * @param {lunr.TokenSet} b - An other TokenSet to intersect with. + * @returns {lunr.TokenSet} + */ +lunr.TokenSet.prototype.intersect = function (b) { + var output = new lunr.TokenSet, + frame = undefined + + var stack = [{ + qNode: b, + output: output, + node: this + }] + + while (stack.length) { + frame = stack.pop() + + // NOTE: As with the #toString method, we are using + // Object.keys and a for loop instead of a for-in loop + // as both of these objects enter 'hash' mode, causing + // the function to be de-optimised in V8 + var qEdges = Object.keys(frame.qNode.edges), + qLen = qEdges.length, + nEdges = Object.keys(frame.node.edges), + nLen = nEdges.length + + for (var q = 0; q < qLen; q++) { + var qEdge = qEdges[q] + + for (var n = 0; n < nLen; n++) { + var nEdge = nEdges[n] + + if (nEdge == qEdge || qEdge == '*') { + var node = frame.node.edges[nEdge], + qNode = frame.qNode.edges[qEdge], + final = node.final && qNode.final, + next = undefined + + if (nEdge in frame.output.edges) { + // an edge already exists for this character + // no need to create a new node, just set the finality + // bit unless this node is already final + next = frame.output.edges[nEdge] + next.final = next.final || final + + } else { + // no edge exists yet, must create one + // set the finality bit and insert it + // into the output + next = new lunr.TokenSet + next.final = final + frame.output.edges[nEdge] = next + } + + stack.push({ + qNode: qNode, + output: next, + node: node + }) + } + } + } + } + + return output +} +lunr.TokenSet.Builder = function () { + this.previousWord = "" + this.root = new lunr.TokenSet + this.uncheckedNodes = [] + this.minimizedNodes = {} +} + +lunr.TokenSet.Builder.prototype.insert = function (word) { + var node, + commonPrefix = 0 + + if (word < this.previousWord) { + throw new Error ("Out of order word insertion") + } + + for (var i = 0; i < word.length && i < this.previousWord.length; i++) { + if (word[i] != this.previousWord[i]) break + commonPrefix++ + } + + this.minimize(commonPrefix) + + if (this.uncheckedNodes.length == 0) { + node = this.root + } else { + node = this.uncheckedNodes[this.uncheckedNodes.length - 1].child + } + + for (var i = commonPrefix; i < word.length; i++) { + var nextNode = new lunr.TokenSet, + char = word[i] + + node.edges[char] = nextNode + + this.uncheckedNodes.push({ + parent: node, + char: char, + child: nextNode + }) + + node = nextNode + } + + node.final = true + this.previousWord = word +} + +lunr.TokenSet.Builder.prototype.finish = function () { + this.minimize(0) +} + +lunr.TokenSet.Builder.prototype.minimize = function (downTo) { + for (var i = this.uncheckedNodes.length - 1; i >= downTo; i--) { + var node = this.uncheckedNodes[i], + childKey = node.child.toString() + + if (childKey in this.minimizedNodes) { + node.parent.edges[node.char] = this.minimizedNodes[childKey] + } else { + // Cache the key for this node since + // we know it can't change anymore + node.child._str = childKey + + this.minimizedNodes[childKey] = node.child + } + + this.uncheckedNodes.pop() + } +} +/*! + * lunr.Index + * Copyright (C) 2017 Oliver Nightingale + */ + +/** + * An index contains the built index of all documents and provides a query interface + * to the index. + * + * Usually instances of lunr.Index will not be created using this constructor, instead + * lunr.Builder should be used to construct new indexes, or lunr.Index.load should be + * used to load previously built and serialized indexes. + * + * @constructor + * @param {Object} attrs - The attributes of the built search index. + * @param {Object} attrs.invertedIndex - An index of term/field to document reference. + * @param {Object} attrs.documentVectors - Document vectors keyed by document reference. + * @param {lunr.TokenSet} attrs.tokenSet - An set of all corpus tokens. + * @param {string[]} attrs.fields - The names of indexed document fields. + * @param {lunr.Pipeline} attrs.pipeline - The pipeline to use for search terms. + */ +lunr.Index = function (attrs) { + this.invertedIndex = attrs.invertedIndex + this.fieldVectors = attrs.fieldVectors + this.tokenSet = attrs.tokenSet + this.fields = attrs.fields + this.pipeline = attrs.pipeline +} + +/** + * A result contains details of a document matching a search query. + * @typedef {Object} lunr.Index~Result + * @property {string} ref - The reference of the document this result represents. + * @property {number} score - A number between 0 and 1 representing how similar this document is to the query. + * @property {lunr.MatchData} matchData - Contains metadata about this match including which term(s) caused the match. + */ + +/** + * Although lunr provides the ability to create queries using lunr.Query, it also provides a simple + * query language which itself is parsed into an instance of lunr.Query. + * + * For programmatically building queries it is advised to directly use lunr.Query, the query language + * is best used for human entered text rather than program generated text. + * + * At its simplest queries can just be a single term, e.g. `hello`, multiple terms are also supported + * and will be combined with OR, e.g `hello world` will match documents that contain either 'hello' + * or 'world', though those that contain both will rank higher in the results. + * + * Wildcards can be included in terms to match one or more unspecified characters, these wildcards can + * be inserted anywhere within the term, and more than one wildcard can exist in a single term. Adding + * wildcards will increase the number of documents that will be found but can also have a negative + * impact on query performance, especially with wildcards at the beginning of a term. + * + * Terms can be restricted to specific fields, e.g. `title:hello`, only documents with the term + * hello in the title field will match this query. Using a field not present in the index will lead + * to an error being thrown. + * + * Modifiers can also be added to terms, lunr supports edit distance and boost modifiers on terms. A term + * boost will make documents matching that term score higher, e.g. `foo^5`. Edit distance is also supported + * to provide fuzzy matching, e.g. 'hello~2' will match documents with hello with an edit distance of 2. + * Avoid large values for edit distance to improve query performance. + * + * To escape special characters the backslash character '\' can be used, this allows searches to include + * characters that would normally be considered modifiers, e.g. `foo\~2` will search for a term "foo~2" instead + * of attempting to apply a boost of 2 to the search term "foo". + * + * @typedef {string} lunr.Index~QueryString + * @example Simple single term query + * hello + * @example Multiple term query + * hello world + * @example term scoped to a field + * title:hello + * @example term with a boost of 10 + * hello^10 + * @example term with an edit distance of 2 + * hello~2 + */ + +/** + * Performs a search against the index using lunr query syntax. + * + * Results will be returned sorted by their score, the most relevant results + * will be returned first. + * + * For more programmatic querying use lunr.Index#query. + * + * @param {lunr.Index~QueryString} queryString - A string containing a lunr query. + * @throws {lunr.QueryParseError} If the passed query string cannot be parsed. + * @returns {lunr.Index~Result[]} + */ +lunr.Index.prototype.search = function (queryString) { + return this.query(function (query) { + var parser = new lunr.QueryParser(queryString, query) + parser.parse() + }) +} + +/** + * A query builder callback provides a query object to be used to express + * the query to perform on the index. + * + * @callback lunr.Index~queryBuilder + * @param {lunr.Query} query - The query object to build up. + * @this lunr.Query + */ + +/** + * Performs a query against the index using the yielded lunr.Query object. + * + * If performing programmatic queries against the index, this method is preferred + * over lunr.Index#search so as to avoid the additional query parsing overhead. + * + * A query object is yielded to the supplied function which should be used to + * express the query to be run against the index. + * + * Note that although this function takes a callback parameter it is _not_ an + * asynchronous operation, the callback is just yielded a query object to be + * customized. + * + * @param {lunr.Index~queryBuilder} fn - A function that is used to build the query. + * @returns {lunr.Index~Result[]} + */ +lunr.Index.prototype.query = function (fn) { + // for each query clause + // * process terms + // * expand terms from token set + // * find matching documents and metadata + // * get document vectors + // * score documents + + var query = new lunr.Query(this.fields), + matchingFields = Object.create(null), + queryVectors = Object.create(null) + + fn.call(query, query) + + for (var i = 0; i < query.clauses.length; i++) { + /* + * Unless the pipeline has been disabled for this term, which is + * the case for terms with wildcards, we need to pass the clause + * term through the search pipeline. A pipeline returns an array + * of processed terms. Pipeline functions may expand the passed + * term, which means we may end up performing multiple index lookups + * for a single query term. + */ + var clause = query.clauses[i], + terms = null + + if (clause.usePipeline) { + terms = this.pipeline.runString(clause.term) + } else { + terms = [clause.term] + } + + for (var m = 0; m < terms.length; m++) { + var term = terms[m] + + /* + * Each term returned from the pipeline needs to use the same query + * clause object, e.g. the same boost and or edit distance. The + * simplest way to do this is to re-use the clause object but mutate + * its term property. + */ + clause.term = term + + /* + * From the term in the clause we create a token set which will then + * be used to intersect the indexes token set to get a list of terms + * to lookup in the inverted index + */ + var termTokenSet = lunr.TokenSet.fromClause(clause), + expandedTerms = this.tokenSet.intersect(termTokenSet).toArray() + + for (var j = 0; j < expandedTerms.length; j++) { + /* + * For each term get the posting and termIndex, this is required for + * building the query vector. + */ + var expandedTerm = expandedTerms[j], + posting = this.invertedIndex[expandedTerm], + termIndex = posting._index + + for (var k = 0; k < clause.fields.length; k++) { + /* + * For each field that this query term is scoped by (by default + * all fields are in scope) we need to get all the document refs + * that have this term in that field. + * + * The posting is the entry in the invertedIndex for the matching + * term from above. + */ + var field = clause.fields[k], + fieldPosting = posting[field], + matchingDocumentRefs = Object.keys(fieldPosting) + + /* + * To support field level boosts a query vector is created per + * field. This vector is populated using the termIndex found for + * the term and a unit value with the appropriate boost applied. + * + * If the query vector for this field does not exist yet it needs + * to be created. + */ + if (!(field in queryVectors)) { + queryVectors[field] = new lunr.Vector + } + + /* + * Using upsert because there could already be an entry in the vector + * for the term we are working with. In that case we just add the scores + * together. + */ + queryVectors[field].upsert(termIndex, 1 * clause.boost, function (a, b) { return a + b }) + + for (var l = 0; l < matchingDocumentRefs.length; l++) { + /* + * All metadata for this term/field/document triple + * are then extracted and collected into an instance + * of lunr.MatchData ready to be returned in the query + * results + */ + var matchingDocumentRef = matchingDocumentRefs[l], + matchingFieldRef = new lunr.FieldRef (matchingDocumentRef, field), + documentMetadata, matchData + + documentMetadata = fieldPosting[matchingDocumentRef] + matchData = new lunr.MatchData (expandedTerm, field, documentMetadata) + + if (matchingFieldRef in matchingFields) { + matchingFields[matchingFieldRef].combine(matchData) + } else { + matchingFields[matchingFieldRef] = matchData + } + + } + } + } + } + } + + var matchingFieldRefs = Object.keys(matchingFields), + results = {} + + for (var i = 0; i < matchingFieldRefs.length; i++) { + /* + * Currently we have document fields that match the query, but we + * need to return documents. The matchData and scores are combined + * from multiple fields belonging to the same document. + * + * Scores are calculated by field, using the query vectors created + * above, and combined into a final document score using addition. + */ + var fieldRef = lunr.FieldRef.fromString(matchingFieldRefs[i]), + docRef = fieldRef.docRef, + fieldVector = this.fieldVectors[fieldRef], + score = queryVectors[fieldRef.fieldName].similarity(fieldVector) + + if (docRef in results) { + results[docRef].score += score + results[docRef].matchData.combine(matchingFields[fieldRef]) + } else { + results[docRef] = { + ref: docRef, + score: score, + matchData: matchingFields[fieldRef] + } + } + } + + /* + * The results object needs to be converted into a list + * of results, sorted by score before being returned. + */ + return Object.keys(results) + .map(function (key) { + return results[key] + }) + .sort(function (a, b) { + return b.score - a.score + }) +} + +/** + * Prepares the index for JSON serialization. + * + * The schema for this JSON blob will be described in a + * separate JSON schema file. + * + * @returns {Object} + */ +lunr.Index.prototype.toJSON = function () { + var invertedIndex = Object.keys(this.invertedIndex) + .sort() + .map(function (term) { + return [term, this.invertedIndex[term]] + }, this) + + var fieldVectors = Object.keys(this.fieldVectors) + .map(function (ref) { + return [ref, this.fieldVectors[ref].toJSON()] + }, this) + + return { + version: lunr.version, + fields: this.fields, + fieldVectors: fieldVectors, + invertedIndex: invertedIndex, + pipeline: this.pipeline.toJSON() + } +} + +/** + * Loads a previously serialized lunr.Index + * + * @param {Object} serializedIndex - A previously serialized lunr.Index + * @returns {lunr.Index} + */ +lunr.Index.load = function (serializedIndex) { + var attrs = {}, + fieldVectors = {}, + serializedVectors = serializedIndex.fieldVectors, + invertedIndex = {}, + serializedInvertedIndex = serializedIndex.invertedIndex, + tokenSetBuilder = new lunr.TokenSet.Builder, + pipeline = lunr.Pipeline.load(serializedIndex.pipeline) + + if (serializedIndex.version != lunr.version) { + lunr.utils.warn("Version mismatch when loading serialised index. Current version of lunr '" + lunr.version + "' does not match serialized index '" + serializedIndex.version + "'") + } + + for (var i = 0; i < serializedVectors.length; i++) { + var tuple = serializedVectors[i], + ref = tuple[0], + elements = tuple[1] + + fieldVectors[ref] = new lunr.Vector(elements) + } + + for (var i = 0; i < serializedInvertedIndex.length; i++) { + var tuple = serializedInvertedIndex[i], + term = tuple[0], + posting = tuple[1] + + tokenSetBuilder.insert(term) + invertedIndex[term] = posting + } + + tokenSetBuilder.finish() + + attrs.fields = serializedIndex.fields + + attrs.fieldVectors = fieldVectors + attrs.invertedIndex = invertedIndex + attrs.tokenSet = tokenSetBuilder.root + attrs.pipeline = pipeline + + return new lunr.Index(attrs) +} +/*! + * lunr.Builder + * Copyright (C) 2017 Oliver Nightingale + */ + +/** + * lunr.Builder performs indexing on a set of documents and + * returns instances of lunr.Index ready for querying. + * + * All configuration of the index is done via the builder, the + * fields to index, the document reference, the text processing + * pipeline and document scoring parameters are all set on the + * builder before indexing. + * + * @constructor + * @property {string} _ref - Internal reference to the document reference field. + * @property {string[]} _fields - Internal reference to the document fields to index. + * @property {object} invertedIndex - The inverted index maps terms to document fields. + * @property {object} documentTermFrequencies - Keeps track of document term frequencies. + * @property {object} documentLengths - Keeps track of the length of documents added to the index. + * @property {lunr.tokenizer} tokenizer - Function for splitting strings into tokens for indexing. + * @property {lunr.Pipeline} pipeline - The pipeline performs text processing on tokens before indexing. + * @property {lunr.Pipeline} searchPipeline - A pipeline for processing search terms before querying the index. + * @property {number} documentCount - Keeps track of the total number of documents indexed. + * @property {number} _b - A parameter to control field length normalization, setting this to 0 disabled normalization, 1 fully normalizes field lengths, the default value is 0.75. + * @property {number} _k1 - A parameter to control how quickly an increase in term frequency results in term frequency saturation, the default value is 1.2. + * @property {number} termIndex - A counter incremented for each unique term, used to identify a terms position in the vector space. + * @property {array} metadataWhitelist - A list of metadata keys that have been whitelisted for entry in the index. + */ +lunr.Builder = function () { + this._ref = "id" + this._fields = [] + this.invertedIndex = Object.create(null) + this.fieldTermFrequencies = {} + this.fieldLengths = {} + this.tokenizer = lunr.tokenizer + this.pipeline = new lunr.Pipeline + this.searchPipeline = new lunr.Pipeline + this.documentCount = 0 + this._b = 0.75 + this._k1 = 1.2 + this.termIndex = 0 + this.metadataWhitelist = [] +} + +/** + * Sets the document field used as the document reference. Every document must have this field. + * The type of this field in the document should be a string, if it is not a string it will be + * coerced into a string by calling toString. + * + * The default ref is 'id'. + * + * The ref should _not_ be changed during indexing, it should be set before any documents are + * added to the index. Changing it during indexing can lead to inconsistent results. + * + * @param {string} ref - The name of the reference field in the document. + */ +lunr.Builder.prototype.ref = function (ref) { + this._ref = ref +} + +/** + * Adds a field to the list of document fields that will be indexed. Every document being + * indexed should have this field. Null values for this field in indexed documents will + * not cause errors but will limit the chance of that document being retrieved by searches. + * + * All fields should be added before adding documents to the index. Adding fields after + * a document has been indexed will have no effect on already indexed documents. + * + * @param {string} field - The name of a field to index in all documents. + */ +lunr.Builder.prototype.field = function (field) { + this._fields.push(field) +} + +/** + * A parameter to tune the amount of field length normalisation that is applied when + * calculating relevance scores. A value of 0 will completely disable any normalisation + * and a value of 1 will fully normalise field lengths. The default is 0.75. Values of b + * will be clamped to the range 0 - 1. + * + * @param {number} number - The value to set for this tuning parameter. + */ +lunr.Builder.prototype.b = function (number) { + if (number < 0) { + this._b = 0 + } else if (number > 1) { + this._b = 1 + } else { + this._b = number + } +} + +/** + * A parameter that controls the speed at which a rise in term frequency results in term + * frequency saturation. The default value is 1.2. Setting this to a higher value will give + * slower saturation levels, a lower value will result in quicker saturation. + * + * @param {number} number - The value to set for this tuning parameter. + */ +lunr.Builder.prototype.k1 = function (number) { + this._k1 = number +} + +/** + * Adds a document to the index. + * + * Before adding fields to the index the index should have been fully setup, with the document + * ref and all fields to index already having been specified. + * + * The document must have a field name as specified by the ref (by default this is 'id') and + * it should have all fields defined for indexing, though null or undefined values will not + * cause errors. + * + * @param {object} doc - The document to add to the index. + */ +lunr.Builder.prototype.add = function (doc) { + var docRef = doc[this._ref] + + this.documentCount += 1 + + for (var i = 0; i < this._fields.length; i++) { + var fieldName = this._fields[i], + field = doc[fieldName], + tokens = this.tokenizer(field), + terms = this.pipeline.run(tokens), + fieldRef = new lunr.FieldRef (docRef, fieldName), + fieldTerms = Object.create(null) + + this.fieldTermFrequencies[fieldRef] = fieldTerms + this.fieldLengths[fieldRef] = 0 + + // store the length of this field for this document + this.fieldLengths[fieldRef] += terms.length + + // calculate term frequencies for this field + for (var j = 0; j < terms.length; j++) { + var term = terms[j] + + if (fieldTerms[term] == undefined) { + fieldTerms[term] = 0 + } + + fieldTerms[term] += 1 + + // add to inverted index + // create an initial posting if one doesn't exist + if (this.invertedIndex[term] == undefined) { + var posting = Object.create(null) + posting["_index"] = this.termIndex + this.termIndex += 1 + + for (var k = 0; k < this._fields.length; k++) { + posting[this._fields[k]] = Object.create(null) + } + + this.invertedIndex[term] = posting + } + + // add an entry for this term/fieldName/docRef to the invertedIndex + if (this.invertedIndex[term][fieldName][docRef] == undefined) { + this.invertedIndex[term][fieldName][docRef] = Object.create(null) + } + + // store all whitelisted metadata about this token in the + // inverted index + for (var l = 0; l < this.metadataWhitelist.length; l++) { + var metadataKey = this.metadataWhitelist[l], + metadata = term.metadata[metadataKey] + + if (this.invertedIndex[term][fieldName][docRef][metadataKey] == undefined) { + this.invertedIndex[term][fieldName][docRef][metadataKey] = [] + } + + this.invertedIndex[term][fieldName][docRef][metadataKey].push(metadata) + } + } + + } +} + +/** + * Calculates the average document length for this index + * + * @private + */ +lunr.Builder.prototype.calculateAverageFieldLengths = function () { + + var fieldRefs = Object.keys(this.fieldLengths), + numberOfFields = fieldRefs.length, + accumulator = {}, + documentsWithField = {} + + for (var i = 0; i < numberOfFields; i++) { + var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]), + field = fieldRef.fieldName + + documentsWithField[field] || (documentsWithField[field] = 0) + documentsWithField[field] += 1 + + accumulator[field] || (accumulator[field] = 0) + accumulator[field] += this.fieldLengths[fieldRef] + } + + for (var i = 0; i < this._fields.length; i++) { + var field = this._fields[i] + accumulator[field] = accumulator[field] / documentsWithField[field] + } + + this.averageFieldLength = accumulator +} + +/** + * Builds a vector space model of every document using lunr.Vector + * + * @private + */ +lunr.Builder.prototype.createFieldVectors = function () { + var fieldVectors = {}, + fieldRefs = Object.keys(this.fieldTermFrequencies), + fieldRefsLength = fieldRefs.length + + for (var i = 0; i < fieldRefsLength; i++) { + var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]), + field = fieldRef.fieldName, + fieldLength = this.fieldLengths[fieldRef], + fieldVector = new lunr.Vector, + termFrequencies = this.fieldTermFrequencies[fieldRef], + terms = Object.keys(termFrequencies), + termsLength = terms.length + + for (var j = 0; j < termsLength; j++) { + var term = terms[j], + tf = termFrequencies[term], + termIndex = this.invertedIndex[term]._index, + idf = lunr.idf(this.invertedIndex[term], this.documentCount), + score = idf * ((this._k1 + 1) * tf) / (this._k1 * (1 - this._b + this._b * (fieldLength / this.averageFieldLength[field])) + tf), + scoreWithPrecision = Math.round(score * 1000) / 1000 + // Converts 1.23456789 to 1.234. + // Reducing the precision so that the vectors take up less + // space when serialised. Doing it now so that they behave + // the same before and after serialisation. Also, this is + // the fastest approach to reducing a number's precision in + // JavaScript. + + fieldVector.insert(termIndex, scoreWithPrecision) + } + + fieldVectors[fieldRef] = fieldVector + } + + this.fieldVectors = fieldVectors +} + +/** + * Creates a token set of all tokens in the index using lunr.TokenSet + * + * @private + */ +lunr.Builder.prototype.createTokenSet = function () { + this.tokenSet = lunr.TokenSet.fromArray( + Object.keys(this.invertedIndex).sort() + ) +} + +/** + * Builds the index, creating an instance of lunr.Index. + * + * This completes the indexing process and should only be called + * once all documents have been added to the index. + * + * @returns {lunr.Index} + */ +lunr.Builder.prototype.build = function () { + this.calculateAverageFieldLengths() + this.createFieldVectors() + this.createTokenSet() + + return new lunr.Index({ + invertedIndex: this.invertedIndex, + fieldVectors: this.fieldVectors, + tokenSet: this.tokenSet, + fields: this._fields, + pipeline: this.searchPipeline + }) +} + +/** + * Applies a plugin to the index builder. + * + * A plugin is a function that is called with the index builder as its context. + * Plugins can be used to customise or extend the behaviour of the index + * in some way. A plugin is just a function, that encapsulated the custom + * behaviour that should be applied when building the index. + * + * The plugin function will be called with the index builder as its argument, additional + * arguments can also be passed when calling use. The function will be called + * with the index builder as its context. + * + * @param {Function} plugin The plugin to apply. + */ +lunr.Builder.prototype.use = function (fn) { + var args = Array.prototype.slice.call(arguments, 1) + args.unshift(this) + fn.apply(this, args) +} +/** + * Contains and collects metadata about a matching document. + * A single instance of lunr.MatchData is returned as part of every + * lunr.Index~Result. + * + * @constructor + * @param {string} term - The term this match data is associated with + * @param {string} field - The field in which the term was found + * @param {object} metadata - The metadata recorded about this term in this field + * @property {object} metadata - A cloned collection of metadata associated with this document. + * @see {@link lunr.Index~Result} + */ +lunr.MatchData = function (term, field, metadata) { + var clonedMetadata = Object.create(null), + metadataKeys = Object.keys(metadata) + + // Cloning the metadata to prevent the original + // being mutated during match data combination. + // Metadata is kept in an array within the inverted + // index so cloning the data can be done with + // Array#slice + for (var i = 0; i < metadataKeys.length; i++) { + var key = metadataKeys[i] + clonedMetadata[key] = metadata[key].slice() + } + + this.metadata = Object.create(null) + this.metadata[term] = Object.create(null) + this.metadata[term][field] = clonedMetadata +} + +/** + * An instance of lunr.MatchData will be created for every term that matches a + * document. However only one instance is required in a lunr.Index~Result. This + * method combines metadata from another instance of lunr.MatchData with this + * objects metadata. + * + * @param {lunr.MatchData} otherMatchData - Another instance of match data to merge with this one. + * @see {@link lunr.Index~Result} + */ +lunr.MatchData.prototype.combine = function (otherMatchData) { + var terms = Object.keys(otherMatchData.metadata) + + for (var i = 0; i < terms.length; i++) { + var term = terms[i], + fields = Object.keys(otherMatchData.metadata[term]) + + if (this.metadata[term] == undefined) { + this.metadata[term] = Object.create(null) + } + + for (var j = 0; j < fields.length; j++) { + var field = fields[j], + keys = Object.keys(otherMatchData.metadata[term][field]) + + if (this.metadata[term][field] == undefined) { + this.metadata[term][field] = Object.create(null) + } + + for (var k = 0; k < keys.length; k++) { + var key = keys[k] + + if (this.metadata[term][field][key] == undefined) { + this.metadata[term][field][key] = otherMatchData.metadata[term][field][key] + } else { + this.metadata[term][field][key] = this.metadata[term][field][key].concat(otherMatchData.metadata[term][field][key]) + } + + } + } + } +} +/** + * A lunr.Query provides a programmatic way of defining queries to be performed + * against a {@link lunr.Index}. + * + * Prefer constructing a lunr.Query using the {@link lunr.Index#query} method + * so the query object is pre-initialized with the right index fields. + * + * @constructor + * @property {lunr.Query~Clause[]} clauses - An array of query clauses. + * @property {string[]} allFields - An array of all available fields in a lunr.Index. + */ +lunr.Query = function (allFields) { + this.clauses = [] + this.allFields = allFields +} + +/** + * Constants for indicating what kind of automatic wildcard insertion will be used when constructing a query clause. + * + * This allows wildcards to be added to the beginning and end of a term without having to manually do any string + * concatenation. + * + * The wildcard constants can be bitwise combined to select both leading and trailing wildcards. + * + * @constant + * @default + * @property {number} wildcard.NONE - The term will have no wildcards inserted, this is the default behaviour + * @property {number} wildcard.LEADING - Prepend the term with a wildcard, unless a leading wildcard already exists + * @property {number} wildcard.TRAILING - Append a wildcard to the term, unless a trailing wildcard already exists + * @see lunr.Query~Clause + * @see lunr.Query#clause + * @see lunr.Query#term + * @example query term with trailing wildcard + * query.term('foo', { wildcard: lunr.Query.wildcard.TRAILING }) + * @example query term with leading and trailing wildcard + * query.term('foo', { + * wildcard: lunr.Query.wildcard.LEADING | lunr.Query.wildcard.TRAILING + * }) + */ +lunr.Query.wildcard = new String ("*") +lunr.Query.wildcard.NONE = 0 +lunr.Query.wildcard.LEADING = 1 +lunr.Query.wildcard.TRAILING = 2 + +/** + * A single clause in a {@link lunr.Query} contains a term and details on how to + * match that term against a {@link lunr.Index}. + * + * @typedef {Object} lunr.Query~Clause + * @property {string[]} fields - The fields in an index this clause should be matched against. + * @property {number} [boost=1] - Any boost that should be applied when matching this clause. + * @property {number} [editDistance] - Whether the term should have fuzzy matching applied, and how fuzzy the match should be. + * @property {boolean} [usePipeline] - Whether the term should be passed through the search pipeline. + * @property {number} [wildcard=0] - Whether the term should have wildcards appended or prepended. + */ + +/** + * Adds a {@link lunr.Query~Clause} to this query. + * + * Unless the clause contains the fields to be matched all fields will be matched. In addition + * a default boost of 1 is applied to the clause. + * + * @param {lunr.Query~Clause} clause - The clause to add to this query. + * @see lunr.Query~Clause + * @returns {lunr.Query} + */ +lunr.Query.prototype.clause = function (clause) { + if (!('fields' in clause)) { + clause.fields = this.allFields + } + + if (!('boost' in clause)) { + clause.boost = 1 + } + + if (!('usePipeline' in clause)) { + clause.usePipeline = true + } + + if (!('wildcard' in clause)) { + clause.wildcard = lunr.Query.wildcard.NONE + } + + if ((clause.wildcard & lunr.Query.wildcard.LEADING) && (clause.term.charAt(0) != lunr.Query.wildcard)) { + clause.term = "*" + clause.term + } + + if ((clause.wildcard & lunr.Query.wildcard.TRAILING) && (clause.term.slice(-1) != lunr.Query.wildcard)) { + clause.term = "" + clause.term + "*" + } + + this.clauses.push(clause) + + return this +} + +/** + * Adds a term to the current query, under the covers this will create a {@link lunr.Query~Clause} + * to the list of clauses that make up this query. + * + * @param {string} term - The term to add to the query. + * @param {Object} [options] - Any additional properties to add to the query clause. + * @returns {lunr.Query} + * @see lunr.Query#clause + * @see lunr.Query~Clause + * @example adding a single term to a query + * query.term("foo") + * @example adding a single term to a query and specifying search fields, term boost and automatic trailing wildcard + * query.term("foo", { + * fields: ["title"], + * boost: 10, + * wildcard: lunr.Query.wildcard.TRAILING + * }) + */ +lunr.Query.prototype.term = function (term, options) { + var clause = options || {} + clause.term = term + + this.clause(clause) + + return this +} +lunr.QueryParseError = function (message, start, end) { + this.name = "QueryParseError" + this.message = message + this.start = start + this.end = end +} + +lunr.QueryParseError.prototype = new Error +lunr.QueryLexer = function (str) { + this.lexemes = [] + this.str = str + this.length = str.length + this.pos = 0 + this.start = 0 + this.escapeCharPositions = [] +} + +lunr.QueryLexer.prototype.run = function () { + var state = lunr.QueryLexer.lexText + + while (state) { + state = state(this) + } +} + +lunr.QueryLexer.prototype.sliceString = function () { + var subSlices = [], + sliceStart = this.start, + sliceEnd = this.pos + + for (var i = 0; i < this.escapeCharPositions.length; i++) { + sliceEnd = this.escapeCharPositions[i] + subSlices.push(this.str.slice(sliceStart, sliceEnd)) + sliceStart = sliceEnd + 1 + } + + subSlices.push(this.str.slice(sliceStart, this.pos)) + this.escapeCharPositions.length = 0 + + return subSlices.join('') +} + +lunr.QueryLexer.prototype.emit = function (type) { + this.lexemes.push({ + type: type, + str: this.sliceString(), + start: this.start, + end: this.pos + }) + + this.start = this.pos +} + +lunr.QueryLexer.prototype.escapeCharacter = function () { + this.escapeCharPositions.push(this.pos - 1) + this.pos += 1 +} + +lunr.QueryLexer.prototype.next = function () { + if (this.pos >= this.length) { + return lunr.QueryLexer.EOS + } + + var char = this.str.charAt(this.pos) + this.pos += 1 + return char +} + +lunr.QueryLexer.prototype.width = function () { + return this.pos - this.start +} + +lunr.QueryLexer.prototype.ignore = function () { + if (this.start == this.pos) { + this.pos += 1 + } + + this.start = this.pos +} + +lunr.QueryLexer.prototype.backup = function () { + this.pos -= 1 +} + +lunr.QueryLexer.prototype.acceptDigitRun = function () { + var char, charCode + + do { + char = this.next() + charCode = char.charCodeAt(0) + } while (charCode > 47 && charCode < 58) + + if (char != lunr.QueryLexer.EOS) { + this.backup() + } +} + +lunr.QueryLexer.prototype.more = function () { + return this.pos < this.length +} + +lunr.QueryLexer.EOS = 'EOS' +lunr.QueryLexer.FIELD = 'FIELD' +lunr.QueryLexer.TERM = 'TERM' +lunr.QueryLexer.EDIT_DISTANCE = 'EDIT_DISTANCE' +lunr.QueryLexer.BOOST = 'BOOST' + +lunr.QueryLexer.lexField = function (lexer) { + lexer.backup() + lexer.emit(lunr.QueryLexer.FIELD) + lexer.ignore() + return lunr.QueryLexer.lexText +} + +lunr.QueryLexer.lexTerm = function (lexer) { + if (lexer.width() > 1) { + lexer.backup() + lexer.emit(lunr.QueryLexer.TERM) + } + + lexer.ignore() + + if (lexer.more()) { + return lunr.QueryLexer.lexText + } +} + +lunr.QueryLexer.lexEditDistance = function (lexer) { + lexer.ignore() + lexer.acceptDigitRun() + lexer.emit(lunr.QueryLexer.EDIT_DISTANCE) + return lunr.QueryLexer.lexText +} + +lunr.QueryLexer.lexBoost = function (lexer) { + lexer.ignore() + lexer.acceptDigitRun() + lexer.emit(lunr.QueryLexer.BOOST) + return lunr.QueryLexer.lexText +} + +lunr.QueryLexer.lexEOS = function (lexer) { + if (lexer.width() > 0) { + lexer.emit(lunr.QueryLexer.TERM) + } +} + +// This matches the separator used when tokenising fields +// within a document. These should match otherwise it is +// not possible to search for some tokens within a document. +// +// It is possible for the user to change the separator on the +// tokenizer so it _might_ clash with any other of the special +// characters already used within the search string, e.g. :. +// +// This means that it is possible to change the separator in +// such a way that makes some words unsearchable using a search +// string. +lunr.QueryLexer.termSeparator = lunr.tokenizer.separator + +lunr.QueryLexer.lexText = function (lexer) { + while (true) { + var char = lexer.next() + + if (char == lunr.QueryLexer.EOS) { + return lunr.QueryLexer.lexEOS + } + + // Escape character is '\' + if (char.charCodeAt(0) == 92) { + lexer.escapeCharacter() + continue + } + + if (char == ":") { + return lunr.QueryLexer.lexField + } + + if (char == "~") { + lexer.backup() + if (lexer.width() > 0) { + lexer.emit(lunr.QueryLexer.TERM) + } + return lunr.QueryLexer.lexEditDistance + } + + if (char == "^") { + lexer.backup() + if (lexer.width() > 0) { + lexer.emit(lunr.QueryLexer.TERM) + } + return lunr.QueryLexer.lexBoost + } + + if (char.match(lunr.QueryLexer.termSeparator)) { + return lunr.QueryLexer.lexTerm + } + } +} + +lunr.QueryParser = function (str, query) { + this.lexer = new lunr.QueryLexer (str) + this.query = query + this.currentClause = {} + this.lexemeIdx = 0 +} + +lunr.QueryParser.prototype.parse = function () { + this.lexer.run() + this.lexemes = this.lexer.lexemes + + var state = lunr.QueryParser.parseFieldOrTerm + + while (state) { + state = state(this) + } + + return this.query +} + +lunr.QueryParser.prototype.peekLexeme = function () { + return this.lexemes[this.lexemeIdx] +} + +lunr.QueryParser.prototype.consumeLexeme = function () { + var lexeme = this.peekLexeme() + this.lexemeIdx += 1 + return lexeme +} + +lunr.QueryParser.prototype.nextClause = function () { + var completedClause = this.currentClause + this.query.clause(completedClause) + this.currentClause = {} +} + +lunr.QueryParser.parseFieldOrTerm = function (parser) { + var lexeme = parser.peekLexeme() + + if (lexeme == undefined) { + return + } + + switch (lexeme.type) { + case lunr.QueryLexer.FIELD: + return lunr.QueryParser.parseField + case lunr.QueryLexer.TERM: + return lunr.QueryParser.parseTerm + default: + var errorMessage = "expected either a field or a term, found " + lexeme.type + + if (lexeme.str.length >= 1) { + errorMessage += " with value '" + lexeme.str + "'" + } + + throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) + } +} + +lunr.QueryParser.parseField = function (parser) { + var lexeme = parser.consumeLexeme() + + if (lexeme == undefined) { + return + } + + if (parser.query.allFields.indexOf(lexeme.str) == -1) { + var possibleFields = parser.query.allFields.map(function (f) { return "'" + f + "'" }).join(', '), + errorMessage = "unrecognised field '" + lexeme.str + "', possible fields: " + possibleFields + + throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) + } + + parser.currentClause.fields = [lexeme.str] + + var nextLexeme = parser.peekLexeme() + + if (nextLexeme == undefined) { + var errorMessage = "expecting term, found nothing" + throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) + } + + switch (nextLexeme.type) { + case lunr.QueryLexer.TERM: + return lunr.QueryParser.parseTerm + default: + var errorMessage = "expecting term, found '" + nextLexeme.type + "'" + throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) + } +} + +lunr.QueryParser.parseTerm = function (parser) { + var lexeme = parser.consumeLexeme() + + if (lexeme == undefined) { + return + } + + parser.currentClause.term = lexeme.str.toLowerCase() + + if (lexeme.str.indexOf("*") != -1) { + parser.currentClause.usePipeline = false + } + + var nextLexeme = parser.peekLexeme() + + if (nextLexeme == undefined) { + parser.nextClause() + return + } + + switch (nextLexeme.type) { + case lunr.QueryLexer.TERM: + parser.nextClause() + return lunr.QueryParser.parseTerm + case lunr.QueryLexer.FIELD: + parser.nextClause() + return lunr.QueryParser.parseField + case lunr.QueryLexer.EDIT_DISTANCE: + return lunr.QueryParser.parseEditDistance + case lunr.QueryLexer.BOOST: + return lunr.QueryParser.parseBoost + default: + var errorMessage = "Unexpected lexeme type '" + nextLexeme.type + "'" + throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) + } +} + +lunr.QueryParser.parseEditDistance = function (parser) { + var lexeme = parser.consumeLexeme() + + if (lexeme == undefined) { + return + } + + var editDistance = parseInt(lexeme.str, 10) + + if (isNaN(editDistance)) { + var errorMessage = "edit distance must be numeric" + throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) + } + + parser.currentClause.editDistance = editDistance + + var nextLexeme = parser.peekLexeme() + + if (nextLexeme == undefined) { + parser.nextClause() + return + } + + switch (nextLexeme.type) { + case lunr.QueryLexer.TERM: + parser.nextClause() + return lunr.QueryParser.parseTerm + case lunr.QueryLexer.FIELD: + parser.nextClause() + return lunr.QueryParser.parseField + case lunr.QueryLexer.EDIT_DISTANCE: + return lunr.QueryParser.parseEditDistance + case lunr.QueryLexer.BOOST: + return lunr.QueryParser.parseBoost + default: + var errorMessage = "Unexpected lexeme type '" + nextLexeme.type + "'" + throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) + } +} + +lunr.QueryParser.parseBoost = function (parser) { + var lexeme = parser.consumeLexeme() + + if (lexeme == undefined) { + return + } + + var boost = parseInt(lexeme.str, 10) + + if (isNaN(boost)) { + var errorMessage = "boost must be numeric" + throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) + } + + parser.currentClause.boost = boost + + var nextLexeme = parser.peekLexeme() + + if (nextLexeme == undefined) { + parser.nextClause() + return + } + + switch (nextLexeme.type) { + case lunr.QueryLexer.TERM: + parser.nextClause() + return lunr.QueryParser.parseTerm + case lunr.QueryLexer.FIELD: + parser.nextClause() + return lunr.QueryParser.parseField + case lunr.QueryLexer.EDIT_DISTANCE: + return lunr.QueryParser.parseEditDistance + case lunr.QueryLexer.BOOST: + return lunr.QueryParser.parseBoost + default: + var errorMessage = "Unexpected lexeme type '" + nextLexeme.type + "'" + throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) + } +} + + /** + * export the module via AMD, CommonJS or as a browser global + * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js + */ + ;(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(factory) + } else if (typeof exports === 'object') { + /** + * Node. Does not work with strict CommonJS, but + * only CommonJS-like enviroments that support module.exports, + * like Node. + */ + module.exports = factory() + } else { + // Browser globals (root is window) + root.lunr = factory() + } + }(this, function () { + /** + * Just return a value to define the module export. + * This example returns an object, but the module + * can return a function as the exported value. + */ + return lunr + })) +})(); diff --git a/packages/composer-documentation/_bnaTemplate/assets.default/js/nav.js b/packages/composer-documentation/_bnaTemplate/assets.default/js/nav.js new file mode 100644 index 0000000000..29300df9f2 --- /dev/null +++ b/packages/composer-documentation/_bnaTemplate/assets.default/js/nav.js @@ -0,0 +1,80 @@ +var openRotation = 0; +var closeRotation = 270; + +$(function(){ + console.log( window.location.href); + $('a').each(function(){ + if ($(this).prop('href') == window.location.href) { + $(this).addClass('active'); + $(this).closest('li').addClass('active'); + $(this).parent().parent().parent().addClass('active'); + } + }); +}); + +$(function(){ + $('.context-nav a').each(function(){ + if ($(this).prop('href') == window.location.href) { + $(this).parent().parent().closest('li').addClass('activeBorder'); + } + }); +}); + +$(function(){ + $('.caret').each(function(){ + $(this).rotate(closeRotation); + if ($(this).closest('li').hasClass('active')) { + $(this).rotate(openRotation); + } + if ($(this).closest('li').children('ul').length == 0) { + $(this).toggleClass('hidden'); + } + if (!$(this).parent().parent().parent().hasClass('active')) { + $(this).addClass('hidden'); + } + }); +}); + +$('li').hover(function(){ + if (!$(this).hasClass('active') && $(this).children('ul').length > 0) { + $(this).find('.caret').toggleClass('hidden'); + } +}); + +$('.caret').click(function() { + if ($(this).closest('li').hasClass('hide')){ + $(this).rotate(openRotation); + $(this).closest('li').toggleClass('hide'); + return false; + } else { + if (!$(this).closest('li').hasClass('active')) { + $(this).rotate(closeRotation); + } + $(this).closest('li').toggleClass('hide'); + return false; + } +}); + +$(function(){ + $('.context-nav > ul > li').each(function(){ + $(this).css('height',$(this).height()); + $(this).addClass('hide'); + }); +}); + +$(function(){ + $('.caret').each(function(){ + $(this).addClass('hide'); + }); +}); + +var timer; +var delay = 0; + +jQuery.fn.rotate = function(degrees) { + $(this).css({'-webkit-transform' : 'rotate('+ degrees +'deg)', + '-moz-transform' : 'rotate('+ degrees +'deg)', + '-ms-transform' : 'rotate('+ degrees +'deg)', + 'transform' : 'rotate('+ degrees +'deg)'}); + return $(this); +}; diff --git a/packages/composer-documentation/_bnaTemplate/assets.default/js/search.js b/packages/composer-documentation/_bnaTemplate/assets.default/js/search.js new file mode 100644 index 0000000000..851d863707 --- /dev/null +++ b/packages/composer-documentation/_bnaTemplate/assets.default/js/search.js @@ -0,0 +1,63 @@ +(function () { + function displaySearchResults(results, store) { + var searchResults = document.getElementById('search-results'); + + if (results.length) { // Are there any results? + var appendString = ''; + + for (var i = 0; i < results.length; i++) { // Iterate over the results + var item = store[results[i].ref]; + appendString += '