├── .gitignore
├── worker
├── README.md
├── .prettierrc
├── .gitignore
├── wrangler.toml
├── rollup.config.js
├── package.json
├── index.ts
├── CODE_OF_CONDUCT.md
└── package-lock.json
├── frontend
├── .gitignore
├── public
│ ├── favicon.ico
│ ├── index.html
│ └── global.css
├── src
│ ├── main.js
│ ├── App.svelte
│ └── CFNFT.json
├── package.json
├── rollup.config.js
├── README.md
└── scripts
│ └── setupTypeScript.js
├── contract
├── .gitignore
├── README.md
├── package.json
├── scripts
│ ├── start_sale.js
│ ├── deploy.js
│ └── fund_localhost.js
├── hardhat.config.js
├── test
│ └── sample-test.js
└── contracts
│ └── CFNFT.sol
├── img
└── metamask-testnet.png
├── .github
└── workflows
│ ├── deploy-worker.yml
│ └── semgrep.yml
├── LICENSE_MIT
├── README.md
└── LICENSE_APACHE
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 |
--------------------------------------------------------------------------------
/worker/README.md:
--------------------------------------------------------------------------------
1 | fill me in plzzzz
--------------------------------------------------------------------------------
/frontend/.gitignore:
--------------------------------------------------------------------------------
1 | /node_modules/
2 | /public/build/
3 |
4 | .DS_Store
5 |
--------------------------------------------------------------------------------
/contract/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | .env
3 |
4 | #Hardhat files
5 | cache
6 | artifacts
7 |
--------------------------------------------------------------------------------
/img/metamask-testnet.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cloudflare/cfweb3/main/img/metamask-testnet.png
--------------------------------------------------------------------------------
/frontend/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cloudflare/cfweb3/main/frontend/public/favicon.ico
--------------------------------------------------------------------------------
/frontend/src/main.js:
--------------------------------------------------------------------------------
1 | import App from './App.svelte';
2 |
3 | const app = new App({ target: document.body });
4 |
5 | export default app;
6 |
--------------------------------------------------------------------------------
/worker/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "singleQuote": true,
3 | "semi": false,
4 | "trailingComma": "all",
5 | "tabWidth": 2,
6 | "printWidth": 80
7 | }
8 |
--------------------------------------------------------------------------------
/worker/.gitignore:
--------------------------------------------------------------------------------
1 | /target
2 | /dist
3 | **/*.rs.bk
4 | Cargo.lock
5 | bin/
6 | pkg/
7 | wasm-pack.log
8 | worker/
9 | node_modules/
10 | .cargo-ok
11 | /build
12 |
--------------------------------------------------------------------------------
/worker/wrangler.toml:
--------------------------------------------------------------------------------
1 | name = "nft"
2 | type = "javascript"
3 |
4 | account_id = "e9bc21da719562a3e45d77de7dd042de"
5 | workers_dev = true
6 |
7 | [build]
8 | command = "npm install && npm run build"
9 | [build.upload]
10 | format = "service-worker"
--------------------------------------------------------------------------------
/.github/workflows/deploy-worker.yml:
--------------------------------------------------------------------------------
1 | name: Deploy Workers function
2 |
3 | on:
4 | push:
5 | branches:
6 | - main
7 |
8 | jobs:
9 | deploy:
10 | runs-on: ubuntu-latest
11 | name: Deploy Workers function
12 | steps:
13 | - uses: actions/checkout@v2
14 | - name: Publish
15 | uses: cloudflare/wrangler-action@1.3.0
16 | with:
17 | apiToken: ${{ secrets.CF_API_TOKEN }}
--------------------------------------------------------------------------------
/worker/rollup.config.js:
--------------------------------------------------------------------------------
1 | import { terser } from 'rollup-plugin-terser'
2 | import { nodeResolve } from '@rollup/plugin-node-resolve'
3 | import commonjs from '@rollup/plugin-commonjs'
4 | import typescript from '@rollup/plugin-typescript';
5 |
6 | export default {
7 | input: 'index.ts',
8 | output: {
9 | file: 'build/out.js',
10 | sourcemap: true,
11 | },
12 |
13 | plugins: [
14 | typescript(),
15 | commonjs(),
16 | nodeResolve({ browser: true }),
17 | terser(),
18 | ],
19 | }
--------------------------------------------------------------------------------
/frontend/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | CFNFT Example Application
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/contract/README.md:
--------------------------------------------------------------------------------
1 | # Basic Sample Hardhat Project
2 |
3 | This project demonstrates a basic Hardhat use case. It comes with a sample contract, a test for that contract, a sample script that deploys that contract, and an example of a task implementation, which simply lists the available accounts.
4 |
5 | Try running some of the following tasks:
6 |
7 | ```shell
8 | npx hardhat accounts
9 | npx hardhat compile
10 | npx hardhat clean
11 | npx hardhat test
12 | npx hardhat node
13 | node scripts/sample-script.js
14 | npx hardhat help
15 | ```
16 |
--------------------------------------------------------------------------------
/contract/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "hh",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "index.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1"
8 | },
9 | "keywords": [],
10 | "author": "",
11 | "license": "ISC",
12 | "dependencies": {
13 | "@nomiclabs/hardhat-ethers": "^2.0.2",
14 | "@nomiclabs/hardhat-waffle": "^2.0.1",
15 | "@openzeppelin/contracts": "^4.3.2",
16 | "chai": "^4.3.4",
17 | "ethereum-waffle": "^3.4.0",
18 | "ethers": "^5.4.6"
19 | },
20 | "devDependencies": {
21 | "@nomiclabs/hardhat-etherscan": "^2.1.6",
22 | "hardhat": "^2.6.4",
23 | "hardhat-gas-reporter": "^1.0.4"
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/.github/workflows/semgrep.yml:
--------------------------------------------------------------------------------
1 |
2 | on:
3 | pull_request: {}
4 | workflow_dispatch: {}
5 | push:
6 | branches:
7 | - main
8 | - master
9 | schedule:
10 | - cron: '0 0 * * *'
11 | name: Semgrep config
12 | jobs:
13 | semgrep:
14 | name: semgrep/ci
15 | runs-on: ubuntu-20.04
16 | env:
17 | SEMGREP_APP_TOKEN: ${{ secrets.SEMGREP_APP_TOKEN }}
18 | SEMGREP_URL: https://cloudflare.semgrep.dev
19 | SEMGREP_APP_URL: https://cloudflare.semgrep.dev
20 | SEMGREP_VERSION_CHECK_URL: https://cloudflare.semgrep.dev/api/check-version
21 | container:
22 | image: returntocorp/semgrep
23 | steps:
24 | - uses: actions/checkout@v3
25 | - run: semgrep ci
26 |
--------------------------------------------------------------------------------
/frontend/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "svelte-app",
3 | "version": "1.0.0",
4 | "private": true,
5 | "scripts": {
6 | "build": "rollup -c",
7 | "dev": "rollup -c -w",
8 | "start": "sirv public --no-clear"
9 | },
10 | "devDependencies": {
11 | "@rollup/plugin-commonjs": "^17.0.0",
12 | "@rollup/plugin-json": "^4.1.0",
13 | "@rollup/plugin-node-resolve": "^11.0.0",
14 | "rollup": "^2.3.4",
15 | "rollup-plugin-css-only": "^3.1.0",
16 | "rollup-plugin-livereload": "^2.0.0",
17 | "rollup-plugin-svelte": "^7.0.0",
18 | "rollup-plugin-terser": "^7.0.0",
19 | "svelte": "^3.0.0"
20 | },
21 | "dependencies": {
22 | "ethers": "^5.4.6",
23 | "sirv-cli": "^1.0.0"
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/contract/scripts/start_sale.js:
--------------------------------------------------------------------------------
1 | const hre = require("hardhat");
2 |
3 | const pk = process.env.dapk
4 |
5 | async function main() {
6 | const CONTRACT_ID = "0x290422EC6eADc2CC12aCd98C50333720382CA86B";
7 | const CFNFT = await hre.ethers.getContractAt("CFNFT", CONTRACT_ID);
8 |
9 | const [owner] = await hre.ethers.getSigners()
10 | const signer = pk ? new hre.ethers.Wallet(pk, hre.ethers.provider) : owner
11 |
12 | const contract = CFNFT.connect(signer);
13 | await contract.startSale()
14 |
15 | console.log("Started sale");
16 | }
17 |
18 | main()
19 | .then(() => process.exit(0))
20 | .catch((error) => {
21 | console.error("something went wrong")
22 | console.error(error);
23 | process.exit(1);
24 | });
25 |
--------------------------------------------------------------------------------
/contract/scripts/deploy.js:
--------------------------------------------------------------------------------
1 | // We require the Hardhat Runtime Environment explicitly here. This is optional
2 | // but useful for running the script in a standalone fashion through `node
8 |
9 | As well as validating the code for CI.
10 | */
11 |
12 | /** To work on this script:
13 | rm -rf test-template template && git clone sveltejs/template test-template && node scripts/setupTypeScript.js test-template
14 | */
15 |
16 | const fs = require("fs")
17 | const path = require("path")
18 | const { argv } = require("process")
19 |
20 | const projectRoot = argv[2] || path.join(__dirname, "..")
21 |
22 | // Add deps to pkg.json
23 | const packageJSON = JSON.parse(fs.readFileSync(path.join(projectRoot, "package.json"), "utf8"))
24 | packageJSON.devDependencies = Object.assign(packageJSON.devDependencies, {
25 | "svelte-check": "^2.0.0",
26 | "svelte-preprocess": "^4.0.0",
27 | "@rollup/plugin-typescript": "^8.0.0",
28 | "typescript": "^4.0.0",
29 | "tslib": "^2.0.0",
30 | "@tsconfig/svelte": "^2.0.0"
31 | })
32 |
33 | // Add script for checking
34 | packageJSON.scripts = Object.assign(packageJSON.scripts, {
35 | "check": "svelte-check --tsconfig ./tsconfig.json"
36 | })
37 |
38 | // Write the package JSON
39 | fs.writeFileSync(path.join(projectRoot, "package.json"), JSON.stringify(packageJSON, null, " "))
40 |
41 | // mv src/main.js to main.ts - note, we need to edit rollup.config.js for this too
42 | const beforeMainJSPath = path.join(projectRoot, "src", "main.js")
43 | const afterMainTSPath = path.join(projectRoot, "src", "main.ts")
44 | fs.renameSync(beforeMainJSPath, afterMainTSPath)
45 |
46 | // Switch the app.svelte file to use TS
47 | const appSveltePath = path.join(projectRoot, "src", "App.svelte")
48 | let appFile = fs.readFileSync(appSveltePath, "utf8")
49 | appFile = appFile.replace("
119 |
120 |
129 |
130 | {#if chain === "4"}
131 |
132 | This marketplace is connected to the Rinkeby test network.
133 |
134 | {:else}
135 |
136 | This application requires you to be on the Rinkeby network. Use Metamask to
137 | switch networks.
138 |
139 | {/if}
140 |
141 |
142 | {#if ethereum}
143 | {#if account}
144 | 👋 Welcome to the Cloudflare Web3 app
145 | You are currently logged in as {account.slice(0, 5)}
146 | {#if loading}
147 | Transaction processing...
148 | {/if}
149 | {#if minted}
150 |
151 | You minted an NFT! If you haven't already, add a new asset to Metamask
152 | using the below info
153 |
154 |
155 | Contract address: {CONTRACT_ID}
156 | Token symbol: CFNFT
157 | Token decimal: 0
158 |
159 | {/if}
160 |
161 |
176 |
177 |
178 | {currentMinted}/2048 minted
179 |
180 |
181 | Your Tokens:
182 | {#if ownedTokens}
183 |
184 |
185 | {#each ownedTokens as token}
186 |
187 |
194 |
198 |
199 | {/each}
200 |
201 |
202 | {:else}
203 |
204 | You don't have any tokens. Mint one with the button above to add it to
205 | your collection.
206 |
207 | {/if}
208 | {:else}
209 | 👋 Welcome to Cloudflare Web3.
210 | Login with Metamask to mint your NFT
211 | Login
212 |
213 | Recently Minted NFTs:
214 | {#if recentlyMintedTokens}
215 |
216 |
217 | {#each recentlyMintedTokens as token}
218 |
219 |
226 |
230 |
231 | {/each}
232 |
233 |
234 | {/if}
235 | {/if}
236 | {:else}
237 | This app requires a Metamask wallet.
238 |
239 | You won't be asked to add any money. Install Metamask
240 | here .
241 |
242 |
243 | Then follow these instructions to get started.
246 |
247 | {/if}
248 |
249 |
250 |
258 |
--------------------------------------------------------------------------------
/LICENSE_APACHE:
--------------------------------------------------------------------------------
1 | Apache License
2 | Version 2.0, January 2004
3 | http://www.apache.org/licenses/
4 |
5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6 |
7 | 1. Definitions.
8 |
9 | "License" shall mean the terms and conditions for use, reproduction,
10 | and distribution as defined by Sections 1 through 9 of this document.
11 |
12 | "Licensor" shall mean the copyright owner or entity authorized by
13 | the copyright owner that is granting the License.
14 |
15 | "Legal Entity" shall mean the union of the acting entity and all
16 | other entities that control, are controlled by, or are under common
17 | control with that entity. For the purposes of this definition,
18 | "control" means (i) the power, direct or indirect, to cause the
19 | direction or management of such entity, whether by contract or
20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the
21 | outstanding shares, or (iii) beneficial ownership of such entity.
22 |
23 | "You" (or "Your") shall mean an individual or Legal Entity
24 | exercising permissions granted by this License.
25 |
26 | "Source" form shall mean the preferred form for making modifications,
27 | including but not limited to software source code, documentation
28 | source, and configuration files.
29 |
30 | "Object" form shall mean any form resulting from mechanical
31 | transformation or translation of a Source form, including but
32 | not limited to compiled object code, generated documentation,
33 | and conversions to other media types.
34 |
35 | "Work" shall mean the work of authorship, whether in Source or
36 | Object form, made available under the License, as indicated by a
37 | copyright notice that is included in or attached to the work
38 | (an example is provided in the Appendix below).
39 |
40 | "Derivative Works" shall mean any work, whether in Source or Object
41 | form, that is based on (or derived from) the Work and for which the
42 | editorial revisions, annotations, elaborations, or other modifications
43 | represent, as a whole, an original work of authorship. For the purposes
44 | of this License, Derivative Works shall not include works that remain
45 | separable from, or merely link (or bind by name) to the interfaces of,
46 | the Work and Derivative Works thereof.
47 |
48 | "Contribution" shall mean any work of authorship, including
49 | the original version of the Work and any modifications or additions
50 | to that Work or Derivative Works thereof, that is intentionally
51 | submitted to Licensor for inclusion in the Work by the copyright owner
52 | or by an individual or Legal Entity authorized to submit on behalf of
53 | the copyright owner. For the purposes of this definition, "submitted"
54 | means any form of electronic, verbal, or written communication sent
55 | to the Licensor or its representatives, including but not limited to
56 | communication on electronic mailing lists, source code control systems,
57 | and issue tracking systems that are managed by, or on behalf of, the
58 | Licensor for the purpose of discussing and improving the Work, but
59 | excluding communication that is conspicuously marked or otherwise
60 | designated in writing by the copyright owner as "Not a Contribution."
61 |
62 | "Contributor" shall mean Licensor and any individual or Legal Entity
63 | on behalf of whom a Contribution has been received by Licensor and
64 | subsequently incorporated within the Work.
65 |
66 | 2. Grant of Copyright License. Subject to the terms and conditions of
67 | this License, each Contributor hereby grants to You a perpetual,
68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69 | copyright license to reproduce, prepare Derivative Works of,
70 | publicly display, publicly perform, sublicense, and distribute the
71 | Work and such Derivative Works in Source or Object form.
72 |
73 | 3. Grant of Patent License. Subject to the terms and conditions of
74 | this License, each Contributor hereby grants to You a perpetual,
75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76 | (except as stated in this section) patent license to make, have made,
77 | use, offer to sell, sell, import, and otherwise transfer the Work,
78 | where such license applies only to those patent claims licensable
79 | by such Contributor that are necessarily infringed by their
80 | Contribution(s) alone or by combination of their Contribution(s)
81 | with the Work to which such Contribution(s) was submitted. If You
82 | institute patent litigation against any entity (including a
83 | cross-claim or counterclaim in a lawsuit) alleging that the Work
84 | or a Contribution incorporated within the Work constitutes direct
85 | or contributory patent infringement, then any patent licenses
86 | granted to You under this License for that Work shall terminate
87 | as of the date such litigation is filed.
88 |
89 | 4. Redistribution. You may reproduce and distribute copies of the
90 | Work or Derivative Works thereof in any medium, with or without
91 | modifications, and in Source or Object form, provided that You
92 | meet the following conditions:
93 |
94 | (a) You must give any other recipients of the Work or
95 | Derivative Works a copy of this License; and
96 |
97 | (b) You must cause any modified files to carry prominent notices
98 | stating that You changed the files; and
99 |
100 | (c) You must retain, in the Source form of any Derivative Works
101 | that You distribute, all copyright, patent, trademark, and
102 | attribution notices from the Source form of the Work,
103 | excluding those notices that do not pertain to any part of
104 | the Derivative Works; and
105 |
106 | (d) If the Work includes a "NOTICE" text file as part of its
107 | distribution, then any Derivative Works that You distribute must
108 | include a readable copy of the attribution notices contained
109 | within such NOTICE file, excluding those notices that do not
110 | pertain to any part of the Derivative Works, in at least one
111 | of the following places: within a NOTICE text file distributed
112 | as part of the Derivative Works; within the Source form or
113 | documentation, if provided along with the Derivative Works; or,
114 | within a display generated by the Derivative Works, if and
115 | wherever such third-party notices normally appear. The contents
116 | of the NOTICE file are for informational purposes only and
117 | do not modify the License. You may add Your own attribution
118 | notices within Derivative Works that You distribute, alongside
119 | or as an addendum to the NOTICE text from the Work, provided
120 | that such additional attribution notices cannot be construed
121 | as modifying the License.
122 |
123 | You may add Your own copyright statement to Your modifications and
124 | may provide additional or different license terms and conditions
125 | for use, reproduction, or distribution of Your modifications, or
126 | for any such Derivative Works as a whole, provided Your use,
127 | reproduction, and distribution of the Work otherwise complies with
128 | the conditions stated in this License.
129 |
130 | 5. Submission of Contributions. Unless You explicitly state otherwise,
131 | any Contribution intentionally submitted for inclusion in the Work
132 | by You to the Licensor shall be under the terms and conditions of
133 | this License, without any additional terms or conditions.
134 | Notwithstanding the above, nothing herein shall supersede or modify
135 | the terms of any separate license agreement you may have executed
136 | with Licensor regarding such Contributions.
137 |
138 | 6. Trademarks. This License does not grant permission to use the trade
139 | names, trademarks, service marks, or product names of the Licensor,
140 | except as required for reasonable and customary use in describing the
141 | origin of the Work and reproducing the content of the NOTICE file.
142 |
143 | 7. Disclaimer of Warranty. Unless required by applicable law or
144 | agreed to in writing, Licensor provides the Work (and each
145 | Contributor provides its Contributions) on an "AS IS" BASIS,
146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147 | implied, including, without limitation, any warranties or conditions
148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149 | PARTICULAR PURPOSE. You are solely responsible for determining the
150 | appropriateness of using or redistributing the Work and assume any
151 | risks associated with Your exercise of permissions under this License.
152 |
153 | 8. Limitation of Liability. In no event and under no legal theory,
154 | whether in tort (including negligence), contract, or otherwise,
155 | unless required by applicable law (such as deliberate and grossly
156 | negligent acts) or agreed to in writing, shall any Contributor be
157 | liable to You for damages, including any direct, indirect, special,
158 | incidental, or consequential damages of any character arising as a
159 | result of this License or out of the use or inability to use the
160 | Work (including but not limited to damages for loss of goodwill,
161 | work stoppage, computer failure or malfunction, or any and all
162 | other commercial damages or losses), even if such Contributor
163 | has been advised of the possibility of such damages.
164 |
165 | 9. Accepting Warranty or Additional Liability. While redistributing
166 | the Work or Derivative Works thereof, You may choose to offer,
167 | and charge a fee for, acceptance of support, warranty, indemnity,
168 | or other liability obligations and/or rights consistent with this
169 | License. However, in accepting such obligations, You may act only
170 | on Your own behalf and on Your sole responsibility, not on behalf
171 | of any other Contributor, and only if You agree to indemnify,
172 | defend, and hold each Contributor harmless for any liability
173 | incurred by, or claims asserted against, such Contributor by reason
174 | of your accepting any such warranty or additional liability.
175 |
176 | END OF TERMS AND CONDITIONS
177 |
--------------------------------------------------------------------------------
/worker/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "worker",
3 | "version": "1.0.0",
4 | "lockfileVersion": 2,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "name": "worker",
9 | "version": "1.0.0",
10 | "license": "MIT",
11 | "dependencies": {
12 | "worktop": "^0.7.3"
13 | },
14 | "devDependencies": {
15 | "@rollup/plugin-commonjs": "^20.0.0",
16 | "@rollup/plugin-node-resolve": "^13.0.4",
17 | "@rollup/plugin-typescript": "^8.2.5",
18 | "prettier": "^1.18.2",
19 | "rollup": "^2.56.3",
20 | "rollup-plugin-terser": "^7.0.2"
21 | }
22 | },
23 | "node_modules/@babel/code-frame": {
24 | "version": "7.14.5",
25 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz",
26 | "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==",
27 | "dev": true,
28 | "dependencies": {
29 | "@babel/highlight": "^7.14.5"
30 | },
31 | "engines": {
32 | "node": ">=6.9.0"
33 | }
34 | },
35 | "node_modules/@babel/helper-validator-identifier": {
36 | "version": "7.14.9",
37 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz",
38 | "integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==",
39 | "dev": true,
40 | "engines": {
41 | "node": ">=6.9.0"
42 | }
43 | },
44 | "node_modules/@babel/highlight": {
45 | "version": "7.14.5",
46 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz",
47 | "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==",
48 | "dev": true,
49 | "dependencies": {
50 | "@babel/helper-validator-identifier": "^7.14.5",
51 | "chalk": "^2.0.0",
52 | "js-tokens": "^4.0.0"
53 | },
54 | "engines": {
55 | "node": ">=6.9.0"
56 | }
57 | },
58 | "node_modules/@rollup/plugin-commonjs": {
59 | "version": "20.0.0",
60 | "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-20.0.0.tgz",
61 | "integrity": "sha512-5K0g5W2Ol8hAcTHqcTBHiA7M58tfmYi1o9KxeJuuRNpGaTa5iLjcyemBitCBcKXaHamOBBEH2dGom6v6Unmqjg==",
62 | "dev": true,
63 | "dependencies": {
64 | "@rollup/pluginutils": "^3.1.0",
65 | "commondir": "^1.0.1",
66 | "estree-walker": "^2.0.1",
67 | "glob": "^7.1.6",
68 | "is-reference": "^1.2.1",
69 | "magic-string": "^0.25.7",
70 | "resolve": "^1.17.0"
71 | },
72 | "engines": {
73 | "node": ">= 8.0.0"
74 | },
75 | "peerDependencies": {
76 | "rollup": "^2.38.3"
77 | }
78 | },
79 | "node_modules/@rollup/plugin-node-resolve": {
80 | "version": "13.0.4",
81 | "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.4.tgz",
82 | "integrity": "sha512-eYq4TFy40O8hjeDs+sIxEH/jc9lyuI2k9DM557WN6rO5OpnC2qXMBNj4IKH1oHrnAazL49C5p0tgP0/VpqJ+/w==",
83 | "dev": true,
84 | "dependencies": {
85 | "@rollup/pluginutils": "^3.1.0",
86 | "@types/resolve": "1.17.1",
87 | "builtin-modules": "^3.1.0",
88 | "deepmerge": "^4.2.2",
89 | "is-module": "^1.0.0",
90 | "resolve": "^1.19.0"
91 | },
92 | "engines": {
93 | "node": ">= 10.0.0"
94 | },
95 | "peerDependencies": {
96 | "rollup": "^2.42.0"
97 | }
98 | },
99 | "node_modules/@rollup/plugin-typescript": {
100 | "version": "8.2.5",
101 | "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-8.2.5.tgz",
102 | "integrity": "sha512-QL/LvDol/PAGB2O0S7/+q2HpSUNodpw7z6nGn9BfoVCPOZ0r4EALrojFU29Bkoi2Hr2jgTocTejJ5GGWZfOxbQ==",
103 | "dev": true,
104 | "dependencies": {
105 | "@rollup/pluginutils": "^3.1.0",
106 | "resolve": "^1.17.0"
107 | },
108 | "engines": {
109 | "node": ">=8.0.0"
110 | },
111 | "peerDependencies": {
112 | "rollup": "^2.14.0",
113 | "tslib": "*",
114 | "typescript": ">=3.7.0"
115 | }
116 | },
117 | "node_modules/@rollup/pluginutils": {
118 | "version": "3.1.0",
119 | "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz",
120 | "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==",
121 | "dev": true,
122 | "dependencies": {
123 | "@types/estree": "0.0.39",
124 | "estree-walker": "^1.0.1",
125 | "picomatch": "^2.2.2"
126 | },
127 | "engines": {
128 | "node": ">= 8.0.0"
129 | },
130 | "peerDependencies": {
131 | "rollup": "^1.20.0||^2.0.0"
132 | }
133 | },
134 | "node_modules/@rollup/pluginutils/node_modules/estree-walker": {
135 | "version": "1.0.1",
136 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz",
137 | "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==",
138 | "dev": true
139 | },
140 | "node_modules/@types/estree": {
141 | "version": "0.0.39",
142 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz",
143 | "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==",
144 | "dev": true
145 | },
146 | "node_modules/@types/node": {
147 | "version": "16.9.1",
148 | "resolved": "https://registry.npmjs.org/@types/node/-/node-16.9.1.tgz",
149 | "integrity": "sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==",
150 | "dev": true
151 | },
152 | "node_modules/@types/resolve": {
153 | "version": "1.17.1",
154 | "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz",
155 | "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==",
156 | "dev": true,
157 | "dependencies": {
158 | "@types/node": "*"
159 | }
160 | },
161 | "node_modules/ansi-styles": {
162 | "version": "3.2.1",
163 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
164 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
165 | "dev": true,
166 | "dependencies": {
167 | "color-convert": "^1.9.0"
168 | },
169 | "engines": {
170 | "node": ">=4"
171 | }
172 | },
173 | "node_modules/balanced-match": {
174 | "version": "1.0.2",
175 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
176 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
177 | "dev": true
178 | },
179 | "node_modules/brace-expansion": {
180 | "version": "1.1.11",
181 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
182 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
183 | "dev": true,
184 | "dependencies": {
185 | "balanced-match": "^1.0.0",
186 | "concat-map": "0.0.1"
187 | }
188 | },
189 | "node_modules/buffer-from": {
190 | "version": "1.1.2",
191 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
192 | "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
193 | "dev": true
194 | },
195 | "node_modules/builtin-modules": {
196 | "version": "3.2.0",
197 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz",
198 | "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==",
199 | "dev": true,
200 | "engines": {
201 | "node": ">=6"
202 | },
203 | "funding": {
204 | "url": "https://github.com/sponsors/sindresorhus"
205 | }
206 | },
207 | "node_modules/chalk": {
208 | "version": "2.4.2",
209 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
210 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
211 | "dev": true,
212 | "dependencies": {
213 | "ansi-styles": "^3.2.1",
214 | "escape-string-regexp": "^1.0.5",
215 | "supports-color": "^5.3.0"
216 | },
217 | "engines": {
218 | "node": ">=4"
219 | }
220 | },
221 | "node_modules/color-convert": {
222 | "version": "1.9.3",
223 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
224 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
225 | "dev": true,
226 | "dependencies": {
227 | "color-name": "1.1.3"
228 | }
229 | },
230 | "node_modules/color-name": {
231 | "version": "1.1.3",
232 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
233 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
234 | "dev": true
235 | },
236 | "node_modules/commander": {
237 | "version": "2.20.3",
238 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
239 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
240 | "dev": true
241 | },
242 | "node_modules/commondir": {
243 | "version": "1.0.1",
244 | "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
245 | "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
246 | "dev": true
247 | },
248 | "node_modules/concat-map": {
249 | "version": "0.0.1",
250 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
251 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
252 | "dev": true
253 | },
254 | "node_modules/deepmerge": {
255 | "version": "4.2.2",
256 | "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
257 | "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==",
258 | "dev": true,
259 | "engines": {
260 | "node": ">=0.10.0"
261 | }
262 | },
263 | "node_modules/escape-string-regexp": {
264 | "version": "1.0.5",
265 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
266 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
267 | "dev": true,
268 | "engines": {
269 | "node": ">=0.8.0"
270 | }
271 | },
272 | "node_modules/estree-walker": {
273 | "version": "2.0.2",
274 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
275 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
276 | "dev": true
277 | },
278 | "node_modules/fs.realpath": {
279 | "version": "1.0.0",
280 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
281 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
282 | "dev": true
283 | },
284 | "node_modules/fsevents": {
285 | "version": "2.3.2",
286 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
287 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
288 | "dev": true,
289 | "hasInstallScript": true,
290 | "optional": true,
291 | "os": [
292 | "darwin"
293 | ],
294 | "engines": {
295 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
296 | }
297 | },
298 | "node_modules/function-bind": {
299 | "version": "1.1.1",
300 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
301 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
302 | "dev": true
303 | },
304 | "node_modules/glob": {
305 | "version": "7.1.7",
306 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
307 | "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
308 | "dev": true,
309 | "dependencies": {
310 | "fs.realpath": "^1.0.0",
311 | "inflight": "^1.0.4",
312 | "inherits": "2",
313 | "minimatch": "^3.0.4",
314 | "once": "^1.3.0",
315 | "path-is-absolute": "^1.0.0"
316 | },
317 | "engines": {
318 | "node": "*"
319 | },
320 | "funding": {
321 | "url": "https://github.com/sponsors/isaacs"
322 | }
323 | },
324 | "node_modules/has": {
325 | "version": "1.0.3",
326 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
327 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
328 | "dev": true,
329 | "dependencies": {
330 | "function-bind": "^1.1.1"
331 | },
332 | "engines": {
333 | "node": ">= 0.4.0"
334 | }
335 | },
336 | "node_modules/has-flag": {
337 | "version": "3.0.0",
338 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
339 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
340 | "dev": true,
341 | "engines": {
342 | "node": ">=4"
343 | }
344 | },
345 | "node_modules/inflight": {
346 | "version": "1.0.6",
347 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
348 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
349 | "dev": true,
350 | "dependencies": {
351 | "once": "^1.3.0",
352 | "wrappy": "1"
353 | }
354 | },
355 | "node_modules/inherits": {
356 | "version": "2.0.4",
357 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
358 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
359 | "dev": true
360 | },
361 | "node_modules/is-core-module": {
362 | "version": "2.6.0",
363 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.6.0.tgz",
364 | "integrity": "sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ==",
365 | "dev": true,
366 | "dependencies": {
367 | "has": "^1.0.3"
368 | },
369 | "funding": {
370 | "url": "https://github.com/sponsors/ljharb"
371 | }
372 | },
373 | "node_modules/is-module": {
374 | "version": "1.0.0",
375 | "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
376 | "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=",
377 | "dev": true
378 | },
379 | "node_modules/is-reference": {
380 | "version": "1.2.1",
381 | "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz",
382 | "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==",
383 | "dev": true,
384 | "dependencies": {
385 | "@types/estree": "*"
386 | }
387 | },
388 | "node_modules/jest-worker": {
389 | "version": "26.6.2",
390 | "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz",
391 | "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==",
392 | "dev": true,
393 | "dependencies": {
394 | "@types/node": "*",
395 | "merge-stream": "^2.0.0",
396 | "supports-color": "^7.0.0"
397 | },
398 | "engines": {
399 | "node": ">= 10.13.0"
400 | }
401 | },
402 | "node_modules/jest-worker/node_modules/has-flag": {
403 | "version": "4.0.0",
404 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
405 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
406 | "dev": true,
407 | "engines": {
408 | "node": ">=8"
409 | }
410 | },
411 | "node_modules/jest-worker/node_modules/supports-color": {
412 | "version": "7.2.0",
413 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
414 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
415 | "dev": true,
416 | "dependencies": {
417 | "has-flag": "^4.0.0"
418 | },
419 | "engines": {
420 | "node": ">=8"
421 | }
422 | },
423 | "node_modules/js-tokens": {
424 | "version": "4.0.0",
425 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
426 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
427 | "dev": true
428 | },
429 | "node_modules/magic-string": {
430 | "version": "0.25.7",
431 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz",
432 | "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==",
433 | "dev": true,
434 | "dependencies": {
435 | "sourcemap-codec": "^1.4.4"
436 | }
437 | },
438 | "node_modules/merge-stream": {
439 | "version": "2.0.0",
440 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
441 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
442 | "dev": true
443 | },
444 | "node_modules/minimatch": {
445 | "version": "3.0.4",
446 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
447 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
448 | "dev": true,
449 | "dependencies": {
450 | "brace-expansion": "^1.1.7"
451 | },
452 | "engines": {
453 | "node": "*"
454 | }
455 | },
456 | "node_modules/once": {
457 | "version": "1.4.0",
458 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
459 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
460 | "dev": true,
461 | "dependencies": {
462 | "wrappy": "1"
463 | }
464 | },
465 | "node_modules/path-is-absolute": {
466 | "version": "1.0.1",
467 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
468 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
469 | "dev": true,
470 | "engines": {
471 | "node": ">=0.10.0"
472 | }
473 | },
474 | "node_modules/path-parse": {
475 | "version": "1.0.7",
476 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
477 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
478 | "dev": true
479 | },
480 | "node_modules/picomatch": {
481 | "version": "2.3.0",
482 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz",
483 | "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==",
484 | "dev": true,
485 | "engines": {
486 | "node": ">=8.6"
487 | },
488 | "funding": {
489 | "url": "https://github.com/sponsors/jonschlinkert"
490 | }
491 | },
492 | "node_modules/prettier": {
493 | "version": "1.19.1",
494 | "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz",
495 | "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==",
496 | "dev": true,
497 | "bin": {
498 | "prettier": "bin-prettier.js"
499 | },
500 | "engines": {
501 | "node": ">=4"
502 | }
503 | },
504 | "node_modules/randombytes": {
505 | "version": "2.1.0",
506 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
507 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
508 | "dev": true,
509 | "dependencies": {
510 | "safe-buffer": "^5.1.0"
511 | }
512 | },
513 | "node_modules/regexparam": {
514 | "version": "2.0.0",
515 | "resolved": "https://registry.npmjs.org/regexparam/-/regexparam-2.0.0.tgz",
516 | "integrity": "sha512-gJKwd2MVPWHAIFLsaYDZfyKzHNS4o7E/v8YmNf44vmeV2e4YfVoDToTOKTvE7ab68cRJ++kLuEXJBaEeJVt5ow==",
517 | "engines": {
518 | "node": ">=8"
519 | }
520 | },
521 | "node_modules/resolve": {
522 | "version": "1.20.0",
523 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
524 | "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==",
525 | "dev": true,
526 | "dependencies": {
527 | "is-core-module": "^2.2.0",
528 | "path-parse": "^1.0.6"
529 | },
530 | "funding": {
531 | "url": "https://github.com/sponsors/ljharb"
532 | }
533 | },
534 | "node_modules/rollup": {
535 | "version": "2.56.3",
536 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.56.3.tgz",
537 | "integrity": "sha512-Au92NuznFklgQCUcV96iXlxUbHuB1vQMaH76DHl5M11TotjOHwqk9CwcrT78+Tnv4FN9uTBxq6p4EJoYkpyekg==",
538 | "dev": true,
539 | "bin": {
540 | "rollup": "dist/bin/rollup"
541 | },
542 | "engines": {
543 | "node": ">=10.0.0"
544 | },
545 | "optionalDependencies": {
546 | "fsevents": "~2.3.2"
547 | }
548 | },
549 | "node_modules/rollup-plugin-terser": {
550 | "version": "7.0.2",
551 | "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz",
552 | "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==",
553 | "dev": true,
554 | "dependencies": {
555 | "@babel/code-frame": "^7.10.4",
556 | "jest-worker": "^26.2.1",
557 | "serialize-javascript": "^4.0.0",
558 | "terser": "^5.0.0"
559 | },
560 | "peerDependencies": {
561 | "rollup": "^2.0.0"
562 | }
563 | },
564 | "node_modules/safe-buffer": {
565 | "version": "5.2.1",
566 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
567 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
568 | "dev": true,
569 | "funding": [
570 | {
571 | "type": "github",
572 | "url": "https://github.com/sponsors/feross"
573 | },
574 | {
575 | "type": "patreon",
576 | "url": "https://www.patreon.com/feross"
577 | },
578 | {
579 | "type": "consulting",
580 | "url": "https://feross.org/support"
581 | }
582 | ]
583 | },
584 | "node_modules/serialize-javascript": {
585 | "version": "4.0.0",
586 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz",
587 | "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==",
588 | "dev": true,
589 | "dependencies": {
590 | "randombytes": "^2.1.0"
591 | }
592 | },
593 | "node_modules/source-map": {
594 | "version": "0.7.3",
595 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
596 | "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
597 | "dev": true,
598 | "engines": {
599 | "node": ">= 8"
600 | }
601 | },
602 | "node_modules/source-map-support": {
603 | "version": "0.5.20",
604 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz",
605 | "integrity": "sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==",
606 | "dev": true,
607 | "dependencies": {
608 | "buffer-from": "^1.0.0",
609 | "source-map": "^0.6.0"
610 | }
611 | },
612 | "node_modules/source-map-support/node_modules/source-map": {
613 | "version": "0.6.1",
614 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
615 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
616 | "dev": true,
617 | "engines": {
618 | "node": ">=0.10.0"
619 | }
620 | },
621 | "node_modules/sourcemap-codec": {
622 | "version": "1.4.8",
623 | "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
624 | "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
625 | "dev": true
626 | },
627 | "node_modules/supports-color": {
628 | "version": "5.5.0",
629 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
630 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
631 | "dev": true,
632 | "dependencies": {
633 | "has-flag": "^3.0.0"
634 | },
635 | "engines": {
636 | "node": ">=4"
637 | }
638 | },
639 | "node_modules/terser": {
640 | "version": "5.8.0",
641 | "resolved": "https://registry.npmjs.org/terser/-/terser-5.8.0.tgz",
642 | "integrity": "sha512-f0JH+6yMpneYcRJN314lZrSwu9eKkUFEHLN/kNy8ceh8gaRiLgFPJqrB9HsXjhEGdv4e/ekjTOFxIlL6xlma8A==",
643 | "dev": true,
644 | "dependencies": {
645 | "commander": "^2.20.0",
646 | "source-map": "~0.7.2",
647 | "source-map-support": "~0.5.20"
648 | },
649 | "bin": {
650 | "terser": "bin/terser"
651 | },
652 | "engines": {
653 | "node": ">=10"
654 | }
655 | },
656 | "node_modules/tslib": {
657 | "version": "2.3.1",
658 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
659 | "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==",
660 | "dev": true,
661 | "peer": true
662 | },
663 | "node_modules/typescript": {
664 | "version": "4.4.3",
665 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.3.tgz",
666 | "integrity": "sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA==",
667 | "dev": true,
668 | "peer": true,
669 | "bin": {
670 | "tsc": "bin/tsc",
671 | "tsserver": "bin/tsserver"
672 | },
673 | "engines": {
674 | "node": ">=4.2.0"
675 | }
676 | },
677 | "node_modules/worktop": {
678 | "version": "0.7.3",
679 | "resolved": "https://registry.npmjs.org/worktop/-/worktop-0.7.3.tgz",
680 | "integrity": "sha512-WBHP1hk8pLP7ahAw13fugDWcO0SUAOiCD6DHT/bfLWoCIA/PL9u7GKdudT2nGZ8EGR1APbGCAI6ZzKG1+X+PnQ==",
681 | "dependencies": {
682 | "regexparam": "^2.0.0"
683 | },
684 | "engines": {
685 | "node": ">=12"
686 | }
687 | },
688 | "node_modules/wrappy": {
689 | "version": "1.0.2",
690 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
691 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
692 | "dev": true
693 | }
694 | },
695 | "dependencies": {
696 | "@babel/code-frame": {
697 | "version": "7.14.5",
698 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz",
699 | "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==",
700 | "dev": true,
701 | "requires": {
702 | "@babel/highlight": "^7.14.5"
703 | }
704 | },
705 | "@babel/helper-validator-identifier": {
706 | "version": "7.14.9",
707 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz",
708 | "integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==",
709 | "dev": true
710 | },
711 | "@babel/highlight": {
712 | "version": "7.14.5",
713 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz",
714 | "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==",
715 | "dev": true,
716 | "requires": {
717 | "@babel/helper-validator-identifier": "^7.14.5",
718 | "chalk": "^2.0.0",
719 | "js-tokens": "^4.0.0"
720 | }
721 | },
722 | "@rollup/plugin-commonjs": {
723 | "version": "20.0.0",
724 | "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-20.0.0.tgz",
725 | "integrity": "sha512-5K0g5W2Ol8hAcTHqcTBHiA7M58tfmYi1o9KxeJuuRNpGaTa5iLjcyemBitCBcKXaHamOBBEH2dGom6v6Unmqjg==",
726 | "dev": true,
727 | "requires": {
728 | "@rollup/pluginutils": "^3.1.0",
729 | "commondir": "^1.0.1",
730 | "estree-walker": "^2.0.1",
731 | "glob": "^7.1.6",
732 | "is-reference": "^1.2.1",
733 | "magic-string": "^0.25.7",
734 | "resolve": "^1.17.0"
735 | }
736 | },
737 | "@rollup/plugin-node-resolve": {
738 | "version": "13.0.4",
739 | "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.4.tgz",
740 | "integrity": "sha512-eYq4TFy40O8hjeDs+sIxEH/jc9lyuI2k9DM557WN6rO5OpnC2qXMBNj4IKH1oHrnAazL49C5p0tgP0/VpqJ+/w==",
741 | "dev": true,
742 | "requires": {
743 | "@rollup/pluginutils": "^3.1.0",
744 | "@types/resolve": "1.17.1",
745 | "builtin-modules": "^3.1.0",
746 | "deepmerge": "^4.2.2",
747 | "is-module": "^1.0.0",
748 | "resolve": "^1.19.0"
749 | }
750 | },
751 | "@rollup/plugin-typescript": {
752 | "version": "8.2.5",
753 | "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-8.2.5.tgz",
754 | "integrity": "sha512-QL/LvDol/PAGB2O0S7/+q2HpSUNodpw7z6nGn9BfoVCPOZ0r4EALrojFU29Bkoi2Hr2jgTocTejJ5GGWZfOxbQ==",
755 | "dev": true,
756 | "requires": {
757 | "@rollup/pluginutils": "^3.1.0",
758 | "resolve": "^1.17.0"
759 | }
760 | },
761 | "@rollup/pluginutils": {
762 | "version": "3.1.0",
763 | "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz",
764 | "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==",
765 | "dev": true,
766 | "requires": {
767 | "@types/estree": "0.0.39",
768 | "estree-walker": "^1.0.1",
769 | "picomatch": "^2.2.2"
770 | },
771 | "dependencies": {
772 | "estree-walker": {
773 | "version": "1.0.1",
774 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz",
775 | "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==",
776 | "dev": true
777 | }
778 | }
779 | },
780 | "@types/estree": {
781 | "version": "0.0.39",
782 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz",
783 | "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==",
784 | "dev": true
785 | },
786 | "@types/node": {
787 | "version": "16.9.1",
788 | "resolved": "https://registry.npmjs.org/@types/node/-/node-16.9.1.tgz",
789 | "integrity": "sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==",
790 | "dev": true
791 | },
792 | "@types/resolve": {
793 | "version": "1.17.1",
794 | "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz",
795 | "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==",
796 | "dev": true,
797 | "requires": {
798 | "@types/node": "*"
799 | }
800 | },
801 | "ansi-styles": {
802 | "version": "3.2.1",
803 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
804 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
805 | "dev": true,
806 | "requires": {
807 | "color-convert": "^1.9.0"
808 | }
809 | },
810 | "balanced-match": {
811 | "version": "1.0.2",
812 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
813 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
814 | "dev": true
815 | },
816 | "brace-expansion": {
817 | "version": "1.1.11",
818 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
819 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
820 | "dev": true,
821 | "requires": {
822 | "balanced-match": "^1.0.0",
823 | "concat-map": "0.0.1"
824 | }
825 | },
826 | "buffer-from": {
827 | "version": "1.1.2",
828 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
829 | "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
830 | "dev": true
831 | },
832 | "builtin-modules": {
833 | "version": "3.2.0",
834 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz",
835 | "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==",
836 | "dev": true
837 | },
838 | "chalk": {
839 | "version": "2.4.2",
840 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
841 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
842 | "dev": true,
843 | "requires": {
844 | "ansi-styles": "^3.2.1",
845 | "escape-string-regexp": "^1.0.5",
846 | "supports-color": "^5.3.0"
847 | }
848 | },
849 | "color-convert": {
850 | "version": "1.9.3",
851 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
852 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
853 | "dev": true,
854 | "requires": {
855 | "color-name": "1.1.3"
856 | }
857 | },
858 | "color-name": {
859 | "version": "1.1.3",
860 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
861 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
862 | "dev": true
863 | },
864 | "commander": {
865 | "version": "2.20.3",
866 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
867 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
868 | "dev": true
869 | },
870 | "commondir": {
871 | "version": "1.0.1",
872 | "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
873 | "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
874 | "dev": true
875 | },
876 | "concat-map": {
877 | "version": "0.0.1",
878 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
879 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
880 | "dev": true
881 | },
882 | "deepmerge": {
883 | "version": "4.2.2",
884 | "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
885 | "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==",
886 | "dev": true
887 | },
888 | "escape-string-regexp": {
889 | "version": "1.0.5",
890 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
891 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
892 | "dev": true
893 | },
894 | "estree-walker": {
895 | "version": "2.0.2",
896 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
897 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
898 | "dev": true
899 | },
900 | "fs.realpath": {
901 | "version": "1.0.0",
902 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
903 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
904 | "dev": true
905 | },
906 | "fsevents": {
907 | "version": "2.3.2",
908 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
909 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
910 | "dev": true,
911 | "optional": true
912 | },
913 | "function-bind": {
914 | "version": "1.1.1",
915 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
916 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
917 | "dev": true
918 | },
919 | "glob": {
920 | "version": "7.1.7",
921 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
922 | "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
923 | "dev": true,
924 | "requires": {
925 | "fs.realpath": "^1.0.0",
926 | "inflight": "^1.0.4",
927 | "inherits": "2",
928 | "minimatch": "^3.0.4",
929 | "once": "^1.3.0",
930 | "path-is-absolute": "^1.0.0"
931 | }
932 | },
933 | "has": {
934 | "version": "1.0.3",
935 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
936 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
937 | "dev": true,
938 | "requires": {
939 | "function-bind": "^1.1.1"
940 | }
941 | },
942 | "has-flag": {
943 | "version": "3.0.0",
944 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
945 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
946 | "dev": true
947 | },
948 | "inflight": {
949 | "version": "1.0.6",
950 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
951 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
952 | "dev": true,
953 | "requires": {
954 | "once": "^1.3.0",
955 | "wrappy": "1"
956 | }
957 | },
958 | "inherits": {
959 | "version": "2.0.4",
960 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
961 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
962 | "dev": true
963 | },
964 | "is-core-module": {
965 | "version": "2.6.0",
966 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.6.0.tgz",
967 | "integrity": "sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ==",
968 | "dev": true,
969 | "requires": {
970 | "has": "^1.0.3"
971 | }
972 | },
973 | "is-module": {
974 | "version": "1.0.0",
975 | "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
976 | "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=",
977 | "dev": true
978 | },
979 | "is-reference": {
980 | "version": "1.2.1",
981 | "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz",
982 | "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==",
983 | "dev": true,
984 | "requires": {
985 | "@types/estree": "*"
986 | }
987 | },
988 | "jest-worker": {
989 | "version": "26.6.2",
990 | "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz",
991 | "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==",
992 | "dev": true,
993 | "requires": {
994 | "@types/node": "*",
995 | "merge-stream": "^2.0.0",
996 | "supports-color": "^7.0.0"
997 | },
998 | "dependencies": {
999 | "has-flag": {
1000 | "version": "4.0.0",
1001 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
1002 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
1003 | "dev": true
1004 | },
1005 | "supports-color": {
1006 | "version": "7.2.0",
1007 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
1008 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
1009 | "dev": true,
1010 | "requires": {
1011 | "has-flag": "^4.0.0"
1012 | }
1013 | }
1014 | }
1015 | },
1016 | "js-tokens": {
1017 | "version": "4.0.0",
1018 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
1019 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
1020 | "dev": true
1021 | },
1022 | "magic-string": {
1023 | "version": "0.25.7",
1024 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz",
1025 | "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==",
1026 | "dev": true,
1027 | "requires": {
1028 | "sourcemap-codec": "^1.4.4"
1029 | }
1030 | },
1031 | "merge-stream": {
1032 | "version": "2.0.0",
1033 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
1034 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
1035 | "dev": true
1036 | },
1037 | "minimatch": {
1038 | "version": "3.0.4",
1039 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
1040 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
1041 | "dev": true,
1042 | "requires": {
1043 | "brace-expansion": "^1.1.7"
1044 | }
1045 | },
1046 | "once": {
1047 | "version": "1.4.0",
1048 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
1049 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
1050 | "dev": true,
1051 | "requires": {
1052 | "wrappy": "1"
1053 | }
1054 | },
1055 | "path-is-absolute": {
1056 | "version": "1.0.1",
1057 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
1058 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
1059 | "dev": true
1060 | },
1061 | "path-parse": {
1062 | "version": "1.0.7",
1063 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
1064 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
1065 | "dev": true
1066 | },
1067 | "picomatch": {
1068 | "version": "2.3.0",
1069 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz",
1070 | "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==",
1071 | "dev": true
1072 | },
1073 | "prettier": {
1074 | "version": "1.19.1",
1075 | "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz",
1076 | "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==",
1077 | "dev": true
1078 | },
1079 | "randombytes": {
1080 | "version": "2.1.0",
1081 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
1082 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
1083 | "dev": true,
1084 | "requires": {
1085 | "safe-buffer": "^5.1.0"
1086 | }
1087 | },
1088 | "regexparam": {
1089 | "version": "2.0.0",
1090 | "resolved": "https://registry.npmjs.org/regexparam/-/regexparam-2.0.0.tgz",
1091 | "integrity": "sha512-gJKwd2MVPWHAIFLsaYDZfyKzHNS4o7E/v8YmNf44vmeV2e4YfVoDToTOKTvE7ab68cRJ++kLuEXJBaEeJVt5ow=="
1092 | },
1093 | "resolve": {
1094 | "version": "1.20.0",
1095 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
1096 | "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==",
1097 | "dev": true,
1098 | "requires": {
1099 | "is-core-module": "^2.2.0",
1100 | "path-parse": "^1.0.6"
1101 | }
1102 | },
1103 | "rollup": {
1104 | "version": "2.56.3",
1105 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.56.3.tgz",
1106 | "integrity": "sha512-Au92NuznFklgQCUcV96iXlxUbHuB1vQMaH76DHl5M11TotjOHwqk9CwcrT78+Tnv4FN9uTBxq6p4EJoYkpyekg==",
1107 | "dev": true,
1108 | "requires": {
1109 | "fsevents": "~2.3.2"
1110 | }
1111 | },
1112 | "rollup-plugin-terser": {
1113 | "version": "7.0.2",
1114 | "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz",
1115 | "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==",
1116 | "dev": true,
1117 | "requires": {
1118 | "@babel/code-frame": "^7.10.4",
1119 | "jest-worker": "^26.2.1",
1120 | "serialize-javascript": "^4.0.0",
1121 | "terser": "^5.0.0"
1122 | }
1123 | },
1124 | "safe-buffer": {
1125 | "version": "5.2.1",
1126 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
1127 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
1128 | "dev": true
1129 | },
1130 | "serialize-javascript": {
1131 | "version": "4.0.0",
1132 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz",
1133 | "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==",
1134 | "dev": true,
1135 | "requires": {
1136 | "randombytes": "^2.1.0"
1137 | }
1138 | },
1139 | "source-map": {
1140 | "version": "0.7.3",
1141 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
1142 | "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
1143 | "dev": true
1144 | },
1145 | "source-map-support": {
1146 | "version": "0.5.20",
1147 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz",
1148 | "integrity": "sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==",
1149 | "dev": true,
1150 | "requires": {
1151 | "buffer-from": "^1.0.0",
1152 | "source-map": "^0.6.0"
1153 | },
1154 | "dependencies": {
1155 | "source-map": {
1156 | "version": "0.6.1",
1157 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
1158 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
1159 | "dev": true
1160 | }
1161 | }
1162 | },
1163 | "sourcemap-codec": {
1164 | "version": "1.4.8",
1165 | "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
1166 | "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
1167 | "dev": true
1168 | },
1169 | "supports-color": {
1170 | "version": "5.5.0",
1171 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
1172 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
1173 | "dev": true,
1174 | "requires": {
1175 | "has-flag": "^3.0.0"
1176 | }
1177 | },
1178 | "terser": {
1179 | "version": "5.8.0",
1180 | "resolved": "https://registry.npmjs.org/terser/-/terser-5.8.0.tgz",
1181 | "integrity": "sha512-f0JH+6yMpneYcRJN314lZrSwu9eKkUFEHLN/kNy8ceh8gaRiLgFPJqrB9HsXjhEGdv4e/ekjTOFxIlL6xlma8A==",
1182 | "dev": true,
1183 | "requires": {
1184 | "commander": "^2.20.0",
1185 | "source-map": "~0.7.2",
1186 | "source-map-support": "~0.5.20"
1187 | }
1188 | },
1189 | "tslib": {
1190 | "version": "2.3.1",
1191 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
1192 | "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==",
1193 | "dev": true,
1194 | "peer": true
1195 | },
1196 | "typescript": {
1197 | "version": "4.4.3",
1198 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.3.tgz",
1199 | "integrity": "sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA==",
1200 | "dev": true,
1201 | "peer": true
1202 | },
1203 | "worktop": {
1204 | "version": "0.7.3",
1205 | "resolved": "https://registry.npmjs.org/worktop/-/worktop-0.7.3.tgz",
1206 | "integrity": "sha512-WBHP1hk8pLP7ahAw13fugDWcO0SUAOiCD6DHT/bfLWoCIA/PL9u7GKdudT2nGZ8EGR1APbGCAI6ZzKG1+X+PnQ==",
1207 | "requires": {
1208 | "regexparam": "^2.0.0"
1209 | }
1210 | },
1211 | "wrappy": {
1212 | "version": "1.0.2",
1213 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
1214 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
1215 | "dev": true
1216 | }
1217 | }
1218 | }
1219 |
--------------------------------------------------------------------------------
/frontend/src/CFNFT.json:
--------------------------------------------------------------------------------
1 | {
2 | "_format": "hh-sol-artifact-1",
3 | "contractName": "CFNFT",
4 | "sourceName": "contracts/CFNFT.sol",
5 | "abi": [
6 | {
7 | "inputs": [],
8 | "stateMutability": "nonpayable",
9 | "type": "constructor"
10 | },
11 | {
12 | "anonymous": false,
13 | "inputs": [
14 | {
15 | "indexed": true,
16 | "internalType": "address",
17 | "name": "owner",
18 | "type": "address"
19 | },
20 | {
21 | "indexed": true,
22 | "internalType": "address",
23 | "name": "approved",
24 | "type": "address"
25 | },
26 | {
27 | "indexed": true,
28 | "internalType": "uint256",
29 | "name": "tokenId",
30 | "type": "uint256"
31 | }
32 | ],
33 | "name": "Approval",
34 | "type": "event"
35 | },
36 | {
37 | "anonymous": false,
38 | "inputs": [
39 | {
40 | "indexed": true,
41 | "internalType": "address",
42 | "name": "owner",
43 | "type": "address"
44 | },
45 | {
46 | "indexed": true,
47 | "internalType": "address",
48 | "name": "operator",
49 | "type": "address"
50 | },
51 | {
52 | "indexed": false,
53 | "internalType": "bool",
54 | "name": "approved",
55 | "type": "bool"
56 | }
57 | ],
58 | "name": "ApprovalForAll",
59 | "type": "event"
60 | },
61 | {
62 | "anonymous": false,
63 | "inputs": [
64 | {
65 | "indexed": false,
66 | "internalType": "uint256",
67 | "name": "tokenId",
68 | "type": "uint256"
69 | },
70 | {
71 | "indexed": false,
72 | "internalType": "address",
73 | "name": "owner",
74 | "type": "address"
75 | }
76 | ],
77 | "name": "Minted",
78 | "type": "event"
79 | },
80 | {
81 | "anonymous": false,
82 | "inputs": [
83 | {
84 | "indexed": true,
85 | "internalType": "address",
86 | "name": "previousOwner",
87 | "type": "address"
88 | },
89 | {
90 | "indexed": true,
91 | "internalType": "address",
92 | "name": "newOwner",
93 | "type": "address"
94 | }
95 | ],
96 | "name": "OwnershipTransferred",
97 | "type": "event"
98 | },
99 | {
100 | "anonymous": false,
101 | "inputs": [
102 | {
103 | "indexed": false,
104 | "internalType": "address",
105 | "name": "account",
106 | "type": "address"
107 | }
108 | ],
109 | "name": "Paused",
110 | "type": "event"
111 | },
112 | {
113 | "anonymous": false,
114 | "inputs": [
115 | {
116 | "indexed": true,
117 | "internalType": "bytes32",
118 | "name": "role",
119 | "type": "bytes32"
120 | },
121 | {
122 | "indexed": true,
123 | "internalType": "bytes32",
124 | "name": "previousAdminRole",
125 | "type": "bytes32"
126 | },
127 | {
128 | "indexed": true,
129 | "internalType": "bytes32",
130 | "name": "newAdminRole",
131 | "type": "bytes32"
132 | }
133 | ],
134 | "name": "RoleAdminChanged",
135 | "type": "event"
136 | },
137 | {
138 | "anonymous": false,
139 | "inputs": [
140 | {
141 | "indexed": true,
142 | "internalType": "bytes32",
143 | "name": "role",
144 | "type": "bytes32"
145 | },
146 | {
147 | "indexed": true,
148 | "internalType": "address",
149 | "name": "account",
150 | "type": "address"
151 | },
152 | {
153 | "indexed": true,
154 | "internalType": "address",
155 | "name": "sender",
156 | "type": "address"
157 | }
158 | ],
159 | "name": "RoleGranted",
160 | "type": "event"
161 | },
162 | {
163 | "anonymous": false,
164 | "inputs": [
165 | {
166 | "indexed": true,
167 | "internalType": "bytes32",
168 | "name": "role",
169 | "type": "bytes32"
170 | },
171 | {
172 | "indexed": true,
173 | "internalType": "address",
174 | "name": "account",
175 | "type": "address"
176 | },
177 | {
178 | "indexed": true,
179 | "internalType": "address",
180 | "name": "sender",
181 | "type": "address"
182 | }
183 | ],
184 | "name": "RoleRevoked",
185 | "type": "event"
186 | },
187 | {
188 | "anonymous": false,
189 | "inputs": [
190 | {
191 | "indexed": true,
192 | "internalType": "address",
193 | "name": "from",
194 | "type": "address"
195 | },
196 | {
197 | "indexed": true,
198 | "internalType": "address",
199 | "name": "to",
200 | "type": "address"
201 | },
202 | {
203 | "indexed": true,
204 | "internalType": "uint256",
205 | "name": "tokenId",
206 | "type": "uint256"
207 | }
208 | ],
209 | "name": "Transfer",
210 | "type": "event"
211 | },
212 | {
213 | "anonymous": false,
214 | "inputs": [
215 | {
216 | "indexed": false,
217 | "internalType": "address",
218 | "name": "account",
219 | "type": "address"
220 | }
221 | ],
222 | "name": "Unpaused",
223 | "type": "event"
224 | },
225 | {
226 | "inputs": [],
227 | "name": "DEFAULT_ADMIN_ROLE",
228 | "outputs": [
229 | {
230 | "internalType": "bytes32",
231 | "name": "",
232 | "type": "bytes32"
233 | }
234 | ],
235 | "stateMutability": "view",
236 | "type": "function"
237 | },
238 | {
239 | "inputs": [],
240 | "name": "MAX_TOKENS",
241 | "outputs": [
242 | {
243 | "internalType": "uint256",
244 | "name": "",
245 | "type": "uint256"
246 | }
247 | ],
248 | "stateMutability": "view",
249 | "type": "function"
250 | },
251 | {
252 | "inputs": [],
253 | "name": "MINTER_ROLE",
254 | "outputs": [
255 | {
256 | "internalType": "bytes32",
257 | "name": "",
258 | "type": "bytes32"
259 | }
260 | ],
261 | "stateMutability": "view",
262 | "type": "function"
263 | },
264 | {
265 | "inputs": [],
266 | "name": "PAUSER_ROLE",
267 | "outputs": [
268 | {
269 | "internalType": "bytes32",
270 | "name": "",
271 | "type": "bytes32"
272 | }
273 | ],
274 | "stateMutability": "view",
275 | "type": "function"
276 | },
277 | {
278 | "inputs": [
279 | {
280 | "internalType": "address",
281 | "name": "to",
282 | "type": "address"
283 | },
284 | {
285 | "internalType": "uint256",
286 | "name": "tokenId",
287 | "type": "uint256"
288 | }
289 | ],
290 | "name": "approve",
291 | "outputs": [],
292 | "stateMutability": "nonpayable",
293 | "type": "function"
294 | },
295 | {
296 | "inputs": [
297 | {
298 | "internalType": "address",
299 | "name": "owner",
300 | "type": "address"
301 | }
302 | ],
303 | "name": "balanceOf",
304 | "outputs": [
305 | {
306 | "internalType": "uint256",
307 | "name": "",
308 | "type": "uint256"
309 | }
310 | ],
311 | "stateMutability": "view",
312 | "type": "function"
313 | },
314 | {
315 | "inputs": [
316 | {
317 | "internalType": "uint256",
318 | "name": "tokenId",
319 | "type": "uint256"
320 | }
321 | ],
322 | "name": "burn",
323 | "outputs": [],
324 | "stateMutability": "nonpayable",
325 | "type": "function"
326 | },
327 | {
328 | "inputs": [
329 | {
330 | "internalType": "uint256",
331 | "name": "tokenId",
332 | "type": "uint256"
333 | }
334 | ],
335 | "name": "getApproved",
336 | "outputs": [
337 | {
338 | "internalType": "address",
339 | "name": "",
340 | "type": "address"
341 | }
342 | ],
343 | "stateMutability": "view",
344 | "type": "function"
345 | },
346 | {
347 | "inputs": [
348 | {
349 | "internalType": "bytes32",
350 | "name": "role",
351 | "type": "bytes32"
352 | }
353 | ],
354 | "name": "getRoleAdmin",
355 | "outputs": [
356 | {
357 | "internalType": "bytes32",
358 | "name": "",
359 | "type": "bytes32"
360 | }
361 | ],
362 | "stateMutability": "view",
363 | "type": "function"
364 | },
365 | {
366 | "inputs": [
367 | {
368 | "internalType": "bytes32",
369 | "name": "role",
370 | "type": "bytes32"
371 | },
372 | {
373 | "internalType": "uint256",
374 | "name": "index",
375 | "type": "uint256"
376 | }
377 | ],
378 | "name": "getRoleMember",
379 | "outputs": [
380 | {
381 | "internalType": "address",
382 | "name": "",
383 | "type": "address"
384 | }
385 | ],
386 | "stateMutability": "view",
387 | "type": "function"
388 | },
389 | {
390 | "inputs": [
391 | {
392 | "internalType": "bytes32",
393 | "name": "role",
394 | "type": "bytes32"
395 | }
396 | ],
397 | "name": "getRoleMemberCount",
398 | "outputs": [
399 | {
400 | "internalType": "uint256",
401 | "name": "",
402 | "type": "uint256"
403 | }
404 | ],
405 | "stateMutability": "view",
406 | "type": "function"
407 | },
408 | {
409 | "inputs": [
410 | {
411 | "internalType": "bytes32",
412 | "name": "role",
413 | "type": "bytes32"
414 | },
415 | {
416 | "internalType": "address",
417 | "name": "account",
418 | "type": "address"
419 | }
420 | ],
421 | "name": "grantRole",
422 | "outputs": [],
423 | "stateMutability": "nonpayable",
424 | "type": "function"
425 | },
426 | {
427 | "inputs": [
428 | {
429 | "internalType": "bytes32",
430 | "name": "role",
431 | "type": "bytes32"
432 | },
433 | {
434 | "internalType": "address",
435 | "name": "account",
436 | "type": "address"
437 | }
438 | ],
439 | "name": "hasRole",
440 | "outputs": [
441 | {
442 | "internalType": "bool",
443 | "name": "",
444 | "type": "bool"
445 | }
446 | ],
447 | "stateMutability": "view",
448 | "type": "function"
449 | },
450 | {
451 | "inputs": [],
452 | "name": "hasSaleStarted",
453 | "outputs": [
454 | {
455 | "internalType": "bool",
456 | "name": "",
457 | "type": "bool"
458 | }
459 | ],
460 | "stateMutability": "view",
461 | "type": "function"
462 | },
463 | {
464 | "inputs": [],
465 | "name": "hasSoldOut",
466 | "outputs": [
467 | {
468 | "internalType": "bool",
469 | "name": "",
470 | "type": "bool"
471 | }
472 | ],
473 | "stateMutability": "view",
474 | "type": "function"
475 | },
476 | {
477 | "inputs": [
478 | {
479 | "internalType": "address",
480 | "name": "_owner",
481 | "type": "address"
482 | },
483 | {
484 | "internalType": "address",
485 | "name": "_operator",
486 | "type": "address"
487 | }
488 | ],
489 | "name": "isApprovedForAll",
490 | "outputs": [
491 | {
492 | "internalType": "bool",
493 | "name": "isOperator",
494 | "type": "bool"
495 | }
496 | ],
497 | "stateMutability": "view",
498 | "type": "function"
499 | },
500 | {
501 | "inputs": [
502 | {
503 | "internalType": "address",
504 | "name": "to",
505 | "type": "address"
506 | }
507 | ],
508 | "name": "mint",
509 | "outputs": [],
510 | "stateMutability": "nonpayable",
511 | "type": "function"
512 | },
513 | {
514 | "inputs": [
515 | {
516 | "internalType": "uint256",
517 | "name": "quantity",
518 | "type": "uint256"
519 | },
520 | {
521 | "internalType": "address",
522 | "name": "receiver",
523 | "type": "address"
524 | }
525 | ],
526 | "name": "mintToken",
527 | "outputs": [],
528 | "stateMutability": "payable",
529 | "type": "function"
530 | },
531 | {
532 | "inputs": [],
533 | "name": "name",
534 | "outputs": [
535 | {
536 | "internalType": "string",
537 | "name": "",
538 | "type": "string"
539 | }
540 | ],
541 | "stateMutability": "view",
542 | "type": "function"
543 | },
544 | {
545 | "inputs": [],
546 | "name": "owner",
547 | "outputs": [
548 | {
549 | "internalType": "address",
550 | "name": "",
551 | "type": "address"
552 | }
553 | ],
554 | "stateMutability": "view",
555 | "type": "function"
556 | },
557 | {
558 | "inputs": [
559 | {
560 | "internalType": "uint256",
561 | "name": "tokenId",
562 | "type": "uint256"
563 | }
564 | ],
565 | "name": "ownerOf",
566 | "outputs": [
567 | {
568 | "internalType": "address",
569 | "name": "",
570 | "type": "address"
571 | }
572 | ],
573 | "stateMutability": "view",
574 | "type": "function"
575 | },
576 | {
577 | "inputs": [],
578 | "name": "pause",
579 | "outputs": [],
580 | "stateMutability": "nonpayable",
581 | "type": "function"
582 | },
583 | {
584 | "inputs": [],
585 | "name": "pauseSale",
586 | "outputs": [],
587 | "stateMutability": "nonpayable",
588 | "type": "function"
589 | },
590 | {
591 | "inputs": [],
592 | "name": "paused",
593 | "outputs": [
594 | {
595 | "internalType": "bool",
596 | "name": "",
597 | "type": "bool"
598 | }
599 | ],
600 | "stateMutability": "view",
601 | "type": "function"
602 | },
603 | {
604 | "inputs": [],
605 | "name": "renounceOwnership",
606 | "outputs": [],
607 | "stateMutability": "nonpayable",
608 | "type": "function"
609 | },
610 | {
611 | "inputs": [
612 | {
613 | "internalType": "bytes32",
614 | "name": "role",
615 | "type": "bytes32"
616 | },
617 | {
618 | "internalType": "address",
619 | "name": "account",
620 | "type": "address"
621 | }
622 | ],
623 | "name": "renounceRole",
624 | "outputs": [],
625 | "stateMutability": "nonpayable",
626 | "type": "function"
627 | },
628 | {
629 | "inputs": [
630 | {
631 | "internalType": "bytes32",
632 | "name": "role",
633 | "type": "bytes32"
634 | },
635 | {
636 | "internalType": "address",
637 | "name": "account",
638 | "type": "address"
639 | }
640 | ],
641 | "name": "revokeRole",
642 | "outputs": [],
643 | "stateMutability": "nonpayable",
644 | "type": "function"
645 | },
646 | {
647 | "inputs": [
648 | {
649 | "internalType": "address",
650 | "name": "from",
651 | "type": "address"
652 | },
653 | {
654 | "internalType": "address",
655 | "name": "to",
656 | "type": "address"
657 | },
658 | {
659 | "internalType": "uint256",
660 | "name": "tokenId",
661 | "type": "uint256"
662 | }
663 | ],
664 | "name": "safeTransferFrom",
665 | "outputs": [],
666 | "stateMutability": "nonpayable",
667 | "type": "function"
668 | },
669 | {
670 | "inputs": [
671 | {
672 | "internalType": "address",
673 | "name": "from",
674 | "type": "address"
675 | },
676 | {
677 | "internalType": "address",
678 | "name": "to",
679 | "type": "address"
680 | },
681 | {
682 | "internalType": "uint256",
683 | "name": "tokenId",
684 | "type": "uint256"
685 | },
686 | {
687 | "internalType": "bytes",
688 | "name": "_data",
689 | "type": "bytes"
690 | }
691 | ],
692 | "name": "safeTransferFrom",
693 | "outputs": [],
694 | "stateMutability": "nonpayable",
695 | "type": "function"
696 | },
697 | {
698 | "inputs": [
699 | {
700 | "internalType": "address",
701 | "name": "operator",
702 | "type": "address"
703 | },
704 | {
705 | "internalType": "bool",
706 | "name": "approved",
707 | "type": "bool"
708 | }
709 | ],
710 | "name": "setApprovalForAll",
711 | "outputs": [],
712 | "stateMutability": "nonpayable",
713 | "type": "function"
714 | },
715 | {
716 | "inputs": [],
717 | "name": "startSale",
718 | "outputs": [],
719 | "stateMutability": "nonpayable",
720 | "type": "function"
721 | },
722 | {
723 | "inputs": [
724 | {
725 | "internalType": "bytes4",
726 | "name": "interfaceId",
727 | "type": "bytes4"
728 | }
729 | ],
730 | "name": "supportsInterface",
731 | "outputs": [
732 | {
733 | "internalType": "bool",
734 | "name": "",
735 | "type": "bool"
736 | }
737 | ],
738 | "stateMutability": "view",
739 | "type": "function"
740 | },
741 | {
742 | "inputs": [],
743 | "name": "symbol",
744 | "outputs": [
745 | {
746 | "internalType": "string",
747 | "name": "",
748 | "type": "string"
749 | }
750 | ],
751 | "stateMutability": "view",
752 | "type": "function"
753 | },
754 | {
755 | "inputs": [
756 | {
757 | "internalType": "uint256",
758 | "name": "index",
759 | "type": "uint256"
760 | }
761 | ],
762 | "name": "tokenByIndex",
763 | "outputs": [
764 | {
765 | "internalType": "uint256",
766 | "name": "",
767 | "type": "uint256"
768 | }
769 | ],
770 | "stateMutability": "view",
771 | "type": "function"
772 | },
773 | {
774 | "inputs": [
775 | {
776 | "internalType": "uint256",
777 | "name": "tokenId",
778 | "type": "uint256"
779 | }
780 | ],
781 | "name": "tokenExists",
782 | "outputs": [
783 | {
784 | "internalType": "bool",
785 | "name": "",
786 | "type": "bool"
787 | }
788 | ],
789 | "stateMutability": "view",
790 | "type": "function"
791 | },
792 | {
793 | "inputs": [
794 | {
795 | "internalType": "address",
796 | "name": "owner",
797 | "type": "address"
798 | },
799 | {
800 | "internalType": "uint256",
801 | "name": "index",
802 | "type": "uint256"
803 | }
804 | ],
805 | "name": "tokenOfOwnerByIndex",
806 | "outputs": [
807 | {
808 | "internalType": "uint256",
809 | "name": "",
810 | "type": "uint256"
811 | }
812 | ],
813 | "stateMutability": "view",
814 | "type": "function"
815 | },
816 | {
817 | "inputs": [
818 | {
819 | "internalType": "uint256",
820 | "name": "tokenId",
821 | "type": "uint256"
822 | }
823 | ],
824 | "name": "tokenURI",
825 | "outputs": [
826 | {
827 | "internalType": "string",
828 | "name": "",
829 | "type": "string"
830 | }
831 | ],
832 | "stateMutability": "view",
833 | "type": "function"
834 | },
835 | {
836 | "inputs": [],
837 | "name": "totalSupply",
838 | "outputs": [
839 | {
840 | "internalType": "uint256",
841 | "name": "",
842 | "type": "uint256"
843 | }
844 | ],
845 | "stateMutability": "view",
846 | "type": "function"
847 | },
848 | {
849 | "inputs": [
850 | {
851 | "internalType": "address",
852 | "name": "from",
853 | "type": "address"
854 | },
855 | {
856 | "internalType": "address",
857 | "name": "to",
858 | "type": "address"
859 | },
860 | {
861 | "internalType": "uint256",
862 | "name": "tokenId",
863 | "type": "uint256"
864 | }
865 | ],
866 | "name": "transferFrom",
867 | "outputs": [],
868 | "stateMutability": "nonpayable",
869 | "type": "function"
870 | },
871 | {
872 | "inputs": [
873 | {
874 | "internalType": "address",
875 | "name": "newOwner",
876 | "type": "address"
877 | }
878 | ],
879 | "name": "transferOwnership",
880 | "outputs": [],
881 | "stateMutability": "nonpayable",
882 | "type": "function"
883 | },
884 | {
885 | "inputs": [],
886 | "name": "unpause",
887 | "outputs": [],
888 | "stateMutability": "nonpayable",
889 | "type": "function"
890 | }
891 | ],
892 | "bytecode": "0x60806040526000600f60146101000a81548160ff0219169083151502179055503480156200002c57600080fd5b506040518060400160405280600581526020017f43464e46540000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f43464e465400000000000000000000000000000000000000000000000000000081525060405180606001604052806025815260200162005f026025913982828160029080519060200190620000cd9291906200060f565b508060039080519060200190620000e69291906200060f565b5050506000600c60006101000a81548160ff02191690831515021790555080600e90805190602001906200011c9291906200060f565b50620001416000801b62000135620001ec60201b60201c565b6200020860201b60201c565b620001827f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a662000176620001ec60201b60201c565b6200020860201b60201c565b620001c37f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a620001b7620001ec60201b60201c565b6200020860201b60201c565b505050620001e6620001da620001ec60201b60201c565b6200025060201b60201c565b62000724565b6000620002036200031660201b62001b8d1760201c565b905090565b6200021f8282620003c960201b62001c3e1760201c565b6200024b8160016000858152602001908152602001600020620003df60201b62001c4c1790919060201c565b505050565b6000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415620003c257600080368080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509050600080369050905073ffffffffffffffffffffffffffffffffffffffff818301511692505050620003c6565b3390505b90565b620003db82826200041760201b60201c565b5050565b60006200040f836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6200050860201b60201c565b905092915050565b6200042982826200058260201b60201c565b6200050457600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620004a9620001ec60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b60006200051c8383620005ec60201b60201c565b620005775782600001829080600181540180825580915050600190039060005260206000200160009091909190915055826000018054905083600101600084815260200190815260200160002081905550600190506200057c565b600090505b92915050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600080836001016000848152602001908152602001600020541415905092915050565b8280546200061d90620006bf565b90600052602060002090601f0160209004810192826200064157600085556200068d565b82601f106200065c57805160ff19168380011785556200068d565b828001600101855582156200068d579182015b828111156200068c5782518255916020019190600101906200066f565b5b5090506200069c9190620006a0565b5090565b5b80821115620006bb576000816000905550600101620006a1565b5090565b60006002820490506001821680620006d857607f821691505b60208210811415620006ef57620006ee620006f5565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6157ce80620007346000396000f3fe6080604052600436106102455760003560e01c80636a62784211610139578063a22cb465116100b6578063d53913931161007a578063d53913931461087e578063d547741f146108a9578063e63ab1e9146108d2578063e985e9c5146108fd578063f2fde38b1461093a578063f47c84c51461096357610245565b8063a22cb4651461079b578063b66a0e5d146107c4578063b88d4fde146107db578063c87b56dd14610804578063ca15c8731461084157610245565b80639010d07c116100fd5780639010d07c146106af57806391d14854146106ec57806395d89b4114610729578063a140ae2314610754578063a217fddf1461077057610245565b80636a627842146105f057806370a0823114610619578063715018a6146106565780638456cb591461066d5780638da5cb5b1461068457610245565b80632f2ff15d116101c757806342966c681161018b57806342966c681461050b5780634f6ccce71461053457806355367ba9146105715780635c975abb146105885780636352211e146105b357610245565b80632f2ff15d1461043c5780632f745c591461046557806336568abe146104a25780633f4ba83a146104cb57806342842e0e146104e257610245565b8063095ea7b31161020e578063095ea7b31461035757806318160ddd146103805780631c8b232d146103ab57806323b872dd146103d6578063248a9ca3146103ff57610245565b8062923f9e1461024a57806301ffc9a71461028757806303824f76146102c457806306fdde03146102ef578063081812fc1461031a575b600080fd5b34801561025657600080fd5b50610271600480360381019061026c9190613f9a565b61098e565b60405161027e9190614626565b60405180910390f35b34801561029357600080fd5b506102ae60048036038101906102a99190613f48565b6109a0565b6040516102bb9190614626565b60405180910390f35b3480156102d057600080fd5b506102d96109b2565b6040516102e69190614626565b60405180910390f35b3480156102fb57600080fd5b506103046109d5565b604051610311919061465c565b60405180910390f35b34801561032657600080fd5b50610341600480360381019061033c9190613f9a565b610a67565b60405161034e91906145bf565b60405180910390f35b34801561036357600080fd5b5061037e60048036038101906103799190613e6b565b610aec565b005b34801561038c57600080fd5b50610395610c04565b6040516103a29190614a5e565b60405180910390f35b3480156103b757600080fd5b506103c0610c11565b6040516103cd9190614626565b60405180910390f35b3480156103e257600080fd5b506103fd60048036038101906103f89190613d65565b610c24565b005b34801561040b57600080fd5b5061042660048036038101906104219190613ea7565b610c84565b6040516104339190614641565b60405180910390f35b34801561044857600080fd5b50610463600480360381019061045e9190613ed0565b610ca3565b005b34801561047157600080fd5b5061048c60048036038101906104879190613e6b565b610cd7565b6040516104999190614a5e565b60405180910390f35b3480156104ae57600080fd5b506104c960048036038101906104c49190613ed0565b610d7c565b005b3480156104d757600080fd5b506104e0610db0565b005b3480156104ee57600080fd5b5061050960048036038101906105049190613d65565b610e2a565b005b34801561051757600080fd5b50610532600480360381019061052d9190613f9a565b610e4a565b005b34801561054057600080fd5b5061055b60048036038101906105569190613f9a565b610ea6565b6040516105689190614a5e565b60405180910390f35b34801561057d57600080fd5b50610586610f3d565b005b34801561059457600080fd5b5061059d610fd6565b6040516105aa9190614626565b60405180910390f35b3480156105bf57600080fd5b506105da60048036038101906105d59190613f9a565b610fed565b6040516105e791906145bf565b60405180910390f35b3480156105fc57600080fd5b5061061760048036038101906106129190613d00565b61109f565b005b34801561062557600080fd5b50610640600480360381019061063b9190613d00565b61112f565b60405161064d9190614a5e565b60405180910390f35b34801561066257600080fd5b5061066b6111e7565b005b34801561067957600080fd5b5061068261126f565b005b34801561069057600080fd5b506106996112e9565b6040516106a691906145bf565b60405180910390f35b3480156106bb57600080fd5b506106d660048036038101906106d19190613f0c565b611313565b6040516106e391906145bf565b60405180910390f35b3480156106f857600080fd5b50610713600480360381019061070e9190613ed0565b611342565b6040516107209190614626565b60405180910390f35b34801561073557600080fd5b5061073e6113ac565b60405161074b919061465c565b60405180910390f35b61076e60048036038101906107699190613fc3565b61143e565b005b34801561077c57600080fd5b5061078561165f565b6040516107929190614641565b60405180910390f35b3480156107a757600080fd5b506107c260048036038101906107bd9190613e2f565b611666565b005b3480156107d057600080fd5b506107d96117e7565b005b3480156107e757600080fd5b5061080260048036038101906107fd9190613db4565b611880565b005b34801561081057600080fd5b5061082b60048036038101906108269190613f9a565b6118e2565b604051610838919061465c565b60405180910390f35b34801561084d57600080fd5b5061086860048036038101906108639190613ea7565b611989565b6040516108759190614a5e565b60405180910390f35b34801561088a57600080fd5b506108936119ad565b6040516108a09190614641565b60405180910390f35b3480156108b557600080fd5b506108d060048036038101906108cb9190613ed0565b6119d1565b005b3480156108de57600080fd5b506108e7611a05565b6040516108f49190614641565b60405180910390f35b34801561090957600080fd5b50610924600480360381019061091f9190613d29565b611a29565b6040516109319190614626565b60405180910390f35b34801561094657600080fd5b50610961600480360381019061095c9190613d00565b611a8f565b005b34801561096f57600080fd5b50610978611b87565b6040516109859190614a5e565b60405180910390f35b600061099982611c7c565b9050919050565b60006109ab82611ce8565b9050919050565b60006108006109bf610c04565b106109cd57600190506109d2565b600090505b90565b6060600280546109e490614d3a565b80601f0160208091040260200160405190810160405280929190818152602001828054610a1090614d3a565b8015610a5d5780601f10610a3257610100808354040283529160200191610a5d565b820191906000526020600020905b815481529060010190602001808311610a4057829003601f168201915b5050505050905090565b6000610a7282611c7c565b610ab1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa8906148de565b60405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610af782610fed565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610b68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5f9061497e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610b87611d62565b73ffffffffffffffffffffffffffffffffffffffff161480610bb65750610bb581610bb0611d62565b611a29565b5b610bf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bec9061483e565b60405180910390fd5b610bff8383611d71565b505050565b6000600a80549050905090565b600f60149054906101000a900460ff1681565b610c35610c2f611d62565b82611e2a565b610c74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6b9061499e565b60405180910390fd5b610c7f838383611f08565b505050565b6000806000838152602001908152602001600020600101549050919050565b610cad8282612164565b610cd28160016000858152602001908152602001600020611c4c90919063ffffffff16565b505050565b6000610ce28361112f565b8210610d23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1a906146fe565b60405180910390fd5b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610d86828261218d565b610dab816001600085815260200190815260200160002061221090919063ffffffff16565b505050565b610de17f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610ddc611d62565b611342565b610e20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1790614a1e565b60405180910390fd5b610e28612240565b565b610e4583838360405180602001604052806000815250611880565b505050565b610e5b610e55611d62565b82611e2a565b610e9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e91906149fe565b60405180910390fd5b610ea3816122e2565b50565b6000610eb0610c04565b8210610ef1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee8906149be565b60405180910390fd5b600a8281548110610f2b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050919050565b610f45611d62565b73ffffffffffffffffffffffffffffffffffffffff16610f636112e9565b73ffffffffffffffffffffffffffffffffffffffff1614610fb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb0906148fe565b60405180910390fd5b6000600f60146101000a81548160ff021916908315150217905550565b6000600c60009054906101000a900460ff16905090565b6000806004600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611096576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108d9061487e565b60405180910390fd5b80915050919050565b6110d07f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66110cb611d62565b611342565b61110f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611106906149de565b60405180910390fd5b6111228161111d600d6123f3565b612401565b61112c600d6125cf565b50565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111979061485e565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6111ef611d62565b73ffffffffffffffffffffffffffffffffffffffff1661120d6112e9565b73ffffffffffffffffffffffffffffffffffffffff1614611263576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125a906148fe565b60405180910390fd5b61126d60006125e5565b565b6112a07f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61129b611d62565b611342565b6112df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d69061477e565b60405180910390fd5b6112e76126ab565b565b6000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600061133a826001600086815260200190815260200160002061274e90919063ffffffff16565b905092915050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6060600380546113bb90614d3a565b80601f01602080910402602001604051908101604052809291908181526020018280546113e790614d3a565b80156114345780601f1061140957610100808354040283529160200191611434565b820191906000526020600020905b81548152906001019060200180831161141757829003601f168201915b5050505050905090565b600f60149054906101000a900460ff168061148b575061145c6112e9565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6114ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c1906146de565b60405180910390fd5b6000821161150d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115049061489e565b60405180910390fd5b6003821115611551576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115489061495e565b60405180910390fd5b61080061156e83611560610c04565b61276890919063ffffffff16565b1115806115ad575061157e6112e9565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6115ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e3906147fe565b60405180910390fd5b60005b8281101561165a576000611601610c04565b905061160d838261277e565b7fb9203d657e9c0ec8274c818292ab0f58b04e1970050716891770eb1bab5d655e818460405161163e929190614a79565b60405180910390a150808061165290614d9d565b9150506115ef565b505050565b6000801b81565b61166e611d62565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d3906147be565b60405180910390fd5b80600760006116e9611d62565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611796611d62565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516117db9190614626565b60405180910390a35050565b6117ef611d62565b73ffffffffffffffffffffffffffffffffffffffff1661180d6112e9565b73ffffffffffffffffffffffffffffffffffffffff1614611863576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185a906148fe565b60405180910390fd5b6001600f60146101000a81548160ff021916908315150217905550565b61189161188b611d62565b83611e2a565b6118d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c79061499e565b60405180910390fd5b6118dc8484848461279c565b50505050565b60606118ed82611c7c565b61192c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119239061493e565b60405180910390fd5b60006119366127f8565b905060008151116119565760405180602001604052806000815250611981565b806119608461288a565b604051602001611971929190614561565b6040516020818303038152906040525b915050919050565b60006119a660016000848152602001908152602001600020612a37565b9050919050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6119db8282612a4c565b611a00816001600085815260200190815260200160002061221090919063ffffffff16565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007358807bad0b376efc12f5ad86aac70e78ed67deae73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a7c5760019050611a89565b611a868383612a75565b90505b92915050565b611a97611d62565b73ffffffffffffffffffffffffffffffffffffffff16611ab56112e9565b73ffffffffffffffffffffffffffffffffffffffff1614611b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b02906148fe565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611b7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b729061473e565b60405180910390fd5b611b84816125e5565b50565b61080081565b60003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415611c3757600080368080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509050600080369050905073ffffffffffffffffffffffffffffffffffffffff818301511692505050611c3b565b3390505b90565b611c488282612b09565b5050565b6000611c74836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612be9565b905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff166004600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611d5b5750611d5a82612c59565b5b9050919050565b6000611d6c611b8d565b905090565b816006600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611de483610fed565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611e3582611c7c565b611e74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6b906147de565b60405180910390fd5b6000611e7f83610fed565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611eee57508373ffffffffffffffffffffffffffffffffffffffff16611ed684610a67565b73ffffffffffffffffffffffffffffffffffffffff16145b80611eff5750611efe8185611a29565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611f2882610fed565b73ffffffffffffffffffffffffffffffffffffffff1614611f7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f759061491e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611fee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe59061479e565b60405180910390fd5b611ff9838383612d3b565b612004600082611d71565b6001600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546120549190614c1c565b925050819055506001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546120ab9190614b3b565b92505081905550816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b61216d82610c84565b61217e81612179611d62565b612d4b565b6121888383612b09565b505050565b612195611d62565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612202576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f990614a3e565b60405180910390fd5b61220c8282612de8565b5050565b6000612238836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612ec9565b905092915050565b612248610fd6565b612287576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227e906146be565b60405180910390fd5b6000600c60006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6122cb611d62565b6040516122d891906145bf565b60405180910390a1565b60006122ed82610fed565b90506122fb81600084612d3b565b612306600083611d71565b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546123569190614c1c565b925050819055506004600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600081600001549050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612471576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612468906148be565b60405180910390fd5b61247a81611c7c565b156124ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b19061475e565b60405180910390fd5b6124c660008383612d3b565b6001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125169190614b3b565b92505081905550816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6001816000016000828254019250508190555050565b6000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6126b3610fd6565b156126f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ea9061481e565b60405180910390fd5b6001600c60006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612737611d62565b60405161274491906145bf565b60405180910390a1565b600061275d836000018361304f565b60001c905092915050565b600081836127769190614b3b565b905092915050565b6127988282604051806020016040528060008152506130a0565b5050565b6127a7848484611f08565b6127b3848484846130fb565b6127f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e99061471e565b60405180910390fd5b50505050565b6060600e805461280790614d3a565b80601f016020809104026020016040519081016040528092919081815260200182805461283390614d3a565b80156128805780601f1061285557610100808354040283529160200191612880565b820191906000526020600020905b81548152906001019060200180831161286357829003601f168201915b5050505050905090565b606060008214156128d2576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612a32565b600082905060005b600082146129045780806128ed90614d9d565b915050600a826128fd9190614b91565b91506128da565b60008167ffffffffffffffff811115612946577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156129785781602001600182028036833780820191505090505b5090505b60008514612a2b576001826129919190614c1c565b9150600a856129a09190614de6565b60306129ac9190614b3b565b60f81b8183815181106129e8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612a249190614b91565b945061297c565b8093505050505b919050565b6000612a4582600001613292565b9050919050565b612a5582610c84565b612a6681612a61611d62565b612d4b565b612a708383612de8565b505050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b612b138282611342565b612be557600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550612b8a611d62565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000612bf583836132a3565b612c4e578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050612c53565b600090505b92915050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612d2457507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80612d345750612d33826132c6565b5b9050919050565b612d46838383613340565b505050565b612d558282611342565b612de457612d7a8173ffffffffffffffffffffffffffffffffffffffff166014613398565b612d888360001c6020613398565b604051602001612d99929190614585565b6040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ddb919061465c565b60405180910390fd5b5050565b612df28282611342565b15612ec557600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550612e6a611d62565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b60008083600101600084815260200190815260200160002054905060008114613043576000600182612efb9190614c1c565b9050600060018660000180549050612f139190614c1c565b9050818114612fce576000866000018281548110612f5a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154905080876000018481548110612fa4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001819055508387600101600083815260200190815260200160002081905550505b85600001805480613008577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050613049565b60009150505b92915050565b600082600001828154811061308d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154905092915050565b6130aa8383612401565b6130b760008484846130fb565b6130f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130ed9061471e565b60405180910390fd5b505050565b600061311c8473ffffffffffffffffffffffffffffffffffffffff16613692565b15613285578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02613145611d62565b8786866040518563ffffffff1660e01b815260040161316794939291906145da565b602060405180830381600087803b15801561318157600080fd5b505af19250505080156131b257506040513d601f19601f820116820180604052508101906131af9190613f71565b60015b613235573d80600081146131e2576040519150601f19603f3d011682016040523d82523d6000602084013e6131e7565b606091505b5060008151141561322d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132249061471e565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505061328a565b600190505b949350505050565b600081600001805490509050919050565b600080836001016000848152602001908152602001600020541415905092915050565b60007f5a05180f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806133395750613338826136a5565b5b9050919050565b61334b83838361371f565b613353610fd6565b15613393576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161338a9061469e565b60405180910390fd5b505050565b6060600060028360026133ab9190614bc2565b6133b59190614b3b565b67ffffffffffffffff8111156133f4577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156134265781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110613484577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061350e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000600184600261354e9190614bc2565b6135589190614b3b565b90505b6001811115613644577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106135c0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b1a60f81b8282815181106135fd577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c94508061363d90614d10565b905061355b565b5060008414613688576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161367f9061467e565b60405180910390fd5b8091505092915050565b600080823b905060008111915050919050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480613718575061371782613833565b5b9050919050565b61372a83838361389d565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561376d57613768816138a2565b6137ac565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146137ab576137aa83826138eb565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156137ef576137ea81613a58565b61382e565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461382d5761382c8282613b9b565b5b5b505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b505050565b600a80549050600b600083815260200190815260200160002081905550600a81908060018154018082558091505060019003906000526020600020016000909190919091505550565b600060016138f88461112f565b6139029190614c1c565b90506000600960008481526020019081526020016000205490508181146139e7576000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816009600083815260200190815260200160002081905550505b6009600084815260200190815260200160002060009055600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b60006001600a80549050613a6c9190614c1c565b90506000600b60008481526020019081526020016000205490506000600a8381548110613ac2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154905080600a8381548110613b0a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020018190555081600b600083815260200190815260200160002081905550600b600085815260200190815260200160002060009055600a805480613b7f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b6000613ba68361112f565b905081600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806009600084815260200190815260200160002081905550505050565b6000613c2d613c2884614ac7565b614aa2565b905082815260208101848484011115613c4557600080fd5b613c50848285614cce565b509392505050565b600081359050613c6781615725565b92915050565b600081359050613c7c8161573c565b92915050565b600081359050613c9181615753565b92915050565b600081359050613ca68161576a565b92915050565b600081519050613cbb8161576a565b92915050565b600082601f830112613cd257600080fd5b8135613ce2848260208601613c1a565b91505092915050565b600081359050613cfa81615781565b92915050565b600060208284031215613d1257600080fd5b6000613d2084828501613c58565b91505092915050565b60008060408385031215613d3c57600080fd5b6000613d4a85828601613c58565b9250506020613d5b85828601613c58565b9150509250929050565b600080600060608486031215613d7a57600080fd5b6000613d8886828701613c58565b9350506020613d9986828701613c58565b9250506040613daa86828701613ceb565b9150509250925092565b60008060008060808587031215613dca57600080fd5b6000613dd887828801613c58565b9450506020613de987828801613c58565b9350506040613dfa87828801613ceb565b925050606085013567ffffffffffffffff811115613e1757600080fd5b613e2387828801613cc1565b91505092959194509250565b60008060408385031215613e4257600080fd5b6000613e5085828601613c58565b9250506020613e6185828601613c6d565b9150509250929050565b60008060408385031215613e7e57600080fd5b6000613e8c85828601613c58565b9250506020613e9d85828601613ceb565b9150509250929050565b600060208284031215613eb957600080fd5b6000613ec784828501613c82565b91505092915050565b60008060408385031215613ee357600080fd5b6000613ef185828601613c82565b9250506020613f0285828601613c58565b9150509250929050565b60008060408385031215613f1f57600080fd5b6000613f2d85828601613c82565b9250506020613f3e85828601613ceb565b9150509250929050565b600060208284031215613f5a57600080fd5b6000613f6884828501613c97565b91505092915050565b600060208284031215613f8357600080fd5b6000613f9184828501613cac565b91505092915050565b600060208284031215613fac57600080fd5b6000613fba84828501613ceb565b91505092915050565b60008060408385031215613fd657600080fd5b6000613fe485828601613ceb565b9250506020613ff585828601613c58565b9150509250929050565b61400881614c50565b82525050565b61401781614c62565b82525050565b61402681614c6e565b82525050565b600061403782614af8565b6140418185614b0e565b9350614051818560208601614cdd565b61405a81614ed3565b840191505092915050565b600061407082614b03565b61407a8185614b1f565b935061408a818560208601614cdd565b61409381614ed3565b840191505092915050565b60006140a982614b03565b6140b38185614b30565b93506140c3818560208601614cdd565b80840191505092915050565b60006140dc602083614b1f565b91506140e782614ee4565b602082019050919050565b60006140ff602b83614b1f565b915061410a82614f0d565b604082019050919050565b6000614122601483614b1f565b915061412d82614f5c565b602082019050919050565b6000614145601383614b1f565b915061415082614f85565b602082019050919050565b6000614168602b83614b1f565b915061417382614fae565b604082019050919050565b600061418b603283614b1f565b915061419682614ffd565b604082019050919050565b60006141ae602683614b1f565b91506141b98261504c565b604082019050919050565b60006141d1601c83614b1f565b91506141dc8261509b565b602082019050919050565b60006141f4603e83614b1f565b91506141ff826150c4565b604082019050919050565b6000614217602483614b1f565b915061422282615113565b604082019050919050565b600061423a601983614b1f565b915061424582615162565b602082019050919050565b600061425d602c83614b1f565b91506142688261518b565b604082019050919050565b6000614280600883614b1f565b915061428b826151da565b602082019050919050565b60006142a3601083614b1f565b91506142ae82615203565b602082019050919050565b60006142c6603883614b1f565b91506142d18261522c565b604082019050919050565b60006142e9602a83614b1f565b91506142f48261527b565b604082019050919050565b600061430c602983614b1f565b9150614317826152ca565b604082019050919050565b600061432f601783614b1f565b915061433a82615319565b602082019050919050565b6000614352602083614b1f565b915061435d82615342565b602082019050919050565b6000614375602c83614b1f565b91506143808261536b565b604082019050919050565b6000614398602083614b1f565b91506143a3826153ba565b602082019050919050565b60006143bb602983614b1f565b91506143c6826153e3565b604082019050919050565b60006143de602f83614b1f565b91506143e982615432565b604082019050919050565b6000614401600983614b1f565b915061440c82615481565b602082019050919050565b6000614424602183614b1f565b915061442f826154aa565b604082019050919050565b6000614447603183614b1f565b9150614452826154f9565b604082019050919050565b600061446a602c83614b1f565b915061447582615548565b604082019050919050565b600061448d601783614b30565b915061449882615597565b601782019050919050565b60006144b0603d83614b1f565b91506144bb826155c0565b604082019050919050565b60006144d3603083614b1f565b91506144de8261560f565b604082019050919050565b60006144f6604083614b1f565b91506145018261565e565b604082019050919050565b6000614519601183614b30565b9150614524826156ad565b601182019050919050565b600061453c602f83614b1f565b9150614547826156d6565b604082019050919050565b61455b81614cc4565b82525050565b600061456d828561409e565b9150614579828461409e565b91508190509392505050565b600061459082614480565b915061459c828561409e565b91506145a78261450c565b91506145b3828461409e565b91508190509392505050565b60006020820190506145d46000830184613fff565b92915050565b60006080820190506145ef6000830187613fff565b6145fc6020830186613fff565b6146096040830185614552565b818103606083015261461b818461402c565b905095945050505050565b600060208201905061463b600083018461400e565b92915050565b6000602082019050614656600083018461401d565b92915050565b600060208201905081810360008301526146768184614065565b905092915050565b60006020820190508181036000830152614697816140cf565b9050919050565b600060208201905081810360008301526146b7816140f2565b9050919050565b600060208201905081810360008301526146d781614115565b9050919050565b600060208201905081810360008301526146f781614138565b9050919050565b600060208201905081810360008301526147178161415b565b9050919050565b600060208201905081810360008301526147378161417e565b9050919050565b60006020820190508181036000830152614757816141a1565b9050919050565b60006020820190508181036000830152614777816141c4565b9050919050565b60006020820190508181036000830152614797816141e7565b9050919050565b600060208201905081810360008301526147b78161420a565b9050919050565b600060208201905081810360008301526147d78161422d565b9050919050565b600060208201905081810360008301526147f781614250565b9050919050565b6000602082019050818103600083015261481781614273565b9050919050565b6000602082019050818103600083015261483781614296565b9050919050565b60006020820190508181036000830152614857816142b9565b9050919050565b60006020820190508181036000830152614877816142dc565b9050919050565b60006020820190508181036000830152614897816142ff565b9050919050565b600060208201905081810360008301526148b781614322565b9050919050565b600060208201905081810360008301526148d781614345565b9050919050565b600060208201905081810360008301526148f781614368565b9050919050565b600060208201905081810360008301526149178161438b565b9050919050565b60006020820190508181036000830152614937816143ae565b9050919050565b60006020820190508181036000830152614957816143d1565b9050919050565b60006020820190508181036000830152614977816143f4565b9050919050565b6000602082019050818103600083015261499781614417565b9050919050565b600060208201905081810360008301526149b78161443a565b9050919050565b600060208201905081810360008301526149d78161445d565b9050919050565b600060208201905081810360008301526149f7816144a3565b9050919050565b60006020820190508181036000830152614a17816144c6565b9050919050565b60006020820190508181036000830152614a37816144e9565b9050919050565b60006020820190508181036000830152614a578161452f565b9050919050565b6000602082019050614a736000830184614552565b92915050565b6000604082019050614a8e6000830185614552565b614a9b6020830184613fff565b9392505050565b6000614aac614abd565b9050614ab88282614d6c565b919050565b6000604051905090565b600067ffffffffffffffff821115614ae257614ae1614ea4565b5b614aeb82614ed3565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000614b4682614cc4565b9150614b5183614cc4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614b8657614b85614e17565b5b828201905092915050565b6000614b9c82614cc4565b9150614ba783614cc4565b925082614bb757614bb6614e46565b5b828204905092915050565b6000614bcd82614cc4565b9150614bd883614cc4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614c1157614c10614e17565b5b828202905092915050565b6000614c2782614cc4565b9150614c3283614cc4565b925082821015614c4557614c44614e17565b5b828203905092915050565b6000614c5b82614ca4565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015614cfb578082015181840152602081019050614ce0565b83811115614d0a576000848401525b50505050565b6000614d1b82614cc4565b91506000821415614d2f57614d2e614e17565b5b600182039050919050565b60006002820490506001821680614d5257607f821691505b60208210811415614d6657614d65614e75565b5b50919050565b614d7582614ed3565b810181811067ffffffffffffffff82111715614d9457614d93614ea4565b5b80604052505050565b6000614da882614cc4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614ddb57614dda614e17565b5b600182019050919050565b6000614df182614cc4565b9150614dfc83614cc4565b925082614e0c57614e0b614e46565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b7f4552433732315061757361626c653a20746f6b656e207472616e73666572207760008201527f68696c6520706175736564000000000000000000000000000000000000000000602082015250565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f73616c65206861736e2774207374617274656400000000000000000000000000600082015250565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732315072657365744d696e7465725061757365724175746f49643a2060008201527f6d75737420686176652070617573657220726f6c6520746f2070617573650000602082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f736f6c64206f7574000000000000000000000000000000000000000000000000600082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f7175616e746974792063616e6e6f74206265207a65726f000000000000000000600082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f6578636565647320330000000000000000000000000000000000000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b7f4552433732315072657365744d696e7465725061757365724175746f49643a2060008201527f6d7573742068617665206d696e74657220726f6c6520746f206d696e74000000602082015250565b7f4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656400000000000000000000000000000000602082015250565b7f4552433732315072657365744d696e7465725061757365724175746f49643a2060008201527f6d75737420686176652070617573657220726f6c6520746f20756e7061757365602082015250565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b61572e81614c50565b811461573957600080fd5b50565b61574581614c62565b811461575057600080fd5b50565b61575c81614c6e565b811461576757600080fd5b50565b61577381614c78565b811461577e57600080fd5b50565b61578a81614cc4565b811461579557600080fd5b5056fea2646970667358221220f4f57fddf4a9d42aa77f53891eda40d435ea46d105df6169404c6dbaab65bd3b64736f6c6343000804003368747470733a2f2f6e66742e6578616d706c65732e776f726b6572732e6465762f6e66742f",
893 | "deployedBytecode": "0x6080604052600436106102455760003560e01c80636a62784211610139578063a22cb465116100b6578063d53913931161007a578063d53913931461087e578063d547741f146108a9578063e63ab1e9146108d2578063e985e9c5146108fd578063f2fde38b1461093a578063f47c84c51461096357610245565b8063a22cb4651461079b578063b66a0e5d146107c4578063b88d4fde146107db578063c87b56dd14610804578063ca15c8731461084157610245565b80639010d07c116100fd5780639010d07c146106af57806391d14854146106ec57806395d89b4114610729578063a140ae2314610754578063a217fddf1461077057610245565b80636a627842146105f057806370a0823114610619578063715018a6146106565780638456cb591461066d5780638da5cb5b1461068457610245565b80632f2ff15d116101c757806342966c681161018b57806342966c681461050b5780634f6ccce71461053457806355367ba9146105715780635c975abb146105885780636352211e146105b357610245565b80632f2ff15d1461043c5780632f745c591461046557806336568abe146104a25780633f4ba83a146104cb57806342842e0e146104e257610245565b8063095ea7b31161020e578063095ea7b31461035757806318160ddd146103805780631c8b232d146103ab57806323b872dd146103d6578063248a9ca3146103ff57610245565b8062923f9e1461024a57806301ffc9a71461028757806303824f76146102c457806306fdde03146102ef578063081812fc1461031a575b600080fd5b34801561025657600080fd5b50610271600480360381019061026c9190613f9a565b61098e565b60405161027e9190614626565b60405180910390f35b34801561029357600080fd5b506102ae60048036038101906102a99190613f48565b6109a0565b6040516102bb9190614626565b60405180910390f35b3480156102d057600080fd5b506102d96109b2565b6040516102e69190614626565b60405180910390f35b3480156102fb57600080fd5b506103046109d5565b604051610311919061465c565b60405180910390f35b34801561032657600080fd5b50610341600480360381019061033c9190613f9a565b610a67565b60405161034e91906145bf565b60405180910390f35b34801561036357600080fd5b5061037e60048036038101906103799190613e6b565b610aec565b005b34801561038c57600080fd5b50610395610c04565b6040516103a29190614a5e565b60405180910390f35b3480156103b757600080fd5b506103c0610c11565b6040516103cd9190614626565b60405180910390f35b3480156103e257600080fd5b506103fd60048036038101906103f89190613d65565b610c24565b005b34801561040b57600080fd5b5061042660048036038101906104219190613ea7565b610c84565b6040516104339190614641565b60405180910390f35b34801561044857600080fd5b50610463600480360381019061045e9190613ed0565b610ca3565b005b34801561047157600080fd5b5061048c60048036038101906104879190613e6b565b610cd7565b6040516104999190614a5e565b60405180910390f35b3480156104ae57600080fd5b506104c960048036038101906104c49190613ed0565b610d7c565b005b3480156104d757600080fd5b506104e0610db0565b005b3480156104ee57600080fd5b5061050960048036038101906105049190613d65565b610e2a565b005b34801561051757600080fd5b50610532600480360381019061052d9190613f9a565b610e4a565b005b34801561054057600080fd5b5061055b60048036038101906105569190613f9a565b610ea6565b6040516105689190614a5e565b60405180910390f35b34801561057d57600080fd5b50610586610f3d565b005b34801561059457600080fd5b5061059d610fd6565b6040516105aa9190614626565b60405180910390f35b3480156105bf57600080fd5b506105da60048036038101906105d59190613f9a565b610fed565b6040516105e791906145bf565b60405180910390f35b3480156105fc57600080fd5b5061061760048036038101906106129190613d00565b61109f565b005b34801561062557600080fd5b50610640600480360381019061063b9190613d00565b61112f565b60405161064d9190614a5e565b60405180910390f35b34801561066257600080fd5b5061066b6111e7565b005b34801561067957600080fd5b5061068261126f565b005b34801561069057600080fd5b506106996112e9565b6040516106a691906145bf565b60405180910390f35b3480156106bb57600080fd5b506106d660048036038101906106d19190613f0c565b611313565b6040516106e391906145bf565b60405180910390f35b3480156106f857600080fd5b50610713600480360381019061070e9190613ed0565b611342565b6040516107209190614626565b60405180910390f35b34801561073557600080fd5b5061073e6113ac565b60405161074b919061465c565b60405180910390f35b61076e60048036038101906107699190613fc3565b61143e565b005b34801561077c57600080fd5b5061078561165f565b6040516107929190614641565b60405180910390f35b3480156107a757600080fd5b506107c260048036038101906107bd9190613e2f565b611666565b005b3480156107d057600080fd5b506107d96117e7565b005b3480156107e757600080fd5b5061080260048036038101906107fd9190613db4565b611880565b005b34801561081057600080fd5b5061082b60048036038101906108269190613f9a565b6118e2565b604051610838919061465c565b60405180910390f35b34801561084d57600080fd5b5061086860048036038101906108639190613ea7565b611989565b6040516108759190614a5e565b60405180910390f35b34801561088a57600080fd5b506108936119ad565b6040516108a09190614641565b60405180910390f35b3480156108b557600080fd5b506108d060048036038101906108cb9190613ed0565b6119d1565b005b3480156108de57600080fd5b506108e7611a05565b6040516108f49190614641565b60405180910390f35b34801561090957600080fd5b50610924600480360381019061091f9190613d29565b611a29565b6040516109319190614626565b60405180910390f35b34801561094657600080fd5b50610961600480360381019061095c9190613d00565b611a8f565b005b34801561096f57600080fd5b50610978611b87565b6040516109859190614a5e565b60405180910390f35b600061099982611c7c565b9050919050565b60006109ab82611ce8565b9050919050565b60006108006109bf610c04565b106109cd57600190506109d2565b600090505b90565b6060600280546109e490614d3a565b80601f0160208091040260200160405190810160405280929190818152602001828054610a1090614d3a565b8015610a5d5780601f10610a3257610100808354040283529160200191610a5d565b820191906000526020600020905b815481529060010190602001808311610a4057829003601f168201915b5050505050905090565b6000610a7282611c7c565b610ab1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa8906148de565b60405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610af782610fed565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610b68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5f9061497e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610b87611d62565b73ffffffffffffffffffffffffffffffffffffffff161480610bb65750610bb581610bb0611d62565b611a29565b5b610bf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bec9061483e565b60405180910390fd5b610bff8383611d71565b505050565b6000600a80549050905090565b600f60149054906101000a900460ff1681565b610c35610c2f611d62565b82611e2a565b610c74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6b9061499e565b60405180910390fd5b610c7f838383611f08565b505050565b6000806000838152602001908152602001600020600101549050919050565b610cad8282612164565b610cd28160016000858152602001908152602001600020611c4c90919063ffffffff16565b505050565b6000610ce28361112f565b8210610d23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1a906146fe565b60405180910390fd5b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610d86828261218d565b610dab816001600085815260200190815260200160002061221090919063ffffffff16565b505050565b610de17f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610ddc611d62565b611342565b610e20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1790614a1e565b60405180910390fd5b610e28612240565b565b610e4583838360405180602001604052806000815250611880565b505050565b610e5b610e55611d62565b82611e2a565b610e9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e91906149fe565b60405180910390fd5b610ea3816122e2565b50565b6000610eb0610c04565b8210610ef1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee8906149be565b60405180910390fd5b600a8281548110610f2b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050919050565b610f45611d62565b73ffffffffffffffffffffffffffffffffffffffff16610f636112e9565b73ffffffffffffffffffffffffffffffffffffffff1614610fb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb0906148fe565b60405180910390fd5b6000600f60146101000a81548160ff021916908315150217905550565b6000600c60009054906101000a900460ff16905090565b6000806004600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611096576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108d9061487e565b60405180910390fd5b80915050919050565b6110d07f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66110cb611d62565b611342565b61110f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611106906149de565b60405180910390fd5b6111228161111d600d6123f3565b612401565b61112c600d6125cf565b50565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111979061485e565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6111ef611d62565b73ffffffffffffffffffffffffffffffffffffffff1661120d6112e9565b73ffffffffffffffffffffffffffffffffffffffff1614611263576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125a906148fe565b60405180910390fd5b61126d60006125e5565b565b6112a07f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61129b611d62565b611342565b6112df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d69061477e565b60405180910390fd5b6112e76126ab565b565b6000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600061133a826001600086815260200190815260200160002061274e90919063ffffffff16565b905092915050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6060600380546113bb90614d3a565b80601f01602080910402602001604051908101604052809291908181526020018280546113e790614d3a565b80156114345780601f1061140957610100808354040283529160200191611434565b820191906000526020600020905b81548152906001019060200180831161141757829003601f168201915b5050505050905090565b600f60149054906101000a900460ff168061148b575061145c6112e9565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6114ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c1906146de565b60405180910390fd5b6000821161150d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115049061489e565b60405180910390fd5b6003821115611551576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115489061495e565b60405180910390fd5b61080061156e83611560610c04565b61276890919063ffffffff16565b1115806115ad575061157e6112e9565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6115ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e3906147fe565b60405180910390fd5b60005b8281101561165a576000611601610c04565b905061160d838261277e565b7fb9203d657e9c0ec8274c818292ab0f58b04e1970050716891770eb1bab5d655e818460405161163e929190614a79565b60405180910390a150808061165290614d9d565b9150506115ef565b505050565b6000801b81565b61166e611d62565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d3906147be565b60405180910390fd5b80600760006116e9611d62565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611796611d62565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516117db9190614626565b60405180910390a35050565b6117ef611d62565b73ffffffffffffffffffffffffffffffffffffffff1661180d6112e9565b73ffffffffffffffffffffffffffffffffffffffff1614611863576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185a906148fe565b60405180910390fd5b6001600f60146101000a81548160ff021916908315150217905550565b61189161188b611d62565b83611e2a565b6118d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c79061499e565b60405180910390fd5b6118dc8484848461279c565b50505050565b60606118ed82611c7c565b61192c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119239061493e565b60405180910390fd5b60006119366127f8565b905060008151116119565760405180602001604052806000815250611981565b806119608461288a565b604051602001611971929190614561565b6040516020818303038152906040525b915050919050565b60006119a660016000848152602001908152602001600020612a37565b9050919050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6119db8282612a4c565b611a00816001600085815260200190815260200160002061221090919063ffffffff16565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007358807bad0b376efc12f5ad86aac70e78ed67deae73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a7c5760019050611a89565b611a868383612a75565b90505b92915050565b611a97611d62565b73ffffffffffffffffffffffffffffffffffffffff16611ab56112e9565b73ffffffffffffffffffffffffffffffffffffffff1614611b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b02906148fe565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611b7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b729061473e565b60405180910390fd5b611b84816125e5565b50565b61080081565b60003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415611c3757600080368080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509050600080369050905073ffffffffffffffffffffffffffffffffffffffff818301511692505050611c3b565b3390505b90565b611c488282612b09565b5050565b6000611c74836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612be9565b905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff166004600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611d5b5750611d5a82612c59565b5b9050919050565b6000611d6c611b8d565b905090565b816006600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611de483610fed565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611e3582611c7c565b611e74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6b906147de565b60405180910390fd5b6000611e7f83610fed565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611eee57508373ffffffffffffffffffffffffffffffffffffffff16611ed684610a67565b73ffffffffffffffffffffffffffffffffffffffff16145b80611eff5750611efe8185611a29565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611f2882610fed565b73ffffffffffffffffffffffffffffffffffffffff1614611f7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f759061491e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611fee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe59061479e565b60405180910390fd5b611ff9838383612d3b565b612004600082611d71565b6001600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546120549190614c1c565b925050819055506001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546120ab9190614b3b565b92505081905550816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b61216d82610c84565b61217e81612179611d62565b612d4b565b6121888383612b09565b505050565b612195611d62565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612202576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f990614a3e565b60405180910390fd5b61220c8282612de8565b5050565b6000612238836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612ec9565b905092915050565b612248610fd6565b612287576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227e906146be565b60405180910390fd5b6000600c60006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6122cb611d62565b6040516122d891906145bf565b60405180910390a1565b60006122ed82610fed565b90506122fb81600084612d3b565b612306600083611d71565b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546123569190614c1c565b925050819055506004600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600081600001549050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612471576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612468906148be565b60405180910390fd5b61247a81611c7c565b156124ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b19061475e565b60405180910390fd5b6124c660008383612d3b565b6001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125169190614b3b565b92505081905550816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6001816000016000828254019250508190555050565b6000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6126b3610fd6565b156126f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ea9061481e565b60405180910390fd5b6001600c60006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612737611d62565b60405161274491906145bf565b60405180910390a1565b600061275d836000018361304f565b60001c905092915050565b600081836127769190614b3b565b905092915050565b6127988282604051806020016040528060008152506130a0565b5050565b6127a7848484611f08565b6127b3848484846130fb565b6127f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e99061471e565b60405180910390fd5b50505050565b6060600e805461280790614d3a565b80601f016020809104026020016040519081016040528092919081815260200182805461283390614d3a565b80156128805780601f1061285557610100808354040283529160200191612880565b820191906000526020600020905b81548152906001019060200180831161286357829003601f168201915b5050505050905090565b606060008214156128d2576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612a32565b600082905060005b600082146129045780806128ed90614d9d565b915050600a826128fd9190614b91565b91506128da565b60008167ffffffffffffffff811115612946577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156129785781602001600182028036833780820191505090505b5090505b60008514612a2b576001826129919190614c1c565b9150600a856129a09190614de6565b60306129ac9190614b3b565b60f81b8183815181106129e8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612a249190614b91565b945061297c565b8093505050505b919050565b6000612a4582600001613292565b9050919050565b612a5582610c84565b612a6681612a61611d62565b612d4b565b612a708383612de8565b505050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b612b138282611342565b612be557600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550612b8a611d62565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000612bf583836132a3565b612c4e578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050612c53565b600090505b92915050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612d2457507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80612d345750612d33826132c6565b5b9050919050565b612d46838383613340565b505050565b612d558282611342565b612de457612d7a8173ffffffffffffffffffffffffffffffffffffffff166014613398565b612d888360001c6020613398565b604051602001612d99929190614585565b6040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ddb919061465c565b60405180910390fd5b5050565b612df28282611342565b15612ec557600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550612e6a611d62565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b60008083600101600084815260200190815260200160002054905060008114613043576000600182612efb9190614c1c565b9050600060018660000180549050612f139190614c1c565b9050818114612fce576000866000018281548110612f5a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154905080876000018481548110612fa4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001819055508387600101600083815260200190815260200160002081905550505b85600001805480613008577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050613049565b60009150505b92915050565b600082600001828154811061308d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154905092915050565b6130aa8383612401565b6130b760008484846130fb565b6130f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130ed9061471e565b60405180910390fd5b505050565b600061311c8473ffffffffffffffffffffffffffffffffffffffff16613692565b15613285578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02613145611d62565b8786866040518563ffffffff1660e01b815260040161316794939291906145da565b602060405180830381600087803b15801561318157600080fd5b505af19250505080156131b257506040513d601f19601f820116820180604052508101906131af9190613f71565b60015b613235573d80600081146131e2576040519150601f19603f3d011682016040523d82523d6000602084013e6131e7565b606091505b5060008151141561322d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132249061471e565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505061328a565b600190505b949350505050565b600081600001805490509050919050565b600080836001016000848152602001908152602001600020541415905092915050565b60007f5a05180f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806133395750613338826136a5565b5b9050919050565b61334b83838361371f565b613353610fd6565b15613393576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161338a9061469e565b60405180910390fd5b505050565b6060600060028360026133ab9190614bc2565b6133b59190614b3b565b67ffffffffffffffff8111156133f4577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156134265781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110613484577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061350e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000600184600261354e9190614bc2565b6135589190614b3b565b90505b6001811115613644577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106135c0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b1a60f81b8282815181106135fd577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c94508061363d90614d10565b905061355b565b5060008414613688576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161367f9061467e565b60405180910390fd5b8091505092915050565b600080823b905060008111915050919050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480613718575061371782613833565b5b9050919050565b61372a83838361389d565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561376d57613768816138a2565b6137ac565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146137ab576137aa83826138eb565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156137ef576137ea81613a58565b61382e565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461382d5761382c8282613b9b565b5b5b505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b505050565b600a80549050600b600083815260200190815260200160002081905550600a81908060018154018082558091505060019003906000526020600020016000909190919091505550565b600060016138f88461112f565b6139029190614c1c565b90506000600960008481526020019081526020016000205490508181146139e7576000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816009600083815260200190815260200160002081905550505b6009600084815260200190815260200160002060009055600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b60006001600a80549050613a6c9190614c1c565b90506000600b60008481526020019081526020016000205490506000600a8381548110613ac2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154905080600a8381548110613b0a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020018190555081600b600083815260200190815260200160002081905550600b600085815260200190815260200160002060009055600a805480613b7f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b6000613ba68361112f565b905081600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806009600084815260200190815260200160002081905550505050565b6000613c2d613c2884614ac7565b614aa2565b905082815260208101848484011115613c4557600080fd5b613c50848285614cce565b509392505050565b600081359050613c6781615725565b92915050565b600081359050613c7c8161573c565b92915050565b600081359050613c9181615753565b92915050565b600081359050613ca68161576a565b92915050565b600081519050613cbb8161576a565b92915050565b600082601f830112613cd257600080fd5b8135613ce2848260208601613c1a565b91505092915050565b600081359050613cfa81615781565b92915050565b600060208284031215613d1257600080fd5b6000613d2084828501613c58565b91505092915050565b60008060408385031215613d3c57600080fd5b6000613d4a85828601613c58565b9250506020613d5b85828601613c58565b9150509250929050565b600080600060608486031215613d7a57600080fd5b6000613d8886828701613c58565b9350506020613d9986828701613c58565b9250506040613daa86828701613ceb565b9150509250925092565b60008060008060808587031215613dca57600080fd5b6000613dd887828801613c58565b9450506020613de987828801613c58565b9350506040613dfa87828801613ceb565b925050606085013567ffffffffffffffff811115613e1757600080fd5b613e2387828801613cc1565b91505092959194509250565b60008060408385031215613e4257600080fd5b6000613e5085828601613c58565b9250506020613e6185828601613c6d565b9150509250929050565b60008060408385031215613e7e57600080fd5b6000613e8c85828601613c58565b9250506020613e9d85828601613ceb565b9150509250929050565b600060208284031215613eb957600080fd5b6000613ec784828501613c82565b91505092915050565b60008060408385031215613ee357600080fd5b6000613ef185828601613c82565b9250506020613f0285828601613c58565b9150509250929050565b60008060408385031215613f1f57600080fd5b6000613f2d85828601613c82565b9250506020613f3e85828601613ceb565b9150509250929050565b600060208284031215613f5a57600080fd5b6000613f6884828501613c97565b91505092915050565b600060208284031215613f8357600080fd5b6000613f9184828501613cac565b91505092915050565b600060208284031215613fac57600080fd5b6000613fba84828501613ceb565b91505092915050565b60008060408385031215613fd657600080fd5b6000613fe485828601613ceb565b9250506020613ff585828601613c58565b9150509250929050565b61400881614c50565b82525050565b61401781614c62565b82525050565b61402681614c6e565b82525050565b600061403782614af8565b6140418185614b0e565b9350614051818560208601614cdd565b61405a81614ed3565b840191505092915050565b600061407082614b03565b61407a8185614b1f565b935061408a818560208601614cdd565b61409381614ed3565b840191505092915050565b60006140a982614b03565b6140b38185614b30565b93506140c3818560208601614cdd565b80840191505092915050565b60006140dc602083614b1f565b91506140e782614ee4565b602082019050919050565b60006140ff602b83614b1f565b915061410a82614f0d565b604082019050919050565b6000614122601483614b1f565b915061412d82614f5c565b602082019050919050565b6000614145601383614b1f565b915061415082614f85565b602082019050919050565b6000614168602b83614b1f565b915061417382614fae565b604082019050919050565b600061418b603283614b1f565b915061419682614ffd565b604082019050919050565b60006141ae602683614b1f565b91506141b98261504c565b604082019050919050565b60006141d1601c83614b1f565b91506141dc8261509b565b602082019050919050565b60006141f4603e83614b1f565b91506141ff826150c4565b604082019050919050565b6000614217602483614b1f565b915061422282615113565b604082019050919050565b600061423a601983614b1f565b915061424582615162565b602082019050919050565b600061425d602c83614b1f565b91506142688261518b565b604082019050919050565b6000614280600883614b1f565b915061428b826151da565b602082019050919050565b60006142a3601083614b1f565b91506142ae82615203565b602082019050919050565b60006142c6603883614b1f565b91506142d18261522c565b604082019050919050565b60006142e9602a83614b1f565b91506142f48261527b565b604082019050919050565b600061430c602983614b1f565b9150614317826152ca565b604082019050919050565b600061432f601783614b1f565b915061433a82615319565b602082019050919050565b6000614352602083614b1f565b915061435d82615342565b602082019050919050565b6000614375602c83614b1f565b91506143808261536b565b604082019050919050565b6000614398602083614b1f565b91506143a3826153ba565b602082019050919050565b60006143bb602983614b1f565b91506143c6826153e3565b604082019050919050565b60006143de602f83614b1f565b91506143e982615432565b604082019050919050565b6000614401600983614b1f565b915061440c82615481565b602082019050919050565b6000614424602183614b1f565b915061442f826154aa565b604082019050919050565b6000614447603183614b1f565b9150614452826154f9565b604082019050919050565b600061446a602c83614b1f565b915061447582615548565b604082019050919050565b600061448d601783614b30565b915061449882615597565b601782019050919050565b60006144b0603d83614b1f565b91506144bb826155c0565b604082019050919050565b60006144d3603083614b1f565b91506144de8261560f565b604082019050919050565b60006144f6604083614b1f565b91506145018261565e565b604082019050919050565b6000614519601183614b30565b9150614524826156ad565b601182019050919050565b600061453c602f83614b1f565b9150614547826156d6565b604082019050919050565b61455b81614cc4565b82525050565b600061456d828561409e565b9150614579828461409e565b91508190509392505050565b600061459082614480565b915061459c828561409e565b91506145a78261450c565b91506145b3828461409e565b91508190509392505050565b60006020820190506145d46000830184613fff565b92915050565b60006080820190506145ef6000830187613fff565b6145fc6020830186613fff565b6146096040830185614552565b818103606083015261461b818461402c565b905095945050505050565b600060208201905061463b600083018461400e565b92915050565b6000602082019050614656600083018461401d565b92915050565b600060208201905081810360008301526146768184614065565b905092915050565b60006020820190508181036000830152614697816140cf565b9050919050565b600060208201905081810360008301526146b7816140f2565b9050919050565b600060208201905081810360008301526146d781614115565b9050919050565b600060208201905081810360008301526146f781614138565b9050919050565b600060208201905081810360008301526147178161415b565b9050919050565b600060208201905081810360008301526147378161417e565b9050919050565b60006020820190508181036000830152614757816141a1565b9050919050565b60006020820190508181036000830152614777816141c4565b9050919050565b60006020820190508181036000830152614797816141e7565b9050919050565b600060208201905081810360008301526147b78161420a565b9050919050565b600060208201905081810360008301526147d78161422d565b9050919050565b600060208201905081810360008301526147f781614250565b9050919050565b6000602082019050818103600083015261481781614273565b9050919050565b6000602082019050818103600083015261483781614296565b9050919050565b60006020820190508181036000830152614857816142b9565b9050919050565b60006020820190508181036000830152614877816142dc565b9050919050565b60006020820190508181036000830152614897816142ff565b9050919050565b600060208201905081810360008301526148b781614322565b9050919050565b600060208201905081810360008301526148d781614345565b9050919050565b600060208201905081810360008301526148f781614368565b9050919050565b600060208201905081810360008301526149178161438b565b9050919050565b60006020820190508181036000830152614937816143ae565b9050919050565b60006020820190508181036000830152614957816143d1565b9050919050565b60006020820190508181036000830152614977816143f4565b9050919050565b6000602082019050818103600083015261499781614417565b9050919050565b600060208201905081810360008301526149b78161443a565b9050919050565b600060208201905081810360008301526149d78161445d565b9050919050565b600060208201905081810360008301526149f7816144a3565b9050919050565b60006020820190508181036000830152614a17816144c6565b9050919050565b60006020820190508181036000830152614a37816144e9565b9050919050565b60006020820190508181036000830152614a578161452f565b9050919050565b6000602082019050614a736000830184614552565b92915050565b6000604082019050614a8e6000830185614552565b614a9b6020830184613fff565b9392505050565b6000614aac614abd565b9050614ab88282614d6c565b919050565b6000604051905090565b600067ffffffffffffffff821115614ae257614ae1614ea4565b5b614aeb82614ed3565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000614b4682614cc4565b9150614b5183614cc4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614b8657614b85614e17565b5b828201905092915050565b6000614b9c82614cc4565b9150614ba783614cc4565b925082614bb757614bb6614e46565b5b828204905092915050565b6000614bcd82614cc4565b9150614bd883614cc4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614c1157614c10614e17565b5b828202905092915050565b6000614c2782614cc4565b9150614c3283614cc4565b925082821015614c4557614c44614e17565b5b828203905092915050565b6000614c5b82614ca4565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015614cfb578082015181840152602081019050614ce0565b83811115614d0a576000848401525b50505050565b6000614d1b82614cc4565b91506000821415614d2f57614d2e614e17565b5b600182039050919050565b60006002820490506001821680614d5257607f821691505b60208210811415614d6657614d65614e75565b5b50919050565b614d7582614ed3565b810181811067ffffffffffffffff82111715614d9457614d93614ea4565b5b80604052505050565b6000614da882614cc4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614ddb57614dda614e17565b5b600182019050919050565b6000614df182614cc4565b9150614dfc83614cc4565b925082614e0c57614e0b614e46565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b7f4552433732315061757361626c653a20746f6b656e207472616e73666572207760008201527f68696c6520706175736564000000000000000000000000000000000000000000602082015250565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f73616c65206861736e2774207374617274656400000000000000000000000000600082015250565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732315072657365744d696e7465725061757365724175746f49643a2060008201527f6d75737420686176652070617573657220726f6c6520746f2070617573650000602082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f736f6c64206f7574000000000000000000000000000000000000000000000000600082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f7175616e746974792063616e6e6f74206265207a65726f000000000000000000600082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f6578636565647320330000000000000000000000000000000000000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b7f4552433732315072657365744d696e7465725061757365724175746f49643a2060008201527f6d7573742068617665206d696e74657220726f6c6520746f206d696e74000000602082015250565b7f4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656400000000000000000000000000000000602082015250565b7f4552433732315072657365744d696e7465725061757365724175746f49643a2060008201527f6d75737420686176652070617573657220726f6c6520746f20756e7061757365602082015250565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b61572e81614c50565b811461573957600080fd5b50565b61574581614c62565b811461575057600080fd5b50565b61575c81614c6e565b811461576757600080fd5b50565b61577381614c78565b811461577e57600080fd5b50565b61578a81614cc4565b811461579557600080fd5b5056fea2646970667358221220f4f57fddf4a9d42aa77f53891eda40d435ea46d105df6169404c6dbaab65bd3b64736f6c63430008040033",
894 | "linkReferences": {},
895 | "deployedLinkReferences": {}
896 | }
897 |
--------------------------------------------------------------------------------