diff --git a/contracts/asset-proxy/package.json b/contracts/asset-proxy/package.json index 8af70ea480..b54a2f7381 100644 --- a/contracts/asset-proxy/package.json +++ b/contracts/asset-proxy/package.json @@ -51,13 +51,13 @@ }, "homepage": "https://github.com/0xProject/protocol/tree/main/contracts/protocol", "devDependencies": { - "@0x/abi-gen": "^5.4.12", + "@0x/abi-gen": "^5.4.13", "@0x/contract-wrappers": "^13.10.3", - "@0x/contracts-gen": "^2.0.23", + "@0x/contracts-gen": "^2.0.24", "@0x/contracts-test-utils": "^5.3.14", "@0x/contracts-utils": "^4.6.2", - "@0x/dev-utils": "^4.1.2", - "@0x/sol-compiler": "^4.4.0", + "@0x/dev-utils": "^4.1.3", + "@0x/sol-compiler": "^4.4.1", "@0x/ts-doc-gen": "^0.0.28", "@0x/tslint-config": "^4.1.3", "@types/lodash": "4.14.104", @@ -79,7 +79,7 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/base-contract": "^6.2.13", + "@0x/base-contract": "^6.2.14", "@0x/contracts-erc1155": "^2.1.17", "@0x/contracts-erc20": "^3.2.11", "@0x/contracts-erc721": "^3.1.17", @@ -88,7 +88,7 @@ "@0x/types": "^3.3.1", "@0x/typescript-typings": "^5.1.6", "@0x/utils": "^6.1.1", - "@0x/web3-wrapper": "^7.2.10", + "@0x/web3-wrapper": "^7.3.0", "ethereum-types": "^3.4.0", "lodash": "^4.17.11" }, diff --git a/contracts/broker/package.json b/contracts/broker/package.json index 4c3f80751c..1ba04abcb6 100644 --- a/contracts/broker/package.json +++ b/contracts/broker/package.json @@ -51,20 +51,20 @@ }, "homepage": "https://github.com/0xProject/protocol/tree/main/contracts/extensions", "devDependencies": { - "@0x/abi-gen": "^5.4.12", + "@0x/abi-gen": "^5.4.13", "@0x/contracts-asset-proxy": "^3.6.8", "@0x/contracts-erc20": "^3.2.11", "@0x/contracts-erc721": "^3.1.17", "@0x/contracts-exchange": "^3.2.17", "@0x/contracts-exchange-libs": "^4.3.17", - "@0x/contracts-gen": "^2.0.23", + "@0x/contracts-gen": "^2.0.24", "@0x/contracts-test-utils": "^5.3.14", "@0x/contracts-utils": "^4.6.2", - "@0x/sol-compiler": "^4.4.0", + "@0x/sol-compiler": "^4.4.1", "@0x/ts-doc-gen": "^0.0.28", "@0x/tslint-config": "^4.1.3", "@0x/types": "^3.3.1", - "@0x/web3-wrapper": "^7.2.10", + "@0x/web3-wrapper": "^7.3.0", "@types/lodash": "4.14.104", "@types/mocha": "^5.2.7", "@types/node": "12.12.54", @@ -84,7 +84,7 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/base-contract": "^6.2.13", + "@0x/base-contract": "^6.2.14", "@0x/order-utils": "^10.4.9", "@0x/typescript-typings": "^5.1.6", "@0x/utils": "^6.1.1", diff --git a/contracts/coordinator/package.json b/contracts/coordinator/package.json index c20f6687b1..ed064fffbd 100644 --- a/contracts/coordinator/package.json +++ b/contracts/coordinator/package.json @@ -52,17 +52,17 @@ }, "homepage": "https://github.com/0xProject/protocol/tree/main/contracts/extensions", "devDependencies": { - "@0x/abi-gen": "^5.4.12", + "@0x/abi-gen": "^5.4.13", "@0x/contracts-asset-proxy": "^3.6.8", "@0x/contracts-dev-utils": "^1.3.15", "@0x/contracts-erc20": "^3.2.11", - "@0x/contracts-gen": "^2.0.23", - "@0x/dev-utils": "^4.1.2", + "@0x/contracts-gen": "^2.0.24", + "@0x/dev-utils": "^4.1.3", "@0x/order-utils": "^10.4.9", - "@0x/sol-compiler": "^4.4.0", + "@0x/sol-compiler": "^4.4.1", "@0x/ts-doc-gen": "^0.0.28", "@0x/tslint-config": "^4.1.3", - "@0x/web3-wrapper": "^7.2.10", + "@0x/web3-wrapper": "^7.3.0", "@types/lodash": "4.14.104", "@types/mocha": "^5.2.7", "@types/node": "12.12.54", @@ -83,7 +83,7 @@ }, "dependencies": { "@0x/assert": "^3.0.19", - "@0x/base-contract": "^6.2.13", + "@0x/base-contract": "^6.2.14", "@0x/contract-addresses": "^5.6.0", "@0x/contracts-exchange": "^3.2.17", "@0x/contracts-test-utils": "^5.3.14", diff --git a/contracts/dev-utils/package.json b/contracts/dev-utils/package.json index 464e4de68f..7c93a7e59f 100644 --- a/contracts/dev-utils/package.json +++ b/contracts/dev-utils/package.json @@ -41,13 +41,13 @@ }, "homepage": "https://github.com/0xProject/protocol/tree/main/contracts/dev-utils", "devDependencies": { - "@0x/abi-gen": "^5.4.12", + "@0x/abi-gen": "^5.4.13", "@0x/assert": "^3.0.19", "@0x/contracts-asset-proxy": "^3.6.8", "@0x/contracts-erc20": "^3.2.11", - "@0x/contracts-gen": "^2.0.23", + "@0x/contracts-gen": "^2.0.24", "@0x/contracts-test-utils": "^5.3.14", - "@0x/sol-compiler": "^4.4.0", + "@0x/sol-compiler": "^4.4.1", "@0x/ts-doc-gen": "^0.0.28", "@0x/tslint-config": "^4.1.3", "@0x/types": "^3.3.1", @@ -63,7 +63,7 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/base-contract": "^6.2.13", + "@0x/base-contract": "^6.2.14", "@types/node": "12.12.54" }, "publishConfig": { diff --git a/contracts/erc1155/package.json b/contracts/erc1155/package.json index 4d8cd5c8d6..c8f13fee2e 100644 --- a/contracts/erc1155/package.json +++ b/contracts/erc1155/package.json @@ -52,11 +52,11 @@ }, "homepage": "https://github.com/0xProject/protocol/tree/main/contracts/tokens", "devDependencies": { - "@0x/abi-gen": "^5.4.12", - "@0x/contracts-gen": "^2.0.23", + "@0x/abi-gen": "^5.4.13", + "@0x/contracts-gen": "^2.0.24", "@0x/contracts-utils": "^4.6.2", - "@0x/dev-utils": "^4.1.2", - "@0x/sol-compiler": "^4.4.0", + "@0x/dev-utils": "^4.1.3", + "@0x/sol-compiler": "^4.4.1", "@0x/ts-doc-gen": "^0.0.28", "@0x/tslint-config": "^4.1.3", "@0x/types": "^3.3.1", @@ -80,10 +80,10 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/base-contract": "^6.2.13", + "@0x/base-contract": "^6.2.14", "@0x/contracts-test-utils": "^5.3.14", "@0x/utils": "^6.1.1", - "@0x/web3-wrapper": "^7.2.10", + "@0x/web3-wrapper": "^7.3.0", "lodash": "^4.17.11" }, "publishConfig": { diff --git a/contracts/erc20/package.json b/contracts/erc20/package.json index 9ef296538e..e92407ccca 100644 --- a/contracts/erc20/package.json +++ b/contracts/erc20/package.json @@ -51,18 +51,18 @@ }, "homepage": "https://github.com/0xProject/protocol/tree/main/contracts/tokens", "devDependencies": { - "@0x/abi-gen": "^5.4.12", - "@0x/contracts-gen": "^2.0.23", + "@0x/abi-gen": "^5.4.13", + "@0x/contracts-gen": "^2.0.24", "@0x/contracts-test-utils": "^5.3.14", "@0x/contracts-utils": "^4.6.2", - "@0x/dev-utils": "^4.1.2", - "@0x/sol-compiler": "^4.4.0", + "@0x/dev-utils": "^4.1.3", + "@0x/sol-compiler": "^4.4.1", "@0x/ts-doc-gen": "^0.0.28", "@0x/tslint-config": "^4.1.3", "@0x/types": "^3.3.1", "@0x/typescript-typings": "^5.1.6", "@0x/utils": "^6.1.1", - "@0x/web3-wrapper": "^7.2.10", + "@0x/web3-wrapper": "^7.3.0", "@types/lodash": "4.14.104", "@types/mocha": "^5.2.7", "@types/node": "12.12.54", @@ -82,7 +82,7 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/base-contract": "^6.2.13" + "@0x/base-contract": "^6.2.14" }, "publishConfig": { "access": "public" diff --git a/contracts/erc721/package.json b/contracts/erc721/package.json index d8968f5149..c17e634475 100644 --- a/contracts/erc721/package.json +++ b/contracts/erc721/package.json @@ -52,18 +52,18 @@ }, "homepage": "https://github.com/0xProject/protocol/tree/main/contracts/tokens", "devDependencies": { - "@0x/abi-gen": "^5.4.12", - "@0x/contracts-gen": "^2.0.23", + "@0x/abi-gen": "^5.4.13", + "@0x/contracts-gen": "^2.0.24", "@0x/contracts-test-utils": "^5.3.14", "@0x/contracts-utils": "^4.6.2", - "@0x/dev-utils": "^4.1.2", - "@0x/sol-compiler": "^4.4.0", + "@0x/dev-utils": "^4.1.3", + "@0x/sol-compiler": "^4.4.1", "@0x/ts-doc-gen": "^0.0.28", "@0x/tslint-config": "^4.1.3", "@0x/types": "^3.3.1", "@0x/typescript-typings": "^5.1.6", "@0x/utils": "^6.1.1", - "@0x/web3-wrapper": "^7.2.10", + "@0x/web3-wrapper": "^7.3.0", "@types/lodash": "4.14.104", "@types/mocha": "^5.2.7", "@types/node": "12.12.54", @@ -84,7 +84,7 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/base-contract": "^6.2.13" + "@0x/base-contract": "^6.2.14" }, "publishConfig": { "access": "public" diff --git a/contracts/exchange-forwarder/package.json b/contracts/exchange-forwarder/package.json index 594cb17499..cb540231ee 100644 --- a/contracts/exchange-forwarder/package.json +++ b/contracts/exchange-forwarder/package.json @@ -52,7 +52,7 @@ }, "homepage": "https://github.com/0xProject/protocol/tree/main/contracts/extensions", "devDependencies": { - "@0x/abi-gen": "^5.4.12", + "@0x/abi-gen": "^5.4.13", "@0x/contracts-asset-proxy": "^3.6.8", "@0x/contracts-dev-utils": "^1.3.15", "@0x/contracts-erc1155": "^2.1.17", @@ -60,17 +60,17 @@ "@0x/contracts-erc721": "^3.1.17", "@0x/contracts-exchange": "^3.2.17", "@0x/contracts-exchange-libs": "^4.3.17", - "@0x/contracts-gen": "^2.0.23", + "@0x/contracts-gen": "^2.0.24", "@0x/contracts-test-utils": "^5.3.14", "@0x/contracts-utils": "^4.6.2", - "@0x/dev-utils": "^4.1.2", + "@0x/dev-utils": "^4.1.3", "@0x/order-utils": "^10.4.9", - "@0x/sol-compiler": "^4.4.0", + "@0x/sol-compiler": "^4.4.1", "@0x/ts-doc-gen": "^0.0.28", "@0x/tslint-config": "^4.1.3", "@0x/types": "^3.3.1", "@0x/utils": "^6.1.1", - "@0x/web3-wrapper": "^7.2.10", + "@0x/web3-wrapper": "^7.3.0", "@types/lodash": "4.14.104", "@types/mocha": "^5.2.7", "@types/node": "12.12.54", @@ -90,7 +90,7 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/base-contract": "^6.2.13", + "@0x/base-contract": "^6.2.14", "@0x/typescript-typings": "^5.1.6", "ethereum-types": "^3.4.0" }, diff --git a/contracts/exchange-libs/package.json b/contracts/exchange-libs/package.json index dae6691591..fc9b8aa361 100644 --- a/contracts/exchange-libs/package.json +++ b/contracts/exchange-libs/package.json @@ -52,14 +52,14 @@ }, "homepage": "https://github.com/0xProject/protocol/tree/main/contracts/libs", "devDependencies": { - "@0x/abi-gen": "^5.4.12", - "@0x/contracts-gen": "^2.0.23", - "@0x/dev-utils": "^4.1.2", - "@0x/sol-compiler": "^4.4.0", - "@0x/subproviders": "^6.2.2", + "@0x/abi-gen": "^5.4.13", + "@0x/contracts-gen": "^2.0.24", + "@0x/dev-utils": "^4.1.3", + "@0x/sol-compiler": "^4.4.1", + "@0x/subproviders": "^6.2.3", "@0x/ts-doc-gen": "^0.0.28", "@0x/tslint-config": "^4.1.3", - "@0x/web3-wrapper": "^7.2.10", + "@0x/web3-wrapper": "^7.3.0", "@types/lodash": "4.14.104", "@types/mocha": "^5.2.7", "@types/node": "12.12.54", @@ -80,7 +80,7 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/base-contract": "^6.2.13", + "@0x/base-contract": "^6.2.14", "@0x/contracts-test-utils": "^5.3.14", "@0x/contracts-utils": "^4.6.2", "@0x/order-utils": "^10.4.9", diff --git a/contracts/exchange/package.json b/contracts/exchange/package.json index d2fde6c95c..353da3d68b 100644 --- a/contracts/exchange/package.json +++ b/contracts/exchange/package.json @@ -52,21 +52,21 @@ }, "homepage": "https://github.com/0xProject/protocol/tree/main/contracts/protocol", "devDependencies": { - "@0x/abi-gen": "^5.4.12", + "@0x/abi-gen": "^5.4.13", "@0x/contracts-asset-proxy": "^3.6.8", "@0x/contracts-exchange-libs": "^4.3.17", - "@0x/contracts-gen": "^2.0.23", + "@0x/contracts-gen": "^2.0.24", "@0x/contracts-multisig": "^4.1.17", "@0x/contracts-staking": "^2.0.24", "@0x/contracts-test-utils": "^5.3.14", "@0x/contracts-utils": "^4.6.2", - "@0x/dev-utils": "^4.1.2", - "@0x/sol-compiler": "^4.4.0", + "@0x/dev-utils": "^4.1.3", + "@0x/sol-compiler": "^4.4.1", "@0x/ts-doc-gen": "^0.0.28", "@0x/tslint-config": "^4.1.3", "@0x/types": "^3.3.1", "@0x/typescript-typings": "^5.1.6", - "@0x/web3-wrapper": "^7.2.10", + "@0x/web3-wrapper": "^7.3.0", "@types/lodash": "4.14.104", "@types/mocha": "^5.2.7", "@types/node": "12.12.54", @@ -88,7 +88,7 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/base-contract": "^6.2.13", + "@0x/base-contract": "^6.2.14", "@0x/contracts-dev-utils": "^1.3.15", "@0x/contracts-erc1155": "^2.1.17", "@0x/contracts-erc20": "^3.2.11", diff --git a/contracts/extensions/package.json b/contracts/extensions/package.json index 0768490ee5..aba4e66816 100644 --- a/contracts/extensions/package.json +++ b/contracts/extensions/package.json @@ -52,23 +52,23 @@ }, "homepage": "https://github.com/0xProject/protocol/tree/main/contracts/extensions", "devDependencies": { - "@0x/abi-gen": "^5.4.12", + "@0x/abi-gen": "^5.4.13", "@0x/contracts-asset-proxy": "^3.6.8", "@0x/contracts-dev-utils": "^1.3.15", "@0x/contracts-erc20": "^3.2.11", "@0x/contracts-erc721": "^3.1.17", "@0x/contracts-exchange": "^3.2.17", "@0x/contracts-exchange-libs": "^4.3.17", - "@0x/contracts-gen": "^2.0.23", + "@0x/contracts-gen": "^2.0.24", "@0x/contracts-utils": "^4.6.2", - "@0x/dev-utils": "^4.1.2", + "@0x/dev-utils": "^4.1.3", "@0x/order-utils": "^10.4.9", - "@0x/sol-compiler": "^4.4.0", + "@0x/sol-compiler": "^4.4.1", "@0x/ts-doc-gen": "^0.0.28", "@0x/tslint-config": "^4.1.3", "@0x/types": "^3.3.1", "@0x/utils": "^6.1.1", - "@0x/web3-wrapper": "^7.2.10", + "@0x/web3-wrapper": "^7.3.0", "@types/lodash": "4.14.104", "@types/mocha": "^5.2.7", "@types/node": "12.12.54", @@ -90,7 +90,7 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/base-contract": "^6.2.13", + "@0x/base-contract": "^6.2.14", "@0x/contracts-test-utils": "^5.3.14", "@0x/typescript-typings": "^5.1.6", "ethereum-types": "^3.4.0" diff --git a/contracts/integrations/package.json b/contracts/integrations/package.json index ef2f61b673..69d9d33ae6 100644 --- a/contracts/integrations/package.json +++ b/contracts/integrations/package.json @@ -52,7 +52,7 @@ }, "homepage": "https://github.com/0xProject/protocol/tree/main/contracts/extensions", "devDependencies": { - "@0x/abi-gen": "^5.4.12", + "@0x/abi-gen": "^5.4.13", "@0x/contract-addresses": "^5.6.0", "@0x/contract-wrappers": "^13.10.3", "@0x/contracts-broker": "^1.1.16", @@ -61,15 +61,16 @@ "@0x/contracts-exchange-forwarder": "^4.2.17", "@0x/contracts-exchange-libs": "^4.3.17", "@0x/contracts-extensions": "^6.2.11", - "@0x/contracts-gen": "^2.0.23", + "@0x/contracts-gen": "^2.0.24", "@0x/contracts-utils": "^4.6.2", "@0x/coordinator-server": "^1.0.5", - "@0x/dev-utils": "^4.1.2", + "@0x/dev-utils": "^4.1.3", "@0x/migrations": "^6.5.3", "@0x/order-utils": "^10.4.9", - "@0x/sol-compiler": "^4.4.0", + "@0x/protocol-utils": "^1.0.0", + "@0x/sol-compiler": "^4.4.1", "@0x/tslint-config": "^4.1.3", - "@0x/web3-wrapper": "^7.2.10", + "@0x/web3-wrapper": "^7.3.0", "@azure/core-asynciterator-polyfill": "^1.0.0", "@types/lodash": "4.14.104", "@types/mocha": "^5.2.7", @@ -93,7 +94,7 @@ }, "dependencies": { "@0x/asset-swapper": "^5.4.1", - "@0x/base-contract": "^6.2.13", + "@0x/base-contract": "^6.2.14", "@0x/contracts-asset-proxy": "^3.6.8", "@0x/contracts-erc1155": "^2.1.17", "@0x/contracts-erc20": "^3.2.11", @@ -103,7 +104,7 @@ "@0x/contracts-staking": "^2.0.24", "@0x/contracts-test-utils": "^5.3.14", "@0x/contracts-zero-ex": "^0.11.1", - "@0x/subproviders": "^6.2.2", + "@0x/subproviders": "^6.2.3", "@0x/types": "^3.3.1", "@0x/typescript-typings": "^5.1.6", "@0x/utils": "^6.1.1", diff --git a/contracts/integrations/test/exchange-proxy/mtx_test.ts b/contracts/integrations/test/exchange-proxy/mtx_test.ts index c74a10732c..98a3d287e6 100644 --- a/contracts/integrations/test/exchange-proxy/mtx_test.ts +++ b/contracts/integrations/test/exchange-proxy/mtx_test.ts @@ -6,19 +6,17 @@ import { artifacts as exchangeProxyArtifacts, IZeroExContract, LogMetadataTransformerContract, - Signature, } from '@0x/contracts-zero-ex'; import { migrateOnceAsync } from '@0x/migrations'; +import { assetDataUtils, signatureUtils, SignedExchangeProxyMetaTransaction } from '@0x/order-utils'; import { - assetDataUtils, encodeFillQuoteTransformerData, encodePayTakerTransformerData, ETH_TOKEN_ADDRESS, FillQuoteTransformerSide, findTransformerNonce, - signatureUtils, - SignedExchangeProxyMetaTransaction, -} from '@0x/order-utils'; + Signature, +} from '@0x/protocol-utils'; import { AssetProxyId, Order, SignedOrder } from '@0x/types'; import { BigNumber, hexUtils } from '@0x/utils'; import * as ethjs from 'ethereumjs-util'; diff --git a/contracts/multisig/package.json b/contracts/multisig/package.json index 140097398d..313728e5be 100644 --- a/contracts/multisig/package.json +++ b/contracts/multisig/package.json @@ -49,18 +49,18 @@ }, "homepage": "https://github.com/0xProject/protocol/tree/main/contracts/multisig", "devDependencies": { - "@0x/abi-gen": "^5.4.12", + "@0x/abi-gen": "^5.4.13", "@0x/contracts-asset-proxy": "^3.6.8", "@0x/contracts-erc20": "^3.2.11", - "@0x/contracts-gen": "^2.0.23", + "@0x/contracts-gen": "^2.0.24", "@0x/contracts-test-utils": "^5.3.14", "@0x/contracts-utils": "^4.6.2", - "@0x/dev-utils": "^4.1.2", - "@0x/sol-compiler": "^4.4.0", + "@0x/dev-utils": "^4.1.3", + "@0x/sol-compiler": "^4.4.1", "@0x/tslint-config": "^4.1.3", "@0x/types": "^3.3.1", "@0x/utils": "^6.1.1", - "@0x/web3-wrapper": "^7.2.10", + "@0x/web3-wrapper": "^7.3.0", "@types/lodash": "4.14.104", "@types/mocha": "^5.2.7", "@types/node": "12.12.54", @@ -78,7 +78,7 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/base-contract": "^6.2.13", + "@0x/base-contract": "^6.2.14", "@0x/typescript-typings": "^5.1.6", "ethereum-types": "^3.4.0" }, diff --git a/contracts/staking/package.json b/contracts/staking/package.json index 17a898eb39..4f4b26a200 100644 --- a/contracts/staking/package.json +++ b/contracts/staking/package.json @@ -53,20 +53,20 @@ }, "homepage": "https://github.com/0xProject/protocol/tree/main/contracts/tokens", "devDependencies": { - "@0x/abi-gen": "^5.4.12", + "@0x/abi-gen": "^5.4.13", "@0x/contracts-asset-proxy": "^3.6.8", "@0x/contracts-dev-utils": "^1.3.15", "@0x/contracts-erc20": "^3.2.11", "@0x/contracts-exchange-libs": "^4.3.17", - "@0x/contracts-gen": "^2.0.23", + "@0x/contracts-gen": "^2.0.24", "@0x/contracts-utils": "^4.6.2", - "@0x/dev-utils": "^4.1.2", + "@0x/dev-utils": "^4.1.3", "@0x/order-utils": "^10.4.9", - "@0x/sol-compiler": "^4.4.0", + "@0x/sol-compiler": "^4.4.1", "@0x/ts-doc-gen": "^0.0.28", "@0x/tslint-config": "^4.1.3", "@0x/types": "^3.3.1", - "@0x/web3-wrapper": "^7.2.10", + "@0x/web3-wrapper": "^7.3.0", "@types/lodash": "4.14.104", "@types/node": "12.12.54", "chai": "^4.0.1", @@ -87,7 +87,7 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/base-contract": "^6.2.13", + "@0x/base-contract": "^6.2.14", "@0x/contracts-test-utils": "^5.3.14", "@0x/typescript-typings": "^5.1.6", "@0x/utils": "^6.1.1", diff --git a/contracts/test-utils/package.json b/contracts/test-utils/package.json index 4aa9e84892..924f531c02 100644 --- a/contracts/test-utils/package.json +++ b/contracts/test-utils/package.json @@ -34,7 +34,7 @@ }, "homepage": "https://github.com/0xProject/protocol/tree/main/contracts/test-utils", "devDependencies": { - "@0x/sol-compiler": "^4.4.0", + "@0x/sol-compiler": "^4.4.1", "@0x/tslint-config": "^4.1.3", "npm-run-all": "^4.1.2", "shx": "^0.2.2", @@ -43,19 +43,19 @@ }, "dependencies": { "@0x/assert": "^3.0.19", - "@0x/base-contract": "^6.2.13", + "@0x/base-contract": "^6.2.14", "@0x/contract-addresses": "^5.6.0", - "@0x/dev-utils": "^4.1.2", + "@0x/dev-utils": "^4.1.3", "@0x/json-schemas": "^5.3.4", "@0x/order-utils": "^10.4.9", - "@0x/sol-coverage": "^4.0.23", - "@0x/sol-profiler": "^4.1.13", - "@0x/sol-trace": "^3.0.23", - "@0x/subproviders": "^6.2.2", + "@0x/sol-coverage": "^4.0.24", + "@0x/sol-profiler": "^4.1.14", + "@0x/sol-trace": "^3.0.24", + "@0x/subproviders": "^6.2.3", "@0x/types": "^3.3.1", "@0x/typescript-typings": "^5.1.6", "@0x/utils": "^6.1.1", - "@0x/web3-wrapper": "^7.2.10", + "@0x/web3-wrapper": "^7.3.0", "@types/bn.js": "^4.11.0", "@types/js-combinatorics": "^0.5.29", "@types/lodash": "4.14.104", diff --git a/contracts/utils/package.json b/contracts/utils/package.json index c17f696160..266139c856 100644 --- a/contracts/utils/package.json +++ b/contracts/utils/package.json @@ -50,15 +50,15 @@ }, "homepage": "https://github.com/0xProject/protocol/tree/main/contracts/utils", "devDependencies": { - "@0x/abi-gen": "^5.4.12", - "@0x/contracts-gen": "^2.0.23", + "@0x/abi-gen": "^5.4.13", + "@0x/contracts-gen": "^2.0.24", "@0x/contracts-test-utils": "^5.3.14", - "@0x/dev-utils": "^4.1.2", + "@0x/dev-utils": "^4.1.3", "@0x/order-utils": "^10.4.9", - "@0x/sol-compiler": "^4.4.0", + "@0x/sol-compiler": "^4.4.1", "@0x/tslint-config": "^4.1.3", "@0x/types": "^3.3.1", - "@0x/web3-wrapper": "^7.2.10", + "@0x/web3-wrapper": "^7.3.0", "@types/bn.js": "^4.11.0", "@types/lodash": "4.14.104", "@types/mocha": "^5.2.7", @@ -79,7 +79,7 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/base-contract": "^6.2.13", + "@0x/base-contract": "^6.2.14", "@0x/typescript-typings": "^5.1.6", "@0x/utils": "^6.1.1", "bn.js": "^4.11.8", diff --git a/contracts/zero-ex/CHANGELOG.json b/contracts/zero-ex/CHANGELOG.json index d62e2956c9..4c0ae83228 100644 --- a/contracts/zero-ex/CHANGELOG.json +++ b/contracts/zero-ex/CHANGELOG.json @@ -5,6 +5,10 @@ { "note": "Add test for selector collisions on the proxy", "pr": 74 + }, + { + "note": "Move tooling out into `@0x/protocol-utils`.", + "pr": 76 } ] }, diff --git a/contracts/zero-ex/package.json b/contracts/zero-ex/package.json index 4da9e2b93c..badfe65b8f 100644 --- a/contracts/zero-ex/package.json +++ b/contracts/zero-ex/package.json @@ -54,12 +54,12 @@ }, "homepage": "https://github.com/0xProject/protocol/tree/main/contracts/zero-ex", "devDependencies": { - "@0x/abi-gen": "^5.4.12", + "@0x/abi-gen": "^5.4.13", "@0x/contracts-erc20": "^3.2.11", - "@0x/contracts-gen": "^2.0.23", + "@0x/contracts-gen": "^2.0.24", "@0x/contracts-test-utils": "^5.3.14", - "@0x/dev-utils": "^4.1.2", - "@0x/sol-compiler": "^4.4.0", + "@0x/dev-utils": "^4.1.3", + "@0x/sol-compiler": "^4.4.1", "@0x/ts-doc-gen": "^0.0.28", "@0x/tslint-config": "^4.1.3", "@types/lodash": "4.14.104", @@ -75,13 +75,14 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/base-contract": "^6.2.13", + "@0x/base-contract": "^6.2.14", "@0x/order-utils": "^10.4.9", - "@0x/subproviders": "^6.2.2", + "@0x/protocol-utils": "^1.0.0", + "@0x/subproviders": "^6.2.3", "@0x/types": "^3.3.1", "@0x/typescript-typings": "^5.1.6", "@0x/utils": "^6.1.1", - "@0x/web3-wrapper": "^7.2.10", + "@0x/web3-wrapper": "^7.3.0", "ethereum-types": "^3.4.0", "ethereumjs-util": "^5.1.1" }, diff --git a/contracts/zero-ex/src/index.ts b/contracts/zero-ex/src/index.ts index 166f4e9e52..0cb9288c63 100644 --- a/contracts/zero-ex/src/index.ts +++ b/contracts/zero-ex/src/index.ts @@ -31,10 +31,6 @@ export { export { artifacts } from './artifacts'; export * from './migration'; export * from './nonce_utils'; -export * from './signature_utils'; -export * from './orders'; -export * from './eip712_utils'; -export * from './revert_errors'; export * from './bloom_filter_utils'; export { GREEDY_TOKENS } from './constants'; export { diff --git a/contracts/zero-ex/test/features/meta_transactions_test.ts b/contracts/zero-ex/test/features/meta_transactions_test.ts index 8501f51578..8ae5170ee4 100644 --- a/contracts/zero-ex/test/features/meta_transactions_test.ts +++ b/contracts/zero-ex/test/features/meta_transactions_test.ts @@ -7,11 +7,11 @@ import { verifyEventsFromLogs, } from '@0x/contracts-test-utils'; import { getExchangeProxyMetaTransactionHash, signatureUtils } from '@0x/order-utils'; +import { Signature } from '@0x/protocol-utils'; import { ExchangeProxyMetaTransaction } from '@0x/types'; import { BigNumber, hexUtils, StringRevertError, ZeroExRevertErrors } from '@0x/utils'; import * as _ from 'lodash'; -import { Signature } from '../../src/signature_utils'; import { IZeroExContract, MetaTransactionsFeatureContract } from '../../src/wrappers'; import { artifacts } from '../artifacts'; import { abis } from '../utils/abis'; diff --git a/contracts/zero-ex/test/features/native_orders_feature_test.ts b/contracts/zero-ex/test/features/native_orders_feature_test.ts index 332b08dbf1..b13bdba433 100644 --- a/contracts/zero-ex/test/features/native_orders_feature_test.ts +++ b/contracts/zero-ex/test/features/native_orders_feature_test.ts @@ -1,9 +1,16 @@ import { blockchainTests, constants, describe, expect, verifyEventsFromLogs } from '@0x/contracts-test-utils'; +import { + LimitOrder, + LimitOrderFields, + OrderInfo, + OrderStatus, + RevertErrors, + RfqOrder, + RfqOrderFields, +} from '@0x/protocol-utils'; import { AnyRevertError, BigNumber } from '@0x/utils'; import { TransactionReceiptWithDecodedLogs } from 'ethereum-types'; -import { LimitOrder, LimitOrderFields, OrderInfo, OrderStatus, RfqOrder, RfqOrderFields } from '../../src/orders'; -import * as RevertErrors from '../../src/revert_errors'; import { IZeroExContract, IZeroExEvents } from '../../src/wrappers'; import { artifacts } from '../artifacts'; import { fullMigrateAsync } from '../utils/migration'; @@ -446,7 +453,7 @@ blockchainTests.resets('NativeOrdersFeature', env => { const order = getTestLimitOrder(); const tx = zeroEx.cancelLimitOrder(order).awaitTransactionSuccessAsync({ from: notMaker }); return expect(tx).to.revertWith( - new RevertErrors.OnlyOrderMakerAllowed(order.getHash(), notMaker, order.maker), + new RevertErrors.NativeOrders.OnlyOrderMakerAllowed(order.getHash(), notMaker, order.maker), ); }); }); @@ -520,7 +527,7 @@ blockchainTests.resets('NativeOrdersFeature', env => { const order = getTestRfqOrder(); const tx = zeroEx.cancelRfqOrder(order).awaitTransactionSuccessAsync({ from: notMaker }); return expect(tx).to.revertWith( - new RevertErrors.OnlyOrderMakerAllowed(order.getHash(), notMaker, order.maker), + new RevertErrors.NativeOrders.OnlyOrderMakerAllowed(order.getHash(), notMaker, order.maker), ); }); }); @@ -542,7 +549,7 @@ blockchainTests.resets('NativeOrdersFeature', env => { const orders = [...new Array(3)].map(() => getTestLimitOrder()); const tx = zeroEx.batchCancelLimitOrders(orders).awaitTransactionSuccessAsync({ from: notMaker }); return expect(tx).to.revertWith( - new RevertErrors.OnlyOrderMakerAllowed(orders[0].getHash(), notMaker, orders[0].maker), + new RevertErrors.NativeOrders.OnlyOrderMakerAllowed(orders[0].getHash(), notMaker, orders[0].maker), ); }); }); @@ -564,7 +571,7 @@ blockchainTests.resets('NativeOrdersFeature', env => { const orders = [...new Array(3)].map(() => getTestRfqOrder()); const tx = zeroEx.batchCancelRfqOrders(orders).awaitTransactionSuccessAsync({ from: notMaker }); return expect(tx).to.revertWith( - new RevertErrors.OnlyOrderMakerAllowed(orders[0].getHash(), notMaker, orders[0].maker), + new RevertErrors.NativeOrders.OnlyOrderMakerAllowed(orders[0].getHash(), notMaker, orders[0].maker), ); }); }); @@ -925,7 +932,7 @@ blockchainTests.resets('NativeOrdersFeature', env => { const order = getTestLimitOrder({ expiry: createExpiry(-60) }); const tx = fillLimitOrderAsync(order); return expect(tx).to.revertWith( - new RevertErrors.OrderNotFillableError(order.getHash(), OrderStatus.Expired), + new RevertErrors.NativeOrders.OrderNotFillableError(order.getHash(), OrderStatus.Expired), ); }); @@ -934,7 +941,7 @@ blockchainTests.resets('NativeOrdersFeature', env => { await zeroEx.cancelLimitOrder(order).awaitTransactionSuccessAsync({ from: maker }); const tx = fillLimitOrderAsync(order); return expect(tx).to.revertWith( - new RevertErrors.OrderNotFillableError(order.getHash(), OrderStatus.Cancelled), + new RevertErrors.NativeOrders.OrderNotFillableError(order.getHash(), OrderStatus.Cancelled), ); }); @@ -945,7 +952,7 @@ blockchainTests.resets('NativeOrdersFeature', env => { .awaitTransactionSuccessAsync({ from: maker }); const tx = fillLimitOrderAsync(order); return expect(tx).to.revertWith( - new RevertErrors.OrderNotFillableError(order.getHash(), OrderStatus.Cancelled), + new RevertErrors.NativeOrders.OrderNotFillableError(order.getHash(), OrderStatus.Cancelled), ); }); @@ -953,7 +960,7 @@ blockchainTests.resets('NativeOrdersFeature', env => { const order = getTestLimitOrder({ taker }); const tx = fillLimitOrderAsync(order, { fillAmount: order.takerAmount, taker: notTaker }); return expect(tx).to.revertWith( - new RevertErrors.OrderNotFillableByTakerError(order.getHash(), notTaker, order.taker), + new RevertErrors.NativeOrders.OrderNotFillableByTakerError(order.getHash(), notTaker, order.taker), ); }); @@ -961,7 +968,7 @@ blockchainTests.resets('NativeOrdersFeature', env => { const order = getTestLimitOrder({ sender: taker }); const tx = fillLimitOrderAsync(order, { fillAmount: order.takerAmount, taker: notTaker }); return expect(tx).to.revertWith( - new RevertErrors.OrderNotFillableBySenderError(order.getHash(), notTaker, order.sender), + new RevertErrors.NativeOrders.OrderNotFillableBySenderError(order.getHash(), notTaker, order.sender), ); }); @@ -971,7 +978,7 @@ blockchainTests.resets('NativeOrdersFeature', env => { // signature. const tx = fillLimitOrderAsync(order.clone({ chainId: 1234 })); return expect(tx).to.revertWith( - new RevertErrors.OrderNotSignedByMakerError(order.getHash(), undefined, order.maker), + new RevertErrors.NativeOrders.OrderNotSignedByMakerError(order.getHash(), undefined, order.maker), ); }); @@ -1173,7 +1180,7 @@ blockchainTests.resets('NativeOrdersFeature', env => { const order = getTestRfqOrder(); const tx = fillRfqOrderAsync(order, order.takerAmount, notTaker); return expect(tx).to.revertWith( - new RevertErrors.OrderNotFillableByOriginError(order.getHash(), notTaker, taker), + new RevertErrors.NativeOrders.OrderNotFillableByOriginError(order.getHash(), notTaker, taker), ); }); @@ -1218,7 +1225,7 @@ blockchainTests.resets('NativeOrdersFeature', env => { const tx = fillRfqOrderAsync(order, order.takerAmount, notTaker); return expect(tx).to.revertWith( - new RevertErrors.OrderNotFillableByOriginError(order.getHash(), notTaker, taker), + new RevertErrors.NativeOrders.OrderNotFillableByOriginError(order.getHash(), notTaker, taker), ); }); @@ -1226,7 +1233,7 @@ blockchainTests.resets('NativeOrdersFeature', env => { const order = getTestRfqOrder({ txOrigin: NULL_ADDRESS }); const tx = fillRfqOrderAsync(order, order.takerAmount, notTaker); return expect(tx).to.revertWith( - new RevertErrors.OrderNotFillableError(order.getHash(), OrderStatus.Invalid), + new RevertErrors.NativeOrders.OrderNotFillableError(order.getHash(), OrderStatus.Invalid), ); }); @@ -1234,7 +1241,7 @@ blockchainTests.resets('NativeOrdersFeature', env => { const order = getTestRfqOrder({ taker, txOrigin: notTaker }); const tx = fillRfqOrderAsync(order, order.takerAmount, notTaker); return expect(tx).to.revertWith( - new RevertErrors.OrderNotFillableByTakerError(order.getHash(), notTaker, order.taker), + new RevertErrors.NativeOrders.OrderNotFillableByTakerError(order.getHash(), notTaker, order.taker), ); }); @@ -1242,7 +1249,7 @@ blockchainTests.resets('NativeOrdersFeature', env => { const order = getTestRfqOrder({ expiry: createExpiry(-60) }); const tx = fillRfqOrderAsync(order); return expect(tx).to.revertWith( - new RevertErrors.OrderNotFillableError(order.getHash(), OrderStatus.Expired), + new RevertErrors.NativeOrders.OrderNotFillableError(order.getHash(), OrderStatus.Expired), ); }); @@ -1251,7 +1258,7 @@ blockchainTests.resets('NativeOrdersFeature', env => { await zeroEx.cancelRfqOrder(order).awaitTransactionSuccessAsync({ from: maker }); const tx = fillRfqOrderAsync(order); return expect(tx).to.revertWith( - new RevertErrors.OrderNotFillableError(order.getHash(), OrderStatus.Cancelled), + new RevertErrors.NativeOrders.OrderNotFillableError(order.getHash(), OrderStatus.Cancelled), ); }); @@ -1262,7 +1269,7 @@ blockchainTests.resets('NativeOrdersFeature', env => { .awaitTransactionSuccessAsync({ from: maker }); const tx = fillRfqOrderAsync(order); return expect(tx).to.revertWith( - new RevertErrors.OrderNotFillableError(order.getHash(), OrderStatus.Cancelled), + new RevertErrors.NativeOrders.OrderNotFillableError(order.getHash(), OrderStatus.Cancelled), ); }); @@ -1272,7 +1279,7 @@ blockchainTests.resets('NativeOrdersFeature', env => { // signature. const tx = fillRfqOrderAsync(order.clone({ chainId: 1234 })); return expect(tx).to.revertWith( - new RevertErrors.OrderNotSignedByMakerError(order.getHash(), undefined, order.maker), + new RevertErrors.NativeOrders.OrderNotSignedByMakerError(order.getHash(), undefined, order.maker), ); }); @@ -1309,7 +1316,7 @@ blockchainTests.resets('NativeOrdersFeature', env => { .fillOrKillLimitOrder(order, await order.getSignatureWithProviderAsync(env.provider), fillAmount) .awaitTransactionSuccessAsync({ from: taker, value: SINGLE_PROTOCOL_FEE }); return expect(tx).to.revertWith( - new RevertErrors.FillOrKillFailedError(order.getHash(), order.takerAmount, fillAmount), + new RevertErrors.NativeOrders.FillOrKillFailedError(order.getHash(), order.takerAmount, fillAmount), ); }); @@ -1344,7 +1351,7 @@ blockchainTests.resets('NativeOrdersFeature', env => { .fillOrKillRfqOrder(order, await order.getSignatureWithProviderAsync(env.provider), fillAmount) .awaitTransactionSuccessAsync({ from: taker }); return expect(tx).to.revertWith( - new RevertErrors.FillOrKillFailedError(order.getHash(), order.takerAmount, fillAmount), + new RevertErrors.NativeOrders.FillOrKillFailedError(order.getHash(), order.takerAmount, fillAmount), ); }); diff --git a/contracts/zero-ex/test/features/transform_erc20_test.ts b/contracts/zero-ex/test/features/transform_erc20_test.ts index 2fa80a9fdc..499fd0e2ca 100644 --- a/contracts/zero-ex/test/features/transform_erc20_test.ts +++ b/contracts/zero-ex/test/features/transform_erc20_test.ts @@ -8,7 +8,7 @@ import { randomAddress, verifyEventsFromLogs, } from '@0x/contracts-test-utils'; -import { ETH_TOKEN_ADDRESS } from '@0x/order-utils'; +import { ETH_TOKEN_ADDRESS } from '@0x/protocol-utils'; import { AbiEncoder, hexUtils, OwnableRevertErrors, ZeroExRevertErrors } from '@0x/utils'; import * as ethjs from 'ethereumjs-util'; diff --git a/contracts/zero-ex/test/lib_signature_test.ts b/contracts/zero-ex/test/lib_signature_test.ts index f93df73b3f..fa68bb1177 100644 --- a/contracts/zero-ex/test/lib_signature_test.ts +++ b/contracts/zero-ex/test/lib_signature_test.ts @@ -2,8 +2,7 @@ import { blockchainTests, expect } from '@0x/contracts-test-utils'; import { hexUtils } from '@0x/utils'; import * as ethjs from 'ethereumjs-util'; -import { SignatureValidationError, SignatureValidationErrorCodes } from '../src/revert_errors'; -import { eip712SignHashWithKey, ethSignHashWithKey, SignatureType } from '../src/signature_utils'; +import { eip712SignHashWithKey, ethSignHashWithKey, RevertErrors, SignatureType } from '@0x/protocol-utils'; import { artifacts } from './artifacts'; import { TestLibSignatureContract } from './wrappers'; @@ -58,7 +57,10 @@ blockchainTests.resets('LibSignature library', env => { v: 1, }; return expect(testLib.getSignerOfHash(hash, sig).callAsync()).to.revertWith( - new SignatureValidationError(SignatureValidationErrorCodes.BadSignatureData, hash), + new RevertErrors.Signatures.SignatureValidationError( + RevertErrors.Signatures.SignatureValidationErrorCodes.BadSignatureData, + hash, + ), ); }); @@ -69,7 +71,10 @@ blockchainTests.resets('LibSignature library', env => { r: '0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141', }; return expect(testLib.getSignerOfHash(hash, sig).callAsync()).to.revertWith( - new SignatureValidationError(SignatureValidationErrorCodes.BadSignatureData, hash), + new RevertErrors.Signatures.SignatureValidationError( + RevertErrors.Signatures.SignatureValidationErrorCodes.BadSignatureData, + hash, + ), ); }); @@ -80,7 +85,10 @@ blockchainTests.resets('LibSignature library', env => { signatureType: SignatureType.Illegal, }; return expect(testLib.getSignerOfHash(hash, sig).callAsync()).to.revertWith( - new SignatureValidationError(SignatureValidationErrorCodes.Illegal, hash), + new RevertErrors.Signatures.SignatureValidationError( + RevertErrors.Signatures.SignatureValidationErrorCodes.Illegal, + hash, + ), ); }); @@ -91,7 +99,10 @@ blockchainTests.resets('LibSignature library', env => { signatureType: SignatureType.Invalid, }; return expect(testLib.getSignerOfHash(hash, sig).callAsync()).to.revertWith( - new SignatureValidationError(SignatureValidationErrorCodes.AlwaysInvalid, hash), + new RevertErrors.Signatures.SignatureValidationError( + RevertErrors.Signatures.SignatureValidationErrorCodes.AlwaysInvalid, + hash, + ), ); }); }); diff --git a/contracts/zero-ex/test/transformers/affiliate_fee_transformer_test.ts b/contracts/zero-ex/test/transformers/affiliate_fee_transformer_test.ts index 1f6ebee27a..87abfebf04 100644 --- a/contracts/zero-ex/test/transformers/affiliate_fee_transformer_test.ts +++ b/contracts/zero-ex/test/transformers/affiliate_fee_transformer_test.ts @@ -1,5 +1,5 @@ import { blockchainTests, constants, expect, getRandomInteger, randomAddress } from '@0x/contracts-test-utils'; -import { encodeAffiliateFeeTransformerData, ETH_TOKEN_ADDRESS } from '@0x/order-utils'; +import { encodeAffiliateFeeTransformerData, ETH_TOKEN_ADDRESS } from '@0x/protocol-utils'; import { BigNumber } from '@0x/utils'; import * as _ from 'lodash'; diff --git a/contracts/zero-ex/test/transformers/fill_quote_transformer_test.ts b/contracts/zero-ex/test/transformers/fill_quote_transformer_test.ts index 1747aa22fa..e5dec94b16 100644 --- a/contracts/zero-ex/test/transformers/fill_quote_transformer_test.ts +++ b/contracts/zero-ex/test/transformers/fill_quote_transformer_test.ts @@ -7,12 +7,8 @@ import { Numberish, randomAddress, } from '@0x/contracts-test-utils'; -import { - assetDataUtils, - encodeFillQuoteTransformerData, - FillQuoteTransformerData, - FillQuoteTransformerSide, -} from '@0x/order-utils'; +import { assetDataUtils } from '@0x/order-utils'; +import { encodeFillQuoteTransformerData, FillQuoteTransformerData, FillQuoteTransformerSide } from '@0x/protocol-utils'; import { Order } from '@0x/types'; import { BigNumber, hexUtils, ZeroExRevertErrors } from '@0x/utils'; import * as _ from 'lodash'; diff --git a/contracts/zero-ex/test/transformers/pay_taker_transformer_test.ts b/contracts/zero-ex/test/transformers/pay_taker_transformer_test.ts index 8f75b5f073..d357d8fcda 100644 --- a/contracts/zero-ex/test/transformers/pay_taker_transformer_test.ts +++ b/contracts/zero-ex/test/transformers/pay_taker_transformer_test.ts @@ -1,5 +1,5 @@ import { blockchainTests, constants, expect, getRandomInteger, randomAddress } from '@0x/contracts-test-utils'; -import { encodePayTakerTransformerData, ETH_TOKEN_ADDRESS } from '@0x/order-utils'; +import { encodePayTakerTransformerData, ETH_TOKEN_ADDRESS } from '@0x/protocol-utils'; import { BigNumber } from '@0x/utils'; import * as _ from 'lodash'; diff --git a/contracts/zero-ex/test/transformers/weth_transformer_test.ts b/contracts/zero-ex/test/transformers/weth_transformer_test.ts index 37c992e75a..3df96ca3bc 100644 --- a/contracts/zero-ex/test/transformers/weth_transformer_test.ts +++ b/contracts/zero-ex/test/transformers/weth_transformer_test.ts @@ -1,5 +1,5 @@ import { blockchainTests, constants, expect, getRandomInteger, randomAddress } from '@0x/contracts-test-utils'; -import { encodeWethTransformerData, ETH_TOKEN_ADDRESS } from '@0x/order-utils'; +import { encodeWethTransformerData, ETH_TOKEN_ADDRESS } from '@0x/protocol-utils'; import { BigNumber, ZeroExRevertErrors } from '@0x/utils'; import * as _ from 'lodash'; diff --git a/contracts/zero-ex/test/utils/orders.ts b/contracts/zero-ex/test/utils/orders.ts index 3b9cc5a009..5a80df408b 100644 --- a/contracts/zero-ex/test/utils/orders.ts +++ b/contracts/zero-ex/test/utils/orders.ts @@ -1,8 +1,7 @@ import { getRandomInteger, randomAddress } from '@0x/contracts-test-utils'; +import { LimitOrder, LimitOrderFields, RfqOrder, RfqOrderFields } from '@0x/protocol-utils'; import { BigNumber, hexUtils } from '@0x/utils'; -import { LimitOrder, LimitOrderFields, RfqOrder, RfqOrderFields } from '../../src/orders'; - /** * Generate a random limit order. */ diff --git a/packages/asset-swapper/package.json b/packages/asset-swapper/package.json index 11b9f77e9f..c7f3e767c4 100644 --- a/packages/asset-swapper/package.json +++ b/packages/asset-swapper/package.json @@ -58,10 +58,10 @@ }, "dependencies": { "@0x/assert": "^3.0.19", - "@0x/base-contract": "^6.2.13", + "@0x/base-contract": "^6.2.14", "@0x/contract-addresses": "^5.6.0", "@0x/contract-wrappers": "^13.10.3", - "@0x/dev-utils": "^4.1.2", + "@0x/dev-utils": "^4.1.3", "@0x/json-schemas": "^5.3.4", "@0x/order-utils": "^10.4.9", "@0x/orderbook": "0xProject/gitpkg-registry#0x-orderbook-v2.2.7-e10a81023", @@ -69,7 +69,7 @@ "@0x/types": "^3.3.1", "@0x/typescript-typings": "^5.1.6", "@0x/utils": "^6.1.1", - "@0x/web3-wrapper": "^7.2.10", + "@0x/web3-wrapper": "^7.3.0", "@balancer-labs/sor": "0.3.2", "@bancor/sdk": "^0.2.9", "@ethersproject/abi": "^5.0.1", @@ -86,19 +86,19 @@ "lodash": "^4.17.11" }, "devDependencies": { - "@0x/base-contract": "^6.2.13", + "@0x/base-contract": "^6.2.14", "@0x/contracts-asset-proxy": "^3.6.8", "@0x/contracts-erc20": "^3.2.11", "@0x/contracts-exchange": "^3.2.17", "@0x/contracts-exchange-libs": "^4.3.17", - "@0x/contracts-gen": "^2.0.23", + "@0x/contracts-gen": "^2.0.24", "@0x/contracts-test-utils": "^5.3.14", "@0x/contracts-utils": "^4.6.2", "@0x/contracts-zero-ex": "^0.11.1", "@0x/mesh-rpc-client": "^9.4.2", "@0x/migrations": "^6.5.3", - "@0x/sol-compiler": "^4.4.0", - "@0x/subproviders": "^6.2.2", + "@0x/sol-compiler": "^4.4.1", + "@0x/subproviders": "^6.2.3", "@0x/ts-doc-gen": "^0.0.28", "@0x/tslint-config": "^4.1.3", "@0x/types": "^3.3.1", diff --git a/packages/contract-artifacts/CHANGELOG.json b/packages/contract-artifacts/CHANGELOG.json index 1671265e91..ac4fff61e5 100644 --- a/packages/contract-artifacts/CHANGELOG.json +++ b/packages/contract-artifacts/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "version": "3.10.0", + "changes": [ + { + "note": "Update artifacts", + "pr": 76 + } + ] + }, { "timestamp": 1606961263, "version": "3.9.1", diff --git a/packages/contract-artifacts/artifacts/Broker.json b/packages/contract-artifacts/artifacts/Broker.json index a647ec6dfe..bfd694883e 100644 --- a/packages/contract-artifacts/artifacts/Broker.json +++ b/packages/contract-artifacts/artifacts/Broker.json @@ -171,16 +171,16 @@ }, "evm": { "bytecode": { - "object": "0x60806040523480156200001157600080fd5b506040516200309a3803806200309a8339810160408190526200003491620004f1565b600080546001600160a01b0319166001600160a01b03831617905560405182908290630f47261b60e41b906200006f90839060240162000551565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217825251620000af916001916200041f565b50604051630c0e082160e31b81526000906001600160a01b03841690636070410890620000e890630f47261b60e41b906004016200057e565b60206040518083038186803b1580156200010157600080fd5b505afa15801562000116573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200013c9190810190620004c1565b90506001600160a01b03811662000177576200017762000166620003ea60201b62002a411760201c565b6200041760201b6200016e1760201c565b60005460405163095ea7b360e01b81526001600160a01b039091169063095ea7b390620001ad9084906000199060040162000565565b602060405180830381600087803b158015620001c857600080fd5b505af1158015620001dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200020391908101906200052f565b506000836001600160a01b031663850a15016040518163ffffffff1660e01b815260040160206040518083038186803b1580156200024057600080fd5b505afa15801562000255573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200027b9190810190620004c1565b90506001600160a01b038116156200031b5760005460405163095ea7b360e01b81526001600160a01b039091169063095ea7b390620002c39084906000199060040162000565565b602060405180830381600087803b158015620002de57600080fd5b505af1158015620002f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200031991908101906200052f565b505b5050600280546001600160a01b0319166001600160a01b038681169190911791829055604051630c0e082160e31b815291169250636070410891506200036d9063a7cb5fb760e01b906004016200057e565b60206040518083038186803b1580156200038657600080fd5b505afa1580156200039b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620003c19190810190620004c1565b600380546001600160a01b0319166001600160a01b039290921691909117905550620005ac9050565b6040805160048152602481019091526020810180516001600160e01b031663f3b96b8d60e01b1790525b90565b805160208201fd5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200046257805160ff191683800117855562000492565b8280016001018555821562000492579182015b828111156200049257825182559160200191906001019062000475565b50620004a0929150620004a4565b5090565b6200041491905b80821115620004a05760008155600101620004ab565b600060208284031215620004d3578081fd5b81516001600160a01b0381168114620004ea578182fd5b9392505050565b6000806040838503121562000504578081fd5b8251620005118162000593565b6020840151909250620005248162000593565b809150509250929050565b60006020828403121562000541578081fd5b81518015158114620004ea578182fd5b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160e01b031991909116815260200190565b6001600160a01b0381168114620005a957600080fd5b50565b612ade80620005bc6000396000f3fe6080604052600436106100345760003560e01c80632eb2c2d61461006657806385afeaa014610086578063a2b18d95146100af575b60005473ffffffffffffffffffffffffffffffffffffffff1633146100645761006461005f336100cf565b61016e565b005b34801561007257600080fd5b5061006461008136600461208a565b610176565b610099610094366004612312565b6103bc565b6040516100a691906128f9565b60405180910390f35b6100c26100bd366004612211565b610789565b6040516100a69190612749565b60606308b1869860e01b826040516024016100ea9190612667565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050919050565b805160208201fd5b60035473ffffffffffffffffffffffffffffffffffffffff1633146101a1576101a161005f33610b88565b73ffffffffffffffffffffffffffffffffffffffff881630146101ca576101ca61005f89610ba3565b600183146101de576101de61005f84610bbe565b6005546000858582816101ed57fe5b9050602002013590508061020f83600480549050610bd990919063ffffffff16565b1015610225576004546102259061005f90610bfd565b600080606061023686880188611f92565b9250925092505b83156103a85760006004868154811061025257fe5b6000918252602090912001546040517f9256050a00000000000000000000000000000000000000000000000000000000815260019097019690915073ffffffffffffffffffffffffffffffffffffffff841690639256050a906102bb908490869060040161293b565b60006040518083038186803b1580156102d357600080fd5b505afa1580156102e7573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff166323b872dd600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168f846040518463ffffffff1660e01b815260040161034a939291906126f2565b600060405180830381600087803b15801561036457600080fd5b505af1158015610378573d6000803e3d6000fd5b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909601955061023d915050565b505050600591909155505050505050505050565b6103c4611a31565b87516103d79060049060208b0190611a60565b50600680547fffffffffffffffffffffffff000000000000000000000000000000000000000016331790557fffffffff0000000000000000000000000000000000000000000000000000000084167f9b44d556000000000000000000000000000000000000000000000000000000001480159061049657507fffffffff0000000000000000000000000000000000000000000000000000000084167fe14b58c40000000000000000000000000000000000000000000000000000000014155b156104a6576104a484610c18565b505b6104b08383610c33565b506060848888886040516024016104c993929190612907565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252600254915190925060009160609173ffffffffffffffffffffffffffffffffffffffff9091169061057890859061264b565b6000604051808303816000865af19150503d80600081146105b5576040519150601f19603f3d011682016040523d82523d6000602084013e6105ba565b606091505b509150915081156105e057808060200190516105d99190810190612448565b93506105e9565b6105e98161016e565b60018054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100878916150201909516949094049384018190048102820181019092528281526106ab93909290918301828280156106935780601f1061066857610100808354040283529160200191610693565b820191906000526020600020905b81548152906001019060200180831161067657829003601f168201915b5050506101408e01519291505063ffffffff610d8a16565b6106c65783516101408b01516106c69163ffffffff610db116565b6000546040517f70a082310000000000000000000000000000000000000000000000000000000081526107739173ffffffffffffffffffffffffffffffffffffffff16906370a082319061071e903090600401612667565b60206040518083038186803b15801561073657600080fd5b505afa15801561074a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061076e9190810190612463565b610dc7565b61077b610e85565b505050979650505050505050565b865160609061079f9060049060208b0190611a60565b50600680547fffffffffffffffffffffffff000000000000000000000000000000000000000016331790557fffffffff0000000000000000000000000000000000000000000000000000000084167f9694a402000000000000000000000000000000000000000000000000000000001480159061085e57507fffffffff0000000000000000000000000000000000000000000000000000000084167fbeee2e140000000000000000000000000000000000000000000000000000000014155b80156108ac57507fffffffff0000000000000000000000000000000000000000000000000000000084167f8ea8dfe40000000000000000000000000000000000000000000000000000000014155b156108bc576108ba84610c18565b505b6108c68383610c33565b506060848888886040516024016108df93929190612797565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252600254915190925060009160609173ffffffffffffffffffffffffffffffffffffffff9091169061098e90859061264b565b6000604051808303816000865af19150503d80600081146109cb576040519150601f19603f3d011682016040523d82523d6000602084013e6109d0565b606091505b509150915081156109f657808060200190516109ef919081019061216f565b93506109ff565b6109ff8161016e565b60005b8a51811015610b2f5760018054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010087891615020190951694909404938401819004810282018101909252828152610ae19390929091830182828015610ab55780601f10610a8a57610100808354040283529160200191610ab5565b820191906000526020600020905b815481529060010190602001808311610a9857829003601f168201915b50505050508c8381518110610ac657fe5b60200260200101516101400151610d8a90919063ffffffff16565b610b2757610b27858281518110610af457fe5b6020026020010151600001518c8381518110610b0c57fe5b60200260200101516101400151610db190919063ffffffff16565b600101610a02565b506000546040517f70a082310000000000000000000000000000000000000000000000000000000081526107739173ffffffffffffffffffffffffffffffffffffffff16906370a082319061071e903090600401612667565b606063ccc529af60e01b826040516024016100ea9190612667565b606063906bfb3c60e01b826040516024016100ea9190612667565b606063ba9be20060e01b826040516024016100ea9190612932565b600082821115610bf257610bf261005f60028585610ec0565b508082035b92915050565b6060635527258660e01b826040516024016100ea9190612932565b606063540943f160e01b826040516024016100ea919061289c565b81518151600091908114610c4f57610c4f61005f828551610f65565b34915060005b818114610cfe576000858281518110610c6a57fe5b6020026020010151905080841015610c8957610c8961005f8286611007565b610c99848263ffffffff610bd916565b9350848281518110610ca757fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610cf4573d6000803e3d6000fd5b5050600101610c55565b5060008054604080517fd0e30db0000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff9092169263d0e30db0928692600480820193929182900301818588803b158015610d6a57600080fd5b505af1158015610d7e573d6000803e3d6000fd5b50505050505092915050565b600081518351148015610daa575081805190602001208380519060200120145b9392505050565b610dc38230338463ffffffff61102416565b5050565b8015610e82576000546040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690632e1a7d4d90610e23908490600401612932565b600060405180830381600087803b158015610e3d57600080fd5b505af1158015610e51573d6000803e3d6000fd5b505060405133925083156108fc02915083906000818181858888f19350505050158015610dc3573d6000803e3d6000fd5b50565b610e9160046000611aab565b6000600555600680547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b606063e946c1bb60e01b848484604051602401610edf939291906128c9565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290509392505050565b6060633ecb6ceb60e01b8383604051602401610f8292919061295c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905092915050565b606063ecf40fd960e01b8383604051602401610f8292919061295c565b8061102e5761125a565b6000611040858263ffffffff61126016565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167ff47261b00000000000000000000000000000000000000000000000000000000014806110d357507fffffffff0000000000000000000000000000000000000000000000000000000081167fdc1600f300000000000000000000000000000000000000000000000000000000145b156110ef576110ea8585858563ffffffff6112ac16565b611258565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f0257179200000000000000000000000000000000000000000000000000000000141561114b576110ea8585858563ffffffff6112f616565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fa7cb5fb70000000000000000000000000000000000000000000000000000000014156111a7576110ea8585858563ffffffff6113c516565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f94cfcdd7000000000000000000000000000000000000000000000000000000001415611203576110ea8585858563ffffffff61151b16565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fc339d10a00000000000000000000000000000000000000000000000000000000146112585761125861005f826115af565b505b50505050565b600081600401835110156112815761128161005f60038551856004016115ca565b5001602001517fffffffff000000000000000000000000000000000000000000000000000000001690565b60006112bf85601063ffffffff6115e916565b905073ffffffffffffffffffffffffffffffffffffffff84163014156112ea576110ea818484611629565b611258818585856116ea565b8060011461130a5761130a61005f826117ad565b600061131d85601063ffffffff6115e916565b9050600061133286602463ffffffff6117c816565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd9061138b908890889086906004016126f2565b600060405180830381600087803b1580156113a557600080fd5b505af11580156113b9573d6000803e3d6000fd5b50505050505050505050565b600060608060606113e3600489518a6117d49092919063ffffffff16565b8060200190516113f69190810190611ff2565b9350935093509350600082519050606081604051908082528060200260200182016040528015611430578160200160208202803883390190505b50905060005b828114611482576114638886838151811061144d57fe5b602002602001015161185490919063ffffffff16565b82828151811061146f57fe5b6020908102919091010152600101611436565b506040517f2eb2c2d600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871690632eb2c2d6906114dd908c908c908a9087908a90600401612688565b600060405180830381600087803b1580156114f757600080fd5b505af115801561150b573d6000803e3d6000fd5b5050505050505050505050505050565b60608061153560048751886117d49092919063ffffffff16565b8060200190516115489190810190612398565b8051919350915060005b8181146115a55761159d83828151811061156857fe5b6020026020010151888861159888868151811061158157fe5b60200260200101518a61185490919063ffffffff16565b611024565b600101611552565b5050505050505050565b6060637996a27160e01b826040516024016100ea919061289c565b6060632800659560e01b848484604051602401610edf939291906128eb565b6000816014018351101561160a5761160a61005f60048551856014016115ca565b50016014015173ffffffffffffffffffffffffffffffffffffffff1690565b6040516060907fa9059cbb00000000000000000000000000000000000000000000000000000000906116619085908590602401612723565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905061125a8482611885565b6040516060907f23b872dd0000000000000000000000000000000000000000000000000000000090611724908690869086906024016126f2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290506112588582611885565b606063baffa47460e01b826040516024016100ea9190612932565b6000610daa838361193d565b6060818311156117ed576117ed61005f600085856115ca565b83518211156118065761180661005f60018487516115ca565b8282036040519080825280601f01601f191660200182016040528015611833576020820181803883390190505b509050610daa61184282611967565b8461184c87611967565b01835161196d565b60008261186357506000610bf7565b8282028284828161187057fe5b0414610daa57610daa61005f60018686610ec0565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040516118ae919061264b565b6000604051808303816000865af19150503d80600081146118eb576040519150601f19603f3d011682016040523d82523d6000602084013e6118f0565b606091505b50915091508115611934578051611908575050610dc3565b80516020141561193457600061191f8260006117c8565b9050806001141561193257505050610dc3565b505b61125a8161016e565b6000816020018351101561195e5761195e61005f60058551856020016115ca565b50016020015190565b60200190565b6020811015611997576001816020036101000a038019835116818551168082178652505050611a2c565b828214156119a457611a2c565b828211156119de5760208103905080820181840181515b828510156119d65784518652602095860195909401936119bb565b905250611a2c565b60208103905080820181840183515b81861215611a2757825182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe092830192909101906119ed565b855250505b505050565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b828054828255906000526020600020908101928215611a9b579160200282015b82811115611a9b578251825591602001919060010190611a80565b50611aa7929150611ac5565b5090565b5080546000825590600052602060002090810190610e8291905b611adf91905b80821115611aa75760008155600101611acb565b90565b8035610bf781612a1f565b600082601f830112611afd578081fd5b8135611b10611b0b82612991565b61296a565b818152915060208083019084810181840286018201871015611b3157600080fd5b60005b84811015611b59578135611b4781612a1f565b84529282019290820190600101611b34565b505050505092915050565b600082601f830112611b74578081fd5b8135611b82611b0b82612991565b8181529150602080830190840160005b83811015611bbf57611baa8760208435890101611d59565b83526020928301929190910190600101611b92565b5050505092915050565b600082601f830112611bd9578081fd5b8135611be7611b0b82612991565b8181529150602080830190840160005b83811015611bbf57611c0f8760208435890101611e43565b83526020928301929190910190600101611bf7565b60008083601f840112611c35578182fd5b50813567ffffffffffffffff811115611c4c578182fd5b6020830191508360208083028501011115611c6657600080fd5b9250929050565b600082601f830112611c7d578081fd5b8151611c8b611b0b82612991565b818152915060208083019084810181840286018201871015611cac57600080fd5b60005b84811015611b5957815184529282019290820190600101611caf565b600082601f830112611cdb578081fd5b8135611ce9611b0b82612991565b818152915060208083019084810181840286018201871015611d0a57600080fd5b60005b84811015611b5957813584529282019290820190600101611d0d565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114610bf757600080fd5b600082601f830112611d69578081fd5b8135611d77611b0b826129b1565b9150808252836020828501011115611d8e57600080fd5b8060208401602084013760009082016020015292915050565b600082601f830112611db7578081fd5b8151611dc5611b0b826129b1565b9150808252836020828501011115611ddc57600080fd5b611ded8160208401602086016129f3565b5092915050565b600060a08284031215611e05578081fd5b611e0f60a061296a565b9050815181526020820151602082015260408201516040820152606082015160608201526080820151608082015292915050565b60006101c0808385031215611e56578182fd5b611e5f8161296a565b915050611e6c8383611ae2565b8152611e7b8360208401611ae2565b6020820152611e8d8360408401611ae2565b6040820152611e9f8360608401611ae2565b60608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e08201526101008083013581830152506101208083013581830152506101408083013567ffffffffffffffff80821115611f0157600080fd5b611f0d86838701611d59565b83850152610160925082850135915080821115611f2957600080fd5b611f3586838701611d59565b83850152610180925082850135915080821115611f5157600080fd5b611f5d86838701611d59565b838501526101a0925082850135915080821115611f7957600080fd5b50611f8685828601611d59565b82840152505092915050565b600080600060608486031215611fa6578283fd5b8335611fb181612a1f565b92506020840135611fc181612a1f565b9150604084013567ffffffffffffffff811115611fdc578182fd5b611fe886828701611d59565b9150509250925092565b60008060008060808587031215612007578182fd5b845161201281612a1f565b602086015190945067ffffffffffffffff8082111561202f578384fd5b61203b88838901611c6d565b94506040870151915080821115612050578384fd5b61205c88838901611c6d565b93506060870151915080821115612071578283fd5b5061207e87828801611da7565b91505092959194509250565b60008060008060008060008060a0898b0312156120a5578586fd5b88356120b081612a1f565b975060208901356120c081612a1f565b9650604089013567ffffffffffffffff808211156120dc578788fd5b6120e88c838d01611c24565b909850965060608b0135915080821115612100578586fd5b61210c8c838d01611c24565b909650945060808b0135915080821115612124578384fd5b818b018c601f820112612135578485fd5b8035925081831115612145578485fd5b8c6020848301011115612156578485fd5b6020810194505050809150509295985092959890939650565b600060208284031215612180578081fd5b815167ffffffffffffffff811115612196578182fd5b80830184601f8201126121a7578283fd5b805191506121b7611b0b83612991565b808382526020820191506020830187602060a0870286010111156121d9578586fd5b8593505b84841015612206576121ef8882611df4565b83526001939093019260209092019160a0016121dd565b509695505050505050565b600080600080600080600060e0888a03121561222b578081fd5b873567ffffffffffffffff80821115612242578283fd5b61224e8b838c01611ccb565b985060208a0135915080821115612263578283fd5b61226f8b838c01611bc9565b975060408a0135915080821115612284578283fd5b6122908b838c01611ccb565b965060608a01359150808211156122a5578283fd5b6122b18b838c01611b64565b95506122c08b60808c01611d29565b945060a08a01359150808211156122d5578283fd5b6122e18b838c01611ccb565b935060c08a01359150808211156122f6578283fd5b506123038a828b01611aed565b91505092959891949750929550565b600080600080600080600060e0888a03121561232c578081fd5b873567ffffffffffffffff80821115612343578283fd5b61234f8b838c01611ccb565b985060208a0135915080821115612364578283fd5b6123708b838c01611e43565b975060408a0135965060608a013591508082111561238c578283fd5b6122b18b838c01611d59565b600080604083850312156123aa578182fd5b825167ffffffffffffffff808211156123c1578384fd5b6123cd86838701611c6d565b93506020915081850151818111156123e3578384fd5b85019050601f810186136123f5578283fd5b8051612403611b0b82612991565b81815283810190838501865b84811015612438576124268b888451890101611da7565b8452928601929086019060010161240f565b5096999098509650505050505050565b600060a08284031215612459578081fd5b610daa8383611df4565b600060208284031215612474578081fd5b5051919050565b73ffffffffffffffffffffffffffffffffffffffff169052565b6000815180845260208401935060208301825b828110156124c65781518652602095860195909101906001016124a8565b5093949350505050565b600081518084526124e88160208601602086016129f3565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b80518252602081015160208301526040810151604083015260608101516060830152608081015160808301525050565b60006101c061255a84845161247b565b602083015161256c602086018261247b565b50604083015161257f604086018261247b565b506060830151612592606086018261247b565b506080830151608085015260a083015160a085015260c083015160c085015260e083015160e08501526101008084015181860152506101208084015181860152506101408084015182828701526125eb838701826124d0565b9150506101609150818401518582038387015261260882826124d0565b92505050610180808401518583038287015261262483826124d0565b9150506101a09150818401518582038387015261264182826124d0565b9695505050505050565b6000825161265d8184602087016129f3565b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525060a060408301526126c160a0830186612495565b82810360608401526126d38186612495565b83810360808501526126e581866124d0565b9998505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b602080825282518282018190526000918401906040840190835b8181101561278c5761277683855161251a565b6020939093019260a09290920191600101612763565b509095945050505050565b60006060820160608352808651808352608085019150602092506080838202860101838901855b8381101561280a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808884030185526127f883835161254a565b948601949250908501906001016127be565b50508581038487015261281d8189612495565b925050508381036040850152808551808352838301915083848202840101848801865b8381101561288c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe086840301855261287a8383516124d0565b94870194925090860190600101612840565b50909a9950505050505050505050565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b60608101600485106128d757fe5b938152602081019290925260409091015290565b60608101600885106128d757fe5b60a08101610bf7828461251a565b60006060825261291a606083018661254a565b846020840152828103604084015261264181856124d0565b90815260200190565b60008382526040602083015261295460408301846124d0565b949350505050565b918252602082015260400190565b60405181810167ffffffffffffffff8111828210171561298957600080fd5b604052919050565b600067ffffffffffffffff8211156129a7578081fd5b5060209081020190565b600067ffffffffffffffff8211156129c7578081fd5b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b83811015612a0e5781810151838201526020016129f6565b8381111561125a5750506000910152565b73ffffffffffffffffffffffffffffffffffffffff81168114610e8257600080fd5b6040805160048152602481019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff3b96b8d000000000000000000000000000000000000000000000000000000001790529056fea365627a7a72315820805b3e85953f3c346ac91cfa9fed0017672ebf3862749d865a2e7de0cd4d53fe6c6578706572696d656e74616cf564736f6c63430005110040" + "object": "0x60806040523480156200001157600080fd5b506040516200309a3803806200309a8339810160408190526200003491620004f1565b600080546001600160a01b0319166001600160a01b03831617905560405182908290630f47261b60e41b906200006f90839060240162000551565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217825251620000af916001916200041f565b50604051630c0e082160e31b81526000906001600160a01b03841690636070410890620000e890630f47261b60e41b906004016200057e565b60206040518083038186803b1580156200010157600080fd5b505afa15801562000116573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200013c9190810190620004c1565b90506001600160a01b03811662000177576200017762000166620003ea60201b62002a411760201c565b6200041760201b6200016e1760201c565b60005460405163095ea7b360e01b81526001600160a01b039091169063095ea7b390620001ad9084906000199060040162000565565b602060405180830381600087803b158015620001c857600080fd5b505af1158015620001dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200020391908101906200052f565b506000836001600160a01b031663850a15016040518163ffffffff1660e01b815260040160206040518083038186803b1580156200024057600080fd5b505afa15801562000255573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200027b9190810190620004c1565b90506001600160a01b038116156200031b5760005460405163095ea7b360e01b81526001600160a01b039091169063095ea7b390620002c39084906000199060040162000565565b602060405180830381600087803b158015620002de57600080fd5b505af1158015620002f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200031991908101906200052f565b505b5050600280546001600160a01b0319166001600160a01b038681169190911791829055604051630c0e082160e31b815291169250636070410891506200036d9063a7cb5fb760e01b906004016200057e565b60206040518083038186803b1580156200038657600080fd5b505afa1580156200039b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620003c19190810190620004c1565b600380546001600160a01b0319166001600160a01b039290921691909117905550620005ac9050565b6040805160048152602481019091526020810180516001600160e01b031663f3b96b8d60e01b1790525b90565b805160208201fd5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200046257805160ff191683800117855562000492565b8280016001018555821562000492579182015b828111156200049257825182559160200191906001019062000475565b50620004a0929150620004a4565b5090565b6200041491905b80821115620004a05760008155600101620004ab565b600060208284031215620004d3578081fd5b81516001600160a01b0381168114620004ea578182fd5b9392505050565b6000806040838503121562000504578081fd5b8251620005118162000593565b6020840151909250620005248162000593565b809150509250929050565b60006020828403121562000541578081fd5b81518015158114620004ea578182fd5b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160e01b031991909116815260200190565b6001600160a01b0381168114620005a957600080fd5b50565b612ade80620005bc6000396000f3fe6080604052600436106100345760003560e01c80632eb2c2d61461006657806385afeaa014610086578063a2b18d95146100af575b60005473ffffffffffffffffffffffffffffffffffffffff1633146100645761006461005f336100cf565b61016e565b005b34801561007257600080fd5b5061006461008136600461208a565b610176565b610099610094366004612312565b6103bc565b6040516100a691906128f9565b60405180910390f35b6100c26100bd366004612211565b610789565b6040516100a69190612749565b60606308b1869860e01b826040516024016100ea9190612667565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050919050565b805160208201fd5b60035473ffffffffffffffffffffffffffffffffffffffff1633146101a1576101a161005f33610b88565b73ffffffffffffffffffffffffffffffffffffffff881630146101ca576101ca61005f89610ba3565b600183146101de576101de61005f84610bbe565b6005546000858582816101ed57fe5b9050602002013590508061020f83600480549050610bd990919063ffffffff16565b1015610225576004546102259061005f90610bfd565b600080606061023686880188611f92565b9250925092505b83156103a85760006004868154811061025257fe5b6000918252602090912001546040517f9256050a00000000000000000000000000000000000000000000000000000000815260019097019690915073ffffffffffffffffffffffffffffffffffffffff841690639256050a906102bb908490869060040161293b565b60006040518083038186803b1580156102d357600080fd5b505afa1580156102e7573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff166323b872dd600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168f846040518463ffffffff1660e01b815260040161034a939291906126f2565b600060405180830381600087803b15801561036457600080fd5b505af1158015610378573d6000803e3d6000fd5b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909601955061023d915050565b505050600591909155505050505050505050565b6103c4611a31565b87516103d79060049060208b0190611a60565b50600680547fffffffffffffffffffffffff000000000000000000000000000000000000000016331790557fffffffff0000000000000000000000000000000000000000000000000000000084167f9b44d556000000000000000000000000000000000000000000000000000000001480159061049657507fffffffff0000000000000000000000000000000000000000000000000000000084167fe14b58c40000000000000000000000000000000000000000000000000000000014155b156104a6576104a484610c18565b505b6104b08383610c33565b506060848888886040516024016104c993929190612907565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252600254915190925060009160609173ffffffffffffffffffffffffffffffffffffffff9091169061057890859061264b565b6000604051808303816000865af19150503d80600081146105b5576040519150601f19603f3d011682016040523d82523d6000602084013e6105ba565b606091505b509150915081156105e057808060200190516105d99190810190612448565b93506105e9565b6105e98161016e565b60018054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100878916150201909516949094049384018190048102820181019092528281526106ab93909290918301828280156106935780601f1061066857610100808354040283529160200191610693565b820191906000526020600020905b81548152906001019060200180831161067657829003601f168201915b5050506101408e01519291505063ffffffff610d8a16565b6106c65783516101408b01516106c69163ffffffff610db116565b6000546040517f70a082310000000000000000000000000000000000000000000000000000000081526107739173ffffffffffffffffffffffffffffffffffffffff16906370a082319061071e903090600401612667565b60206040518083038186803b15801561073657600080fd5b505afa15801561074a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061076e9190810190612463565b610dc7565b61077b610e85565b505050979650505050505050565b865160609061079f9060049060208b0190611a60565b50600680547fffffffffffffffffffffffff000000000000000000000000000000000000000016331790557fffffffff0000000000000000000000000000000000000000000000000000000084167f9694a402000000000000000000000000000000000000000000000000000000001480159061085e57507fffffffff0000000000000000000000000000000000000000000000000000000084167fbeee2e140000000000000000000000000000000000000000000000000000000014155b80156108ac57507fffffffff0000000000000000000000000000000000000000000000000000000084167f8ea8dfe40000000000000000000000000000000000000000000000000000000014155b156108bc576108ba84610c18565b505b6108c68383610c33565b506060848888886040516024016108df93929190612797565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252600254915190925060009160609173ffffffffffffffffffffffffffffffffffffffff9091169061098e90859061264b565b6000604051808303816000865af19150503d80600081146109cb576040519150601f19603f3d011682016040523d82523d6000602084013e6109d0565b606091505b509150915081156109f657808060200190516109ef919081019061216f565b93506109ff565b6109ff8161016e565b60005b8a51811015610b2f5760018054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010087891615020190951694909404938401819004810282018101909252828152610ae19390929091830182828015610ab55780601f10610a8a57610100808354040283529160200191610ab5565b820191906000526020600020905b815481529060010190602001808311610a9857829003601f168201915b50505050508c8381518110610ac657fe5b60200260200101516101400151610d8a90919063ffffffff16565b610b2757610b27858281518110610af457fe5b6020026020010151600001518c8381518110610b0c57fe5b60200260200101516101400151610db190919063ffffffff16565b600101610a02565b506000546040517f70a082310000000000000000000000000000000000000000000000000000000081526107739173ffffffffffffffffffffffffffffffffffffffff16906370a082319061071e903090600401612667565b606063ccc529af60e01b826040516024016100ea9190612667565b606063906bfb3c60e01b826040516024016100ea9190612667565b606063ba9be20060e01b826040516024016100ea9190612932565b600082821115610bf257610bf261005f60028585610ec0565b508082035b92915050565b6060635527258660e01b826040516024016100ea9190612932565b606063540943f160e01b826040516024016100ea919061289c565b81518151600091908114610c4f57610c4f61005f828551610f65565b34915060005b818114610cfe576000858281518110610c6a57fe5b6020026020010151905080841015610c8957610c8961005f8286611007565b610c99848263ffffffff610bd916565b9350848281518110610ca757fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610cf4573d6000803e3d6000fd5b5050600101610c55565b5060008054604080517fd0e30db0000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff9092169263d0e30db0928692600480820193929182900301818588803b158015610d6a57600080fd5b505af1158015610d7e573d6000803e3d6000fd5b50505050505092915050565b600081518351148015610daa575081805190602001208380519060200120145b9392505050565b610dc38230338463ffffffff61102416565b5050565b8015610e82576000546040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690632e1a7d4d90610e23908490600401612932565b600060405180830381600087803b158015610e3d57600080fd5b505af1158015610e51573d6000803e3d6000fd5b505060405133925083156108fc02915083906000818181858888f19350505050158015610dc3573d6000803e3d6000fd5b50565b610e9160046000611aab565b6000600555600680547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b606063e946c1bb60e01b848484604051602401610edf939291906128c9565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290509392505050565b6060633ecb6ceb60e01b8383604051602401610f8292919061295c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905092915050565b606063ecf40fd960e01b8383604051602401610f8292919061295c565b8061102e5761125a565b6000611040858263ffffffff61126016565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167ff47261b00000000000000000000000000000000000000000000000000000000014806110d357507fffffffff0000000000000000000000000000000000000000000000000000000081167fdc1600f300000000000000000000000000000000000000000000000000000000145b156110ef576110ea8585858563ffffffff6112ac16565b611258565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f0257179200000000000000000000000000000000000000000000000000000000141561114b576110ea8585858563ffffffff6112f616565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fa7cb5fb70000000000000000000000000000000000000000000000000000000014156111a7576110ea8585858563ffffffff6113c516565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f94cfcdd7000000000000000000000000000000000000000000000000000000001415611203576110ea8585858563ffffffff61151b16565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fc339d10a00000000000000000000000000000000000000000000000000000000146112585761125861005f826115af565b505b50505050565b600081600401835110156112815761128161005f60038551856004016115ca565b5001602001517fffffffff000000000000000000000000000000000000000000000000000000001690565b60006112bf85601063ffffffff6115e916565b905073ffffffffffffffffffffffffffffffffffffffff84163014156112ea576110ea818484611629565b611258818585856116ea565b8060011461130a5761130a61005f826117ad565b600061131d85601063ffffffff6115e916565b9050600061133286602463ffffffff6117c816565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd9061138b908890889086906004016126f2565b600060405180830381600087803b1580156113a557600080fd5b505af11580156113b9573d6000803e3d6000fd5b50505050505050505050565b600060608060606113e3600489518a6117d49092919063ffffffff16565b8060200190516113f69190810190611ff2565b9350935093509350600082519050606081604051908082528060200260200182016040528015611430578160200160208202803883390190505b50905060005b828114611482576114638886838151811061144d57fe5b602002602001015161185490919063ffffffff16565b82828151811061146f57fe5b6020908102919091010152600101611436565b506040517f2eb2c2d600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871690632eb2c2d6906114dd908c908c908a9087908a90600401612688565b600060405180830381600087803b1580156114f757600080fd5b505af115801561150b573d6000803e3d6000fd5b5050505050505050505050505050565b60608061153560048751886117d49092919063ffffffff16565b8060200190516115489190810190612398565b8051919350915060005b8181146115a55761159d83828151811061156857fe5b6020026020010151888861159888868151811061158157fe5b60200260200101518a61185490919063ffffffff16565b611024565b600101611552565b5050505050505050565b6060637996a27160e01b826040516024016100ea919061289c565b6060632800659560e01b848484604051602401610edf939291906128eb565b6000816014018351101561160a5761160a61005f60048551856014016115ca565b50016014015173ffffffffffffffffffffffffffffffffffffffff1690565b6040516060907fa9059cbb00000000000000000000000000000000000000000000000000000000906116619085908590602401612723565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905061125a8482611885565b6040516060907f23b872dd0000000000000000000000000000000000000000000000000000000090611724908690869086906024016126f2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290506112588582611885565b606063baffa47460e01b826040516024016100ea9190612932565b6000610daa838361193d565b6060818311156117ed576117ed61005f600085856115ca565b83518211156118065761180661005f60018487516115ca565b8282036040519080825280601f01601f191660200182016040528015611833576020820181803883390190505b509050610daa61184282611967565b8461184c87611967565b01835161196d565b60008261186357506000610bf7565b8282028284828161187057fe5b0414610daa57610daa61005f60018686610ec0565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040516118ae919061264b565b6000604051808303816000865af19150503d80600081146118eb576040519150601f19603f3d011682016040523d82523d6000602084013e6118f0565b606091505b50915091508115611934578051611908575050610dc3565b80516020141561193457600061191f8260006117c8565b9050806001141561193257505050610dc3565b505b61125a8161016e565b6000816020018351101561195e5761195e61005f60058551856020016115ca565b50016020015190565b60200190565b6020811015611997576001816020036101000a038019835116818551168082178652505050611a2c565b828214156119a457611a2c565b828211156119de5760208103905080820181840181515b828510156119d65784518652602095860195909401936119bb565b905250611a2c565b60208103905080820181840183515b81861215611a2757825182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe092830192909101906119ed565b855250505b505050565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b828054828255906000526020600020908101928215611a9b579160200282015b82811115611a9b578251825591602001919060010190611a80565b50611aa7929150611ac5565b5090565b5080546000825590600052602060002090810190610e8291905b611adf91905b80821115611aa75760008155600101611acb565b90565b8035610bf781612a1f565b600082601f830112611afd578081fd5b8135611b10611b0b82612991565b61296a565b818152915060208083019084810181840286018201871015611b3157600080fd5b60005b84811015611b59578135611b4781612a1f565b84529282019290820190600101611b34565b505050505092915050565b600082601f830112611b74578081fd5b8135611b82611b0b82612991565b8181529150602080830190840160005b83811015611bbf57611baa8760208435890101611d59565b83526020928301929190910190600101611b92565b5050505092915050565b600082601f830112611bd9578081fd5b8135611be7611b0b82612991565b8181529150602080830190840160005b83811015611bbf57611c0f8760208435890101611e43565b83526020928301929190910190600101611bf7565b60008083601f840112611c35578182fd5b50813567ffffffffffffffff811115611c4c578182fd5b6020830191508360208083028501011115611c6657600080fd5b9250929050565b600082601f830112611c7d578081fd5b8151611c8b611b0b82612991565b818152915060208083019084810181840286018201871015611cac57600080fd5b60005b84811015611b5957815184529282019290820190600101611caf565b600082601f830112611cdb578081fd5b8135611ce9611b0b82612991565b818152915060208083019084810181840286018201871015611d0a57600080fd5b60005b84811015611b5957813584529282019290820190600101611d0d565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114610bf757600080fd5b600082601f830112611d69578081fd5b8135611d77611b0b826129b1565b9150808252836020828501011115611d8e57600080fd5b8060208401602084013760009082016020015292915050565b600082601f830112611db7578081fd5b8151611dc5611b0b826129b1565b9150808252836020828501011115611ddc57600080fd5b611ded8160208401602086016129f3565b5092915050565b600060a08284031215611e05578081fd5b611e0f60a061296a565b9050815181526020820151602082015260408201516040820152606082015160608201526080820151608082015292915050565b60006101c0808385031215611e56578182fd5b611e5f8161296a565b915050611e6c8383611ae2565b8152611e7b8360208401611ae2565b6020820152611e8d8360408401611ae2565b6040820152611e9f8360608401611ae2565b60608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e08201526101008083013581830152506101208083013581830152506101408083013567ffffffffffffffff80821115611f0157600080fd5b611f0d86838701611d59565b83850152610160925082850135915080821115611f2957600080fd5b611f3586838701611d59565b83850152610180925082850135915080821115611f5157600080fd5b611f5d86838701611d59565b838501526101a0925082850135915080821115611f7957600080fd5b50611f8685828601611d59565b82840152505092915050565b600080600060608486031215611fa6578283fd5b8335611fb181612a1f565b92506020840135611fc181612a1f565b9150604084013567ffffffffffffffff811115611fdc578182fd5b611fe886828701611d59565b9150509250925092565b60008060008060808587031215612007578182fd5b845161201281612a1f565b602086015190945067ffffffffffffffff8082111561202f578384fd5b61203b88838901611c6d565b94506040870151915080821115612050578384fd5b61205c88838901611c6d565b93506060870151915080821115612071578283fd5b5061207e87828801611da7565b91505092959194509250565b60008060008060008060008060a0898b0312156120a5578586fd5b88356120b081612a1f565b975060208901356120c081612a1f565b9650604089013567ffffffffffffffff808211156120dc578788fd5b6120e88c838d01611c24565b909850965060608b0135915080821115612100578586fd5b61210c8c838d01611c24565b909650945060808b0135915080821115612124578384fd5b818b018c601f820112612135578485fd5b8035925081831115612145578485fd5b8c6020848301011115612156578485fd5b6020810194505050809150509295985092959890939650565b600060208284031215612180578081fd5b815167ffffffffffffffff811115612196578182fd5b80830184601f8201126121a7578283fd5b805191506121b7611b0b83612991565b808382526020820191506020830187602060a0870286010111156121d9578586fd5b8593505b84841015612206576121ef8882611df4565b83526001939093019260209092019160a0016121dd565b509695505050505050565b600080600080600080600060e0888a03121561222b578081fd5b873567ffffffffffffffff80821115612242578283fd5b61224e8b838c01611ccb565b985060208a0135915080821115612263578283fd5b61226f8b838c01611bc9565b975060408a0135915080821115612284578283fd5b6122908b838c01611ccb565b965060608a01359150808211156122a5578283fd5b6122b18b838c01611b64565b95506122c08b60808c01611d29565b945060a08a01359150808211156122d5578283fd5b6122e18b838c01611ccb565b935060c08a01359150808211156122f6578283fd5b506123038a828b01611aed565b91505092959891949750929550565b600080600080600080600060e0888a03121561232c578081fd5b873567ffffffffffffffff80821115612343578283fd5b61234f8b838c01611ccb565b985060208a0135915080821115612364578283fd5b6123708b838c01611e43565b975060408a0135965060608a013591508082111561238c578283fd5b6122b18b838c01611d59565b600080604083850312156123aa578182fd5b825167ffffffffffffffff808211156123c1578384fd5b6123cd86838701611c6d565b93506020915081850151818111156123e3578384fd5b85019050601f810186136123f5578283fd5b8051612403611b0b82612991565b81815283810190838501865b84811015612438576124268b888451890101611da7565b8452928601929086019060010161240f565b5096999098509650505050505050565b600060a08284031215612459578081fd5b610daa8383611df4565b600060208284031215612474578081fd5b5051919050565b73ffffffffffffffffffffffffffffffffffffffff169052565b6000815180845260208401935060208301825b828110156124c65781518652602095860195909101906001016124a8565b5093949350505050565b600081518084526124e88160208601602086016129f3565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b80518252602081015160208301526040810151604083015260608101516060830152608081015160808301525050565b60006101c061255a84845161247b565b602083015161256c602086018261247b565b50604083015161257f604086018261247b565b506060830151612592606086018261247b565b506080830151608085015260a083015160a085015260c083015160c085015260e083015160e08501526101008084015181860152506101208084015181860152506101408084015182828701526125eb838701826124d0565b9150506101609150818401518582038387015261260882826124d0565b92505050610180808401518583038287015261262483826124d0565b9150506101a09150818401518582038387015261264182826124d0565b9695505050505050565b6000825161265d8184602087016129f3565b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525060a060408301526126c160a0830186612495565b82810360608401526126d38186612495565b83810360808501526126e581866124d0565b9998505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b602080825282518282018190526000918401906040840190835b8181101561278c5761277683855161251a565b6020939093019260a09290920191600101612763565b509095945050505050565b60006060820160608352808651808352608085019150602092506080838202860101838901855b8381101561280a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808884030185526127f883835161254a565b948601949250908501906001016127be565b50508581038487015261281d8189612495565b925050508381036040850152808551808352838301915083848202840101848801865b8381101561288c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe086840301855261287a8383516124d0565b94870194925090860190600101612840565b50909a9950505050505050505050565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b60608101600485106128d757fe5b938152602081019290925260409091015290565b60608101600885106128d757fe5b60a08101610bf7828461251a565b60006060825261291a606083018661254a565b846020840152828103604084015261264181856124d0565b90815260200190565b60008382526040602083015261295460408301846124d0565b949350505050565b918252602082015260400190565b60405181810167ffffffffffffffff8111828210171561298957600080fd5b604052919050565b600067ffffffffffffffff8211156129a7578081fd5b5060209081020190565b600067ffffffffffffffff8211156129c7578081fd5b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b83811015612a0e5781810151838201526020016129f6565b8381111561125a5750506000910152565b73ffffffffffffffffffffffffffffffffffffffff81168114610e8257600080fd5b6040805160048152602481019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff3b96b8d000000000000000000000000000000000000000000000000000000001790529056fea365627a7a72315820826d59d029e83bff7d5169ca9d1980eaeaebe5090c80d210339a3efeed64c68a6c6578706572696d656e74616cf564736f6c63430005110040" }, "deployedBytecode": { - "object": "0x6080604052600436106100345760003560e01c80632eb2c2d61461006657806385afeaa014610086578063a2b18d95146100af575b60005473ffffffffffffffffffffffffffffffffffffffff1633146100645761006461005f336100cf565b61016e565b005b34801561007257600080fd5b5061006461008136600461208a565b610176565b610099610094366004612312565b6103bc565b6040516100a691906128f9565b60405180910390f35b6100c26100bd366004612211565b610789565b6040516100a69190612749565b60606308b1869860e01b826040516024016100ea9190612667565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050919050565b805160208201fd5b60035473ffffffffffffffffffffffffffffffffffffffff1633146101a1576101a161005f33610b88565b73ffffffffffffffffffffffffffffffffffffffff881630146101ca576101ca61005f89610ba3565b600183146101de576101de61005f84610bbe565b6005546000858582816101ed57fe5b9050602002013590508061020f83600480549050610bd990919063ffffffff16565b1015610225576004546102259061005f90610bfd565b600080606061023686880188611f92565b9250925092505b83156103a85760006004868154811061025257fe5b6000918252602090912001546040517f9256050a00000000000000000000000000000000000000000000000000000000815260019097019690915073ffffffffffffffffffffffffffffffffffffffff841690639256050a906102bb908490869060040161293b565b60006040518083038186803b1580156102d357600080fd5b505afa1580156102e7573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff166323b872dd600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168f846040518463ffffffff1660e01b815260040161034a939291906126f2565b600060405180830381600087803b15801561036457600080fd5b505af1158015610378573d6000803e3d6000fd5b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909601955061023d915050565b505050600591909155505050505050505050565b6103c4611a31565b87516103d79060049060208b0190611a60565b50600680547fffffffffffffffffffffffff000000000000000000000000000000000000000016331790557fffffffff0000000000000000000000000000000000000000000000000000000084167f9b44d556000000000000000000000000000000000000000000000000000000001480159061049657507fffffffff0000000000000000000000000000000000000000000000000000000084167fe14b58c40000000000000000000000000000000000000000000000000000000014155b156104a6576104a484610c18565b505b6104b08383610c33565b506060848888886040516024016104c993929190612907565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252600254915190925060009160609173ffffffffffffffffffffffffffffffffffffffff9091169061057890859061264b565b6000604051808303816000865af19150503d80600081146105b5576040519150601f19603f3d011682016040523d82523d6000602084013e6105ba565b606091505b509150915081156105e057808060200190516105d99190810190612448565b93506105e9565b6105e98161016e565b60018054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100878916150201909516949094049384018190048102820181019092528281526106ab93909290918301828280156106935780601f1061066857610100808354040283529160200191610693565b820191906000526020600020905b81548152906001019060200180831161067657829003601f168201915b5050506101408e01519291505063ffffffff610d8a16565b6106c65783516101408b01516106c69163ffffffff610db116565b6000546040517f70a082310000000000000000000000000000000000000000000000000000000081526107739173ffffffffffffffffffffffffffffffffffffffff16906370a082319061071e903090600401612667565b60206040518083038186803b15801561073657600080fd5b505afa15801561074a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061076e9190810190612463565b610dc7565b61077b610e85565b505050979650505050505050565b865160609061079f9060049060208b0190611a60565b50600680547fffffffffffffffffffffffff000000000000000000000000000000000000000016331790557fffffffff0000000000000000000000000000000000000000000000000000000084167f9694a402000000000000000000000000000000000000000000000000000000001480159061085e57507fffffffff0000000000000000000000000000000000000000000000000000000084167fbeee2e140000000000000000000000000000000000000000000000000000000014155b80156108ac57507fffffffff0000000000000000000000000000000000000000000000000000000084167f8ea8dfe40000000000000000000000000000000000000000000000000000000014155b156108bc576108ba84610c18565b505b6108c68383610c33565b506060848888886040516024016108df93929190612797565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252600254915190925060009160609173ffffffffffffffffffffffffffffffffffffffff9091169061098e90859061264b565b6000604051808303816000865af19150503d80600081146109cb576040519150601f19603f3d011682016040523d82523d6000602084013e6109d0565b606091505b509150915081156109f657808060200190516109ef919081019061216f565b93506109ff565b6109ff8161016e565b60005b8a51811015610b2f5760018054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010087891615020190951694909404938401819004810282018101909252828152610ae19390929091830182828015610ab55780601f10610a8a57610100808354040283529160200191610ab5565b820191906000526020600020905b815481529060010190602001808311610a9857829003601f168201915b50505050508c8381518110610ac657fe5b60200260200101516101400151610d8a90919063ffffffff16565b610b2757610b27858281518110610af457fe5b6020026020010151600001518c8381518110610b0c57fe5b60200260200101516101400151610db190919063ffffffff16565b600101610a02565b506000546040517f70a082310000000000000000000000000000000000000000000000000000000081526107739173ffffffffffffffffffffffffffffffffffffffff16906370a082319061071e903090600401612667565b606063ccc529af60e01b826040516024016100ea9190612667565b606063906bfb3c60e01b826040516024016100ea9190612667565b606063ba9be20060e01b826040516024016100ea9190612932565b600082821115610bf257610bf261005f60028585610ec0565b508082035b92915050565b6060635527258660e01b826040516024016100ea9190612932565b606063540943f160e01b826040516024016100ea919061289c565b81518151600091908114610c4f57610c4f61005f828551610f65565b34915060005b818114610cfe576000858281518110610c6a57fe5b6020026020010151905080841015610c8957610c8961005f8286611007565b610c99848263ffffffff610bd916565b9350848281518110610ca757fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610cf4573d6000803e3d6000fd5b5050600101610c55565b5060008054604080517fd0e30db0000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff9092169263d0e30db0928692600480820193929182900301818588803b158015610d6a57600080fd5b505af1158015610d7e573d6000803e3d6000fd5b50505050505092915050565b600081518351148015610daa575081805190602001208380519060200120145b9392505050565b610dc38230338463ffffffff61102416565b5050565b8015610e82576000546040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690632e1a7d4d90610e23908490600401612932565b600060405180830381600087803b158015610e3d57600080fd5b505af1158015610e51573d6000803e3d6000fd5b505060405133925083156108fc02915083906000818181858888f19350505050158015610dc3573d6000803e3d6000fd5b50565b610e9160046000611aab565b6000600555600680547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b606063e946c1bb60e01b848484604051602401610edf939291906128c9565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290509392505050565b6060633ecb6ceb60e01b8383604051602401610f8292919061295c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905092915050565b606063ecf40fd960e01b8383604051602401610f8292919061295c565b8061102e5761125a565b6000611040858263ffffffff61126016565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167ff47261b00000000000000000000000000000000000000000000000000000000014806110d357507fffffffff0000000000000000000000000000000000000000000000000000000081167fdc1600f300000000000000000000000000000000000000000000000000000000145b156110ef576110ea8585858563ffffffff6112ac16565b611258565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f0257179200000000000000000000000000000000000000000000000000000000141561114b576110ea8585858563ffffffff6112f616565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fa7cb5fb70000000000000000000000000000000000000000000000000000000014156111a7576110ea8585858563ffffffff6113c516565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f94cfcdd7000000000000000000000000000000000000000000000000000000001415611203576110ea8585858563ffffffff61151b16565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fc339d10a00000000000000000000000000000000000000000000000000000000146112585761125861005f826115af565b505b50505050565b600081600401835110156112815761128161005f60038551856004016115ca565b5001602001517fffffffff000000000000000000000000000000000000000000000000000000001690565b60006112bf85601063ffffffff6115e916565b905073ffffffffffffffffffffffffffffffffffffffff84163014156112ea576110ea818484611629565b611258818585856116ea565b8060011461130a5761130a61005f826117ad565b600061131d85601063ffffffff6115e916565b9050600061133286602463ffffffff6117c816565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd9061138b908890889086906004016126f2565b600060405180830381600087803b1580156113a557600080fd5b505af11580156113b9573d6000803e3d6000fd5b50505050505050505050565b600060608060606113e3600489518a6117d49092919063ffffffff16565b8060200190516113f69190810190611ff2565b9350935093509350600082519050606081604051908082528060200260200182016040528015611430578160200160208202803883390190505b50905060005b828114611482576114638886838151811061144d57fe5b602002602001015161185490919063ffffffff16565b82828151811061146f57fe5b6020908102919091010152600101611436565b506040517f2eb2c2d600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871690632eb2c2d6906114dd908c908c908a9087908a90600401612688565b600060405180830381600087803b1580156114f757600080fd5b505af115801561150b573d6000803e3d6000fd5b5050505050505050505050505050565b60608061153560048751886117d49092919063ffffffff16565b8060200190516115489190810190612398565b8051919350915060005b8181146115a55761159d83828151811061156857fe5b6020026020010151888861159888868151811061158157fe5b60200260200101518a61185490919063ffffffff16565b611024565b600101611552565b5050505050505050565b6060637996a27160e01b826040516024016100ea919061289c565b6060632800659560e01b848484604051602401610edf939291906128eb565b6000816014018351101561160a5761160a61005f60048551856014016115ca565b50016014015173ffffffffffffffffffffffffffffffffffffffff1690565b6040516060907fa9059cbb00000000000000000000000000000000000000000000000000000000906116619085908590602401612723565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905061125a8482611885565b6040516060907f23b872dd0000000000000000000000000000000000000000000000000000000090611724908690869086906024016126f2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290506112588582611885565b606063baffa47460e01b826040516024016100ea9190612932565b6000610daa838361193d565b6060818311156117ed576117ed61005f600085856115ca565b83518211156118065761180661005f60018487516115ca565b8282036040519080825280601f01601f191660200182016040528015611833576020820181803883390190505b509050610daa61184282611967565b8461184c87611967565b01835161196d565b60008261186357506000610bf7565b8282028284828161187057fe5b0414610daa57610daa61005f60018686610ec0565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040516118ae919061264b565b6000604051808303816000865af19150503d80600081146118eb576040519150601f19603f3d011682016040523d82523d6000602084013e6118f0565b606091505b50915091508115611934578051611908575050610dc3565b80516020141561193457600061191f8260006117c8565b9050806001141561193257505050610dc3565b505b61125a8161016e565b6000816020018351101561195e5761195e61005f60058551856020016115ca565b50016020015190565b60200190565b6020811015611997576001816020036101000a038019835116818551168082178652505050611a2c565b828214156119a457611a2c565b828211156119de5760208103905080820181840181515b828510156119d65784518652602095860195909401936119bb565b905250611a2c565b60208103905080820181840183515b81861215611a2757825182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe092830192909101906119ed565b855250505b505050565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b828054828255906000526020600020908101928215611a9b579160200282015b82811115611a9b578251825591602001919060010190611a80565b50611aa7929150611ac5565b5090565b5080546000825590600052602060002090810190610e8291905b611adf91905b80821115611aa75760008155600101611acb565b90565b8035610bf781612a1f565b600082601f830112611afd578081fd5b8135611b10611b0b82612991565b61296a565b818152915060208083019084810181840286018201871015611b3157600080fd5b60005b84811015611b59578135611b4781612a1f565b84529282019290820190600101611b34565b505050505092915050565b600082601f830112611b74578081fd5b8135611b82611b0b82612991565b8181529150602080830190840160005b83811015611bbf57611baa8760208435890101611d59565b83526020928301929190910190600101611b92565b5050505092915050565b600082601f830112611bd9578081fd5b8135611be7611b0b82612991565b8181529150602080830190840160005b83811015611bbf57611c0f8760208435890101611e43565b83526020928301929190910190600101611bf7565b60008083601f840112611c35578182fd5b50813567ffffffffffffffff811115611c4c578182fd5b6020830191508360208083028501011115611c6657600080fd5b9250929050565b600082601f830112611c7d578081fd5b8151611c8b611b0b82612991565b818152915060208083019084810181840286018201871015611cac57600080fd5b60005b84811015611b5957815184529282019290820190600101611caf565b600082601f830112611cdb578081fd5b8135611ce9611b0b82612991565b818152915060208083019084810181840286018201871015611d0a57600080fd5b60005b84811015611b5957813584529282019290820190600101611d0d565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114610bf757600080fd5b600082601f830112611d69578081fd5b8135611d77611b0b826129b1565b9150808252836020828501011115611d8e57600080fd5b8060208401602084013760009082016020015292915050565b600082601f830112611db7578081fd5b8151611dc5611b0b826129b1565b9150808252836020828501011115611ddc57600080fd5b611ded8160208401602086016129f3565b5092915050565b600060a08284031215611e05578081fd5b611e0f60a061296a565b9050815181526020820151602082015260408201516040820152606082015160608201526080820151608082015292915050565b60006101c0808385031215611e56578182fd5b611e5f8161296a565b915050611e6c8383611ae2565b8152611e7b8360208401611ae2565b6020820152611e8d8360408401611ae2565b6040820152611e9f8360608401611ae2565b60608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e08201526101008083013581830152506101208083013581830152506101408083013567ffffffffffffffff80821115611f0157600080fd5b611f0d86838701611d59565b83850152610160925082850135915080821115611f2957600080fd5b611f3586838701611d59565b83850152610180925082850135915080821115611f5157600080fd5b611f5d86838701611d59565b838501526101a0925082850135915080821115611f7957600080fd5b50611f8685828601611d59565b82840152505092915050565b600080600060608486031215611fa6578283fd5b8335611fb181612a1f565b92506020840135611fc181612a1f565b9150604084013567ffffffffffffffff811115611fdc578182fd5b611fe886828701611d59565b9150509250925092565b60008060008060808587031215612007578182fd5b845161201281612a1f565b602086015190945067ffffffffffffffff8082111561202f578384fd5b61203b88838901611c6d565b94506040870151915080821115612050578384fd5b61205c88838901611c6d565b93506060870151915080821115612071578283fd5b5061207e87828801611da7565b91505092959194509250565b60008060008060008060008060a0898b0312156120a5578586fd5b88356120b081612a1f565b975060208901356120c081612a1f565b9650604089013567ffffffffffffffff808211156120dc578788fd5b6120e88c838d01611c24565b909850965060608b0135915080821115612100578586fd5b61210c8c838d01611c24565b909650945060808b0135915080821115612124578384fd5b818b018c601f820112612135578485fd5b8035925081831115612145578485fd5b8c6020848301011115612156578485fd5b6020810194505050809150509295985092959890939650565b600060208284031215612180578081fd5b815167ffffffffffffffff811115612196578182fd5b80830184601f8201126121a7578283fd5b805191506121b7611b0b83612991565b808382526020820191506020830187602060a0870286010111156121d9578586fd5b8593505b84841015612206576121ef8882611df4565b83526001939093019260209092019160a0016121dd565b509695505050505050565b600080600080600080600060e0888a03121561222b578081fd5b873567ffffffffffffffff80821115612242578283fd5b61224e8b838c01611ccb565b985060208a0135915080821115612263578283fd5b61226f8b838c01611bc9565b975060408a0135915080821115612284578283fd5b6122908b838c01611ccb565b965060608a01359150808211156122a5578283fd5b6122b18b838c01611b64565b95506122c08b60808c01611d29565b945060a08a01359150808211156122d5578283fd5b6122e18b838c01611ccb565b935060c08a01359150808211156122f6578283fd5b506123038a828b01611aed565b91505092959891949750929550565b600080600080600080600060e0888a03121561232c578081fd5b873567ffffffffffffffff80821115612343578283fd5b61234f8b838c01611ccb565b985060208a0135915080821115612364578283fd5b6123708b838c01611e43565b975060408a0135965060608a013591508082111561238c578283fd5b6122b18b838c01611d59565b600080604083850312156123aa578182fd5b825167ffffffffffffffff808211156123c1578384fd5b6123cd86838701611c6d565b93506020915081850151818111156123e3578384fd5b85019050601f810186136123f5578283fd5b8051612403611b0b82612991565b81815283810190838501865b84811015612438576124268b888451890101611da7565b8452928601929086019060010161240f565b5096999098509650505050505050565b600060a08284031215612459578081fd5b610daa8383611df4565b600060208284031215612474578081fd5b5051919050565b73ffffffffffffffffffffffffffffffffffffffff169052565b6000815180845260208401935060208301825b828110156124c65781518652602095860195909101906001016124a8565b5093949350505050565b600081518084526124e88160208601602086016129f3565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b80518252602081015160208301526040810151604083015260608101516060830152608081015160808301525050565b60006101c061255a84845161247b565b602083015161256c602086018261247b565b50604083015161257f604086018261247b565b506060830151612592606086018261247b565b506080830151608085015260a083015160a085015260c083015160c085015260e083015160e08501526101008084015181860152506101208084015181860152506101408084015182828701526125eb838701826124d0565b9150506101609150818401518582038387015261260882826124d0565b92505050610180808401518583038287015261262483826124d0565b9150506101a09150818401518582038387015261264182826124d0565b9695505050505050565b6000825161265d8184602087016129f3565b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525060a060408301526126c160a0830186612495565b82810360608401526126d38186612495565b83810360808501526126e581866124d0565b9998505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b602080825282518282018190526000918401906040840190835b8181101561278c5761277683855161251a565b6020939093019260a09290920191600101612763565b509095945050505050565b60006060820160608352808651808352608085019150602092506080838202860101838901855b8381101561280a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808884030185526127f883835161254a565b948601949250908501906001016127be565b50508581038487015261281d8189612495565b925050508381036040850152808551808352838301915083848202840101848801865b8381101561288c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe086840301855261287a8383516124d0565b94870194925090860190600101612840565b50909a9950505050505050505050565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b60608101600485106128d757fe5b938152602081019290925260409091015290565b60608101600885106128d757fe5b60a08101610bf7828461251a565b60006060825261291a606083018661254a565b846020840152828103604084015261264181856124d0565b90815260200190565b60008382526040602083015261295460408301846124d0565b949350505050565b918252602082015260400190565b60405181810167ffffffffffffffff8111828210171561298957600080fd5b604052919050565b600067ffffffffffffffff8211156129a7578081fd5b5060209081020190565b600067ffffffffffffffff8211156129c7578081fd5b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b83811015612a0e5781810151838201526020016129f6565b8381111561125a5750506000910152565b73ffffffffffffffffffffffffffffffffffffffff81168114610e8257600080fd5b6040805160048152602481019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff3b96b8d000000000000000000000000000000000000000000000000000000001790529056fea365627a7a72315820805b3e85953f3c346ac91cfa9fed0017672ebf3862749d865a2e7de0cd4d53fe6c6578706572696d656e74616cf564736f6c63430005110040" + "object": "0x6080604052600436106100345760003560e01c80632eb2c2d61461006657806385afeaa014610086578063a2b18d95146100af575b60005473ffffffffffffffffffffffffffffffffffffffff1633146100645761006461005f336100cf565b61016e565b005b34801561007257600080fd5b5061006461008136600461208a565b610176565b610099610094366004612312565b6103bc565b6040516100a691906128f9565b60405180910390f35b6100c26100bd366004612211565b610789565b6040516100a69190612749565b60606308b1869860e01b826040516024016100ea9190612667565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050919050565b805160208201fd5b60035473ffffffffffffffffffffffffffffffffffffffff1633146101a1576101a161005f33610b88565b73ffffffffffffffffffffffffffffffffffffffff881630146101ca576101ca61005f89610ba3565b600183146101de576101de61005f84610bbe565b6005546000858582816101ed57fe5b9050602002013590508061020f83600480549050610bd990919063ffffffff16565b1015610225576004546102259061005f90610bfd565b600080606061023686880188611f92565b9250925092505b83156103a85760006004868154811061025257fe5b6000918252602090912001546040517f9256050a00000000000000000000000000000000000000000000000000000000815260019097019690915073ffffffffffffffffffffffffffffffffffffffff841690639256050a906102bb908490869060040161293b565b60006040518083038186803b1580156102d357600080fd5b505afa1580156102e7573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff166323b872dd600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168f846040518463ffffffff1660e01b815260040161034a939291906126f2565b600060405180830381600087803b15801561036457600080fd5b505af1158015610378573d6000803e3d6000fd5b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909601955061023d915050565b505050600591909155505050505050505050565b6103c4611a31565b87516103d79060049060208b0190611a60565b50600680547fffffffffffffffffffffffff000000000000000000000000000000000000000016331790557fffffffff0000000000000000000000000000000000000000000000000000000084167f9b44d556000000000000000000000000000000000000000000000000000000001480159061049657507fffffffff0000000000000000000000000000000000000000000000000000000084167fe14b58c40000000000000000000000000000000000000000000000000000000014155b156104a6576104a484610c18565b505b6104b08383610c33565b506060848888886040516024016104c993929190612907565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252600254915190925060009160609173ffffffffffffffffffffffffffffffffffffffff9091169061057890859061264b565b6000604051808303816000865af19150503d80600081146105b5576040519150601f19603f3d011682016040523d82523d6000602084013e6105ba565b606091505b509150915081156105e057808060200190516105d99190810190612448565b93506105e9565b6105e98161016e565b60018054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100878916150201909516949094049384018190048102820181019092528281526106ab93909290918301828280156106935780601f1061066857610100808354040283529160200191610693565b820191906000526020600020905b81548152906001019060200180831161067657829003601f168201915b5050506101408e01519291505063ffffffff610d8a16565b6106c65783516101408b01516106c69163ffffffff610db116565b6000546040517f70a082310000000000000000000000000000000000000000000000000000000081526107739173ffffffffffffffffffffffffffffffffffffffff16906370a082319061071e903090600401612667565b60206040518083038186803b15801561073657600080fd5b505afa15801561074a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061076e9190810190612463565b610dc7565b61077b610e85565b505050979650505050505050565b865160609061079f9060049060208b0190611a60565b50600680547fffffffffffffffffffffffff000000000000000000000000000000000000000016331790557fffffffff0000000000000000000000000000000000000000000000000000000084167f9694a402000000000000000000000000000000000000000000000000000000001480159061085e57507fffffffff0000000000000000000000000000000000000000000000000000000084167fbeee2e140000000000000000000000000000000000000000000000000000000014155b80156108ac57507fffffffff0000000000000000000000000000000000000000000000000000000084167f8ea8dfe40000000000000000000000000000000000000000000000000000000014155b156108bc576108ba84610c18565b505b6108c68383610c33565b506060848888886040516024016108df93929190612797565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252600254915190925060009160609173ffffffffffffffffffffffffffffffffffffffff9091169061098e90859061264b565b6000604051808303816000865af19150503d80600081146109cb576040519150601f19603f3d011682016040523d82523d6000602084013e6109d0565b606091505b509150915081156109f657808060200190516109ef919081019061216f565b93506109ff565b6109ff8161016e565b60005b8a51811015610b2f5760018054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010087891615020190951694909404938401819004810282018101909252828152610ae19390929091830182828015610ab55780601f10610a8a57610100808354040283529160200191610ab5565b820191906000526020600020905b815481529060010190602001808311610a9857829003601f168201915b50505050508c8381518110610ac657fe5b60200260200101516101400151610d8a90919063ffffffff16565b610b2757610b27858281518110610af457fe5b6020026020010151600001518c8381518110610b0c57fe5b60200260200101516101400151610db190919063ffffffff16565b600101610a02565b506000546040517f70a082310000000000000000000000000000000000000000000000000000000081526107739173ffffffffffffffffffffffffffffffffffffffff16906370a082319061071e903090600401612667565b606063ccc529af60e01b826040516024016100ea9190612667565b606063906bfb3c60e01b826040516024016100ea9190612667565b606063ba9be20060e01b826040516024016100ea9190612932565b600082821115610bf257610bf261005f60028585610ec0565b508082035b92915050565b6060635527258660e01b826040516024016100ea9190612932565b606063540943f160e01b826040516024016100ea919061289c565b81518151600091908114610c4f57610c4f61005f828551610f65565b34915060005b818114610cfe576000858281518110610c6a57fe5b6020026020010151905080841015610c8957610c8961005f8286611007565b610c99848263ffffffff610bd916565b9350848281518110610ca757fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610cf4573d6000803e3d6000fd5b5050600101610c55565b5060008054604080517fd0e30db0000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff9092169263d0e30db0928692600480820193929182900301818588803b158015610d6a57600080fd5b505af1158015610d7e573d6000803e3d6000fd5b50505050505092915050565b600081518351148015610daa575081805190602001208380519060200120145b9392505050565b610dc38230338463ffffffff61102416565b5050565b8015610e82576000546040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690632e1a7d4d90610e23908490600401612932565b600060405180830381600087803b158015610e3d57600080fd5b505af1158015610e51573d6000803e3d6000fd5b505060405133925083156108fc02915083906000818181858888f19350505050158015610dc3573d6000803e3d6000fd5b50565b610e9160046000611aab565b6000600555600680547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b606063e946c1bb60e01b848484604051602401610edf939291906128c9565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290509392505050565b6060633ecb6ceb60e01b8383604051602401610f8292919061295c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905092915050565b606063ecf40fd960e01b8383604051602401610f8292919061295c565b8061102e5761125a565b6000611040858263ffffffff61126016565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167ff47261b00000000000000000000000000000000000000000000000000000000014806110d357507fffffffff0000000000000000000000000000000000000000000000000000000081167fdc1600f300000000000000000000000000000000000000000000000000000000145b156110ef576110ea8585858563ffffffff6112ac16565b611258565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f0257179200000000000000000000000000000000000000000000000000000000141561114b576110ea8585858563ffffffff6112f616565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fa7cb5fb70000000000000000000000000000000000000000000000000000000014156111a7576110ea8585858563ffffffff6113c516565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f94cfcdd7000000000000000000000000000000000000000000000000000000001415611203576110ea8585858563ffffffff61151b16565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fc339d10a00000000000000000000000000000000000000000000000000000000146112585761125861005f826115af565b505b50505050565b600081600401835110156112815761128161005f60038551856004016115ca565b5001602001517fffffffff000000000000000000000000000000000000000000000000000000001690565b60006112bf85601063ffffffff6115e916565b905073ffffffffffffffffffffffffffffffffffffffff84163014156112ea576110ea818484611629565b611258818585856116ea565b8060011461130a5761130a61005f826117ad565b600061131d85601063ffffffff6115e916565b9050600061133286602463ffffffff6117c816565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd9061138b908890889086906004016126f2565b600060405180830381600087803b1580156113a557600080fd5b505af11580156113b9573d6000803e3d6000fd5b50505050505050505050565b600060608060606113e3600489518a6117d49092919063ffffffff16565b8060200190516113f69190810190611ff2565b9350935093509350600082519050606081604051908082528060200260200182016040528015611430578160200160208202803883390190505b50905060005b828114611482576114638886838151811061144d57fe5b602002602001015161185490919063ffffffff16565b82828151811061146f57fe5b6020908102919091010152600101611436565b506040517f2eb2c2d600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871690632eb2c2d6906114dd908c908c908a9087908a90600401612688565b600060405180830381600087803b1580156114f757600080fd5b505af115801561150b573d6000803e3d6000fd5b5050505050505050505050505050565b60608061153560048751886117d49092919063ffffffff16565b8060200190516115489190810190612398565b8051919350915060005b8181146115a55761159d83828151811061156857fe5b6020026020010151888861159888868151811061158157fe5b60200260200101518a61185490919063ffffffff16565b611024565b600101611552565b5050505050505050565b6060637996a27160e01b826040516024016100ea919061289c565b6060632800659560e01b848484604051602401610edf939291906128eb565b6000816014018351101561160a5761160a61005f60048551856014016115ca565b50016014015173ffffffffffffffffffffffffffffffffffffffff1690565b6040516060907fa9059cbb00000000000000000000000000000000000000000000000000000000906116619085908590602401612723565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905061125a8482611885565b6040516060907f23b872dd0000000000000000000000000000000000000000000000000000000090611724908690869086906024016126f2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290506112588582611885565b606063baffa47460e01b826040516024016100ea9190612932565b6000610daa838361193d565b6060818311156117ed576117ed61005f600085856115ca565b83518211156118065761180661005f60018487516115ca565b8282036040519080825280601f01601f191660200182016040528015611833576020820181803883390190505b509050610daa61184282611967565b8461184c87611967565b01835161196d565b60008261186357506000610bf7565b8282028284828161187057fe5b0414610daa57610daa61005f60018686610ec0565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040516118ae919061264b565b6000604051808303816000865af19150503d80600081146118eb576040519150601f19603f3d011682016040523d82523d6000602084013e6118f0565b606091505b50915091508115611934578051611908575050610dc3565b80516020141561193457600061191f8260006117c8565b9050806001141561193257505050610dc3565b505b61125a8161016e565b6000816020018351101561195e5761195e61005f60058551856020016115ca565b50016020015190565b60200190565b6020811015611997576001816020036101000a038019835116818551168082178652505050611a2c565b828214156119a457611a2c565b828211156119de5760208103905080820181840181515b828510156119d65784518652602095860195909401936119bb565b905250611a2c565b60208103905080820181840183515b81861215611a2757825182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe092830192909101906119ed565b855250505b505050565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b828054828255906000526020600020908101928215611a9b579160200282015b82811115611a9b578251825591602001919060010190611a80565b50611aa7929150611ac5565b5090565b5080546000825590600052602060002090810190610e8291905b611adf91905b80821115611aa75760008155600101611acb565b90565b8035610bf781612a1f565b600082601f830112611afd578081fd5b8135611b10611b0b82612991565b61296a565b818152915060208083019084810181840286018201871015611b3157600080fd5b60005b84811015611b59578135611b4781612a1f565b84529282019290820190600101611b34565b505050505092915050565b600082601f830112611b74578081fd5b8135611b82611b0b82612991565b8181529150602080830190840160005b83811015611bbf57611baa8760208435890101611d59565b83526020928301929190910190600101611b92565b5050505092915050565b600082601f830112611bd9578081fd5b8135611be7611b0b82612991565b8181529150602080830190840160005b83811015611bbf57611c0f8760208435890101611e43565b83526020928301929190910190600101611bf7565b60008083601f840112611c35578182fd5b50813567ffffffffffffffff811115611c4c578182fd5b6020830191508360208083028501011115611c6657600080fd5b9250929050565b600082601f830112611c7d578081fd5b8151611c8b611b0b82612991565b818152915060208083019084810181840286018201871015611cac57600080fd5b60005b84811015611b5957815184529282019290820190600101611caf565b600082601f830112611cdb578081fd5b8135611ce9611b0b82612991565b818152915060208083019084810181840286018201871015611d0a57600080fd5b60005b84811015611b5957813584529282019290820190600101611d0d565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114610bf757600080fd5b600082601f830112611d69578081fd5b8135611d77611b0b826129b1565b9150808252836020828501011115611d8e57600080fd5b8060208401602084013760009082016020015292915050565b600082601f830112611db7578081fd5b8151611dc5611b0b826129b1565b9150808252836020828501011115611ddc57600080fd5b611ded8160208401602086016129f3565b5092915050565b600060a08284031215611e05578081fd5b611e0f60a061296a565b9050815181526020820151602082015260408201516040820152606082015160608201526080820151608082015292915050565b60006101c0808385031215611e56578182fd5b611e5f8161296a565b915050611e6c8383611ae2565b8152611e7b8360208401611ae2565b6020820152611e8d8360408401611ae2565b6040820152611e9f8360608401611ae2565b60608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e08201526101008083013581830152506101208083013581830152506101408083013567ffffffffffffffff80821115611f0157600080fd5b611f0d86838701611d59565b83850152610160925082850135915080821115611f2957600080fd5b611f3586838701611d59565b83850152610180925082850135915080821115611f5157600080fd5b611f5d86838701611d59565b838501526101a0925082850135915080821115611f7957600080fd5b50611f8685828601611d59565b82840152505092915050565b600080600060608486031215611fa6578283fd5b8335611fb181612a1f565b92506020840135611fc181612a1f565b9150604084013567ffffffffffffffff811115611fdc578182fd5b611fe886828701611d59565b9150509250925092565b60008060008060808587031215612007578182fd5b845161201281612a1f565b602086015190945067ffffffffffffffff8082111561202f578384fd5b61203b88838901611c6d565b94506040870151915080821115612050578384fd5b61205c88838901611c6d565b93506060870151915080821115612071578283fd5b5061207e87828801611da7565b91505092959194509250565b60008060008060008060008060a0898b0312156120a5578586fd5b88356120b081612a1f565b975060208901356120c081612a1f565b9650604089013567ffffffffffffffff808211156120dc578788fd5b6120e88c838d01611c24565b909850965060608b0135915080821115612100578586fd5b61210c8c838d01611c24565b909650945060808b0135915080821115612124578384fd5b818b018c601f820112612135578485fd5b8035925081831115612145578485fd5b8c6020848301011115612156578485fd5b6020810194505050809150509295985092959890939650565b600060208284031215612180578081fd5b815167ffffffffffffffff811115612196578182fd5b80830184601f8201126121a7578283fd5b805191506121b7611b0b83612991565b808382526020820191506020830187602060a0870286010111156121d9578586fd5b8593505b84841015612206576121ef8882611df4565b83526001939093019260209092019160a0016121dd565b509695505050505050565b600080600080600080600060e0888a03121561222b578081fd5b873567ffffffffffffffff80821115612242578283fd5b61224e8b838c01611ccb565b985060208a0135915080821115612263578283fd5b61226f8b838c01611bc9565b975060408a0135915080821115612284578283fd5b6122908b838c01611ccb565b965060608a01359150808211156122a5578283fd5b6122b18b838c01611b64565b95506122c08b60808c01611d29565b945060a08a01359150808211156122d5578283fd5b6122e18b838c01611ccb565b935060c08a01359150808211156122f6578283fd5b506123038a828b01611aed565b91505092959891949750929550565b600080600080600080600060e0888a03121561232c578081fd5b873567ffffffffffffffff80821115612343578283fd5b61234f8b838c01611ccb565b985060208a0135915080821115612364578283fd5b6123708b838c01611e43565b975060408a0135965060608a013591508082111561238c578283fd5b6122b18b838c01611d59565b600080604083850312156123aa578182fd5b825167ffffffffffffffff808211156123c1578384fd5b6123cd86838701611c6d565b93506020915081850151818111156123e3578384fd5b85019050601f810186136123f5578283fd5b8051612403611b0b82612991565b81815283810190838501865b84811015612438576124268b888451890101611da7565b8452928601929086019060010161240f565b5096999098509650505050505050565b600060a08284031215612459578081fd5b610daa8383611df4565b600060208284031215612474578081fd5b5051919050565b73ffffffffffffffffffffffffffffffffffffffff169052565b6000815180845260208401935060208301825b828110156124c65781518652602095860195909101906001016124a8565b5093949350505050565b600081518084526124e88160208601602086016129f3565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b80518252602081015160208301526040810151604083015260608101516060830152608081015160808301525050565b60006101c061255a84845161247b565b602083015161256c602086018261247b565b50604083015161257f604086018261247b565b506060830151612592606086018261247b565b506080830151608085015260a083015160a085015260c083015160c085015260e083015160e08501526101008084015181860152506101208084015181860152506101408084015182828701526125eb838701826124d0565b9150506101609150818401518582038387015261260882826124d0565b92505050610180808401518583038287015261262483826124d0565b9150506101a09150818401518582038387015261264182826124d0565b9695505050505050565b6000825161265d8184602087016129f3565b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525060a060408301526126c160a0830186612495565b82810360608401526126d38186612495565b83810360808501526126e581866124d0565b9998505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b602080825282518282018190526000918401906040840190835b8181101561278c5761277683855161251a565b6020939093019260a09290920191600101612763565b509095945050505050565b60006060820160608352808651808352608085019150602092506080838202860101838901855b8381101561280a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808884030185526127f883835161254a565b948601949250908501906001016127be565b50508581038487015261281d8189612495565b925050508381036040850152808551808352838301915083848202840101848801865b8381101561288c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe086840301855261287a8383516124d0565b94870194925090860190600101612840565b50909a9950505050505050505050565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b60608101600485106128d757fe5b938152602081019290925260409091015290565b60608101600885106128d757fe5b60a08101610bf7828461251a565b60006060825261291a606083018661254a565b846020840152828103604084015261264181856124d0565b90815260200190565b60008382526040602083015261295460408301846124d0565b949350505050565b918252602082015260400190565b60405181810167ffffffffffffffff8111828210171561298957600080fd5b604052919050565b600067ffffffffffffffff8211156129a7578081fd5b5060209081020190565b600067ffffffffffffffff8211156129c7578081fd5b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b83811015612a0e5781810151838201526020016129f6565b8381111561125a5750506000910152565b73ffffffffffffffffffffffffffffffffffffffff81168114610e8257600080fd5b6040805160048152602481019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff3b96b8d000000000000000000000000000000000000000000000000000000001790529056fea365627a7a72315820826d59d029e83bff7d5169ca9d1980eaeaebe5090c80d210339a3efeed64c68a6c6578706572696d656e74616cf564736f6c63430005110040" } } }, "compiler": { "name": "solc", - "version": "soljson-v0.5.17+commit.d19bba13.js", + "version": "0.5.17+commit.d19bba13", "settings": { "optimizer": { "enabled": true, diff --git a/packages/contract-artifacts/artifacts/Coordinator.json b/packages/contract-artifacts/artifacts/Coordinator.json index 3a117675d6..740df62b15 100644 --- a/packages/contract-artifacts/artifacts/Coordinator.json +++ b/packages/contract-artifacts/artifacts/Coordinator.json @@ -222,16 +222,16 @@ }, "evm": { "bytecode": { - "object": "0x60806040526002805460ff191690553480156200001b57600080fd5b5060405162002051380380620020518339810160408190526200003e91620001bf565b81818181600080309050620000b36040518060400160405280601781526020017f30782050726f746f636f6c20436f6f7264696e61746f72000000000000000000815250604051806040016040528060058152602001640332e302e360dc1b81525085846200016860201b62001dae1760201c565b6000908155925050506001600160a01b03821615620000d35781620000d5565b305b9050620001306040518060400160405280600b81526020016a0c1e08141c9bdd1bd8dbdb60aa1b815250604051806040016040528060058152602001640332e302e360dc1b81525085846200016860201b62001dae1760201c565b6001555050600280546001600160a01b03909316620100000262010000600160b01b03199093169290921790915550620001f9915050565b8351602094850120835193850193909320604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815295860194909452928401929092526060830152608082015260a0902090565b60008060408385031215620001d2578182fd5b82516001600160a01b0381168114620001e9578283fd5b6020939093015192949293505050565b611e4880620002096000396000f3fe6080604052600436106100b15760003560e01c8063da4fe07411610069578063ee55b9681161004e578063ee55b9681461018a578063fb6961cc146101b7578063fdd059a5146101cc576100b1565b8063da4fe07414610162578063e1c7157814610175576100b1565b806389fab5b71161009a57806389fab5b714610109578063b2562b7a1461012b578063c26cfecd14610140576100b1565b80630f7d8e39146100b357806352813679146100e9575b005b3480156100bf57600080fd5b506100d36100ce3660046116c1565b6101ec565b6040516100e09190611a14565b60405180910390f35b3480156100f557600080fd5b506100b1610104366004611888565b610455565b34801561011557600080fd5b5061011e610482565b6040516100e09190611c40565b34801561013757600080fd5b5061011e6104bb565b34801561014c57600080fd5b506101556104f4565b6040516100e09190611ba1565b6100b1610170366004611888565b6104fa565b34801561018157600080fd5b506101556105e8565b34801561019657600080fd5b506101aa6101a5366004611706565b61060c565b6040516100e09190611a35565b3480156101c357600080fd5b50610155610ac0565b3480156101d857600080fd5b506101556101e7366004611774565b610ac6565b80516000908061020a5761020a61020560008686610ad9565b610b7e565b60008360018551038151811061021c57fe5b016020015160f81c90506008811061023d5761023d61020560018787610ad9565b60008160ff16600881111561024e57fe5b9050600081600881111561025e57fe5b14156102785761027361020560028888610ad9565b61043c565b600181600881111561028657fe5b141561029b5761027361020560038888610ad9565b60028160088111156102a957fe5b141561038557826042146102c6576102c661020560008888610ad9565b6000856000815181106102d557fe5b016020015160f81c905060006102f287600163ffffffff610b8616565b9050600061030788602163ffffffff610b8616565b90506001898484846040516000815260200160405260405161032c9493929190611bce565b6020604051602081039080840390855afa15801561034e573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00151975061044f9650505050505050565b600381600881111561039357fe5b141561043c57826042146103b0576103b061020560008888610ad9565b6000856000815181106103bf57fe5b016020015160f81c905060006103dc87600163ffffffff610b8616565b905060006103f188602163ffffffff610b8616565b905060018960405160200161040691906119e3565b604051602081830303815290604052805190602001208484846040516000815260200160405260405161032c9493929190611bce565b61044b61020560018888610ad9565b5050505b92915050565b6060610464856080015161060c565b80519091501561047b5761047b8582868686610bb0565b5050505050565b6040518060400160405280601781526020017f30782050726f746f636f6c20436f6f7264696e61746f7200000000000000000081525081565b6040518060400160405280600581526020017f332e302e3000000000000000000000000000000000000000000000000000000081525081565b60015481565b61050684848484610455565b6002546040517f2280c9100000000000000000000000000000000000000000000000000000000081526201000090910473ffffffffffffffffffffffffffffffffffffffff1690632280c9109034906105659088908790600401611c53565b6000604051808303818588803b15801561057e57600080fd5b505af1158015610592573d6000803e3d6000fd5b50505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526105d99190810190611741565b506105e2610d5d565b50505050565b7fa6511c04ca44625d50986f8c36bedc09366207a17b96e347094053a9f850716881565b60606000610620838263ffffffff610d7316565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167f9b44d5560000000000000000000000000000000000000000000000000000000014806106b357507fffffffff0000000000000000000000000000000000000000000000000000000081167fe14b58c400000000000000000000000000000000000000000000000000000000145b1561073c576106c06112e5565b83516106d690859060049063ffffffff610dbf16565b8060200190516106e991908101906117fe565b604080516001808252818301909252919250816020015b6107086112e5565b815260200190600190039081610700579050509250808360008151811061072b57fe5b602002602001018190525050610aba565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f9694a4020000000000000000000000000000000000000000000000000000000014806107cd57507fffffffff0000000000000000000000000000000000000000000000000000000081167f8ea8dfe400000000000000000000000000000000000000000000000000000000145b8061081957507fffffffff0000000000000000000000000000000000000000000000000000000081167fbeee2e1400000000000000000000000000000000000000000000000000000000145b8061086557507fffffffff0000000000000000000000000000000000000000000000000000000081167f78d29ac100000000000000000000000000000000000000000000000000000000145b806108b157507fffffffff0000000000000000000000000000000000000000000000000000000081167f8bc8efb300000000000000000000000000000000000000000000000000000000145b806108fd57507fffffffff0000000000000000000000000000000000000000000000000000000081167f369da09900000000000000000000000000000000000000000000000000000000145b8061094957507fffffffff0000000000000000000000000000000000000000000000000000000081167fa6c3bf3300000000000000000000000000000000000000000000000000000000145b1561097e57825161096490849060049063ffffffff610dbf16565b8060200190516109779190810190611635565b9150610aba565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f88ec79fb000000000000000000000000000000000000000000000000000000001480610a0f57507fffffffff0000000000000000000000000000000000000000000000000000000081167fb718e29200000000000000000000000000000000000000000000000000000000145b15610aba57610a1c6112e5565b610a246112e5565b8451610a3a90869060049063ffffffff610dbf16565b806020019051610a4d9190810190611831565b60408051600280825260608201909252929450909250816020015b610a706112e5565b815260200190600190039081610a685790505093508184600081518110610a9357fe5b60200260200101819052508084600181518110610aac57fe5b602002602001018190525050505b50919050565b60005481565b600061044f610ad483610e46565b610e99565b606063779c522360e01b848484604051602401610af893929190611c0e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290509392505050565b805160208201fd5b60008160200183511015610ba757610ba76102056005855185602001610ea7565b50016020015190565b3273ffffffffffffffffffffffffffffffffffffffff841614610bd957610bd961020584610ec6565b6000610be786600154610f65565b60408051600080825260208201909252845192935091905b818114610c9057610c0e6113ac565b60405180606001604052808973ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018881525090506000610c4c82610ac6565b90506000610c6d82898681518110610c6057fe5b60200260200101516101ec565b9050610c7f868263ffffffff610f7916565b95505060019092019150610bff9050565b50610ca1823263ffffffff610f7916565b875190925060005b818114610d5157600073ffffffffffffffffffffffffffffffffffffffff16898281518110610cd457fe5b60200260200101516060015173ffffffffffffffffffffffffffffffffffffffff161415610d0157610d49565b6000898281518110610d0f57fe5b60200260200101516040015190506000610d32828761101b90919063ffffffff16565b905080610d4657610d466102058884611053565b50505b600101610ca9565b50505050505050505050565b610d656110f5565b610d7157610d71611103565b565b60008160040183511015610d9457610d946102056003855185600401610ea7565b5001602001517fffffffff000000000000000000000000000000000000000000000000000000001690565b606081831115610dd857610dd861020560008585610ea7565b8351821115610df157610df16102056001848751610ea7565b8282036040519080825280601f01601f191660200182016040528015610e1e576020820181803883390190505b509050610e3f610e2d8261113c565b84610e378761113c565b018351611142565b9392505050565b604081810151825160209384015182519285019290922083517fa6511c04ca44625d50986f8c36bedc09366207a17b96e347094053a9f85071688152948501919091529183015260608201526080902090565b600061044f60005483611206565b6060632800659560e01b848484604051602401610af893929190611bec565b606063a458d7ff60e01b82604051602401610ee19190611a14565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050919050565b6000610e3f82610f7485611240565b611206565b815160405160609184906020808202808401820192910182851015610fa557610fa561020586856112c8565b82851115610fbf57610fb8858583611142565b8497508793505b60018201915060208101905080840192508294508188528460405286886001840381518110610fea57fe5b73ffffffffffffffffffffffffffffffffffffffff9092166020928302919091019091015250959695505050505050565b60006020835102602084018181018192505b8083101561044b5782518086141561104757600194508193505b5060208301925061102d565b606063d789b64060e01b8383604051602401611070929190611baa565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905092915050565b600254610100900460ff1690565b47801561113957604051339082156108fc029083906000818181858888f19350505050158015611137573d6000803e3d6000fd5b505b50565b60200190565b602081101561116c576001816020036101000a038019835116818551168082178652505050611201565b8282141561117957611201565b828211156111b35760208103905080820181840181515b828510156111ab578451865260209586019590940193611190565b905250611201565b60208103905080820181840183515b818612156111fc57825182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe092830192909101906111c2565b855250505b505050565b6040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b608081810151825160208085015160408087015160609788015186519685019690962082517fec69816980a3a3ca4554410e60253953e9ff375ba4536a98adfa15cc71541508815294850195909552908301919091529481019490945273ffffffffffffffffffffffffffffffffffffffff9091169183019190915260a082015260c0902090565b6060635fc8372260e01b8383604051602401611070929190611cc9565b604051806101c00160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001606081526020016060815260200160608152602001606081525090565b6040805160608082018352600080835260208301529181019190915290565b803561044f81611d8c565b805161044f81611d8c565b600082601f8301126113f1578081fd5b81356114046113ff82611cfe565b611cd7565b8181529150602080830190840160005b838110156114415761142c876020843589010161144b565b83526020928301929190910190600101611414565b5050505092915050565b600082601f83011261145b578081fd5b81356114696113ff82611d1e565b915080825283602082850101111561148057600080fd5b8060208401602084013760009082016020015292915050565b600082601f8301126114a9578081fd5b81516114b76113ff82611d1e565b91508082528360208285010111156114ce57600080fd5b6114df816020840160208601611d60565b5092915050565b60006101c08083850312156114f9578182fd5b61150281611cd7565b91505061150f83836113d6565b815261151e83602084016113d6565b602082015261153083604084016113d6565b604082015261154283606084016113d6565b60608201526080820151608082015260a082015160a082015260c082015160c082015260e082015160e08201526101008083015181830152506101208083015181830152506101408083015167ffffffffffffffff808211156115a457600080fd5b6115b086838701611499565b838501526101609250828501519150808211156115cc57600080fd5b6115d886838701611499565b838501526101809250828501519150808211156115f457600080fd5b61160086838701611499565b838501526101a092508285015191508082111561161c57600080fd5b5061162985828601611499565b82840152505092915050565b60006020808385031215611647578182fd5b825167ffffffffffffffff81111561165d578283fd5b80840185601f82011261166e578384fd5b8051915061167e6113ff83611cfe565b82815283810190828501865b858110156116b3576116a18a8884518801016114e6565b8452928601929086019060010161168a565b509098975050505050505050565b600080604083850312156116d3578081fd5b82359150602083013567ffffffffffffffff8111156116f0578182fd5b6116fc8582860161144b565b9150509250929050565b600060208284031215611717578081fd5b813567ffffffffffffffff81111561172d578182fd5b6117398482850161144b565b949350505050565b600060208284031215611752578081fd5b815167ffffffffffffffff811115611768578182fd5b61173984828501611499565b600060208284031215611785578081fd5b813567ffffffffffffffff8082111561179c578283fd5b818401606081870312156117ae578384fd5b6117b86060611cd7565b925080356117c581611d8c565b8352602081810135908401526040810135828111156117e2578485fd5b6117ee8782840161144b565b6040850152509195945050505050565b60006020828403121561180f578081fd5b815167ffffffffffffffff811115611825578182fd5b611739848285016114e6565b60008060408385031215611843578182fd5b825167ffffffffffffffff8082111561185a578384fd5b611866868387016114e6565b9350602085015191508082111561187b578283fd5b506116fc858286016114e6565b6000806000806080858703121561189d578182fd5b843567ffffffffffffffff808211156118b4578384fd5b81870160a0818a0312156118c6578485fd5b6118d060a0611cd7565b92508035835260208101356020840152604081013560408401526118f789606083016113cb565b606084015260808101358281111561190d578586fd5b6119198a82840161144b565b6080850152505081955061193088602089016113cb565b94506040870135915080821115611945578384fd5b6119518883890161144b565b93506060870135915080821115611966578283fd5b50611973878288016113e1565b91505092959194509250565b73ffffffffffffffffffffffffffffffffffffffff169052565b600081518084526119b1816020860160208601611d60565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c810191909152603c0190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6000602080830181845280855180835260408601915060408482028701019250838701855b82811015611b94577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845281516101c0611a9987835161197f565b87820151611aa98989018261197f565b506040820151611abc604089018261197f565b506060820151611acf606089018261197f565b506080820151608088015260a082015160a088015260c082015160c088015260e082015160e08801526101008083015181890152506101208083015181890152506101408083015182828a0152611b28838a0182611999565b915050610160915081830151888203838a0152611b458282611999565b9250505061018080830151888303828a0152611b618382611999565b9150506101a0915081830151888203838a0152611b7e8282611999565b9850505094870194505090850190600101611a5a565b5092979650505050505050565b90815260200190565b91825273ffffffffffffffffffffffffffffffffffffffff16602082015260400190565b93845260ff9290921660208401526040830152606082015260800190565b6060810160088510611bfa57fe5b938152602081019290925260409091015290565b600060048510611c1a57fe5b84825283602083015260606040830152611c376060830184611999565b95945050505050565b600060208252610e3f6020830184611999565b60006040825283516040830152602084015160608301526040840151608083015273ffffffffffffffffffffffffffffffffffffffff60608501511660a0830152608084015160a060c0840152611cad60e0840182611999565b8381036020850152611cbf8186611999565b9695505050505050565b918252602082015260400190565b60405181810167ffffffffffffffff81118282101715611cf657600080fd5b604052919050565b600067ffffffffffffffff821115611d14578081fd5b5060209081020190565b600067ffffffffffffffff821115611d34578081fd5b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b83811015611d7b578181015183820152602001611d63565b838111156105e25750506000910152565b73ffffffffffffffffffffffffffffffffffffffff8116811461113957600080fd5b8351602094850120835193850193909320604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815295860194909452928401929092526060830152608082015260a090209056fea365627a7a72315820353fada6a7d942697f3b4ca6576b433bad3cc0e8814b93adb94bd3e1d3df52df6c6578706572696d656e74616cf564736f6c63430005110040" + "object": "0x60806040526002805460ff191690553480156200001b57600080fd5b5060405162002051380380620020518339810160408190526200003e91620001bf565b81818181600080309050620000b36040518060400160405280601781526020017f30782050726f746f636f6c20436f6f7264696e61746f72000000000000000000815250604051806040016040528060058152602001640332e302e360dc1b81525085846200016860201b62001dae1760201c565b6000908155925050506001600160a01b03821615620000d35781620000d5565b305b9050620001306040518060400160405280600b81526020016a0c1e08141c9bdd1bd8dbdb60aa1b815250604051806040016040528060058152602001640332e302e360dc1b81525085846200016860201b62001dae1760201c565b6001555050600280546001600160a01b03909316620100000262010000600160b01b03199093169290921790915550620001f9915050565b8351602094850120835193850193909320604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815295860194909452928401929092526060830152608082015260a0902090565b60008060408385031215620001d2578182fd5b82516001600160a01b0381168114620001e9578283fd5b6020939093015192949293505050565b611e4880620002096000396000f3fe6080604052600436106100b15760003560e01c8063da4fe07411610069578063ee55b9681161004e578063ee55b9681461018a578063fb6961cc146101b7578063fdd059a5146101cc576100b1565b8063da4fe07414610162578063e1c7157814610175576100b1565b806389fab5b71161009a57806389fab5b714610109578063b2562b7a1461012b578063c26cfecd14610140576100b1565b80630f7d8e39146100b357806352813679146100e9575b005b3480156100bf57600080fd5b506100d36100ce3660046116c1565b6101ec565b6040516100e09190611a14565b60405180910390f35b3480156100f557600080fd5b506100b1610104366004611888565b610455565b34801561011557600080fd5b5061011e610482565b6040516100e09190611c40565b34801561013757600080fd5b5061011e6104bb565b34801561014c57600080fd5b506101556104f4565b6040516100e09190611ba1565b6100b1610170366004611888565b6104fa565b34801561018157600080fd5b506101556105e8565b34801561019657600080fd5b506101aa6101a5366004611706565b61060c565b6040516100e09190611a35565b3480156101c357600080fd5b50610155610ac0565b3480156101d857600080fd5b506101556101e7366004611774565b610ac6565b80516000908061020a5761020a61020560008686610ad9565b610b7e565b60008360018551038151811061021c57fe5b016020015160f81c90506008811061023d5761023d61020560018787610ad9565b60008160ff16600881111561024e57fe5b9050600081600881111561025e57fe5b14156102785761027361020560028888610ad9565b61043c565b600181600881111561028657fe5b141561029b5761027361020560038888610ad9565b60028160088111156102a957fe5b141561038557826042146102c6576102c661020560008888610ad9565b6000856000815181106102d557fe5b016020015160f81c905060006102f287600163ffffffff610b8616565b9050600061030788602163ffffffff610b8616565b90506001898484846040516000815260200160405260405161032c9493929190611bce565b6020604051602081039080840390855afa15801561034e573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00151975061044f9650505050505050565b600381600881111561039357fe5b141561043c57826042146103b0576103b061020560008888610ad9565b6000856000815181106103bf57fe5b016020015160f81c905060006103dc87600163ffffffff610b8616565b905060006103f188602163ffffffff610b8616565b905060018960405160200161040691906119e3565b604051602081830303815290604052805190602001208484846040516000815260200160405260405161032c9493929190611bce565b61044b61020560018888610ad9565b5050505b92915050565b6060610464856080015161060c565b80519091501561047b5761047b8582868686610bb0565b5050505050565b6040518060400160405280601781526020017f30782050726f746f636f6c20436f6f7264696e61746f7200000000000000000081525081565b6040518060400160405280600581526020017f332e302e3000000000000000000000000000000000000000000000000000000081525081565b60015481565b61050684848484610455565b6002546040517f2280c9100000000000000000000000000000000000000000000000000000000081526201000090910473ffffffffffffffffffffffffffffffffffffffff1690632280c9109034906105659088908790600401611c53565b6000604051808303818588803b15801561057e57600080fd5b505af1158015610592573d6000803e3d6000fd5b50505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526105d99190810190611741565b506105e2610d5d565b50505050565b7fa6511c04ca44625d50986f8c36bedc09366207a17b96e347094053a9f850716881565b60606000610620838263ffffffff610d7316565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167f9b44d5560000000000000000000000000000000000000000000000000000000014806106b357507fffffffff0000000000000000000000000000000000000000000000000000000081167fe14b58c400000000000000000000000000000000000000000000000000000000145b1561073c576106c06112e5565b83516106d690859060049063ffffffff610dbf16565b8060200190516106e991908101906117fe565b604080516001808252818301909252919250816020015b6107086112e5565b815260200190600190039081610700579050509250808360008151811061072b57fe5b602002602001018190525050610aba565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f9694a4020000000000000000000000000000000000000000000000000000000014806107cd57507fffffffff0000000000000000000000000000000000000000000000000000000081167f8ea8dfe400000000000000000000000000000000000000000000000000000000145b8061081957507fffffffff0000000000000000000000000000000000000000000000000000000081167fbeee2e1400000000000000000000000000000000000000000000000000000000145b8061086557507fffffffff0000000000000000000000000000000000000000000000000000000081167f78d29ac100000000000000000000000000000000000000000000000000000000145b806108b157507fffffffff0000000000000000000000000000000000000000000000000000000081167f8bc8efb300000000000000000000000000000000000000000000000000000000145b806108fd57507fffffffff0000000000000000000000000000000000000000000000000000000081167f369da09900000000000000000000000000000000000000000000000000000000145b8061094957507fffffffff0000000000000000000000000000000000000000000000000000000081167fa6c3bf3300000000000000000000000000000000000000000000000000000000145b1561097e57825161096490849060049063ffffffff610dbf16565b8060200190516109779190810190611635565b9150610aba565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f88ec79fb000000000000000000000000000000000000000000000000000000001480610a0f57507fffffffff0000000000000000000000000000000000000000000000000000000081167fb718e29200000000000000000000000000000000000000000000000000000000145b15610aba57610a1c6112e5565b610a246112e5565b8451610a3a90869060049063ffffffff610dbf16565b806020019051610a4d9190810190611831565b60408051600280825260608201909252929450909250816020015b610a706112e5565b815260200190600190039081610a685790505093508184600081518110610a9357fe5b60200260200101819052508084600181518110610aac57fe5b602002602001018190525050505b50919050565b60005481565b600061044f610ad483610e46565b610e99565b606063779c522360e01b848484604051602401610af893929190611c0e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290509392505050565b805160208201fd5b60008160200183511015610ba757610ba76102056005855185602001610ea7565b50016020015190565b3273ffffffffffffffffffffffffffffffffffffffff841614610bd957610bd961020584610ec6565b6000610be786600154610f65565b60408051600080825260208201909252845192935091905b818114610c9057610c0e6113ac565b60405180606001604052808973ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018881525090506000610c4c82610ac6565b90506000610c6d82898681518110610c6057fe5b60200260200101516101ec565b9050610c7f868263ffffffff610f7916565b95505060019092019150610bff9050565b50610ca1823263ffffffff610f7916565b875190925060005b818114610d5157600073ffffffffffffffffffffffffffffffffffffffff16898281518110610cd457fe5b60200260200101516060015173ffffffffffffffffffffffffffffffffffffffff161415610d0157610d49565b6000898281518110610d0f57fe5b60200260200101516040015190506000610d32828761101b90919063ffffffff16565b905080610d4657610d466102058884611053565b50505b600101610ca9565b50505050505050505050565b610d656110f5565b610d7157610d71611103565b565b60008160040183511015610d9457610d946102056003855185600401610ea7565b5001602001517fffffffff000000000000000000000000000000000000000000000000000000001690565b606081831115610dd857610dd861020560008585610ea7565b8351821115610df157610df16102056001848751610ea7565b8282036040519080825280601f01601f191660200182016040528015610e1e576020820181803883390190505b509050610e3f610e2d8261113c565b84610e378761113c565b018351611142565b9392505050565b604081810151825160209384015182519285019290922083517fa6511c04ca44625d50986f8c36bedc09366207a17b96e347094053a9f85071688152948501919091529183015260608201526080902090565b600061044f60005483611206565b6060632800659560e01b848484604051602401610af893929190611bec565b606063a458d7ff60e01b82604051602401610ee19190611a14565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050919050565b6000610e3f82610f7485611240565b611206565b815160405160609184906020808202808401820192910182851015610fa557610fa561020586856112c8565b82851115610fbf57610fb8858583611142565b8497508793505b60018201915060208101905080840192508294508188528460405286886001840381518110610fea57fe5b73ffffffffffffffffffffffffffffffffffffffff9092166020928302919091019091015250959695505050505050565b60006020835102602084018181018192505b8083101561044b5782518086141561104757600194508193505b5060208301925061102d565b606063d789b64060e01b8383604051602401611070929190611baa565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905092915050565b600254610100900460ff1690565b47801561113957604051339082156108fc029083906000818181858888f19350505050158015611137573d6000803e3d6000fd5b505b50565b60200190565b602081101561116c576001816020036101000a038019835116818551168082178652505050611201565b8282141561117957611201565b828211156111b35760208103905080820181840181515b828510156111ab578451865260209586019590940193611190565b905250611201565b60208103905080820181840183515b818612156111fc57825182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe092830192909101906111c2565b855250505b505050565b6040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b608081810151825160208085015160408087015160609788015186519685019690962082517fec69816980a3a3ca4554410e60253953e9ff375ba4536a98adfa15cc71541508815294850195909552908301919091529481019490945273ffffffffffffffffffffffffffffffffffffffff9091169183019190915260a082015260c0902090565b6060635fc8372260e01b8383604051602401611070929190611cc9565b604051806101c00160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001606081526020016060815260200160608152602001606081525090565b6040805160608082018352600080835260208301529181019190915290565b803561044f81611d8c565b805161044f81611d8c565b600082601f8301126113f1578081fd5b81356114046113ff82611cfe565b611cd7565b8181529150602080830190840160005b838110156114415761142c876020843589010161144b565b83526020928301929190910190600101611414565b5050505092915050565b600082601f83011261145b578081fd5b81356114696113ff82611d1e565b915080825283602082850101111561148057600080fd5b8060208401602084013760009082016020015292915050565b600082601f8301126114a9578081fd5b81516114b76113ff82611d1e565b91508082528360208285010111156114ce57600080fd5b6114df816020840160208601611d60565b5092915050565b60006101c08083850312156114f9578182fd5b61150281611cd7565b91505061150f83836113d6565b815261151e83602084016113d6565b602082015261153083604084016113d6565b604082015261154283606084016113d6565b60608201526080820151608082015260a082015160a082015260c082015160c082015260e082015160e08201526101008083015181830152506101208083015181830152506101408083015167ffffffffffffffff808211156115a457600080fd5b6115b086838701611499565b838501526101609250828501519150808211156115cc57600080fd5b6115d886838701611499565b838501526101809250828501519150808211156115f457600080fd5b61160086838701611499565b838501526101a092508285015191508082111561161c57600080fd5b5061162985828601611499565b82840152505092915050565b60006020808385031215611647578182fd5b825167ffffffffffffffff81111561165d578283fd5b80840185601f82011261166e578384fd5b8051915061167e6113ff83611cfe565b82815283810190828501865b858110156116b3576116a18a8884518801016114e6565b8452928601929086019060010161168a565b509098975050505050505050565b600080604083850312156116d3578081fd5b82359150602083013567ffffffffffffffff8111156116f0578182fd5b6116fc8582860161144b565b9150509250929050565b600060208284031215611717578081fd5b813567ffffffffffffffff81111561172d578182fd5b6117398482850161144b565b949350505050565b600060208284031215611752578081fd5b815167ffffffffffffffff811115611768578182fd5b61173984828501611499565b600060208284031215611785578081fd5b813567ffffffffffffffff8082111561179c578283fd5b818401606081870312156117ae578384fd5b6117b86060611cd7565b925080356117c581611d8c565b8352602081810135908401526040810135828111156117e2578485fd5b6117ee8782840161144b565b6040850152509195945050505050565b60006020828403121561180f578081fd5b815167ffffffffffffffff811115611825578182fd5b611739848285016114e6565b60008060408385031215611843578182fd5b825167ffffffffffffffff8082111561185a578384fd5b611866868387016114e6565b9350602085015191508082111561187b578283fd5b506116fc858286016114e6565b6000806000806080858703121561189d578182fd5b843567ffffffffffffffff808211156118b4578384fd5b81870160a0818a0312156118c6578485fd5b6118d060a0611cd7565b92508035835260208101356020840152604081013560408401526118f789606083016113cb565b606084015260808101358281111561190d578586fd5b6119198a82840161144b565b6080850152505081955061193088602089016113cb565b94506040870135915080821115611945578384fd5b6119518883890161144b565b93506060870135915080821115611966578283fd5b50611973878288016113e1565b91505092959194509250565b73ffffffffffffffffffffffffffffffffffffffff169052565b600081518084526119b1816020860160208601611d60565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c810191909152603c0190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6000602080830181845280855180835260408601915060408482028701019250838701855b82811015611b94577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845281516101c0611a9987835161197f565b87820151611aa98989018261197f565b506040820151611abc604089018261197f565b506060820151611acf606089018261197f565b506080820151608088015260a082015160a088015260c082015160c088015260e082015160e08801526101008083015181890152506101208083015181890152506101408083015182828a0152611b28838a0182611999565b915050610160915081830151888203838a0152611b458282611999565b9250505061018080830151888303828a0152611b618382611999565b9150506101a0915081830151888203838a0152611b7e8282611999565b9850505094870194505090850190600101611a5a565b5092979650505050505050565b90815260200190565b91825273ffffffffffffffffffffffffffffffffffffffff16602082015260400190565b93845260ff9290921660208401526040830152606082015260800190565b6060810160088510611bfa57fe5b938152602081019290925260409091015290565b600060048510611c1a57fe5b84825283602083015260606040830152611c376060830184611999565b95945050505050565b600060208252610e3f6020830184611999565b60006040825283516040830152602084015160608301526040840151608083015273ffffffffffffffffffffffffffffffffffffffff60608501511660a0830152608084015160a060c0840152611cad60e0840182611999565b8381036020850152611cbf8186611999565b9695505050505050565b918252602082015260400190565b60405181810167ffffffffffffffff81118282101715611cf657600080fd5b604052919050565b600067ffffffffffffffff821115611d14578081fd5b5060209081020190565b600067ffffffffffffffff821115611d34578081fd5b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b83811015611d7b578181015183820152602001611d63565b838111156105e25750506000910152565b73ffffffffffffffffffffffffffffffffffffffff8116811461113957600080fd5b8351602094850120835193850193909320604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815295860194909452928401929092526060830152608082015260a090209056fea365627a7a7231582007e5f7bd880cb0d15a4c34ad2fa0c2f83e1dd1cd069daf9b35a429946bbcc3226c6578706572696d656e74616cf564736f6c63430005110040" }, "deployedBytecode": { - "object": "0x6080604052600436106100b15760003560e01c8063da4fe07411610069578063ee55b9681161004e578063ee55b9681461018a578063fb6961cc146101b7578063fdd059a5146101cc576100b1565b8063da4fe07414610162578063e1c7157814610175576100b1565b806389fab5b71161009a57806389fab5b714610109578063b2562b7a1461012b578063c26cfecd14610140576100b1565b80630f7d8e39146100b357806352813679146100e9575b005b3480156100bf57600080fd5b506100d36100ce3660046116c1565b6101ec565b6040516100e09190611a14565b60405180910390f35b3480156100f557600080fd5b506100b1610104366004611888565b610455565b34801561011557600080fd5b5061011e610482565b6040516100e09190611c40565b34801561013757600080fd5b5061011e6104bb565b34801561014c57600080fd5b506101556104f4565b6040516100e09190611ba1565b6100b1610170366004611888565b6104fa565b34801561018157600080fd5b506101556105e8565b34801561019657600080fd5b506101aa6101a5366004611706565b61060c565b6040516100e09190611a35565b3480156101c357600080fd5b50610155610ac0565b3480156101d857600080fd5b506101556101e7366004611774565b610ac6565b80516000908061020a5761020a61020560008686610ad9565b610b7e565b60008360018551038151811061021c57fe5b016020015160f81c90506008811061023d5761023d61020560018787610ad9565b60008160ff16600881111561024e57fe5b9050600081600881111561025e57fe5b14156102785761027361020560028888610ad9565b61043c565b600181600881111561028657fe5b141561029b5761027361020560038888610ad9565b60028160088111156102a957fe5b141561038557826042146102c6576102c661020560008888610ad9565b6000856000815181106102d557fe5b016020015160f81c905060006102f287600163ffffffff610b8616565b9050600061030788602163ffffffff610b8616565b90506001898484846040516000815260200160405260405161032c9493929190611bce565b6020604051602081039080840390855afa15801561034e573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00151975061044f9650505050505050565b600381600881111561039357fe5b141561043c57826042146103b0576103b061020560008888610ad9565b6000856000815181106103bf57fe5b016020015160f81c905060006103dc87600163ffffffff610b8616565b905060006103f188602163ffffffff610b8616565b905060018960405160200161040691906119e3565b604051602081830303815290604052805190602001208484846040516000815260200160405260405161032c9493929190611bce565b61044b61020560018888610ad9565b5050505b92915050565b6060610464856080015161060c565b80519091501561047b5761047b8582868686610bb0565b5050505050565b6040518060400160405280601781526020017f30782050726f746f636f6c20436f6f7264696e61746f7200000000000000000081525081565b6040518060400160405280600581526020017f332e302e3000000000000000000000000000000000000000000000000000000081525081565b60015481565b61050684848484610455565b6002546040517f2280c9100000000000000000000000000000000000000000000000000000000081526201000090910473ffffffffffffffffffffffffffffffffffffffff1690632280c9109034906105659088908790600401611c53565b6000604051808303818588803b15801561057e57600080fd5b505af1158015610592573d6000803e3d6000fd5b50505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526105d99190810190611741565b506105e2610d5d565b50505050565b7fa6511c04ca44625d50986f8c36bedc09366207a17b96e347094053a9f850716881565b60606000610620838263ffffffff610d7316565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167f9b44d5560000000000000000000000000000000000000000000000000000000014806106b357507fffffffff0000000000000000000000000000000000000000000000000000000081167fe14b58c400000000000000000000000000000000000000000000000000000000145b1561073c576106c06112e5565b83516106d690859060049063ffffffff610dbf16565b8060200190516106e991908101906117fe565b604080516001808252818301909252919250816020015b6107086112e5565b815260200190600190039081610700579050509250808360008151811061072b57fe5b602002602001018190525050610aba565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f9694a4020000000000000000000000000000000000000000000000000000000014806107cd57507fffffffff0000000000000000000000000000000000000000000000000000000081167f8ea8dfe400000000000000000000000000000000000000000000000000000000145b8061081957507fffffffff0000000000000000000000000000000000000000000000000000000081167fbeee2e1400000000000000000000000000000000000000000000000000000000145b8061086557507fffffffff0000000000000000000000000000000000000000000000000000000081167f78d29ac100000000000000000000000000000000000000000000000000000000145b806108b157507fffffffff0000000000000000000000000000000000000000000000000000000081167f8bc8efb300000000000000000000000000000000000000000000000000000000145b806108fd57507fffffffff0000000000000000000000000000000000000000000000000000000081167f369da09900000000000000000000000000000000000000000000000000000000145b8061094957507fffffffff0000000000000000000000000000000000000000000000000000000081167fa6c3bf3300000000000000000000000000000000000000000000000000000000145b1561097e57825161096490849060049063ffffffff610dbf16565b8060200190516109779190810190611635565b9150610aba565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f88ec79fb000000000000000000000000000000000000000000000000000000001480610a0f57507fffffffff0000000000000000000000000000000000000000000000000000000081167fb718e29200000000000000000000000000000000000000000000000000000000145b15610aba57610a1c6112e5565b610a246112e5565b8451610a3a90869060049063ffffffff610dbf16565b806020019051610a4d9190810190611831565b60408051600280825260608201909252929450909250816020015b610a706112e5565b815260200190600190039081610a685790505093508184600081518110610a9357fe5b60200260200101819052508084600181518110610aac57fe5b602002602001018190525050505b50919050565b60005481565b600061044f610ad483610e46565b610e99565b606063779c522360e01b848484604051602401610af893929190611c0e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290509392505050565b805160208201fd5b60008160200183511015610ba757610ba76102056005855185602001610ea7565b50016020015190565b3273ffffffffffffffffffffffffffffffffffffffff841614610bd957610bd961020584610ec6565b6000610be786600154610f65565b60408051600080825260208201909252845192935091905b818114610c9057610c0e6113ac565b60405180606001604052808973ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018881525090506000610c4c82610ac6565b90506000610c6d82898681518110610c6057fe5b60200260200101516101ec565b9050610c7f868263ffffffff610f7916565b95505060019092019150610bff9050565b50610ca1823263ffffffff610f7916565b875190925060005b818114610d5157600073ffffffffffffffffffffffffffffffffffffffff16898281518110610cd457fe5b60200260200101516060015173ffffffffffffffffffffffffffffffffffffffff161415610d0157610d49565b6000898281518110610d0f57fe5b60200260200101516040015190506000610d32828761101b90919063ffffffff16565b905080610d4657610d466102058884611053565b50505b600101610ca9565b50505050505050505050565b610d656110f5565b610d7157610d71611103565b565b60008160040183511015610d9457610d946102056003855185600401610ea7565b5001602001517fffffffff000000000000000000000000000000000000000000000000000000001690565b606081831115610dd857610dd861020560008585610ea7565b8351821115610df157610df16102056001848751610ea7565b8282036040519080825280601f01601f191660200182016040528015610e1e576020820181803883390190505b509050610e3f610e2d8261113c565b84610e378761113c565b018351611142565b9392505050565b604081810151825160209384015182519285019290922083517fa6511c04ca44625d50986f8c36bedc09366207a17b96e347094053a9f85071688152948501919091529183015260608201526080902090565b600061044f60005483611206565b6060632800659560e01b848484604051602401610af893929190611bec565b606063a458d7ff60e01b82604051602401610ee19190611a14565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050919050565b6000610e3f82610f7485611240565b611206565b815160405160609184906020808202808401820192910182851015610fa557610fa561020586856112c8565b82851115610fbf57610fb8858583611142565b8497508793505b60018201915060208101905080840192508294508188528460405286886001840381518110610fea57fe5b73ffffffffffffffffffffffffffffffffffffffff9092166020928302919091019091015250959695505050505050565b60006020835102602084018181018192505b8083101561044b5782518086141561104757600194508193505b5060208301925061102d565b606063d789b64060e01b8383604051602401611070929190611baa565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905092915050565b600254610100900460ff1690565b47801561113957604051339082156108fc029083906000818181858888f19350505050158015611137573d6000803e3d6000fd5b505b50565b60200190565b602081101561116c576001816020036101000a038019835116818551168082178652505050611201565b8282141561117957611201565b828211156111b35760208103905080820181840181515b828510156111ab578451865260209586019590940193611190565b905250611201565b60208103905080820181840183515b818612156111fc57825182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe092830192909101906111c2565b855250505b505050565b6040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b608081810151825160208085015160408087015160609788015186519685019690962082517fec69816980a3a3ca4554410e60253953e9ff375ba4536a98adfa15cc71541508815294850195909552908301919091529481019490945273ffffffffffffffffffffffffffffffffffffffff9091169183019190915260a082015260c0902090565b6060635fc8372260e01b8383604051602401611070929190611cc9565b604051806101c00160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001606081526020016060815260200160608152602001606081525090565b6040805160608082018352600080835260208301529181019190915290565b803561044f81611d8c565b805161044f81611d8c565b600082601f8301126113f1578081fd5b81356114046113ff82611cfe565b611cd7565b8181529150602080830190840160005b838110156114415761142c876020843589010161144b565b83526020928301929190910190600101611414565b5050505092915050565b600082601f83011261145b578081fd5b81356114696113ff82611d1e565b915080825283602082850101111561148057600080fd5b8060208401602084013760009082016020015292915050565b600082601f8301126114a9578081fd5b81516114b76113ff82611d1e565b91508082528360208285010111156114ce57600080fd5b6114df816020840160208601611d60565b5092915050565b60006101c08083850312156114f9578182fd5b61150281611cd7565b91505061150f83836113d6565b815261151e83602084016113d6565b602082015261153083604084016113d6565b604082015261154283606084016113d6565b60608201526080820151608082015260a082015160a082015260c082015160c082015260e082015160e08201526101008083015181830152506101208083015181830152506101408083015167ffffffffffffffff808211156115a457600080fd5b6115b086838701611499565b838501526101609250828501519150808211156115cc57600080fd5b6115d886838701611499565b838501526101809250828501519150808211156115f457600080fd5b61160086838701611499565b838501526101a092508285015191508082111561161c57600080fd5b5061162985828601611499565b82840152505092915050565b60006020808385031215611647578182fd5b825167ffffffffffffffff81111561165d578283fd5b80840185601f82011261166e578384fd5b8051915061167e6113ff83611cfe565b82815283810190828501865b858110156116b3576116a18a8884518801016114e6565b8452928601929086019060010161168a565b509098975050505050505050565b600080604083850312156116d3578081fd5b82359150602083013567ffffffffffffffff8111156116f0578182fd5b6116fc8582860161144b565b9150509250929050565b600060208284031215611717578081fd5b813567ffffffffffffffff81111561172d578182fd5b6117398482850161144b565b949350505050565b600060208284031215611752578081fd5b815167ffffffffffffffff811115611768578182fd5b61173984828501611499565b600060208284031215611785578081fd5b813567ffffffffffffffff8082111561179c578283fd5b818401606081870312156117ae578384fd5b6117b86060611cd7565b925080356117c581611d8c565b8352602081810135908401526040810135828111156117e2578485fd5b6117ee8782840161144b565b6040850152509195945050505050565b60006020828403121561180f578081fd5b815167ffffffffffffffff811115611825578182fd5b611739848285016114e6565b60008060408385031215611843578182fd5b825167ffffffffffffffff8082111561185a578384fd5b611866868387016114e6565b9350602085015191508082111561187b578283fd5b506116fc858286016114e6565b6000806000806080858703121561189d578182fd5b843567ffffffffffffffff808211156118b4578384fd5b81870160a0818a0312156118c6578485fd5b6118d060a0611cd7565b92508035835260208101356020840152604081013560408401526118f789606083016113cb565b606084015260808101358281111561190d578586fd5b6119198a82840161144b565b6080850152505081955061193088602089016113cb565b94506040870135915080821115611945578384fd5b6119518883890161144b565b93506060870135915080821115611966578283fd5b50611973878288016113e1565b91505092959194509250565b73ffffffffffffffffffffffffffffffffffffffff169052565b600081518084526119b1816020860160208601611d60565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c810191909152603c0190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6000602080830181845280855180835260408601915060408482028701019250838701855b82811015611b94577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845281516101c0611a9987835161197f565b87820151611aa98989018261197f565b506040820151611abc604089018261197f565b506060820151611acf606089018261197f565b506080820151608088015260a082015160a088015260c082015160c088015260e082015160e08801526101008083015181890152506101208083015181890152506101408083015182828a0152611b28838a0182611999565b915050610160915081830151888203838a0152611b458282611999565b9250505061018080830151888303828a0152611b618382611999565b9150506101a0915081830151888203838a0152611b7e8282611999565b9850505094870194505090850190600101611a5a565b5092979650505050505050565b90815260200190565b91825273ffffffffffffffffffffffffffffffffffffffff16602082015260400190565b93845260ff9290921660208401526040830152606082015260800190565b6060810160088510611bfa57fe5b938152602081019290925260409091015290565b600060048510611c1a57fe5b84825283602083015260606040830152611c376060830184611999565b95945050505050565b600060208252610e3f6020830184611999565b60006040825283516040830152602084015160608301526040840151608083015273ffffffffffffffffffffffffffffffffffffffff60608501511660a0830152608084015160a060c0840152611cad60e0840182611999565b8381036020850152611cbf8186611999565b9695505050505050565b918252602082015260400190565b60405181810167ffffffffffffffff81118282101715611cf657600080fd5b604052919050565b600067ffffffffffffffff821115611d14578081fd5b5060209081020190565b600067ffffffffffffffff821115611d34578081fd5b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b83811015611d7b578181015183820152602001611d63565b838111156105e25750506000910152565b73ffffffffffffffffffffffffffffffffffffffff8116811461113957600080fd5b8351602094850120835193850193909320604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815295860194909452928401929092526060830152608082015260a090209056fea365627a7a72315820353fada6a7d942697f3b4ca6576b433bad3cc0e8814b93adb94bd3e1d3df52df6c6578706572696d656e74616cf564736f6c63430005110040" + "object": "0x6080604052600436106100b15760003560e01c8063da4fe07411610069578063ee55b9681161004e578063ee55b9681461018a578063fb6961cc146101b7578063fdd059a5146101cc576100b1565b8063da4fe07414610162578063e1c7157814610175576100b1565b806389fab5b71161009a57806389fab5b714610109578063b2562b7a1461012b578063c26cfecd14610140576100b1565b80630f7d8e39146100b357806352813679146100e9575b005b3480156100bf57600080fd5b506100d36100ce3660046116c1565b6101ec565b6040516100e09190611a14565b60405180910390f35b3480156100f557600080fd5b506100b1610104366004611888565b610455565b34801561011557600080fd5b5061011e610482565b6040516100e09190611c40565b34801561013757600080fd5b5061011e6104bb565b34801561014c57600080fd5b506101556104f4565b6040516100e09190611ba1565b6100b1610170366004611888565b6104fa565b34801561018157600080fd5b506101556105e8565b34801561019657600080fd5b506101aa6101a5366004611706565b61060c565b6040516100e09190611a35565b3480156101c357600080fd5b50610155610ac0565b3480156101d857600080fd5b506101556101e7366004611774565b610ac6565b80516000908061020a5761020a61020560008686610ad9565b610b7e565b60008360018551038151811061021c57fe5b016020015160f81c90506008811061023d5761023d61020560018787610ad9565b60008160ff16600881111561024e57fe5b9050600081600881111561025e57fe5b14156102785761027361020560028888610ad9565b61043c565b600181600881111561028657fe5b141561029b5761027361020560038888610ad9565b60028160088111156102a957fe5b141561038557826042146102c6576102c661020560008888610ad9565b6000856000815181106102d557fe5b016020015160f81c905060006102f287600163ffffffff610b8616565b9050600061030788602163ffffffff610b8616565b90506001898484846040516000815260200160405260405161032c9493929190611bce565b6020604051602081039080840390855afa15801561034e573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00151975061044f9650505050505050565b600381600881111561039357fe5b141561043c57826042146103b0576103b061020560008888610ad9565b6000856000815181106103bf57fe5b016020015160f81c905060006103dc87600163ffffffff610b8616565b905060006103f188602163ffffffff610b8616565b905060018960405160200161040691906119e3565b604051602081830303815290604052805190602001208484846040516000815260200160405260405161032c9493929190611bce565b61044b61020560018888610ad9565b5050505b92915050565b6060610464856080015161060c565b80519091501561047b5761047b8582868686610bb0565b5050505050565b6040518060400160405280601781526020017f30782050726f746f636f6c20436f6f7264696e61746f7200000000000000000081525081565b6040518060400160405280600581526020017f332e302e3000000000000000000000000000000000000000000000000000000081525081565b60015481565b61050684848484610455565b6002546040517f2280c9100000000000000000000000000000000000000000000000000000000081526201000090910473ffffffffffffffffffffffffffffffffffffffff1690632280c9109034906105659088908790600401611c53565b6000604051808303818588803b15801561057e57600080fd5b505af1158015610592573d6000803e3d6000fd5b50505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526105d99190810190611741565b506105e2610d5d565b50505050565b7fa6511c04ca44625d50986f8c36bedc09366207a17b96e347094053a9f850716881565b60606000610620838263ffffffff610d7316565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167f9b44d5560000000000000000000000000000000000000000000000000000000014806106b357507fffffffff0000000000000000000000000000000000000000000000000000000081167fe14b58c400000000000000000000000000000000000000000000000000000000145b1561073c576106c06112e5565b83516106d690859060049063ffffffff610dbf16565b8060200190516106e991908101906117fe565b604080516001808252818301909252919250816020015b6107086112e5565b815260200190600190039081610700579050509250808360008151811061072b57fe5b602002602001018190525050610aba565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f9694a4020000000000000000000000000000000000000000000000000000000014806107cd57507fffffffff0000000000000000000000000000000000000000000000000000000081167f8ea8dfe400000000000000000000000000000000000000000000000000000000145b8061081957507fffffffff0000000000000000000000000000000000000000000000000000000081167fbeee2e1400000000000000000000000000000000000000000000000000000000145b8061086557507fffffffff0000000000000000000000000000000000000000000000000000000081167f78d29ac100000000000000000000000000000000000000000000000000000000145b806108b157507fffffffff0000000000000000000000000000000000000000000000000000000081167f8bc8efb300000000000000000000000000000000000000000000000000000000145b806108fd57507fffffffff0000000000000000000000000000000000000000000000000000000081167f369da09900000000000000000000000000000000000000000000000000000000145b8061094957507fffffffff0000000000000000000000000000000000000000000000000000000081167fa6c3bf3300000000000000000000000000000000000000000000000000000000145b1561097e57825161096490849060049063ffffffff610dbf16565b8060200190516109779190810190611635565b9150610aba565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f88ec79fb000000000000000000000000000000000000000000000000000000001480610a0f57507fffffffff0000000000000000000000000000000000000000000000000000000081167fb718e29200000000000000000000000000000000000000000000000000000000145b15610aba57610a1c6112e5565b610a246112e5565b8451610a3a90869060049063ffffffff610dbf16565b806020019051610a4d9190810190611831565b60408051600280825260608201909252929450909250816020015b610a706112e5565b815260200190600190039081610a685790505093508184600081518110610a9357fe5b60200260200101819052508084600181518110610aac57fe5b602002602001018190525050505b50919050565b60005481565b600061044f610ad483610e46565b610e99565b606063779c522360e01b848484604051602401610af893929190611c0e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290509392505050565b805160208201fd5b60008160200183511015610ba757610ba76102056005855185602001610ea7565b50016020015190565b3273ffffffffffffffffffffffffffffffffffffffff841614610bd957610bd961020584610ec6565b6000610be786600154610f65565b60408051600080825260208201909252845192935091905b818114610c9057610c0e6113ac565b60405180606001604052808973ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018881525090506000610c4c82610ac6565b90506000610c6d82898681518110610c6057fe5b60200260200101516101ec565b9050610c7f868263ffffffff610f7916565b95505060019092019150610bff9050565b50610ca1823263ffffffff610f7916565b875190925060005b818114610d5157600073ffffffffffffffffffffffffffffffffffffffff16898281518110610cd457fe5b60200260200101516060015173ffffffffffffffffffffffffffffffffffffffff161415610d0157610d49565b6000898281518110610d0f57fe5b60200260200101516040015190506000610d32828761101b90919063ffffffff16565b905080610d4657610d466102058884611053565b50505b600101610ca9565b50505050505050505050565b610d656110f5565b610d7157610d71611103565b565b60008160040183511015610d9457610d946102056003855185600401610ea7565b5001602001517fffffffff000000000000000000000000000000000000000000000000000000001690565b606081831115610dd857610dd861020560008585610ea7565b8351821115610df157610df16102056001848751610ea7565b8282036040519080825280601f01601f191660200182016040528015610e1e576020820181803883390190505b509050610e3f610e2d8261113c565b84610e378761113c565b018351611142565b9392505050565b604081810151825160209384015182519285019290922083517fa6511c04ca44625d50986f8c36bedc09366207a17b96e347094053a9f85071688152948501919091529183015260608201526080902090565b600061044f60005483611206565b6060632800659560e01b848484604051602401610af893929190611bec565b606063a458d7ff60e01b82604051602401610ee19190611a14565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050919050565b6000610e3f82610f7485611240565b611206565b815160405160609184906020808202808401820192910182851015610fa557610fa561020586856112c8565b82851115610fbf57610fb8858583611142565b8497508793505b60018201915060208101905080840192508294508188528460405286886001840381518110610fea57fe5b73ffffffffffffffffffffffffffffffffffffffff9092166020928302919091019091015250959695505050505050565b60006020835102602084018181018192505b8083101561044b5782518086141561104757600194508193505b5060208301925061102d565b606063d789b64060e01b8383604051602401611070929190611baa565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905092915050565b600254610100900460ff1690565b47801561113957604051339082156108fc029083906000818181858888f19350505050158015611137573d6000803e3d6000fd5b505b50565b60200190565b602081101561116c576001816020036101000a038019835116818551168082178652505050611201565b8282141561117957611201565b828211156111b35760208103905080820181840181515b828510156111ab578451865260209586019590940193611190565b905250611201565b60208103905080820181840183515b818612156111fc57825182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe092830192909101906111c2565b855250505b505050565b6040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b608081810151825160208085015160408087015160609788015186519685019690962082517fec69816980a3a3ca4554410e60253953e9ff375ba4536a98adfa15cc71541508815294850195909552908301919091529481019490945273ffffffffffffffffffffffffffffffffffffffff9091169183019190915260a082015260c0902090565b6060635fc8372260e01b8383604051602401611070929190611cc9565b604051806101c00160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001606081526020016060815260200160608152602001606081525090565b6040805160608082018352600080835260208301529181019190915290565b803561044f81611d8c565b805161044f81611d8c565b600082601f8301126113f1578081fd5b81356114046113ff82611cfe565b611cd7565b8181529150602080830190840160005b838110156114415761142c876020843589010161144b565b83526020928301929190910190600101611414565b5050505092915050565b600082601f83011261145b578081fd5b81356114696113ff82611d1e565b915080825283602082850101111561148057600080fd5b8060208401602084013760009082016020015292915050565b600082601f8301126114a9578081fd5b81516114b76113ff82611d1e565b91508082528360208285010111156114ce57600080fd5b6114df816020840160208601611d60565b5092915050565b60006101c08083850312156114f9578182fd5b61150281611cd7565b91505061150f83836113d6565b815261151e83602084016113d6565b602082015261153083604084016113d6565b604082015261154283606084016113d6565b60608201526080820151608082015260a082015160a082015260c082015160c082015260e082015160e08201526101008083015181830152506101208083015181830152506101408083015167ffffffffffffffff808211156115a457600080fd5b6115b086838701611499565b838501526101609250828501519150808211156115cc57600080fd5b6115d886838701611499565b838501526101809250828501519150808211156115f457600080fd5b61160086838701611499565b838501526101a092508285015191508082111561161c57600080fd5b5061162985828601611499565b82840152505092915050565b60006020808385031215611647578182fd5b825167ffffffffffffffff81111561165d578283fd5b80840185601f82011261166e578384fd5b8051915061167e6113ff83611cfe565b82815283810190828501865b858110156116b3576116a18a8884518801016114e6565b8452928601929086019060010161168a565b509098975050505050505050565b600080604083850312156116d3578081fd5b82359150602083013567ffffffffffffffff8111156116f0578182fd5b6116fc8582860161144b565b9150509250929050565b600060208284031215611717578081fd5b813567ffffffffffffffff81111561172d578182fd5b6117398482850161144b565b949350505050565b600060208284031215611752578081fd5b815167ffffffffffffffff811115611768578182fd5b61173984828501611499565b600060208284031215611785578081fd5b813567ffffffffffffffff8082111561179c578283fd5b818401606081870312156117ae578384fd5b6117b86060611cd7565b925080356117c581611d8c565b8352602081810135908401526040810135828111156117e2578485fd5b6117ee8782840161144b565b6040850152509195945050505050565b60006020828403121561180f578081fd5b815167ffffffffffffffff811115611825578182fd5b611739848285016114e6565b60008060408385031215611843578182fd5b825167ffffffffffffffff8082111561185a578384fd5b611866868387016114e6565b9350602085015191508082111561187b578283fd5b506116fc858286016114e6565b6000806000806080858703121561189d578182fd5b843567ffffffffffffffff808211156118b4578384fd5b81870160a0818a0312156118c6578485fd5b6118d060a0611cd7565b92508035835260208101356020840152604081013560408401526118f789606083016113cb565b606084015260808101358281111561190d578586fd5b6119198a82840161144b565b6080850152505081955061193088602089016113cb565b94506040870135915080821115611945578384fd5b6119518883890161144b565b93506060870135915080821115611966578283fd5b50611973878288016113e1565b91505092959194509250565b73ffffffffffffffffffffffffffffffffffffffff169052565b600081518084526119b1816020860160208601611d60565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c810191909152603c0190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6000602080830181845280855180835260408601915060408482028701019250838701855b82811015611b94577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845281516101c0611a9987835161197f565b87820151611aa98989018261197f565b506040820151611abc604089018261197f565b506060820151611acf606089018261197f565b506080820151608088015260a082015160a088015260c082015160c088015260e082015160e08801526101008083015181890152506101208083015181890152506101408083015182828a0152611b28838a0182611999565b915050610160915081830151888203838a0152611b458282611999565b9250505061018080830151888303828a0152611b618382611999565b9150506101a0915081830151888203838a0152611b7e8282611999565b9850505094870194505090850190600101611a5a565b5092979650505050505050565b90815260200190565b91825273ffffffffffffffffffffffffffffffffffffffff16602082015260400190565b93845260ff9290921660208401526040830152606082015260800190565b6060810160088510611bfa57fe5b938152602081019290925260409091015290565b600060048510611c1a57fe5b84825283602083015260606040830152611c376060830184611999565b95945050505050565b600060208252610e3f6020830184611999565b60006040825283516040830152602084015160608301526040840151608083015273ffffffffffffffffffffffffffffffffffffffff60608501511660a0830152608084015160a060c0840152611cad60e0840182611999565b8381036020850152611cbf8186611999565b9695505050505050565b918252602082015260400190565b60405181810167ffffffffffffffff81118282101715611cf657600080fd5b604052919050565b600067ffffffffffffffff821115611d14578081fd5b5060209081020190565b600067ffffffffffffffff821115611d34578081fd5b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b83811015611d7b578181015183820152602001611d63565b838111156105e25750506000910152565b73ffffffffffffffffffffffffffffffffffffffff8116811461113957600080fd5b8351602094850120835193850193909320604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815295860194909452928401929092526060830152608082015260a090209056fea365627a7a7231582007e5f7bd880cb0d15a4c34ad2fa0c2f83e1dd1cd069daf9b35a429946bbcc3226c6578706572696d656e74616cf564736f6c63430005110040" } } }, "compiler": { "name": "solc", - "version": "soljson-v0.5.17+commit.d19bba13.js", + "version": "0.5.17+commit.d19bba13", "settings": { "optimizer": { "enabled": true, diff --git a/packages/contract-artifacts/artifacts/CoordinatorRegistry.json b/packages/contract-artifacts/artifacts/CoordinatorRegistry.json index dd4215f486..2eb1df9e24 100644 --- a/packages/contract-artifacts/artifacts/CoordinatorRegistry.json +++ b/packages/contract-artifacts/artifacts/CoordinatorRegistry.json @@ -47,16 +47,16 @@ }, "evm": { "bytecode": { - "object": "0x608060405234801561001057600080fd5b506103e9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80635b2388be1461003b5780636c90fedb146100ad575b600080fd5b6100ab6004803603602081101561005157600080fd5b81019060208101813564010000000081111561006c57600080fd5b82018360208201111561007e57600080fd5b803590602001918460018302840111640100000000831117156100a057600080fd5b509092509050610155565b005b6100e0600480360360208110156100c357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610227565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561011a578181015183820152602001610102565b50505050905090810190601f1680156101475780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b33600081815260208190526040902061016f9084846102fb565b507fd060052768902f3eecb84b8eae9d3a2608a1a9e60811a33968b46b8d552f266e818484604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018281038252848482818152602001925080828437600083820152604051601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016909201829003965090945050505050a1505050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152602081815260409182902080548351601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156102ef5780601f106102c4576101008083540402835291602001916102ef565b820191906000526020600020905b8154815290600101906020018083116102d257829003601f168201915b50505050509050919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061035a578280017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00823516178555610387565b82800160010185558215610387579182015b8281111561038757823582559160200191906001019061036c565b50610393929150610397565b5090565b6103b191905b80821115610393576000815560010161039d565b9056fea265627a7a723158209cc2a91500814c4a416a32432823efbf6f7dbf13ab2e764101a70f6ef77fcb4a64736f6c63430005110032" + "object": "0x608060405234801561001057600080fd5b506103e9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80635b2388be1461003b5780636c90fedb146100ad575b600080fd5b6100ab6004803603602081101561005157600080fd5b81019060208101813564010000000081111561006c57600080fd5b82018360208201111561007e57600080fd5b803590602001918460018302840111640100000000831117156100a057600080fd5b509092509050610155565b005b6100e0600480360360208110156100c357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610227565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561011a578181015183820152602001610102565b50505050905090810190601f1680156101475780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b33600081815260208190526040902061016f9084846102fb565b507fd060052768902f3eecb84b8eae9d3a2608a1a9e60811a33968b46b8d552f266e818484604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018281038252848482818152602001925080828437600083820152604051601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016909201829003965090945050505050a1505050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152602081815260409182902080548351601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156102ef5780601f106102c4576101008083540402835291602001916102ef565b820191906000526020600020905b8154815290600101906020018083116102d257829003601f168201915b50505050509050919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061035a578280017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00823516178555610387565b82800160010185558215610387579182015b8281111561038757823582559160200191906001019061036c565b50610393929150610397565b5090565b6103b191905b80821115610393576000815560010161039d565b9056fea265627a7a72315820b312a87be49bf27917f0152f924a8c36406c062ebd65d69024a8ca83cedd7d4d64736f6c63430005110032" }, "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c80635b2388be1461003b5780636c90fedb146100ad575b600080fd5b6100ab6004803603602081101561005157600080fd5b81019060208101813564010000000081111561006c57600080fd5b82018360208201111561007e57600080fd5b803590602001918460018302840111640100000000831117156100a057600080fd5b509092509050610155565b005b6100e0600480360360208110156100c357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610227565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561011a578181015183820152602001610102565b50505050905090810190601f1680156101475780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b33600081815260208190526040902061016f9084846102fb565b507fd060052768902f3eecb84b8eae9d3a2608a1a9e60811a33968b46b8d552f266e818484604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018281038252848482818152602001925080828437600083820152604051601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016909201829003965090945050505050a1505050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152602081815260409182902080548351601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156102ef5780601f106102c4576101008083540402835291602001916102ef565b820191906000526020600020905b8154815290600101906020018083116102d257829003601f168201915b50505050509050919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061035a578280017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00823516178555610387565b82800160010185558215610387579182015b8281111561038757823582559160200191906001019061036c565b50610393929150610397565b5090565b6103b191905b80821115610393576000815560010161039d565b9056fea265627a7a723158209cc2a91500814c4a416a32432823efbf6f7dbf13ab2e764101a70f6ef77fcb4a64736f6c63430005110032" + "object": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c80635b2388be1461003b5780636c90fedb146100ad575b600080fd5b6100ab6004803603602081101561005157600080fd5b81019060208101813564010000000081111561006c57600080fd5b82018360208201111561007e57600080fd5b803590602001918460018302840111640100000000831117156100a057600080fd5b509092509050610155565b005b6100e0600480360360208110156100c357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610227565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561011a578181015183820152602001610102565b50505050905090810190601f1680156101475780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b33600081815260208190526040902061016f9084846102fb565b507fd060052768902f3eecb84b8eae9d3a2608a1a9e60811a33968b46b8d552f266e818484604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018281038252848482818152602001925080828437600083820152604051601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016909201829003965090945050505050a1505050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152602081815260409182902080548351601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156102ef5780601f106102c4576101008083540402835291602001916102ef565b820191906000526020600020905b8154815290600101906020018083116102d257829003601f168201915b50505050509050919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061035a578280017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00823516178555610387565b82800160010185558215610387579182015b8281111561038757823582559160200191906001019061036c565b50610393929150610397565b5090565b6103b191905b80821115610393576000815560010161039d565b9056fea265627a7a72315820b312a87be49bf27917f0152f924a8c36406c062ebd65d69024a8ca83cedd7d4d64736f6c63430005110032" } } }, "compiler": { "name": "solc", - "version": "soljson-v0.5.17+commit.d19bba13.js", + "version": "0.5.17+commit.d19bba13", "settings": { "optimizer": { "enabled": true, diff --git a/packages/contract-artifacts/artifacts/DevUtils.json b/packages/contract-artifacts/artifacts/DevUtils.json index 2df6a4ee9f..0741910c61 100644 --- a/packages/contract-artifacts/artifacts/DevUtils.json +++ b/packages/contract-artifacts/artifacts/DevUtils.json @@ -838,10 +838,10 @@ }, "evm": { "bytecode": { - "object": "0x60806040523480156200001157600080fd5b506040516200550a3803806200550a8339810160408190526200003491620003f5565b600080546001600160a01b03199081166001600160a01b0386811691821784556005805484168783161790556006805490931690851617909155604051630c0e082160e31b81528291869186918691636070410890620000a090630f47261b60e41b9060040162000448565b60206040518083038186803b158015620000b957600080fd5b505afa158015620000ce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620000f49190810190620003c5565b600180546001600160a01b0319166001600160a01b03928316179055604051630c0e082160e31b8152908416906360704108906200013e9063012b8bc960e11b9060040162000448565b60206040518083038186803b1580156200015757600080fd5b505afa1580156200016c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620001929190810190620003c5565b600280546001600160a01b0319166001600160a01b03928316179055604051630c0e082160e31b815290841690636070410890620001dc9063a7cb5fb760e01b9060040162000448565b60206040518083038186803b158015620001f557600080fd5b505afa1580156200020a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620002309190810190620003c5565b600380546001600160a01b0319166001600160a01b03928316179055604051630c0e082160e31b8152908416906360704108906200027a9063619ce88560e11b9060040162000448565b60206040518083038186803b1580156200029357600080fd5b505afa158015620002a8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620002ce9190810190620003c5565b600480546001600160a01b0319166001600160a01b03928316179055600093508416159150620003019050578162000303565b305b90506200035e6040518060400160405280600b81526020016a0c1e08141c9bdd1bd8dbdb60aa1b815250604051806040016040528060058152602001640332e302e360dc1b81525085846200036e60201b620029a31760201c565b6007555062000476945050505050565b8351602094850120835193850193909320604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815295860194909452928401929092526060830152608082015260a0902090565b600060208284031215620003d7578081fd5b81516001600160a01b0381168114620003ee578182fd5b9392505050565b6000806000606084860312156200040a578182fd5b835162000417816200045d565b60208501519093506200042a816200045d565b60408501519092506200043d816200045d565b809150509250925092565b6001600160e01b031991909116815260200190565b6001600160a01b03811681146200047357600080fd5b50565b61508480620004866000396000f3fe608060405234801561001057600080fd5b50600436106102775760003560e01c8063a5cd62ba11610160578063d186037f116100d8578063e4e6e7da1161008c578063ee18599711610071578063ee185997146105d8578063ef3bb097146105e0578063ff84e7cc146105e857610277565b8063e4e6e7da14610595578063e77286eb146105b657610277565b8063d3d862d1116100bd578063d3d862d114610540578063d469502814610553578063e25cabf71461057357610277565b8063d186037f1461051a578063d36379051461052d57610277565b8063bbb2dcf61161012f578063c82037ef11610114578063c82037ef146104dc578063ca49f47c146104e4578063d001c5dc1461050757610277565b8063bbb2dcf6146104b2578063c26cfecd146104d457610277565b8063a5cd62ba14610464578063a6627e9f14610484578063a7530f1214610497578063b43cffe11461049f57610277565b80637982653e116101f35780639baf2705116101c25780639eadc835116101a75780639eadc8351461041a578063a070cac81461043e578063a0901e511461045157610277565b80639baf2705146103fd5780639cd016051461041257610277565b80637982653e1461039657806379c9c426146103b65780637d727512146103c95780638f4ce479146103dc57610277565b80634dfdac201161024a57806363eb39921161022f57806363eb39921461033d5780636f83188e14610350578063750bdb301461037357610277565b80634dfdac20146102fd578063590aa8751461031d57610277565b806304a5618a1461027c5780630d7b7d76146102a75780632322cf76146102c857806346eb65cb146102e8575b600080fd5b61028f61028a366004614168565b6105f0565b60405161029e93929190614d64565b60405180910390f35b6102ba6102b5366004613c2c565b610689565b60405161029e929190614f6d565b6102db6102d6366004613c2c565b6106ab565b60405161029e9190614c41565b6102fb6102f6366004614168565b6106d3565b005b61031061030b366004613b47565b610757565b60405161029e9190614b99565b61033061032b366004613b2b565b6107da565b60405161029e9190614dc4565b61033061034b366004613c70565b610889565b61036361035e366004614168565b61093c565b60405161029e9493929190614e59565b610386610381366004614168565b6109dc565b60405161029e9493929190614c82565b6103a96103a43660046144b3565b610a6e565b60405161029e9190614e45565b6102db6103c43660046145bb565b610b20565b6102db6103d7366004613c2c565b610ba1565b6103ef6103ea366004614168565b611497565b60405161029e929190614c5f565b61040561152a565b60405161029e91906148c4565b610405611539565b61042d610428366004614168565b611548565b60405161029e959493929190614cbe565b6102db61044c366004614562565b6115ed565b61031061045f366004613cf2565b61166e565b610477610472366004613dc0565b6116e7565b60405161029e9190614aad565b610330610492366004613cc7565b6117a1565b610405611851565b6103306104ad366004613b95565b611860565b6104c56104c0366004614168565b611916565b60405161029e93929190614d8f565b6102db6119a6565b6104056119ac565b6104f76104f2366004614168565b6119bb565b60405161029e9493929190614d21565b610310610515366004613b47565b611a4d565b6102db610528366004613c2c565b611abb565b6103a961053b3660046144b3565b612446565b61033061054e366004613e9b565b6124a8565b610566610561366004614168565b6124fd565b60405161029e9190614c4a565b610586610581366004613e44565b6125a0565b60405161029e93929190614afa565b6105a86105a3366004613b47565b6126d8565b60405161029e929190614c1c565b6105c96105c436600461450b565b6126f1565b60405161029e93929190614ee6565b610405612960565b61040561296f565b61040561297e565b600080600073__$af40232205bf188fa8dd573e0f47eaeabc$__6304a5618a856040518263ffffffff1660e01b815260040161062c9190614dc4565b60606040518083038186803b15801561064457600080fd5b505af4158015610658573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061067c91908101906140be565b9250925092509193909250565b6000806106968484610ba1565b91506106a28484611abb565b90509250929050565b60008060006106ba8585610689565b915091506106c8828261298d565b925050505b92915050565b6040517f46eb65cb00000000000000000000000000000000000000000000000000000000815273__$af40232205bf188fa8dd573e0f47eaeabc$__906346eb65cb90610723908490600401614dc4565b60006040518083038186803b15801561073b57600080fd5b505af415801561074f573d6000803e3d6000fd5b505050505b50565b606060008251905080604051908082528060200260200182016040528015610789578160200160208202803883390190505b50915060005b8181146107d2576107b3858583815181106107a657fe5b6020026020010151611abb565b8382815181106107bf57fe5b602090810291909101015260010161078f565b505092915050565b6040517f590aa87500000000000000000000000000000000000000000000000000000000815260609073__$af40232205bf188fa8dd573e0f47eaeabc$__9063590aa8759061082d9085906004016148c4565b60006040518083038186803b15801561084557600080fd5b505af4158015610859573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610881919081019061419b565b90505b919050565b6040517f63eb399200000000000000000000000000000000000000000000000000000000815260609073__$af40232205bf188fa8dd573e0f47eaeabc$__906363eb3992906108e090879087908790600401614a2d565b60006040518083038186803b1580156108f857600080fd5b505af415801561090c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610934919081019061419b565b949350505050565b60608060608073__$d80c8447db5aca01fdd367a509db3f8167$__636f83188e866040518263ffffffff1660e01b81526004016109799190614dc4565b60006040518083038186803b15801561099157600080fd5b505af41580156109a5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109cd9190810190614209565b93509350935093509193509193565b6000806000606073__$af40232205bf188fa8dd573e0f47eaeabc$__63750bdb30866040518263ffffffff1660e01b8152600401610a1a9190614dc4565b60006040518083038186803b158015610a3257600080fd5b505af4158015610a46573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109cd9190810190613f42565b600080546040517f9caa023b00000000000000000000000000000000000000000000000000000000815273__$51238773fd6195a8a6f152a329b1854152$__91639caa023b91610ad0916001600160a01b031690889088908890600401614a5f565b60206040518083038186803b158015610ae857600080fd5b505af4158015610afc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061093491908101906141ea565b600061093484610b9c6040518060400160405280600b81526020017f30782050726f746f636f6c0000000000000000000000000000000000000000008152506040518060400160405280600581526020017f332e302e3000000000000000000000000000000000000000000000000000000081525087876129a3565b6129fa565b600080610bb4838263ffffffff612a0e16565b90506001600160e01b031981167ff47261b0000000000000000000000000000000000000000000000000000000001415610c0f576000610bfb84601063ffffffff612a4716565b9050610c078186612a7a565b925050611490565b6001600160e01b031981167f02571792000000000000000000000000000000000000000000000000000000001415610e285760008073__$af40232205bf188fa8dd573e0f47eaeabc$__6304a5618a866040518263ffffffff1660e01b8152600401610c7b9190614dc4565b60606040518083038186803b158015610c9357600080fd5b505af4158015610ca7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ccb91908101906140be565b6040519194509250606091507f6352211e0000000000000000000000000000000000000000000000000000000090610d07908490602401614c41565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050905060006060846001600160a01b031683604051610d8291906148a8565b600060405180830381855afa9150503d8060008114610dbd576040519150601f19603f3d011682016040523d82523d6000602084013e610dc2565b606091505b50915091506000828015610dd7575081516020145b610de2576000610df3565b610df382600c63ffffffff612a4716565b9050896001600160a01b0316816001600160a01b031614610e15576000610e18565b60015b60ff169750505050505050611490565b6001600160e01b031981167fa7cb5fb70000000000000000000000000000000000000000000000000000000014156110c457600060608073__$af40232205bf188fa8dd573e0f47eaeabc$__639eadc835876040518263ffffffff1660e01b8152600401610e969190614dc4565b60006040518083038186803b158015610eae57600080fd5b505af4158015610ec2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610eea9190810190613fac565b5081519296509094509250905060005b8181146110ba57828181518110610f0d57fe5b602002602001015160001415610f22576110b2565b83516060907efdd58e00000000000000000000000000000000000000000000000000000000908b90879085908110610f5657fe5b6020026020010151604051602401610f6f929190614a94565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050905060006060876001600160a01b031683604051610fea91906148a8565b600060405180830381855afa9150503d8060008114611025576040519150601f19603f3d011682016040523d82523d6000602084013e61102a565b606091505b5091509150600082801561103f575081516020145b61104a57600061105b565b61105b82600063ffffffff612b7216565b9050600087868151811061106b57fe5b6020026020010151828161107b57fe5b049050806110975760009b5050505050505050505050506106cd565b8b8110806110a357508b155b156110ac57809b505b50505050505b600101610efa565b5050505050611490565b6001600160e01b031981167fc339d10a0000000000000000000000000000000000000000000000000000000014156111f7576040516060907fa85e59e4000000000000000000000000000000000000000000000000000000009061113390869060009081908190602401614dd7565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166001600160e01b03199094169390931790925260045491519092506000916001600160a01b03169061119a9084906148a8565b600060405180830381855afa9150503d80600081146111d5576040519150601f19603f3d011682016040523d82523d6000602084013e6111da565b606091505b50509050806111ea5760006111ee565b6000195b93505050611490565b6001600160e01b031981167fdc1600f30000000000000000000000000000000000000000000000000000000014156113205760008073__$af40232205bf188fa8dd573e0f47eaeabc$__63750bdb30866040518263ffffffff1660e01b81526004016112639190614dc4565b60006040518083038186803b15801561127b57600080fd5b505af415801561128f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112b79190810190613f42565b5092509250506112c5612b7e565b6001600160a01b0316826001600160a01b03161480156112f257506005546001600160a01b038281169116145b1561131957600061130a611304612b96565b88612a7a565b905061131581612bae565b9450505b5050611490565b6001600160e01b031981167f94cfcdd70000000000000000000000000000000000000000000000000000000014156114905760608073__$af40232205bf188fa8dd573e0f47eaeabc$__63bbb2dcf6866040518263ffffffff1660e01b815260040161138c9190614dc4565b60006040518083038186803b1580156113a457600080fd5b505af41580156113b8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113e091908101906140fe565b80519194509250905060005b81811461148b578381815181106113ff57fe5b60200260200101516000141561141457611483565b60006114338985848151811061142657fe5b6020026020010151610ba1565b9050600085838151811061144357fe5b6020026020010151828161145357fe5b0490508061146b5760009750505050505050506106cd565b87811080611477575087155b15611480578097505b50505b6001016113ec565b505050505b5092915050565b60008073__$af40232205bf188fa8dd573e0f47eaeabc$__638f4ce479846040518263ffffffff1660e01b81526004016114d19190614dc4565b604080518083038186803b1580156114e857600080fd5b505af41580156114fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506115209190810190613f0b565b915091505b915091565b6004546001600160a01b031681565b6000546001600160a01b031681565b600080606080606073__$af40232205bf188fa8dd573e0f47eaeabc$__639eadc835876040518263ffffffff1660e01b81526004016115879190614dc4565b60006040518083038186803b15801561159f57600080fd5b505af41580156115b3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115db9190810190613fac565b939a9299509097509550909350915050565b6000610934846116696040518060400160405280600b81526020017f30782050726f746f636f6c0000000000000000000000000000000000000000008152506040518060400160405280600581526020017f332e302e3000000000000000000000000000000000000000000000000000000081525087876129a3565b612dac565b606080825160405190808252806020026020018201604052801561169c578160200160208202803883390190505b50905060005b83518114611490578381815181106116b657fe5b60200260200101516001600160a01b0316318282815181106116d457fe5b60209081029190910101526001016116a2565b6000546040517f02cffc4500000000000000000000000000000000000000000000000000000000815260609173__$51238773fd6195a8a6f152a329b1854152$__916302cffc459161174d916001600160a01b0390911690889088908890600401614915565b60006040518083038186803b15801561176557600080fd5b505af4158015611779573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109349190810190613d25565b6040517fa6627e9f00000000000000000000000000000000000000000000000000000000815260609073__$af40232205bf188fa8dd573e0f47eaeabc$__9063a6627e9f906117f69086908690600401614a94565b60006040518083038186803b15801561180e57600080fd5b505af4158015611822573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261184a919081019061419b565b9392505050565b6006546001600160a01b031681565b6040517fb43cffe100000000000000000000000000000000000000000000000000000000815260609073__$af40232205bf188fa8dd573e0f47eaeabc$__9063b43cffe1906118b99088908890889088906004016149db565b60006040518083038186803b1580156118d157600080fd5b505af41580156118e5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261190d919081019061419b565b95945050505050565b600060608073__$af40232205bf188fa8dd573e0f47eaeabc$__63bbb2dcf6856040518263ffffffff1660e01b81526004016119529190614dc4565b60006040518083038186803b15801561196a57600080fd5b505af415801561197e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261067c91908101906140fe565b60075481565b6005546001600160a01b031681565b6000806060600073__$af40232205bf188fa8dd573e0f47eaeabc$__63ca49f47c866040518263ffffffff1660e01b81526004016119f99190614dc4565b60006040518083038186803b158015611a1157600080fd5b505af4158015611a25573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109cd9190810190614056565b606060008251905080604051908082528060200260200182016040528015611a7f578160200160208202803883390190505b50915060005b8181146107d257611a9c8585838151811061142657fe5b838281518110611aa857fe5b6020908102919091010152600101611a85565b600080611ace838263ffffffff612a0e16565b90506001600160e01b031981167f94cfcdd7000000000000000000000000000000000000000000000000000000001415611c395760608073__$af40232205bf188fa8dd573e0f47eaeabc$__63bbb2dcf6866040518263ffffffff1660e01b8152600401611b3c9190614dc4565b60006040518083038186803b158015611b5457600080fd5b505af4158015611b68573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611b9091908101906140fe565b80519194509250905060005b818114611c2e57838181518110611baf57fe5b602002602001015160001415611bc457611c26565b6000611bd6898584815181106107a657fe5b90506000858381518110611be657fe5b60200260200101518281611bf657fe5b04905080611c0e5760009750505050505050506106cd565b87811080611c1a575087155b15611c23578097505b50505b600101611b9c565b506106cd9350505050565b6001600160e01b031981167ff47261b0000000000000000000000000000000000000000000000000000000001415611c9a576000611c7e84601063ffffffff612a4716565b600154909150610c0790829087906001600160a01b0316612dbb565b6001600160e01b031981167f02571792000000000000000000000000000000000000000000000000000000001415611fea5760008073__$af40232205bf188fa8dd573e0f47eaeabc$__6304a5618a866040518263ffffffff1660e01b8152600401611d069190614dc4565b60606040518083038186803b158015611d1e57600080fd5b505af4158015611d32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611d5691908101906140be565b600254604051929550909350606092507fe985e9c50000000000000000000000000000000000000000000000000000000091611da2918a916001600160a01b03909116906024016148d8565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050905060006060846001600160a01b031683604051611e1d91906148a8565b600060405180830381855afa9150503d8060008114611e58576040519150601f19603f3d011682016040523d82523d6000602084013e611e5d565b606091505b5091509150811580611e7157508051602014155b80611e8d5750611e8881600063ffffffff612b7216565b600114155b15611fdb576040516060907f081812fc0000000000000000000000000000000000000000000000000000000090611ec8908790602401614c41565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050856001600160a01b031681604051611f3f91906148a8565b600060405180830381855afa9150503d8060008114611f7a576040519150601f19603f3d011682016040523d82523d6000602084013e611f7f565b606091505b509093509150828015611f93575081516020145b8015611fc257506002546001600160a01b0316611fb783600c63ffffffff612a4716565b6001600160a01b0316145b611fcd576000611fd0565b60015b60ff169750506110ba565b60001996505050505050611490565b6001600160e01b031981167fa7cb5fb7000000000000000000000000000000000000000000000000000000001415612211576040517f9eadc83500000000000000000000000000000000000000000000000000000000815260009073__$af40232205bf188fa8dd573e0f47eaeabc$__90639eadc8359061206f908790600401614dc4565b60006040518083038186803b15801561208757600080fd5b505af415801561209b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526120c39190810190613fac565b5050600354604051929450606093507fe985e9c5000000000000000000000000000000000000000000000000000000009261210d925089916001600160a01b0316906024016148d8565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050905060006060836001600160a01b03168360405161218891906148a8565b600060405180830381855afa9150503d80600081146121c3576040519150601f19603f3d011682016040523d82523d6000602084013e6121c8565b606091505b50915091508180156121db575080516020145b80156121f757506121f381600063ffffffff612b7216565b6001145b612202576000612206565b6000195b955050505050611490565b6001600160e01b031981167fc339d10a00000000000000000000000000000000000000000000000000000000141561224d576000199150611490565b6001600160e01b031981167fdc1600f30000000000000000000000000000000000000000000000000000000014156114905760008073__$af40232205bf188fa8dd573e0f47eaeabc$__63750bdb30866040518263ffffffff1660e01b81526004016122b99190614dc4565b60006040518083038186803b1580156122d157600080fd5b505af41580156122e5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261230d9190810190613f42565b50925092505061231b612b7e565b6001600160a01b0316826001600160a01b031614801561234857506005546001600160a01b038281169116145b1561239257600061236d61235a612b96565b60055489906001600160a01b0316612dbb565b905060001981146123865761238181612bae565b61238a565b6000195b94505061243d565b6006546001600160a01b038281169116141561243d5773__$8ab3d6b0b5fe290c724f8d6cfdac7eabfb$__630e70a03387836123cc612ec5565b6040518463ffffffff1660e01b81526004016123ea939291906148f2565b60206040518083038186803b15801561240257600080fd5b505af4158015612416573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061243a9190810190614673565b93505b50505092915050565b600080546040517f8dccde0400000000000000000000000000000000000000000000000000000000815273__$51238773fd6195a8a6f152a329b1854152$__91638dccde0491610ad0916001600160a01b031690889088908890600401614a5f565b6040517fd3d862d100000000000000000000000000000000000000000000000000000000815260609073__$af40232205bf188fa8dd573e0f47eaeabc$__9063d3d862d1906117f69086908690600401614bac565b6040517fd469502800000000000000000000000000000000000000000000000000000000815260009073__$af40232205bf188fa8dd573e0f47eaeabc$__9063d469502890612550908590600401614dc4565b60206040518083038186803b15801561256857600080fd5b505af415801561257c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108819190810190613ef0565b6060806060600085519050806040519080825280602002602001820160405280156125e557816020015b6125d26136a6565b8152602001906001900390816125ca5790505b50935080604051908082528060200260200182016040528015612612578160200160208202803883390190505b5092508060405190808252806020026020018201604052801561263f578160200160208202803883390190505b50915060005b8181146126cf5761267c87828151811061265b57fe5b602002602001015187838151811061266f57fe5b60200260200101516126f1565b875188908590811061268a57fe5b6020026020010187858151811061269d57fe5b602002602001018786815181106126b057fe5b9315156020948502919091019093019290925291905252600101612645565b50509250925092565b6060806126e58484611a4d565b91506106a28484610757565b6126f96136a6565b600080546040517f9d3fa4b900000000000000000000000000000000000000000000000000000000815282916001600160a01b031690639d3fa4b990612743908890600401614f0a565b60606040518083038186803b15801561275b57600080fd5b505afa15801561276f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612793919081019061446b565b85516000546040517fa12dcc6f00000000000000000000000000000000000000000000000000000000815292955090916001600160a01b039091169063a12dcc6f906127e59089908990600401614f48565b60206040518083038186803b1580156127fd57600080fd5b505afa158015612811573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506128359190810190613ed0565b9150600061284287612edd565b90506000612863886101800151896101400151612f0990919063ffffffff16565b1561289857612891826128878a60c001518b60800151612f2e90919063ffffffff16565b8a60a00151612f4a565b9050612905565b60c08801516128b4576128918289608001518a60a00151612f4a565b60006128c5848a61018001516106ab565b905060006128dc848b608001518c60a00151612f4a565b905060006128f3838c60c001518d60a00151612f4a565b90506128ff828261298d565b93505050505b61292961292387604001518a60a00151612f6c90919063ffffffff16565b8261298d565b945061293488612f8b565b61293d57600094505b60038651600681111561294c57fe5b1461295657600094505b5050509250925092565b6001546001600160a01b031681565b6002546001600160a01b031681565b6003546001600160a01b031681565b600081831061299c578161184a565b5090919050565b8351602094850120835193850193909320604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815295860194909452928401929092526060830152608082015260a0902090565b600061184a82612a0985612ff2565b61306d565b60008160040183511015612a3457612a34612a2f60038551856004016130a7565b613116565b5001602001516001600160e01b03191690565b60008160140183511015612a6857612a68612a2f60048551856014016130a7565b5001601401516001600160a01b031690565b60405160009081906060906001600160a01b038616907f70a082310000000000000000000000000000000000000000000000000000000090612ac09087906024016148c4565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166001600160e01b0319909416939093179092529051612b1391906148a8565b600060405180830381855afa9150503d8060008114612b4e576040519150601f19603f3d011682016040523d82523d6000602084013e612b53565b606091505b5091509150818015612b66575080516020145b156107d2576106c88160005b600061184a838361311e565b736b175474e89094c44da98b954eedeac495271d0f90565b7306af07097c9eeb7fd685c692751d5c66db49c21590565b600080612bb9612b96565b6001600160a01b0316634ba2363a6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015612bf357600080fd5b505af1158015612c07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612c2b91908101906141ce565b90506000816001600160a01b03166320aba08b6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015612c6a57600080fd5b505af1158015612c7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612ca29190810190614673565b4211612d2057816001600160a01b031663c92aecc46040518163ffffffff1660e01b8152600401602060405180830381600087803b158015612ce357600080fd5b505af1158015612cf7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612d1b9190810190614673565b612d93565b816001600160a01b0316639f678cca6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015612d5b57600080fd5b505af1158015612d6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612d939190810190614673565b9050610934816b033b2e3c9fd0803ce800000086612f4a565b600061184a82612a0985613148565b60405160009081906060906001600160a01b038716907fdd62ed3e0000000000000000000000000000000000000000000000000000000090612e0390889088906024016148d8565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166001600160e01b0319909416939093179092529051612e5691906148a8565b600060405180830381855afa9150503d8060008114612e91576040519150601f19603f3d011682016040523d82523d6000602084013e612e96565b606091505b5091509150818015612ea9575080516020145b15612ebc57612eb9816000612b72565b92505b50509392505050565b731e0447b19bb6ecfdae1e4ae1694b0c3659614e4e90565b6000806000612eeb84613201565b91509150612ef9828261298d565b925061093483856080015161298d565b60008151835114801561184a5750508051602091820120825192909101919091201490565b60008282018381101561184a5761184a612a2f60008686613414565b600061093483612f60868563ffffffff61343316565b9063ffffffff61346416565b600082821115612f8557612f85612a2f60028585613414565b50900390565b6000612f9b82610140015161348e565b8015612fbc575060c08201511580612fbc5750612fbc82610180015161348e565b8015612fd15750612fd182610160015161348e565b8015610881575060e082015115806108815750610881826101a0015161348e565b608081810151825160208085015160408087015160609788015186519685019690962082517fec69816980a3a3ca4554410e60253953e9ff375ba4536a98adfa15cc7154150881529485019590955290830191909152948101949094526001600160a01b039091169183019190915260a082015260c0902090565b6040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b6060632800659560e01b8484846040516024016130c693929190614e37565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166001600160e01b03199093169290921790915290509392505050565b805160208201fd5b6000816020018351101561313f5761313f612a2f60058551856020016130a7565b50016020015190565b6101408101516101608201516101808301516101a08401516000937ff80322eb8376aafb64eadf8f0d7623f22130fd9491a221e902b713cb984a75349390929091602087101561319457fe5b601f1987018051610140890180516101608b0180516101808d0180516101a08f0180519d89528c5160209d8e012087528b519b8d019b909b2084528951998c01999099208152875197909a019690962088526101e085209390945290529190529252919091529050919050565b600080600483610140015151101561321e57506000905080611525565b610140830151600090613237908263ffffffff612a0e16565b90506001600160e01b031981167fdc1600f30000000000000000000000000000000000000000000000000000000014156133e4576101408401516040517f750bdb3000000000000000000000000000000000000000000000000000000000815260009173__$af40232205bf188fa8dd573e0f47eaeabc$__9163750bdb30916132c291600401614dc4565b60006040518083038186803b1580156132da57600080fd5b505af41580156132ee573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526133169190810190613f42565b506006549093506001600160a01b038085169116141591506133e290505773__$8ab3d6b0b5fe290c724f8d6cfdac7eabfb$__63d12a796086613357612ec5565b6040518363ffffffff1660e01b8152600401613374929190614f1d565b60206040518083038186803b15801561338c57600080fd5b505af41580156133a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506133c49190810190614673565b6133d78660000151876101400151611abb565b935093505050611525565b505b6133f78460000151856101400151610ba1565b61340a8560000151866101400151611abb565b9250925050915091565b606063e946c1bb60e01b8484846040516024016130c693929190614e15565b600082613442575060006106cd565b8282028284828161344f57fe5b041461184a5761184a612a2f60018686613414565b60008161347a5761347a612a2f60038585613414565b600082848161348557fe5b04949350505050565b6000602082518161349b57fe5b066004146134ab57506000610884565b60006134bd838263ffffffff612a0e16565b90506001600160e01b031981167f94cfcdd700000000000000000000000000000000000000000000000000000000146134fa576001915050610884565b6040517fbbb2dcf600000000000000000000000000000000000000000000000000000000815260609073__$af40232205bf188fa8dd573e0f47eaeabc$__9063bbb2dcf69061354d908790600401614dc4565b60006040518083038186803b15801561356557600080fd5b505af4158015613579573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135a191908101906140fe565b80519093509150600090505b8181146136375760006135dd60008584815181106135c757fe5b6020026020010151612a0e90919063ffffffff16565b90506001600160e01b031981167f0257179200000000000000000000000000000000000000000000000000000000141561362e5761361b8483613643565b1561362e57600095505050505050610884565b506001016135ad565b50600195945050505050565b8151600090600183015b818110156107d25761368e85828151811061366457fe5b602002602001015186868151811061367857fe5b6020026020010151612f0990919063ffffffff16565b1561369e576001925050506106cd565b60010161364d565b6040805160608101909152806000815260006020820181905260409091015290565b80356106cd81615016565b80516106cd81615016565b600082601f8301126136ee578081fd5b81356137016136fc82614fa2565b614f7b565b81815291506020808301908481018184028601820187101561372257600080fd5b60005b8481101561148b57813561373881615016565b84529282019290820190600101613725565b600082601f83011261375a578081fd5b81356137686136fc82614fa2565b8181529150602080830190840160005b838110156137a5576137908760208435890101613939565b83526020928301929190910190600101613778565b5050505092915050565b600082601f8301126137bf578081fd5b81516137cd6136fc82614fa2565b8181529150602080830190840160005b838110156137a5576137f58760208451890101613987565b835260209283019291909101906001016137dd565b600082601f83011261381a578081fd5b81356138286136fc82614fa2565b8181529150602080830190840160005b838110156137a55761385087602084358901016139dc565b83526020928301929190910190600101613838565b600082601f830112613875578081fd5b81356138836136fc82614fa2565b8181529150602080830190848101818402860182018710156138a457600080fd5b60005b8481101561148b578135845292820192908201906001016138a7565b600082601f8301126138d3578081fd5b81516138e16136fc82614fa2565b81815291506020808301908481018184028601820187101561390257600080fd5b60005b8481101561148b57815184529282019290820190600101613905565b80516001600160e01b0319811681146106cd57600080fd5b600082601f830112613949578081fd5b81356139576136fc82614fc2565b915080825283602082850101111561396e57600080fd5b8060208401602084013760009082016020015292915050565b600082601f830112613997578081fd5b81516139a56136fc82614fc2565b91508082528360208285010111156139bc57600080fd5b611490816020840160208601614fe6565b8051600581106106cd57600080fd5b60006101c08083850312156139ef578182fd5b6139f881614f7b565b915050613a0583836136c8565b8152613a1483602084016136c8565b6020820152613a2683604084016136c8565b6040820152613a3883606084016136c8565b60608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e08201526101008083013581830152506101208083013581830152506101408083013567ffffffffffffffff80821115613a9a57600080fd5b613aa686838701613939565b83850152610160925082850135915080821115613ac257600080fd5b613ace86838701613939565b83850152610180925082850135915080821115613aea57600080fd5b613af686838701613939565b838501526101a0925082850135915080821115613b1257600080fd5b50613b1f85828601613939565b82840152505092915050565b600060208284031215613b3c578081fd5b813561184a81615016565b60008060408385031215613b59578081fd5b8235613b6481615016565b9150602083013567ffffffffffffffff811115613b7f578182fd5b613b8b8582860161374a565b9150509250929050565b60008060008060808587031215613baa578182fd5b8435613bb581615016565b9350602085013567ffffffffffffffff80821115613bd1578384fd5b613bdd88838901613865565b94506040870135915080821115613bf2578384fd5b613bfe88838901613865565b93506060870135915080821115613c13578283fd5b50613c2087828801613939565b91505092959194509250565b60008060408385031215613c3e578182fd5b8235613c4981615016565b9150602083013567ffffffffffffffff811115613c64578182fd5b613b8b85828601613939565b600080600060608486031215613c84578081fd5b8335613c8f81615016565b9250602084013567ffffffffffffffff811115613caa578182fd5b613cb686828701613939565b925050604084013590509250925092565b60008060408385031215613cd9578182fd5b8235613ce481615016565b946020939093013593505050565b600060208284031215613d03578081fd5b813567ffffffffffffffff811115613d19578182fd5b610934848285016136de565b60006020808385031215613d37578182fd5b825167ffffffffffffffff811115613d4d578283fd5b80840185601f820112613d5e578384fd5b80519150613d6e6136fc83614fa2565b8281528381019082850185850284018601891015613d8a578687fd5b8693505b84841015613db457613da089826139cd565b835260019390930192918501918501613d8e565b50979650505050505050565b600080600060608486031215613dd4578081fd5b833567ffffffffffffffff80821115613deb578283fd5b613df78783880161380a565b94506020860135915080821115613e0c578283fd5b613e18878388016136de565b93506040860135915080821115613e2d578283fd5b50613e3a86828701613865565b9150509250925092565b60008060408385031215613e56578182fd5b823567ffffffffffffffff80821115613e6d578384fd5b613e798683870161380a565b93506020850135915080821115613e8e578283fd5b50613b8b8582860161374a565b60008060408385031215613ead578182fd5b823567ffffffffffffffff80821115613ec4578384fd5b613e7986838701613865565b600060208284031215613ee1578081fd5b8151801515811461184a578182fd5b600060208284031215613f01578081fd5b61184a8383613921565b60008060408385031215613f1d578182fd5b613f278484613921565b91506020830151613f3781615016565b809150509250929050565b60008060008060808587031215613f57578182fd5b8451613f628161502b565b6020860151909450613f7381615016565b6040860151909350613f8481615016565b606086015190925067ffffffffffffffff811115613fa0578182fd5b613c2087828801613987565b600080600080600060a08688031215613fc3578283fd5b613fcd8787613921565b94506020860151613fdd81615016565b604087015190945067ffffffffffffffff80821115613ffa578485fd5b61400689838a016138c3565b9450606088015191508082111561401b578283fd5b61402789838a016138c3565b9350608088015191508082111561403c578283fd5b5061404988828901613987565b9150509295509295909350565b6000806000806080858703121561406b578182fd5b6140758686613921565b9350602085015161408581615016565b604086015190935067ffffffffffffffff8111156140a1578283fd5b6140ad87828801613987565b606096909601519497939650505050565b6000806000606084860312156140d2578081fd5b6140dc8585613921565b925060208401516140ec81615016565b80925050604084015190509250925092565b600080600060608486031215614112578081fd5b835161411d8161502b565b602085015190935067ffffffffffffffff8082111561413a578283fd5b614146878388016138c3565b9350604086015191508082111561415b578283fd5b50613e3a868287016137af565b600060208284031215614179578081fd5b813567ffffffffffffffff81111561418f578182fd5b61093484828501613939565b6000602082840312156141ac578081fd5b815167ffffffffffffffff8111156141c2578182fd5b61093484828501613987565b6000602082840312156141df578081fd5b815161184a81615016565b6000602082840312156141fb578081fd5b81516005811061184a578182fd5b6000806000806080858703121561421e578182fd5b845167ffffffffffffffff811115614234578283fd5b61424087828801613987565b945050602085015167ffffffffffffffff81111561425c578283fd5b86601f828801011261426c578283fd5b8086015161427c6136fc82614fa2565b8181526020808201919089850101865b84811015614415578151868c01016101c0601f19828f030112156142ae578889fd5b6142b96101c0614f7b565b6142c68e602084016136d3565b81526142d58e604084016136d3565b60208201526142e78e606084016136d3565b60408201526142f98e608084016136d3565b606082015260a0820151608082015260c082015160a082015260e082015160c082015261010082015160e082015261012082015161010082015261014082015161012082015261016082015167ffffffffffffffff811115614359578a8bfd5b6143688f602083860101613987565b6101408301525061018082015167ffffffffffffffff811115614389578a8bfd5b6143988f602083860101613987565b610160830152506101a082015167ffffffffffffffff8111156143b9578a8bfd5b6143c88f602083860101613987565b610180830152506101c082015167ffffffffffffffff8111156143e9578a8bfd5b6143f88f602083860101613987565b6101a083015250855250602093840193919091019060010161428c565b505080965050505050604085015167ffffffffffffffff811115614437578283fd5b614443878288016138c3565b925050606085015167ffffffffffffffff81111561445f578182fd5b613c20878288016137af565b60006060828403121561447c578081fd5b6144866060614f7b565b825160078110614494578283fd5b8152602083810151908201526040928301519281019290925250919050565b6000806000606084860312156144c7578081fd5b833567ffffffffffffffff8111156144dd578182fd5b6144e9868287016139dc565b93505060208401356144fa81615016565b929592945050506040919091013590565b6000806040838503121561451d578182fd5b823567ffffffffffffffff80821115614534578384fd5b614540868387016139dc565b93506020850135915080821115614555578283fd5b50613b8b85828601613939565b600080600060608486031215614576578081fd5b833567ffffffffffffffff81111561458c578182fd5b614598868287016139dc565b9350506020840135915060408401356145b081615016565b809150509250925092565b6000806000606084860312156145cf578081fd5b833567ffffffffffffffff808211156145e6578283fd5b81860160a081890312156145f8578384fd5b61460260a0614f7b565b925080358352602081013560208401526040810135604084015261462988606083016136c8565b606084015260808101358281111561463f578485fd5b61464b89828401613939565b60808501525091945050506020840135915061466a85604086016136c8565b90509250925092565b600060208284031215614684578081fd5b5051919050565b6001600160a01b0316815260200190565b1515815260200190565b60006146b28383614784565b505060600190565b6001600160a01b03169052565b60008282518085526020808601955080818302840101818601855b8481101561471057601f198684030189526146fe838351614758565b988401989250908301906001016146e2565b5090979650505050505050565b6000815180845260208401935060208301825b8281101561474e578151865260209586019590910190600101614730565b5093949350505050565b60008151808452614770816020860160208601614fe6565b601f01601f19169290920160200192915050565b80516007811061479057fe5b825260208181015190830152604090810151910152565b60006101c06147b78484516146ba565b60208301516147c960208601826146ba565b5060408301516147dc60408601826146ba565b5060608301516147ef60608601826146ba565b506080830151608085015260a083015160a085015260c083015160c085015260e083015160e085015261010080840151818601525061012080840151818601525061014080840151828287015261484883870182614758565b915050610160915081840151858203838701526148658282614758565b9250505061018080840151858303828701526148818382614758565b9150506101a09150818401518582038387015261489e8282614758565b9695505050505050565b600082516148ba818460208701614fe6565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b0393841681529183166020830152909116604082015260600190565b6000608082016001600160a01b0387168352602060808185015281875161493c8185614c41565b91508193508281028201838a01865b838110156149755786830385526149638383516147a7565b9486019492509085019060010161494b565b50508681036040880152809450885192506149908382614c41565b94505050818701845b828110156149ba576149ac85835161468b565b945090830190600101614999565b5050505082810360608401526149d0818561471d565b979650505050505050565b60006001600160a01b0386168252608060208301526149fd608083018661471d565b8281036040840152614a0f818661471d565b8381036060850152614a218186614758565b98975050505050505050565b60006001600160a01b038516825260606020830152614a4f6060830185614758565b9050826040830152949350505050565b60006001600160a01b03808716835260806020840152614a8260808401876147a7565b94166040830152506060015292915050565b6001600160a01b03929092168252602082015260400190565b602080825282518282018190526000918401906040840190835b81811015614aef57835160058110614adb57fe5b835260209384019390920191600101614ac7565b509095945050505050565b60006060820160608352808651614b118184614c41565b9150602088019250835b81811015614b3f57614b2e8385516146a6565b602094909401939250600101614b1b565b50508381036020850152614b53818761471d565b9150508281036040840152808451614b6b8184614c41565b9150602086019250835b8181101561471057614b8883855161469c565b602094909401939250600101614b75565b60006020825261184a602083018461471d565b600060408252614bbf604083018561471d565b602083820381850152818551808452828401915082838202850101838801865b83811015614c0d57601f19878403018552614bfb838351614758565b94860194925090850190600101614bdf565b50909998505050505050505050565b600060408252614c2f604083018561471d565b828103602084015261190d818561471d565b90815260200190565b6001600160e01b031991909116815260200190565b6001600160e01b03199290921682526001600160a01b0316602082015260400190565b60006001600160e01b0319861682526001600160a01b0380861660208401528085166040840152506080606083015261489e6080830184614758565b60006001600160e01b0319871682526001600160a01b038616602083015260a06040830152614cf060a083018661471d565b8281036060840152614d02818661471d565b8381036080850152614d148186614758565b9998505050505050505050565b60006001600160e01b0319861682526001600160a01b038516602083015260806040830152614d536080830185614758565b905082606083015295945050505050565b6001600160e01b03199390931683526001600160a01b03919091166020830152604082015260600190565b60006001600160e01b03198516825260606020830152614db2606083018561471d565b828103604084015261489e81856146c7565b60006020825261184a6020830184614758565b600060808252614dea6080830187614758565b6001600160a01b03958616602084015293909416604082015260ff9190911660609091015292915050565b6060810160048510614e2357fe5b938152602081019290925260409091015290565b6060810160088510614e2357fe5b6020810160058310614e5357fe5b91905290565b600060808252614e6c6080830187614758565b602083820381850152818751808452828401915082838202850101838a01865b83811015614eba57601f19878403018552614ea88383516147a7565b94860194925090850190600101614e8c565b50508681036040880152614ece818a61471d565b94505050505082810360608401526149d081856146c7565b60a08101614ef48286614784565b8360608301528215156080830152949350505050565b60006020825261184a60208301846147a7565b600060408252614f3060408301856147a7565b90506001600160a01b03831660208301529392505050565b600060408252614f5b60408301856147a7565b828103602084015261190d8185614758565b918252602082015260400190565b60405181810167ffffffffffffffff81118282101715614f9a57600080fd5b604052919050565b600067ffffffffffffffff821115614fb8578081fd5b5060209081020190565b600067ffffffffffffffff821115614fd8578081fd5b50601f01601f191660200190565b60005b83811015615001578181015183820152602001614fe9565b83811115615010576000848401525b50505050565b6001600160a01b038116811461075457600080fd5b6001600160e01b03198116811461075457600080fdfea365627a7a7231582042d7fae961b1460c70c7ec8ff1688f8680c3323368dee844634a86b8a2f15fdb6c6578706572696d656e74616cf564736f6c63430005110040" + "object": "0x60806040523480156200001157600080fd5b50604051620054ca380380620054ca8339810160408190526200003491620003f5565b600080546001600160a01b03199081166001600160a01b0386811691821784556005805484168783161790556006805490931690851617909155604051630c0e082160e31b81528291869186918691636070410890620000a090630f47261b60e41b9060040162000448565b60206040518083038186803b158015620000b957600080fd5b505afa158015620000ce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620000f49190810190620003c5565b600180546001600160a01b0319166001600160a01b03928316179055604051630c0e082160e31b8152908416906360704108906200013e9063012b8bc960e11b9060040162000448565b60206040518083038186803b1580156200015757600080fd5b505afa1580156200016c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620001929190810190620003c5565b600280546001600160a01b0319166001600160a01b03928316179055604051630c0e082160e31b815290841690636070410890620001dc9063a7cb5fb760e01b9060040162000448565b60206040518083038186803b158015620001f557600080fd5b505afa1580156200020a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620002309190810190620003c5565b600380546001600160a01b0319166001600160a01b03928316179055604051630c0e082160e31b8152908416906360704108906200027a9063619ce88560e11b9060040162000448565b60206040518083038186803b1580156200029357600080fd5b505afa158015620002a8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620002ce9190810190620003c5565b600480546001600160a01b0319166001600160a01b03928316179055600093508416159150620003019050578162000303565b305b90506200035e6040518060400160405280600b81526020016a0c1e08141c9bdd1bd8dbdb60aa1b815250604051806040016040528060058152602001640332e302e360dc1b81525085846200036e60201b620029a31760201c565b6007555062000476945050505050565b8351602094850120835193850193909320604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815295860194909452928401929092526060830152608082015260a0902090565b600060208284031215620003d7578081fd5b81516001600160a01b0381168114620003ee578182fd5b9392505050565b6000806000606084860312156200040a578182fd5b835162000417816200045d565b60208501519093506200042a816200045d565b60408501519092506200043d816200045d565b809150509250925092565b6001600160e01b031991909116815260200190565b6001600160a01b03811681146200047357600080fd5b50565b61504480620004866000396000f3fe608060405234801561001057600080fd5b50600436106102775760003560e01c8063a5cd62ba11610160578063d186037f116100d8578063e4e6e7da1161008c578063ee18599711610071578063ee185997146105d8578063ef3bb097146105e0578063ff84e7cc146105e857610277565b8063e4e6e7da14610595578063e77286eb146105b657610277565b8063d3d862d1116100bd578063d3d862d114610540578063d469502814610553578063e25cabf71461057357610277565b8063d186037f1461051a578063d36379051461052d57610277565b8063bbb2dcf61161012f578063c82037ef11610114578063c82037ef146104dc578063ca49f47c146104e4578063d001c5dc1461050757610277565b8063bbb2dcf6146104b2578063c26cfecd146104d457610277565b8063a5cd62ba14610464578063a6627e9f14610484578063a7530f1214610497578063b43cffe11461049f57610277565b80637982653e116101f35780639baf2705116101c25780639eadc835116101a75780639eadc8351461041a578063a070cac81461043e578063a0901e511461045157610277565b80639baf2705146103fd5780639cd016051461041257610277565b80637982653e1461039657806379c9c426146103b65780637d727512146103c95780638f4ce479146103dc57610277565b80634dfdac201161024a57806363eb39921161022f57806363eb39921461033d5780636f83188e14610350578063750bdb301461037357610277565b80634dfdac20146102fd578063590aa8751461031d57610277565b806304a5618a1461027c5780630d7b7d76146102a75780632322cf76146102c857806346eb65cb146102e8575b600080fd5b61028f61028a3660046142ab565b6105f0565b60405161029e93929190614d24565b60405180910390f35b6102ba6102b5366004613d6f565b610689565b60405161029e929190614f2d565b6102db6102d6366004613d6f565b6106ab565b60405161029e9190614c01565b6102fb6102f63660046142ab565b6106d3565b005b61031061030b366004613c8a565b610757565b60405161029e9190614b59565b61033061032b366004613c6e565b6107da565b60405161029e9190614d84565b61033061034b366004613db3565b610889565b61036361035e3660046142ab565b61093c565b60405161029e9493929190614e19565b6103866103813660046142ab565b6109dc565b60405161029e9493929190614c42565b6103a96103a4366004614481565b610a6e565b60405161029e9190614e05565b6102db6103c4366004614589565b610b20565b6102db6103d7366004613d6f565b610ba1565b6103ef6103ea3660046142ab565b611497565b60405161029e929190614c1f565b61040561152a565b60405161029e9190614888565b610405611539565b61042d6104283660046142ab565b611548565b60405161029e959493929190614c7e565b6102db61044c366004614530565b6115ed565b61031061045f366004613e35565b61166e565b610477610472366004613f03565b6116e7565b60405161029e9190614a71565b610330610492366004613e0a565b6117a1565b610405611851565b6103306104ad366004613cd8565b611860565b6104c56104c03660046142ab565b611916565b60405161029e93929190614d4f565b6102db6119a6565b6104056119ac565b6104f76104f23660046142ab565b6119bb565b60405161029e9493929190614ce1565b610310610515366004613c8a565b611a4d565b6102db610528366004613d6f565b611abb565b6103a961053b366004614481565b612446565b61033061054e366004613fde565b6124a8565b6105666105613660046142ab565b6124fd565b60405161029e9190614c0a565b610586610581366004613f87565b6125a0565b60405161029e93929190614abe565b6105a86105a3366004613c8a565b6126d8565b60405161029e929190614bdc565b6105c96105c43660046144d9565b6126f1565b60405161029e93929190614ea6565b610405612960565b61040561296f565b61040561297e565b600080600073__$808f8f452496495931fd70b932e88106d9$__6304a5618a856040518263ffffffff1660e01b815260040161062c9190614d84565b60606040518083038186803b15801561064457600080fd5b505af4158015610658573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061067c9190810190614201565b9250925092509193909250565b6000806106968484610ba1565b91506106a28484611abb565b90509250929050565b60008060006106ba8585610689565b915091506106c8828261298d565b925050505b92915050565b6040517f46eb65cb00000000000000000000000000000000000000000000000000000000815273__$808f8f452496495931fd70b932e88106d9$__906346eb65cb90610723908490600401614d84565b60006040518083038186803b15801561073b57600080fd5b505af415801561074f573d6000803e3d6000fd5b505050505b50565b606060008251905080604051908082528060200260200182016040528015610789578160200160208202803883390190505b50915060005b8181146107d2576107b3858583815181106107a657fe5b6020026020010151611abb565b8382815181106107bf57fe5b602090810291909101015260010161078f565b505092915050565b6040517f590aa87500000000000000000000000000000000000000000000000000000000815260609073__$808f8f452496495931fd70b932e88106d9$__9063590aa8759061082d908590600401614888565b60006040518083038186803b15801561084557600080fd5b505af4158015610859573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261088191908101906142de565b90505b919050565b6040517f63eb399200000000000000000000000000000000000000000000000000000000815260609073__$808f8f452496495931fd70b932e88106d9$__906363eb3992906108e0908790879087906004016149f1565b60006040518083038186803b1580156108f857600080fd5b505af415801561090c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261093491908101906142de565b949350505050565b60608060608073__$f3880127484c626d9b3a095208b13cbf1b$__636f83188e866040518263ffffffff1660e01b81526004016109799190614d84565b60006040518083038186803b15801561099157600080fd5b505af41580156109a5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109cd919081019061434c565b93509350935093509193509193565b6000806000606073__$808f8f452496495931fd70b932e88106d9$__63750bdb30866040518263ffffffff1660e01b8152600401610a1a9190614d84565b60006040518083038186803b158015610a3257600080fd5b505af4158015610a46573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109cd9190810190614085565b600080546040517f9caa023b00000000000000000000000000000000000000000000000000000000815273__$988eef118a938b5a4e7336ebab0aae599b$__91639caa023b91610ad0916001600160a01b031690889088908890600401614a23565b60206040518083038186803b158015610ae857600080fd5b505af4158015610afc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610934919081019061432d565b600061093484610b9c6040518060400160405280600b81526020017f30782050726f746f636f6c0000000000000000000000000000000000000000008152506040518060400160405280600581526020017f332e302e3000000000000000000000000000000000000000000000000000000081525087876129a3565b6129fa565b600080610bb4838263ffffffff612a0e16565b90506001600160e01b031981167ff47261b0000000000000000000000000000000000000000000000000000000001415610c0f576000610bfb84601063ffffffff612a4716565b9050610c078186612a7a565b925050611490565b6001600160e01b031981167f02571792000000000000000000000000000000000000000000000000000000001415610e285760008073__$808f8f452496495931fd70b932e88106d9$__6304a5618a866040518263ffffffff1660e01b8152600401610c7b9190614d84565b60606040518083038186803b158015610c9357600080fd5b505af4158015610ca7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ccb9190810190614201565b6040519194509250606091507f6352211e0000000000000000000000000000000000000000000000000000000090610d07908490602401614c01565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050905060006060846001600160a01b031683604051610d82919061486c565b600060405180830381855afa9150503d8060008114610dbd576040519150601f19603f3d011682016040523d82523d6000602084013e610dc2565b606091505b50915091506000828015610dd7575081516020145b610de2576000610df3565b610df382600c63ffffffff612a4716565b9050896001600160a01b0316816001600160a01b031614610e15576000610e18565b60015b60ff169750505050505050611490565b6001600160e01b031981167fa7cb5fb70000000000000000000000000000000000000000000000000000000014156110c457600060608073__$808f8f452496495931fd70b932e88106d9$__639eadc835876040518263ffffffff1660e01b8152600401610e969190614d84565b60006040518083038186803b158015610eae57600080fd5b505af4158015610ec2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610eea91908101906140ef565b5081519296509094509250905060005b8181146110ba57828181518110610f0d57fe5b602002602001015160001415610f22576110b2565b83516060907efdd58e00000000000000000000000000000000000000000000000000000000908b90879085908110610f5657fe5b6020026020010151604051602401610f6f929190614a58565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050905060006060876001600160a01b031683604051610fea919061486c565b600060405180830381855afa9150503d8060008114611025576040519150601f19603f3d011682016040523d82523d6000602084013e61102a565b606091505b5091509150600082801561103f575081516020145b61104a57600061105b565b61105b82600063ffffffff612b7216565b9050600087868151811061106b57fe5b6020026020010151828161107b57fe5b049050806110975760009b5050505050505050505050506106cd565b8b8110806110a357508b155b156110ac57809b505b50505050505b600101610efa565b5050505050611490565b6001600160e01b031981167fc339d10a0000000000000000000000000000000000000000000000000000000014156111f7576040516060907fa85e59e4000000000000000000000000000000000000000000000000000000009061113390869060009081908190602401614d97565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166001600160e01b03199094169390931790925260045491519092506000916001600160a01b03169061119a90849061486c565b600060405180830381855afa9150503d80600081146111d5576040519150601f19603f3d011682016040523d82523d6000602084013e6111da565b606091505b50509050806111ea5760006111ee565b6000195b93505050611490565b6001600160e01b031981167fdc1600f30000000000000000000000000000000000000000000000000000000014156113205760008073__$808f8f452496495931fd70b932e88106d9$__63750bdb30866040518263ffffffff1660e01b81526004016112639190614d84565b60006040518083038186803b15801561127b57600080fd5b505af415801561128f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112b79190810190614085565b5092509250506112c5612b7e565b6001600160a01b0316826001600160a01b03161480156112f257506005546001600160a01b038281169116145b1561131957600061130a611304612b96565b88612a7a565b905061131581612bae565b9450505b5050611490565b6001600160e01b031981167f94cfcdd70000000000000000000000000000000000000000000000000000000014156114905760608073__$808f8f452496495931fd70b932e88106d9$__63bbb2dcf6866040518263ffffffff1660e01b815260040161138c9190614d84565b60006040518083038186803b1580156113a457600080fd5b505af41580156113b8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113e09190810190614241565b80519194509250905060005b81811461148b578381815181106113ff57fe5b60200260200101516000141561141457611483565b60006114338985848151811061142657fe5b6020026020010151610ba1565b9050600085838151811061144357fe5b6020026020010151828161145357fe5b0490508061146b5760009750505050505050506106cd565b87811080611477575087155b15611480578097505b50505b6001016113ec565b505050505b5092915050565b60008073__$808f8f452496495931fd70b932e88106d9$__638f4ce479846040518263ffffffff1660e01b81526004016114d19190614d84565b604080518083038186803b1580156114e857600080fd5b505af41580156114fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611520919081019061404e565b915091505b915091565b6004546001600160a01b031681565b6000546001600160a01b031681565b600080606080606073__$808f8f452496495931fd70b932e88106d9$__639eadc835876040518263ffffffff1660e01b81526004016115879190614d84565b60006040518083038186803b15801561159f57600080fd5b505af41580156115b3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115db91908101906140ef565b939a9299509097509550909350915050565b6000610934846116696040518060400160405280600b81526020017f30782050726f746f636f6c0000000000000000000000000000000000000000008152506040518060400160405280600581526020017f332e302e3000000000000000000000000000000000000000000000000000000081525087876129a3565b612dac565b606080825160405190808252806020026020018201604052801561169c578160200160208202803883390190505b50905060005b83518114611490578381815181106116b657fe5b60200260200101516001600160a01b0316318282815181106116d457fe5b60209081029190910101526001016116a2565b6000546040517f02cffc4500000000000000000000000000000000000000000000000000000000815260609173__$988eef118a938b5a4e7336ebab0aae599b$__916302cffc459161174d916001600160a01b03909116908890889088906004016148d9565b60006040518083038186803b15801561176557600080fd5b505af4158015611779573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109349190810190613e68565b6040517fa6627e9f00000000000000000000000000000000000000000000000000000000815260609073__$808f8f452496495931fd70b932e88106d9$__9063a6627e9f906117f69086908690600401614a58565b60006040518083038186803b15801561180e57600080fd5b505af4158015611822573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261184a91908101906142de565b9392505050565b6006546001600160a01b031681565b6040517fb43cffe100000000000000000000000000000000000000000000000000000000815260609073__$808f8f452496495931fd70b932e88106d9$__9063b43cffe1906118b990889088908890889060040161499f565b60006040518083038186803b1580156118d157600080fd5b505af41580156118e5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261190d91908101906142de565b95945050505050565b600060608073__$808f8f452496495931fd70b932e88106d9$__63bbb2dcf6856040518263ffffffff1660e01b81526004016119529190614d84565b60006040518083038186803b15801561196a57600080fd5b505af415801561197e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261067c9190810190614241565b60075481565b6005546001600160a01b031681565b6000806060600073__$808f8f452496495931fd70b932e88106d9$__63ca49f47c866040518263ffffffff1660e01b81526004016119f99190614d84565b60006040518083038186803b158015611a1157600080fd5b505af4158015611a25573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109cd9190810190614199565b606060008251905080604051908082528060200260200182016040528015611a7f578160200160208202803883390190505b50915060005b8181146107d257611a9c8585838151811061142657fe5b838281518110611aa857fe5b6020908102919091010152600101611a85565b600080611ace838263ffffffff612a0e16565b90506001600160e01b031981167f94cfcdd7000000000000000000000000000000000000000000000000000000001415611c395760608073__$808f8f452496495931fd70b932e88106d9$__63bbb2dcf6866040518263ffffffff1660e01b8152600401611b3c9190614d84565b60006040518083038186803b158015611b5457600080fd5b505af4158015611b68573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611b909190810190614241565b80519194509250905060005b818114611c2e57838181518110611baf57fe5b602002602001015160001415611bc457611c26565b6000611bd6898584815181106107a657fe5b90506000858381518110611be657fe5b60200260200101518281611bf657fe5b04905080611c0e5760009750505050505050506106cd565b87811080611c1a575087155b15611c23578097505b50505b600101611b9c565b506106cd9350505050565b6001600160e01b031981167ff47261b0000000000000000000000000000000000000000000000000000000001415611c9a576000611c7e84601063ffffffff612a4716565b600154909150610c0790829087906001600160a01b0316612dbb565b6001600160e01b031981167f02571792000000000000000000000000000000000000000000000000000000001415611fea5760008073__$808f8f452496495931fd70b932e88106d9$__6304a5618a866040518263ffffffff1660e01b8152600401611d069190614d84565b60606040518083038186803b158015611d1e57600080fd5b505af4158015611d32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611d569190810190614201565b600254604051929550909350606092507fe985e9c50000000000000000000000000000000000000000000000000000000091611da2918a916001600160a01b039091169060240161489c565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050905060006060846001600160a01b031683604051611e1d919061486c565b600060405180830381855afa9150503d8060008114611e58576040519150601f19603f3d011682016040523d82523d6000602084013e611e5d565b606091505b5091509150811580611e7157508051602014155b80611e8d5750611e8881600063ffffffff612b7216565b600114155b15611fdb576040516060907f081812fc0000000000000000000000000000000000000000000000000000000090611ec8908790602401614c01565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050856001600160a01b031681604051611f3f919061486c565b600060405180830381855afa9150503d8060008114611f7a576040519150601f19603f3d011682016040523d82523d6000602084013e611f7f565b606091505b509093509150828015611f93575081516020145b8015611fc257506002546001600160a01b0316611fb783600c63ffffffff612a4716565b6001600160a01b0316145b611fcd576000611fd0565b60015b60ff169750506110ba565b60001996505050505050611490565b6001600160e01b031981167fa7cb5fb7000000000000000000000000000000000000000000000000000000001415612211576040517f9eadc83500000000000000000000000000000000000000000000000000000000815260009073__$808f8f452496495931fd70b932e88106d9$__90639eadc8359061206f908790600401614d84565b60006040518083038186803b15801561208757600080fd5b505af415801561209b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526120c391908101906140ef565b5050600354604051929450606093507fe985e9c5000000000000000000000000000000000000000000000000000000009261210d925089916001600160a01b03169060240161489c565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050905060006060836001600160a01b031683604051612188919061486c565b600060405180830381855afa9150503d80600081146121c3576040519150601f19603f3d011682016040523d82523d6000602084013e6121c8565b606091505b50915091508180156121db575080516020145b80156121f757506121f381600063ffffffff612b7216565b6001145b612202576000612206565b6000195b955050505050611490565b6001600160e01b031981167fc339d10a00000000000000000000000000000000000000000000000000000000141561224d576000199150611490565b6001600160e01b031981167fdc1600f30000000000000000000000000000000000000000000000000000000014156114905760008073__$808f8f452496495931fd70b932e88106d9$__63750bdb30866040518263ffffffff1660e01b81526004016122b99190614d84565b60006040518083038186803b1580156122d157600080fd5b505af41580156122e5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261230d9190810190614085565b50925092505061231b612b7e565b6001600160a01b0316826001600160a01b031614801561234857506005546001600160a01b038281169116145b1561239257600061236d61235a612b96565b60055489906001600160a01b0316612dbb565b905060001981146123865761238181612bae565b61238a565b6000195b94505061243d565b6006546001600160a01b038281169116141561243d5773__$1fa048dff19b08eb02dfb6ebf13779c5bf$__630e70a03387836123cc612ec5565b6040518463ffffffff1660e01b81526004016123ea939291906148b6565b60206040518083038186803b15801561240257600080fd5b505af4158015612416573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061243a9190810190614641565b93505b50505092915050565b600080546040517f8dccde0400000000000000000000000000000000000000000000000000000000815273__$988eef118a938b5a4e7336ebab0aae599b$__91638dccde0491610ad0916001600160a01b031690889088908890600401614a23565b6040517fd3d862d100000000000000000000000000000000000000000000000000000000815260609073__$808f8f452496495931fd70b932e88106d9$__9063d3d862d1906117f69086908690600401614b6c565b6040517fd469502800000000000000000000000000000000000000000000000000000000815260009073__$808f8f452496495931fd70b932e88106d9$__9063d469502890612550908590600401614d84565b60206040518083038186803b15801561256857600080fd5b505af415801561257c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108819190810190614033565b6060806060600085519050806040519080825280602002602001820160405280156125e557816020015b6125d26136a6565b8152602001906001900390816125ca5790505b50935080604051908082528060200260200182016040528015612612578160200160208202803883390190505b5092508060405190808252806020026020018201604052801561263f578160200160208202803883390190505b50915060005b8181146126cf5761267c87828151811061265b57fe5b602002602001015187838151811061266f57fe5b60200260200101516126f1565b875188908590811061268a57fe5b6020026020010187858151811061269d57fe5b602002602001018786815181106126b057fe5b9315156020948502919091019093019290925291905252600101612645565b50509250925092565b6060806126e58484611a4d565b91506106a28484610757565b6126f96136a6565b600080546040517f9d3fa4b900000000000000000000000000000000000000000000000000000000815282916001600160a01b031690639d3fa4b990612743908890600401614eca565b60606040518083038186803b15801561275b57600080fd5b505afa15801561276f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506127939190810190614439565b85516000546040517fa12dcc6f00000000000000000000000000000000000000000000000000000000815292955090916001600160a01b039091169063a12dcc6f906127e59089908990600401614f08565b60206040518083038186803b1580156127fd57600080fd5b505afa158015612811573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506128359190810190614013565b9150600061284287612edd565b90506000612863886101800151896101400151612f0990919063ffffffff16565b1561289857612891826128878a60c001518b60800151612f2e90919063ffffffff16565b8a60a00151612f4a565b9050612905565b60c08801516128b4576128918289608001518a60a00151612f4a565b60006128c5848a61018001516106ab565b905060006128dc848b608001518c60a00151612f4a565b905060006128f3838c60c001518d60a00151612f4a565b90506128ff828261298d565b93505050505b61292961292387604001518a60a00151612f6c90919063ffffffff16565b8261298d565b945061293488612f8b565b61293d57600094505b60038651600681111561294c57fe5b1461295657600094505b5050509250925092565b6001546001600160a01b031681565b6002546001600160a01b031681565b6003546001600160a01b031681565b600081831061299c578161184a565b5090919050565b8351602094850120835193850193909320604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815295860194909452928401929092526060830152608082015260a0902090565b600061184a82612a0985612ff2565b61306d565b60008160040183511015612a3457612a34612a2f60038551856004016130a7565b613116565b5001602001516001600160e01b03191690565b60008160140183511015612a6857612a68612a2f60048551856014016130a7565b5001601401516001600160a01b031690565b60405160009081906060906001600160a01b038616907f70a082310000000000000000000000000000000000000000000000000000000090612ac0908790602401614888565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166001600160e01b0319909416939093179092529051612b13919061486c565b600060405180830381855afa9150503d8060008114612b4e576040519150601f19603f3d011682016040523d82523d6000602084013e612b53565b606091505b5091509150818015612b66575080516020145b156107d2576106c88160005b600061184a838361311e565b736b175474e89094c44da98b954eedeac495271d0f90565b7306af07097c9eeb7fd685c692751d5c66db49c21590565b600080612bb9612b96565b6001600160a01b0316634ba2363a6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015612bf357600080fd5b505af1158015612c07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612c2b9190810190614311565b90506000816001600160a01b03166320aba08b6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015612c6a57600080fd5b505af1158015612c7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612ca29190810190614641565b4211612d2057816001600160a01b031663c92aecc46040518163ffffffff1660e01b8152600401602060405180830381600087803b158015612ce357600080fd5b505af1158015612cf7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612d1b9190810190614641565b612d93565b816001600160a01b0316639f678cca6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015612d5b57600080fd5b505af1158015612d6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612d939190810190614641565b9050610934816b033b2e3c9fd0803ce800000086612f4a565b600061184a82612a0985613148565b60405160009081906060906001600160a01b038716907fdd62ed3e0000000000000000000000000000000000000000000000000000000090612e03908890889060240161489c565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166001600160e01b0319909416939093179092529051612e56919061486c565b600060405180830381855afa9150503d8060008114612e91576040519150601f19603f3d011682016040523d82523d6000602084013e612e96565b606091505b5091509150818015612ea9575080516020145b15612ebc57612eb9816000612b72565b92505b50509392505050565b731e0447b19bb6ecfdae1e4ae1694b0c3659614e4e90565b6000806000612eeb84613201565b91509150612ef9828261298d565b925061093483856080015161298d565b60008151835114801561184a5750508051602091820120825192909101919091201490565b60008282018381101561184a5761184a612a2f60008686613414565b600061093483612f60868563ffffffff61343316565b9063ffffffff61346416565b600082821115612f8557612f85612a2f60028585613414565b50900390565b6000612f9b82610140015161348e565b8015612fbc575060c08201511580612fbc5750612fbc82610180015161348e565b8015612fd15750612fd182610160015161348e565b8015610881575060e082015115806108815750610881826101a0015161348e565b608081810151825160208085015160408087015160609788015186519685019690962082517fec69816980a3a3ca4554410e60253953e9ff375ba4536a98adfa15cc7154150881529485019590955290830191909152948101949094526001600160a01b039091169183019190915260a082015260c0902090565b6040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b6060632800659560e01b8484846040516024016130c693929190614df7565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166001600160e01b03199093169290921790915290509392505050565b805160208201fd5b6000816020018351101561313f5761313f612a2f60058551856020016130a7565b50016020015190565b6101408101516101608201516101808301516101a08401516000937ff80322eb8376aafb64eadf8f0d7623f22130fd9491a221e902b713cb984a75349390929091602087101561319457fe5b601f1987018051610140890180516101608b0180516101808d0180516101a08f0180519d89528c5160209d8e012087528b519b8d019b909b2084528951998c01999099208152875197909a019690962088526101e085209390945290529190529252919091529050919050565b600080600483610140015151101561321e57506000905080611525565b610140830151600090613237908263ffffffff612a0e16565b90506001600160e01b031981167fdc1600f30000000000000000000000000000000000000000000000000000000014156133e4576101408401516040517f750bdb3000000000000000000000000000000000000000000000000000000000815260009173__$808f8f452496495931fd70b932e88106d9$__9163750bdb30916132c291600401614d84565b60006040518083038186803b1580156132da57600080fd5b505af41580156132ee573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526133169190810190614085565b506006549093506001600160a01b038085169116141591506133e290505773__$1fa048dff19b08eb02dfb6ebf13779c5bf$__63d12a796086613357612ec5565b6040518363ffffffff1660e01b8152600401613374929190614edd565b60206040518083038186803b15801561338c57600080fd5b505af41580156133a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506133c49190810190614641565b6133d78660000151876101400151611abb565b935093505050611525565b505b6133f78460000151856101400151610ba1565b61340a8560000151866101400151611abb565b9250925050915091565b606063e946c1bb60e01b8484846040516024016130c693929190614dd5565b600082613442575060006106cd565b8282028284828161344f57fe5b041461184a5761184a612a2f60018686613414565b60008161347a5761347a612a2f60038585613414565b600082848161348557fe5b04949350505050565b6000602082518161349b57fe5b066004146134ab57506000610884565b60006134bd838263ffffffff612a0e16565b90506001600160e01b031981167f94cfcdd700000000000000000000000000000000000000000000000000000000146134fa576001915050610884565b6040517fbbb2dcf600000000000000000000000000000000000000000000000000000000815260609073__$808f8f452496495931fd70b932e88106d9$__9063bbb2dcf69061354d908790600401614d84565b60006040518083038186803b15801561356557600080fd5b505af4158015613579573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135a19190810190614241565b80519093509150600090505b8181146136375760006135dd60008584815181106135c757fe5b6020026020010151612a0e90919063ffffffff16565b90506001600160e01b031981167f0257179200000000000000000000000000000000000000000000000000000000141561362e5761361b8483613643565b1561362e57600095505050505050610884565b506001016135ad565b50600195945050505050565b8151600090600183015b818110156107d25761368e85828151811061366457fe5b602002602001015186868151811061367857fe5b6020026020010151612f0990919063ffffffff16565b1561369e576001925050506106cd565b60010161364d565b6040805160608101909152806000815260006020820181905260409091015290565b80356106cd81614fd6565b80516106cd81614fd6565b600082601f8301126136ee578081fd5b81356137016136fc82614f62565b614f3b565b81815291506020808301908481018184028601820187101561372257600080fd5b60005b8481101561148b57813561373881614fd6565b84529282019290820190600101613725565b600082601f83011261375a578081fd5b81356137686136fc82614f62565b8181529150602080830190840160005b838110156137a5576137908760208435890101613939565b83526020928301929190910190600101613778565b5050505092915050565b600082601f8301126137bf578081fd5b81516137cd6136fc82614f62565b8181529150602080830190840160005b838110156137a5576137f58760208451890101613987565b835260209283019291909101906001016137dd565b600082601f83011261381a578081fd5b81356138286136fc82614f62565b8181529150602080830190840160005b838110156137a55761385087602084358901016139dc565b83526020928301929190910190600101613838565b600082601f830112613875578081fd5b81356138836136fc82614f62565b8181529150602080830190848101818402860182018710156138a457600080fd5b60005b8481101561148b578135845292820192908201906001016138a7565b600082601f8301126138d3578081fd5b81516138e16136fc82614f62565b81815291506020808301908481018184028601820187101561390257600080fd5b60005b8481101561148b57815184529282019290820190600101613905565b80516001600160e01b0319811681146106cd57600080fd5b600082601f830112613949578081fd5b81356139576136fc82614f82565b915080825283602082850101111561396e57600080fd5b8060208401602084013760009082016020015292915050565b600082601f830112613997578081fd5b81516139a56136fc82614f82565b91508082528360208285010111156139bc57600080fd5b611490816020840160208601614fa6565b8051600581106106cd57600080fd5b60006101c08083850312156139ef578182fd5b6139f881614f3b565b915050613a0583836136c8565b8152613a1483602084016136c8565b6020820152613a2683604084016136c8565b6040820152613a3883606084016136c8565b60608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e08201526101008083013581830152506101208083013581830152506101408083013567ffffffffffffffff80821115613a9a57600080fd5b613aa686838701613939565b83850152610160925082850135915080821115613ac257600080fd5b613ace86838701613939565b83850152610180925082850135915080821115613aea57600080fd5b613af686838701613939565b838501526101a0925082850135915080821115613b1257600080fd5b50613b1f85828601613939565b82840152505092915050565b60006101c0808385031215613b3e578182fd5b613b4781614f3b565b915050613b5483836136d3565b8152613b6383602084016136d3565b6020820152613b7583604084016136d3565b6040820152613b8783606084016136d3565b60608201526080820151608082015260a082015160a082015260c082015160c082015260e082015160e08201526101008083015181830152506101208083015181830152506101408083015167ffffffffffffffff80821115613be957600080fd5b613bf586838701613987565b83850152610160925082850151915080821115613c1157600080fd5b613c1d86838701613987565b83850152610180925082850151915080821115613c3957600080fd5b613c4586838701613987565b838501526101a0925082850151915080821115613c6157600080fd5b50613b1f85828601613987565b600060208284031215613c7f578081fd5b813561184a81614fd6565b60008060408385031215613c9c578081fd5b8235613ca781614fd6565b9150602083013567ffffffffffffffff811115613cc2578182fd5b613cce8582860161374a565b9150509250929050565b60008060008060808587031215613ced578182fd5b8435613cf881614fd6565b9350602085013567ffffffffffffffff80821115613d14578384fd5b613d2088838901613865565b94506040870135915080821115613d35578384fd5b613d4188838901613865565b93506060870135915080821115613d56578283fd5b50613d6387828801613939565b91505092959194509250565b60008060408385031215613d81578182fd5b8235613d8c81614fd6565b9150602083013567ffffffffffffffff811115613da7578182fd5b613cce85828601613939565b600080600060608486031215613dc7578081fd5b8335613dd281614fd6565b9250602084013567ffffffffffffffff811115613ded578182fd5b613df986828701613939565b925050604084013590509250925092565b60008060408385031215613e1c578182fd5b8235613e2781614fd6565b946020939093013593505050565b600060208284031215613e46578081fd5b813567ffffffffffffffff811115613e5c578182fd5b610934848285016136de565b60006020808385031215613e7a578182fd5b825167ffffffffffffffff811115613e90578283fd5b80840185601f820112613ea1578384fd5b80519150613eb16136fc83614f62565b8281528381019082850185850284018601891015613ecd578687fd5b8693505b84841015613ef757613ee389826139cd565b835260019390930192918501918501613ed1565b50979650505050505050565b600080600060608486031215613f17578081fd5b833567ffffffffffffffff80821115613f2e578283fd5b613f3a8783880161380a565b94506020860135915080821115613f4f578283fd5b613f5b878388016136de565b93506040860135915080821115613f70578283fd5b50613f7d86828701613865565b9150509250925092565b60008060408385031215613f99578182fd5b823567ffffffffffffffff80821115613fb0578384fd5b613fbc8683870161380a565b93506020850135915080821115613fd1578283fd5b50613cce8582860161374a565b60008060408385031215613ff0578182fd5b823567ffffffffffffffff80821115614007578384fd5b613fbc86838701613865565b600060208284031215614024578081fd5b8151801515811461184a578182fd5b600060208284031215614044578081fd5b61184a8383613921565b60008060408385031215614060578182fd5b61406a8484613921565b9150602083015161407a81614fd6565b809150509250929050565b6000806000806080858703121561409a578182fd5b84516140a581614feb565b60208601519094506140b681614fd6565b60408601519093506140c781614fd6565b606086015190925067ffffffffffffffff8111156140e3578182fd5b613d6387828801613987565b600080600080600060a08688031215614106578283fd5b6141108787613921565b9450602086015161412081614fd6565b604087015190945067ffffffffffffffff8082111561413d578485fd5b61414989838a016138c3565b9450606088015191508082111561415e578283fd5b61416a89838a016138c3565b9350608088015191508082111561417f578283fd5b5061418c88828901613987565b9150509295509295909350565b600080600080608085870312156141ae578182fd5b6141b88686613921565b935060208501516141c881614fd6565b604086015190935067ffffffffffffffff8111156141e4578283fd5b6141f087828801613987565b606096909601519497939650505050565b600080600060608486031215614215578081fd5b61421f8585613921565b9250602084015161422f81614fd6565b80925050604084015190509250925092565b600080600060608486031215614255578081fd5b835161426081614feb565b602085015190935067ffffffffffffffff8082111561427d578283fd5b614289878388016138c3565b9350604086015191508082111561429e578283fd5b50613f7d868287016137af565b6000602082840312156142bc578081fd5b813567ffffffffffffffff8111156142d2578182fd5b61093484828501613939565b6000602082840312156142ef578081fd5b815167ffffffffffffffff811115614305578182fd5b61093484828501613987565b600060208284031215614322578081fd5b815161184a81614fd6565b60006020828403121561433e578081fd5b81516005811061184a578182fd5b60008060008060808587031215614361578182fd5b845167ffffffffffffffff80821115614378578384fd5b61438488838901613987565b955060209150818701518181111561439a578485fd5b80880189601f8201126143ab578586fd5b805191506143bb6136fc83614f62565b82815284810190828601885b858110156143f0576143de8e898451880101613b2b565b845292870192908701906001016143c7565b505060408b015190985094505050508082111561440b578384fd5b614417888389016138c3565b9350606087015191508082111561442c578283fd5b50613d63878288016137af565b60006060828403121561444a578081fd5b6144546060614f3b565b825160078110614462578283fd5b8152602083810151908201526040928301519281019290925250919050565b600080600060608486031215614495578081fd5b833567ffffffffffffffff8111156144ab578182fd5b6144b7868287016139dc565b93505060208401356144c881614fd6565b929592945050506040919091013590565b600080604083850312156144eb578182fd5b823567ffffffffffffffff80821115614502578384fd5b61450e868387016139dc565b93506020850135915080821115614523578283fd5b50613cce85828601613939565b600080600060608486031215614544578081fd5b833567ffffffffffffffff81111561455a578182fd5b614566868287016139dc565b93505060208401359150604084013561457e81614fd6565b809150509250925092565b60008060006060848603121561459d578081fd5b833567ffffffffffffffff808211156145b4578283fd5b81860160a081890312156145c6578384fd5b6145d060a0614f3b565b92508035835260208101356020840152604081013560408401526145f788606083016136c8565b606084015260808101358281111561460d578485fd5b61461989828401613939565b60808501525091945050506020840135915061463885604086016136c8565b90509250925092565b600060208284031215614652578081fd5b5051919050565b6001600160a01b0316815260200190565b60006146768383614748565b505060600190565b6001600160a01b03169052565b60008282518085526020808601955080818302840101818601855b848110156146d457601f198684030189526146c283835161471c565b988401989250908301906001016146a6565b5090979650505050505050565b6000815180845260208401935060208301825b828110156147125781518652602095860195909101906001016146f4565b5093949350505050565b60008151808452614734816020860160208601614fa6565b601f01601f19169290920160200192915050565b80516007811061475457fe5b825260208181015190830152604090810151910152565b60006101c061477b84845161467e565b602083015161478d602086018261467e565b5060408301516147a0604086018261467e565b5060608301516147b3606086018261467e565b506080830151608085015260a083015160a085015260c083015160c085015260e083015160e085015261010080840151818601525061012080840151818601525061014080840151828287015261480c8387018261471c565b91505061016091508184015185820383870152614829828261471c565b925050506101808084015185830382870152614845838261471c565b9150506101a091508184015185820383870152614862828261471c565b9695505050505050565b6000825161487e818460208701614fa6565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b0393841681529183166020830152909116604082015260600190565b6000608082016001600160a01b038716835260206080818501528187516149008185614c01565b91508193508281028201838a01865b8381101561493957868303855261492783835161476b565b9486019492509085019060010161490f565b50508681036040880152809450885192506149548382614c01565b94505050818701845b8281101561497e57614970858351614659565b94509083019060010161495d565b50505050828103606084015261499481856146e1565b979650505050505050565b60006001600160a01b0386168252608060208301526149c160808301866146e1565b82810360408401526149d381866146e1565b83810360608501526149e5818661471c565b98975050505050505050565b60006001600160a01b038516825260606020830152614a13606083018561471c565b9050826040830152949350505050565b60006001600160a01b03808716835260806020840152614a46608084018761476b565b94166040830152506060015292915050565b6001600160a01b03929092168252602082015260400190565b602080825282518282018190526000918401906040840190835b81811015614ab357835160058110614a9f57fe5b835260209384019390920191600101614a8b565b509095945050505050565b60006060820160608352808651614ad58184614c01565b915060209250828801845b82811015614b0157614af384835161466a565b935090840190600101614ae0565b50505083810382850152614b1581876146e1565b84810360408601528551808252908301915082860190845b81811015614b4b578251151584529284019291840191600101614b2d565b509198975050505050505050565b60006020825261184a60208301846146e1565b600060408252614b7f60408301856146e1565b602083820381850152818551808452828401915082838202850101838801865b83811015614bcd57601f19878403018552614bbb83835161471c565b94860194925090850190600101614b9f565b50909998505050505050505050565b600060408252614bef60408301856146e1565b828103602084015261190d81856146e1565b90815260200190565b6001600160e01b031991909116815260200190565b6001600160e01b03199290921682526001600160a01b0316602082015260400190565b60006001600160e01b0319861682526001600160a01b03808616602084015280851660408401525060806060830152614862608083018461471c565b60006001600160e01b0319871682526001600160a01b038616602083015260a06040830152614cb060a08301866146e1565b8281036060840152614cc281866146e1565b8381036080850152614cd4818661471c565b9998505050505050505050565b60006001600160e01b0319861682526001600160a01b038516602083015260806040830152614d13608083018561471c565b905082606083015295945050505050565b6001600160e01b03199390931683526001600160a01b03919091166020830152604082015260600190565b60006001600160e01b03198516825260606020830152614d7260608301856146e1565b8281036040840152614862818561468b565b60006020825261184a602083018461471c565b600060808252614daa608083018761471c565b6001600160a01b03958616602084015293909416604082015260ff9190911660609091015292915050565b6060810160048510614de357fe5b938152602081019290925260409091015290565b6060810160088510614de357fe5b6020810160058310614e1357fe5b91905290565b600060808252614e2c608083018761471c565b602083820381850152818751808452828401915082838202850101838a01865b83811015614e7a57601f19878403018552614e6883835161476b565b94860194925090850190600101614e4c565b50508681036040880152614e8e818a6146e1565b9450505050508281036060840152614994818561468b565b60a08101614eb48286614748565b8360608301528215156080830152949350505050565b60006020825261184a602083018461476b565b600060408252614ef0604083018561476b565b90506001600160a01b03831660208301529392505050565b600060408252614f1b604083018561476b565b828103602084015261190d818561471c565b918252602082015260400190565b60405181810167ffffffffffffffff81118282101715614f5a57600080fd5b604052919050565b600067ffffffffffffffff821115614f78578081fd5b5060209081020190565b600067ffffffffffffffff821115614f98578081fd5b50601f01601f191660200190565b60005b83811015614fc1578181015183820152602001614fa9565b83811115614fd0576000848401525b50505050565b6001600160a01b038116811461075457600080fd5b6001600160e01b03198116811461075457600080fdfea365627a7a7231582035e812e328807b8502bbdb23eb0d94c3493497753f571da44447373be9944d316c6578706572696d656e74616cf564736f6c63430005110040" }, "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b50600436106102775760003560e01c8063a5cd62ba11610160578063d186037f116100d8578063e4e6e7da1161008c578063ee18599711610071578063ee185997146105d8578063ef3bb097146105e0578063ff84e7cc146105e857610277565b8063e4e6e7da14610595578063e77286eb146105b657610277565b8063d3d862d1116100bd578063d3d862d114610540578063d469502814610553578063e25cabf71461057357610277565b8063d186037f1461051a578063d36379051461052d57610277565b8063bbb2dcf61161012f578063c82037ef11610114578063c82037ef146104dc578063ca49f47c146104e4578063d001c5dc1461050757610277565b8063bbb2dcf6146104b2578063c26cfecd146104d457610277565b8063a5cd62ba14610464578063a6627e9f14610484578063a7530f1214610497578063b43cffe11461049f57610277565b80637982653e116101f35780639baf2705116101c25780639eadc835116101a75780639eadc8351461041a578063a070cac81461043e578063a0901e511461045157610277565b80639baf2705146103fd5780639cd016051461041257610277565b80637982653e1461039657806379c9c426146103b65780637d727512146103c95780638f4ce479146103dc57610277565b80634dfdac201161024a57806363eb39921161022f57806363eb39921461033d5780636f83188e14610350578063750bdb301461037357610277565b80634dfdac20146102fd578063590aa8751461031d57610277565b806304a5618a1461027c5780630d7b7d76146102a75780632322cf76146102c857806346eb65cb146102e8575b600080fd5b61028f61028a366004614168565b6105f0565b60405161029e93929190614d64565b60405180910390f35b6102ba6102b5366004613c2c565b610689565b60405161029e929190614f6d565b6102db6102d6366004613c2c565b6106ab565b60405161029e9190614c41565b6102fb6102f6366004614168565b6106d3565b005b61031061030b366004613b47565b610757565b60405161029e9190614b99565b61033061032b366004613b2b565b6107da565b60405161029e9190614dc4565b61033061034b366004613c70565b610889565b61036361035e366004614168565b61093c565b60405161029e9493929190614e59565b610386610381366004614168565b6109dc565b60405161029e9493929190614c82565b6103a96103a43660046144b3565b610a6e565b60405161029e9190614e45565b6102db6103c43660046145bb565b610b20565b6102db6103d7366004613c2c565b610ba1565b6103ef6103ea366004614168565b611497565b60405161029e929190614c5f565b61040561152a565b60405161029e91906148c4565b610405611539565b61042d610428366004614168565b611548565b60405161029e959493929190614cbe565b6102db61044c366004614562565b6115ed565b61031061045f366004613cf2565b61166e565b610477610472366004613dc0565b6116e7565b60405161029e9190614aad565b610330610492366004613cc7565b6117a1565b610405611851565b6103306104ad366004613b95565b611860565b6104c56104c0366004614168565b611916565b60405161029e93929190614d8f565b6102db6119a6565b6104056119ac565b6104f76104f2366004614168565b6119bb565b60405161029e9493929190614d21565b610310610515366004613b47565b611a4d565b6102db610528366004613c2c565b611abb565b6103a961053b3660046144b3565b612446565b61033061054e366004613e9b565b6124a8565b610566610561366004614168565b6124fd565b60405161029e9190614c4a565b610586610581366004613e44565b6125a0565b60405161029e93929190614afa565b6105a86105a3366004613b47565b6126d8565b60405161029e929190614c1c565b6105c96105c436600461450b565b6126f1565b60405161029e93929190614ee6565b610405612960565b61040561296f565b61040561297e565b600080600073__$af40232205bf188fa8dd573e0f47eaeabc$__6304a5618a856040518263ffffffff1660e01b815260040161062c9190614dc4565b60606040518083038186803b15801561064457600080fd5b505af4158015610658573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061067c91908101906140be565b9250925092509193909250565b6000806106968484610ba1565b91506106a28484611abb565b90509250929050565b60008060006106ba8585610689565b915091506106c8828261298d565b925050505b92915050565b6040517f46eb65cb00000000000000000000000000000000000000000000000000000000815273__$af40232205bf188fa8dd573e0f47eaeabc$__906346eb65cb90610723908490600401614dc4565b60006040518083038186803b15801561073b57600080fd5b505af415801561074f573d6000803e3d6000fd5b505050505b50565b606060008251905080604051908082528060200260200182016040528015610789578160200160208202803883390190505b50915060005b8181146107d2576107b3858583815181106107a657fe5b6020026020010151611abb565b8382815181106107bf57fe5b602090810291909101015260010161078f565b505092915050565b6040517f590aa87500000000000000000000000000000000000000000000000000000000815260609073__$af40232205bf188fa8dd573e0f47eaeabc$__9063590aa8759061082d9085906004016148c4565b60006040518083038186803b15801561084557600080fd5b505af4158015610859573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610881919081019061419b565b90505b919050565b6040517f63eb399200000000000000000000000000000000000000000000000000000000815260609073__$af40232205bf188fa8dd573e0f47eaeabc$__906363eb3992906108e090879087908790600401614a2d565b60006040518083038186803b1580156108f857600080fd5b505af415801561090c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610934919081019061419b565b949350505050565b60608060608073__$d80c8447db5aca01fdd367a509db3f8167$__636f83188e866040518263ffffffff1660e01b81526004016109799190614dc4565b60006040518083038186803b15801561099157600080fd5b505af41580156109a5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109cd9190810190614209565b93509350935093509193509193565b6000806000606073__$af40232205bf188fa8dd573e0f47eaeabc$__63750bdb30866040518263ffffffff1660e01b8152600401610a1a9190614dc4565b60006040518083038186803b158015610a3257600080fd5b505af4158015610a46573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109cd9190810190613f42565b600080546040517f9caa023b00000000000000000000000000000000000000000000000000000000815273__$51238773fd6195a8a6f152a329b1854152$__91639caa023b91610ad0916001600160a01b031690889088908890600401614a5f565b60206040518083038186803b158015610ae857600080fd5b505af4158015610afc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061093491908101906141ea565b600061093484610b9c6040518060400160405280600b81526020017f30782050726f746f636f6c0000000000000000000000000000000000000000008152506040518060400160405280600581526020017f332e302e3000000000000000000000000000000000000000000000000000000081525087876129a3565b6129fa565b600080610bb4838263ffffffff612a0e16565b90506001600160e01b031981167ff47261b0000000000000000000000000000000000000000000000000000000001415610c0f576000610bfb84601063ffffffff612a4716565b9050610c078186612a7a565b925050611490565b6001600160e01b031981167f02571792000000000000000000000000000000000000000000000000000000001415610e285760008073__$af40232205bf188fa8dd573e0f47eaeabc$__6304a5618a866040518263ffffffff1660e01b8152600401610c7b9190614dc4565b60606040518083038186803b158015610c9357600080fd5b505af4158015610ca7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ccb91908101906140be565b6040519194509250606091507f6352211e0000000000000000000000000000000000000000000000000000000090610d07908490602401614c41565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050905060006060846001600160a01b031683604051610d8291906148a8565b600060405180830381855afa9150503d8060008114610dbd576040519150601f19603f3d011682016040523d82523d6000602084013e610dc2565b606091505b50915091506000828015610dd7575081516020145b610de2576000610df3565b610df382600c63ffffffff612a4716565b9050896001600160a01b0316816001600160a01b031614610e15576000610e18565b60015b60ff169750505050505050611490565b6001600160e01b031981167fa7cb5fb70000000000000000000000000000000000000000000000000000000014156110c457600060608073__$af40232205bf188fa8dd573e0f47eaeabc$__639eadc835876040518263ffffffff1660e01b8152600401610e969190614dc4565b60006040518083038186803b158015610eae57600080fd5b505af4158015610ec2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610eea9190810190613fac565b5081519296509094509250905060005b8181146110ba57828181518110610f0d57fe5b602002602001015160001415610f22576110b2565b83516060907efdd58e00000000000000000000000000000000000000000000000000000000908b90879085908110610f5657fe5b6020026020010151604051602401610f6f929190614a94565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050905060006060876001600160a01b031683604051610fea91906148a8565b600060405180830381855afa9150503d8060008114611025576040519150601f19603f3d011682016040523d82523d6000602084013e61102a565b606091505b5091509150600082801561103f575081516020145b61104a57600061105b565b61105b82600063ffffffff612b7216565b9050600087868151811061106b57fe5b6020026020010151828161107b57fe5b049050806110975760009b5050505050505050505050506106cd565b8b8110806110a357508b155b156110ac57809b505b50505050505b600101610efa565b5050505050611490565b6001600160e01b031981167fc339d10a0000000000000000000000000000000000000000000000000000000014156111f7576040516060907fa85e59e4000000000000000000000000000000000000000000000000000000009061113390869060009081908190602401614dd7565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166001600160e01b03199094169390931790925260045491519092506000916001600160a01b03169061119a9084906148a8565b600060405180830381855afa9150503d80600081146111d5576040519150601f19603f3d011682016040523d82523d6000602084013e6111da565b606091505b50509050806111ea5760006111ee565b6000195b93505050611490565b6001600160e01b031981167fdc1600f30000000000000000000000000000000000000000000000000000000014156113205760008073__$af40232205bf188fa8dd573e0f47eaeabc$__63750bdb30866040518263ffffffff1660e01b81526004016112639190614dc4565b60006040518083038186803b15801561127b57600080fd5b505af415801561128f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112b79190810190613f42565b5092509250506112c5612b7e565b6001600160a01b0316826001600160a01b03161480156112f257506005546001600160a01b038281169116145b1561131957600061130a611304612b96565b88612a7a565b905061131581612bae565b9450505b5050611490565b6001600160e01b031981167f94cfcdd70000000000000000000000000000000000000000000000000000000014156114905760608073__$af40232205bf188fa8dd573e0f47eaeabc$__63bbb2dcf6866040518263ffffffff1660e01b815260040161138c9190614dc4565b60006040518083038186803b1580156113a457600080fd5b505af41580156113b8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113e091908101906140fe565b80519194509250905060005b81811461148b578381815181106113ff57fe5b60200260200101516000141561141457611483565b60006114338985848151811061142657fe5b6020026020010151610ba1565b9050600085838151811061144357fe5b6020026020010151828161145357fe5b0490508061146b5760009750505050505050506106cd565b87811080611477575087155b15611480578097505b50505b6001016113ec565b505050505b5092915050565b60008073__$af40232205bf188fa8dd573e0f47eaeabc$__638f4ce479846040518263ffffffff1660e01b81526004016114d19190614dc4565b604080518083038186803b1580156114e857600080fd5b505af41580156114fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506115209190810190613f0b565b915091505b915091565b6004546001600160a01b031681565b6000546001600160a01b031681565b600080606080606073__$af40232205bf188fa8dd573e0f47eaeabc$__639eadc835876040518263ffffffff1660e01b81526004016115879190614dc4565b60006040518083038186803b15801561159f57600080fd5b505af41580156115b3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115db9190810190613fac565b939a9299509097509550909350915050565b6000610934846116696040518060400160405280600b81526020017f30782050726f746f636f6c0000000000000000000000000000000000000000008152506040518060400160405280600581526020017f332e302e3000000000000000000000000000000000000000000000000000000081525087876129a3565b612dac565b606080825160405190808252806020026020018201604052801561169c578160200160208202803883390190505b50905060005b83518114611490578381815181106116b657fe5b60200260200101516001600160a01b0316318282815181106116d457fe5b60209081029190910101526001016116a2565b6000546040517f02cffc4500000000000000000000000000000000000000000000000000000000815260609173__$51238773fd6195a8a6f152a329b1854152$__916302cffc459161174d916001600160a01b0390911690889088908890600401614915565b60006040518083038186803b15801561176557600080fd5b505af4158015611779573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109349190810190613d25565b6040517fa6627e9f00000000000000000000000000000000000000000000000000000000815260609073__$af40232205bf188fa8dd573e0f47eaeabc$__9063a6627e9f906117f69086908690600401614a94565b60006040518083038186803b15801561180e57600080fd5b505af4158015611822573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261184a919081019061419b565b9392505050565b6006546001600160a01b031681565b6040517fb43cffe100000000000000000000000000000000000000000000000000000000815260609073__$af40232205bf188fa8dd573e0f47eaeabc$__9063b43cffe1906118b99088908890889088906004016149db565b60006040518083038186803b1580156118d157600080fd5b505af41580156118e5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261190d919081019061419b565b95945050505050565b600060608073__$af40232205bf188fa8dd573e0f47eaeabc$__63bbb2dcf6856040518263ffffffff1660e01b81526004016119529190614dc4565b60006040518083038186803b15801561196a57600080fd5b505af415801561197e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261067c91908101906140fe565b60075481565b6005546001600160a01b031681565b6000806060600073__$af40232205bf188fa8dd573e0f47eaeabc$__63ca49f47c866040518263ffffffff1660e01b81526004016119f99190614dc4565b60006040518083038186803b158015611a1157600080fd5b505af4158015611a25573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109cd9190810190614056565b606060008251905080604051908082528060200260200182016040528015611a7f578160200160208202803883390190505b50915060005b8181146107d257611a9c8585838151811061142657fe5b838281518110611aa857fe5b6020908102919091010152600101611a85565b600080611ace838263ffffffff612a0e16565b90506001600160e01b031981167f94cfcdd7000000000000000000000000000000000000000000000000000000001415611c395760608073__$af40232205bf188fa8dd573e0f47eaeabc$__63bbb2dcf6866040518263ffffffff1660e01b8152600401611b3c9190614dc4565b60006040518083038186803b158015611b5457600080fd5b505af4158015611b68573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611b9091908101906140fe565b80519194509250905060005b818114611c2e57838181518110611baf57fe5b602002602001015160001415611bc457611c26565b6000611bd6898584815181106107a657fe5b90506000858381518110611be657fe5b60200260200101518281611bf657fe5b04905080611c0e5760009750505050505050506106cd565b87811080611c1a575087155b15611c23578097505b50505b600101611b9c565b506106cd9350505050565b6001600160e01b031981167ff47261b0000000000000000000000000000000000000000000000000000000001415611c9a576000611c7e84601063ffffffff612a4716565b600154909150610c0790829087906001600160a01b0316612dbb565b6001600160e01b031981167f02571792000000000000000000000000000000000000000000000000000000001415611fea5760008073__$af40232205bf188fa8dd573e0f47eaeabc$__6304a5618a866040518263ffffffff1660e01b8152600401611d069190614dc4565b60606040518083038186803b158015611d1e57600080fd5b505af4158015611d32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611d5691908101906140be565b600254604051929550909350606092507fe985e9c50000000000000000000000000000000000000000000000000000000091611da2918a916001600160a01b03909116906024016148d8565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050905060006060846001600160a01b031683604051611e1d91906148a8565b600060405180830381855afa9150503d8060008114611e58576040519150601f19603f3d011682016040523d82523d6000602084013e611e5d565b606091505b5091509150811580611e7157508051602014155b80611e8d5750611e8881600063ffffffff612b7216565b600114155b15611fdb576040516060907f081812fc0000000000000000000000000000000000000000000000000000000090611ec8908790602401614c41565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050856001600160a01b031681604051611f3f91906148a8565b600060405180830381855afa9150503d8060008114611f7a576040519150601f19603f3d011682016040523d82523d6000602084013e611f7f565b606091505b509093509150828015611f93575081516020145b8015611fc257506002546001600160a01b0316611fb783600c63ffffffff612a4716565b6001600160a01b0316145b611fcd576000611fd0565b60015b60ff169750506110ba565b60001996505050505050611490565b6001600160e01b031981167fa7cb5fb7000000000000000000000000000000000000000000000000000000001415612211576040517f9eadc83500000000000000000000000000000000000000000000000000000000815260009073__$af40232205bf188fa8dd573e0f47eaeabc$__90639eadc8359061206f908790600401614dc4565b60006040518083038186803b15801561208757600080fd5b505af415801561209b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526120c39190810190613fac565b5050600354604051929450606093507fe985e9c5000000000000000000000000000000000000000000000000000000009261210d925089916001600160a01b0316906024016148d8565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050905060006060836001600160a01b03168360405161218891906148a8565b600060405180830381855afa9150503d80600081146121c3576040519150601f19603f3d011682016040523d82523d6000602084013e6121c8565b606091505b50915091508180156121db575080516020145b80156121f757506121f381600063ffffffff612b7216565b6001145b612202576000612206565b6000195b955050505050611490565b6001600160e01b031981167fc339d10a00000000000000000000000000000000000000000000000000000000141561224d576000199150611490565b6001600160e01b031981167fdc1600f30000000000000000000000000000000000000000000000000000000014156114905760008073__$af40232205bf188fa8dd573e0f47eaeabc$__63750bdb30866040518263ffffffff1660e01b81526004016122b99190614dc4565b60006040518083038186803b1580156122d157600080fd5b505af41580156122e5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261230d9190810190613f42565b50925092505061231b612b7e565b6001600160a01b0316826001600160a01b031614801561234857506005546001600160a01b038281169116145b1561239257600061236d61235a612b96565b60055489906001600160a01b0316612dbb565b905060001981146123865761238181612bae565b61238a565b6000195b94505061243d565b6006546001600160a01b038281169116141561243d5773__$8ab3d6b0b5fe290c724f8d6cfdac7eabfb$__630e70a03387836123cc612ec5565b6040518463ffffffff1660e01b81526004016123ea939291906148f2565b60206040518083038186803b15801561240257600080fd5b505af4158015612416573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061243a9190810190614673565b93505b50505092915050565b600080546040517f8dccde0400000000000000000000000000000000000000000000000000000000815273__$51238773fd6195a8a6f152a329b1854152$__91638dccde0491610ad0916001600160a01b031690889088908890600401614a5f565b6040517fd3d862d100000000000000000000000000000000000000000000000000000000815260609073__$af40232205bf188fa8dd573e0f47eaeabc$__9063d3d862d1906117f69086908690600401614bac565b6040517fd469502800000000000000000000000000000000000000000000000000000000815260009073__$af40232205bf188fa8dd573e0f47eaeabc$__9063d469502890612550908590600401614dc4565b60206040518083038186803b15801561256857600080fd5b505af415801561257c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108819190810190613ef0565b6060806060600085519050806040519080825280602002602001820160405280156125e557816020015b6125d26136a6565b8152602001906001900390816125ca5790505b50935080604051908082528060200260200182016040528015612612578160200160208202803883390190505b5092508060405190808252806020026020018201604052801561263f578160200160208202803883390190505b50915060005b8181146126cf5761267c87828151811061265b57fe5b602002602001015187838151811061266f57fe5b60200260200101516126f1565b875188908590811061268a57fe5b6020026020010187858151811061269d57fe5b602002602001018786815181106126b057fe5b9315156020948502919091019093019290925291905252600101612645565b50509250925092565b6060806126e58484611a4d565b91506106a28484610757565b6126f96136a6565b600080546040517f9d3fa4b900000000000000000000000000000000000000000000000000000000815282916001600160a01b031690639d3fa4b990612743908890600401614f0a565b60606040518083038186803b15801561275b57600080fd5b505afa15801561276f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612793919081019061446b565b85516000546040517fa12dcc6f00000000000000000000000000000000000000000000000000000000815292955090916001600160a01b039091169063a12dcc6f906127e59089908990600401614f48565b60206040518083038186803b1580156127fd57600080fd5b505afa158015612811573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506128359190810190613ed0565b9150600061284287612edd565b90506000612863886101800151896101400151612f0990919063ffffffff16565b1561289857612891826128878a60c001518b60800151612f2e90919063ffffffff16565b8a60a00151612f4a565b9050612905565b60c08801516128b4576128918289608001518a60a00151612f4a565b60006128c5848a61018001516106ab565b905060006128dc848b608001518c60a00151612f4a565b905060006128f3838c60c001518d60a00151612f4a565b90506128ff828261298d565b93505050505b61292961292387604001518a60a00151612f6c90919063ffffffff16565b8261298d565b945061293488612f8b565b61293d57600094505b60038651600681111561294c57fe5b1461295657600094505b5050509250925092565b6001546001600160a01b031681565b6002546001600160a01b031681565b6003546001600160a01b031681565b600081831061299c578161184a565b5090919050565b8351602094850120835193850193909320604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815295860194909452928401929092526060830152608082015260a0902090565b600061184a82612a0985612ff2565b61306d565b60008160040183511015612a3457612a34612a2f60038551856004016130a7565b613116565b5001602001516001600160e01b03191690565b60008160140183511015612a6857612a68612a2f60048551856014016130a7565b5001601401516001600160a01b031690565b60405160009081906060906001600160a01b038616907f70a082310000000000000000000000000000000000000000000000000000000090612ac09087906024016148c4565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166001600160e01b0319909416939093179092529051612b1391906148a8565b600060405180830381855afa9150503d8060008114612b4e576040519150601f19603f3d011682016040523d82523d6000602084013e612b53565b606091505b5091509150818015612b66575080516020145b156107d2576106c88160005b600061184a838361311e565b736b175474e89094c44da98b954eedeac495271d0f90565b7306af07097c9eeb7fd685c692751d5c66db49c21590565b600080612bb9612b96565b6001600160a01b0316634ba2363a6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015612bf357600080fd5b505af1158015612c07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612c2b91908101906141ce565b90506000816001600160a01b03166320aba08b6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015612c6a57600080fd5b505af1158015612c7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612ca29190810190614673565b4211612d2057816001600160a01b031663c92aecc46040518163ffffffff1660e01b8152600401602060405180830381600087803b158015612ce357600080fd5b505af1158015612cf7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612d1b9190810190614673565b612d93565b816001600160a01b0316639f678cca6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015612d5b57600080fd5b505af1158015612d6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612d939190810190614673565b9050610934816b033b2e3c9fd0803ce800000086612f4a565b600061184a82612a0985613148565b60405160009081906060906001600160a01b038716907fdd62ed3e0000000000000000000000000000000000000000000000000000000090612e0390889088906024016148d8565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166001600160e01b0319909416939093179092529051612e5691906148a8565b600060405180830381855afa9150503d8060008114612e91576040519150601f19603f3d011682016040523d82523d6000602084013e612e96565b606091505b5091509150818015612ea9575080516020145b15612ebc57612eb9816000612b72565b92505b50509392505050565b731e0447b19bb6ecfdae1e4ae1694b0c3659614e4e90565b6000806000612eeb84613201565b91509150612ef9828261298d565b925061093483856080015161298d565b60008151835114801561184a5750508051602091820120825192909101919091201490565b60008282018381101561184a5761184a612a2f60008686613414565b600061093483612f60868563ffffffff61343316565b9063ffffffff61346416565b600082821115612f8557612f85612a2f60028585613414565b50900390565b6000612f9b82610140015161348e565b8015612fbc575060c08201511580612fbc5750612fbc82610180015161348e565b8015612fd15750612fd182610160015161348e565b8015610881575060e082015115806108815750610881826101a0015161348e565b608081810151825160208085015160408087015160609788015186519685019690962082517fec69816980a3a3ca4554410e60253953e9ff375ba4536a98adfa15cc7154150881529485019590955290830191909152948101949094526001600160a01b039091169183019190915260a082015260c0902090565b6040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b6060632800659560e01b8484846040516024016130c693929190614e37565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166001600160e01b03199093169290921790915290509392505050565b805160208201fd5b6000816020018351101561313f5761313f612a2f60058551856020016130a7565b50016020015190565b6101408101516101608201516101808301516101a08401516000937ff80322eb8376aafb64eadf8f0d7623f22130fd9491a221e902b713cb984a75349390929091602087101561319457fe5b601f1987018051610140890180516101608b0180516101808d0180516101a08f0180519d89528c5160209d8e012087528b519b8d019b909b2084528951998c01999099208152875197909a019690962088526101e085209390945290529190529252919091529050919050565b600080600483610140015151101561321e57506000905080611525565b610140830151600090613237908263ffffffff612a0e16565b90506001600160e01b031981167fdc1600f30000000000000000000000000000000000000000000000000000000014156133e4576101408401516040517f750bdb3000000000000000000000000000000000000000000000000000000000815260009173__$af40232205bf188fa8dd573e0f47eaeabc$__9163750bdb30916132c291600401614dc4565b60006040518083038186803b1580156132da57600080fd5b505af41580156132ee573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526133169190810190613f42565b506006549093506001600160a01b038085169116141591506133e290505773__$8ab3d6b0b5fe290c724f8d6cfdac7eabfb$__63d12a796086613357612ec5565b6040518363ffffffff1660e01b8152600401613374929190614f1d565b60206040518083038186803b15801561338c57600080fd5b505af41580156133a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506133c49190810190614673565b6133d78660000151876101400151611abb565b935093505050611525565b505b6133f78460000151856101400151610ba1565b61340a8560000151866101400151611abb565b9250925050915091565b606063e946c1bb60e01b8484846040516024016130c693929190614e15565b600082613442575060006106cd565b8282028284828161344f57fe5b041461184a5761184a612a2f60018686613414565b60008161347a5761347a612a2f60038585613414565b600082848161348557fe5b04949350505050565b6000602082518161349b57fe5b066004146134ab57506000610884565b60006134bd838263ffffffff612a0e16565b90506001600160e01b031981167f94cfcdd700000000000000000000000000000000000000000000000000000000146134fa576001915050610884565b6040517fbbb2dcf600000000000000000000000000000000000000000000000000000000815260609073__$af40232205bf188fa8dd573e0f47eaeabc$__9063bbb2dcf69061354d908790600401614dc4565b60006040518083038186803b15801561356557600080fd5b505af4158015613579573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135a191908101906140fe565b80519093509150600090505b8181146136375760006135dd60008584815181106135c757fe5b6020026020010151612a0e90919063ffffffff16565b90506001600160e01b031981167f0257179200000000000000000000000000000000000000000000000000000000141561362e5761361b8483613643565b1561362e57600095505050505050610884565b506001016135ad565b50600195945050505050565b8151600090600183015b818110156107d25761368e85828151811061366457fe5b602002602001015186868151811061367857fe5b6020026020010151612f0990919063ffffffff16565b1561369e576001925050506106cd565b60010161364d565b6040805160608101909152806000815260006020820181905260409091015290565b80356106cd81615016565b80516106cd81615016565b600082601f8301126136ee578081fd5b81356137016136fc82614fa2565b614f7b565b81815291506020808301908481018184028601820187101561372257600080fd5b60005b8481101561148b57813561373881615016565b84529282019290820190600101613725565b600082601f83011261375a578081fd5b81356137686136fc82614fa2565b8181529150602080830190840160005b838110156137a5576137908760208435890101613939565b83526020928301929190910190600101613778565b5050505092915050565b600082601f8301126137bf578081fd5b81516137cd6136fc82614fa2565b8181529150602080830190840160005b838110156137a5576137f58760208451890101613987565b835260209283019291909101906001016137dd565b600082601f83011261381a578081fd5b81356138286136fc82614fa2565b8181529150602080830190840160005b838110156137a55761385087602084358901016139dc565b83526020928301929190910190600101613838565b600082601f830112613875578081fd5b81356138836136fc82614fa2565b8181529150602080830190848101818402860182018710156138a457600080fd5b60005b8481101561148b578135845292820192908201906001016138a7565b600082601f8301126138d3578081fd5b81516138e16136fc82614fa2565b81815291506020808301908481018184028601820187101561390257600080fd5b60005b8481101561148b57815184529282019290820190600101613905565b80516001600160e01b0319811681146106cd57600080fd5b600082601f830112613949578081fd5b81356139576136fc82614fc2565b915080825283602082850101111561396e57600080fd5b8060208401602084013760009082016020015292915050565b600082601f830112613997578081fd5b81516139a56136fc82614fc2565b91508082528360208285010111156139bc57600080fd5b611490816020840160208601614fe6565b8051600581106106cd57600080fd5b60006101c08083850312156139ef578182fd5b6139f881614f7b565b915050613a0583836136c8565b8152613a1483602084016136c8565b6020820152613a2683604084016136c8565b6040820152613a3883606084016136c8565b60608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e08201526101008083013581830152506101208083013581830152506101408083013567ffffffffffffffff80821115613a9a57600080fd5b613aa686838701613939565b83850152610160925082850135915080821115613ac257600080fd5b613ace86838701613939565b83850152610180925082850135915080821115613aea57600080fd5b613af686838701613939565b838501526101a0925082850135915080821115613b1257600080fd5b50613b1f85828601613939565b82840152505092915050565b600060208284031215613b3c578081fd5b813561184a81615016565b60008060408385031215613b59578081fd5b8235613b6481615016565b9150602083013567ffffffffffffffff811115613b7f578182fd5b613b8b8582860161374a565b9150509250929050565b60008060008060808587031215613baa578182fd5b8435613bb581615016565b9350602085013567ffffffffffffffff80821115613bd1578384fd5b613bdd88838901613865565b94506040870135915080821115613bf2578384fd5b613bfe88838901613865565b93506060870135915080821115613c13578283fd5b50613c2087828801613939565b91505092959194509250565b60008060408385031215613c3e578182fd5b8235613c4981615016565b9150602083013567ffffffffffffffff811115613c64578182fd5b613b8b85828601613939565b600080600060608486031215613c84578081fd5b8335613c8f81615016565b9250602084013567ffffffffffffffff811115613caa578182fd5b613cb686828701613939565b925050604084013590509250925092565b60008060408385031215613cd9578182fd5b8235613ce481615016565b946020939093013593505050565b600060208284031215613d03578081fd5b813567ffffffffffffffff811115613d19578182fd5b610934848285016136de565b60006020808385031215613d37578182fd5b825167ffffffffffffffff811115613d4d578283fd5b80840185601f820112613d5e578384fd5b80519150613d6e6136fc83614fa2565b8281528381019082850185850284018601891015613d8a578687fd5b8693505b84841015613db457613da089826139cd565b835260019390930192918501918501613d8e565b50979650505050505050565b600080600060608486031215613dd4578081fd5b833567ffffffffffffffff80821115613deb578283fd5b613df78783880161380a565b94506020860135915080821115613e0c578283fd5b613e18878388016136de565b93506040860135915080821115613e2d578283fd5b50613e3a86828701613865565b9150509250925092565b60008060408385031215613e56578182fd5b823567ffffffffffffffff80821115613e6d578384fd5b613e798683870161380a565b93506020850135915080821115613e8e578283fd5b50613b8b8582860161374a565b60008060408385031215613ead578182fd5b823567ffffffffffffffff80821115613ec4578384fd5b613e7986838701613865565b600060208284031215613ee1578081fd5b8151801515811461184a578182fd5b600060208284031215613f01578081fd5b61184a8383613921565b60008060408385031215613f1d578182fd5b613f278484613921565b91506020830151613f3781615016565b809150509250929050565b60008060008060808587031215613f57578182fd5b8451613f628161502b565b6020860151909450613f7381615016565b6040860151909350613f8481615016565b606086015190925067ffffffffffffffff811115613fa0578182fd5b613c2087828801613987565b600080600080600060a08688031215613fc3578283fd5b613fcd8787613921565b94506020860151613fdd81615016565b604087015190945067ffffffffffffffff80821115613ffa578485fd5b61400689838a016138c3565b9450606088015191508082111561401b578283fd5b61402789838a016138c3565b9350608088015191508082111561403c578283fd5b5061404988828901613987565b9150509295509295909350565b6000806000806080858703121561406b578182fd5b6140758686613921565b9350602085015161408581615016565b604086015190935067ffffffffffffffff8111156140a1578283fd5b6140ad87828801613987565b606096909601519497939650505050565b6000806000606084860312156140d2578081fd5b6140dc8585613921565b925060208401516140ec81615016565b80925050604084015190509250925092565b600080600060608486031215614112578081fd5b835161411d8161502b565b602085015190935067ffffffffffffffff8082111561413a578283fd5b614146878388016138c3565b9350604086015191508082111561415b578283fd5b50613e3a868287016137af565b600060208284031215614179578081fd5b813567ffffffffffffffff81111561418f578182fd5b61093484828501613939565b6000602082840312156141ac578081fd5b815167ffffffffffffffff8111156141c2578182fd5b61093484828501613987565b6000602082840312156141df578081fd5b815161184a81615016565b6000602082840312156141fb578081fd5b81516005811061184a578182fd5b6000806000806080858703121561421e578182fd5b845167ffffffffffffffff811115614234578283fd5b61424087828801613987565b945050602085015167ffffffffffffffff81111561425c578283fd5b86601f828801011261426c578283fd5b8086015161427c6136fc82614fa2565b8181526020808201919089850101865b84811015614415578151868c01016101c0601f19828f030112156142ae578889fd5b6142b96101c0614f7b565b6142c68e602084016136d3565b81526142d58e604084016136d3565b60208201526142e78e606084016136d3565b60408201526142f98e608084016136d3565b606082015260a0820151608082015260c082015160a082015260e082015160c082015261010082015160e082015261012082015161010082015261014082015161012082015261016082015167ffffffffffffffff811115614359578a8bfd5b6143688f602083860101613987565b6101408301525061018082015167ffffffffffffffff811115614389578a8bfd5b6143988f602083860101613987565b610160830152506101a082015167ffffffffffffffff8111156143b9578a8bfd5b6143c88f602083860101613987565b610180830152506101c082015167ffffffffffffffff8111156143e9578a8bfd5b6143f88f602083860101613987565b6101a083015250855250602093840193919091019060010161428c565b505080965050505050604085015167ffffffffffffffff811115614437578283fd5b614443878288016138c3565b925050606085015167ffffffffffffffff81111561445f578182fd5b613c20878288016137af565b60006060828403121561447c578081fd5b6144866060614f7b565b825160078110614494578283fd5b8152602083810151908201526040928301519281019290925250919050565b6000806000606084860312156144c7578081fd5b833567ffffffffffffffff8111156144dd578182fd5b6144e9868287016139dc565b93505060208401356144fa81615016565b929592945050506040919091013590565b6000806040838503121561451d578182fd5b823567ffffffffffffffff80821115614534578384fd5b614540868387016139dc565b93506020850135915080821115614555578283fd5b50613b8b85828601613939565b600080600060608486031215614576578081fd5b833567ffffffffffffffff81111561458c578182fd5b614598868287016139dc565b9350506020840135915060408401356145b081615016565b809150509250925092565b6000806000606084860312156145cf578081fd5b833567ffffffffffffffff808211156145e6578283fd5b81860160a081890312156145f8578384fd5b61460260a0614f7b565b925080358352602081013560208401526040810135604084015261462988606083016136c8565b606084015260808101358281111561463f578485fd5b61464b89828401613939565b60808501525091945050506020840135915061466a85604086016136c8565b90509250925092565b600060208284031215614684578081fd5b5051919050565b6001600160a01b0316815260200190565b1515815260200190565b60006146b28383614784565b505060600190565b6001600160a01b03169052565b60008282518085526020808601955080818302840101818601855b8481101561471057601f198684030189526146fe838351614758565b988401989250908301906001016146e2565b5090979650505050505050565b6000815180845260208401935060208301825b8281101561474e578151865260209586019590910190600101614730565b5093949350505050565b60008151808452614770816020860160208601614fe6565b601f01601f19169290920160200192915050565b80516007811061479057fe5b825260208181015190830152604090810151910152565b60006101c06147b78484516146ba565b60208301516147c960208601826146ba565b5060408301516147dc60408601826146ba565b5060608301516147ef60608601826146ba565b506080830151608085015260a083015160a085015260c083015160c085015260e083015160e085015261010080840151818601525061012080840151818601525061014080840151828287015261484883870182614758565b915050610160915081840151858203838701526148658282614758565b9250505061018080840151858303828701526148818382614758565b9150506101a09150818401518582038387015261489e8282614758565b9695505050505050565b600082516148ba818460208701614fe6565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b0393841681529183166020830152909116604082015260600190565b6000608082016001600160a01b0387168352602060808185015281875161493c8185614c41565b91508193508281028201838a01865b838110156149755786830385526149638383516147a7565b9486019492509085019060010161494b565b50508681036040880152809450885192506149908382614c41565b94505050818701845b828110156149ba576149ac85835161468b565b945090830190600101614999565b5050505082810360608401526149d0818561471d565b979650505050505050565b60006001600160a01b0386168252608060208301526149fd608083018661471d565b8281036040840152614a0f818661471d565b8381036060850152614a218186614758565b98975050505050505050565b60006001600160a01b038516825260606020830152614a4f6060830185614758565b9050826040830152949350505050565b60006001600160a01b03808716835260806020840152614a8260808401876147a7565b94166040830152506060015292915050565b6001600160a01b03929092168252602082015260400190565b602080825282518282018190526000918401906040840190835b81811015614aef57835160058110614adb57fe5b835260209384019390920191600101614ac7565b509095945050505050565b60006060820160608352808651614b118184614c41565b9150602088019250835b81811015614b3f57614b2e8385516146a6565b602094909401939250600101614b1b565b50508381036020850152614b53818761471d565b9150508281036040840152808451614b6b8184614c41565b9150602086019250835b8181101561471057614b8883855161469c565b602094909401939250600101614b75565b60006020825261184a602083018461471d565b600060408252614bbf604083018561471d565b602083820381850152818551808452828401915082838202850101838801865b83811015614c0d57601f19878403018552614bfb838351614758565b94860194925090850190600101614bdf565b50909998505050505050505050565b600060408252614c2f604083018561471d565b828103602084015261190d818561471d565b90815260200190565b6001600160e01b031991909116815260200190565b6001600160e01b03199290921682526001600160a01b0316602082015260400190565b60006001600160e01b0319861682526001600160a01b0380861660208401528085166040840152506080606083015261489e6080830184614758565b60006001600160e01b0319871682526001600160a01b038616602083015260a06040830152614cf060a083018661471d565b8281036060840152614d02818661471d565b8381036080850152614d148186614758565b9998505050505050505050565b60006001600160e01b0319861682526001600160a01b038516602083015260806040830152614d536080830185614758565b905082606083015295945050505050565b6001600160e01b03199390931683526001600160a01b03919091166020830152604082015260600190565b60006001600160e01b03198516825260606020830152614db2606083018561471d565b828103604084015261489e81856146c7565b60006020825261184a6020830184614758565b600060808252614dea6080830187614758565b6001600160a01b03958616602084015293909416604082015260ff9190911660609091015292915050565b6060810160048510614e2357fe5b938152602081019290925260409091015290565b6060810160088510614e2357fe5b6020810160058310614e5357fe5b91905290565b600060808252614e6c6080830187614758565b602083820381850152818751808452828401915082838202850101838a01865b83811015614eba57601f19878403018552614ea88383516147a7565b94860194925090850190600101614e8c565b50508681036040880152614ece818a61471d565b94505050505082810360608401526149d081856146c7565b60a08101614ef48286614784565b8360608301528215156080830152949350505050565b60006020825261184a60208301846147a7565b600060408252614f3060408301856147a7565b90506001600160a01b03831660208301529392505050565b600060408252614f5b60408301856147a7565b828103602084015261190d8185614758565b918252602082015260400190565b60405181810167ffffffffffffffff81118282101715614f9a57600080fd5b604052919050565b600067ffffffffffffffff821115614fb8578081fd5b5060209081020190565b600067ffffffffffffffff821115614fd8578081fd5b50601f01601f191660200190565b60005b83811015615001578181015183820152602001614fe9565b83811115615010576000848401525b50505050565b6001600160a01b038116811461075457600080fd5b6001600160e01b03198116811461075457600080fdfea365627a7a7231582042d7fae961b1460c70c7ec8ff1688f8680c3323368dee844634a86b8a2f15fdb6c6578706572696d656e74616cf564736f6c63430005110040" + "object": "0x608060405234801561001057600080fd5b50600436106102775760003560e01c8063a5cd62ba11610160578063d186037f116100d8578063e4e6e7da1161008c578063ee18599711610071578063ee185997146105d8578063ef3bb097146105e0578063ff84e7cc146105e857610277565b8063e4e6e7da14610595578063e77286eb146105b657610277565b8063d3d862d1116100bd578063d3d862d114610540578063d469502814610553578063e25cabf71461057357610277565b8063d186037f1461051a578063d36379051461052d57610277565b8063bbb2dcf61161012f578063c82037ef11610114578063c82037ef146104dc578063ca49f47c146104e4578063d001c5dc1461050757610277565b8063bbb2dcf6146104b2578063c26cfecd146104d457610277565b8063a5cd62ba14610464578063a6627e9f14610484578063a7530f1214610497578063b43cffe11461049f57610277565b80637982653e116101f35780639baf2705116101c25780639eadc835116101a75780639eadc8351461041a578063a070cac81461043e578063a0901e511461045157610277565b80639baf2705146103fd5780639cd016051461041257610277565b80637982653e1461039657806379c9c426146103b65780637d727512146103c95780638f4ce479146103dc57610277565b80634dfdac201161024a57806363eb39921161022f57806363eb39921461033d5780636f83188e14610350578063750bdb301461037357610277565b80634dfdac20146102fd578063590aa8751461031d57610277565b806304a5618a1461027c5780630d7b7d76146102a75780632322cf76146102c857806346eb65cb146102e8575b600080fd5b61028f61028a3660046142ab565b6105f0565b60405161029e93929190614d24565b60405180910390f35b6102ba6102b5366004613d6f565b610689565b60405161029e929190614f2d565b6102db6102d6366004613d6f565b6106ab565b60405161029e9190614c01565b6102fb6102f63660046142ab565b6106d3565b005b61031061030b366004613c8a565b610757565b60405161029e9190614b59565b61033061032b366004613c6e565b6107da565b60405161029e9190614d84565b61033061034b366004613db3565b610889565b61036361035e3660046142ab565b61093c565b60405161029e9493929190614e19565b6103866103813660046142ab565b6109dc565b60405161029e9493929190614c42565b6103a96103a4366004614481565b610a6e565b60405161029e9190614e05565b6102db6103c4366004614589565b610b20565b6102db6103d7366004613d6f565b610ba1565b6103ef6103ea3660046142ab565b611497565b60405161029e929190614c1f565b61040561152a565b60405161029e9190614888565b610405611539565b61042d6104283660046142ab565b611548565b60405161029e959493929190614c7e565b6102db61044c366004614530565b6115ed565b61031061045f366004613e35565b61166e565b610477610472366004613f03565b6116e7565b60405161029e9190614a71565b610330610492366004613e0a565b6117a1565b610405611851565b6103306104ad366004613cd8565b611860565b6104c56104c03660046142ab565b611916565b60405161029e93929190614d4f565b6102db6119a6565b6104056119ac565b6104f76104f23660046142ab565b6119bb565b60405161029e9493929190614ce1565b610310610515366004613c8a565b611a4d565b6102db610528366004613d6f565b611abb565b6103a961053b366004614481565b612446565b61033061054e366004613fde565b6124a8565b6105666105613660046142ab565b6124fd565b60405161029e9190614c0a565b610586610581366004613f87565b6125a0565b60405161029e93929190614abe565b6105a86105a3366004613c8a565b6126d8565b60405161029e929190614bdc565b6105c96105c43660046144d9565b6126f1565b60405161029e93929190614ea6565b610405612960565b61040561296f565b61040561297e565b600080600073__$808f8f452496495931fd70b932e88106d9$__6304a5618a856040518263ffffffff1660e01b815260040161062c9190614d84565b60606040518083038186803b15801561064457600080fd5b505af4158015610658573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061067c9190810190614201565b9250925092509193909250565b6000806106968484610ba1565b91506106a28484611abb565b90509250929050565b60008060006106ba8585610689565b915091506106c8828261298d565b925050505b92915050565b6040517f46eb65cb00000000000000000000000000000000000000000000000000000000815273__$808f8f452496495931fd70b932e88106d9$__906346eb65cb90610723908490600401614d84565b60006040518083038186803b15801561073b57600080fd5b505af415801561074f573d6000803e3d6000fd5b505050505b50565b606060008251905080604051908082528060200260200182016040528015610789578160200160208202803883390190505b50915060005b8181146107d2576107b3858583815181106107a657fe5b6020026020010151611abb565b8382815181106107bf57fe5b602090810291909101015260010161078f565b505092915050565b6040517f590aa87500000000000000000000000000000000000000000000000000000000815260609073__$808f8f452496495931fd70b932e88106d9$__9063590aa8759061082d908590600401614888565b60006040518083038186803b15801561084557600080fd5b505af4158015610859573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261088191908101906142de565b90505b919050565b6040517f63eb399200000000000000000000000000000000000000000000000000000000815260609073__$808f8f452496495931fd70b932e88106d9$__906363eb3992906108e0908790879087906004016149f1565b60006040518083038186803b1580156108f857600080fd5b505af415801561090c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261093491908101906142de565b949350505050565b60608060608073__$f3880127484c626d9b3a095208b13cbf1b$__636f83188e866040518263ffffffff1660e01b81526004016109799190614d84565b60006040518083038186803b15801561099157600080fd5b505af41580156109a5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109cd919081019061434c565b93509350935093509193509193565b6000806000606073__$808f8f452496495931fd70b932e88106d9$__63750bdb30866040518263ffffffff1660e01b8152600401610a1a9190614d84565b60006040518083038186803b158015610a3257600080fd5b505af4158015610a46573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109cd9190810190614085565b600080546040517f9caa023b00000000000000000000000000000000000000000000000000000000815273__$988eef118a938b5a4e7336ebab0aae599b$__91639caa023b91610ad0916001600160a01b031690889088908890600401614a23565b60206040518083038186803b158015610ae857600080fd5b505af4158015610afc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610934919081019061432d565b600061093484610b9c6040518060400160405280600b81526020017f30782050726f746f636f6c0000000000000000000000000000000000000000008152506040518060400160405280600581526020017f332e302e3000000000000000000000000000000000000000000000000000000081525087876129a3565b6129fa565b600080610bb4838263ffffffff612a0e16565b90506001600160e01b031981167ff47261b0000000000000000000000000000000000000000000000000000000001415610c0f576000610bfb84601063ffffffff612a4716565b9050610c078186612a7a565b925050611490565b6001600160e01b031981167f02571792000000000000000000000000000000000000000000000000000000001415610e285760008073__$808f8f452496495931fd70b932e88106d9$__6304a5618a866040518263ffffffff1660e01b8152600401610c7b9190614d84565b60606040518083038186803b158015610c9357600080fd5b505af4158015610ca7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ccb9190810190614201565b6040519194509250606091507f6352211e0000000000000000000000000000000000000000000000000000000090610d07908490602401614c01565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050905060006060846001600160a01b031683604051610d82919061486c565b600060405180830381855afa9150503d8060008114610dbd576040519150601f19603f3d011682016040523d82523d6000602084013e610dc2565b606091505b50915091506000828015610dd7575081516020145b610de2576000610df3565b610df382600c63ffffffff612a4716565b9050896001600160a01b0316816001600160a01b031614610e15576000610e18565b60015b60ff169750505050505050611490565b6001600160e01b031981167fa7cb5fb70000000000000000000000000000000000000000000000000000000014156110c457600060608073__$808f8f452496495931fd70b932e88106d9$__639eadc835876040518263ffffffff1660e01b8152600401610e969190614d84565b60006040518083038186803b158015610eae57600080fd5b505af4158015610ec2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610eea91908101906140ef565b5081519296509094509250905060005b8181146110ba57828181518110610f0d57fe5b602002602001015160001415610f22576110b2565b83516060907efdd58e00000000000000000000000000000000000000000000000000000000908b90879085908110610f5657fe5b6020026020010151604051602401610f6f929190614a58565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050905060006060876001600160a01b031683604051610fea919061486c565b600060405180830381855afa9150503d8060008114611025576040519150601f19603f3d011682016040523d82523d6000602084013e61102a565b606091505b5091509150600082801561103f575081516020145b61104a57600061105b565b61105b82600063ffffffff612b7216565b9050600087868151811061106b57fe5b6020026020010151828161107b57fe5b049050806110975760009b5050505050505050505050506106cd565b8b8110806110a357508b155b156110ac57809b505b50505050505b600101610efa565b5050505050611490565b6001600160e01b031981167fc339d10a0000000000000000000000000000000000000000000000000000000014156111f7576040516060907fa85e59e4000000000000000000000000000000000000000000000000000000009061113390869060009081908190602401614d97565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166001600160e01b03199094169390931790925260045491519092506000916001600160a01b03169061119a90849061486c565b600060405180830381855afa9150503d80600081146111d5576040519150601f19603f3d011682016040523d82523d6000602084013e6111da565b606091505b50509050806111ea5760006111ee565b6000195b93505050611490565b6001600160e01b031981167fdc1600f30000000000000000000000000000000000000000000000000000000014156113205760008073__$808f8f452496495931fd70b932e88106d9$__63750bdb30866040518263ffffffff1660e01b81526004016112639190614d84565b60006040518083038186803b15801561127b57600080fd5b505af415801561128f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112b79190810190614085565b5092509250506112c5612b7e565b6001600160a01b0316826001600160a01b03161480156112f257506005546001600160a01b038281169116145b1561131957600061130a611304612b96565b88612a7a565b905061131581612bae565b9450505b5050611490565b6001600160e01b031981167f94cfcdd70000000000000000000000000000000000000000000000000000000014156114905760608073__$808f8f452496495931fd70b932e88106d9$__63bbb2dcf6866040518263ffffffff1660e01b815260040161138c9190614d84565b60006040518083038186803b1580156113a457600080fd5b505af41580156113b8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113e09190810190614241565b80519194509250905060005b81811461148b578381815181106113ff57fe5b60200260200101516000141561141457611483565b60006114338985848151811061142657fe5b6020026020010151610ba1565b9050600085838151811061144357fe5b6020026020010151828161145357fe5b0490508061146b5760009750505050505050506106cd565b87811080611477575087155b15611480578097505b50505b6001016113ec565b505050505b5092915050565b60008073__$808f8f452496495931fd70b932e88106d9$__638f4ce479846040518263ffffffff1660e01b81526004016114d19190614d84565b604080518083038186803b1580156114e857600080fd5b505af41580156114fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611520919081019061404e565b915091505b915091565b6004546001600160a01b031681565b6000546001600160a01b031681565b600080606080606073__$808f8f452496495931fd70b932e88106d9$__639eadc835876040518263ffffffff1660e01b81526004016115879190614d84565b60006040518083038186803b15801561159f57600080fd5b505af41580156115b3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115db91908101906140ef565b939a9299509097509550909350915050565b6000610934846116696040518060400160405280600b81526020017f30782050726f746f636f6c0000000000000000000000000000000000000000008152506040518060400160405280600581526020017f332e302e3000000000000000000000000000000000000000000000000000000081525087876129a3565b612dac565b606080825160405190808252806020026020018201604052801561169c578160200160208202803883390190505b50905060005b83518114611490578381815181106116b657fe5b60200260200101516001600160a01b0316318282815181106116d457fe5b60209081029190910101526001016116a2565b6000546040517f02cffc4500000000000000000000000000000000000000000000000000000000815260609173__$988eef118a938b5a4e7336ebab0aae599b$__916302cffc459161174d916001600160a01b03909116908890889088906004016148d9565b60006040518083038186803b15801561176557600080fd5b505af4158015611779573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109349190810190613e68565b6040517fa6627e9f00000000000000000000000000000000000000000000000000000000815260609073__$808f8f452496495931fd70b932e88106d9$__9063a6627e9f906117f69086908690600401614a58565b60006040518083038186803b15801561180e57600080fd5b505af4158015611822573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261184a91908101906142de565b9392505050565b6006546001600160a01b031681565b6040517fb43cffe100000000000000000000000000000000000000000000000000000000815260609073__$808f8f452496495931fd70b932e88106d9$__9063b43cffe1906118b990889088908890889060040161499f565b60006040518083038186803b1580156118d157600080fd5b505af41580156118e5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261190d91908101906142de565b95945050505050565b600060608073__$808f8f452496495931fd70b932e88106d9$__63bbb2dcf6856040518263ffffffff1660e01b81526004016119529190614d84565b60006040518083038186803b15801561196a57600080fd5b505af415801561197e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261067c9190810190614241565b60075481565b6005546001600160a01b031681565b6000806060600073__$808f8f452496495931fd70b932e88106d9$__63ca49f47c866040518263ffffffff1660e01b81526004016119f99190614d84565b60006040518083038186803b158015611a1157600080fd5b505af4158015611a25573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109cd9190810190614199565b606060008251905080604051908082528060200260200182016040528015611a7f578160200160208202803883390190505b50915060005b8181146107d257611a9c8585838151811061142657fe5b838281518110611aa857fe5b6020908102919091010152600101611a85565b600080611ace838263ffffffff612a0e16565b90506001600160e01b031981167f94cfcdd7000000000000000000000000000000000000000000000000000000001415611c395760608073__$808f8f452496495931fd70b932e88106d9$__63bbb2dcf6866040518263ffffffff1660e01b8152600401611b3c9190614d84565b60006040518083038186803b158015611b5457600080fd5b505af4158015611b68573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611b909190810190614241565b80519194509250905060005b818114611c2e57838181518110611baf57fe5b602002602001015160001415611bc457611c26565b6000611bd6898584815181106107a657fe5b90506000858381518110611be657fe5b60200260200101518281611bf657fe5b04905080611c0e5760009750505050505050506106cd565b87811080611c1a575087155b15611c23578097505b50505b600101611b9c565b506106cd9350505050565b6001600160e01b031981167ff47261b0000000000000000000000000000000000000000000000000000000001415611c9a576000611c7e84601063ffffffff612a4716565b600154909150610c0790829087906001600160a01b0316612dbb565b6001600160e01b031981167f02571792000000000000000000000000000000000000000000000000000000001415611fea5760008073__$808f8f452496495931fd70b932e88106d9$__6304a5618a866040518263ffffffff1660e01b8152600401611d069190614d84565b60606040518083038186803b158015611d1e57600080fd5b505af4158015611d32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611d569190810190614201565b600254604051929550909350606092507fe985e9c50000000000000000000000000000000000000000000000000000000091611da2918a916001600160a01b039091169060240161489c565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050905060006060846001600160a01b031683604051611e1d919061486c565b600060405180830381855afa9150503d8060008114611e58576040519150601f19603f3d011682016040523d82523d6000602084013e611e5d565b606091505b5091509150811580611e7157508051602014155b80611e8d5750611e8881600063ffffffff612b7216565b600114155b15611fdb576040516060907f081812fc0000000000000000000000000000000000000000000000000000000090611ec8908790602401614c01565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050856001600160a01b031681604051611f3f919061486c565b600060405180830381855afa9150503d8060008114611f7a576040519150601f19603f3d011682016040523d82523d6000602084013e611f7f565b606091505b509093509150828015611f93575081516020145b8015611fc257506002546001600160a01b0316611fb783600c63ffffffff612a4716565b6001600160a01b0316145b611fcd576000611fd0565b60015b60ff169750506110ba565b60001996505050505050611490565b6001600160e01b031981167fa7cb5fb7000000000000000000000000000000000000000000000000000000001415612211576040517f9eadc83500000000000000000000000000000000000000000000000000000000815260009073__$808f8f452496495931fd70b932e88106d9$__90639eadc8359061206f908790600401614d84565b60006040518083038186803b15801561208757600080fd5b505af415801561209b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526120c391908101906140ef565b5050600354604051929450606093507fe985e9c5000000000000000000000000000000000000000000000000000000009261210d925089916001600160a01b03169060240161489c565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050905060006060836001600160a01b031683604051612188919061486c565b600060405180830381855afa9150503d80600081146121c3576040519150601f19603f3d011682016040523d82523d6000602084013e6121c8565b606091505b50915091508180156121db575080516020145b80156121f757506121f381600063ffffffff612b7216565b6001145b612202576000612206565b6000195b955050505050611490565b6001600160e01b031981167fc339d10a00000000000000000000000000000000000000000000000000000000141561224d576000199150611490565b6001600160e01b031981167fdc1600f30000000000000000000000000000000000000000000000000000000014156114905760008073__$808f8f452496495931fd70b932e88106d9$__63750bdb30866040518263ffffffff1660e01b81526004016122b99190614d84565b60006040518083038186803b1580156122d157600080fd5b505af41580156122e5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261230d9190810190614085565b50925092505061231b612b7e565b6001600160a01b0316826001600160a01b031614801561234857506005546001600160a01b038281169116145b1561239257600061236d61235a612b96565b60055489906001600160a01b0316612dbb565b905060001981146123865761238181612bae565b61238a565b6000195b94505061243d565b6006546001600160a01b038281169116141561243d5773__$1fa048dff19b08eb02dfb6ebf13779c5bf$__630e70a03387836123cc612ec5565b6040518463ffffffff1660e01b81526004016123ea939291906148b6565b60206040518083038186803b15801561240257600080fd5b505af4158015612416573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061243a9190810190614641565b93505b50505092915050565b600080546040517f8dccde0400000000000000000000000000000000000000000000000000000000815273__$988eef118a938b5a4e7336ebab0aae599b$__91638dccde0491610ad0916001600160a01b031690889088908890600401614a23565b6040517fd3d862d100000000000000000000000000000000000000000000000000000000815260609073__$808f8f452496495931fd70b932e88106d9$__9063d3d862d1906117f69086908690600401614b6c565b6040517fd469502800000000000000000000000000000000000000000000000000000000815260009073__$808f8f452496495931fd70b932e88106d9$__9063d469502890612550908590600401614d84565b60206040518083038186803b15801561256857600080fd5b505af415801561257c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108819190810190614033565b6060806060600085519050806040519080825280602002602001820160405280156125e557816020015b6125d26136a6565b8152602001906001900390816125ca5790505b50935080604051908082528060200260200182016040528015612612578160200160208202803883390190505b5092508060405190808252806020026020018201604052801561263f578160200160208202803883390190505b50915060005b8181146126cf5761267c87828151811061265b57fe5b602002602001015187838151811061266f57fe5b60200260200101516126f1565b875188908590811061268a57fe5b6020026020010187858151811061269d57fe5b602002602001018786815181106126b057fe5b9315156020948502919091019093019290925291905252600101612645565b50509250925092565b6060806126e58484611a4d565b91506106a28484610757565b6126f96136a6565b600080546040517f9d3fa4b900000000000000000000000000000000000000000000000000000000815282916001600160a01b031690639d3fa4b990612743908890600401614eca565b60606040518083038186803b15801561275b57600080fd5b505afa15801561276f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506127939190810190614439565b85516000546040517fa12dcc6f00000000000000000000000000000000000000000000000000000000815292955090916001600160a01b039091169063a12dcc6f906127e59089908990600401614f08565b60206040518083038186803b1580156127fd57600080fd5b505afa158015612811573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506128359190810190614013565b9150600061284287612edd565b90506000612863886101800151896101400151612f0990919063ffffffff16565b1561289857612891826128878a60c001518b60800151612f2e90919063ffffffff16565b8a60a00151612f4a565b9050612905565b60c08801516128b4576128918289608001518a60a00151612f4a565b60006128c5848a61018001516106ab565b905060006128dc848b608001518c60a00151612f4a565b905060006128f3838c60c001518d60a00151612f4a565b90506128ff828261298d565b93505050505b61292961292387604001518a60a00151612f6c90919063ffffffff16565b8261298d565b945061293488612f8b565b61293d57600094505b60038651600681111561294c57fe5b1461295657600094505b5050509250925092565b6001546001600160a01b031681565b6002546001600160a01b031681565b6003546001600160a01b031681565b600081831061299c578161184a565b5090919050565b8351602094850120835193850193909320604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815295860194909452928401929092526060830152608082015260a0902090565b600061184a82612a0985612ff2565b61306d565b60008160040183511015612a3457612a34612a2f60038551856004016130a7565b613116565b5001602001516001600160e01b03191690565b60008160140183511015612a6857612a68612a2f60048551856014016130a7565b5001601401516001600160a01b031690565b60405160009081906060906001600160a01b038616907f70a082310000000000000000000000000000000000000000000000000000000090612ac0908790602401614888565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166001600160e01b0319909416939093179092529051612b13919061486c565b600060405180830381855afa9150503d8060008114612b4e576040519150601f19603f3d011682016040523d82523d6000602084013e612b53565b606091505b5091509150818015612b66575080516020145b156107d2576106c88160005b600061184a838361311e565b736b175474e89094c44da98b954eedeac495271d0f90565b7306af07097c9eeb7fd685c692751d5c66db49c21590565b600080612bb9612b96565b6001600160a01b0316634ba2363a6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015612bf357600080fd5b505af1158015612c07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612c2b9190810190614311565b90506000816001600160a01b03166320aba08b6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015612c6a57600080fd5b505af1158015612c7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612ca29190810190614641565b4211612d2057816001600160a01b031663c92aecc46040518163ffffffff1660e01b8152600401602060405180830381600087803b158015612ce357600080fd5b505af1158015612cf7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612d1b9190810190614641565b612d93565b816001600160a01b0316639f678cca6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015612d5b57600080fd5b505af1158015612d6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612d939190810190614641565b9050610934816b033b2e3c9fd0803ce800000086612f4a565b600061184a82612a0985613148565b60405160009081906060906001600160a01b038716907fdd62ed3e0000000000000000000000000000000000000000000000000000000090612e03908890889060240161489c565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166001600160e01b0319909416939093179092529051612e56919061486c565b600060405180830381855afa9150503d8060008114612e91576040519150601f19603f3d011682016040523d82523d6000602084013e612e96565b606091505b5091509150818015612ea9575080516020145b15612ebc57612eb9816000612b72565b92505b50509392505050565b731e0447b19bb6ecfdae1e4ae1694b0c3659614e4e90565b6000806000612eeb84613201565b91509150612ef9828261298d565b925061093483856080015161298d565b60008151835114801561184a5750508051602091820120825192909101919091201490565b60008282018381101561184a5761184a612a2f60008686613414565b600061093483612f60868563ffffffff61343316565b9063ffffffff61346416565b600082821115612f8557612f85612a2f60028585613414565b50900390565b6000612f9b82610140015161348e565b8015612fbc575060c08201511580612fbc5750612fbc82610180015161348e565b8015612fd15750612fd182610160015161348e565b8015610881575060e082015115806108815750610881826101a0015161348e565b608081810151825160208085015160408087015160609788015186519685019690962082517fec69816980a3a3ca4554410e60253953e9ff375ba4536a98adfa15cc7154150881529485019590955290830191909152948101949094526001600160a01b039091169183019190915260a082015260c0902090565b6040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b6060632800659560e01b8484846040516024016130c693929190614df7565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166001600160e01b03199093169290921790915290509392505050565b805160208201fd5b6000816020018351101561313f5761313f612a2f60058551856020016130a7565b50016020015190565b6101408101516101608201516101808301516101a08401516000937ff80322eb8376aafb64eadf8f0d7623f22130fd9491a221e902b713cb984a75349390929091602087101561319457fe5b601f1987018051610140890180516101608b0180516101808d0180516101a08f0180519d89528c5160209d8e012087528b519b8d019b909b2084528951998c01999099208152875197909a019690962088526101e085209390945290529190529252919091529050919050565b600080600483610140015151101561321e57506000905080611525565b610140830151600090613237908263ffffffff612a0e16565b90506001600160e01b031981167fdc1600f30000000000000000000000000000000000000000000000000000000014156133e4576101408401516040517f750bdb3000000000000000000000000000000000000000000000000000000000815260009173__$808f8f452496495931fd70b932e88106d9$__9163750bdb30916132c291600401614d84565b60006040518083038186803b1580156132da57600080fd5b505af41580156132ee573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526133169190810190614085565b506006549093506001600160a01b038085169116141591506133e290505773__$1fa048dff19b08eb02dfb6ebf13779c5bf$__63d12a796086613357612ec5565b6040518363ffffffff1660e01b8152600401613374929190614edd565b60206040518083038186803b15801561338c57600080fd5b505af41580156133a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506133c49190810190614641565b6133d78660000151876101400151611abb565b935093505050611525565b505b6133f78460000151856101400151610ba1565b61340a8560000151866101400151611abb565b9250925050915091565b606063e946c1bb60e01b8484846040516024016130c693929190614dd5565b600082613442575060006106cd565b8282028284828161344f57fe5b041461184a5761184a612a2f60018686613414565b60008161347a5761347a612a2f60038585613414565b600082848161348557fe5b04949350505050565b6000602082518161349b57fe5b066004146134ab57506000610884565b60006134bd838263ffffffff612a0e16565b90506001600160e01b031981167f94cfcdd700000000000000000000000000000000000000000000000000000000146134fa576001915050610884565b6040517fbbb2dcf600000000000000000000000000000000000000000000000000000000815260609073__$808f8f452496495931fd70b932e88106d9$__9063bbb2dcf69061354d908790600401614d84565b60006040518083038186803b15801561356557600080fd5b505af4158015613579573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135a19190810190614241565b80519093509150600090505b8181146136375760006135dd60008584815181106135c757fe5b6020026020010151612a0e90919063ffffffff16565b90506001600160e01b031981167f0257179200000000000000000000000000000000000000000000000000000000141561362e5761361b8483613643565b1561362e57600095505050505050610884565b506001016135ad565b50600195945050505050565b8151600090600183015b818110156107d25761368e85828151811061366457fe5b602002602001015186868151811061367857fe5b6020026020010151612f0990919063ffffffff16565b1561369e576001925050506106cd565b60010161364d565b6040805160608101909152806000815260006020820181905260409091015290565b80356106cd81614fd6565b80516106cd81614fd6565b600082601f8301126136ee578081fd5b81356137016136fc82614f62565b614f3b565b81815291506020808301908481018184028601820187101561372257600080fd5b60005b8481101561148b57813561373881614fd6565b84529282019290820190600101613725565b600082601f83011261375a578081fd5b81356137686136fc82614f62565b8181529150602080830190840160005b838110156137a5576137908760208435890101613939565b83526020928301929190910190600101613778565b5050505092915050565b600082601f8301126137bf578081fd5b81516137cd6136fc82614f62565b8181529150602080830190840160005b838110156137a5576137f58760208451890101613987565b835260209283019291909101906001016137dd565b600082601f83011261381a578081fd5b81356138286136fc82614f62565b8181529150602080830190840160005b838110156137a55761385087602084358901016139dc565b83526020928301929190910190600101613838565b600082601f830112613875578081fd5b81356138836136fc82614f62565b8181529150602080830190848101818402860182018710156138a457600080fd5b60005b8481101561148b578135845292820192908201906001016138a7565b600082601f8301126138d3578081fd5b81516138e16136fc82614f62565b81815291506020808301908481018184028601820187101561390257600080fd5b60005b8481101561148b57815184529282019290820190600101613905565b80516001600160e01b0319811681146106cd57600080fd5b600082601f830112613949578081fd5b81356139576136fc82614f82565b915080825283602082850101111561396e57600080fd5b8060208401602084013760009082016020015292915050565b600082601f830112613997578081fd5b81516139a56136fc82614f82565b91508082528360208285010111156139bc57600080fd5b611490816020840160208601614fa6565b8051600581106106cd57600080fd5b60006101c08083850312156139ef578182fd5b6139f881614f3b565b915050613a0583836136c8565b8152613a1483602084016136c8565b6020820152613a2683604084016136c8565b6040820152613a3883606084016136c8565b60608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e08201526101008083013581830152506101208083013581830152506101408083013567ffffffffffffffff80821115613a9a57600080fd5b613aa686838701613939565b83850152610160925082850135915080821115613ac257600080fd5b613ace86838701613939565b83850152610180925082850135915080821115613aea57600080fd5b613af686838701613939565b838501526101a0925082850135915080821115613b1257600080fd5b50613b1f85828601613939565b82840152505092915050565b60006101c0808385031215613b3e578182fd5b613b4781614f3b565b915050613b5483836136d3565b8152613b6383602084016136d3565b6020820152613b7583604084016136d3565b6040820152613b8783606084016136d3565b60608201526080820151608082015260a082015160a082015260c082015160c082015260e082015160e08201526101008083015181830152506101208083015181830152506101408083015167ffffffffffffffff80821115613be957600080fd5b613bf586838701613987565b83850152610160925082850151915080821115613c1157600080fd5b613c1d86838701613987565b83850152610180925082850151915080821115613c3957600080fd5b613c4586838701613987565b838501526101a0925082850151915080821115613c6157600080fd5b50613b1f85828601613987565b600060208284031215613c7f578081fd5b813561184a81614fd6565b60008060408385031215613c9c578081fd5b8235613ca781614fd6565b9150602083013567ffffffffffffffff811115613cc2578182fd5b613cce8582860161374a565b9150509250929050565b60008060008060808587031215613ced578182fd5b8435613cf881614fd6565b9350602085013567ffffffffffffffff80821115613d14578384fd5b613d2088838901613865565b94506040870135915080821115613d35578384fd5b613d4188838901613865565b93506060870135915080821115613d56578283fd5b50613d6387828801613939565b91505092959194509250565b60008060408385031215613d81578182fd5b8235613d8c81614fd6565b9150602083013567ffffffffffffffff811115613da7578182fd5b613cce85828601613939565b600080600060608486031215613dc7578081fd5b8335613dd281614fd6565b9250602084013567ffffffffffffffff811115613ded578182fd5b613df986828701613939565b925050604084013590509250925092565b60008060408385031215613e1c578182fd5b8235613e2781614fd6565b946020939093013593505050565b600060208284031215613e46578081fd5b813567ffffffffffffffff811115613e5c578182fd5b610934848285016136de565b60006020808385031215613e7a578182fd5b825167ffffffffffffffff811115613e90578283fd5b80840185601f820112613ea1578384fd5b80519150613eb16136fc83614f62565b8281528381019082850185850284018601891015613ecd578687fd5b8693505b84841015613ef757613ee389826139cd565b835260019390930192918501918501613ed1565b50979650505050505050565b600080600060608486031215613f17578081fd5b833567ffffffffffffffff80821115613f2e578283fd5b613f3a8783880161380a565b94506020860135915080821115613f4f578283fd5b613f5b878388016136de565b93506040860135915080821115613f70578283fd5b50613f7d86828701613865565b9150509250925092565b60008060408385031215613f99578182fd5b823567ffffffffffffffff80821115613fb0578384fd5b613fbc8683870161380a565b93506020850135915080821115613fd1578283fd5b50613cce8582860161374a565b60008060408385031215613ff0578182fd5b823567ffffffffffffffff80821115614007578384fd5b613fbc86838701613865565b600060208284031215614024578081fd5b8151801515811461184a578182fd5b600060208284031215614044578081fd5b61184a8383613921565b60008060408385031215614060578182fd5b61406a8484613921565b9150602083015161407a81614fd6565b809150509250929050565b6000806000806080858703121561409a578182fd5b84516140a581614feb565b60208601519094506140b681614fd6565b60408601519093506140c781614fd6565b606086015190925067ffffffffffffffff8111156140e3578182fd5b613d6387828801613987565b600080600080600060a08688031215614106578283fd5b6141108787613921565b9450602086015161412081614fd6565b604087015190945067ffffffffffffffff8082111561413d578485fd5b61414989838a016138c3565b9450606088015191508082111561415e578283fd5b61416a89838a016138c3565b9350608088015191508082111561417f578283fd5b5061418c88828901613987565b9150509295509295909350565b600080600080608085870312156141ae578182fd5b6141b88686613921565b935060208501516141c881614fd6565b604086015190935067ffffffffffffffff8111156141e4578283fd5b6141f087828801613987565b606096909601519497939650505050565b600080600060608486031215614215578081fd5b61421f8585613921565b9250602084015161422f81614fd6565b80925050604084015190509250925092565b600080600060608486031215614255578081fd5b835161426081614feb565b602085015190935067ffffffffffffffff8082111561427d578283fd5b614289878388016138c3565b9350604086015191508082111561429e578283fd5b50613f7d868287016137af565b6000602082840312156142bc578081fd5b813567ffffffffffffffff8111156142d2578182fd5b61093484828501613939565b6000602082840312156142ef578081fd5b815167ffffffffffffffff811115614305578182fd5b61093484828501613987565b600060208284031215614322578081fd5b815161184a81614fd6565b60006020828403121561433e578081fd5b81516005811061184a578182fd5b60008060008060808587031215614361578182fd5b845167ffffffffffffffff80821115614378578384fd5b61438488838901613987565b955060209150818701518181111561439a578485fd5b80880189601f8201126143ab578586fd5b805191506143bb6136fc83614f62565b82815284810190828601885b858110156143f0576143de8e898451880101613b2b565b845292870192908701906001016143c7565b505060408b015190985094505050508082111561440b578384fd5b614417888389016138c3565b9350606087015191508082111561442c578283fd5b50613d63878288016137af565b60006060828403121561444a578081fd5b6144546060614f3b565b825160078110614462578283fd5b8152602083810151908201526040928301519281019290925250919050565b600080600060608486031215614495578081fd5b833567ffffffffffffffff8111156144ab578182fd5b6144b7868287016139dc565b93505060208401356144c881614fd6565b929592945050506040919091013590565b600080604083850312156144eb578182fd5b823567ffffffffffffffff80821115614502578384fd5b61450e868387016139dc565b93506020850135915080821115614523578283fd5b50613cce85828601613939565b600080600060608486031215614544578081fd5b833567ffffffffffffffff81111561455a578182fd5b614566868287016139dc565b93505060208401359150604084013561457e81614fd6565b809150509250925092565b60008060006060848603121561459d578081fd5b833567ffffffffffffffff808211156145b4578283fd5b81860160a081890312156145c6578384fd5b6145d060a0614f3b565b92508035835260208101356020840152604081013560408401526145f788606083016136c8565b606084015260808101358281111561460d578485fd5b61461989828401613939565b60808501525091945050506020840135915061463885604086016136c8565b90509250925092565b600060208284031215614652578081fd5b5051919050565b6001600160a01b0316815260200190565b60006146768383614748565b505060600190565b6001600160a01b03169052565b60008282518085526020808601955080818302840101818601855b848110156146d457601f198684030189526146c283835161471c565b988401989250908301906001016146a6565b5090979650505050505050565b6000815180845260208401935060208301825b828110156147125781518652602095860195909101906001016146f4565b5093949350505050565b60008151808452614734816020860160208601614fa6565b601f01601f19169290920160200192915050565b80516007811061475457fe5b825260208181015190830152604090810151910152565b60006101c061477b84845161467e565b602083015161478d602086018261467e565b5060408301516147a0604086018261467e565b5060608301516147b3606086018261467e565b506080830151608085015260a083015160a085015260c083015160c085015260e083015160e085015261010080840151818601525061012080840151818601525061014080840151828287015261480c8387018261471c565b91505061016091508184015185820383870152614829828261471c565b925050506101808084015185830382870152614845838261471c565b9150506101a091508184015185820383870152614862828261471c565b9695505050505050565b6000825161487e818460208701614fa6565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b0393841681529183166020830152909116604082015260600190565b6000608082016001600160a01b038716835260206080818501528187516149008185614c01565b91508193508281028201838a01865b8381101561493957868303855261492783835161476b565b9486019492509085019060010161490f565b50508681036040880152809450885192506149548382614c01565b94505050818701845b8281101561497e57614970858351614659565b94509083019060010161495d565b50505050828103606084015261499481856146e1565b979650505050505050565b60006001600160a01b0386168252608060208301526149c160808301866146e1565b82810360408401526149d381866146e1565b83810360608501526149e5818661471c565b98975050505050505050565b60006001600160a01b038516825260606020830152614a13606083018561471c565b9050826040830152949350505050565b60006001600160a01b03808716835260806020840152614a46608084018761476b565b94166040830152506060015292915050565b6001600160a01b03929092168252602082015260400190565b602080825282518282018190526000918401906040840190835b81811015614ab357835160058110614a9f57fe5b835260209384019390920191600101614a8b565b509095945050505050565b60006060820160608352808651614ad58184614c01565b915060209250828801845b82811015614b0157614af384835161466a565b935090840190600101614ae0565b50505083810382850152614b1581876146e1565b84810360408601528551808252908301915082860190845b81811015614b4b578251151584529284019291840191600101614b2d565b509198975050505050505050565b60006020825261184a60208301846146e1565b600060408252614b7f60408301856146e1565b602083820381850152818551808452828401915082838202850101838801865b83811015614bcd57601f19878403018552614bbb83835161471c565b94860194925090850190600101614b9f565b50909998505050505050505050565b600060408252614bef60408301856146e1565b828103602084015261190d81856146e1565b90815260200190565b6001600160e01b031991909116815260200190565b6001600160e01b03199290921682526001600160a01b0316602082015260400190565b60006001600160e01b0319861682526001600160a01b03808616602084015280851660408401525060806060830152614862608083018461471c565b60006001600160e01b0319871682526001600160a01b038616602083015260a06040830152614cb060a08301866146e1565b8281036060840152614cc281866146e1565b8381036080850152614cd4818661471c565b9998505050505050505050565b60006001600160e01b0319861682526001600160a01b038516602083015260806040830152614d13608083018561471c565b905082606083015295945050505050565b6001600160e01b03199390931683526001600160a01b03919091166020830152604082015260600190565b60006001600160e01b03198516825260606020830152614d7260608301856146e1565b8281036040840152614862818561468b565b60006020825261184a602083018461471c565b600060808252614daa608083018761471c565b6001600160a01b03958616602084015293909416604082015260ff9190911660609091015292915050565b6060810160048510614de357fe5b938152602081019290925260409091015290565b6060810160088510614de357fe5b6020810160058310614e1357fe5b91905290565b600060808252614e2c608083018761471c565b602083820381850152818751808452828401915082838202850101838a01865b83811015614e7a57601f19878403018552614e6883835161476b565b94860194925090850190600101614e4c565b50508681036040880152614e8e818a6146e1565b9450505050508281036060840152614994818561468b565b60a08101614eb48286614748565b8360608301528215156080830152949350505050565b60006020825261184a602083018461476b565b600060408252614ef0604083018561476b565b90506001600160a01b03831660208301529392505050565b600060408252614f1b604083018561476b565b828103602084015261190d818561471c565b918252602082015260400190565b60405181810167ffffffffffffffff81118282101715614f5a57600080fd5b604052919050565b600067ffffffffffffffff821115614f78578081fd5b5060209081020190565b600067ffffffffffffffff821115614f98578081fd5b50601f01601f191660200190565b60005b83811015614fc1578181015183820152602001614fa9565b83811115614fd0576000848401525b50505050565b6001600160a01b038116811461075457600080fd5b6001600160e01b03198116811461075457600080fdfea365627a7a7231582035e812e328807b8502bbdb23eb0d94c3493497753f571da44447373be9944d316c6578706572696d656e74616cf564736f6c63430005110040" } } }, diff --git a/packages/contract-artifacts/artifacts/DummyERC20Token.json b/packages/contract-artifacts/artifacts/DummyERC20Token.json index cacb8011be..754ee163c1 100644 --- a/packages/contract-artifacts/artifacts/DummyERC20Token.json +++ b/packages/contract-artifacts/artifacts/DummyERC20Token.json @@ -245,16 +245,16 @@ }, "evm": { "bytecode": { - "object": "0x60806040523480156200001157600080fd5b506040516200119538038062001195833981810160405260808110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b5060409081526020828101519290910151600080546001600160a01b0319163317905586519294509250620001d39160049187019062000209565b508251620001e990600590602086019062000209565b506006919091553360009081526001602052604090205550620002ae9050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200024c57805160ff19168380011785556200027c565b828001600101855582156200027c579182015b828111156200027c5782518255916020019190600101906200025f565b506200028a9291506200028e565b5090565b620002ab91905b808211156200028a576000815560010162000295565b90565b610ed780620002be6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806395d89b411161008c578063dd62ed3e11610066578063dd62ed3e146102e2578063e30443bc1461031d578063f2fde38b14610356578063fa9b701814610389576100ea565b806395d89b4114610282578063a0712d681461028a578063a9059cbb146102a9576100ea565b806323b872dd116100c857806323b872dd146101d3578063313ce5671461021657806370a082311461021e5780638da5cb5b14610251576100ea565b806306fdde03146100ef578063095ea7b31461016c57806318160ddd146101b9575b600080fd5b6100f7610391565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610131578181015183820152602001610119565b50505050905090810190601f16801561015e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101a56004803603604081101561018257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561043d565b604080519115158252519081900360200190f35b6101c16104b0565b60408051918252519081900360200190f35b6101a5600480360360608110156101e957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356104b6565b6101c1610772565b6101c16004803603602081101561023457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610778565b6102596107a0565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100f76107bc565b6102a7600480360360208110156102a057600080fd5b5035610835565b005b6101a5600480360360408110156102bf57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356108bb565b6101c1600480360360408110156102f857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610a4a565b6102a76004803603604081101561033357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610a82565b6102a76004803603602081101561036c57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610b32565b6101c1610bda565b6004805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156104355780601f1061040a57610100808354040283529160200191610435565b820191906000526020600020905b81548152906001019060200180831161041857829003601f168201915b505050505081565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b60035490565b73ffffffffffffffffffffffffffffffffffffffff83166000818152600260209081526040808320338452825280832054938352600190915281205490919083111561056357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f45524332305f494e53554646494349454e545f42414c414e4345000000000000604482015290519081900360640190fd5b828110156105d257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f45524332305f494e53554646494349454e545f414c4c4f57414e434500000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8416600090815260016020526040902054838101101561066857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f55494e543235365f4f564552464c4f5700000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020526040808220805487019055918716815220805484900390557fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156107025773ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020805484900390555b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3506001949350505050565b60065481565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205490565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b6005805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156104355780601f1061040a57610100808354040283529160200191610435565b69021e19e0c9bab24000008111156108ae57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f56414c55455f544f4f5f4c415247450000000000000000000000000000000000604482015290519081900360640190fd5b6108b83382610be8565b50565b3360009081526001602052604081205482111561093957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f45524332305f494e53554646494349454e545f42414c414e4345000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604090205482810110156109cf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f55494e543235365f4f564552464c4f5700000000000000000000000000000000604482015290519081900360640190fd5b3360008181526001602090815260408083208054879003905573ffffffffffffffffffffffffffffffffffffffff871680845292819020805487019055805186815290519293927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a350600192915050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205490565b610a8a610cad565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205480821015610ae257610ada610acb828463ffffffff610cf616565b6003549063ffffffff610cf616565b600355610b08565b610b04610af5838363ffffffff610cf616565b6003549063ffffffff610d1516565b6003555b5073ffffffffffffffffffffffffffffffffffffffff909116600090815260016020526040902055565b610b3a610cad565b73ffffffffffffffffffffffffffffffffffffffff8116610b6a57610b65610b60610d38565b610d6f565b6108b8565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b69021e19e0c9bab240000081565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902054610c1f90829063ffffffff610d1516565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040902055600354610c58908263ffffffff610d1516565b60035560408051828152905173ffffffffffffffffffffffffffffffffffffffff8416916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610cf457600054610cf490610b6090339073ffffffffffffffffffffffffffffffffffffffff16610d77565b565b600082821115610d0f57610d0f610b6060028585610e03565b50900390565b600082820183811015610d3157610d31610b6060008686610e03565b9392505050565b60408051808201909152600481527fe69edc3e00000000000000000000000000000000000000000000000000000000602082015290565b805160208201fd5b6040805173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044808301919091528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1de45ad10000000000000000000000000000000000000000000000000000000017905292915050565b606063e946c1bb60e01b84848460405160240180846003811115610e2357fe5b60ff1681526020018381526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050939250505056fea265627a7a723158206ef0f3c96df89da55ebf944709666a3bef710cfb7a0cbbdee62d42f3a26f80f064736f6c63430005110032" + "object": "0x60806040523480156200001157600080fd5b506040516200119538038062001195833981810160405260808110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b5060409081526020828101519290910151600080546001600160a01b0319163317905586519294509250620001d39160049187019062000209565b508251620001e990600590602086019062000209565b506006919091553360009081526001602052604090205550620002ae9050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200024c57805160ff19168380011785556200027c565b828001600101855582156200027c579182015b828111156200027c5782518255916020019190600101906200025f565b506200028a9291506200028e565b5090565b620002ab91905b808211156200028a576000815560010162000295565b90565b610ed780620002be6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806395d89b411161008c578063dd62ed3e11610066578063dd62ed3e146102e2578063e30443bc1461031d578063f2fde38b14610356578063fa9b701814610389576100ea565b806395d89b4114610282578063a0712d681461028a578063a9059cbb146102a9576100ea565b806323b872dd116100c857806323b872dd146101d3578063313ce5671461021657806370a082311461021e5780638da5cb5b14610251576100ea565b806306fdde03146100ef578063095ea7b31461016c57806318160ddd146101b9575b600080fd5b6100f7610391565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610131578181015183820152602001610119565b50505050905090810190601f16801561015e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101a56004803603604081101561018257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561043d565b604080519115158252519081900360200190f35b6101c16104b0565b60408051918252519081900360200190f35b6101a5600480360360608110156101e957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356104b6565b6101c1610772565b6101c16004803603602081101561023457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610778565b6102596107a0565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100f76107bc565b6102a7600480360360208110156102a057600080fd5b5035610835565b005b6101a5600480360360408110156102bf57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356108bb565b6101c1600480360360408110156102f857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610a4a565b6102a76004803603604081101561033357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610a82565b6102a76004803603602081101561036c57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610b32565b6101c1610bda565b6004805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156104355780601f1061040a57610100808354040283529160200191610435565b820191906000526020600020905b81548152906001019060200180831161041857829003601f168201915b505050505081565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b60035490565b73ffffffffffffffffffffffffffffffffffffffff83166000818152600260209081526040808320338452825280832054938352600190915281205490919083111561056357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f45524332305f494e53554646494349454e545f42414c414e4345000000000000604482015290519081900360640190fd5b828110156105d257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f45524332305f494e53554646494349454e545f414c4c4f57414e434500000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8416600090815260016020526040902054838101101561066857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f55494e543235365f4f564552464c4f5700000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020526040808220805487019055918716815220805484900390557fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156107025773ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020805484900390555b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3506001949350505050565b60065481565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205490565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b6005805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156104355780601f1061040a57610100808354040283529160200191610435565b69021e19e0c9bab24000008111156108ae57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f56414c55455f544f4f5f4c415247450000000000000000000000000000000000604482015290519081900360640190fd5b6108b83382610be8565b50565b3360009081526001602052604081205482111561093957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f45524332305f494e53554646494349454e545f42414c414e4345000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604090205482810110156109cf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f55494e543235365f4f564552464c4f5700000000000000000000000000000000604482015290519081900360640190fd5b3360008181526001602090815260408083208054879003905573ffffffffffffffffffffffffffffffffffffffff871680845292819020805487019055805186815290519293927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a350600192915050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205490565b610a8a610cad565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205480821015610ae257610ada610acb828463ffffffff610cf616565b6003549063ffffffff610cf616565b600355610b08565b610b04610af5838363ffffffff610cf616565b6003549063ffffffff610d1516565b6003555b5073ffffffffffffffffffffffffffffffffffffffff909116600090815260016020526040902055565b610b3a610cad565b73ffffffffffffffffffffffffffffffffffffffff8116610b6a57610b65610b60610d38565b610d6f565b6108b8565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b69021e19e0c9bab240000081565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902054610c1f90829063ffffffff610d1516565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040902055600354610c58908263ffffffff610d1516565b60035560408051828152905173ffffffffffffffffffffffffffffffffffffffff8416916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610cf457600054610cf490610b6090339073ffffffffffffffffffffffffffffffffffffffff16610d77565b565b600082821115610d0f57610d0f610b6060028585610e03565b50900390565b600082820183811015610d3157610d31610b6060008686610e03565b9392505050565b60408051808201909152600481527fe69edc3e00000000000000000000000000000000000000000000000000000000602082015290565b805160208201fd5b6040805173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044808301919091528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1de45ad10000000000000000000000000000000000000000000000000000000017905292915050565b606063e946c1bb60e01b84848460405160240180846003811115610e2357fe5b60ff1681526020018381526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050939250505056fea265627a7a72315820a17bdf00a0dac8062d89dc2df04070d8275f9ee36b1e2ddfe360cf90deb0525f64736f6c63430005110032" }, "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c806395d89b411161008c578063dd62ed3e11610066578063dd62ed3e146102e2578063e30443bc1461031d578063f2fde38b14610356578063fa9b701814610389576100ea565b806395d89b4114610282578063a0712d681461028a578063a9059cbb146102a9576100ea565b806323b872dd116100c857806323b872dd146101d3578063313ce5671461021657806370a082311461021e5780638da5cb5b14610251576100ea565b806306fdde03146100ef578063095ea7b31461016c57806318160ddd146101b9575b600080fd5b6100f7610391565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610131578181015183820152602001610119565b50505050905090810190601f16801561015e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101a56004803603604081101561018257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561043d565b604080519115158252519081900360200190f35b6101c16104b0565b60408051918252519081900360200190f35b6101a5600480360360608110156101e957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356104b6565b6101c1610772565b6101c16004803603602081101561023457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610778565b6102596107a0565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100f76107bc565b6102a7600480360360208110156102a057600080fd5b5035610835565b005b6101a5600480360360408110156102bf57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356108bb565b6101c1600480360360408110156102f857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610a4a565b6102a76004803603604081101561033357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610a82565b6102a76004803603602081101561036c57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610b32565b6101c1610bda565b6004805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156104355780601f1061040a57610100808354040283529160200191610435565b820191906000526020600020905b81548152906001019060200180831161041857829003601f168201915b505050505081565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b60035490565b73ffffffffffffffffffffffffffffffffffffffff83166000818152600260209081526040808320338452825280832054938352600190915281205490919083111561056357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f45524332305f494e53554646494349454e545f42414c414e4345000000000000604482015290519081900360640190fd5b828110156105d257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f45524332305f494e53554646494349454e545f414c4c4f57414e434500000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8416600090815260016020526040902054838101101561066857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f55494e543235365f4f564552464c4f5700000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020526040808220805487019055918716815220805484900390557fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156107025773ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020805484900390555b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3506001949350505050565b60065481565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205490565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b6005805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156104355780601f1061040a57610100808354040283529160200191610435565b69021e19e0c9bab24000008111156108ae57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f56414c55455f544f4f5f4c415247450000000000000000000000000000000000604482015290519081900360640190fd5b6108b83382610be8565b50565b3360009081526001602052604081205482111561093957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f45524332305f494e53554646494349454e545f42414c414e4345000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604090205482810110156109cf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f55494e543235365f4f564552464c4f5700000000000000000000000000000000604482015290519081900360640190fd5b3360008181526001602090815260408083208054879003905573ffffffffffffffffffffffffffffffffffffffff871680845292819020805487019055805186815290519293927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a350600192915050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205490565b610a8a610cad565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205480821015610ae257610ada610acb828463ffffffff610cf616565b6003549063ffffffff610cf616565b600355610b08565b610b04610af5838363ffffffff610cf616565b6003549063ffffffff610d1516565b6003555b5073ffffffffffffffffffffffffffffffffffffffff909116600090815260016020526040902055565b610b3a610cad565b73ffffffffffffffffffffffffffffffffffffffff8116610b6a57610b65610b60610d38565b610d6f565b6108b8565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b69021e19e0c9bab240000081565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902054610c1f90829063ffffffff610d1516565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040902055600354610c58908263ffffffff610d1516565b60035560408051828152905173ffffffffffffffffffffffffffffffffffffffff8416916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610cf457600054610cf490610b6090339073ffffffffffffffffffffffffffffffffffffffff16610d77565b565b600082821115610d0f57610d0f610b6060028585610e03565b50900390565b600082820183811015610d3157610d31610b6060008686610e03565b9392505050565b60408051808201909152600481527fe69edc3e00000000000000000000000000000000000000000000000000000000602082015290565b805160208201fd5b6040805173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044808301919091528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1de45ad10000000000000000000000000000000000000000000000000000000017905292915050565b606063e946c1bb60e01b84848460405160240180846003811115610e2357fe5b60ff1681526020018381526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050939250505056fea265627a7a723158206ef0f3c96df89da55ebf944709666a3bef710cfb7a0cbbdee62d42f3a26f80f064736f6c63430005110032" + "object": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c806395d89b411161008c578063dd62ed3e11610066578063dd62ed3e146102e2578063e30443bc1461031d578063f2fde38b14610356578063fa9b701814610389576100ea565b806395d89b4114610282578063a0712d681461028a578063a9059cbb146102a9576100ea565b806323b872dd116100c857806323b872dd146101d3578063313ce5671461021657806370a082311461021e5780638da5cb5b14610251576100ea565b806306fdde03146100ef578063095ea7b31461016c57806318160ddd146101b9575b600080fd5b6100f7610391565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610131578181015183820152602001610119565b50505050905090810190601f16801561015e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101a56004803603604081101561018257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561043d565b604080519115158252519081900360200190f35b6101c16104b0565b60408051918252519081900360200190f35b6101a5600480360360608110156101e957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356104b6565b6101c1610772565b6101c16004803603602081101561023457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610778565b6102596107a0565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100f76107bc565b6102a7600480360360208110156102a057600080fd5b5035610835565b005b6101a5600480360360408110156102bf57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356108bb565b6101c1600480360360408110156102f857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610a4a565b6102a76004803603604081101561033357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610a82565b6102a76004803603602081101561036c57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610b32565b6101c1610bda565b6004805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156104355780601f1061040a57610100808354040283529160200191610435565b820191906000526020600020905b81548152906001019060200180831161041857829003601f168201915b505050505081565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b60035490565b73ffffffffffffffffffffffffffffffffffffffff83166000818152600260209081526040808320338452825280832054938352600190915281205490919083111561056357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f45524332305f494e53554646494349454e545f42414c414e4345000000000000604482015290519081900360640190fd5b828110156105d257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f45524332305f494e53554646494349454e545f414c4c4f57414e434500000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8416600090815260016020526040902054838101101561066857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f55494e543235365f4f564552464c4f5700000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020526040808220805487019055918716815220805484900390557fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156107025773ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020805484900390555b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3506001949350505050565b60065481565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205490565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b6005805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156104355780601f1061040a57610100808354040283529160200191610435565b69021e19e0c9bab24000008111156108ae57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f56414c55455f544f4f5f4c415247450000000000000000000000000000000000604482015290519081900360640190fd5b6108b83382610be8565b50565b3360009081526001602052604081205482111561093957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f45524332305f494e53554646494349454e545f42414c414e4345000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604090205482810110156109cf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f55494e543235365f4f564552464c4f5700000000000000000000000000000000604482015290519081900360640190fd5b3360008181526001602090815260408083208054879003905573ffffffffffffffffffffffffffffffffffffffff871680845292819020805487019055805186815290519293927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a350600192915050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205490565b610a8a610cad565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205480821015610ae257610ada610acb828463ffffffff610cf616565b6003549063ffffffff610cf616565b600355610b08565b610b04610af5838363ffffffff610cf616565b6003549063ffffffff610d1516565b6003555b5073ffffffffffffffffffffffffffffffffffffffff909116600090815260016020526040902055565b610b3a610cad565b73ffffffffffffffffffffffffffffffffffffffff8116610b6a57610b65610b60610d38565b610d6f565b6108b8565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b69021e19e0c9bab240000081565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902054610c1f90829063ffffffff610d1516565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040902055600354610c58908263ffffffff610d1516565b60035560408051828152905173ffffffffffffffffffffffffffffffffffffffff8416916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610cf457600054610cf490610b6090339073ffffffffffffffffffffffffffffffffffffffff16610d77565b565b600082821115610d0f57610d0f610b6060028585610e03565b50900390565b600082820183811015610d3157610d31610b6060008686610e03565b9392505050565b60408051808201909152600481527fe69edc3e00000000000000000000000000000000000000000000000000000000602082015290565b805160208201fd5b6040805173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044808301919091528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1de45ad10000000000000000000000000000000000000000000000000000000017905292915050565b606063e946c1bb60e01b84848460405160240180846003811115610e2357fe5b60ff1681526020018381526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050939250505056fea265627a7a72315820a17bdf00a0dac8062d89dc2df04070d8275f9ee36b1e2ddfe360cf90deb0525f64736f6c63430005110032" } } }, "compiler": { "name": "solc", - "version": "soljson-v0.5.17+commit.d19bba13.js", + "version": "0.5.17+commit.d19bba13", "settings": { "optimizer": { "enabled": true, diff --git a/packages/contract-artifacts/artifacts/DummyERC721Token.json b/packages/contract-artifacts/artifacts/DummyERC721Token.json index d2218168af..1f9bb701ac 100644 --- a/packages/contract-artifacts/artifacts/DummyERC721Token.json +++ b/packages/contract-artifacts/artifacts/DummyERC721Token.json @@ -297,16 +297,16 @@ }, "evm": { "bytecode": { - "object": "0x60806040523480156200001157600080fd5b50604051620019a2380380620019a2833981810160405260408110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b506040525050600080546001600160a01b03191633179055508151620001c6906005906020850190620001e5565b508051620001dc906006906020840190620001e5565b5050506200028a565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200022857805160ff191683800117855562000258565b8280016001018555821562000258579182015b82811115620002585782518255916020019190600101906200023b565b50620002669291506200026a565b5090565b6200028791905b8082111562000266576000815560010162000271565b90565b611708806200029a6000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806370a0823111610097578063a22cb46511610066578063a22cb46514610362578063b88d4fde1461039d578063e985e9c51461043a578063f2fde38b14610489576100f5565b806370a08231146102d45780638da5cb5b1461031957806395d89b41146103215780639dc29fac14610329576100f5565b806323b872dd116100d357806323b872dd146101f857806340c10f191461023b57806342842e0e146102745780636352211e146102b7576100f5565b806306fdde03146100fa578063081812fc14610177578063095ea7b3146101bd575b600080fd5b6101026104bc565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561013c578181015183820152602001610124565b50505050905090810190601f1680156101695780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101946004803603602081101561018d57600080fd5b5035610568565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6101f6600480360360408110156101d357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610590565b005b6101f66004803603606081101561020e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356106b2565b6101f66004803603604081101561025157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610a26565b6101f66004803603606081101561028a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610a34565b610194600480360360208110156102cd57600080fd5b5035610bce565b610307600480360360208110156102ea57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610c65565b60408051918252519081900360200190f35b610194610d12565b610102610d2e565b6101f66004803603604081101561033f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610da7565b6101f66004803603604081101561037857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001351515610db9565b6101f6600480360360808110156103b357600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235811692602081013590911691604082013591908101906080810160608201356401000000008111156103fb57600080fd5b82018360208201111561040d57600080fd5b8035906020019184600183028401116401000000008311171561042f57600080fd5b509092509050610e52565b6104756004803603604081101561045057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661101d565b604080519115158252519081900360200190f35b6101f66004803603602081101561049f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611058565b6005805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156105605780601f1061053557610100808354040283529160200191610560565b820191906000526020600020905b81548152906001019060200180831161054357829003601f168201915b505050505081565b60009081526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b600061059b82610bce565b90503373ffffffffffffffffffffffffffffffffffffffff821614806105c657506105c6813361101d565b61063157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4552433732315f494e56414c49445f53454e4445520000000000000000000000604482015290519081900360640190fd5b60008281526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b73ffffffffffffffffffffffffffffffffffffffff821661073457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4552433732315f5a45524f5f544f5f4144445245535300000000000000000000604482015290519081900360640190fd5b600061073f82610bce565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146107db57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4552433732315f4f574e45525f4d49534d415443480000000000000000000000604482015290519081900360640190fd5b3360006107e784610568565b90508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806108285750610828838361101d565b8061085e57508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6108c957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4552433732315f494e56414c49445f5350454e44455200000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81161561091a57600084815260026020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555b600084815260016020818152604080842080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8b8116919091179091558a16845260039091529091205461098491611101565b73ffffffffffffffffffffffffffffffffffffffff80881660009081526003602052604080822093909355908716815220546109c790600163ffffffff61112016565b73ffffffffffffffffffffffffffffffffffffffff808716600081815260036020526040808220949094559251879391928a16917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050505050565b610a308282611143565b5050565b610a3f8383836106b2565b813b8015610bc857604080517f150b7a0200000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8681166024830152604482018590526080606483015260006084830181905292519086169163150b7a029160c480830192602092919082900301818787803b158015610ad457600080fd5b505af1158015610ae8573d6000803e3d6000fd5b505050506040513d6020811015610afe57600080fd5b505160405190915080602f6116a58239602f01905060405180910390207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614610bc657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4552433732315f494e56414c49445f53454c4543544f52000000000000000000604482015290519081900360640190fd5b505b50505050565b60008181526001602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610c5f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4552433732315f5a45524f5f4f574e4552000000000000000000000000000000604482015290519081900360640190fd5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff8216610ce957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4552433732315f5a45524f5f4f574e4552000000000000000000000000000000604482015290519081900360640190fd5b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b6006805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156105605780601f1061053557610100808354040283529160200191610560565b610daf611316565b610a30828261135f565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b610e5d8585856106b2565b833b8015611015576040517f150b7a02000000000000000000000000000000000000000000000000000000008152336004820181815273ffffffffffffffffffffffffffffffffffffffff89811660248501526044840188905260806064850190815260848501879052600094918a169363150b7a029390928c928b928b928b929060a401848480828437600081840152601f19601f8201169050808301925050509650505050505050602060405180830381600087803b158015610f2157600080fd5b505af1158015610f35573d6000803e3d6000fd5b505050506040513d6020811015610f4b57600080fd5b505160405190915080602f6116a58239602f01905060405180910390207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461101357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4552433732315f494e56414c49445f53454c4543544f52000000000000000000604482015290519081900360640190fd5b505b505050505050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260046020908152604080832093909416825291909152205460ff1690565b611060611316565b73ffffffffffffffffffffffffffffffffffffffff81166110905761108b61108661153a565b611571565b6110fe565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35b50565b60008282111561111a5761111a61108660028585611579565b50900390565b60008282018381101561113c5761113c61108660008686611579565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff82166111c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4552433732315f5a45524f5f544f5f4144445245535300000000000000000000604482015290519081900360640190fd5b60008181526001602052604090205473ffffffffffffffffffffffffffffffffffffffff16801561125757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4552433732315f4f574e45525f414c52454144595f4558495354530000000000604482015290519081900360640190fd5b600082815260016020818152604080842080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff891690811790915584526003909152909120546112bd91611120565b73ffffffffffffffffffffffffffffffffffffffff84166000818152600360205260408082209390935591518492907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4505050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461135d5760005461135d9061108690339073ffffffffffffffffffffffffffffffffffffffff16611618565b565b73ffffffffffffffffffffffffffffffffffffffff82166113e157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732315f5a45524f5f4f574e45525f4144445245535300000000000000604482015290519081900360640190fd5b60008181526001602052604090205473ffffffffffffffffffffffffffffffffffffffff908116908316811461147857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4552433732315f4f574e45525f4d49534d415443480000000000000000000000604482015290519081900360640190fd5b600082815260016020818152604080842080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905573ffffffffffffffffffffffffffffffffffffffff871684526003909152909120546114e09163ffffffff61110116565b73ffffffffffffffffffffffffffffffffffffffff8416600081815260036020526040808220939093559151849291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a4505050565b60408051808201909152600481527fe69edc3e00000000000000000000000000000000000000000000000000000000602082015290565b805160208201fd5b606063e946c1bb60e01b8484846040516024018084600381111561159957fe5b60ff1681526020018381526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090509392505050565b6040805173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044808301919091528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1de45ad1000000000000000000000000000000000000000000000000000000001790529291505056fe6f6e455243373231526563656976656428616464726573732c616464726573732c75696e743235362c627974657329a265627a7a723158207507cba24e1cb21cecc03a109bffbbe03db690aeba9d887a9ddd9a327c74bb9164736f6c63430005110032" + "object": "0x60806040523480156200001157600080fd5b50604051620019a2380380620019a2833981810160405260408110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b506040525050600080546001600160a01b03191633179055508151620001c6906005906020850190620001e5565b508051620001dc906006906020840190620001e5565b5050506200028a565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200022857805160ff191683800117855562000258565b8280016001018555821562000258579182015b82811115620002585782518255916020019190600101906200023b565b50620002669291506200026a565b5090565b6200028791905b8082111562000266576000815560010162000271565b90565b611708806200029a6000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806370a0823111610097578063a22cb46511610066578063a22cb46514610362578063b88d4fde1461039d578063e985e9c51461043a578063f2fde38b14610489576100f5565b806370a08231146102d45780638da5cb5b1461031957806395d89b41146103215780639dc29fac14610329576100f5565b806323b872dd116100d357806323b872dd146101f857806340c10f191461023b57806342842e0e146102745780636352211e146102b7576100f5565b806306fdde03146100fa578063081812fc14610177578063095ea7b3146101bd575b600080fd5b6101026104bc565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561013c578181015183820152602001610124565b50505050905090810190601f1680156101695780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101946004803603602081101561018d57600080fd5b5035610568565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6101f6600480360360408110156101d357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610590565b005b6101f66004803603606081101561020e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356106b2565b6101f66004803603604081101561025157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610a26565b6101f66004803603606081101561028a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610a34565b610194600480360360208110156102cd57600080fd5b5035610bce565b610307600480360360208110156102ea57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610c65565b60408051918252519081900360200190f35b610194610d12565b610102610d2e565b6101f66004803603604081101561033f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610da7565b6101f66004803603604081101561037857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001351515610db9565b6101f6600480360360808110156103b357600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235811692602081013590911691604082013591908101906080810160608201356401000000008111156103fb57600080fd5b82018360208201111561040d57600080fd5b8035906020019184600183028401116401000000008311171561042f57600080fd5b509092509050610e52565b6104756004803603604081101561045057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661101d565b604080519115158252519081900360200190f35b6101f66004803603602081101561049f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611058565b6005805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156105605780601f1061053557610100808354040283529160200191610560565b820191906000526020600020905b81548152906001019060200180831161054357829003601f168201915b505050505081565b60009081526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b600061059b82610bce565b90503373ffffffffffffffffffffffffffffffffffffffff821614806105c657506105c6813361101d565b61063157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4552433732315f494e56414c49445f53454e4445520000000000000000000000604482015290519081900360640190fd5b60008281526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b73ffffffffffffffffffffffffffffffffffffffff821661073457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4552433732315f5a45524f5f544f5f4144445245535300000000000000000000604482015290519081900360640190fd5b600061073f82610bce565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146107db57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4552433732315f4f574e45525f4d49534d415443480000000000000000000000604482015290519081900360640190fd5b3360006107e784610568565b90508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806108285750610828838361101d565b8061085e57508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6108c957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4552433732315f494e56414c49445f5350454e44455200000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81161561091a57600084815260026020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555b600084815260016020818152604080842080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8b8116919091179091558a16845260039091529091205461098491611101565b73ffffffffffffffffffffffffffffffffffffffff80881660009081526003602052604080822093909355908716815220546109c790600163ffffffff61112016565b73ffffffffffffffffffffffffffffffffffffffff808716600081815260036020526040808220949094559251879391928a16917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050505050565b610a308282611143565b5050565b610a3f8383836106b2565b813b8015610bc857604080517f150b7a0200000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8681166024830152604482018590526080606483015260006084830181905292519086169163150b7a029160c480830192602092919082900301818787803b158015610ad457600080fd5b505af1158015610ae8573d6000803e3d6000fd5b505050506040513d6020811015610afe57600080fd5b505160405190915080602f6116a58239602f01905060405180910390207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614610bc657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4552433732315f494e56414c49445f53454c4543544f52000000000000000000604482015290519081900360640190fd5b505b50505050565b60008181526001602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610c5f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4552433732315f5a45524f5f4f574e4552000000000000000000000000000000604482015290519081900360640190fd5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff8216610ce957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4552433732315f5a45524f5f4f574e4552000000000000000000000000000000604482015290519081900360640190fd5b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b6006805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156105605780601f1061053557610100808354040283529160200191610560565b610daf611316565b610a30828261135f565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b610e5d8585856106b2565b833b8015611015576040517f150b7a02000000000000000000000000000000000000000000000000000000008152336004820181815273ffffffffffffffffffffffffffffffffffffffff89811660248501526044840188905260806064850190815260848501879052600094918a169363150b7a029390928c928b928b928b929060a401848480828437600081840152601f19601f8201169050808301925050509650505050505050602060405180830381600087803b158015610f2157600080fd5b505af1158015610f35573d6000803e3d6000fd5b505050506040513d6020811015610f4b57600080fd5b505160405190915080602f6116a58239602f01905060405180910390207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461101357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4552433732315f494e56414c49445f53454c4543544f52000000000000000000604482015290519081900360640190fd5b505b505050505050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260046020908152604080832093909416825291909152205460ff1690565b611060611316565b73ffffffffffffffffffffffffffffffffffffffff81166110905761108b61108661153a565b611571565b6110fe565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35b50565b60008282111561111a5761111a61108660028585611579565b50900390565b60008282018381101561113c5761113c61108660008686611579565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff82166111c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4552433732315f5a45524f5f544f5f4144445245535300000000000000000000604482015290519081900360640190fd5b60008181526001602052604090205473ffffffffffffffffffffffffffffffffffffffff16801561125757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4552433732315f4f574e45525f414c52454144595f4558495354530000000000604482015290519081900360640190fd5b600082815260016020818152604080842080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff891690811790915584526003909152909120546112bd91611120565b73ffffffffffffffffffffffffffffffffffffffff84166000818152600360205260408082209390935591518492907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4505050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461135d5760005461135d9061108690339073ffffffffffffffffffffffffffffffffffffffff16611618565b565b73ffffffffffffffffffffffffffffffffffffffff82166113e157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732315f5a45524f5f4f574e45525f4144445245535300000000000000604482015290519081900360640190fd5b60008181526001602052604090205473ffffffffffffffffffffffffffffffffffffffff908116908316811461147857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4552433732315f4f574e45525f4d49534d415443480000000000000000000000604482015290519081900360640190fd5b600082815260016020818152604080842080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905573ffffffffffffffffffffffffffffffffffffffff871684526003909152909120546114e09163ffffffff61110116565b73ffffffffffffffffffffffffffffffffffffffff8416600081815260036020526040808220939093559151849291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a4505050565b60408051808201909152600481527fe69edc3e00000000000000000000000000000000000000000000000000000000602082015290565b805160208201fd5b606063e946c1bb60e01b8484846040516024018084600381111561159957fe5b60ff1681526020018381526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090509392505050565b6040805173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044808301919091528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1de45ad1000000000000000000000000000000000000000000000000000000001790529291505056fe6f6e455243373231526563656976656428616464726573732c616464726573732c75696e743235362c627974657329a265627a7a723158204c48589a76bd88288dd50930a77d863bf4bb638f9e1b2abbfd02e015019bd69c64736f6c63430005110032" }, "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b50600436106100f55760003560e01c806370a0823111610097578063a22cb46511610066578063a22cb46514610362578063b88d4fde1461039d578063e985e9c51461043a578063f2fde38b14610489576100f5565b806370a08231146102d45780638da5cb5b1461031957806395d89b41146103215780639dc29fac14610329576100f5565b806323b872dd116100d357806323b872dd146101f857806340c10f191461023b57806342842e0e146102745780636352211e146102b7576100f5565b806306fdde03146100fa578063081812fc14610177578063095ea7b3146101bd575b600080fd5b6101026104bc565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561013c578181015183820152602001610124565b50505050905090810190601f1680156101695780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101946004803603602081101561018d57600080fd5b5035610568565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6101f6600480360360408110156101d357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610590565b005b6101f66004803603606081101561020e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356106b2565b6101f66004803603604081101561025157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610a26565b6101f66004803603606081101561028a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610a34565b610194600480360360208110156102cd57600080fd5b5035610bce565b610307600480360360208110156102ea57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610c65565b60408051918252519081900360200190f35b610194610d12565b610102610d2e565b6101f66004803603604081101561033f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610da7565b6101f66004803603604081101561037857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001351515610db9565b6101f6600480360360808110156103b357600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235811692602081013590911691604082013591908101906080810160608201356401000000008111156103fb57600080fd5b82018360208201111561040d57600080fd5b8035906020019184600183028401116401000000008311171561042f57600080fd5b509092509050610e52565b6104756004803603604081101561045057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661101d565b604080519115158252519081900360200190f35b6101f66004803603602081101561049f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611058565b6005805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156105605780601f1061053557610100808354040283529160200191610560565b820191906000526020600020905b81548152906001019060200180831161054357829003601f168201915b505050505081565b60009081526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b600061059b82610bce565b90503373ffffffffffffffffffffffffffffffffffffffff821614806105c657506105c6813361101d565b61063157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4552433732315f494e56414c49445f53454e4445520000000000000000000000604482015290519081900360640190fd5b60008281526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b73ffffffffffffffffffffffffffffffffffffffff821661073457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4552433732315f5a45524f5f544f5f4144445245535300000000000000000000604482015290519081900360640190fd5b600061073f82610bce565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146107db57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4552433732315f4f574e45525f4d49534d415443480000000000000000000000604482015290519081900360640190fd5b3360006107e784610568565b90508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806108285750610828838361101d565b8061085e57508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6108c957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4552433732315f494e56414c49445f5350454e44455200000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81161561091a57600084815260026020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555b600084815260016020818152604080842080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8b8116919091179091558a16845260039091529091205461098491611101565b73ffffffffffffffffffffffffffffffffffffffff80881660009081526003602052604080822093909355908716815220546109c790600163ffffffff61112016565b73ffffffffffffffffffffffffffffffffffffffff808716600081815260036020526040808220949094559251879391928a16917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050505050565b610a308282611143565b5050565b610a3f8383836106b2565b813b8015610bc857604080517f150b7a0200000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8681166024830152604482018590526080606483015260006084830181905292519086169163150b7a029160c480830192602092919082900301818787803b158015610ad457600080fd5b505af1158015610ae8573d6000803e3d6000fd5b505050506040513d6020811015610afe57600080fd5b505160405190915080602f6116a58239602f01905060405180910390207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614610bc657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4552433732315f494e56414c49445f53454c4543544f52000000000000000000604482015290519081900360640190fd5b505b50505050565b60008181526001602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610c5f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4552433732315f5a45524f5f4f574e4552000000000000000000000000000000604482015290519081900360640190fd5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff8216610ce957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4552433732315f5a45524f5f4f574e4552000000000000000000000000000000604482015290519081900360640190fd5b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b6006805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156105605780601f1061053557610100808354040283529160200191610560565b610daf611316565b610a30828261135f565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b610e5d8585856106b2565b833b8015611015576040517f150b7a02000000000000000000000000000000000000000000000000000000008152336004820181815273ffffffffffffffffffffffffffffffffffffffff89811660248501526044840188905260806064850190815260848501879052600094918a169363150b7a029390928c928b928b928b929060a401848480828437600081840152601f19601f8201169050808301925050509650505050505050602060405180830381600087803b158015610f2157600080fd5b505af1158015610f35573d6000803e3d6000fd5b505050506040513d6020811015610f4b57600080fd5b505160405190915080602f6116a58239602f01905060405180910390207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461101357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4552433732315f494e56414c49445f53454c4543544f52000000000000000000604482015290519081900360640190fd5b505b505050505050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260046020908152604080832093909416825291909152205460ff1690565b611060611316565b73ffffffffffffffffffffffffffffffffffffffff81166110905761108b61108661153a565b611571565b6110fe565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35b50565b60008282111561111a5761111a61108660028585611579565b50900390565b60008282018381101561113c5761113c61108660008686611579565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff82166111c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4552433732315f5a45524f5f544f5f4144445245535300000000000000000000604482015290519081900360640190fd5b60008181526001602052604090205473ffffffffffffffffffffffffffffffffffffffff16801561125757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4552433732315f4f574e45525f414c52454144595f4558495354530000000000604482015290519081900360640190fd5b600082815260016020818152604080842080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff891690811790915584526003909152909120546112bd91611120565b73ffffffffffffffffffffffffffffffffffffffff84166000818152600360205260408082209390935591518492907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4505050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461135d5760005461135d9061108690339073ffffffffffffffffffffffffffffffffffffffff16611618565b565b73ffffffffffffffffffffffffffffffffffffffff82166113e157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732315f5a45524f5f4f574e45525f4144445245535300000000000000604482015290519081900360640190fd5b60008181526001602052604090205473ffffffffffffffffffffffffffffffffffffffff908116908316811461147857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4552433732315f4f574e45525f4d49534d415443480000000000000000000000604482015290519081900360640190fd5b600082815260016020818152604080842080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905573ffffffffffffffffffffffffffffffffffffffff871684526003909152909120546114e09163ffffffff61110116565b73ffffffffffffffffffffffffffffffffffffffff8416600081815260036020526040808220939093559151849291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a4505050565b60408051808201909152600481527fe69edc3e00000000000000000000000000000000000000000000000000000000602082015290565b805160208201fd5b606063e946c1bb60e01b8484846040516024018084600381111561159957fe5b60ff1681526020018381526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090509392505050565b6040805173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044808301919091528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1de45ad1000000000000000000000000000000000000000000000000000000001790529291505056fe6f6e455243373231526563656976656428616464726573732c616464726573732c75696e743235362c627974657329a265627a7a723158207507cba24e1cb21cecc03a109bffbbe03db690aeba9d887a9ddd9a327c74bb9164736f6c63430005110032" + "object": "0x608060405234801561001057600080fd5b50600436106100f55760003560e01c806370a0823111610097578063a22cb46511610066578063a22cb46514610362578063b88d4fde1461039d578063e985e9c51461043a578063f2fde38b14610489576100f5565b806370a08231146102d45780638da5cb5b1461031957806395d89b41146103215780639dc29fac14610329576100f5565b806323b872dd116100d357806323b872dd146101f857806340c10f191461023b57806342842e0e146102745780636352211e146102b7576100f5565b806306fdde03146100fa578063081812fc14610177578063095ea7b3146101bd575b600080fd5b6101026104bc565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561013c578181015183820152602001610124565b50505050905090810190601f1680156101695780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101946004803603602081101561018d57600080fd5b5035610568565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6101f6600480360360408110156101d357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610590565b005b6101f66004803603606081101561020e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356106b2565b6101f66004803603604081101561025157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610a26565b6101f66004803603606081101561028a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610a34565b610194600480360360208110156102cd57600080fd5b5035610bce565b610307600480360360208110156102ea57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610c65565b60408051918252519081900360200190f35b610194610d12565b610102610d2e565b6101f66004803603604081101561033f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610da7565b6101f66004803603604081101561037857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001351515610db9565b6101f6600480360360808110156103b357600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235811692602081013590911691604082013591908101906080810160608201356401000000008111156103fb57600080fd5b82018360208201111561040d57600080fd5b8035906020019184600183028401116401000000008311171561042f57600080fd5b509092509050610e52565b6104756004803603604081101561045057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661101d565b604080519115158252519081900360200190f35b6101f66004803603602081101561049f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611058565b6005805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156105605780601f1061053557610100808354040283529160200191610560565b820191906000526020600020905b81548152906001019060200180831161054357829003601f168201915b505050505081565b60009081526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b600061059b82610bce565b90503373ffffffffffffffffffffffffffffffffffffffff821614806105c657506105c6813361101d565b61063157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4552433732315f494e56414c49445f53454e4445520000000000000000000000604482015290519081900360640190fd5b60008281526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b73ffffffffffffffffffffffffffffffffffffffff821661073457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4552433732315f5a45524f5f544f5f4144445245535300000000000000000000604482015290519081900360640190fd5b600061073f82610bce565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146107db57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4552433732315f4f574e45525f4d49534d415443480000000000000000000000604482015290519081900360640190fd5b3360006107e784610568565b90508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806108285750610828838361101d565b8061085e57508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6108c957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4552433732315f494e56414c49445f5350454e44455200000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81161561091a57600084815260026020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555b600084815260016020818152604080842080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8b8116919091179091558a16845260039091529091205461098491611101565b73ffffffffffffffffffffffffffffffffffffffff80881660009081526003602052604080822093909355908716815220546109c790600163ffffffff61112016565b73ffffffffffffffffffffffffffffffffffffffff808716600081815260036020526040808220949094559251879391928a16917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050505050565b610a308282611143565b5050565b610a3f8383836106b2565b813b8015610bc857604080517f150b7a0200000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8681166024830152604482018590526080606483015260006084830181905292519086169163150b7a029160c480830192602092919082900301818787803b158015610ad457600080fd5b505af1158015610ae8573d6000803e3d6000fd5b505050506040513d6020811015610afe57600080fd5b505160405190915080602f6116a58239602f01905060405180910390207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614610bc657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4552433732315f494e56414c49445f53454c4543544f52000000000000000000604482015290519081900360640190fd5b505b50505050565b60008181526001602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610c5f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4552433732315f5a45524f5f4f574e4552000000000000000000000000000000604482015290519081900360640190fd5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff8216610ce957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4552433732315f5a45524f5f4f574e4552000000000000000000000000000000604482015290519081900360640190fd5b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b6006805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156105605780601f1061053557610100808354040283529160200191610560565b610daf611316565b610a30828261135f565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b610e5d8585856106b2565b833b8015611015576040517f150b7a02000000000000000000000000000000000000000000000000000000008152336004820181815273ffffffffffffffffffffffffffffffffffffffff89811660248501526044840188905260806064850190815260848501879052600094918a169363150b7a029390928c928b928b928b929060a401848480828437600081840152601f19601f8201169050808301925050509650505050505050602060405180830381600087803b158015610f2157600080fd5b505af1158015610f35573d6000803e3d6000fd5b505050506040513d6020811015610f4b57600080fd5b505160405190915080602f6116a58239602f01905060405180910390207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461101357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4552433732315f494e56414c49445f53454c4543544f52000000000000000000604482015290519081900360640190fd5b505b505050505050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260046020908152604080832093909416825291909152205460ff1690565b611060611316565b73ffffffffffffffffffffffffffffffffffffffff81166110905761108b61108661153a565b611571565b6110fe565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35b50565b60008282111561111a5761111a61108660028585611579565b50900390565b60008282018381101561113c5761113c61108660008686611579565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff82166111c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4552433732315f5a45524f5f544f5f4144445245535300000000000000000000604482015290519081900360640190fd5b60008181526001602052604090205473ffffffffffffffffffffffffffffffffffffffff16801561125757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4552433732315f4f574e45525f414c52454144595f4558495354530000000000604482015290519081900360640190fd5b600082815260016020818152604080842080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff891690811790915584526003909152909120546112bd91611120565b73ffffffffffffffffffffffffffffffffffffffff84166000818152600360205260408082209390935591518492907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4505050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461135d5760005461135d9061108690339073ffffffffffffffffffffffffffffffffffffffff16611618565b565b73ffffffffffffffffffffffffffffffffffffffff82166113e157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732315f5a45524f5f4f574e45525f4144445245535300000000000000604482015290519081900360640190fd5b60008181526001602052604090205473ffffffffffffffffffffffffffffffffffffffff908116908316811461147857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4552433732315f4f574e45525f4d49534d415443480000000000000000000000604482015290519081900360640190fd5b600082815260016020818152604080842080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905573ffffffffffffffffffffffffffffffffffffffff871684526003909152909120546114e09163ffffffff61110116565b73ffffffffffffffffffffffffffffffffffffffff8416600081815260036020526040808220939093559151849291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a4505050565b60408051808201909152600481527fe69edc3e00000000000000000000000000000000000000000000000000000000602082015290565b805160208201fd5b606063e946c1bb60e01b8484846040516024018084600381111561159957fe5b60ff1681526020018381526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090509392505050565b6040805173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044808301919091528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1de45ad1000000000000000000000000000000000000000000000000000000001790529291505056fe6f6e455243373231526563656976656428616464726573732c616464726573732c75696e743235362c627974657329a265627a7a723158204c48589a76bd88288dd50930a77d863bf4bb638f9e1b2abbfd02e015019bd69c64736f6c63430005110032" } } }, "compiler": { "name": "solc", - "version": "soljson-v0.5.17+commit.d19bba13.js", + "version": "0.5.17+commit.d19bba13", "settings": { "optimizer": { "enabled": true, diff --git a/packages/contract-artifacts/artifacts/ERC1155Mintable.json b/packages/contract-artifacts/artifacts/ERC1155Mintable.json index 78ac6fdaa1..e30e8a6d3a 100644 --- a/packages/contract-artifacts/artifacts/ERC1155Mintable.json +++ b/packages/contract-artifacts/artifacts/ERC1155Mintable.json @@ -349,16 +349,16 @@ }, "evm": { "bytecode": { - "object": "0x608060405234801561001057600080fd5b50612448806100206000396000f3fe608060405234801561001057600080fd5b50600436106101765760003560e01c80639f4b286a116100d8578063e0a5c9491161008c578063f242432a11610066578063f242432a14610312578063f941908814610325578063fc67bf1c1461033857610176565b8063e0a5c949146102d7578063e44591f0146102ec578063e985e9c5146102ff57610176565b8063adebf6f2116100bd578063adebf6f21461029e578063cc10e401146102b1578063cd53d08e146102c457610176565b80639f4b286a14610278578063a22cb4651461028b57610176565b80636352211e1161012f5780637269a327116101145780637269a3271461023f57806378b27221146102525780639cca1c641461026557610176565b80636352211e1461020c5780636f969c2d1461022c57610176565b80632eb2c2d6116101605780632eb2c2d6146101b75780634e1273f4146101cc5780635e81b958146101ec57610176565b8062fdd58e1461017b57806308d7d469146101a4575b600080fd5b61018e610189366004611c80565b610340565b60405161019b91906123c9565b60405180910390f35b61018e6101b2366004611dac565b6103ca565b6101ca6101c5366004611b12565b6103dc565b005b6101df6101da366004611caa565b610943565b60405161019b91906120b1565b6101ff6101fa366004611dac565b610ae9565b60405161019b91906120f4565b61021f61021a366004611dac565b610b2f565b60405161019b9190611f57565b61018e61023a366004611dac565b610b57565b6101ff61024d366004611dac565b610b7c565b6101ca610260366004611e0e565b610bc1565b61018e610273366004611dac565b610e8d565b6101ca610286366004611e85565b610ea2565b6101ca610299366004611c45565b610f5e565b6101ff6102ac366004611dac565b610ff8565b61018e6102bf366004611d53565b61101e565b61021f6102d2366004611dac565b611113565b6102df61113b565b60405161019b91906120ff565b6101ff6102fa366004611dac565b61115f565b6101ff61030d366004611ade565b611187565b6101ca610320366004611bcb565b6111c2565b6101ca610333366004611dc4565b611624565b6102df6118ff565b600061034b82610ae9565b156103925760008281526020819052604090205473ffffffffffffffffffffffffffffffffffffffff848116911614610385576000610388565b60015b60ff1690506103c4565b50600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091529020545b92915050565b60056020526000908152604090205481565b73ffffffffffffffffffffffffffffffffffffffff8716610432576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104299061216a565b60405180910390fd5b84831461046b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610429906121a1565b73ffffffffffffffffffffffffffffffffffffffff88163314806104c4575073ffffffffffffffffffffffffffffffffffffffff8816600090815260026020908152604080832033845290915290205460ff1615156001145b6104fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104299061220d565b60005b8581101561075e57600087878381811061051357fe5b905060200201359050600086868481811061052a57fe5b90506020020135905061053c8261115f565b1561062c578060011461057b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042990612244565b60008281526020819052604090205473ffffffffffffffffffffffffffffffffffffffff8c81169116146105db576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610429906121d6565b600082815260208190526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8c16179055610754565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8f16845290915290205461066c908263ffffffff61192316565b6001600084815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610723816001600085815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461194790919063ffffffff16565b600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8f1684529091529020555b50506001016104fd565b508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb898989896040516107d9949392919061207f565b60405180910390a46108008773ffffffffffffffffffffffffffffffffffffffff16611963565b15610939576040517fbc197c8100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff89169063bc197c81906108689033908d908c908c908c908c908c908c90600401611fbd565b602060405180830381600087803b15801561088257600080fd5b505af1158015610896573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108ba9190810190611d13565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c810000000000000000000000000000000000000000000000000000000014610937576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042990612392565b505b5050505050505050565b606083821461097e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610429906122d8565b6040805185815260208087028201019091528480156109a7578160200160208202803883390190505b50905060005b84811015610ae05760008484838181106109c357fe5b9050602002013590506109d581610ae9565b15610a53578686838181106109e657fe5b90506020020160206109fb9190810190611ac3565b60008281526020819052604090205473ffffffffffffffffffffffffffffffffffffffff908116911614610a30576000610a33565b60015b60ff16838381518110610a4257fe5b602002602001018181525050610ad7565b600081815260016020526040812090888885818110610a6e57fe5b9050602002016020610a839190810190611ac3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054838381518110610aca57fe5b6020026020010181815250505b506001016109ad565b50949350505050565b60007f80000000000000000000000000000000000000000000000000000000000000008083161480156103c45750506fffffffffffffffffffffffffffffffff16151590565b60009081526020819052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b7fffffffffffffffffffffffffffffffff000000000000000000000000000000001690565b60007f80000000000000000000000000000000000000000000000000000000000000008083161480156103c45750506fffffffffffffffffffffffffffffffff161590565b600085815260046020526040902054859073ffffffffffffffffffffffffffffffffffffffff163314610bf357600080fd5b610bfc86610ff8565b610c32576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042990612335565b60005b84811015610e84576000868683818110610c4b57fe5b9050602002016020610c609190810190611ac3565b90506000858584818110610c7057fe5b60008c815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff89168452825290912054910292909201359250610cbb9183915063ffffffff61194716565b60008a815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832093909355915133907fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6290610d22908e9087906123d2565b60405180910390a4610d498273ffffffffffffffffffffffffffffffffffffffff16611963565b15610e7a576040517ff23a6e6100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff84169063f23a6e6190610da990339081908f908890600401611f78565b602060405180830381600087803b158015610dc357600080fd5b505af1158015610dd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610dfb9190810190611d13565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e610000000000000000000000000000000000000000000000000000000014610e78576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042990612392565b505b5050600101610c35565b50505050505050565b6fffffffffffffffffffffffffffffffff1690565b60008381526004602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000163390811790915590518291907fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6290610f1090889085906123d2565b60405180910390a48015610f5957827f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b8383604051610f5092919061214e565b60405180910390a25b505050565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff871680855292529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151517905590519091907f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3190610fec9085906120f4565b60405180910390a35050565b7f8000000000000000000000000000000000000000000000000000000000000000161590565b600380546001019081905560801b8115611055577f8000000000000000000000000000000000000000000000000000000000000000175b60008181526004602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000163390811790915590518291907fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62906110c390869085906123d2565b60405180910390a4821561110c57807f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b858560405161110392919061214e565b60405180910390a25b9392505050565b60046020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b7ff23a6e610000000000000000000000000000000000000000000000000000000081565b7f80000000000000000000000000000000000000000000000000000000000000009081161490565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205460ff1690565b73ffffffffffffffffffffffffffffffffffffffff851661120f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104299061216a565b73ffffffffffffffffffffffffffffffffffffffff8616331480611268575073ffffffffffffffffffffffffffffffffffffffff8616600090815260026020908152604080832033845290915290205460ff1615156001145b61129e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104299061220d565b6112a78461115f565b1561139757826001146112e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042990612244565b60008481526020819052604090205473ffffffffffffffffffffffffffffffffffffffff878116911614611346576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610429906121d6565b600084815260208190526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff871617905561144c565b600084815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8a1684529091529020546113d7908463ffffffff61192316565b600085815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8b8116855292528083209390935587168152205461141b9084611947565b600085815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8a1684529091529020555b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6287876040516114c29291906123d2565b60405180910390a46114e98573ffffffffffffffffffffffffffffffffffffffff16611963565b1561161c576040517ff23a6e6100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff87169063f23a6e619061154d9033908b908a908a908a908a9060040161202d565b602060405180830381600087803b15801561156757600080fd5b505af115801561157b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061159f9190810190611d13565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e610000000000000000000000000000000000000000000000000000000014610e84576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042990612392565b505050505050565b600083815260046020526040902054839073ffffffffffffffffffffffffffffffffffffffff16331461165657600080fd5b61165f8461115f565b611695576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104299061227b565b600084815260056020526040812054600101905b838110156118c55760008585838181106116bf57fe5b90506020020160206116d49190810190611ac3565b828401881760008181526020819052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86169081179091559051939450919233907fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62906117629086906001906123d2565b60405180910390a46117898273ffffffffffffffffffffffffffffffffffffffff16611963565b156118bb576040517ff23a6e6100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff84169063f23a6e61906117ea90339081908790600190600401611f78565b602060405180830381600087803b15801561180457600080fd5b505af1158015611818573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061183c9190810190611d13565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e6100000000000000000000000000000000000000000000000000000000146118b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042990612392565b505b50506001016116a9565b506000858152600560205260409020546118e690849063ffffffff61194716565b6000958652600560205260409095209490945550505050565b7fbc197c810000000000000000000000000000000000000000000000000000000081565b6000828211156119415761194161193c60028585611969565b611a0e565b50900390565b60008282018381101561110c5761110c61193c60008686611969565b3b151590565b606063e946c1bb60e01b8484846040516024016119889392919061212c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290509392505050565b805160208201fd5b803573ffffffffffffffffffffffffffffffffffffffff811681146103c457600080fd5b60008083601f840112611a4b578182fd5b50813567ffffffffffffffff811115611a62578182fd5b6020830191508360208083028501011115611a7c57600080fd5b9250929050565b60008083601f840112611a94578182fd5b50813567ffffffffffffffff811115611aab578182fd5b602083019150836020828501011115611a7c57600080fd5b600060208284031215611ad4578081fd5b61110c8383611a16565b60008060408385031215611af0578081fd5b611afa8484611a16565b9150611b098460208501611a16565b90509250929050565b60008060008060008060008060a0898b031215611b2d578384fd5b611b378a8a611a16565b9750611b468a60208b01611a16565b9650604089013567ffffffffffffffff80821115611b62578586fd5b611b6e8c838d01611a3a565b909850965060608b0135915080821115611b86578586fd5b611b928c838d01611a3a565b909650945060808b0135915080821115611baa578384fd5b50611bb78b828c01611a83565b999c989b5096995094979396929594505050565b60008060008060008060a08789031215611be3578182fd5b8635611bee816123e0565b95506020870135611bfe816123e0565b94506040870135935060608701359250608087013567ffffffffffffffff811115611c27578283fd5b611c3389828a01611a83565b979a9699509497509295939492505050565b60008060408385031215611c57578182fd5b611c618484611a16565b915060208301358015158114611c75578182fd5b809150509250929050565b60008060408385031215611c92578182fd5b611c9c8484611a16565b946020939093013593505050565b60008060008060408587031215611cbf578384fd5b843567ffffffffffffffff80821115611cd6578586fd5b611ce288838901611a3a565b90965094506020870135915080821115611cfa578384fd5b50611d0787828801611a3a565b95989497509550505050565b600060208284031215611d24578081fd5b81517fffffffff000000000000000000000000000000000000000000000000000000008116811461110c578182fd5b600080600060408486031215611d67578283fd5b833567ffffffffffffffff811115611d7d578384fd5b611d8986828701611a83565b90945092505060208401358015158114611da1578182fd5b809150509250925092565b600060208284031215611dbd578081fd5b5035919050565b600080600060408486031215611dd8578283fd5b83359250602084013567ffffffffffffffff811115611df5578283fd5b611e0186828701611a3a565b9497909650939450505050565b600080600080600060608688031215611e25578081fd5b85359450602086013567ffffffffffffffff80821115611e43578283fd5b611e4f89838a01611a3a565b90965094506040880135915080821115611e67578283fd5b50611e7488828901611a3a565b969995985093965092949392505050565b600080600060408486031215611e99578081fd5b83359250602084013567ffffffffffffffff811115611eb6578182fd5b611e0186828701611a83565b60008284527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115611ef3578081fd5b6020830280836020870137939093016020019283525090919050565b600082845282826020860137806020848601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85011685010190509392505050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff94851681529290931660208301526040820152606081019190915260a06080820181905260009082015260c00190565b600073ffffffffffffffffffffffffffffffffffffffff808b168352808a1660208401525060a06040830152611ff760a08301888a611ec2565b828103606084015261200a818789611ec2565b838103608085015261201d818688611f0f565b9c9b505050505050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015260a0608083015261207360a083018486611f0f565b98975050505050505050565b600060408252612093604083018688611ec2565b82810360208401526120a6818587611ec2565b979650505050505050565b602080825282518282018190526000918401906040840190835b818110156120e95783518352602093840193909201916001016120cb565b509095945050505050565b901515815260200190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b606081016004851061213a57fe5b938152602081019290925260409091015290565b600060208252612162602083018486611f0f565b949350505050565b6020808252601f908201527f43414e4e4f545f5452414e534645525f544f5f414444524553535f5a45524f00604082015260600190565b6020808252818101527f544f4b454e5f414e445f56414c5545535f4c454e4754485f4d49534d41544348604082015260600190565b6020808252601d908201527f4e46545f4e4f545f4f574e45445f42595f46524f4d5f41444452455353000000604082015260600190565b60208082526016908201527f494e53554646494349454e545f414c4c4f57414e434500000000000000000000604082015260600190565b6020808252601c908201527f414d4f554e545f455155414c5f544f5f4f4e455f524551554952454400000000604082015260600190565b6020808252602d908201527f54524945445f544f5f4d494e545f4e4f4e5f46554e4749424c455f464f525f4660408201527f554e4749424c455f544f4b454e00000000000000000000000000000000000000606082015260800190565b60208082526024908201527f4f574e4552535f414e445f4944535f4d5553545f484156455f53414d455f4c4560408201527f4e47544800000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252602d908201527f54524945445f544f5f4d494e545f46554e4749424c455f464f525f4e4f4e5f4660408201527f554e4749424c455f544f4b454e00000000000000000000000000000000000000606082015260800190565b60208082526019908201527f4241445f52454345495645525f52455455524e5f56414c554500000000000000604082015260600190565b90815260200190565b918252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff8116811461240257600080fd5b5056fea365627a7a723158201ee52511037fd21c6670dcd6401daeac26f62a6afdc23addc02ff5cf826773246c6578706572696d656e74616cf564736f6c63430005110040" + "object": "0x608060405234801561001057600080fd5b50612448806100206000396000f3fe608060405234801561001057600080fd5b50600436106101765760003560e01c80639f4b286a116100d8578063e0a5c9491161008c578063f242432a11610066578063f242432a14610312578063f941908814610325578063fc67bf1c1461033857610176565b8063e0a5c949146102d7578063e44591f0146102ec578063e985e9c5146102ff57610176565b8063adebf6f2116100bd578063adebf6f21461029e578063cc10e401146102b1578063cd53d08e146102c457610176565b80639f4b286a14610278578063a22cb4651461028b57610176565b80636352211e1161012f5780637269a327116101145780637269a3271461023f57806378b27221146102525780639cca1c641461026557610176565b80636352211e1461020c5780636f969c2d1461022c57610176565b80632eb2c2d6116101605780632eb2c2d6146101b75780634e1273f4146101cc5780635e81b958146101ec57610176565b8062fdd58e1461017b57806308d7d469146101a4575b600080fd5b61018e610189366004611c80565b610340565b60405161019b91906123c9565b60405180910390f35b61018e6101b2366004611dac565b6103ca565b6101ca6101c5366004611b12565b6103dc565b005b6101df6101da366004611caa565b610943565b60405161019b91906120b1565b6101ff6101fa366004611dac565b610ae9565b60405161019b91906120f4565b61021f61021a366004611dac565b610b2f565b60405161019b9190611f57565b61018e61023a366004611dac565b610b57565b6101ff61024d366004611dac565b610b7c565b6101ca610260366004611e0e565b610bc1565b61018e610273366004611dac565b610e8d565b6101ca610286366004611e85565b610ea2565b6101ca610299366004611c45565b610f5e565b6101ff6102ac366004611dac565b610ff8565b61018e6102bf366004611d53565b61101e565b61021f6102d2366004611dac565b611113565b6102df61113b565b60405161019b91906120ff565b6101ff6102fa366004611dac565b61115f565b6101ff61030d366004611ade565b611187565b6101ca610320366004611bcb565b6111c2565b6101ca610333366004611dc4565b611624565b6102df6118ff565b600061034b82610ae9565b156103925760008281526020819052604090205473ffffffffffffffffffffffffffffffffffffffff848116911614610385576000610388565b60015b60ff1690506103c4565b50600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091529020545b92915050565b60056020526000908152604090205481565b73ffffffffffffffffffffffffffffffffffffffff8716610432576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104299061216a565b60405180910390fd5b84831461046b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610429906121a1565b73ffffffffffffffffffffffffffffffffffffffff88163314806104c4575073ffffffffffffffffffffffffffffffffffffffff8816600090815260026020908152604080832033845290915290205460ff1615156001145b6104fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104299061220d565b60005b8581101561075e57600087878381811061051357fe5b905060200201359050600086868481811061052a57fe5b90506020020135905061053c8261115f565b1561062c578060011461057b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042990612244565b60008281526020819052604090205473ffffffffffffffffffffffffffffffffffffffff8c81169116146105db576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610429906121d6565b600082815260208190526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8c16179055610754565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8f16845290915290205461066c908263ffffffff61192316565b6001600084815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610723816001600085815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461194790919063ffffffff16565b600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8f1684529091529020555b50506001016104fd565b508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb898989896040516107d9949392919061207f565b60405180910390a46108008773ffffffffffffffffffffffffffffffffffffffff16611963565b15610939576040517fbc197c8100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff89169063bc197c81906108689033908d908c908c908c908c908c908c90600401611fbd565b602060405180830381600087803b15801561088257600080fd5b505af1158015610896573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108ba9190810190611d13565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c810000000000000000000000000000000000000000000000000000000014610937576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042990612392565b505b5050505050505050565b606083821461097e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610429906122d8565b6040805185815260208087028201019091528480156109a7578160200160208202803883390190505b50905060005b84811015610ae05760008484838181106109c357fe5b9050602002013590506109d581610ae9565b15610a53578686838181106109e657fe5b90506020020160206109fb9190810190611ac3565b60008281526020819052604090205473ffffffffffffffffffffffffffffffffffffffff908116911614610a30576000610a33565b60015b60ff16838381518110610a4257fe5b602002602001018181525050610ad7565b600081815260016020526040812090888885818110610a6e57fe5b9050602002016020610a839190810190611ac3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054838381518110610aca57fe5b6020026020010181815250505b506001016109ad565b50949350505050565b60007f80000000000000000000000000000000000000000000000000000000000000008083161480156103c45750506fffffffffffffffffffffffffffffffff16151590565b60009081526020819052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b7fffffffffffffffffffffffffffffffff000000000000000000000000000000001690565b60007f80000000000000000000000000000000000000000000000000000000000000008083161480156103c45750506fffffffffffffffffffffffffffffffff161590565b600085815260046020526040902054859073ffffffffffffffffffffffffffffffffffffffff163314610bf357600080fd5b610bfc86610ff8565b610c32576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042990612335565b60005b84811015610e84576000868683818110610c4b57fe5b9050602002016020610c609190810190611ac3565b90506000858584818110610c7057fe5b60008c815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff89168452825290912054910292909201359250610cbb9183915063ffffffff61194716565b60008a815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832093909355915133907fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6290610d22908e9087906123d2565b60405180910390a4610d498273ffffffffffffffffffffffffffffffffffffffff16611963565b15610e7a576040517ff23a6e6100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff84169063f23a6e6190610da990339081908f908890600401611f78565b602060405180830381600087803b158015610dc357600080fd5b505af1158015610dd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610dfb9190810190611d13565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e610000000000000000000000000000000000000000000000000000000014610e78576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042990612392565b505b5050600101610c35565b50505050505050565b6fffffffffffffffffffffffffffffffff1690565b60008381526004602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000163390811790915590518291907fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6290610f1090889085906123d2565b60405180910390a48015610f5957827f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b8383604051610f5092919061214e565b60405180910390a25b505050565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff871680855292529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151517905590519091907f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3190610fec9085906120f4565b60405180910390a35050565b7f8000000000000000000000000000000000000000000000000000000000000000161590565b600380546001019081905560801b8115611055577f8000000000000000000000000000000000000000000000000000000000000000175b60008181526004602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000163390811790915590518291907fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62906110c390869085906123d2565b60405180910390a4821561110c57807f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b858560405161110392919061214e565b60405180910390a25b9392505050565b60046020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b7ff23a6e610000000000000000000000000000000000000000000000000000000081565b7f80000000000000000000000000000000000000000000000000000000000000009081161490565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205460ff1690565b73ffffffffffffffffffffffffffffffffffffffff851661120f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104299061216a565b73ffffffffffffffffffffffffffffffffffffffff8616331480611268575073ffffffffffffffffffffffffffffffffffffffff8616600090815260026020908152604080832033845290915290205460ff1615156001145b61129e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104299061220d565b6112a78461115f565b1561139757826001146112e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042990612244565b60008481526020819052604090205473ffffffffffffffffffffffffffffffffffffffff878116911614611346576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610429906121d6565b600084815260208190526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff871617905561144c565b600084815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8a1684529091529020546113d7908463ffffffff61192316565b600085815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8b8116855292528083209390935587168152205461141b9084611947565b600085815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8a1684529091529020555b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6287876040516114c29291906123d2565b60405180910390a46114e98573ffffffffffffffffffffffffffffffffffffffff16611963565b1561161c576040517ff23a6e6100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff87169063f23a6e619061154d9033908b908a908a908a908a9060040161202d565b602060405180830381600087803b15801561156757600080fd5b505af115801561157b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061159f9190810190611d13565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e610000000000000000000000000000000000000000000000000000000014610e84576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042990612392565b505050505050565b600083815260046020526040902054839073ffffffffffffffffffffffffffffffffffffffff16331461165657600080fd5b61165f8461115f565b611695576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104299061227b565b600084815260056020526040812054600101905b838110156118c55760008585838181106116bf57fe5b90506020020160206116d49190810190611ac3565b828401881760008181526020819052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86169081179091559051939450919233907fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62906117629086906001906123d2565b60405180910390a46117898273ffffffffffffffffffffffffffffffffffffffff16611963565b156118bb576040517ff23a6e6100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff84169063f23a6e61906117ea90339081908790600190600401611f78565b602060405180830381600087803b15801561180457600080fd5b505af1158015611818573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061183c9190810190611d13565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e6100000000000000000000000000000000000000000000000000000000146118b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042990612392565b505b50506001016116a9565b506000858152600560205260409020546118e690849063ffffffff61194716565b6000958652600560205260409095209490945550505050565b7fbc197c810000000000000000000000000000000000000000000000000000000081565b6000828211156119415761194161193c60028585611969565b611a0e565b50900390565b60008282018381101561110c5761110c61193c60008686611969565b3b151590565b606063e946c1bb60e01b8484846040516024016119889392919061212c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290509392505050565b805160208201fd5b803573ffffffffffffffffffffffffffffffffffffffff811681146103c457600080fd5b60008083601f840112611a4b578182fd5b50813567ffffffffffffffff811115611a62578182fd5b6020830191508360208083028501011115611a7c57600080fd5b9250929050565b60008083601f840112611a94578182fd5b50813567ffffffffffffffff811115611aab578182fd5b602083019150836020828501011115611a7c57600080fd5b600060208284031215611ad4578081fd5b61110c8383611a16565b60008060408385031215611af0578081fd5b611afa8484611a16565b9150611b098460208501611a16565b90509250929050565b60008060008060008060008060a0898b031215611b2d578384fd5b611b378a8a611a16565b9750611b468a60208b01611a16565b9650604089013567ffffffffffffffff80821115611b62578586fd5b611b6e8c838d01611a3a565b909850965060608b0135915080821115611b86578586fd5b611b928c838d01611a3a565b909650945060808b0135915080821115611baa578384fd5b50611bb78b828c01611a83565b999c989b5096995094979396929594505050565b60008060008060008060a08789031215611be3578182fd5b8635611bee816123e0565b95506020870135611bfe816123e0565b94506040870135935060608701359250608087013567ffffffffffffffff811115611c27578283fd5b611c3389828a01611a83565b979a9699509497509295939492505050565b60008060408385031215611c57578182fd5b611c618484611a16565b915060208301358015158114611c75578182fd5b809150509250929050565b60008060408385031215611c92578182fd5b611c9c8484611a16565b946020939093013593505050565b60008060008060408587031215611cbf578384fd5b843567ffffffffffffffff80821115611cd6578586fd5b611ce288838901611a3a565b90965094506020870135915080821115611cfa578384fd5b50611d0787828801611a3a565b95989497509550505050565b600060208284031215611d24578081fd5b81517fffffffff000000000000000000000000000000000000000000000000000000008116811461110c578182fd5b600080600060408486031215611d67578283fd5b833567ffffffffffffffff811115611d7d578384fd5b611d8986828701611a83565b90945092505060208401358015158114611da1578182fd5b809150509250925092565b600060208284031215611dbd578081fd5b5035919050565b600080600060408486031215611dd8578283fd5b83359250602084013567ffffffffffffffff811115611df5578283fd5b611e0186828701611a3a565b9497909650939450505050565b600080600080600060608688031215611e25578081fd5b85359450602086013567ffffffffffffffff80821115611e43578283fd5b611e4f89838a01611a3a565b90965094506040880135915080821115611e67578283fd5b50611e7488828901611a3a565b969995985093965092949392505050565b600080600060408486031215611e99578081fd5b83359250602084013567ffffffffffffffff811115611eb6578182fd5b611e0186828701611a83565b60008284527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115611ef3578081fd5b6020830280836020870137939093016020019283525090919050565b600082845282826020860137806020848601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85011685010190509392505050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff94851681529290931660208301526040820152606081019190915260a06080820181905260009082015260c00190565b600073ffffffffffffffffffffffffffffffffffffffff808b168352808a1660208401525060a06040830152611ff760a08301888a611ec2565b828103606084015261200a818789611ec2565b838103608085015261201d818688611f0f565b9c9b505050505050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015260a0608083015261207360a083018486611f0f565b98975050505050505050565b600060408252612093604083018688611ec2565b82810360208401526120a6818587611ec2565b979650505050505050565b602080825282518282018190526000918401906040840190835b818110156120e95783518352602093840193909201916001016120cb565b509095945050505050565b901515815260200190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b606081016004851061213a57fe5b938152602081019290925260409091015290565b600060208252612162602083018486611f0f565b949350505050565b6020808252601f908201527f43414e4e4f545f5452414e534645525f544f5f414444524553535f5a45524f00604082015260600190565b6020808252818101527f544f4b454e5f414e445f56414c5545535f4c454e4754485f4d49534d41544348604082015260600190565b6020808252601d908201527f4e46545f4e4f545f4f574e45445f42595f46524f4d5f41444452455353000000604082015260600190565b60208082526016908201527f494e53554646494349454e545f414c4c4f57414e434500000000000000000000604082015260600190565b6020808252601c908201527f414d4f554e545f455155414c5f544f5f4f4e455f524551554952454400000000604082015260600190565b6020808252602d908201527f54524945445f544f5f4d494e545f4e4f4e5f46554e4749424c455f464f525f4660408201527f554e4749424c455f544f4b454e00000000000000000000000000000000000000606082015260800190565b60208082526024908201527f4f574e4552535f414e445f4944535f4d5553545f484156455f53414d455f4c4560408201527f4e47544800000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252602d908201527f54524945445f544f5f4d494e545f46554e4749424c455f464f525f4e4f4e5f4660408201527f554e4749424c455f544f4b454e00000000000000000000000000000000000000606082015260800190565b60208082526019908201527f4241445f52454345495645525f52455455524e5f56414c554500000000000000604082015260600190565b90815260200190565b918252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff8116811461240257600080fd5b5056fea365627a7a7231582025f4d82583e61cdd5f7ad8ca3b78797db282a0a66d2072f985f6981a2b734d226c6578706572696d656e74616cf564736f6c63430005110040" }, "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b50600436106101765760003560e01c80639f4b286a116100d8578063e0a5c9491161008c578063f242432a11610066578063f242432a14610312578063f941908814610325578063fc67bf1c1461033857610176565b8063e0a5c949146102d7578063e44591f0146102ec578063e985e9c5146102ff57610176565b8063adebf6f2116100bd578063adebf6f21461029e578063cc10e401146102b1578063cd53d08e146102c457610176565b80639f4b286a14610278578063a22cb4651461028b57610176565b80636352211e1161012f5780637269a327116101145780637269a3271461023f57806378b27221146102525780639cca1c641461026557610176565b80636352211e1461020c5780636f969c2d1461022c57610176565b80632eb2c2d6116101605780632eb2c2d6146101b75780634e1273f4146101cc5780635e81b958146101ec57610176565b8062fdd58e1461017b57806308d7d469146101a4575b600080fd5b61018e610189366004611c80565b610340565b60405161019b91906123c9565b60405180910390f35b61018e6101b2366004611dac565b6103ca565b6101ca6101c5366004611b12565b6103dc565b005b6101df6101da366004611caa565b610943565b60405161019b91906120b1565b6101ff6101fa366004611dac565b610ae9565b60405161019b91906120f4565b61021f61021a366004611dac565b610b2f565b60405161019b9190611f57565b61018e61023a366004611dac565b610b57565b6101ff61024d366004611dac565b610b7c565b6101ca610260366004611e0e565b610bc1565b61018e610273366004611dac565b610e8d565b6101ca610286366004611e85565b610ea2565b6101ca610299366004611c45565b610f5e565b6101ff6102ac366004611dac565b610ff8565b61018e6102bf366004611d53565b61101e565b61021f6102d2366004611dac565b611113565b6102df61113b565b60405161019b91906120ff565b6101ff6102fa366004611dac565b61115f565b6101ff61030d366004611ade565b611187565b6101ca610320366004611bcb565b6111c2565b6101ca610333366004611dc4565b611624565b6102df6118ff565b600061034b82610ae9565b156103925760008281526020819052604090205473ffffffffffffffffffffffffffffffffffffffff848116911614610385576000610388565b60015b60ff1690506103c4565b50600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091529020545b92915050565b60056020526000908152604090205481565b73ffffffffffffffffffffffffffffffffffffffff8716610432576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104299061216a565b60405180910390fd5b84831461046b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610429906121a1565b73ffffffffffffffffffffffffffffffffffffffff88163314806104c4575073ffffffffffffffffffffffffffffffffffffffff8816600090815260026020908152604080832033845290915290205460ff1615156001145b6104fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104299061220d565b60005b8581101561075e57600087878381811061051357fe5b905060200201359050600086868481811061052a57fe5b90506020020135905061053c8261115f565b1561062c578060011461057b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042990612244565b60008281526020819052604090205473ffffffffffffffffffffffffffffffffffffffff8c81169116146105db576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610429906121d6565b600082815260208190526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8c16179055610754565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8f16845290915290205461066c908263ffffffff61192316565b6001600084815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610723816001600085815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461194790919063ffffffff16565b600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8f1684529091529020555b50506001016104fd565b508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb898989896040516107d9949392919061207f565b60405180910390a46108008773ffffffffffffffffffffffffffffffffffffffff16611963565b15610939576040517fbc197c8100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff89169063bc197c81906108689033908d908c908c908c908c908c908c90600401611fbd565b602060405180830381600087803b15801561088257600080fd5b505af1158015610896573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108ba9190810190611d13565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c810000000000000000000000000000000000000000000000000000000014610937576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042990612392565b505b5050505050505050565b606083821461097e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610429906122d8565b6040805185815260208087028201019091528480156109a7578160200160208202803883390190505b50905060005b84811015610ae05760008484838181106109c357fe5b9050602002013590506109d581610ae9565b15610a53578686838181106109e657fe5b90506020020160206109fb9190810190611ac3565b60008281526020819052604090205473ffffffffffffffffffffffffffffffffffffffff908116911614610a30576000610a33565b60015b60ff16838381518110610a4257fe5b602002602001018181525050610ad7565b600081815260016020526040812090888885818110610a6e57fe5b9050602002016020610a839190810190611ac3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054838381518110610aca57fe5b6020026020010181815250505b506001016109ad565b50949350505050565b60007f80000000000000000000000000000000000000000000000000000000000000008083161480156103c45750506fffffffffffffffffffffffffffffffff16151590565b60009081526020819052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b7fffffffffffffffffffffffffffffffff000000000000000000000000000000001690565b60007f80000000000000000000000000000000000000000000000000000000000000008083161480156103c45750506fffffffffffffffffffffffffffffffff161590565b600085815260046020526040902054859073ffffffffffffffffffffffffffffffffffffffff163314610bf357600080fd5b610bfc86610ff8565b610c32576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042990612335565b60005b84811015610e84576000868683818110610c4b57fe5b9050602002016020610c609190810190611ac3565b90506000858584818110610c7057fe5b60008c815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff89168452825290912054910292909201359250610cbb9183915063ffffffff61194716565b60008a815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832093909355915133907fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6290610d22908e9087906123d2565b60405180910390a4610d498273ffffffffffffffffffffffffffffffffffffffff16611963565b15610e7a576040517ff23a6e6100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff84169063f23a6e6190610da990339081908f908890600401611f78565b602060405180830381600087803b158015610dc357600080fd5b505af1158015610dd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610dfb9190810190611d13565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e610000000000000000000000000000000000000000000000000000000014610e78576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042990612392565b505b5050600101610c35565b50505050505050565b6fffffffffffffffffffffffffffffffff1690565b60008381526004602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000163390811790915590518291907fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6290610f1090889085906123d2565b60405180910390a48015610f5957827f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b8383604051610f5092919061214e565b60405180910390a25b505050565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff871680855292529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151517905590519091907f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3190610fec9085906120f4565b60405180910390a35050565b7f8000000000000000000000000000000000000000000000000000000000000000161590565b600380546001019081905560801b8115611055577f8000000000000000000000000000000000000000000000000000000000000000175b60008181526004602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000163390811790915590518291907fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62906110c390869085906123d2565b60405180910390a4821561110c57807f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b858560405161110392919061214e565b60405180910390a25b9392505050565b60046020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b7ff23a6e610000000000000000000000000000000000000000000000000000000081565b7f80000000000000000000000000000000000000000000000000000000000000009081161490565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205460ff1690565b73ffffffffffffffffffffffffffffffffffffffff851661120f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104299061216a565b73ffffffffffffffffffffffffffffffffffffffff8616331480611268575073ffffffffffffffffffffffffffffffffffffffff8616600090815260026020908152604080832033845290915290205460ff1615156001145b61129e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104299061220d565b6112a78461115f565b1561139757826001146112e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042990612244565b60008481526020819052604090205473ffffffffffffffffffffffffffffffffffffffff878116911614611346576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610429906121d6565b600084815260208190526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff871617905561144c565b600084815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8a1684529091529020546113d7908463ffffffff61192316565b600085815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8b8116855292528083209390935587168152205461141b9084611947565b600085815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8a1684529091529020555b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6287876040516114c29291906123d2565b60405180910390a46114e98573ffffffffffffffffffffffffffffffffffffffff16611963565b1561161c576040517ff23a6e6100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff87169063f23a6e619061154d9033908b908a908a908a908a9060040161202d565b602060405180830381600087803b15801561156757600080fd5b505af115801561157b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061159f9190810190611d13565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e610000000000000000000000000000000000000000000000000000000014610e84576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042990612392565b505050505050565b600083815260046020526040902054839073ffffffffffffffffffffffffffffffffffffffff16331461165657600080fd5b61165f8461115f565b611695576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104299061227b565b600084815260056020526040812054600101905b838110156118c55760008585838181106116bf57fe5b90506020020160206116d49190810190611ac3565b828401881760008181526020819052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86169081179091559051939450919233907fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62906117629086906001906123d2565b60405180910390a46117898273ffffffffffffffffffffffffffffffffffffffff16611963565b156118bb576040517ff23a6e6100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff84169063f23a6e61906117ea90339081908790600190600401611f78565b602060405180830381600087803b15801561180457600080fd5b505af1158015611818573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061183c9190810190611d13565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e6100000000000000000000000000000000000000000000000000000000146118b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042990612392565b505b50506001016116a9565b506000858152600560205260409020546118e690849063ffffffff61194716565b6000958652600560205260409095209490945550505050565b7fbc197c810000000000000000000000000000000000000000000000000000000081565b6000828211156119415761194161193c60028585611969565b611a0e565b50900390565b60008282018381101561110c5761110c61193c60008686611969565b3b151590565b606063e946c1bb60e01b8484846040516024016119889392919061212c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290509392505050565b805160208201fd5b803573ffffffffffffffffffffffffffffffffffffffff811681146103c457600080fd5b60008083601f840112611a4b578182fd5b50813567ffffffffffffffff811115611a62578182fd5b6020830191508360208083028501011115611a7c57600080fd5b9250929050565b60008083601f840112611a94578182fd5b50813567ffffffffffffffff811115611aab578182fd5b602083019150836020828501011115611a7c57600080fd5b600060208284031215611ad4578081fd5b61110c8383611a16565b60008060408385031215611af0578081fd5b611afa8484611a16565b9150611b098460208501611a16565b90509250929050565b60008060008060008060008060a0898b031215611b2d578384fd5b611b378a8a611a16565b9750611b468a60208b01611a16565b9650604089013567ffffffffffffffff80821115611b62578586fd5b611b6e8c838d01611a3a565b909850965060608b0135915080821115611b86578586fd5b611b928c838d01611a3a565b909650945060808b0135915080821115611baa578384fd5b50611bb78b828c01611a83565b999c989b5096995094979396929594505050565b60008060008060008060a08789031215611be3578182fd5b8635611bee816123e0565b95506020870135611bfe816123e0565b94506040870135935060608701359250608087013567ffffffffffffffff811115611c27578283fd5b611c3389828a01611a83565b979a9699509497509295939492505050565b60008060408385031215611c57578182fd5b611c618484611a16565b915060208301358015158114611c75578182fd5b809150509250929050565b60008060408385031215611c92578182fd5b611c9c8484611a16565b946020939093013593505050565b60008060008060408587031215611cbf578384fd5b843567ffffffffffffffff80821115611cd6578586fd5b611ce288838901611a3a565b90965094506020870135915080821115611cfa578384fd5b50611d0787828801611a3a565b95989497509550505050565b600060208284031215611d24578081fd5b81517fffffffff000000000000000000000000000000000000000000000000000000008116811461110c578182fd5b600080600060408486031215611d67578283fd5b833567ffffffffffffffff811115611d7d578384fd5b611d8986828701611a83565b90945092505060208401358015158114611da1578182fd5b809150509250925092565b600060208284031215611dbd578081fd5b5035919050565b600080600060408486031215611dd8578283fd5b83359250602084013567ffffffffffffffff811115611df5578283fd5b611e0186828701611a3a565b9497909650939450505050565b600080600080600060608688031215611e25578081fd5b85359450602086013567ffffffffffffffff80821115611e43578283fd5b611e4f89838a01611a3a565b90965094506040880135915080821115611e67578283fd5b50611e7488828901611a3a565b969995985093965092949392505050565b600080600060408486031215611e99578081fd5b83359250602084013567ffffffffffffffff811115611eb6578182fd5b611e0186828701611a83565b60008284527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115611ef3578081fd5b6020830280836020870137939093016020019283525090919050565b600082845282826020860137806020848601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85011685010190509392505050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff94851681529290931660208301526040820152606081019190915260a06080820181905260009082015260c00190565b600073ffffffffffffffffffffffffffffffffffffffff808b168352808a1660208401525060a06040830152611ff760a08301888a611ec2565b828103606084015261200a818789611ec2565b838103608085015261201d818688611f0f565b9c9b505050505050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015260a0608083015261207360a083018486611f0f565b98975050505050505050565b600060408252612093604083018688611ec2565b82810360208401526120a6818587611ec2565b979650505050505050565b602080825282518282018190526000918401906040840190835b818110156120e95783518352602093840193909201916001016120cb565b509095945050505050565b901515815260200190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b606081016004851061213a57fe5b938152602081019290925260409091015290565b600060208252612162602083018486611f0f565b949350505050565b6020808252601f908201527f43414e4e4f545f5452414e534645525f544f5f414444524553535f5a45524f00604082015260600190565b6020808252818101527f544f4b454e5f414e445f56414c5545535f4c454e4754485f4d49534d41544348604082015260600190565b6020808252601d908201527f4e46545f4e4f545f4f574e45445f42595f46524f4d5f41444452455353000000604082015260600190565b60208082526016908201527f494e53554646494349454e545f414c4c4f57414e434500000000000000000000604082015260600190565b6020808252601c908201527f414d4f554e545f455155414c5f544f5f4f4e455f524551554952454400000000604082015260600190565b6020808252602d908201527f54524945445f544f5f4d494e545f4e4f4e5f46554e4749424c455f464f525f4660408201527f554e4749424c455f544f4b454e00000000000000000000000000000000000000606082015260800190565b60208082526024908201527f4f574e4552535f414e445f4944535f4d5553545f484156455f53414d455f4c4560408201527f4e47544800000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252602d908201527f54524945445f544f5f4d494e545f46554e4749424c455f464f525f4e4f4e5f4660408201527f554e4749424c455f544f4b454e00000000000000000000000000000000000000606082015260800190565b60208082526019908201527f4241445f52454345495645525f52455455524e5f56414c554500000000000000604082015260600190565b90815260200190565b918252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff8116811461240257600080fd5b5056fea365627a7a723158201ee52511037fd21c6670dcd6401daeac26f62a6afdc23addc02ff5cf826773246c6578706572696d656e74616cf564736f6c63430005110040" + "object": "0x608060405234801561001057600080fd5b50600436106101765760003560e01c80639f4b286a116100d8578063e0a5c9491161008c578063f242432a11610066578063f242432a14610312578063f941908814610325578063fc67bf1c1461033857610176565b8063e0a5c949146102d7578063e44591f0146102ec578063e985e9c5146102ff57610176565b8063adebf6f2116100bd578063adebf6f21461029e578063cc10e401146102b1578063cd53d08e146102c457610176565b80639f4b286a14610278578063a22cb4651461028b57610176565b80636352211e1161012f5780637269a327116101145780637269a3271461023f57806378b27221146102525780639cca1c641461026557610176565b80636352211e1461020c5780636f969c2d1461022c57610176565b80632eb2c2d6116101605780632eb2c2d6146101b75780634e1273f4146101cc5780635e81b958146101ec57610176565b8062fdd58e1461017b57806308d7d469146101a4575b600080fd5b61018e610189366004611c80565b610340565b60405161019b91906123c9565b60405180910390f35b61018e6101b2366004611dac565b6103ca565b6101ca6101c5366004611b12565b6103dc565b005b6101df6101da366004611caa565b610943565b60405161019b91906120b1565b6101ff6101fa366004611dac565b610ae9565b60405161019b91906120f4565b61021f61021a366004611dac565b610b2f565b60405161019b9190611f57565b61018e61023a366004611dac565b610b57565b6101ff61024d366004611dac565b610b7c565b6101ca610260366004611e0e565b610bc1565b61018e610273366004611dac565b610e8d565b6101ca610286366004611e85565b610ea2565b6101ca610299366004611c45565b610f5e565b6101ff6102ac366004611dac565b610ff8565b61018e6102bf366004611d53565b61101e565b61021f6102d2366004611dac565b611113565b6102df61113b565b60405161019b91906120ff565b6101ff6102fa366004611dac565b61115f565b6101ff61030d366004611ade565b611187565b6101ca610320366004611bcb565b6111c2565b6101ca610333366004611dc4565b611624565b6102df6118ff565b600061034b82610ae9565b156103925760008281526020819052604090205473ffffffffffffffffffffffffffffffffffffffff848116911614610385576000610388565b60015b60ff1690506103c4565b50600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091529020545b92915050565b60056020526000908152604090205481565b73ffffffffffffffffffffffffffffffffffffffff8716610432576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104299061216a565b60405180910390fd5b84831461046b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610429906121a1565b73ffffffffffffffffffffffffffffffffffffffff88163314806104c4575073ffffffffffffffffffffffffffffffffffffffff8816600090815260026020908152604080832033845290915290205460ff1615156001145b6104fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104299061220d565b60005b8581101561075e57600087878381811061051357fe5b905060200201359050600086868481811061052a57fe5b90506020020135905061053c8261115f565b1561062c578060011461057b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042990612244565b60008281526020819052604090205473ffffffffffffffffffffffffffffffffffffffff8c81169116146105db576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610429906121d6565b600082815260208190526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8c16179055610754565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8f16845290915290205461066c908263ffffffff61192316565b6001600084815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610723816001600085815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461194790919063ffffffff16565b600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8f1684529091529020555b50506001016104fd565b508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb898989896040516107d9949392919061207f565b60405180910390a46108008773ffffffffffffffffffffffffffffffffffffffff16611963565b15610939576040517fbc197c8100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff89169063bc197c81906108689033908d908c908c908c908c908c908c90600401611fbd565b602060405180830381600087803b15801561088257600080fd5b505af1158015610896573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108ba9190810190611d13565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c810000000000000000000000000000000000000000000000000000000014610937576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042990612392565b505b5050505050505050565b606083821461097e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610429906122d8565b6040805185815260208087028201019091528480156109a7578160200160208202803883390190505b50905060005b84811015610ae05760008484838181106109c357fe5b9050602002013590506109d581610ae9565b15610a53578686838181106109e657fe5b90506020020160206109fb9190810190611ac3565b60008281526020819052604090205473ffffffffffffffffffffffffffffffffffffffff908116911614610a30576000610a33565b60015b60ff16838381518110610a4257fe5b602002602001018181525050610ad7565b600081815260016020526040812090888885818110610a6e57fe5b9050602002016020610a839190810190611ac3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054838381518110610aca57fe5b6020026020010181815250505b506001016109ad565b50949350505050565b60007f80000000000000000000000000000000000000000000000000000000000000008083161480156103c45750506fffffffffffffffffffffffffffffffff16151590565b60009081526020819052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b7fffffffffffffffffffffffffffffffff000000000000000000000000000000001690565b60007f80000000000000000000000000000000000000000000000000000000000000008083161480156103c45750506fffffffffffffffffffffffffffffffff161590565b600085815260046020526040902054859073ffffffffffffffffffffffffffffffffffffffff163314610bf357600080fd5b610bfc86610ff8565b610c32576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042990612335565b60005b84811015610e84576000868683818110610c4b57fe5b9050602002016020610c609190810190611ac3565b90506000858584818110610c7057fe5b60008c815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff89168452825290912054910292909201359250610cbb9183915063ffffffff61194716565b60008a815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832093909355915133907fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6290610d22908e9087906123d2565b60405180910390a4610d498273ffffffffffffffffffffffffffffffffffffffff16611963565b15610e7a576040517ff23a6e6100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff84169063f23a6e6190610da990339081908f908890600401611f78565b602060405180830381600087803b158015610dc357600080fd5b505af1158015610dd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610dfb9190810190611d13565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e610000000000000000000000000000000000000000000000000000000014610e78576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042990612392565b505b5050600101610c35565b50505050505050565b6fffffffffffffffffffffffffffffffff1690565b60008381526004602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000163390811790915590518291907fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6290610f1090889085906123d2565b60405180910390a48015610f5957827f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b8383604051610f5092919061214e565b60405180910390a25b505050565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff871680855292529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151517905590519091907f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3190610fec9085906120f4565b60405180910390a35050565b7f8000000000000000000000000000000000000000000000000000000000000000161590565b600380546001019081905560801b8115611055577f8000000000000000000000000000000000000000000000000000000000000000175b60008181526004602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000163390811790915590518291907fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62906110c390869085906123d2565b60405180910390a4821561110c57807f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b858560405161110392919061214e565b60405180910390a25b9392505050565b60046020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b7ff23a6e610000000000000000000000000000000000000000000000000000000081565b7f80000000000000000000000000000000000000000000000000000000000000009081161490565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205460ff1690565b73ffffffffffffffffffffffffffffffffffffffff851661120f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104299061216a565b73ffffffffffffffffffffffffffffffffffffffff8616331480611268575073ffffffffffffffffffffffffffffffffffffffff8616600090815260026020908152604080832033845290915290205460ff1615156001145b61129e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104299061220d565b6112a78461115f565b1561139757826001146112e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042990612244565b60008481526020819052604090205473ffffffffffffffffffffffffffffffffffffffff878116911614611346576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610429906121d6565b600084815260208190526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff871617905561144c565b600084815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8a1684529091529020546113d7908463ffffffff61192316565b600085815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8b8116855292528083209390935587168152205461141b9084611947565b600085815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8a1684529091529020555b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6287876040516114c29291906123d2565b60405180910390a46114e98573ffffffffffffffffffffffffffffffffffffffff16611963565b1561161c576040517ff23a6e6100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff87169063f23a6e619061154d9033908b908a908a908a908a9060040161202d565b602060405180830381600087803b15801561156757600080fd5b505af115801561157b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061159f9190810190611d13565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e610000000000000000000000000000000000000000000000000000000014610e84576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042990612392565b505050505050565b600083815260046020526040902054839073ffffffffffffffffffffffffffffffffffffffff16331461165657600080fd5b61165f8461115f565b611695576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104299061227b565b600084815260056020526040812054600101905b838110156118c55760008585838181106116bf57fe5b90506020020160206116d49190810190611ac3565b828401881760008181526020819052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86169081179091559051939450919233907fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62906117629086906001906123d2565b60405180910390a46117898273ffffffffffffffffffffffffffffffffffffffff16611963565b156118bb576040517ff23a6e6100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff84169063f23a6e61906117ea90339081908790600190600401611f78565b602060405180830381600087803b15801561180457600080fd5b505af1158015611818573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061183c9190810190611d13565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e6100000000000000000000000000000000000000000000000000000000146118b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042990612392565b505b50506001016116a9565b506000858152600560205260409020546118e690849063ffffffff61194716565b6000958652600560205260409095209490945550505050565b7fbc197c810000000000000000000000000000000000000000000000000000000081565b6000828211156119415761194161193c60028585611969565b611a0e565b50900390565b60008282018381101561110c5761110c61193c60008686611969565b3b151590565b606063e946c1bb60e01b8484846040516024016119889392919061212c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290509392505050565b805160208201fd5b803573ffffffffffffffffffffffffffffffffffffffff811681146103c457600080fd5b60008083601f840112611a4b578182fd5b50813567ffffffffffffffff811115611a62578182fd5b6020830191508360208083028501011115611a7c57600080fd5b9250929050565b60008083601f840112611a94578182fd5b50813567ffffffffffffffff811115611aab578182fd5b602083019150836020828501011115611a7c57600080fd5b600060208284031215611ad4578081fd5b61110c8383611a16565b60008060408385031215611af0578081fd5b611afa8484611a16565b9150611b098460208501611a16565b90509250929050565b60008060008060008060008060a0898b031215611b2d578384fd5b611b378a8a611a16565b9750611b468a60208b01611a16565b9650604089013567ffffffffffffffff80821115611b62578586fd5b611b6e8c838d01611a3a565b909850965060608b0135915080821115611b86578586fd5b611b928c838d01611a3a565b909650945060808b0135915080821115611baa578384fd5b50611bb78b828c01611a83565b999c989b5096995094979396929594505050565b60008060008060008060a08789031215611be3578182fd5b8635611bee816123e0565b95506020870135611bfe816123e0565b94506040870135935060608701359250608087013567ffffffffffffffff811115611c27578283fd5b611c3389828a01611a83565b979a9699509497509295939492505050565b60008060408385031215611c57578182fd5b611c618484611a16565b915060208301358015158114611c75578182fd5b809150509250929050565b60008060408385031215611c92578182fd5b611c9c8484611a16565b946020939093013593505050565b60008060008060408587031215611cbf578384fd5b843567ffffffffffffffff80821115611cd6578586fd5b611ce288838901611a3a565b90965094506020870135915080821115611cfa578384fd5b50611d0787828801611a3a565b95989497509550505050565b600060208284031215611d24578081fd5b81517fffffffff000000000000000000000000000000000000000000000000000000008116811461110c578182fd5b600080600060408486031215611d67578283fd5b833567ffffffffffffffff811115611d7d578384fd5b611d8986828701611a83565b90945092505060208401358015158114611da1578182fd5b809150509250925092565b600060208284031215611dbd578081fd5b5035919050565b600080600060408486031215611dd8578283fd5b83359250602084013567ffffffffffffffff811115611df5578283fd5b611e0186828701611a3a565b9497909650939450505050565b600080600080600060608688031215611e25578081fd5b85359450602086013567ffffffffffffffff80821115611e43578283fd5b611e4f89838a01611a3a565b90965094506040880135915080821115611e67578283fd5b50611e7488828901611a3a565b969995985093965092949392505050565b600080600060408486031215611e99578081fd5b83359250602084013567ffffffffffffffff811115611eb6578182fd5b611e0186828701611a83565b60008284527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115611ef3578081fd5b6020830280836020870137939093016020019283525090919050565b600082845282826020860137806020848601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85011685010190509392505050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff94851681529290931660208301526040820152606081019190915260a06080820181905260009082015260c00190565b600073ffffffffffffffffffffffffffffffffffffffff808b168352808a1660208401525060a06040830152611ff760a08301888a611ec2565b828103606084015261200a818789611ec2565b838103608085015261201d818688611f0f565b9c9b505050505050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015260a0608083015261207360a083018486611f0f565b98975050505050505050565b600060408252612093604083018688611ec2565b82810360208401526120a6818587611ec2565b979650505050505050565b602080825282518282018190526000918401906040840190835b818110156120e95783518352602093840193909201916001016120cb565b509095945050505050565b901515815260200190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b606081016004851061213a57fe5b938152602081019290925260409091015290565b600060208252612162602083018486611f0f565b949350505050565b6020808252601f908201527f43414e4e4f545f5452414e534645525f544f5f414444524553535f5a45524f00604082015260600190565b6020808252818101527f544f4b454e5f414e445f56414c5545535f4c454e4754485f4d49534d41544348604082015260600190565b6020808252601d908201527f4e46545f4e4f545f4f574e45445f42595f46524f4d5f41444452455353000000604082015260600190565b60208082526016908201527f494e53554646494349454e545f414c4c4f57414e434500000000000000000000604082015260600190565b6020808252601c908201527f414d4f554e545f455155414c5f544f5f4f4e455f524551554952454400000000604082015260600190565b6020808252602d908201527f54524945445f544f5f4d494e545f4e4f4e5f46554e4749424c455f464f525f4660408201527f554e4749424c455f544f4b454e00000000000000000000000000000000000000606082015260800190565b60208082526024908201527f4f574e4552535f414e445f4944535f4d5553545f484156455f53414d455f4c4560408201527f4e47544800000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252602d908201527f54524945445f544f5f4d494e545f46554e4749424c455f464f525f4e4f4e5f4660408201527f554e4749424c455f544f4b454e00000000000000000000000000000000000000606082015260800190565b60208082526019908201527f4241445f52454345495645525f52455455524e5f56414c554500000000000000604082015260600190565b90815260200190565b918252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff8116811461240257600080fd5b5056fea365627a7a7231582025f4d82583e61cdd5f7ad8ca3b78797db282a0a66d2072f985f6981a2b734d226c6578706572696d656e74616cf564736f6c63430005110040" } } }, "compiler": { "name": "solc", - "version": "soljson-v0.5.17+commit.d19bba13.js", + "version": "0.5.17+commit.d19bba13", "settings": { "optimizer": { "enabled": true, diff --git a/packages/contract-artifacts/artifacts/ERC1155Proxy.json b/packages/contract-artifacts/artifacts/ERC1155Proxy.json index da923e2fdc..0cd94e1ab2 100644 --- a/packages/contract-artifacts/artifacts/ERC1155Proxy.json +++ b/packages/contract-artifacts/artifacts/ERC1155Proxy.json @@ -167,10 +167,10 @@ }, "evm": { "bytecode": { - "object": "0x6080604052600080546001600160a01b031916331790556114bc806100256000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c8063a85e59e411610076578063b91816111161005b578063b918161114610285578063d39de6e9146102cc578063f2fde38b14610324576100be565b8063a85e59e4146101b2578063ae25532e14610248576100be565b806370712939116100a7578063707129391461013e5780638da5cb5b146101715780639ad2674414610179576100be565b806342f1181e146100c3578063494503d4146100f8575b600080fd5b6100f6600480360360208110156100d957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610357565b005b6101156004803603602081101561010e57600080fd5b5035610543565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100f66004803603602081101561015457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610577565b61011561086a565b6100f66004803603604081101561018f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610886565b6100f6600480360360808110156101c857600080fd5b8101906020810181356401000000008111156101e357600080fd5b8201836020820111156101f557600080fd5b8035906020019184600183028401116401000000008311171561021757600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610c37565b610250611141565b604080517fffffffff000000000000000000000000000000000000000000000000000000009092168252519081900360200190f35b6102b86004803603602081101561029b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611162565b604080519115158252519081900360200190f35b6102d4611177565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156103105781810151838201526020016102f8565b505050509050019250505060405180910390f35b6100f66004803603602081101561033a57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166111e6565b60005473ffffffffffffffffffffffffffffffffffffffff1633146103dd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff161561047257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f5441524745545f414c52454144595f415554484f52495a454400000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168317905560028054928301815583527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001684179055513392917f3147867c59d17e8fa9d522465651d44aae0a9e38f902f3475b97e58072f0ed4c91a350565b6002818154811061055057fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b60005473ffffffffffffffffffffffffffffffffffffffff1633146105fd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff1661069157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f5441524745545f4e4f545f415554484f52495a45440000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116600090815260016020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555b600254811015610823578173ffffffffffffffffffffffffffffffffffffffff166002828154811061070b57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16141561081b57600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810190811061076357fe5b6000918252602090912001546002805473ffffffffffffffffffffffffffffffffffffffff909216918390811061079657fe5b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01906108159082611410565b50610823565b6001016106dd565b50604051339073ffffffffffffffffffffffffffffffffffffffff8316907f1f32c1b084e2de0713b8fb16bd46bb9df710a3dbeae2f3ca93af46e016dcc6b090600090a350565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff16331461090c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205460ff166109a057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f5441524745545f4e4f545f415554484f52495a45440000000000000000000000604482015290519081900360640190fd5b6002548110610a1057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e4445585f4f55545f4f465f424f554e445300000000000000000000000000604482015290519081900360640190fd5b8173ffffffffffffffffffffffffffffffffffffffff1660028281548110610a3457fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1614610ac257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f415554484f52495a45445f414444524553535f4d49534d415443480000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101908110610b3d57fe5b6000918252602090912001546002805473ffffffffffffffffffffffffffffffffffffffff9092169183908110610b7057fe5b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190610bef9082611410565b50604051339073ffffffffffffffffffffffffffffffffffffffff8416907f1f32c1b084e2de0713b8fb16bd46bb9df710a3dbeae2f3ca93af46e016dcc6b090600090a35050565b3360009081526001602052604090205460ff16610cb557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f53454e4445525f4e4f545f415554484f52495a45440000000000000000000000604482015290519081900360640190fd5b60006060806060610d0b60048a8a90508b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092949392505063ffffffff6112cc169050565b8060200190516080811015610d1f57600080fd5b815160208301805160405192949293830192919084640100000000821115610d4657600080fd5b908301906020820185811115610d5b57600080fd5b8251866020820283011164010000000082111715610d7857600080fd5b82525081516020918201928201910280838360005b83811015610da5578181015183820152602001610d8d565b5050505090500160405260200180516040519392919084640100000000821115610dce57600080fd5b908301906020820185811115610de357600080fd5b8251866020820283011164010000000082111715610e0057600080fd5b82525081516020918201928201910280838360005b83811015610e2d578181015183820152602001610e15565b5050505090500160405260200180516040519392919084640100000000821115610e5657600080fd5b908301906020820185811115610e6b57600080fd5b8251640100000000811182820188101715610e8557600080fd5b82525081516020918201929091019080838360005b83811015610eb2578181015183820152602001610e9a565b50505050905090810190601f168015610edf5780820380516001836020036101000a031916815260200191505b506040525050509350935093509350600082519050606081604051908082528060200260200182016040528015610f20578160200160208202803883390190505b50905060005b828114610f7257610f5388868381518110610f3d57fe5b602002602001015161130f90919063ffffffff16565b828281518110610f5f57fe5b6020908102919091010152600101610f26565b508573ffffffffffffffffffffffffffffffffffffffff16632eb2c2d68a8a8885886040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b8381101561104f578181015183820152602001611037565b50505050905001848103835286818151815260200191508051906020019060200280838360005b8381101561108e578181015183820152602001611076565b50505050905001848103825285818151815260200191508051906020019080838360005b838110156110ca5781810151838201526020016110b2565b50505050905090810190601f1680156110f75780820380516001836020036101000a031916815260200191505b5098505050505050505050600060405180830381600087803b15801561111c57600080fd5b505af1158015611130573d6000803e3d6000fd5b505050505050505050505050505050565b60006040518080611458603091396030019050604051809103902090505b90565b60016020526000908152604090205460ff1681565b606060028054806020026020016040519081016040528092919081815260200182805480156111dc57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116111b1575b5050505050905090565b60005473ffffffffffffffffffffffffffffffffffffffff16331461126c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116156112c957600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790555b50565b6060818311156112ea576112ea6112e560008585611349565b6113e8565b8351821115611303576113036112e56001848751611349565b50819003910190815290565b60008261131e57506000611343565b8282028284828161132b57fe5b0414611340576113406112e5600186866113f0565b90505b92915050565b6060632800659560e01b8484846040516024018084600781111561136957fe5b60ff1681526020018381526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090509392505050565b805160208201fd5b606063e946c1bb60e01b8484846040516024018084600381111561136957fe5b81548183558181111561143457600083815260209020611434918101908301611439565b505050565b61115f91905b80821115611453576000815560010161143f565b509056fe4552433131353541737365747328616464726573732c75696e743235365b5d2c75696e743235365b5d2c627974657329a265627a7a72315820ab23c6179cd8f3e1ee6b07cd4de12728ecf85693686b24490441dbc612b4612664736f6c63430005110032" + "object": "0x6080604052600080546001600160a01b031916331790556114bc806100256000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c8063a85e59e411610076578063b91816111161005b578063b918161114610285578063d39de6e9146102cc578063f2fde38b14610324576100be565b8063a85e59e4146101b2578063ae25532e14610248576100be565b806370712939116100a7578063707129391461013e5780638da5cb5b146101715780639ad2674414610179576100be565b806342f1181e146100c3578063494503d4146100f8575b600080fd5b6100f6600480360360208110156100d957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610357565b005b6101156004803603602081101561010e57600080fd5b5035610543565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100f66004803603602081101561015457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610577565b61011561086a565b6100f66004803603604081101561018f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610886565b6100f6600480360360808110156101c857600080fd5b8101906020810181356401000000008111156101e357600080fd5b8201836020820111156101f557600080fd5b8035906020019184600183028401116401000000008311171561021757600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610c37565b610250611141565b604080517fffffffff000000000000000000000000000000000000000000000000000000009092168252519081900360200190f35b6102b86004803603602081101561029b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611162565b604080519115158252519081900360200190f35b6102d4611177565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156103105781810151838201526020016102f8565b505050509050019250505060405180910390f35b6100f66004803603602081101561033a57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166111e6565b60005473ffffffffffffffffffffffffffffffffffffffff1633146103dd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff161561047257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f5441524745545f414c52454144595f415554484f52495a454400000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168317905560028054928301815583527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001684179055513392917f3147867c59d17e8fa9d522465651d44aae0a9e38f902f3475b97e58072f0ed4c91a350565b6002818154811061055057fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b60005473ffffffffffffffffffffffffffffffffffffffff1633146105fd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff1661069157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f5441524745545f4e4f545f415554484f52495a45440000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116600090815260016020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555b600254811015610823578173ffffffffffffffffffffffffffffffffffffffff166002828154811061070b57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16141561081b57600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810190811061076357fe5b6000918252602090912001546002805473ffffffffffffffffffffffffffffffffffffffff909216918390811061079657fe5b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01906108159082611410565b50610823565b6001016106dd565b50604051339073ffffffffffffffffffffffffffffffffffffffff8316907f1f32c1b084e2de0713b8fb16bd46bb9df710a3dbeae2f3ca93af46e016dcc6b090600090a350565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff16331461090c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205460ff166109a057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f5441524745545f4e4f545f415554484f52495a45440000000000000000000000604482015290519081900360640190fd5b6002548110610a1057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e4445585f4f55545f4f465f424f554e445300000000000000000000000000604482015290519081900360640190fd5b8173ffffffffffffffffffffffffffffffffffffffff1660028281548110610a3457fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1614610ac257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f415554484f52495a45445f414444524553535f4d49534d415443480000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101908110610b3d57fe5b6000918252602090912001546002805473ffffffffffffffffffffffffffffffffffffffff9092169183908110610b7057fe5b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190610bef9082611410565b50604051339073ffffffffffffffffffffffffffffffffffffffff8416907f1f32c1b084e2de0713b8fb16bd46bb9df710a3dbeae2f3ca93af46e016dcc6b090600090a35050565b3360009081526001602052604090205460ff16610cb557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f53454e4445525f4e4f545f415554484f52495a45440000000000000000000000604482015290519081900360640190fd5b60006060806060610d0b60048a8a90508b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092949392505063ffffffff6112cc169050565b8060200190516080811015610d1f57600080fd5b815160208301805160405192949293830192919084640100000000821115610d4657600080fd5b908301906020820185811115610d5b57600080fd5b8251866020820283011164010000000082111715610d7857600080fd5b82525081516020918201928201910280838360005b83811015610da5578181015183820152602001610d8d565b5050505090500160405260200180516040519392919084640100000000821115610dce57600080fd5b908301906020820185811115610de357600080fd5b8251866020820283011164010000000082111715610e0057600080fd5b82525081516020918201928201910280838360005b83811015610e2d578181015183820152602001610e15565b5050505090500160405260200180516040519392919084640100000000821115610e5657600080fd5b908301906020820185811115610e6b57600080fd5b8251640100000000811182820188101715610e8557600080fd5b82525081516020918201929091019080838360005b83811015610eb2578181015183820152602001610e9a565b50505050905090810190601f168015610edf5780820380516001836020036101000a031916815260200191505b506040525050509350935093509350600082519050606081604051908082528060200260200182016040528015610f20578160200160208202803883390190505b50905060005b828114610f7257610f5388868381518110610f3d57fe5b602002602001015161130f90919063ffffffff16565b828281518110610f5f57fe5b6020908102919091010152600101610f26565b508573ffffffffffffffffffffffffffffffffffffffff16632eb2c2d68a8a8885886040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b8381101561104f578181015183820152602001611037565b50505050905001848103835286818151815260200191508051906020019060200280838360005b8381101561108e578181015183820152602001611076565b50505050905001848103825285818151815260200191508051906020019080838360005b838110156110ca5781810151838201526020016110b2565b50505050905090810190601f1680156110f75780820380516001836020036101000a031916815260200191505b5098505050505050505050600060405180830381600087803b15801561111c57600080fd5b505af1158015611130573d6000803e3d6000fd5b505050505050505050505050505050565b60006040518080611458603091396030019050604051809103902090505b90565b60016020526000908152604090205460ff1681565b606060028054806020026020016040519081016040528092919081815260200182805480156111dc57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116111b1575b5050505050905090565b60005473ffffffffffffffffffffffffffffffffffffffff16331461126c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116156112c957600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790555b50565b6060818311156112ea576112ea6112e560008585611349565b6113e8565b8351821115611303576113036112e56001848751611349565b50819003910190815290565b60008261131e57506000611343565b8282028284828161132b57fe5b0414611340576113406112e5600186866113f0565b90505b92915050565b6060632800659560e01b8484846040516024018084600781111561136957fe5b60ff1681526020018381526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090509392505050565b805160208201fd5b606063e946c1bb60e01b8484846040516024018084600381111561136957fe5b81548183558181111561143457600083815260209020611434918101908301611439565b505050565b61115f91905b80821115611453576000815560010161143f565b509056fe4552433131353541737365747328616464726573732c75696e743235365b5d2c75696e743235365b5d2c627974657329a265627a7a7231582018f7b5f095f5d30b032b98ce3fa40551403f66bef015dfcf7bab33db7cb12cf264736f6c63430005110032" }, "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b50600436106100be5760003560e01c8063a85e59e411610076578063b91816111161005b578063b918161114610285578063d39de6e9146102cc578063f2fde38b14610324576100be565b8063a85e59e4146101b2578063ae25532e14610248576100be565b806370712939116100a7578063707129391461013e5780638da5cb5b146101715780639ad2674414610179576100be565b806342f1181e146100c3578063494503d4146100f8575b600080fd5b6100f6600480360360208110156100d957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610357565b005b6101156004803603602081101561010e57600080fd5b5035610543565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100f66004803603602081101561015457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610577565b61011561086a565b6100f66004803603604081101561018f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610886565b6100f6600480360360808110156101c857600080fd5b8101906020810181356401000000008111156101e357600080fd5b8201836020820111156101f557600080fd5b8035906020019184600183028401116401000000008311171561021757600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610c37565b610250611141565b604080517fffffffff000000000000000000000000000000000000000000000000000000009092168252519081900360200190f35b6102b86004803603602081101561029b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611162565b604080519115158252519081900360200190f35b6102d4611177565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156103105781810151838201526020016102f8565b505050509050019250505060405180910390f35b6100f66004803603602081101561033a57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166111e6565b60005473ffffffffffffffffffffffffffffffffffffffff1633146103dd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff161561047257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f5441524745545f414c52454144595f415554484f52495a454400000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168317905560028054928301815583527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001684179055513392917f3147867c59d17e8fa9d522465651d44aae0a9e38f902f3475b97e58072f0ed4c91a350565b6002818154811061055057fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b60005473ffffffffffffffffffffffffffffffffffffffff1633146105fd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff1661069157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f5441524745545f4e4f545f415554484f52495a45440000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116600090815260016020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555b600254811015610823578173ffffffffffffffffffffffffffffffffffffffff166002828154811061070b57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16141561081b57600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810190811061076357fe5b6000918252602090912001546002805473ffffffffffffffffffffffffffffffffffffffff909216918390811061079657fe5b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01906108159082611410565b50610823565b6001016106dd565b50604051339073ffffffffffffffffffffffffffffffffffffffff8316907f1f32c1b084e2de0713b8fb16bd46bb9df710a3dbeae2f3ca93af46e016dcc6b090600090a350565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff16331461090c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205460ff166109a057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f5441524745545f4e4f545f415554484f52495a45440000000000000000000000604482015290519081900360640190fd5b6002548110610a1057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e4445585f4f55545f4f465f424f554e445300000000000000000000000000604482015290519081900360640190fd5b8173ffffffffffffffffffffffffffffffffffffffff1660028281548110610a3457fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1614610ac257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f415554484f52495a45445f414444524553535f4d49534d415443480000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101908110610b3d57fe5b6000918252602090912001546002805473ffffffffffffffffffffffffffffffffffffffff9092169183908110610b7057fe5b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190610bef9082611410565b50604051339073ffffffffffffffffffffffffffffffffffffffff8416907f1f32c1b084e2de0713b8fb16bd46bb9df710a3dbeae2f3ca93af46e016dcc6b090600090a35050565b3360009081526001602052604090205460ff16610cb557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f53454e4445525f4e4f545f415554484f52495a45440000000000000000000000604482015290519081900360640190fd5b60006060806060610d0b60048a8a90508b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092949392505063ffffffff6112cc169050565b8060200190516080811015610d1f57600080fd5b815160208301805160405192949293830192919084640100000000821115610d4657600080fd5b908301906020820185811115610d5b57600080fd5b8251866020820283011164010000000082111715610d7857600080fd5b82525081516020918201928201910280838360005b83811015610da5578181015183820152602001610d8d565b5050505090500160405260200180516040519392919084640100000000821115610dce57600080fd5b908301906020820185811115610de357600080fd5b8251866020820283011164010000000082111715610e0057600080fd5b82525081516020918201928201910280838360005b83811015610e2d578181015183820152602001610e15565b5050505090500160405260200180516040519392919084640100000000821115610e5657600080fd5b908301906020820185811115610e6b57600080fd5b8251640100000000811182820188101715610e8557600080fd5b82525081516020918201929091019080838360005b83811015610eb2578181015183820152602001610e9a565b50505050905090810190601f168015610edf5780820380516001836020036101000a031916815260200191505b506040525050509350935093509350600082519050606081604051908082528060200260200182016040528015610f20578160200160208202803883390190505b50905060005b828114610f7257610f5388868381518110610f3d57fe5b602002602001015161130f90919063ffffffff16565b828281518110610f5f57fe5b6020908102919091010152600101610f26565b508573ffffffffffffffffffffffffffffffffffffffff16632eb2c2d68a8a8885886040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b8381101561104f578181015183820152602001611037565b50505050905001848103835286818151815260200191508051906020019060200280838360005b8381101561108e578181015183820152602001611076565b50505050905001848103825285818151815260200191508051906020019080838360005b838110156110ca5781810151838201526020016110b2565b50505050905090810190601f1680156110f75780820380516001836020036101000a031916815260200191505b5098505050505050505050600060405180830381600087803b15801561111c57600080fd5b505af1158015611130573d6000803e3d6000fd5b505050505050505050505050505050565b60006040518080611458603091396030019050604051809103902090505b90565b60016020526000908152604090205460ff1681565b606060028054806020026020016040519081016040528092919081815260200182805480156111dc57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116111b1575b5050505050905090565b60005473ffffffffffffffffffffffffffffffffffffffff16331461126c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116156112c957600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790555b50565b6060818311156112ea576112ea6112e560008585611349565b6113e8565b8351821115611303576113036112e56001848751611349565b50819003910190815290565b60008261131e57506000611343565b8282028284828161132b57fe5b0414611340576113406112e5600186866113f0565b90505b92915050565b6060632800659560e01b8484846040516024018084600781111561136957fe5b60ff1681526020018381526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090509392505050565b805160208201fd5b606063e946c1bb60e01b8484846040516024018084600381111561136957fe5b81548183558181111561143457600083815260209020611434918101908301611439565b505050565b61115f91905b80821115611453576000815560010161143f565b509056fe4552433131353541737365747328616464726573732c75696e743235365b5d2c75696e743235365b5d2c627974657329a265627a7a72315820ab23c6179cd8f3e1ee6b07cd4de12728ecf85693686b24490441dbc612b4612664736f6c63430005110032" + "object": "0x608060405234801561001057600080fd5b50600436106100be5760003560e01c8063a85e59e411610076578063b91816111161005b578063b918161114610285578063d39de6e9146102cc578063f2fde38b14610324576100be565b8063a85e59e4146101b2578063ae25532e14610248576100be565b806370712939116100a7578063707129391461013e5780638da5cb5b146101715780639ad2674414610179576100be565b806342f1181e146100c3578063494503d4146100f8575b600080fd5b6100f6600480360360208110156100d957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610357565b005b6101156004803603602081101561010e57600080fd5b5035610543565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100f66004803603602081101561015457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610577565b61011561086a565b6100f66004803603604081101561018f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610886565b6100f6600480360360808110156101c857600080fd5b8101906020810181356401000000008111156101e357600080fd5b8201836020820111156101f557600080fd5b8035906020019184600183028401116401000000008311171561021757600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610c37565b610250611141565b604080517fffffffff000000000000000000000000000000000000000000000000000000009092168252519081900360200190f35b6102b86004803603602081101561029b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611162565b604080519115158252519081900360200190f35b6102d4611177565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156103105781810151838201526020016102f8565b505050509050019250505060405180910390f35b6100f66004803603602081101561033a57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166111e6565b60005473ffffffffffffffffffffffffffffffffffffffff1633146103dd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff161561047257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f5441524745545f414c52454144595f415554484f52495a454400000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168317905560028054928301815583527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001684179055513392917f3147867c59d17e8fa9d522465651d44aae0a9e38f902f3475b97e58072f0ed4c91a350565b6002818154811061055057fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b60005473ffffffffffffffffffffffffffffffffffffffff1633146105fd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff1661069157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f5441524745545f4e4f545f415554484f52495a45440000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116600090815260016020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555b600254811015610823578173ffffffffffffffffffffffffffffffffffffffff166002828154811061070b57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16141561081b57600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810190811061076357fe5b6000918252602090912001546002805473ffffffffffffffffffffffffffffffffffffffff909216918390811061079657fe5b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01906108159082611410565b50610823565b6001016106dd565b50604051339073ffffffffffffffffffffffffffffffffffffffff8316907f1f32c1b084e2de0713b8fb16bd46bb9df710a3dbeae2f3ca93af46e016dcc6b090600090a350565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff16331461090c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205460ff166109a057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f5441524745545f4e4f545f415554484f52495a45440000000000000000000000604482015290519081900360640190fd5b6002548110610a1057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e4445585f4f55545f4f465f424f554e445300000000000000000000000000604482015290519081900360640190fd5b8173ffffffffffffffffffffffffffffffffffffffff1660028281548110610a3457fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1614610ac257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f415554484f52495a45445f414444524553535f4d49534d415443480000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101908110610b3d57fe5b6000918252602090912001546002805473ffffffffffffffffffffffffffffffffffffffff9092169183908110610b7057fe5b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190610bef9082611410565b50604051339073ffffffffffffffffffffffffffffffffffffffff8416907f1f32c1b084e2de0713b8fb16bd46bb9df710a3dbeae2f3ca93af46e016dcc6b090600090a35050565b3360009081526001602052604090205460ff16610cb557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f53454e4445525f4e4f545f415554484f52495a45440000000000000000000000604482015290519081900360640190fd5b60006060806060610d0b60048a8a90508b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092949392505063ffffffff6112cc169050565b8060200190516080811015610d1f57600080fd5b815160208301805160405192949293830192919084640100000000821115610d4657600080fd5b908301906020820185811115610d5b57600080fd5b8251866020820283011164010000000082111715610d7857600080fd5b82525081516020918201928201910280838360005b83811015610da5578181015183820152602001610d8d565b5050505090500160405260200180516040519392919084640100000000821115610dce57600080fd5b908301906020820185811115610de357600080fd5b8251866020820283011164010000000082111715610e0057600080fd5b82525081516020918201928201910280838360005b83811015610e2d578181015183820152602001610e15565b5050505090500160405260200180516040519392919084640100000000821115610e5657600080fd5b908301906020820185811115610e6b57600080fd5b8251640100000000811182820188101715610e8557600080fd5b82525081516020918201929091019080838360005b83811015610eb2578181015183820152602001610e9a565b50505050905090810190601f168015610edf5780820380516001836020036101000a031916815260200191505b506040525050509350935093509350600082519050606081604051908082528060200260200182016040528015610f20578160200160208202803883390190505b50905060005b828114610f7257610f5388868381518110610f3d57fe5b602002602001015161130f90919063ffffffff16565b828281518110610f5f57fe5b6020908102919091010152600101610f26565b508573ffffffffffffffffffffffffffffffffffffffff16632eb2c2d68a8a8885886040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b8381101561104f578181015183820152602001611037565b50505050905001848103835286818151815260200191508051906020019060200280838360005b8381101561108e578181015183820152602001611076565b50505050905001848103825285818151815260200191508051906020019080838360005b838110156110ca5781810151838201526020016110b2565b50505050905090810190601f1680156110f75780820380516001836020036101000a031916815260200191505b5098505050505050505050600060405180830381600087803b15801561111c57600080fd5b505af1158015611130573d6000803e3d6000fd5b505050505050505050505050505050565b60006040518080611458603091396030019050604051809103902090505b90565b60016020526000908152604090205460ff1681565b606060028054806020026020016040519081016040528092919081815260200182805480156111dc57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116111b1575b5050505050905090565b60005473ffffffffffffffffffffffffffffffffffffffff16331461126c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116156112c957600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790555b50565b6060818311156112ea576112ea6112e560008585611349565b6113e8565b8351821115611303576113036112e56001848751611349565b50819003910190815290565b60008261131e57506000611343565b8282028284828161132b57fe5b0414611340576113406112e5600186866113f0565b90505b92915050565b6060632800659560e01b8484846040516024018084600781111561136957fe5b60ff1681526020018381526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090509392505050565b805160208201fd5b606063e946c1bb60e01b8484846040516024018084600381111561136957fe5b81548183558181111561143457600083815260209020611434918101908301611439565b505050565b61115f91905b80821115611453576000815560010161143f565b509056fe4552433131353541737365747328616464726573732c75696e743235365b5d2c75696e743235365b5d2c627974657329a265627a7a7231582018f7b5f095f5d30b032b98ce3fa40551403f66bef015dfcf7bab33db7cb12cf264736f6c63430005110032" } } }, diff --git a/packages/contract-artifacts/artifacts/ERC20BridgeProxy.json b/packages/contract-artifacts/artifacts/ERC20BridgeProxy.json index ce122087c3..f7d8123e4c 100644 --- a/packages/contract-artifacts/artifacts/ERC20BridgeProxy.json +++ b/packages/contract-artifacts/artifacts/ERC20BridgeProxy.json @@ -187,10 +187,10 @@ }, "evm": { "bytecode": { - "object": "0x6080604052600080546001600160a01b03191633179055611463806100256000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c8063a85e59e411610081578063d39de6e91161005b578063d39de6e914610182578063f2fde38b14610197578063fc124ebd146101aa576100c9565b8063a85e59e41461013a578063ae25532e1461014d578063b918161114610162576100c9565b806370712939116100b2578063707129391461010c5780638da5cb5b1461011f5780639ad2674414610127576100c9565b806342f1181e146100ce578063494503d4146100e3575b600080fd5b6100e16100dc366004610f27565b6101ca565b005b6100f66100f1366004611160565b6101de565b6040516101039190611190565b60405180910390f35b6100e161011a366004610f27565b610212565b6100f66102cc565b6100e1610135366004611032565b6102e8565b6100e16101483660046110f2565b6102fa565b6101556104f6565b60405161010391906112c5565b610175610170366004610f27565b61051b565b60405161010391906112ba565b61018a610530565b6040516101039190611261565b6100e16101a5366004610f27565b61059f565b6101bd6101b836600461109d565b610642565b6040516101039190611390565b6101d26106bc565b6101db81610705565b50565b600281815481106101eb57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b61021a6106bc565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff166102585761025861025382610836565b6108d5565b60005b6002548110156102c8578173ffffffffffffffffffffffffffffffffffffffff166002828154811061028957fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1614156102c0576102bb82826108dd565b6102c8565b60010161025b565b5050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b6102f06106bc565b6102c882826108dd565b610302610b2c565b60008060606103566004898990508a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092949392505063ffffffff610b4f169050565b8060200190516103699190810190610f5f565b925092509250600061037b8487610b8d565b905060008373ffffffffffffffffffffffffffffffffffffffff1663c2df82e6868a8a8a886040518663ffffffff1660e01b81526004016103c09594939291906111d8565b602060405180830381600087803b1580156103da57600080fd5b505af11580156103ee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610412919081019061105d565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167fdc1600f30000000000000000000000000000000000000000000000000000000014610498576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161048f90611322565b60405180910390fd5b6104a28588610b8d565b6104b2838863ffffffff610c3916565b11156104ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161048f90611359565b50505050505050505050565b7fdc1600f3000000000000000000000000000000000000000000000000000000005b90565b60016020526000908152604090205460ff1681565b6060600280548060200260200160405190810160405280929190818152602001828054801561059557602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161056a575b5050505050905090565b6105a76106bc565b73ffffffffffffffffffffffffffffffffffffffff81166105d2576105cd610253610c55565b6101db565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60008061069460048686905087878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092949392505063ffffffff610b4f169050565b8060200190516106a79190810190610f43565b90506106b38184610b8d565b95945050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610703576000546107039061025390339073ffffffffffffffffffffffffffffffffffffffff16610c8c565b565b73ffffffffffffffffffffffffffffffffffffffff811661072b5761072b610253610d2e565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff16156107655761076561025382610d65565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168317905560028054928301815583527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001684179055513392917f3147867c59d17e8fa9d522465651d44aae0a9e38f902f3475b97e58072f0ed4c91a350565b606063eb5108a260e01b826040516024016108519190611190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050919050565b805160208201fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205460ff166109165761091661025383610836565b60025481106109315761093161025382600280549050610d80565b8173ffffffffffffffffffffffffffffffffffffffff166002828154811061095557fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16146109b7576109b76102536002838154811061098f57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1684610d9d565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101908110610a3257fe5b6000918252602090912001546002805473ffffffffffffffffffffffffffffffffffffffff9092169183908110610a6557fe5b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190610ae49082610e99565b50604051339073ffffffffffffffffffffffffffffffffffffffff8416907f1f32c1b084e2de0713b8fb16bd46bb9df710a3dbeae2f3ca93af46e016dcc6b090600090a35050565b3360009081526001602052604090205460ff166107035761070361025333610dba565b606081831115610b6857610b6861025360008585610dd5565b8351821115610b8157610b816102536001848751610dd5565b50819003910190815290565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190610be2908590600401611190565b60206040518083038186803b158015610bfa57600080fd5b505afa158015610c0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c329190810190611178565b9392505050565b600082820183811015610c3257610c3261025360008686610e7a565b60408051808201909152600481527fe69edc3e00000000000000000000000000000000000000000000000000000000602082015290565b6060631de45ad160e01b8383604051602401610ca99291906111b1565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905092915050565b60408051808201909152600481527f57654fe400000000000000000000000000000000000000000000000000000000602082015290565b606063de16f1a060e01b826040516024016108519190611190565b606063e9f8377160e01b8383604051602401610ca9929190611399565b606063140a84db60e01b8383604051602401610ca99291906111b1565b606063b65a25b960e01b826040516024016108519190611190565b6060632800659560e01b848484604051602401610df493929190611314565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290509392505050565b606063e946c1bb60e01b848484604051602401610df4939291906112f2565b815481835581811115610ebd57600083815260209020610ebd918101908301610ec2565b505050565b61051891905b80821115610edc5760008155600101610ec8565b5090565b60008083601f840112610ef1578182fd5b50813567ffffffffffffffff811115610f08578182fd5b602083019150836020828501011115610f2057600080fd5b9250929050565b600060208284031215610f38578081fd5b8135610c32816113fe565b600060208284031215610f54578081fd5b8151610c32816113fe565b600080600060608486031215610f73578182fd5b8351610f7e816113fe565b6020850151909350610f8f816113fe565b604085015190925067ffffffffffffffff80821115610fac578283fd5b81860187601f820112610fbd578384fd5b8051925081831115610fcd578384fd5b610ffe60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f860116016113a7565b9150828252876020848301011115611014578384fd5b6110258360208401602084016113ce565b5080925050509250925092565b60008060408385031215611044578182fd5b823561104f816113fe565b946020939093013593505050565b60006020828403121561106e578081fd5b81517fffffffff0000000000000000000000000000000000000000000000000000000081168114610c32578182fd5b6000806000604084860312156110b1578283fd5b833567ffffffffffffffff8111156110c7578384fd5b6110d386828701610ee0565b90945092505060208401356110e7816113fe565b809150509250925092565b600080600080600060808688031215611109578081fd5b853567ffffffffffffffff81111561111f578182fd5b61112b88828901610ee0565b909650945050602086013561113f816113fe565b9250604086013561114f816113fe565b949793965091946060013592915050565b600060208284031215611171578081fd5b5035919050565b600060208284031215611189578081fd5b5051919050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015280861660408401525083606083015260a0608083015282518060a084015261122b8160c08501602087016113ce565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160c0019695505050505050565b602080825282518282018190526000918401906040840190835b818110156112af57835173ffffffffffffffffffffffffffffffffffffffff1683526020938401939092019160010161127b565b509095945050505050565b901515815260200190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b606081016004851061130057fe5b938152602081019290925260409091015290565b606081016008851061130057fe5b6020808252600d908201527f4252494447455f4641494c454400000000000000000000000000000000000000604082015260600190565b6020808252600f908201527f4252494447455f554e4445525041590000000000000000000000000000000000604082015260600190565b90815260200190565b918252602082015260400190565b60405181810167ffffffffffffffff811182821017156113c657600080fd5b604052919050565b60005b838110156113e95781810151838201526020016113d1565b838111156113f8576000848401525b50505050565b73ffffffffffffffffffffffffffffffffffffffff811681146101db57600080fdfea365627a7a723158206dd983bb53b37fd1cff1b072611526e30d21c7f5e43678ebb603fa78d5a1c7b46c6578706572696d656e74616cf564736f6c63430005110040" + "object": "0x6080604052600080546001600160a01b03191633179055611463806100256000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c8063a85e59e411610081578063d39de6e91161005b578063d39de6e914610182578063f2fde38b14610197578063fc124ebd146101aa576100c9565b8063a85e59e41461013a578063ae25532e1461014d578063b918161114610162576100c9565b806370712939116100b2578063707129391461010c5780638da5cb5b1461011f5780639ad2674414610127576100c9565b806342f1181e146100ce578063494503d4146100e3575b600080fd5b6100e16100dc366004610f27565b6101ca565b005b6100f66100f1366004611160565b6101de565b6040516101039190611190565b60405180910390f35b6100e161011a366004610f27565b610212565b6100f66102cc565b6100e1610135366004611032565b6102e8565b6100e16101483660046110f2565b6102fa565b6101556104f6565b60405161010391906112c5565b610175610170366004610f27565b61051b565b60405161010391906112ba565b61018a610530565b6040516101039190611261565b6100e16101a5366004610f27565b61059f565b6101bd6101b836600461109d565b610642565b6040516101039190611390565b6101d26106bc565b6101db81610705565b50565b600281815481106101eb57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b61021a6106bc565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff166102585761025861025382610836565b6108d5565b60005b6002548110156102c8578173ffffffffffffffffffffffffffffffffffffffff166002828154811061028957fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1614156102c0576102bb82826108dd565b6102c8565b60010161025b565b5050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b6102f06106bc565b6102c882826108dd565b610302610b2c565b60008060606103566004898990508a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092949392505063ffffffff610b4f169050565b8060200190516103699190810190610f5f565b925092509250600061037b8487610b8d565b905060008373ffffffffffffffffffffffffffffffffffffffff1663c2df82e6868a8a8a886040518663ffffffff1660e01b81526004016103c09594939291906111d8565b602060405180830381600087803b1580156103da57600080fd5b505af11580156103ee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610412919081019061105d565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167fdc1600f30000000000000000000000000000000000000000000000000000000014610498576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161048f90611322565b60405180910390fd5b6104a28588610b8d565b6104b2838863ffffffff610c3916565b11156104ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161048f90611359565b50505050505050505050565b7fdc1600f3000000000000000000000000000000000000000000000000000000005b90565b60016020526000908152604090205460ff1681565b6060600280548060200260200160405190810160405280929190818152602001828054801561059557602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161056a575b5050505050905090565b6105a76106bc565b73ffffffffffffffffffffffffffffffffffffffff81166105d2576105cd610253610c55565b6101db565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60008061069460048686905087878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092949392505063ffffffff610b4f169050565b8060200190516106a79190810190610f43565b90506106b38184610b8d565b95945050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610703576000546107039061025390339073ffffffffffffffffffffffffffffffffffffffff16610c8c565b565b73ffffffffffffffffffffffffffffffffffffffff811661072b5761072b610253610d2e565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff16156107655761076561025382610d65565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168317905560028054928301815583527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001684179055513392917f3147867c59d17e8fa9d522465651d44aae0a9e38f902f3475b97e58072f0ed4c91a350565b606063eb5108a260e01b826040516024016108519190611190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050919050565b805160208201fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205460ff166109165761091661025383610836565b60025481106109315761093161025382600280549050610d80565b8173ffffffffffffffffffffffffffffffffffffffff166002828154811061095557fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16146109b7576109b76102536002838154811061098f57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1684610d9d565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101908110610a3257fe5b6000918252602090912001546002805473ffffffffffffffffffffffffffffffffffffffff9092169183908110610a6557fe5b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190610ae49082610e99565b50604051339073ffffffffffffffffffffffffffffffffffffffff8416907f1f32c1b084e2de0713b8fb16bd46bb9df710a3dbeae2f3ca93af46e016dcc6b090600090a35050565b3360009081526001602052604090205460ff166107035761070361025333610dba565b606081831115610b6857610b6861025360008585610dd5565b8351821115610b8157610b816102536001848751610dd5565b50819003910190815290565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190610be2908590600401611190565b60206040518083038186803b158015610bfa57600080fd5b505afa158015610c0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c329190810190611178565b9392505050565b600082820183811015610c3257610c3261025360008686610e7a565b60408051808201909152600481527fe69edc3e00000000000000000000000000000000000000000000000000000000602082015290565b6060631de45ad160e01b8383604051602401610ca99291906111b1565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905092915050565b60408051808201909152600481527f57654fe400000000000000000000000000000000000000000000000000000000602082015290565b606063de16f1a060e01b826040516024016108519190611190565b606063e9f8377160e01b8383604051602401610ca9929190611399565b606063140a84db60e01b8383604051602401610ca99291906111b1565b606063b65a25b960e01b826040516024016108519190611190565b6060632800659560e01b848484604051602401610df493929190611314565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290509392505050565b606063e946c1bb60e01b848484604051602401610df4939291906112f2565b815481835581811115610ebd57600083815260209020610ebd918101908301610ec2565b505050565b61051891905b80821115610edc5760008155600101610ec8565b5090565b60008083601f840112610ef1578182fd5b50813567ffffffffffffffff811115610f08578182fd5b602083019150836020828501011115610f2057600080fd5b9250929050565b600060208284031215610f38578081fd5b8135610c32816113fe565b600060208284031215610f54578081fd5b8151610c32816113fe565b600080600060608486031215610f73578182fd5b8351610f7e816113fe565b6020850151909350610f8f816113fe565b604085015190925067ffffffffffffffff80821115610fac578283fd5b81860187601f820112610fbd578384fd5b8051925081831115610fcd578384fd5b610ffe60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f860116016113a7565b9150828252876020848301011115611014578384fd5b6110258360208401602084016113ce565b5080925050509250925092565b60008060408385031215611044578182fd5b823561104f816113fe565b946020939093013593505050565b60006020828403121561106e578081fd5b81517fffffffff0000000000000000000000000000000000000000000000000000000081168114610c32578182fd5b6000806000604084860312156110b1578283fd5b833567ffffffffffffffff8111156110c7578384fd5b6110d386828701610ee0565b90945092505060208401356110e7816113fe565b809150509250925092565b600080600080600060808688031215611109578081fd5b853567ffffffffffffffff81111561111f578182fd5b61112b88828901610ee0565b909650945050602086013561113f816113fe565b9250604086013561114f816113fe565b949793965091946060013592915050565b600060208284031215611171578081fd5b5035919050565b600060208284031215611189578081fd5b5051919050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015280861660408401525083606083015260a0608083015282518060a084015261122b8160c08501602087016113ce565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160c0019695505050505050565b602080825282518282018190526000918401906040840190835b818110156112af57835173ffffffffffffffffffffffffffffffffffffffff1683526020938401939092019160010161127b565b509095945050505050565b901515815260200190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b606081016004851061130057fe5b938152602081019290925260409091015290565b606081016008851061130057fe5b6020808252600d908201527f4252494447455f4641494c454400000000000000000000000000000000000000604082015260600190565b6020808252600f908201527f4252494447455f554e4445525041590000000000000000000000000000000000604082015260600190565b90815260200190565b918252602082015260400190565b60405181810167ffffffffffffffff811182821017156113c657600080fd5b604052919050565b60005b838110156113e95781810151838201526020016113d1565b838111156113f8576000848401525b50505050565b73ffffffffffffffffffffffffffffffffffffffff811681146101db57600080fdfea365627a7a723158201a8a6a7a06b020b4d9c8a370c5806de12b945813ce6c859719cfafddd4fa3ab26c6578706572696d656e74616cf564736f6c63430005110040" }, "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b50600436106100c95760003560e01c8063a85e59e411610081578063d39de6e91161005b578063d39de6e914610182578063f2fde38b14610197578063fc124ebd146101aa576100c9565b8063a85e59e41461013a578063ae25532e1461014d578063b918161114610162576100c9565b806370712939116100b2578063707129391461010c5780638da5cb5b1461011f5780639ad2674414610127576100c9565b806342f1181e146100ce578063494503d4146100e3575b600080fd5b6100e16100dc366004610f27565b6101ca565b005b6100f66100f1366004611160565b6101de565b6040516101039190611190565b60405180910390f35b6100e161011a366004610f27565b610212565b6100f66102cc565b6100e1610135366004611032565b6102e8565b6100e16101483660046110f2565b6102fa565b6101556104f6565b60405161010391906112c5565b610175610170366004610f27565b61051b565b60405161010391906112ba565b61018a610530565b6040516101039190611261565b6100e16101a5366004610f27565b61059f565b6101bd6101b836600461109d565b610642565b6040516101039190611390565b6101d26106bc565b6101db81610705565b50565b600281815481106101eb57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b61021a6106bc565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff166102585761025861025382610836565b6108d5565b60005b6002548110156102c8578173ffffffffffffffffffffffffffffffffffffffff166002828154811061028957fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1614156102c0576102bb82826108dd565b6102c8565b60010161025b565b5050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b6102f06106bc565b6102c882826108dd565b610302610b2c565b60008060606103566004898990508a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092949392505063ffffffff610b4f169050565b8060200190516103699190810190610f5f565b925092509250600061037b8487610b8d565b905060008373ffffffffffffffffffffffffffffffffffffffff1663c2df82e6868a8a8a886040518663ffffffff1660e01b81526004016103c09594939291906111d8565b602060405180830381600087803b1580156103da57600080fd5b505af11580156103ee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610412919081019061105d565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167fdc1600f30000000000000000000000000000000000000000000000000000000014610498576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161048f90611322565b60405180910390fd5b6104a28588610b8d565b6104b2838863ffffffff610c3916565b11156104ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161048f90611359565b50505050505050505050565b7fdc1600f3000000000000000000000000000000000000000000000000000000005b90565b60016020526000908152604090205460ff1681565b6060600280548060200260200160405190810160405280929190818152602001828054801561059557602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161056a575b5050505050905090565b6105a76106bc565b73ffffffffffffffffffffffffffffffffffffffff81166105d2576105cd610253610c55565b6101db565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60008061069460048686905087878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092949392505063ffffffff610b4f169050565b8060200190516106a79190810190610f43565b90506106b38184610b8d565b95945050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610703576000546107039061025390339073ffffffffffffffffffffffffffffffffffffffff16610c8c565b565b73ffffffffffffffffffffffffffffffffffffffff811661072b5761072b610253610d2e565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff16156107655761076561025382610d65565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168317905560028054928301815583527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001684179055513392917f3147867c59d17e8fa9d522465651d44aae0a9e38f902f3475b97e58072f0ed4c91a350565b606063eb5108a260e01b826040516024016108519190611190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050919050565b805160208201fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205460ff166109165761091661025383610836565b60025481106109315761093161025382600280549050610d80565b8173ffffffffffffffffffffffffffffffffffffffff166002828154811061095557fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16146109b7576109b76102536002838154811061098f57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1684610d9d565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101908110610a3257fe5b6000918252602090912001546002805473ffffffffffffffffffffffffffffffffffffffff9092169183908110610a6557fe5b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190610ae49082610e99565b50604051339073ffffffffffffffffffffffffffffffffffffffff8416907f1f32c1b084e2de0713b8fb16bd46bb9df710a3dbeae2f3ca93af46e016dcc6b090600090a35050565b3360009081526001602052604090205460ff166107035761070361025333610dba565b606081831115610b6857610b6861025360008585610dd5565b8351821115610b8157610b816102536001848751610dd5565b50819003910190815290565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190610be2908590600401611190565b60206040518083038186803b158015610bfa57600080fd5b505afa158015610c0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c329190810190611178565b9392505050565b600082820183811015610c3257610c3261025360008686610e7a565b60408051808201909152600481527fe69edc3e00000000000000000000000000000000000000000000000000000000602082015290565b6060631de45ad160e01b8383604051602401610ca99291906111b1565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905092915050565b60408051808201909152600481527f57654fe400000000000000000000000000000000000000000000000000000000602082015290565b606063de16f1a060e01b826040516024016108519190611190565b606063e9f8377160e01b8383604051602401610ca9929190611399565b606063140a84db60e01b8383604051602401610ca99291906111b1565b606063b65a25b960e01b826040516024016108519190611190565b6060632800659560e01b848484604051602401610df493929190611314565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290509392505050565b606063e946c1bb60e01b848484604051602401610df4939291906112f2565b815481835581811115610ebd57600083815260209020610ebd918101908301610ec2565b505050565b61051891905b80821115610edc5760008155600101610ec8565b5090565b60008083601f840112610ef1578182fd5b50813567ffffffffffffffff811115610f08578182fd5b602083019150836020828501011115610f2057600080fd5b9250929050565b600060208284031215610f38578081fd5b8135610c32816113fe565b600060208284031215610f54578081fd5b8151610c32816113fe565b600080600060608486031215610f73578182fd5b8351610f7e816113fe565b6020850151909350610f8f816113fe565b604085015190925067ffffffffffffffff80821115610fac578283fd5b81860187601f820112610fbd578384fd5b8051925081831115610fcd578384fd5b610ffe60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f860116016113a7565b9150828252876020848301011115611014578384fd5b6110258360208401602084016113ce565b5080925050509250925092565b60008060408385031215611044578182fd5b823561104f816113fe565b946020939093013593505050565b60006020828403121561106e578081fd5b81517fffffffff0000000000000000000000000000000000000000000000000000000081168114610c32578182fd5b6000806000604084860312156110b1578283fd5b833567ffffffffffffffff8111156110c7578384fd5b6110d386828701610ee0565b90945092505060208401356110e7816113fe565b809150509250925092565b600080600080600060808688031215611109578081fd5b853567ffffffffffffffff81111561111f578182fd5b61112b88828901610ee0565b909650945050602086013561113f816113fe565b9250604086013561114f816113fe565b949793965091946060013592915050565b600060208284031215611171578081fd5b5035919050565b600060208284031215611189578081fd5b5051919050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015280861660408401525083606083015260a0608083015282518060a084015261122b8160c08501602087016113ce565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160c0019695505050505050565b602080825282518282018190526000918401906040840190835b818110156112af57835173ffffffffffffffffffffffffffffffffffffffff1683526020938401939092019160010161127b565b509095945050505050565b901515815260200190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b606081016004851061130057fe5b938152602081019290925260409091015290565b606081016008851061130057fe5b6020808252600d908201527f4252494447455f4641494c454400000000000000000000000000000000000000604082015260600190565b6020808252600f908201527f4252494447455f554e4445525041590000000000000000000000000000000000604082015260600190565b90815260200190565b918252602082015260400190565b60405181810167ffffffffffffffff811182821017156113c657600080fd5b604052919050565b60005b838110156113e95781810151838201526020016113d1565b838111156113f8576000848401525b50505050565b73ffffffffffffffffffffffffffffffffffffffff811681146101db57600080fdfea365627a7a723158206dd983bb53b37fd1cff1b072611526e30d21c7f5e43678ebb603fa78d5a1c7b46c6578706572696d656e74616cf564736f6c63430005110040" + "object": "0x608060405234801561001057600080fd5b50600436106100c95760003560e01c8063a85e59e411610081578063d39de6e91161005b578063d39de6e914610182578063f2fde38b14610197578063fc124ebd146101aa576100c9565b8063a85e59e41461013a578063ae25532e1461014d578063b918161114610162576100c9565b806370712939116100b2578063707129391461010c5780638da5cb5b1461011f5780639ad2674414610127576100c9565b806342f1181e146100ce578063494503d4146100e3575b600080fd5b6100e16100dc366004610f27565b6101ca565b005b6100f66100f1366004611160565b6101de565b6040516101039190611190565b60405180910390f35b6100e161011a366004610f27565b610212565b6100f66102cc565b6100e1610135366004611032565b6102e8565b6100e16101483660046110f2565b6102fa565b6101556104f6565b60405161010391906112c5565b610175610170366004610f27565b61051b565b60405161010391906112ba565b61018a610530565b6040516101039190611261565b6100e16101a5366004610f27565b61059f565b6101bd6101b836600461109d565b610642565b6040516101039190611390565b6101d26106bc565b6101db81610705565b50565b600281815481106101eb57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b61021a6106bc565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff166102585761025861025382610836565b6108d5565b60005b6002548110156102c8578173ffffffffffffffffffffffffffffffffffffffff166002828154811061028957fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1614156102c0576102bb82826108dd565b6102c8565b60010161025b565b5050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b6102f06106bc565b6102c882826108dd565b610302610b2c565b60008060606103566004898990508a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092949392505063ffffffff610b4f169050565b8060200190516103699190810190610f5f565b925092509250600061037b8487610b8d565b905060008373ffffffffffffffffffffffffffffffffffffffff1663c2df82e6868a8a8a886040518663ffffffff1660e01b81526004016103c09594939291906111d8565b602060405180830381600087803b1580156103da57600080fd5b505af11580156103ee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610412919081019061105d565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167fdc1600f30000000000000000000000000000000000000000000000000000000014610498576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161048f90611322565b60405180910390fd5b6104a28588610b8d565b6104b2838863ffffffff610c3916565b11156104ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161048f90611359565b50505050505050505050565b7fdc1600f3000000000000000000000000000000000000000000000000000000005b90565b60016020526000908152604090205460ff1681565b6060600280548060200260200160405190810160405280929190818152602001828054801561059557602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161056a575b5050505050905090565b6105a76106bc565b73ffffffffffffffffffffffffffffffffffffffff81166105d2576105cd610253610c55565b6101db565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60008061069460048686905087878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092949392505063ffffffff610b4f169050565b8060200190516106a79190810190610f43565b90506106b38184610b8d565b95945050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610703576000546107039061025390339073ffffffffffffffffffffffffffffffffffffffff16610c8c565b565b73ffffffffffffffffffffffffffffffffffffffff811661072b5761072b610253610d2e565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff16156107655761076561025382610d65565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168317905560028054928301815583527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001684179055513392917f3147867c59d17e8fa9d522465651d44aae0a9e38f902f3475b97e58072f0ed4c91a350565b606063eb5108a260e01b826040516024016108519190611190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050919050565b805160208201fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205460ff166109165761091661025383610836565b60025481106109315761093161025382600280549050610d80565b8173ffffffffffffffffffffffffffffffffffffffff166002828154811061095557fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16146109b7576109b76102536002838154811061098f57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1684610d9d565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101908110610a3257fe5b6000918252602090912001546002805473ffffffffffffffffffffffffffffffffffffffff9092169183908110610a6557fe5b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190610ae49082610e99565b50604051339073ffffffffffffffffffffffffffffffffffffffff8416907f1f32c1b084e2de0713b8fb16bd46bb9df710a3dbeae2f3ca93af46e016dcc6b090600090a35050565b3360009081526001602052604090205460ff166107035761070361025333610dba565b606081831115610b6857610b6861025360008585610dd5565b8351821115610b8157610b816102536001848751610dd5565b50819003910190815290565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190610be2908590600401611190565b60206040518083038186803b158015610bfa57600080fd5b505afa158015610c0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c329190810190611178565b9392505050565b600082820183811015610c3257610c3261025360008686610e7a565b60408051808201909152600481527fe69edc3e00000000000000000000000000000000000000000000000000000000602082015290565b6060631de45ad160e01b8383604051602401610ca99291906111b1565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905092915050565b60408051808201909152600481527f57654fe400000000000000000000000000000000000000000000000000000000602082015290565b606063de16f1a060e01b826040516024016108519190611190565b606063e9f8377160e01b8383604051602401610ca9929190611399565b606063140a84db60e01b8383604051602401610ca99291906111b1565b606063b65a25b960e01b826040516024016108519190611190565b6060632800659560e01b848484604051602401610df493929190611314565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290509392505050565b606063e946c1bb60e01b848484604051602401610df4939291906112f2565b815481835581811115610ebd57600083815260209020610ebd918101908301610ec2565b505050565b61051891905b80821115610edc5760008155600101610ec8565b5090565b60008083601f840112610ef1578182fd5b50813567ffffffffffffffff811115610f08578182fd5b602083019150836020828501011115610f2057600080fd5b9250929050565b600060208284031215610f38578081fd5b8135610c32816113fe565b600060208284031215610f54578081fd5b8151610c32816113fe565b600080600060608486031215610f73578182fd5b8351610f7e816113fe565b6020850151909350610f8f816113fe565b604085015190925067ffffffffffffffff80821115610fac578283fd5b81860187601f820112610fbd578384fd5b8051925081831115610fcd578384fd5b610ffe60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f860116016113a7565b9150828252876020848301011115611014578384fd5b6110258360208401602084016113ce565b5080925050509250925092565b60008060408385031215611044578182fd5b823561104f816113fe565b946020939093013593505050565b60006020828403121561106e578081fd5b81517fffffffff0000000000000000000000000000000000000000000000000000000081168114610c32578182fd5b6000806000604084860312156110b1578283fd5b833567ffffffffffffffff8111156110c7578384fd5b6110d386828701610ee0565b90945092505060208401356110e7816113fe565b809150509250925092565b600080600080600060808688031215611109578081fd5b853567ffffffffffffffff81111561111f578182fd5b61112b88828901610ee0565b909650945050602086013561113f816113fe565b9250604086013561114f816113fe565b949793965091946060013592915050565b600060208284031215611171578081fd5b5035919050565b600060208284031215611189578081fd5b5051919050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015280861660408401525083606083015260a0608083015282518060a084015261122b8160c08501602087016113ce565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160c0019695505050505050565b602080825282518282018190526000918401906040840190835b818110156112af57835173ffffffffffffffffffffffffffffffffffffffff1683526020938401939092019160010161127b565b509095945050505050565b901515815260200190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b606081016004851061130057fe5b938152602081019290925260409091015290565b606081016008851061130057fe5b6020808252600d908201527f4252494447455f4641494c454400000000000000000000000000000000000000604082015260600190565b6020808252600f908201527f4252494447455f554e4445525041590000000000000000000000000000000000604082015260600190565b90815260200190565b918252602082015260400190565b60405181810167ffffffffffffffff811182821017156113c657600080fd5b604052919050565b60005b838110156113e95781810151838201526020016113d1565b838111156113f8576000848401525b50505050565b73ffffffffffffffffffffffffffffffffffffffff811681146101db57600080fdfea365627a7a723158201a8a6a7a06b020b4d9c8a370c5806de12b945813ce6c859719cfafddd4fa3ab26c6578706572696d656e74616cf564736f6c63430005110040" } } }, diff --git a/packages/contract-artifacts/artifacts/ERC20Proxy.json b/packages/contract-artifacts/artifacts/ERC20Proxy.json index e7b046b350..de73ea37b6 100644 --- a/packages/contract-artifacts/artifacts/ERC20Proxy.json +++ b/packages/contract-artifacts/artifacts/ERC20Proxy.json @@ -145,10 +145,10 @@ }, "evm": { "bytecode": { - "object": "0x6080604052600080546001600160a01b03191633179055610f42806100256000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80639ad2674411610076578063b91816111161005b578063b918161114610374578063d39de6e9146103bb578063f2fde38b14610413576100a3565b80639ad26744146102fe578063ae25532e14610337576100a3565b806342f1181e14610248578063494503d41461027d57806370712939146102c35780638da5cb5b146102f6575b7fffffffff00000000000000000000000000000000000000000000000000000000600035167fa85e59e40000000000000000000000000000000000000000000000000000000081141561024257604080513381526001602082015290812054610177577f08c379a0000000000000000000000000000000000000000000000000000000006000527c20000000000000000000000000000000000000000000000000000000006020527c1553454e4445525f4e4f545f415554484f52495a454400000000000000604052600060605260646000fd5b50602860043501357f23b872dd0000000000000000000000000000000000000000000000000000000060005260606024600437602060006064600080855af1600080511160203d14163d15178116905080156101cf57005b50507f08c379a0000000000000000000000000000000000000000000000000000000006000527c20000000000000000000000000000000000000000000000000000000006020527c0f5452414e534645525f4641494c454400000000000000000000000000604052600060605260646000fd5b50600080fd5b61027b6004803603602081101561025e57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610446565b005b61029a6004803603602081101561029357600080fd5b5035610632565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61027b600480360360208110156102d957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610666565b61029a610959565b61027b6004803603604081101561031457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610975565b61033f610d26565b604080517fffffffff000000000000000000000000000000000000000000000000000000009092168252519081900360200190f35b6103a76004803603602081101561038a57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610d5c565b604080519115158252519081900360200190f35b6103c3610d71565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156103ff5781810151838201526020016103e7565b505050509050019250505060405180910390f35b61027b6004803603602081101561042957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610de0565b60005473ffffffffffffffffffffffffffffffffffffffff1633146104cc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff161561056157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f5441524745545f414c52454144595f415554484f52495a454400000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168317905560028054928301815583527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001684179055513392917f3147867c59d17e8fa9d522465651d44aae0a9e38f902f3475b97e58072f0ed4c91a350565b6002818154811061063f57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b60005473ffffffffffffffffffffffffffffffffffffffff1633146106ec57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff1661078057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f5441524745545f4e4f545f415554484f52495a45440000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116600090815260016020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555b600254811015610912578173ffffffffffffffffffffffffffffffffffffffff16600282815481106107fa57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16141561090a57600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810190811061085257fe5b6000918252602090912001546002805473ffffffffffffffffffffffffffffffffffffffff909216918390811061088557fe5b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01906109049082610ec6565b50610912565b6001016107cc565b50604051339073ffffffffffffffffffffffffffffffffffffffff8316907f1f32c1b084e2de0713b8fb16bd46bb9df710a3dbeae2f3ca93af46e016dcc6b090600090a350565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff1633146109fb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205460ff16610a8f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f5441524745545f4e4f545f415554484f52495a45440000000000000000000000604482015290519081900360640190fd5b6002548110610aff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e4445585f4f55545f4f465f424f554e445300000000000000000000000000604482015290519081900360640190fd5b8173ffffffffffffffffffffffffffffffffffffffff1660028281548110610b2357fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1614610bb157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f415554484f52495a45445f414444524553535f4d49534d415443480000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101908110610c2c57fe5b6000918252602090912001546002805473ffffffffffffffffffffffffffffffffffffffff9092169183908110610c5f57fe5b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190610cde9082610ec6565b50604051339073ffffffffffffffffffffffffffffffffffffffff8416907f1f32c1b084e2de0713b8fb16bd46bb9df710a3dbeae2f3ca93af46e016dcc6b090600090a35050565b604080517f4552433230546f6b656e28616464726573732900000000000000000000000000815290519081900360130190205b90565b60016020526000908152604090205460ff1681565b60606002805480602002602001604051908101604052809291908181526020018280548015610dd657602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610dab575b5050505050905090565b60005473ffffffffffffffffffffffffffffffffffffffff163314610e6657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811615610ec357600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790555b50565b815481835581811115610eea57600083815260209020610eea918101908301610eef565b505050565b610d5991905b80821115610f095760008155600101610ef5565b509056fea265627a7a72315820678203a694f32d3201b9fd3b5f9810a05ec594f10e9d40116b1e4f5f5436460a64736f6c63430005110032" + "object": "0x6080604052600080546001600160a01b03191633179055610f42806100256000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80639ad2674411610076578063b91816111161005b578063b918161114610374578063d39de6e9146103bb578063f2fde38b14610413576100a3565b80639ad26744146102fe578063ae25532e14610337576100a3565b806342f1181e14610248578063494503d41461027d57806370712939146102c35780638da5cb5b146102f6575b7fffffffff00000000000000000000000000000000000000000000000000000000600035167fa85e59e40000000000000000000000000000000000000000000000000000000081141561024257604080513381526001602082015290812054610177577f08c379a0000000000000000000000000000000000000000000000000000000006000527c20000000000000000000000000000000000000000000000000000000006020527c1553454e4445525f4e4f545f415554484f52495a454400000000000000604052600060605260646000fd5b50602860043501357f23b872dd0000000000000000000000000000000000000000000000000000000060005260606024600437602060006064600080855af1600080511160203d14163d15178116905080156101cf57005b50507f08c379a0000000000000000000000000000000000000000000000000000000006000527c20000000000000000000000000000000000000000000000000000000006020527c0f5452414e534645525f4641494c454400000000000000000000000000604052600060605260646000fd5b50600080fd5b61027b6004803603602081101561025e57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610446565b005b61029a6004803603602081101561029357600080fd5b5035610632565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61027b600480360360208110156102d957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610666565b61029a610959565b61027b6004803603604081101561031457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610975565b61033f610d26565b604080517fffffffff000000000000000000000000000000000000000000000000000000009092168252519081900360200190f35b6103a76004803603602081101561038a57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610d5c565b604080519115158252519081900360200190f35b6103c3610d71565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156103ff5781810151838201526020016103e7565b505050509050019250505060405180910390f35b61027b6004803603602081101561042957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610de0565b60005473ffffffffffffffffffffffffffffffffffffffff1633146104cc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff161561056157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f5441524745545f414c52454144595f415554484f52495a454400000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168317905560028054928301815583527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001684179055513392917f3147867c59d17e8fa9d522465651d44aae0a9e38f902f3475b97e58072f0ed4c91a350565b6002818154811061063f57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b60005473ffffffffffffffffffffffffffffffffffffffff1633146106ec57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff1661078057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f5441524745545f4e4f545f415554484f52495a45440000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116600090815260016020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555b600254811015610912578173ffffffffffffffffffffffffffffffffffffffff16600282815481106107fa57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16141561090a57600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810190811061085257fe5b6000918252602090912001546002805473ffffffffffffffffffffffffffffffffffffffff909216918390811061088557fe5b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01906109049082610ec6565b50610912565b6001016107cc565b50604051339073ffffffffffffffffffffffffffffffffffffffff8316907f1f32c1b084e2de0713b8fb16bd46bb9df710a3dbeae2f3ca93af46e016dcc6b090600090a350565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff1633146109fb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205460ff16610a8f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f5441524745545f4e4f545f415554484f52495a45440000000000000000000000604482015290519081900360640190fd5b6002548110610aff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e4445585f4f55545f4f465f424f554e445300000000000000000000000000604482015290519081900360640190fd5b8173ffffffffffffffffffffffffffffffffffffffff1660028281548110610b2357fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1614610bb157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f415554484f52495a45445f414444524553535f4d49534d415443480000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101908110610c2c57fe5b6000918252602090912001546002805473ffffffffffffffffffffffffffffffffffffffff9092169183908110610c5f57fe5b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190610cde9082610ec6565b50604051339073ffffffffffffffffffffffffffffffffffffffff8416907f1f32c1b084e2de0713b8fb16bd46bb9df710a3dbeae2f3ca93af46e016dcc6b090600090a35050565b604080517f4552433230546f6b656e28616464726573732900000000000000000000000000815290519081900360130190205b90565b60016020526000908152604090205460ff1681565b60606002805480602002602001604051908101604052809291908181526020018280548015610dd657602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610dab575b5050505050905090565b60005473ffffffffffffffffffffffffffffffffffffffff163314610e6657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811615610ec357600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790555b50565b815481835581811115610eea57600083815260209020610eea918101908301610eef565b505050565b610d5991905b80821115610f095760008155600101610ef5565b509056fea265627a7a723158207ccf86568ac7d2af0c99095d73889c90f2f9355552394e7a1b9573c04cc9712664736f6c63430005110032" }, "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b50600436106100a35760003560e01c80639ad2674411610076578063b91816111161005b578063b918161114610374578063d39de6e9146103bb578063f2fde38b14610413576100a3565b80639ad26744146102fe578063ae25532e14610337576100a3565b806342f1181e14610248578063494503d41461027d57806370712939146102c35780638da5cb5b146102f6575b7fffffffff00000000000000000000000000000000000000000000000000000000600035167fa85e59e40000000000000000000000000000000000000000000000000000000081141561024257604080513381526001602082015290812054610177577f08c379a0000000000000000000000000000000000000000000000000000000006000527c20000000000000000000000000000000000000000000000000000000006020527c1553454e4445525f4e4f545f415554484f52495a454400000000000000604052600060605260646000fd5b50602860043501357f23b872dd0000000000000000000000000000000000000000000000000000000060005260606024600437602060006064600080855af1600080511160203d14163d15178116905080156101cf57005b50507f08c379a0000000000000000000000000000000000000000000000000000000006000527c20000000000000000000000000000000000000000000000000000000006020527c0f5452414e534645525f4641494c454400000000000000000000000000604052600060605260646000fd5b50600080fd5b61027b6004803603602081101561025e57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610446565b005b61029a6004803603602081101561029357600080fd5b5035610632565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61027b600480360360208110156102d957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610666565b61029a610959565b61027b6004803603604081101561031457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610975565b61033f610d26565b604080517fffffffff000000000000000000000000000000000000000000000000000000009092168252519081900360200190f35b6103a76004803603602081101561038a57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610d5c565b604080519115158252519081900360200190f35b6103c3610d71565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156103ff5781810151838201526020016103e7565b505050509050019250505060405180910390f35b61027b6004803603602081101561042957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610de0565b60005473ffffffffffffffffffffffffffffffffffffffff1633146104cc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff161561056157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f5441524745545f414c52454144595f415554484f52495a454400000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168317905560028054928301815583527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001684179055513392917f3147867c59d17e8fa9d522465651d44aae0a9e38f902f3475b97e58072f0ed4c91a350565b6002818154811061063f57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b60005473ffffffffffffffffffffffffffffffffffffffff1633146106ec57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff1661078057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f5441524745545f4e4f545f415554484f52495a45440000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116600090815260016020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555b600254811015610912578173ffffffffffffffffffffffffffffffffffffffff16600282815481106107fa57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16141561090a57600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810190811061085257fe5b6000918252602090912001546002805473ffffffffffffffffffffffffffffffffffffffff909216918390811061088557fe5b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01906109049082610ec6565b50610912565b6001016107cc565b50604051339073ffffffffffffffffffffffffffffffffffffffff8316907f1f32c1b084e2de0713b8fb16bd46bb9df710a3dbeae2f3ca93af46e016dcc6b090600090a350565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff1633146109fb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205460ff16610a8f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f5441524745545f4e4f545f415554484f52495a45440000000000000000000000604482015290519081900360640190fd5b6002548110610aff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e4445585f4f55545f4f465f424f554e445300000000000000000000000000604482015290519081900360640190fd5b8173ffffffffffffffffffffffffffffffffffffffff1660028281548110610b2357fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1614610bb157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f415554484f52495a45445f414444524553535f4d49534d415443480000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101908110610c2c57fe5b6000918252602090912001546002805473ffffffffffffffffffffffffffffffffffffffff9092169183908110610c5f57fe5b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190610cde9082610ec6565b50604051339073ffffffffffffffffffffffffffffffffffffffff8416907f1f32c1b084e2de0713b8fb16bd46bb9df710a3dbeae2f3ca93af46e016dcc6b090600090a35050565b604080517f4552433230546f6b656e28616464726573732900000000000000000000000000815290519081900360130190205b90565b60016020526000908152604090205460ff1681565b60606002805480602002602001604051908101604052809291908181526020018280548015610dd657602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610dab575b5050505050905090565b60005473ffffffffffffffffffffffffffffffffffffffff163314610e6657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811615610ec357600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790555b50565b815481835581811115610eea57600083815260209020610eea918101908301610eef565b505050565b610d5991905b80821115610f095760008155600101610ef5565b509056fea265627a7a72315820678203a694f32d3201b9fd3b5f9810a05ec594f10e9d40116b1e4f5f5436460a64736f6c63430005110032" + "object": "0x608060405234801561001057600080fd5b50600436106100a35760003560e01c80639ad2674411610076578063b91816111161005b578063b918161114610374578063d39de6e9146103bb578063f2fde38b14610413576100a3565b80639ad26744146102fe578063ae25532e14610337576100a3565b806342f1181e14610248578063494503d41461027d57806370712939146102c35780638da5cb5b146102f6575b7fffffffff00000000000000000000000000000000000000000000000000000000600035167fa85e59e40000000000000000000000000000000000000000000000000000000081141561024257604080513381526001602082015290812054610177577f08c379a0000000000000000000000000000000000000000000000000000000006000527c20000000000000000000000000000000000000000000000000000000006020527c1553454e4445525f4e4f545f415554484f52495a454400000000000000604052600060605260646000fd5b50602860043501357f23b872dd0000000000000000000000000000000000000000000000000000000060005260606024600437602060006064600080855af1600080511160203d14163d15178116905080156101cf57005b50507f08c379a0000000000000000000000000000000000000000000000000000000006000527c20000000000000000000000000000000000000000000000000000000006020527c0f5452414e534645525f4641494c454400000000000000000000000000604052600060605260646000fd5b50600080fd5b61027b6004803603602081101561025e57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610446565b005b61029a6004803603602081101561029357600080fd5b5035610632565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61027b600480360360208110156102d957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610666565b61029a610959565b61027b6004803603604081101561031457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610975565b61033f610d26565b604080517fffffffff000000000000000000000000000000000000000000000000000000009092168252519081900360200190f35b6103a76004803603602081101561038a57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610d5c565b604080519115158252519081900360200190f35b6103c3610d71565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156103ff5781810151838201526020016103e7565b505050509050019250505060405180910390f35b61027b6004803603602081101561042957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610de0565b60005473ffffffffffffffffffffffffffffffffffffffff1633146104cc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff161561056157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f5441524745545f414c52454144595f415554484f52495a454400000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168317905560028054928301815583527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001684179055513392917f3147867c59d17e8fa9d522465651d44aae0a9e38f902f3475b97e58072f0ed4c91a350565b6002818154811061063f57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b60005473ffffffffffffffffffffffffffffffffffffffff1633146106ec57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff1661078057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f5441524745545f4e4f545f415554484f52495a45440000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116600090815260016020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555b600254811015610912578173ffffffffffffffffffffffffffffffffffffffff16600282815481106107fa57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16141561090a57600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810190811061085257fe5b6000918252602090912001546002805473ffffffffffffffffffffffffffffffffffffffff909216918390811061088557fe5b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01906109049082610ec6565b50610912565b6001016107cc565b50604051339073ffffffffffffffffffffffffffffffffffffffff8316907f1f32c1b084e2de0713b8fb16bd46bb9df710a3dbeae2f3ca93af46e016dcc6b090600090a350565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff1633146109fb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205460ff16610a8f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f5441524745545f4e4f545f415554484f52495a45440000000000000000000000604482015290519081900360640190fd5b6002548110610aff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e4445585f4f55545f4f465f424f554e445300000000000000000000000000604482015290519081900360640190fd5b8173ffffffffffffffffffffffffffffffffffffffff1660028281548110610b2357fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1614610bb157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f415554484f52495a45445f414444524553535f4d49534d415443480000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101908110610c2c57fe5b6000918252602090912001546002805473ffffffffffffffffffffffffffffffffffffffff9092169183908110610c5f57fe5b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190610cde9082610ec6565b50604051339073ffffffffffffffffffffffffffffffffffffffff8416907f1f32c1b084e2de0713b8fb16bd46bb9df710a3dbeae2f3ca93af46e016dcc6b090600090a35050565b604080517f4552433230546f6b656e28616464726573732900000000000000000000000000815290519081900360130190205b90565b60016020526000908152604090205460ff1681565b60606002805480602002602001604051908101604052809291908181526020018280548015610dd657602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610dab575b5050505050905090565b60005473ffffffffffffffffffffffffffffffffffffffff163314610e6657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811615610ec357600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790555b50565b815481835581811115610eea57600083815260209020610eea918101908301610eef565b505050565b610d5991905b80821115610f095760008155600101610ef5565b509056fea265627a7a723158207ccf86568ac7d2af0c99095d73889c90f2f9355552394e7a1b9573c04cc9712664736f6c63430005110032" } } }, diff --git a/packages/contract-artifacts/artifacts/ERC20Token.json b/packages/contract-artifacts/artifacts/ERC20Token.json index 5d2b2deea3..ccad45d321 100644 --- a/packages/contract-artifacts/artifacts/ERC20Token.json +++ b/packages/contract-artifacts/artifacts/ERC20Token.json @@ -135,16 +135,16 @@ }, "evm": { "bytecode": { - "object": "0x608060405234801561001057600080fd5b506106bf806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806370a082311161005057806370a0823114610121578063a9059cbb14610154578063dd62ed3e1461018d57610072565b8063095ea7b31461007757806318160ddd146100c457806323b872dd146100de575b600080fd5b6100b06004803603604081101561008d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356101c8565b604080519115158252519081900360200190f35b6100cc61023b565b60408051918252519081900360200190f35b6100b0600480360360608110156100f457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610241565b6100cc6004803603602081101561013757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661049d565b6100b06004803603604081101561016a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356104c5565b6100cc600480360360408110156101a357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610652565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b60025490565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120548211156102d557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f45524332305f494e53554646494349454e545f42414c414e4345000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8416600090815260016020908152604080832033845290915290205482111561037457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f45524332305f494e53554646494349454e545f414c4c4f57414e434500000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054828101101561040a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f55494e543235365f4f564552464c4f5700000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff80841660008181526020818152604080832080548801905593881680835284832080548890039055600182528483203384528252918490208054879003905583518681529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35060019392505050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b3360009081526020819052604081205482111561054357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f45524332305f494e53554646494349454e545f42414c414e4345000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205482810110156105d957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f55494e543235365f4f564552464c4f5700000000000000000000000000000000604482015290519081900360640190fd5b336000818152602081815260408083208054879003905573ffffffffffffffffffffffffffffffffffffffff871680845292819020805487019055805186815290519293927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a350600192915050565b73ffffffffffffffffffffffffffffffffffffffff91821660009081526001602090815260408083209390941682529190915220549056fea265627a7a7231582070f49f484b4453d39e46e7ea480d884eab704629143f1e11635201cbb0995b2164736f6c63430005110032" + "object": "0x608060405234801561001057600080fd5b506106bf806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806370a082311161005057806370a0823114610121578063a9059cbb14610154578063dd62ed3e1461018d57610072565b8063095ea7b31461007757806318160ddd146100c457806323b872dd146100de575b600080fd5b6100b06004803603604081101561008d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356101c8565b604080519115158252519081900360200190f35b6100cc61023b565b60408051918252519081900360200190f35b6100b0600480360360608110156100f457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610241565b6100cc6004803603602081101561013757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661049d565b6100b06004803603604081101561016a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356104c5565b6100cc600480360360408110156101a357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610652565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b60025490565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120548211156102d557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f45524332305f494e53554646494349454e545f42414c414e4345000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8416600090815260016020908152604080832033845290915290205482111561037457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f45524332305f494e53554646494349454e545f414c4c4f57414e434500000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054828101101561040a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f55494e543235365f4f564552464c4f5700000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff80841660008181526020818152604080832080548801905593881680835284832080548890039055600182528483203384528252918490208054879003905583518681529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35060019392505050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b3360009081526020819052604081205482111561054357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f45524332305f494e53554646494349454e545f42414c414e4345000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205482810110156105d957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f55494e543235365f4f564552464c4f5700000000000000000000000000000000604482015290519081900360640190fd5b336000818152602081815260408083208054879003905573ffffffffffffffffffffffffffffffffffffffff871680845292819020805487019055805186815290519293927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a350600192915050565b73ffffffffffffffffffffffffffffffffffffffff91821660009081526001602090815260408083209390941682529190915220549056fea265627a7a723158200a0e5b4813b81b4a59cf323e9296dbdc12eadc2b35caf21c2052aa9fc5df88b364736f6c63430005110032" }, "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b50600436106100725760003560e01c806370a082311161005057806370a0823114610121578063a9059cbb14610154578063dd62ed3e1461018d57610072565b8063095ea7b31461007757806318160ddd146100c457806323b872dd146100de575b600080fd5b6100b06004803603604081101561008d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356101c8565b604080519115158252519081900360200190f35b6100cc61023b565b60408051918252519081900360200190f35b6100b0600480360360608110156100f457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610241565b6100cc6004803603602081101561013757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661049d565b6100b06004803603604081101561016a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356104c5565b6100cc600480360360408110156101a357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610652565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b60025490565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120548211156102d557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f45524332305f494e53554646494349454e545f42414c414e4345000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8416600090815260016020908152604080832033845290915290205482111561037457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f45524332305f494e53554646494349454e545f414c4c4f57414e434500000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054828101101561040a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f55494e543235365f4f564552464c4f5700000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff80841660008181526020818152604080832080548801905593881680835284832080548890039055600182528483203384528252918490208054879003905583518681529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35060019392505050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b3360009081526020819052604081205482111561054357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f45524332305f494e53554646494349454e545f42414c414e4345000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205482810110156105d957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f55494e543235365f4f564552464c4f5700000000000000000000000000000000604482015290519081900360640190fd5b336000818152602081815260408083208054879003905573ffffffffffffffffffffffffffffffffffffffff871680845292819020805487019055805186815290519293927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a350600192915050565b73ffffffffffffffffffffffffffffffffffffffff91821660009081526001602090815260408083209390941682529190915220549056fea265627a7a7231582070f49f484b4453d39e46e7ea480d884eab704629143f1e11635201cbb0995b2164736f6c63430005110032" + "object": "0x608060405234801561001057600080fd5b50600436106100725760003560e01c806370a082311161005057806370a0823114610121578063a9059cbb14610154578063dd62ed3e1461018d57610072565b8063095ea7b31461007757806318160ddd146100c457806323b872dd146100de575b600080fd5b6100b06004803603604081101561008d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356101c8565b604080519115158252519081900360200190f35b6100cc61023b565b60408051918252519081900360200190f35b6100b0600480360360608110156100f457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610241565b6100cc6004803603602081101561013757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661049d565b6100b06004803603604081101561016a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356104c5565b6100cc600480360360408110156101a357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610652565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b60025490565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120548211156102d557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f45524332305f494e53554646494349454e545f42414c414e4345000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8416600090815260016020908152604080832033845290915290205482111561037457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f45524332305f494e53554646494349454e545f414c4c4f57414e434500000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054828101101561040a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f55494e543235365f4f564552464c4f5700000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff80841660008181526020818152604080832080548801905593881680835284832080548890039055600182528483203384528252918490208054879003905583518681529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35060019392505050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b3360009081526020819052604081205482111561054357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f45524332305f494e53554646494349454e545f42414c414e4345000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205482810110156105d957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f55494e543235365f4f564552464c4f5700000000000000000000000000000000604482015290519081900360640190fd5b336000818152602081815260408083208054879003905573ffffffffffffffffffffffffffffffffffffffff871680845292819020805487019055805186815290519293927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a350600192915050565b73ffffffffffffffffffffffffffffffffffffffff91821660009081526001602090815260408083209390941682529190915220549056fea265627a7a723158200a0e5b4813b81b4a59cf323e9296dbdc12eadc2b35caf21c2052aa9fc5df88b364736f6c63430005110032" } } }, "compiler": { "name": "solc", - "version": "soljson-v0.5.17+commit.d19bba13.js", + "version": "0.5.17+commit.d19bba13", "settings": { "optimizer": { "enabled": true, diff --git a/packages/contract-artifacts/artifacts/ERC721Proxy.json b/packages/contract-artifacts/artifacts/ERC721Proxy.json index 439ffca216..36b2466d47 100644 --- a/packages/contract-artifacts/artifacts/ERC721Proxy.json +++ b/packages/contract-artifacts/artifacts/ERC721Proxy.json @@ -145,10 +145,10 @@ }, "evm": { "bytecode": { - "object": "0x6080604052600080546001600160a01b03191633179055610fb8806100256000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80639ad2674411610076578063b91816111161005b578063b9181611146103ea578063d39de6e914610431578063f2fde38b14610489576100a3565b80639ad2674414610374578063ae25532e146103ad576100a3565b806342f1181e146102be578063494503d4146102f357806370712939146103395780638da5cb5b1461036c575b7fffffffff00000000000000000000000000000000000000000000000000000000600035167fa85e59e4000000000000000000000000000000000000000000000000000000008114156102b857604080513381526001602082015290812054610177577f08c379a0000000000000000000000000000000000000000000000000000000006000527c20000000000000000000000000000000000000000000000000000000006020527c1553454e4445525f4e4f545f415554484f52495a454400000000000000604052600060605260646000fd5b50600160643503156101f4577f08c379a0000000000000000000000000000000000000000000000000000000006000527c20000000000000000000000000000000000000000000000000000000006020527c0e494e56414c49445f414d4f554e540000000000000000000000000000604052600060605260646000fd5b7f23b872dd000000000000000000000000000000000000000000000000000000006000526040602460043760043560206048820160443760288101356000806064600080855af1915050801561024657005b507f08c379a0000000000000000000000000000000000000000000000000000000006000527c20000000000000000000000000000000000000000000000000000000006020527c0f5452414e534645525f4641494c454400000000000000000000000000604052600060605260646000fd5b50600080fd5b6102f1600480360360208110156102d457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104bc565b005b6103106004803603602081101561030957600080fd5b50356106a8565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6102f16004803603602081101561034f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166106dc565b6103106109cf565b6102f16004803603604081101561038a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356109eb565b6103b5610d9c565b604080517fffffffff000000000000000000000000000000000000000000000000000000009092168252519081900360200190f35b61041d6004803603602081101561040057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610dd2565b604080519115158252519081900360200190f35b610439610de7565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561047557818101518382015260200161045d565b505050509050019250505060405180910390f35b6102f16004803603602081101561049f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610e56565b60005473ffffffffffffffffffffffffffffffffffffffff16331461054257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff16156105d757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f5441524745545f414c52454144595f415554484f52495a454400000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168317905560028054928301815583527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001684179055513392917f3147867c59d17e8fa9d522465651d44aae0a9e38f902f3475b97e58072f0ed4c91a350565b600281815481106106b557fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b60005473ffffffffffffffffffffffffffffffffffffffff16331461076257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff166107f657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f5441524745545f4e4f545f415554484f52495a45440000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116600090815260016020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555b600254811015610988578173ffffffffffffffffffffffffffffffffffffffff166002828154811061087057fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16141561098057600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81019081106108c857fe5b6000918252602090912001546002805473ffffffffffffffffffffffffffffffffffffffff90921691839081106108fb57fe5b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019061097a9082610f3c565b50610988565b600101610842565b50604051339073ffffffffffffffffffffffffffffffffffffffff8316907f1f32c1b084e2de0713b8fb16bd46bb9df710a3dbeae2f3ca93af46e016dcc6b090600090a350565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff163314610a7157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205460ff16610b0557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f5441524745545f4e4f545f415554484f52495a45440000000000000000000000604482015290519081900360640190fd5b6002548110610b7557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e4445585f4f55545f4f465f424f554e445300000000000000000000000000604482015290519081900360640190fd5b8173ffffffffffffffffffffffffffffffffffffffff1660028281548110610b9957fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1614610c2757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f415554484f52495a45445f414444524553535f4d49534d415443480000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101908110610ca257fe5b6000918252602090912001546002805473ffffffffffffffffffffffffffffffffffffffff9092169183908110610cd557fe5b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190610d549082610f3c565b50604051339073ffffffffffffffffffffffffffffffffffffffff8416907f1f32c1b084e2de0713b8fb16bd46bb9df710a3dbeae2f3ca93af46e016dcc6b090600090a35050565b604080517f455243373231546f6b656e28616464726573732c75696e7432353629000000008152905190819003601c0190205b90565b60016020526000908152604090205460ff1681565b60606002805480602002602001604051908101604052809291908181526020018280548015610e4c57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610e21575b5050505050905090565b60005473ffffffffffffffffffffffffffffffffffffffff163314610edc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811615610f3957600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790555b50565b815481835581811115610f6057600083815260209020610f60918101908301610f65565b505050565b610dcf91905b80821115610f7f5760008155600101610f6b565b509056fea265627a7a72315820885e95f9e54ae277ee6492abfec2fd9d558f38a9024b66a84e2eb7e967b9173464736f6c63430005110032" + "object": "0x6080604052600080546001600160a01b03191633179055610fb8806100256000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80639ad2674411610076578063b91816111161005b578063b9181611146103ea578063d39de6e914610431578063f2fde38b14610489576100a3565b80639ad2674414610374578063ae25532e146103ad576100a3565b806342f1181e146102be578063494503d4146102f357806370712939146103395780638da5cb5b1461036c575b7fffffffff00000000000000000000000000000000000000000000000000000000600035167fa85e59e4000000000000000000000000000000000000000000000000000000008114156102b857604080513381526001602082015290812054610177577f08c379a0000000000000000000000000000000000000000000000000000000006000527c20000000000000000000000000000000000000000000000000000000006020527c1553454e4445525f4e4f545f415554484f52495a454400000000000000604052600060605260646000fd5b50600160643503156101f4577f08c379a0000000000000000000000000000000000000000000000000000000006000527c20000000000000000000000000000000000000000000000000000000006020527c0e494e56414c49445f414d4f554e540000000000000000000000000000604052600060605260646000fd5b7f23b872dd000000000000000000000000000000000000000000000000000000006000526040602460043760043560206048820160443760288101356000806064600080855af1915050801561024657005b507f08c379a0000000000000000000000000000000000000000000000000000000006000527c20000000000000000000000000000000000000000000000000000000006020527c0f5452414e534645525f4641494c454400000000000000000000000000604052600060605260646000fd5b50600080fd5b6102f1600480360360208110156102d457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104bc565b005b6103106004803603602081101561030957600080fd5b50356106a8565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6102f16004803603602081101561034f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166106dc565b6103106109cf565b6102f16004803603604081101561038a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356109eb565b6103b5610d9c565b604080517fffffffff000000000000000000000000000000000000000000000000000000009092168252519081900360200190f35b61041d6004803603602081101561040057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610dd2565b604080519115158252519081900360200190f35b610439610de7565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561047557818101518382015260200161045d565b505050509050019250505060405180910390f35b6102f16004803603602081101561049f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610e56565b60005473ffffffffffffffffffffffffffffffffffffffff16331461054257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff16156105d757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f5441524745545f414c52454144595f415554484f52495a454400000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168317905560028054928301815583527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001684179055513392917f3147867c59d17e8fa9d522465651d44aae0a9e38f902f3475b97e58072f0ed4c91a350565b600281815481106106b557fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b60005473ffffffffffffffffffffffffffffffffffffffff16331461076257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff166107f657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f5441524745545f4e4f545f415554484f52495a45440000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116600090815260016020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555b600254811015610988578173ffffffffffffffffffffffffffffffffffffffff166002828154811061087057fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16141561098057600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81019081106108c857fe5b6000918252602090912001546002805473ffffffffffffffffffffffffffffffffffffffff90921691839081106108fb57fe5b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019061097a9082610f3c565b50610988565b600101610842565b50604051339073ffffffffffffffffffffffffffffffffffffffff8316907f1f32c1b084e2de0713b8fb16bd46bb9df710a3dbeae2f3ca93af46e016dcc6b090600090a350565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff163314610a7157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205460ff16610b0557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f5441524745545f4e4f545f415554484f52495a45440000000000000000000000604482015290519081900360640190fd5b6002548110610b7557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e4445585f4f55545f4f465f424f554e445300000000000000000000000000604482015290519081900360640190fd5b8173ffffffffffffffffffffffffffffffffffffffff1660028281548110610b9957fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1614610c2757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f415554484f52495a45445f414444524553535f4d49534d415443480000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101908110610ca257fe5b6000918252602090912001546002805473ffffffffffffffffffffffffffffffffffffffff9092169183908110610cd557fe5b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190610d549082610f3c565b50604051339073ffffffffffffffffffffffffffffffffffffffff8416907f1f32c1b084e2de0713b8fb16bd46bb9df710a3dbeae2f3ca93af46e016dcc6b090600090a35050565b604080517f455243373231546f6b656e28616464726573732c75696e7432353629000000008152905190819003601c0190205b90565b60016020526000908152604090205460ff1681565b60606002805480602002602001604051908101604052809291908181526020018280548015610e4c57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610e21575b5050505050905090565b60005473ffffffffffffffffffffffffffffffffffffffff163314610edc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811615610f3957600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790555b50565b815481835581811115610f6057600083815260209020610f60918101908301610f65565b505050565b610dcf91905b80821115610f7f5760008155600101610f6b565b509056fea265627a7a72315820d6f2247b22180f3448f839ee605281506f4f39b9c0459c0b823f2b74b369e62a64736f6c63430005110032" }, "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b50600436106100a35760003560e01c80639ad2674411610076578063b91816111161005b578063b9181611146103ea578063d39de6e914610431578063f2fde38b14610489576100a3565b80639ad2674414610374578063ae25532e146103ad576100a3565b806342f1181e146102be578063494503d4146102f357806370712939146103395780638da5cb5b1461036c575b7fffffffff00000000000000000000000000000000000000000000000000000000600035167fa85e59e4000000000000000000000000000000000000000000000000000000008114156102b857604080513381526001602082015290812054610177577f08c379a0000000000000000000000000000000000000000000000000000000006000527c20000000000000000000000000000000000000000000000000000000006020527c1553454e4445525f4e4f545f415554484f52495a454400000000000000604052600060605260646000fd5b50600160643503156101f4577f08c379a0000000000000000000000000000000000000000000000000000000006000527c20000000000000000000000000000000000000000000000000000000006020527c0e494e56414c49445f414d4f554e540000000000000000000000000000604052600060605260646000fd5b7f23b872dd000000000000000000000000000000000000000000000000000000006000526040602460043760043560206048820160443760288101356000806064600080855af1915050801561024657005b507f08c379a0000000000000000000000000000000000000000000000000000000006000527c20000000000000000000000000000000000000000000000000000000006020527c0f5452414e534645525f4641494c454400000000000000000000000000604052600060605260646000fd5b50600080fd5b6102f1600480360360208110156102d457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104bc565b005b6103106004803603602081101561030957600080fd5b50356106a8565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6102f16004803603602081101561034f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166106dc565b6103106109cf565b6102f16004803603604081101561038a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356109eb565b6103b5610d9c565b604080517fffffffff000000000000000000000000000000000000000000000000000000009092168252519081900360200190f35b61041d6004803603602081101561040057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610dd2565b604080519115158252519081900360200190f35b610439610de7565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561047557818101518382015260200161045d565b505050509050019250505060405180910390f35b6102f16004803603602081101561049f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610e56565b60005473ffffffffffffffffffffffffffffffffffffffff16331461054257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff16156105d757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f5441524745545f414c52454144595f415554484f52495a454400000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168317905560028054928301815583527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001684179055513392917f3147867c59d17e8fa9d522465651d44aae0a9e38f902f3475b97e58072f0ed4c91a350565b600281815481106106b557fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b60005473ffffffffffffffffffffffffffffffffffffffff16331461076257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff166107f657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f5441524745545f4e4f545f415554484f52495a45440000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116600090815260016020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555b600254811015610988578173ffffffffffffffffffffffffffffffffffffffff166002828154811061087057fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16141561098057600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81019081106108c857fe5b6000918252602090912001546002805473ffffffffffffffffffffffffffffffffffffffff90921691839081106108fb57fe5b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019061097a9082610f3c565b50610988565b600101610842565b50604051339073ffffffffffffffffffffffffffffffffffffffff8316907f1f32c1b084e2de0713b8fb16bd46bb9df710a3dbeae2f3ca93af46e016dcc6b090600090a350565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff163314610a7157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205460ff16610b0557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f5441524745545f4e4f545f415554484f52495a45440000000000000000000000604482015290519081900360640190fd5b6002548110610b7557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e4445585f4f55545f4f465f424f554e445300000000000000000000000000604482015290519081900360640190fd5b8173ffffffffffffffffffffffffffffffffffffffff1660028281548110610b9957fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1614610c2757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f415554484f52495a45445f414444524553535f4d49534d415443480000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101908110610ca257fe5b6000918252602090912001546002805473ffffffffffffffffffffffffffffffffffffffff9092169183908110610cd557fe5b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190610d549082610f3c565b50604051339073ffffffffffffffffffffffffffffffffffffffff8416907f1f32c1b084e2de0713b8fb16bd46bb9df710a3dbeae2f3ca93af46e016dcc6b090600090a35050565b604080517f455243373231546f6b656e28616464726573732c75696e7432353629000000008152905190819003601c0190205b90565b60016020526000908152604090205460ff1681565b60606002805480602002602001604051908101604052809291908181526020018280548015610e4c57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610e21575b5050505050905090565b60005473ffffffffffffffffffffffffffffffffffffffff163314610edc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811615610f3957600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790555b50565b815481835581811115610f6057600083815260209020610f60918101908301610f65565b505050565b610dcf91905b80821115610f7f5760008155600101610f6b565b509056fea265627a7a72315820885e95f9e54ae277ee6492abfec2fd9d558f38a9024b66a84e2eb7e967b9173464736f6c63430005110032" + "object": "0x608060405234801561001057600080fd5b50600436106100a35760003560e01c80639ad2674411610076578063b91816111161005b578063b9181611146103ea578063d39de6e914610431578063f2fde38b14610489576100a3565b80639ad2674414610374578063ae25532e146103ad576100a3565b806342f1181e146102be578063494503d4146102f357806370712939146103395780638da5cb5b1461036c575b7fffffffff00000000000000000000000000000000000000000000000000000000600035167fa85e59e4000000000000000000000000000000000000000000000000000000008114156102b857604080513381526001602082015290812054610177577f08c379a0000000000000000000000000000000000000000000000000000000006000527c20000000000000000000000000000000000000000000000000000000006020527c1553454e4445525f4e4f545f415554484f52495a454400000000000000604052600060605260646000fd5b50600160643503156101f4577f08c379a0000000000000000000000000000000000000000000000000000000006000527c20000000000000000000000000000000000000000000000000000000006020527c0e494e56414c49445f414d4f554e540000000000000000000000000000604052600060605260646000fd5b7f23b872dd000000000000000000000000000000000000000000000000000000006000526040602460043760043560206048820160443760288101356000806064600080855af1915050801561024657005b507f08c379a0000000000000000000000000000000000000000000000000000000006000527c20000000000000000000000000000000000000000000000000000000006020527c0f5452414e534645525f4641494c454400000000000000000000000000604052600060605260646000fd5b50600080fd5b6102f1600480360360208110156102d457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104bc565b005b6103106004803603602081101561030957600080fd5b50356106a8565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6102f16004803603602081101561034f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166106dc565b6103106109cf565b6102f16004803603604081101561038a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356109eb565b6103b5610d9c565b604080517fffffffff000000000000000000000000000000000000000000000000000000009092168252519081900360200190f35b61041d6004803603602081101561040057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610dd2565b604080519115158252519081900360200190f35b610439610de7565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561047557818101518382015260200161045d565b505050509050019250505060405180910390f35b6102f16004803603602081101561049f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610e56565b60005473ffffffffffffffffffffffffffffffffffffffff16331461054257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff16156105d757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f5441524745545f414c52454144595f415554484f52495a454400000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168317905560028054928301815583527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001684179055513392917f3147867c59d17e8fa9d522465651d44aae0a9e38f902f3475b97e58072f0ed4c91a350565b600281815481106106b557fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b60005473ffffffffffffffffffffffffffffffffffffffff16331461076257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff166107f657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f5441524745545f4e4f545f415554484f52495a45440000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116600090815260016020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555b600254811015610988578173ffffffffffffffffffffffffffffffffffffffff166002828154811061087057fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16141561098057600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81019081106108c857fe5b6000918252602090912001546002805473ffffffffffffffffffffffffffffffffffffffff90921691839081106108fb57fe5b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019061097a9082610f3c565b50610988565b600101610842565b50604051339073ffffffffffffffffffffffffffffffffffffffff8316907f1f32c1b084e2de0713b8fb16bd46bb9df710a3dbeae2f3ca93af46e016dcc6b090600090a350565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff163314610a7157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205460ff16610b0557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f5441524745545f4e4f545f415554484f52495a45440000000000000000000000604482015290519081900360640190fd5b6002548110610b7557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e4445585f4f55545f4f465f424f554e445300000000000000000000000000604482015290519081900360640190fd5b8173ffffffffffffffffffffffffffffffffffffffff1660028281548110610b9957fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1614610c2757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f415554484f52495a45445f414444524553535f4d49534d415443480000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101908110610ca257fe5b6000918252602090912001546002805473ffffffffffffffffffffffffffffffffffffffff9092169183908110610cd557fe5b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190610d549082610f3c565b50604051339073ffffffffffffffffffffffffffffffffffffffff8416907f1f32c1b084e2de0713b8fb16bd46bb9df710a3dbeae2f3ca93af46e016dcc6b090600090a35050565b604080517f455243373231546f6b656e28616464726573732c75696e7432353629000000008152905190819003601c0190205b90565b60016020526000908152604090205460ff1681565b60606002805480602002602001604051908101604052809291908181526020018280548015610e4c57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610e21575b5050505050905090565b60005473ffffffffffffffffffffffffffffffffffffffff163314610edc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811615610f3957600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790555b50565b815481835581811115610f6057600083815260209020610f60918101908301610f65565b505050565b610dcf91905b80821115610f7f5760008155600101610f6b565b509056fea265627a7a72315820d6f2247b22180f3448f839ee605281506f4f39b9c0459c0b823f2b74b369e62a64736f6c63430005110032" } } }, diff --git a/packages/contract-artifacts/artifacts/ERC721Token.json b/packages/contract-artifacts/artifacts/ERC721Token.json index 776ed3a93e..7278441f53 100644 --- a/packages/contract-artifacts/artifacts/ERC721Token.json +++ b/packages/contract-artifacts/artifacts/ERC721Token.json @@ -201,16 +201,16 @@ }, "evm": { "bytecode": { - "object": "0x608060405234801561001057600080fd5b50610ec4806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80636352211e11610076578063a22cb4651161005b578063a22cb46514610211578063b88d4fde1461024c578063e985e9c5146102e9576100a3565b80636352211e146101af57806370a08231146101cc576100a3565b8063081812fc146100a8578063095ea7b3146100ee57806323b872dd1461012957806342842e0e1461016c575b600080fd5b6100c5600480360360208110156100be57600080fd5b5035610338565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6101276004803603604081101561010457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610360565b005b6101276004803603606081101561013f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610482565b6101276004803603606081101561018257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356107f5565b6100c5600480360360208110156101c557600080fd5b503561098f565b6101ff600480360360208110156101e257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610a26565b60408051918252519081900360200190f35b6101276004803603604081101561022757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001351515610ad3565b6101276004803603608081101561026257600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235811692602081013590911691604082013591908101906080810160608201356401000000008111156102aa57600080fd5b8201836020820111156102bc57600080fd5b803590602001918460018302840111640100000000831117156102de57600080fd5b509092509050610b6c565b610324600480360360408110156102ff57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610d37565b604080519115158252519081900360200190f35b60009081526001602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b600061036b8261098f565b90503373ffffffffffffffffffffffffffffffffffffffff8216148061039657506103968133610d37565b61040157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4552433732315f494e56414c49445f53454e4445520000000000000000000000604482015290519081900360640190fd5b60008281526001602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b73ffffffffffffffffffffffffffffffffffffffff821661050457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4552433732315f5a45524f5f544f5f4144445245535300000000000000000000604482015290519081900360640190fd5b600061050f8261098f565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146105ab57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4552433732315f4f574e45525f4d49534d415443480000000000000000000000604482015290519081900360640190fd5b3360006105b784610338565b90508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806105f857506105f88383610d37565b8061062e57508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b61069957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4552433732315f494e56414c49445f5350454e44455200000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116156106ea57600084815260016020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555b60008481526020818152604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8a811691909117909155891683526002909152902054610753906001610d72565b73ffffffffffffffffffffffffffffffffffffffff808816600090815260026020526040808220939093559087168152205461079690600163ffffffff610d9616565b73ffffffffffffffffffffffffffffffffffffffff808716600081815260026020526040808220949094559251879391928a16917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050505050565b610800838383610482565b813b801561098957604080517f150b7a0200000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8681166024830152604482018590526080606483015260006084830181905292519086169163150b7a029160c480830192602092919082900301818787803b15801561089557600080fd5b505af11580156108a9573d6000803e3d6000fd5b505050506040513d60208110156108bf57600080fd5b505160405190915080602f610e618239602f01905060405180910390207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461098757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4552433732315f494e56414c49445f53454c4543544f52000000000000000000604482015290519081900360640190fd5b505b50505050565b60008181526020819052604081205473ffffffffffffffffffffffffffffffffffffffff1680610a2057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4552433732315f5a45524f5f4f574e4552000000000000000000000000000000604482015290519081900360640190fd5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff8216610aaa57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4552433732315f5a45524f5f4f574e4552000000000000000000000000000000604482015290519081900360640190fd5b5073ffffffffffffffffffffffffffffffffffffffff1660009081526002602052604090205490565b33600081815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b610b77858585610482565b833b8015610d2f576040517f150b7a02000000000000000000000000000000000000000000000000000000008152336004820181815273ffffffffffffffffffffffffffffffffffffffff89811660248501526044840188905260806064850190815260848501879052600094918a169363150b7a029390928c928b928b928b929060a401848480828437600081840152601f19601f8201169050808301925050509650505050505050602060405180830381600087803b158015610c3b57600080fd5b505af1158015610c4f573d6000803e3d6000fd5b505050506040513d6020811015610c6557600080fd5b505160405190915080602f610e618239602f01905060405180910390207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614610d2d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4552433732315f494e56414c49445f53454c4543544f52000000000000000000604482015290519081900360640190fd5b505b505050505050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260036020908152604080832093909416825291909152205460ff1690565b600082821115610d9057610d90610d8b60028585610db9565b610e58565b50900390565b600082820183811015610db257610db2610d8b60008686610db9565b9392505050565b606063e946c1bb60e01b84848460405160240180846003811115610dd957fe5b60ff1681526020018381526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090509392505050565b805160208201fdfe6f6e455243373231526563656976656428616464726573732c616464726573732c75696e743235362c627974657329a265627a7a72315820fde66f1d6d6a3390b055e4bc98c4fb3e4c99623222871b43459555accf23b50264736f6c63430005110032" + "object": "0x608060405234801561001057600080fd5b50610ec4806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80636352211e11610076578063a22cb4651161005b578063a22cb46514610211578063b88d4fde1461024c578063e985e9c5146102e9576100a3565b80636352211e146101af57806370a08231146101cc576100a3565b8063081812fc146100a8578063095ea7b3146100ee57806323b872dd1461012957806342842e0e1461016c575b600080fd5b6100c5600480360360208110156100be57600080fd5b5035610338565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6101276004803603604081101561010457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610360565b005b6101276004803603606081101561013f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610482565b6101276004803603606081101561018257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356107f5565b6100c5600480360360208110156101c557600080fd5b503561098f565b6101ff600480360360208110156101e257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610a26565b60408051918252519081900360200190f35b6101276004803603604081101561022757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001351515610ad3565b6101276004803603608081101561026257600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235811692602081013590911691604082013591908101906080810160608201356401000000008111156102aa57600080fd5b8201836020820111156102bc57600080fd5b803590602001918460018302840111640100000000831117156102de57600080fd5b509092509050610b6c565b610324600480360360408110156102ff57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610d37565b604080519115158252519081900360200190f35b60009081526001602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b600061036b8261098f565b90503373ffffffffffffffffffffffffffffffffffffffff8216148061039657506103968133610d37565b61040157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4552433732315f494e56414c49445f53454e4445520000000000000000000000604482015290519081900360640190fd5b60008281526001602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b73ffffffffffffffffffffffffffffffffffffffff821661050457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4552433732315f5a45524f5f544f5f4144445245535300000000000000000000604482015290519081900360640190fd5b600061050f8261098f565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146105ab57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4552433732315f4f574e45525f4d49534d415443480000000000000000000000604482015290519081900360640190fd5b3360006105b784610338565b90508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806105f857506105f88383610d37565b8061062e57508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b61069957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4552433732315f494e56414c49445f5350454e44455200000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116156106ea57600084815260016020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555b60008481526020818152604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8a811691909117909155891683526002909152902054610753906001610d72565b73ffffffffffffffffffffffffffffffffffffffff808816600090815260026020526040808220939093559087168152205461079690600163ffffffff610d9616565b73ffffffffffffffffffffffffffffffffffffffff808716600081815260026020526040808220949094559251879391928a16917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050505050565b610800838383610482565b813b801561098957604080517f150b7a0200000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8681166024830152604482018590526080606483015260006084830181905292519086169163150b7a029160c480830192602092919082900301818787803b15801561089557600080fd5b505af11580156108a9573d6000803e3d6000fd5b505050506040513d60208110156108bf57600080fd5b505160405190915080602f610e618239602f01905060405180910390207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461098757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4552433732315f494e56414c49445f53454c4543544f52000000000000000000604482015290519081900360640190fd5b505b50505050565b60008181526020819052604081205473ffffffffffffffffffffffffffffffffffffffff1680610a2057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4552433732315f5a45524f5f4f574e4552000000000000000000000000000000604482015290519081900360640190fd5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff8216610aaa57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4552433732315f5a45524f5f4f574e4552000000000000000000000000000000604482015290519081900360640190fd5b5073ffffffffffffffffffffffffffffffffffffffff1660009081526002602052604090205490565b33600081815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b610b77858585610482565b833b8015610d2f576040517f150b7a02000000000000000000000000000000000000000000000000000000008152336004820181815273ffffffffffffffffffffffffffffffffffffffff89811660248501526044840188905260806064850190815260848501879052600094918a169363150b7a029390928c928b928b928b929060a401848480828437600081840152601f19601f8201169050808301925050509650505050505050602060405180830381600087803b158015610c3b57600080fd5b505af1158015610c4f573d6000803e3d6000fd5b505050506040513d6020811015610c6557600080fd5b505160405190915080602f610e618239602f01905060405180910390207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614610d2d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4552433732315f494e56414c49445f53454c4543544f52000000000000000000604482015290519081900360640190fd5b505b505050505050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260036020908152604080832093909416825291909152205460ff1690565b600082821115610d9057610d90610d8b60028585610db9565b610e58565b50900390565b600082820183811015610db257610db2610d8b60008686610db9565b9392505050565b606063e946c1bb60e01b84848460405160240180846003811115610dd957fe5b60ff1681526020018381526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090509392505050565b805160208201fdfe6f6e455243373231526563656976656428616464726573732c616464726573732c75696e743235362c627974657329a265627a7a72315820d532ca96ba1c16b6458dd96faaa78d697998b6c29562436a348548890a9427cf64736f6c63430005110032" }, "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b50600436106100a35760003560e01c80636352211e11610076578063a22cb4651161005b578063a22cb46514610211578063b88d4fde1461024c578063e985e9c5146102e9576100a3565b80636352211e146101af57806370a08231146101cc576100a3565b8063081812fc146100a8578063095ea7b3146100ee57806323b872dd1461012957806342842e0e1461016c575b600080fd5b6100c5600480360360208110156100be57600080fd5b5035610338565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6101276004803603604081101561010457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610360565b005b6101276004803603606081101561013f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610482565b6101276004803603606081101561018257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356107f5565b6100c5600480360360208110156101c557600080fd5b503561098f565b6101ff600480360360208110156101e257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610a26565b60408051918252519081900360200190f35b6101276004803603604081101561022757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001351515610ad3565b6101276004803603608081101561026257600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235811692602081013590911691604082013591908101906080810160608201356401000000008111156102aa57600080fd5b8201836020820111156102bc57600080fd5b803590602001918460018302840111640100000000831117156102de57600080fd5b509092509050610b6c565b610324600480360360408110156102ff57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610d37565b604080519115158252519081900360200190f35b60009081526001602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b600061036b8261098f565b90503373ffffffffffffffffffffffffffffffffffffffff8216148061039657506103968133610d37565b61040157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4552433732315f494e56414c49445f53454e4445520000000000000000000000604482015290519081900360640190fd5b60008281526001602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b73ffffffffffffffffffffffffffffffffffffffff821661050457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4552433732315f5a45524f5f544f5f4144445245535300000000000000000000604482015290519081900360640190fd5b600061050f8261098f565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146105ab57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4552433732315f4f574e45525f4d49534d415443480000000000000000000000604482015290519081900360640190fd5b3360006105b784610338565b90508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806105f857506105f88383610d37565b8061062e57508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b61069957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4552433732315f494e56414c49445f5350454e44455200000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116156106ea57600084815260016020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555b60008481526020818152604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8a811691909117909155891683526002909152902054610753906001610d72565b73ffffffffffffffffffffffffffffffffffffffff808816600090815260026020526040808220939093559087168152205461079690600163ffffffff610d9616565b73ffffffffffffffffffffffffffffffffffffffff808716600081815260026020526040808220949094559251879391928a16917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050505050565b610800838383610482565b813b801561098957604080517f150b7a0200000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8681166024830152604482018590526080606483015260006084830181905292519086169163150b7a029160c480830192602092919082900301818787803b15801561089557600080fd5b505af11580156108a9573d6000803e3d6000fd5b505050506040513d60208110156108bf57600080fd5b505160405190915080602f610e618239602f01905060405180910390207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461098757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4552433732315f494e56414c49445f53454c4543544f52000000000000000000604482015290519081900360640190fd5b505b50505050565b60008181526020819052604081205473ffffffffffffffffffffffffffffffffffffffff1680610a2057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4552433732315f5a45524f5f4f574e4552000000000000000000000000000000604482015290519081900360640190fd5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff8216610aaa57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4552433732315f5a45524f5f4f574e4552000000000000000000000000000000604482015290519081900360640190fd5b5073ffffffffffffffffffffffffffffffffffffffff1660009081526002602052604090205490565b33600081815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b610b77858585610482565b833b8015610d2f576040517f150b7a02000000000000000000000000000000000000000000000000000000008152336004820181815273ffffffffffffffffffffffffffffffffffffffff89811660248501526044840188905260806064850190815260848501879052600094918a169363150b7a029390928c928b928b928b929060a401848480828437600081840152601f19601f8201169050808301925050509650505050505050602060405180830381600087803b158015610c3b57600080fd5b505af1158015610c4f573d6000803e3d6000fd5b505050506040513d6020811015610c6557600080fd5b505160405190915080602f610e618239602f01905060405180910390207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614610d2d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4552433732315f494e56414c49445f53454c4543544f52000000000000000000604482015290519081900360640190fd5b505b505050505050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260036020908152604080832093909416825291909152205460ff1690565b600082821115610d9057610d90610d8b60028585610db9565b610e58565b50900390565b600082820183811015610db257610db2610d8b60008686610db9565b9392505050565b606063e946c1bb60e01b84848460405160240180846003811115610dd957fe5b60ff1681526020018381526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090509392505050565b805160208201fdfe6f6e455243373231526563656976656428616464726573732c616464726573732c75696e743235362c627974657329a265627a7a72315820fde66f1d6d6a3390b055e4bc98c4fb3e4c99623222871b43459555accf23b50264736f6c63430005110032" + "object": "0x608060405234801561001057600080fd5b50600436106100a35760003560e01c80636352211e11610076578063a22cb4651161005b578063a22cb46514610211578063b88d4fde1461024c578063e985e9c5146102e9576100a3565b80636352211e146101af57806370a08231146101cc576100a3565b8063081812fc146100a8578063095ea7b3146100ee57806323b872dd1461012957806342842e0e1461016c575b600080fd5b6100c5600480360360208110156100be57600080fd5b5035610338565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6101276004803603604081101561010457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610360565b005b6101276004803603606081101561013f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610482565b6101276004803603606081101561018257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356107f5565b6100c5600480360360208110156101c557600080fd5b503561098f565b6101ff600480360360208110156101e257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610a26565b60408051918252519081900360200190f35b6101276004803603604081101561022757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001351515610ad3565b6101276004803603608081101561026257600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235811692602081013590911691604082013591908101906080810160608201356401000000008111156102aa57600080fd5b8201836020820111156102bc57600080fd5b803590602001918460018302840111640100000000831117156102de57600080fd5b509092509050610b6c565b610324600480360360408110156102ff57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610d37565b604080519115158252519081900360200190f35b60009081526001602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b600061036b8261098f565b90503373ffffffffffffffffffffffffffffffffffffffff8216148061039657506103968133610d37565b61040157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4552433732315f494e56414c49445f53454e4445520000000000000000000000604482015290519081900360640190fd5b60008281526001602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b73ffffffffffffffffffffffffffffffffffffffff821661050457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4552433732315f5a45524f5f544f5f4144445245535300000000000000000000604482015290519081900360640190fd5b600061050f8261098f565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146105ab57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4552433732315f4f574e45525f4d49534d415443480000000000000000000000604482015290519081900360640190fd5b3360006105b784610338565b90508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806105f857506105f88383610d37565b8061062e57508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b61069957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4552433732315f494e56414c49445f5350454e44455200000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116156106ea57600084815260016020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555b60008481526020818152604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8a811691909117909155891683526002909152902054610753906001610d72565b73ffffffffffffffffffffffffffffffffffffffff808816600090815260026020526040808220939093559087168152205461079690600163ffffffff610d9616565b73ffffffffffffffffffffffffffffffffffffffff808716600081815260026020526040808220949094559251879391928a16917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050505050565b610800838383610482565b813b801561098957604080517f150b7a0200000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8681166024830152604482018590526080606483015260006084830181905292519086169163150b7a029160c480830192602092919082900301818787803b15801561089557600080fd5b505af11580156108a9573d6000803e3d6000fd5b505050506040513d60208110156108bf57600080fd5b505160405190915080602f610e618239602f01905060405180910390207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461098757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4552433732315f494e56414c49445f53454c4543544f52000000000000000000604482015290519081900360640190fd5b505b50505050565b60008181526020819052604081205473ffffffffffffffffffffffffffffffffffffffff1680610a2057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4552433732315f5a45524f5f4f574e4552000000000000000000000000000000604482015290519081900360640190fd5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff8216610aaa57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4552433732315f5a45524f5f4f574e4552000000000000000000000000000000604482015290519081900360640190fd5b5073ffffffffffffffffffffffffffffffffffffffff1660009081526002602052604090205490565b33600081815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b610b77858585610482565b833b8015610d2f576040517f150b7a02000000000000000000000000000000000000000000000000000000008152336004820181815273ffffffffffffffffffffffffffffffffffffffff89811660248501526044840188905260806064850190815260848501879052600094918a169363150b7a029390928c928b928b928b929060a401848480828437600081840152601f19601f8201169050808301925050509650505050505050602060405180830381600087803b158015610c3b57600080fd5b505af1158015610c4f573d6000803e3d6000fd5b505050506040513d6020811015610c6557600080fd5b505160405190915080602f610e618239602f01905060405180910390207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614610d2d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4552433732315f494e56414c49445f53454c4543544f52000000000000000000604482015290519081900360640190fd5b505b505050505050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260036020908152604080832093909416825291909152205460ff1690565b600082821115610d9057610d90610d8b60028585610db9565b610e58565b50900390565b600082820183811015610db257610db2610d8b60008686610db9565b9392505050565b606063e946c1bb60e01b84848460405160240180846003811115610dd957fe5b60ff1681526020018381526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090509392505050565b805160208201fdfe6f6e455243373231526563656976656428616464726573732c616464726573732c75696e743235362c627974657329a265627a7a72315820d532ca96ba1c16b6458dd96faaa78d697998b6c29562436a348548890a9427cf64736f6c63430005110032" } } }, "compiler": { "name": "solc", - "version": "soljson-v0.5.17+commit.d19bba13.js", + "version": "0.5.17+commit.d19bba13", "settings": { "optimizer": { "enabled": true, diff --git a/packages/contract-artifacts/artifacts/Exchange.json b/packages/contract-artifacts/artifacts/Exchange.json index 09751751c7..016cedf785 100644 --- a/packages/contract-artifacts/artifacts/Exchange.json +++ b/packages/contract-artifacts/artifacts/Exchange.json @@ -1571,16 +1571,16 @@ }, "evm": { "bytecode": { - "object": "0x60806040526000805460ff60a01b191690553480156200001e57600080fd5b5060405162005db338038062005db3833981016040819052620000419162000117565b600080546001600160a01b03191633178155819080309050620000b26040518060400160405280600b81526020016a0c1e08141c9bdd1bd8dbdb60aa1b815250604051806040016040528060058152602001640332e302e360dc1b8152508584620000c060201b62005bd91760201c565b600155506200013092505050565b8351602094850120835193850193909320604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815295860194909452928401929092526060830152608082015260a0902090565b60006020828403121562000129578081fd5b5051919050565b615c7380620001406000396000f3fe6080604052600436106102dc5760003560e01c80638d45cd2311610184578063beee2e14116100d6578063dd885e2d1161008a578063eea086ba11610064578063eea086ba14610735578063f2fde38b1461074a578063fc74896d1461076a576102dc565b8063dd885e2d146106ed578063dedfc1f11461070f578063e14b58c414610722576102dc565b8063c26cfecd116100bb578063c26cfecd14610698578063c585bb93146106ad578063d9bfa73e146106cd576102dc565b8063beee2e1414610665578063c0fa16cc14610678576102dc565b80639b44d55611610138578063a6c3bf3311610112578063a6c3bf331461061f578063b04fbddd14610632578063b718e29214610652576102dc565b80639b44d556146105bf5780639d3fa4b9146105d2578063a12dcc6f146105ff576102dc565b80638ea8dfe4116101695780638ea8dfe41461056c5780639331c7421461058c5780639694a402146105ac576102dc565b80638d45cd23146105375780638da5cb5b14610557576102dc565b8063607041081161023d5780637b8e3514116101f1578063850a1501116101cb578063850a1501146104ef57806388ec79fb146105045780638bc8efb314610524576102dc565b80637b8e35141461048f5780638171c407146104af57806382c174d0146104cf576102dc565b80636fcf3e9e116102225780636fcf3e9e1461045657806377fcce681461046957806378d29ac11461047c576102dc565b806360704108146104095780636a1a80fd14610436576102dc565b80632ac1262211610294578063369da09911610279578063369da099146103c357806346c02d7a146103e35780634f9559b1146103f6576102dc565b80632ac12622146103905780632da62987146103b0576102dc565b80631ce4c78b116102c55780631ce4c78b1461032e5780632280c91014610350578063288cdc9114610370576102dc565b80630228e168146102e15780630efca18514610317575b600080fd5b3480156102ed57600080fd5b506103016102fc366004614e6f565b61078a565b60405161030e91906154c3565b60405180910390f35b34801561032357600080fd5b5061032c61079f565b005b34801561033a57600080fd5b506103436107b3565b60405161030e91906154ce565b61036361035e366004615107565b6107b9565b60405161030e919061569f565b34801561037c57600080fd5b5061034361038b366004614e6f565b6107fb565b34801561039c57600080fd5b506103016103ab366004614e6f565b61080d565b61032c6103be366004614f81565b610822565b6103d66103d1366004614d6b565b610846565b60405161030e91906159c3565b61032c6103f1366004614e6f565b61096d565b61032c610404366004614e6f565b6109e0565b34801561041557600080fd5b50610429610424366004614ef8565b610aed565b60405161030e919061535a565b610449610444366004614c4b565b610b3b565b60405161030e919061594c565b610449610464366004614c4b565b610b73565b61032c610477366004614b35565b610b91565b6103d661048a366004614d6b565b610c54565b34801561049b57600080fd5b506103016104aa366004614b01565b610da4565b3480156104bb57600080fd5b506103016104ca366004614eab565b610dc4565b3480156104db57600080fd5b506103016104ea366004614e87565b610e23565b3480156104fb57600080fd5b50610429610e43565b61051761051236600461500b565b610e5f565b60405161030e91906159d1565b6103d6610532366004614d6b565b610e7d565b34801561054357600080fd5b50610301610552366004615107565b610eb1565b34801561056357600080fd5b50610429610ed6565b61057f61057a366004614ce7565b610ef2565b60405161030e91906154b0565b34801561059857600080fd5b5061032c6105a7366004614e6f565b61101d565b61057f6105ba366004614ce7565b611065565b6103d66105cd3660046150a7565b61112c565b3480156105de57600080fd5b506105f26105ed366004614f81565b611151565b60405161030e9190615a13565b34801561060b57600080fd5b5061030161061a366004614fb4565b611246565b6103d661062d366004614d6b565b61126b565b34801561063e57600080fd5b5061032c61064d366004614b70565b61129f565b61051761066036600461500b565b61134b565b61057f610673366004614ce7565b611369565b34801561068457600080fd5b5061032c610693366004614ae6565b61141e565b3480156106a457600080fd5b5061034361142f565b3480156106b957600080fd5b5061032c6106c8366004614ae6565b611435565b3480156106d957600080fd5b506103436106e8366004614b01565b6115c9565b3480156106f957600080fd5b506107026115e6565b60405161030e919061562a565b61032c61071d366004614c18565b61160a565b6103d66107303660046150a7565b61164c565b34801561074157600080fd5b50610429611667565b34801561075657600080fd5b5061032c610765366004614ae6565b611683565b61077d610778366004614dbe565b611726565b60405161030e9190615432565b60056020526000908152604090205460ff1681565b6107a761184f565b6107b16000611896565b565b60035481565b60606107c3611931565b156107d9576107d28383611953565b90506107f5565b6107e1611a6d565b6107eb8383611953565b90506107f5611aaf565b92915050565b60096020526000908152604090205481565b600a6020526000908152604090205460ff1681565b61082a611adf565b61083381611b4e565b61083b611b93565b610843611ba7565b50565b61084e61456a565b610856611931565b156108ec57835160005b8181146108e5576000610880846020015187611bd190919063ffffffff16565b905061088a61456a565b6108bb88848151811061089957fe5b6020026020010151838886815181106108ae57fe5b6020026020010151611bf0565b90506108c78582611d31565b9450868560200151106108db5750506108e5565b5050600101610860565b5050610966565b6108f4611a6d565b835160005b81811461095c576000610919846020015187611bd190919063ffffffff16565b905061092361456a565b61093288848151811061089957fe5b905061093e8582611d31565b94508685602001511061095257505061095c565b50506001016108f9565b5050610966611aaf565b9392505050565b610975611adf565b600061097f611dcc565b600083815260076020908152604080832073ffffffffffffffffffffffffffffffffffffffff90941683529290522080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555061083b611b93565b6109e8611adf565b60006109f2611dcc565b9050600073ffffffffffffffffffffffffffffffffffffffff82163314610a195733610a1c565b60005b73ffffffffffffffffffffffffffffffffffffffff8084166000908152600b60209081526040808320938516835292905220549091506001840190808211610a7157610a71610a6c858584611dfe565b611ea3565b73ffffffffffffffffffffffffffffffffffffffff8085166000818152600b602090815260408083209488168084529490915290819020859055517f82af639571738f4ebd4268fb0363d8957ebe1bbb9e78dba5ebd69eed39b154f090610ad99086906154ce565b60405180910390a35050505061083b611b93565b7fffffffff00000000000000000000000000000000000000000000000000000000811660009081526002602052604090205473ffffffffffffffffffffffffffffffffffffffff165b919050565b610b43614599565b610b4b611adf565b610b59858585856001611eab565b9050610b63611b93565b610b6b611ba7565b949350505050565b610b7b614599565b610b83611adf565b610b59858585856000611eab565b610b99611adf565b6000610ba3611dcc565b73ffffffffffffffffffffffffffffffffffffffff8181166000818152600860209081526040808320948916808452949091529081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168715151790555192935090917fa8656e308026eeabce8f0bc18048433252318ab80ac79da0b3d3d8697dfba89190610c379086906154c3565b60405180910390a350610c48611b93565b610c50611ba7565b5050565b610c5c61456a565b610c64611931565b15610d2257835160005b8181146108e5578251600090610c8b90879063ffffffff611bd116565b90506000610cc8888481518110610c9e57fe5b602002602001015160a00151898581518110610cb657fe5b60200260200101516080015184612218565b9050610cd261456a565b610cf6898581518110610ce157fe5b6020026020010151838987815181106108ae57fe5b9050610d028682611d31565b955087866000015110610d17575050506108e5565b505050600101610c6e565b610d2a611a6d565b835160005b81811461095c578251600090610d4c90879063ffffffff611bd116565b90506000610d5f888481518110610c9e57fe5b9050610d6961456a565b610d78898581518110610ce157fe5b9050610d848682611d31565b955087866000015110610d995750505061095c565b505050600101610d2f565b600860209081526000928352604080842090915290825290205460ff1681565b600080610dd285858561225a565b90506005816008811115610de257fe5b1480610df957506007816008811115610df757fe5b145b15610e0e57610e0e610a6c60058787876122d9565b610e1a81868686612381565b95945050505050565b600760209081526000928352604080842090915290825290205460ff1681565b60045473ffffffffffffffffffffffffffffffffffffffff1681565b610e676145c1565b610e6f611adf565b610b598585858560006125f1565b610e8561456a565b610e90848484610c54565b9050828160000151101561096657610966610a6c60008584600001516126de565b600080610ec9600154856126fd90919063ffffffff16565b9050610b6b848285612711565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b6060610efc611931565b15610f9f578351604080518281526020808402820101909152818015610f3c57816020015b610f2961456a565b815260200190600190039081610f215790505b50915060005b8181146108e557610f80868281518110610f5857fe5b6020026020010151868381518110610f6c57fe5b60200260200101518684815181106108ae57fe5b838281518110610f8c57fe5b6020908102919091010152600101610f42565b610fa7611a6d565b8351604080518281526020808402820101909152818015610fe257816020015b610fcf61456a565b815260200190600190039081610fc75790505b50915060005b81811461095c57610ffe868281518110610f5857fe5b83828151811061100a57fe5b6020908102919091010152600101610fe8565b61102561184f565b7f3a3e76d7a75e198aef1f53137e4f2a8a2ec74e2e9526db8404d08ccc9f1e621d60035482604051611058929190615542565b60405180910390a1600355565b606061106f611adf565b83516040805182815260208084028201019091528180156110aa57816020015b61109761456a565b81526020019060019003908161108f5790505b50915060005b81811461111a576110fb8682815181106110c657fe5b60200260200101518683815181106110da57fe5b60200260200101518684815181106110ee57fe5b6020026020010151612797565b83828151811061110757fe5b60209081029190910101526001016110b0565b5050611124611b93565b610966611ba7565b61113461456a565b61113c611adf565b611147848484612797565b9050611124611b93565b6111596145f5565b61116282612839565b60408301526020820152608082015161118e578060015b9081600681111561118657fe5b905250610b36565b60a082015161119f57806002611179565b8160a001518160400151106111b657806005611179565b81610100015142106111ca57806004611179565b6020808201516000908152600a909152604090205460ff16156111ef57806006611179565b610120820151825173ffffffffffffffffffffffffffffffffffffffff9081166000908152600b60209081526040808320606088015190941683529290522054111561123d57806006611179565b60038152919050565b60008061125e6001548561286a90919063ffffffff16565b9050610b6b848285612879565b61127361456a565b61127e848484610846565b9050828160200151101561096657610966610a6c60018584602001516126de565b835160005b81811461130f576113078160001b8783815181106112be57fe5b60200260200101518784815181106112d257fe5b60200260200101518785815181106112e657fe5b60200260200101518786815181106112fa57fe5b60200260200101516128ce565b6001016112a4565b506040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134290615915565b60405180910390fd5b6113536145c1565b61135b611adf565b610b598585858560016125f1565b6060611373611adf565b83516040805182815260208084028201019091528180156113ae57816020015b61139b61456a565b8152602001906001900390816113935790505b50915060005b81811461111a576113ff8682815181106113ca57fe5b60200260200101518683815181106113de57fe5b60200260200101518684815181106113f257fe5b6020026020010151612a92565b83828151811061140b57fe5b60209081029190910101526001016113b4565b61142661184f565b61084381611896565b60015481565b61143d61184f565b60008173ffffffffffffffffffffffffffffffffffffffff1663ae25532e6040518163ffffffff1660e01b815260040160206040518083038186803b15801561148557600080fd5b505afa158015611499573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114bd9190810190614f14565b7fffffffff00000000000000000000000000000000000000000000000000000000811660009081526002602052604090205490915073ffffffffffffffffffffffffffffffffffffffff16801561151b5761151b610a6c8383612ac5565b7fffffffff0000000000000000000000000000000000000000000000000000000082166000908152600260205260409081902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8616179055517fd2c6b762299c609bdb96520b58a49bfb80186934d4f71a86a367571a15c03194906115bc9084908690615657565b60405180910390a1505050565b600b60209081526000928352604080842090915290825290205481565b7f20c13b0b0000000000000000000000000000000000000000000000000000000081565b611612611adf565b805160005b8181146116425761163a83828151811061162d57fe5b6020026020010151611b4e565b600101611617565b505061083b611b93565b61165461456a565b61165c611adf565b611147848484612a92565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b61168b61184f565b73ffffffffffffffffffffffffffffffffffffffff81166116b6576116b1610a6c612b67565b610843565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6060611730611931565b156117cd57825160408051828152602080840282010190915281801561176a57816020015b60608152602001906001900390816117555790505b50915060005b8181146117c6576117a785828151811061178657fe5b602002602001015185838151811061179a57fe5b6020026020010151611953565b8382815181106117b357fe5b6020908102919091010152600101611770565b50506107f5565b6117d5611a6d565b825160408051828152602080840282010190915281801561180a57816020015b60608152602001906001900390816117f55790505b50915060005b8181146118455761182685828151811061178657fe5b83828151811061183257fe5b6020908102919091010152600101611810565b50506107f5611aaf565b60005473ffffffffffffffffffffffffffffffffffffffff1633146107b1576000546107b190610a6c90339073ffffffffffffffffffffffffffffffffffffffff16612b9e565b6004546040517fe1a5430ebec577336427f40f15822f1f36c5e3509ff209d6db9e6c9e6941cb0b916118e29173ffffffffffffffffffffffffffffffffffffffff90911690849061537b565b60405180910390a1600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000547501000000000000000000000000000000000000000000900460ff1690565b6060600061196c600154856126fd90919063ffffffff16565b9050611979848483612bbb565b60608401516119888180612c8f565b60008281526005602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556080870151905160609130916119d6919061530d565b600060405180830381855af49150503d8060008114611a11576040519150601f19603f3d011682016040523d82523d6000602084013e611a16565b606091505b509150915081611a2d57611a2d610a6c8583612cf2565b611a38836000612c8f565b60405184907fa4a7329f1dd821363067e07d359e347b4af9b1efe4b6cccf13240228af3c800d90600090a29695505050505050565b600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff167501000000000000000000000000000000000000000000179055565b600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690556107b1612d0f565b60005474010000000000000000000000000000000000000000900460ff1615611b0d57611b0d610a6c612d43565b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b611b566145f5565b611b5f82611151565b9050611b6b8282612d7a565b600381516006811115611b7a57fe5b14611b855750610843565b610c50828260200151612e29565b611b9b611931565b6107b1576107b1612d0f565b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b600082821115611bea57611bea610a6c60028585612ed2565b50900390565b611bf861456a565b6040516060907f9b44d5560000000000000000000000000000000000000000000000000000000090611c3290879087908790602401615a63565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050600060603073ffffffffffffffffffffffffffffffffffffffff1683604051611cba919061530d565b600060405180830381855af49150503d8060008114611cf5576040519150601f19603f3d011682016040523d82523d6000602084013e611cfa565b606091505b50915091508115611d2757805160a014611d1057fe5b80806020019051611d249190810190614f30565b93505b5050509392505050565b611d3961456a565b81518351611d4c9163ffffffff612ef116565b815260208083015190840151611d679163ffffffff612ef116565b602082015260408083015190840151611d859163ffffffff612ef116565b604082015260608083015190840151611da39163ffffffff612ef116565b606082015260808083015190840151611dc19163ffffffff612ef116565b608082015292915050565b60065460009073ffffffffffffffffffffffffffffffffffffffff16818115611df55781611df7565b335b9250505090565b6060634ad3127560e01b848484604051602401611e1d939291906153a2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290509392505050565b805160208201fd5b611eb3614599565b8551611ec657611ec6610a6c6000612f0d565b8451611ed957611ed9610a6c6001612f0d565b8351865114611eef57611eef610a6c6002612f0d565b8251855114611f0557611f05610a6c6003612f0d565b8551604051908082528060200260200182016040528015611f4057816020015b611f2d61456a565b815260200190600190039081611f255790505b5081528451604080518281526020808402820101909152908015611f7e57816020015b611f6b61456a565b815260200190600190039081611f635790505b506020820152600080611f8f614617565b88600081518110611f9c57fe5b60200260200101519050611fae614617565b88600081518110611fbb57fe5b602002602001015190506000611fd083612839565b9150506000611fde83612839565b915050611fe961456a565b611ff161456a565b611ff96145c1565b61202c87878f8c8151811061200a57fe5b60200260200101518f8c8151811061201e57fe5b60200260200101518f6125f1565b80516020015190915061204690869063ffffffff612ef116565b945061206381602001516020015185612ef190919063ffffffff16565b9350612073838260000151611d31565b9250612083828260200151611d31565b91506120a081604001518b60400151612ef190919063ffffffff16565b60408b0152606080820151908b01516120be9163ffffffff612ef116565b60608b015260a08701518510612169578951805160018b019a85929181106120e257fe5b60200260200101819052506040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525092508e5189141561214657818a60200151898151811061213557fe5b602002602001018190525050612207565b8e898151811061215257fe5b6020026020010151965061216587612839565b9550505b8560a00151841061220157818a6020015189806001019a508151811061218b57fe5b60200260200101819052506040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525091508d518814156121de57828a600001518a8151811061213557fe5b8d88815181106121ea57fe5b602002602001015195506121fd86612839565b9450505b50611ff1565b505050505050505095945050505050565b6000610b6b8361224e61223282600163ffffffff611bd116565b612242888763ffffffff612fac16565b9063ffffffff612ef116565b9063ffffffff612fdd16565b6000612267848484613007565b905073ffffffffffffffffffffffffffffffffffffffff831661229457612294610a6c60068686866122d9565b600881818111156122a157fe5b60ff16106122b9576122b9610a6c60038686866122d9565b60008160088111156122c757fe5b141561096657610966610a6c60048686865b6060637e5a231860e01b858585856040516024016122fa94939291906158ba565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050949350505050565b6000600185600881111561239157fe5b14156123b85781516001146123b0576123b0610a6c60028686866122d9565b506000610b6b565b60028560088111156123c657fe5b14156124bf5781516042146123e5576123e5610a6c60028686866122d9565b6000826000815181106123f457fe5b016020015160f81c9050600061241184600163ffffffff61304616565b9050600061242685602163ffffffff61304616565b905060006001888585856040516000815260200160405260405161244d949392919061560c565b6020604051602081039080840390855afa15801561246f573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015173ffffffffffffffffffffffffffffffffffffffff8981169116149550610b6b945050505050565b60038560088111156124cd57fe5b141561257a5781516042146124ec576124ec610a6c60028686866122d9565b6000826000815181106124fb57fe5b016020015160f81c9050600061251884600163ffffffff61304616565b9050600061252d85602163ffffffff61304616565b905060006001886040516020016125449190615329565b604051602081830303815290604052805190602001208585856040516000815260200160405260405161244d949392919061560c565b600485600881111561258857fe5b14156125a057612599848484613070565b9050610b6b565b60068560088111156125ae57fe5b146125b557fe5b50600083815260076020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616845290915290205460ff16949350505050565b6125f96145c1565b6101608087015161014080880191909152870151908601526126196145f5565b61262287611151565b905061262c6145f5565b61263587611151565b90506000612641611dcc565b905061264f8984838a613266565b61265b88838389613266565b61266f89898560200151856020015161337e565b6126888989856040015185604001516003543a8b6133c3565b93506126a38982856020015186604001518860000151613518565b6126bc8882846020015185604001518860200151613518565b6126d2836020015183602001518b8b85896135f6565b50505095945050505050565b60606318e4b14160e01b848484604051602401611e1d9392919061589e565b60006109668261270c8561379d565b613825565b60608301516000908161272585838661225a565b9050600581600881111561273557fe5b141561275757612750612748878761385f565b868487613897565b925061278e565b600781600881111561276557fe5b141561277f57612750612778878761385f565b838661394b565b61278b81868487612381565b92505b50509392505050565b61279f61456a565b6127a76145f5565b6127b085611151565b905060006127bc611dcc565b90506127ca86838387613266565b60006127e783604001518860a00151611bd190919063ffffffff16565b905060006127f5878361395a565b905061280588826003543a613970565b945060008460200151905061282189858388604001518a613518565b61282d818a86896139e7565b50505050509392505050565b6000806128516001548461286a90919063ffffffff16565b6000818152600960205260409020549092509050915091565b60006109668261270c85613a7e565b82516000908161288a85838661225a565b9050600581600881111561289a57fe5b14156128ad576127506127488787613b55565b60078160088111156128bb57fe5b141561277f576127506127788787613b55565b8015612a8b5760208451816128df57fe5b066004146128f6576128f6610a6c60008787613b8d565b6000612908858263ffffffff613bac16565b7fffffffff00000000000000000000000000000000000000000000000000000000811660009081526002602052604090205490915073ffffffffffffffffffffffffffffffffffffffff168061296757612967610a6c60018989613b8d565b6040516060907fa85e59e400000000000000000000000000000000000000000000000000000000906129a39089908990899089906024016156b2565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050600060608373ffffffffffffffffffffffffffffffffffffffff1683604051612a2b919061530d565b6000604051808303816000865af19150503d8060008114612a68576040519150601f19603f3d011682016040523d82523d6000602084013e612a6d565b606091505b509150915081612a8557612a85610a6c8b8b84613bf8565b50505050505b5050505050565b612a9a61456a565b612aa5848484612797565b90508281602001511461096657610966610a6c60028584602001516126de565b60606311c7b72060e01b8383604051602401612ae2929190615657565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905092915050565b60408051808201909152600481527fe69edc3e00000000000000000000000000000000000000000000000000000000602082015290565b6060631de45ad160e01b8383604051602401612ae292919061537b565b82602001514210612bd457612bd4610a6c600183613c17565b60408301513a8114612bee57612bee610a6c833a84613c34565b60065473ffffffffffffffffffffffffffffffffffffffff168015612c1a57612c1a610a6c8483613c53565b60008381526005602052604090205460ff1615612c3f57612c3f610a6c600085613c17565b606085015173ffffffffffffffffffffffffffffffffffffffff81163314801590612c725750612c70868587612711565b155b15612c8757612c87610a6c60018684896122d9565b505050505050565b73ffffffffffffffffffffffffffffffffffffffff82163314610c50576006805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff00000000000000000000000000000000000000009091161790555050565b60606320d11f6160e01b8383604051602401612ae2929190615550565b47801561084357604051339082156108fc029083906000818181858888f19350505050158015610c50573d6000803e3d6000fd5b60408051808201909152600481527f0c3b823f00000000000000000000000000000000000000000000000000000000602082015290565b606082015173ffffffffffffffffffffffffffffffffffffffff1615612dce57606082015173ffffffffffffffffffffffffffffffffffffffff163314612dce57612dce610a6c6002836020015133613c70565b6000612dd8611dcc565b90508073ffffffffffffffffffffffffffffffffffffffff16836000015173ffffffffffffffffffffffffffffffffffffffff1614612e2457612e24610a6c6000846020015184613c70565b505050565b6000818152600a60205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558281015183516101408501516101608601519351859473ffffffffffffffffffffffffffffffffffffffff9485169493909316927f02c310a9a43963ff31a754a4099cc435ed498049687539d72d7818d9b093415c92612ec692909190339061571a565b60405180910390a45050565b606063e946c1bb60e01b848484604051602401611e1d93929190615845565b60008282018381101561096657610966610a6c60008686612ed2565b606063d4092f4f60e01b82604051602401612f289190615832565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050919050565b600082612fbb575060006107f5565b82820282848281612fc857fe5b041461096657610966610a6c60018686612ed2565b600081612ff357612ff3610a6c60038585612ed2565b6000828481612ffe57fe5b04949350505050565b600081516000141561302357613023610a6c60028686866122d9565b8160018351038151811061303357fe5b016020015160f81c6008811115610b6b57fe5b6000816020018351101561306757613067610a6c6005855185602001613c8f565b50016020015190565b80516000906130a7837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff830163ffffffff613cae16565b6040516060907f1626ba7e00000000000000000000000000000000000000000000000000000000906130df9088908790602401615550565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905061316e848363ffffffff613cae16565b600060608673ffffffffffffffffffffffffffffffffffffffff1683604051613197919061530d565b600060405180830381855afa9150503d80600081146131d2576040519150601f19603f3d011682016040523d82523d6000602084013e6131d7565b606091505b50915091508180156131ea575080516020145b1561324c577fb06713810000000000000000000000000000000000000000000000000000000061322182600063ffffffff613bac16565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614945050505050610966565b61325b610a6c89898985613cb2565b505050509392505050565b60038351600681111561327557fe5b1461328f5761328f610a6c84602001518560000151613cd3565b606084015173ffffffffffffffffffffffffffffffffffffffff16156132e357606084015173ffffffffffffffffffffffffffffffffffffffff1633146132e3576132e3610a6c6002856020015133613c70565b602084015173ffffffffffffffffffffffffffffffffffffffff161561334d578173ffffffffffffffffffffffffffffffffffffffff16846020015173ffffffffffffffffffffffffffffffffffffffff161461334d5761334d610a6c6001856020015185613c70565b61335c84846020015183612879565b61337857613378610a6c600085602001518760000151856122d9565b50505050565b60a080840151908501516133979163ffffffff612fac16565b608080850151908601516133b09163ffffffff612fac16565b101561337857613378610a6c8383613cf0565b6133cb6145c1565b60a08801516000906133e3908863ffffffff611bd116565b905060006133fa8a608001518b60a0015184613d0d565b90506000613415888b60a00151611bd190919063ffffffff16565b9050600061342c8b608001518c60a0015184613d0d565b90508515613449576134428c8c85878587613d41565b945061345a565b6134578c8c85878587613e13565b94505b84515160808d015160c08e0151613472929190613d0d565b85516040015284516020015160a08d015160e08e0151613493929190613d0d565b85516060015260208501515160808c015160c08d01516134b4929190613d0d565b856020015160400181815250506134dc8560200151602001518c60a001518d60e00151613d0d565b60208601516060015260006134f7888a63ffffffff612fac16565b86516080908101829052602088015101525050505050979650505050505050565b602081015161352e90839063ffffffff612ef116565b600960008581526020019081526020016000208190555082856040015173ffffffffffffffffffffffffffffffffffffffff16866000015173ffffffffffffffffffffffffffffffffffffffff167f6869791f0a34781b29882982cc39e882768cf2c96995c2a110c577c53bc932d58861014001518961016001518a61018001518b6101a001518b338a600001518b602001518c604001518d606001518e608001516040516135e79b9a99989796959493929190615766565b60405180910390a45050505050565b835183516040808701519086015161014087015185516020015161361f918b91869088906128ce565b6136398a89610140015186868960200151602001516128ce565b6136538988610180015185848960200151604001516128ce565b61366d8a89610180015186858960000151604001516128ce565b6136838a896101400151868989604001516128ce565b61369989886101400151858989606001516128ce565b60006136b18b8b88600001516080015188888c613eac565b9050806136ce578551600060809182018190526020880151909101525b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561371e57506101a080890151908a015161371e9163ffffffff613f0816565b1561375c576137578b8a6101a0015189866137528b60200151606001518c6000015160600151612ef190919063ffffffff16565b6128ce565b613790565b6137768a896101a0015189858a60200151606001516128ce565b6137908b8a6101a0015189868a60000151606001516128ce565b5050505050505050505050565b608081810151825160208085015160408087015160609788015186519685019690962082517fec69816980a3a3ca4554410e60253953e9ff375ba4536a98adfa15cc71541508815294850195909552908301919091529481019490945273ffffffffffffffffffffffffffffffffffffffff9091169183019190915260a082015260c0902090565b6040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b6040516060907fde047db40000000000000000000000000000000000000000000000000000000090612ae29085908590602401615a8e565b805160009060158110156138b5576138b5610a6c60028787876122d9565b60006138e9847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeb840163ffffffff613f2d16565b73ffffffffffffffffffffffffffffffffffffffff80871660009081526008602090815260408083209385168352929052205490915060ff1661393357613933610a6c8683613f6d565b6139408188866015613f8a565b979650505050505050565b6000610b6b8385846001613f8a565b60008183106139695781610966565b5090919050565b61397861456a565b6020810184905260a08501516080860151613994918691613d0d565b815260a085015160c08601516139ab918691613d0d565b604082015260a085015160e08601516139c5918691613d0d565b60608201526139da828463ffffffff612fac16565b6080820152949350505050565b613a018484610160015184866000015185602001516128ce565b613a1b8484610140015185600001518585600001516128ce565b613a3584846101a0015184866040015185606001516128ce565b613a53848461018001518560000151866040015185604001516128ce565b6000613a69858360800151866000015186614161565b905080612a8b57600060808301525050505050565b6101408101516101608201516101808301516101a08401516000937ff80322eb8376aafb64eadf8f0d7623f22130fd9491a221e902b713cb984a753493909290916020871015613aca57fe5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe087018051610140890180516101608b0180516101808d0180516101a08f0180519d89528c5160209d8e012087528b519b8d019b909b2084528951998c01999099208152875197909a019690962088526101e085209390945290529190529252919091529050919050565b6040516060907f3efe50c80000000000000000000000000000000000000000000000000000000090612ae29085908590602401615a41565b606063488219a660e01b848484604051602401611e1d9392919061580a565b60008160040183511015613bcd57613bcd610a6c6003855185600401613c8f565b5001602001517fffffffff000000000000000000000000000000000000000000000000000000001690565b6060634678472b60e01b848484604051602401611e1d93929190615569565b606063f598518460e01b8383604051602401612ae29291906158fe565b606063a26dac0960e01b848484604051602401611e1d939291906155f6565b606063dec4aedf60e01b8383604051602401612ae29291906154d7565b606063e53c76c860e01b848484604051602401611e1d93929190615866565b6060632800659560e01b848484604051602401611e1d939291906158ac565b9052565b6060631b8388f760e01b858585856040516024016122fa94939291906154fb565b606063fdb6ca8d60e01b8383604051602401612ae2929190615594565b606063b6555d6f60e01b8383604051602401612ae2929190615542565b6000613d1a8484846141a6565b15613d2d57613d2d610a6c85858561420c565b610b6b8361224e868563ffffffff612fac16565b613d496145c1565b81851184841184861115613d6957613d6289868661422b565b9250613db8565b86841115613da95782518790528251602001869052608088015160a0890151613d93919089613d0d565b6020808501805192909252905101879052613db8565b613db587878787614268565b92505b8115613dde576020808401510151835151613dd89163ffffffff611bd116565b60408401525b8015613e065782516020908101519084015151613e009163ffffffff611bd116565b60608401525b50505b9695505050505050565b613e1b6145c1565b82841115613e3557613e2e87848461422b565b9050613e83565b82841015613e745780518590528051602090810185905281015184905260a08601516080870151613e67919086614293565b6020808301510152613e83565b613e8085858585614268565b90505b6020808201510151815151613e9d9163ffffffff611bd116565b60408201529695505050505050565b60045460009073ffffffffffffffffffffffffffffffffffffffff168015613efe57476000613edf8a84848b8b8a6142cb565b9050613ef189848385038b8a8a6142cb565b5060019350505050613e09565b6000915050613e09565b6000815183511480156109665750508051602091820120825192909101919091201490565b60008160140183511015613f4e57613f4e610a6c6004855185601401613c8f565b50016014015173ffffffffffffffffffffffffffffffffffffffff1690565b606063a15c0d0660e01b8383604051602401612ae292919061537b565b8151600090613fa18484830363ffffffff613cae16565b6040516060907f20c13b0b0000000000000000000000000000000000000000000000000000000090613fd990889088906024016156f5565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050614068858363ffffffff613cae16565b600060608873ffffffffffffffffffffffffffffffffffffffff1683604051614091919061530d565b600060405180830381855afa9150503d80600081146140cc576040519150601f19603f3d011682016040523d82523d6000602084013e6140d1565b606091505b50915091508180156140e4575080516020145b15614146577f20c13b0b0000000000000000000000000000000000000000000000000000000061411b82600063ffffffff613bac16565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614945050505050610b6b565b614155610a6c8a8a8a85614403565b50505050949350505050565b60045460009073ffffffffffffffffffffffffffffffffffffffff16801561419c576141918682478888886142cb565b506001915050610b6b565b6000915050610b6b565b6000826141b8576141b8610a6c614424565b8115806141c3575083155b156141d057506000610966565b600083806141da57fe5b85840990506141ef858463ffffffff612fac16565b614201826103e863ffffffff612fac16565b101595945050505050565b606063339f3de260e01b848484604051602401611e1d939291906155f6565b6142336145c1565b60208082018051859052518101839052815101839052608084015160a085015161425e919085613d0d565b8151529392505050565b6142706145c1565b805194909452835160209081019390935282840180519290925290519091015290565b60006142a084848461445b565b156142b3576142b3610a6c85858561420c565b610b6b8361224e61223282600163ffffffff611bd116565b60008385106142d75750825b6040516060907fa3b4a3270000000000000000000000000000000000000000000000000000000090614311908690869089906024016153a2565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050600060608873ffffffffffffffffffffffffffffffffffffffff16848460405161439a919061530d565b60006040518083038185875af1925050503d80600081146143d7576040519150601f19603f3d011682016040523d82523d6000602084013e6143dc565b606091505b5091509150816143f6576143f6610a6c8b898989866144bf565b5050509695505050505050565b6060635bd0428d60e01b858585856040516024016122fa94939291906153d3565b60408051808201909152600481527fa791837c00000000000000000000000000000000000000000000000000000000602082015290565b60008261446d5761446d610a6c614424565b811580614478575083155b1561448557506000610966565b6000838061448f57fe5b8584099050836144a5818363ffffffff611bd116565b816144ac57fe5b0690506141ef858463ffffffff612fac16565b60606387cb1e7560e01b86868686866040516024016144e29594939291906155b1565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905095945050505050565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6040518060800160405280606081526020016060815260200160008152602001600081525090565b60405180608001604052806145d461456a565b81526020016145e161456a565b815260200160008152602001600081525090565b6040805160608101909152806000815260006020820181905260409091015290565b604051806101c00160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001606081526020016060815260200160608152602001606081525090565b803573ffffffffffffffffffffffffffffffffffffffff811681146107f557600080fd5b600082601f830112614712578081fd5b813561472561472082615b1f565b615af8565b81815291506020808301908481018184028601820187101561474657600080fd5b60005b8481101561476d5761475b88836146de565b84529282019290820190600101614749565b505050505092915050565b600082601f830112614788578081fd5b813561479661472082615b1f565b8181529150602080830190840160005b838110156147d3576147be8760208435890101614896565b835260209283019291909101906001016147a6565b5050505092915050565b600082601f8301126147ed578081fd5b81356147fb61472082615b1f565b8181529150602080830190840160005b838110156147d357614823876020843589010161491d565b8352602092830192919091019060010161480b565b600082601f830112614848578081fd5b813561485661472082615b1f565b81815291506020808301908481018184028601820187101561487757600080fd5b60005b8481101561476d5781358452928201929082019060010161487a565b600082601f8301126148a6578081fd5b813567ffffffffffffffff8111156148bc578182fd5b6148ed60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601615af8565b915080825283602082850101111561490457600080fd5b8060208401602084013760009082016020015292915050565b60006101c0808385031215614930578182fd5b61493981615af8565b91505061494683836146de565b815261495583602084016146de565b602082015261496783604084016146de565b604082015261497983606084016146de565b60608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e08201526101008083013581830152506101208083013581830152506101408083013567ffffffffffffffff808211156149db57600080fd5b6149e786838701614896565b83850152610160925082850135915080821115614a0357600080fd5b614a0f86838701614896565b83850152610180925082850135915080821115614a2b57600080fd5b614a3786838701614896565b838501526101a0925082850135915080821115614a5357600080fd5b50614a6085828601614896565b82840152505092915050565b600060a08284031215614a7d578081fd5b614a8760a0615af8565b90508135815260208201356020820152604082013560408201526060820135614aaf81615b89565b6060820152608082013567ffffffffffffffff811115614ace57600080fd5b614ada84828501614896565b60808301525092915050565b600060208284031215614af7578081fd5b61096683836146de565b60008060408385031215614b13578081fd5b614b1d84846146de565b9150614b2c84602085016146de565b90509250929050565b60008060408385031215614b47578182fd5b614b5184846146de565b915060208301358015158114614b65578182fd5b809150509250929050565b60008060008060808587031215614b85578182fd5b843567ffffffffffffffff80821115614b9c578384fd5b614ba888838901614778565b95506020870135915080821115614bbd578384fd5b614bc988838901614702565b94506040870135915080821115614bde578384fd5b614bea88838901614702565b93506060870135915080821115614bff578283fd5b50614c0c87828801614838565b91505092959194509250565b600060208284031215614c29578081fd5b813567ffffffffffffffff811115614c3f578182fd5b610b6b848285016147dd565b60008060008060808587031215614c60578182fd5b843567ffffffffffffffff80821115614c77578384fd5b614c83888389016147dd565b95506020870135915080821115614c98578384fd5b614ca4888389016147dd565b94506040870135915080821115614cb9578384fd5b614cc588838901614778565b93506060870135915080821115614cda578283fd5b50614c0c87828801614778565b600080600060608486031215614cfb578081fd5b833567ffffffffffffffff80821115614d12578283fd5b614d1e878388016147dd565b94506020860135915080821115614d33578283fd5b614d3f87838801614838565b93506040860135915080821115614d54578283fd5b50614d6186828701614778565b9150509250925092565b600080600060608486031215614d7f578081fd5b833567ffffffffffffffff80821115614d96578283fd5b614da2878388016147dd565b9450602086013593506040860135915080821115614d54578283fd5b60008060408385031215614dd0578182fd5b823567ffffffffffffffff80821115614de7578384fd5b81850186601f820112614df8578485fd5b80359250614e0861472084615b1f565b83815260208082019190838101885b87811015614e4057614e2e8c848435890101614a6c565b85529382019390820190600101614e17565b50919750880135945050505080821115614e58578283fd5b50614e6585828601614778565b9150509250929050565b600060208284031215614e80578081fd5b5035919050565b60008060408385031215614e99578182fd5b823591506020830135614b6581615b89565b600080600060608486031215614ebf578081fd5b833592506020840135614ed181615b89565b9150604084013567ffffffffffffffff811115614eec578182fd5b614d6186828701614896565b600060208284031215614f09578081fd5b813561096681615bab565b600060208284031215614f25578081fd5b815161096681615bab565b600060a08284031215614f41578081fd5b614f4b60a0615af8565b82518152602083015160208201526040830151604082015260608301516060820152608083015160808201528091505092915050565b600060208284031215614f92578081fd5b813567ffffffffffffffff811115614fa8578182fd5b610b6b8482850161491d565b60008060408385031215614fc6578182fd5b823567ffffffffffffffff80821115614fdd578384fd5b614fe98683870161491d565b93506020850135915080821115614ffe578283fd5b50614e6585828601614896565b60008060008060808587031215615020578182fd5b843567ffffffffffffffff80821115615037578384fd5b6150438883890161491d565b95506020870135915080821115615058578384fd5b6150648883890161491d565b94506040870135915080821115615079578384fd5b61508588838901614896565b9350606087013591508082111561509a578283fd5b50614c0c87828801614896565b6000806000606084860312156150bb578081fd5b833567ffffffffffffffff808211156150d2578283fd5b6150de8783880161491d565b94506020860135935060408601359150808211156150fa578283fd5b50614d6186828701614896565b60008060408385031215615119578182fd5b823567ffffffffffffffff80821115615130578384fd5b614fe986838701614a6c565b73ffffffffffffffffffffffffffffffffffffffff169052565b6000815180845260208401935060208301825b828110156151925761517c8683516151e6565b60a0959095019460209190910190600101615169565b5093949350505050565b600081518084526151b4816020860160208601615b3f565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b80518252602081015160208301526040810151604083015260608101516060830152608081015160808301525050565b60006101c061522684845161513c565b6020830151615238602086018261513c565b50604083015161524b604086018261513c565b50606083015161525e606086018261513c565b506080830151608085015260a083015160a085015260c083015160c085015260e083015160e08501526101008084015181860152506101208084015181860152506101408084015182828701526152b78387018261519c565b915050610160915081840151858203838701526152d4828261519c565b9250505061018080840151858303828701526152f0838261519c565b9150506101a091508184015185820383870152613e09828261519c565b6000825161531f818460208701615b3f565b9190910192915050565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c810191909152603c0190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b600073ffffffffffffffffffffffffffffffffffffffff8616825260806020830152615402608083018661519c565b8281036040840152615414818661519c565b8381036060850152615426818661519c565b98975050505050505050565b6000602080830181845280855180835260408601915060408482028701019250838701855b828110156154a3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845261549185835161519c565b94509285019290850190600101615457565b5092979650505050505050565b6000602082526109666020830184615156565b901515815260200190565b90815260200190565b91825273ffffffffffffffffffffffffffffffffffffffff16602082015260400190565b600085825273ffffffffffffffffffffffffffffffffffffffff8516602083015260806040830152615530608083018561519c565b8281036060840152613940818561519c565b918252602082015260400190565b600083825260406020830152610b6b604083018461519c565b600084825260606020830152615582606083018561519c565b8281036040840152613e09818561519c565b828152604081016155a483615b7f565b8260208301529392505050565b600086825285602083015273ffffffffffffffffffffffffffffffffffffffff808616604084015280851660608401525060a0608083015261394060a083018461519c565b9283526020830191909152604082015260600190565b93845260ff9290921660208401526040830152606082015260800190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b7fffffffff0000000000000000000000000000000000000000000000000000000092909216825273ffffffffffffffffffffffffffffffffffffffff16602082015260400190565b600060208252610966602083018461519c565b6000608082526156c5608083018761519c565b73ffffffffffffffffffffffffffffffffffffffff95861660208401529390941660408201526060015292915050565b600060408252615708604083018561519c565b8281036020840152610e1a818561519c565b60006060825261572d606083018661519c565b828103602084015261573f818661519c565b91505073ffffffffffffffffffffffffffffffffffffffff83166040830152949350505050565b600061016080835261577a8184018f61519c565b838103602085015261578c818f61519c565b91505082810360408401526157a1818d61519c565b83810360608501526157b3818d61519c565b73ffffffffffffffffffffffffffffffffffffffff9b8c16608086015299909a1660a0840152505060c081019590955260e08501939093526101008401919091526101208301526101409091015295945050505050565b600061581585615b6b565b84825283602083015260606040830152610e1a606083018461519c565b6020810161583f83615b75565b91905290565b6060810161585285615b75565b938152602081019290925260409091015290565b606081016003851061587457fe5b938152602081019290925273ffffffffffffffffffffffffffffffffffffffff1660409091015290565b606081016003851061585257fe5b606081016008851061585257fe5b60006158c586615b7f565b85825284602083015273ffffffffffffffffffffffffffffffffffffffff8416604083015260806060830152613e09608083018461519c565b6040810161590b84615b6b565b9281526020015290565b60208082526014908201527f5452414e53464552535f5355434345535346554c000000000000000000000000604082015260600190565b60006020825282516080602084015261596860a0840182615156565b602085015191507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08482030160408501526159a38183615156565b604086015160608601526060860151608086015280935050505092915050565b60a081016107f582846151e6565b6000610180820190506159e58284516151e6565b60208301516159f760a08401826151e6565b5060408301516101408301526060909201516101609091015290565b81516060820190615a2381615b7f565b80835250602083015160208301526040830151604083015292915050565b600060408252615a546040830185615216565b90508260208301529392505050565b600060608252615a766060830186615216565b8460208401528281036040840152613e09818561519c565b60006040825283516040830152602084015160608301526040840151608083015273ffffffffffffffffffffffffffffffffffffffff60608501511660a0830152608084015160a060c0840152615ae860e084018261519c565b9150508260208301529392505050565b60405181810167ffffffffffffffff81118282101715615b1757600080fd5b604052919050565b600067ffffffffffffffff821115615b35578081fd5b5060209081020190565b60005b83811015615b5a578181015183820152602001615b42565b838111156133785750506000910152565b6002811061084357fe5b6004811061084357fe5b6007811061084357fe5b73ffffffffffffffffffffffffffffffffffffffff8116811461084357600080fd5b7fffffffff000000000000000000000000000000000000000000000000000000008116811461084357600080fd5b8351602094850120835193850193909320604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815295860194909452928401929092526060830152608082015260a090209056fea365627a7a723158206628f553d4c70843d623568428c39acd1576188dbf22ecde8672c8c8de9525c06c6578706572696d656e74616cf564736f6c63430005110040" + "object": "0x60806040526000805460ff60a01b191690553480156200001e57600080fd5b5060405162005db338038062005db3833981016040819052620000419162000117565b600080546001600160a01b03191633178155819080309050620000b26040518060400160405280600b81526020016a0c1e08141c9bdd1bd8dbdb60aa1b815250604051806040016040528060058152602001640332e302e360dc1b8152508584620000c060201b62005bd91760201c565b600155506200013092505050565b8351602094850120835193850193909320604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815295860194909452928401929092526060830152608082015260a0902090565b60006020828403121562000129578081fd5b5051919050565b615c7380620001406000396000f3fe6080604052600436106102dc5760003560e01c80638d45cd2311610184578063beee2e14116100d6578063dd885e2d1161008a578063eea086ba11610064578063eea086ba14610735578063f2fde38b1461074a578063fc74896d1461076a576102dc565b8063dd885e2d146106ed578063dedfc1f11461070f578063e14b58c414610722576102dc565b8063c26cfecd116100bb578063c26cfecd14610698578063c585bb93146106ad578063d9bfa73e146106cd576102dc565b8063beee2e1414610665578063c0fa16cc14610678576102dc565b80639b44d55611610138578063a6c3bf3311610112578063a6c3bf331461061f578063b04fbddd14610632578063b718e29214610652576102dc565b80639b44d556146105bf5780639d3fa4b9146105d2578063a12dcc6f146105ff576102dc565b80638ea8dfe4116101695780638ea8dfe41461056c5780639331c7421461058c5780639694a402146105ac576102dc565b80638d45cd23146105375780638da5cb5b14610557576102dc565b8063607041081161023d5780637b8e3514116101f1578063850a1501116101cb578063850a1501146104ef57806388ec79fb146105045780638bc8efb314610524576102dc565b80637b8e35141461048f5780638171c407146104af57806382c174d0146104cf576102dc565b80636fcf3e9e116102225780636fcf3e9e1461045657806377fcce681461046957806378d29ac11461047c576102dc565b806360704108146104095780636a1a80fd14610436576102dc565b80632ac1262211610294578063369da09911610279578063369da099146103c357806346c02d7a146103e35780634f9559b1146103f6576102dc565b80632ac12622146103905780632da62987146103b0576102dc565b80631ce4c78b116102c55780631ce4c78b1461032e5780632280c91014610350578063288cdc9114610370576102dc565b80630228e168146102e15780630efca18514610317575b600080fd5b3480156102ed57600080fd5b506103016102fc366004614e6f565b61078a565b60405161030e91906154c3565b60405180910390f35b34801561032357600080fd5b5061032c61079f565b005b34801561033a57600080fd5b506103436107b3565b60405161030e91906154ce565b61036361035e366004615107565b6107b9565b60405161030e919061569f565b34801561037c57600080fd5b5061034361038b366004614e6f565b6107fb565b34801561039c57600080fd5b506103016103ab366004614e6f565b61080d565b61032c6103be366004614f81565b610822565b6103d66103d1366004614d6b565b610846565b60405161030e91906159c3565b61032c6103f1366004614e6f565b61096d565b61032c610404366004614e6f565b6109e0565b34801561041557600080fd5b50610429610424366004614ef8565b610aed565b60405161030e919061535a565b610449610444366004614c4b565b610b3b565b60405161030e919061594c565b610449610464366004614c4b565b610b73565b61032c610477366004614b35565b610b91565b6103d661048a366004614d6b565b610c54565b34801561049b57600080fd5b506103016104aa366004614b01565b610da4565b3480156104bb57600080fd5b506103016104ca366004614eab565b610dc4565b3480156104db57600080fd5b506103016104ea366004614e87565b610e23565b3480156104fb57600080fd5b50610429610e43565b61051761051236600461500b565b610e5f565b60405161030e91906159d1565b6103d6610532366004614d6b565b610e7d565b34801561054357600080fd5b50610301610552366004615107565b610eb1565b34801561056357600080fd5b50610429610ed6565b61057f61057a366004614ce7565b610ef2565b60405161030e91906154b0565b34801561059857600080fd5b5061032c6105a7366004614e6f565b61101d565b61057f6105ba366004614ce7565b611065565b6103d66105cd3660046150a7565b61112c565b3480156105de57600080fd5b506105f26105ed366004614f81565b611151565b60405161030e9190615a13565b34801561060b57600080fd5b5061030161061a366004614fb4565b611246565b6103d661062d366004614d6b565b61126b565b34801561063e57600080fd5b5061032c61064d366004614b70565b61129f565b61051761066036600461500b565b61134b565b61057f610673366004614ce7565b611369565b34801561068457600080fd5b5061032c610693366004614ae6565b61141e565b3480156106a457600080fd5b5061034361142f565b3480156106b957600080fd5b5061032c6106c8366004614ae6565b611435565b3480156106d957600080fd5b506103436106e8366004614b01565b6115c9565b3480156106f957600080fd5b506107026115e6565b60405161030e919061562a565b61032c61071d366004614c18565b61160a565b6103d66107303660046150a7565b61164c565b34801561074157600080fd5b50610429611667565b34801561075657600080fd5b5061032c610765366004614ae6565b611683565b61077d610778366004614dbe565b611726565b60405161030e9190615432565b60056020526000908152604090205460ff1681565b6107a761184f565b6107b16000611896565b565b60035481565b60606107c3611931565b156107d9576107d28383611953565b90506107f5565b6107e1611a6d565b6107eb8383611953565b90506107f5611aaf565b92915050565b60096020526000908152604090205481565b600a6020526000908152604090205460ff1681565b61082a611adf565b61083381611b4e565b61083b611b93565b610843611ba7565b50565b61084e61456a565b610856611931565b156108ec57835160005b8181146108e5576000610880846020015187611bd190919063ffffffff16565b905061088a61456a565b6108bb88848151811061089957fe5b6020026020010151838886815181106108ae57fe5b6020026020010151611bf0565b90506108c78582611d31565b9450868560200151106108db5750506108e5565b5050600101610860565b5050610966565b6108f4611a6d565b835160005b81811461095c576000610919846020015187611bd190919063ffffffff16565b905061092361456a565b61093288848151811061089957fe5b905061093e8582611d31565b94508685602001511061095257505061095c565b50506001016108f9565b5050610966611aaf565b9392505050565b610975611adf565b600061097f611dcc565b600083815260076020908152604080832073ffffffffffffffffffffffffffffffffffffffff90941683529290522080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555061083b611b93565b6109e8611adf565b60006109f2611dcc565b9050600073ffffffffffffffffffffffffffffffffffffffff82163314610a195733610a1c565b60005b73ffffffffffffffffffffffffffffffffffffffff8084166000908152600b60209081526040808320938516835292905220549091506001840190808211610a7157610a71610a6c858584611dfe565b611ea3565b73ffffffffffffffffffffffffffffffffffffffff8085166000818152600b602090815260408083209488168084529490915290819020859055517f82af639571738f4ebd4268fb0363d8957ebe1bbb9e78dba5ebd69eed39b154f090610ad99086906154ce565b60405180910390a35050505061083b611b93565b7fffffffff00000000000000000000000000000000000000000000000000000000811660009081526002602052604090205473ffffffffffffffffffffffffffffffffffffffff165b919050565b610b43614599565b610b4b611adf565b610b59858585856001611eab565b9050610b63611b93565b610b6b611ba7565b949350505050565b610b7b614599565b610b83611adf565b610b59858585856000611eab565b610b99611adf565b6000610ba3611dcc565b73ffffffffffffffffffffffffffffffffffffffff8181166000818152600860209081526040808320948916808452949091529081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168715151790555192935090917fa8656e308026eeabce8f0bc18048433252318ab80ac79da0b3d3d8697dfba89190610c379086906154c3565b60405180910390a350610c48611b93565b610c50611ba7565b5050565b610c5c61456a565b610c64611931565b15610d2257835160005b8181146108e5578251600090610c8b90879063ffffffff611bd116565b90506000610cc8888481518110610c9e57fe5b602002602001015160a00151898581518110610cb657fe5b60200260200101516080015184612218565b9050610cd261456a565b610cf6898581518110610ce157fe5b6020026020010151838987815181106108ae57fe5b9050610d028682611d31565b955087866000015110610d17575050506108e5565b505050600101610c6e565b610d2a611a6d565b835160005b81811461095c578251600090610d4c90879063ffffffff611bd116565b90506000610d5f888481518110610c9e57fe5b9050610d6961456a565b610d78898581518110610ce157fe5b9050610d848682611d31565b955087866000015110610d995750505061095c565b505050600101610d2f565b600860209081526000928352604080842090915290825290205460ff1681565b600080610dd285858561225a565b90506005816008811115610de257fe5b1480610df957506007816008811115610df757fe5b145b15610e0e57610e0e610a6c60058787876122d9565b610e1a81868686612381565b95945050505050565b600760209081526000928352604080842090915290825290205460ff1681565b60045473ffffffffffffffffffffffffffffffffffffffff1681565b610e676145c1565b610e6f611adf565b610b598585858560006125f1565b610e8561456a565b610e90848484610c54565b9050828160000151101561096657610966610a6c60008584600001516126de565b600080610ec9600154856126fd90919063ffffffff16565b9050610b6b848285612711565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b6060610efc611931565b15610f9f578351604080518281526020808402820101909152818015610f3c57816020015b610f2961456a565b815260200190600190039081610f215790505b50915060005b8181146108e557610f80868281518110610f5857fe5b6020026020010151868381518110610f6c57fe5b60200260200101518684815181106108ae57fe5b838281518110610f8c57fe5b6020908102919091010152600101610f42565b610fa7611a6d565b8351604080518281526020808402820101909152818015610fe257816020015b610fcf61456a565b815260200190600190039081610fc75790505b50915060005b81811461095c57610ffe868281518110610f5857fe5b83828151811061100a57fe5b6020908102919091010152600101610fe8565b61102561184f565b7f3a3e76d7a75e198aef1f53137e4f2a8a2ec74e2e9526db8404d08ccc9f1e621d60035482604051611058929190615542565b60405180910390a1600355565b606061106f611adf565b83516040805182815260208084028201019091528180156110aa57816020015b61109761456a565b81526020019060019003908161108f5790505b50915060005b81811461111a576110fb8682815181106110c657fe5b60200260200101518683815181106110da57fe5b60200260200101518684815181106110ee57fe5b6020026020010151612797565b83828151811061110757fe5b60209081029190910101526001016110b0565b5050611124611b93565b610966611ba7565b61113461456a565b61113c611adf565b611147848484612797565b9050611124611b93565b6111596145f5565b61116282612839565b60408301526020820152608082015161118e578060015b9081600681111561118657fe5b905250610b36565b60a082015161119f57806002611179565b8160a001518160400151106111b657806005611179565b81610100015142106111ca57806004611179565b6020808201516000908152600a909152604090205460ff16156111ef57806006611179565b610120820151825173ffffffffffffffffffffffffffffffffffffffff9081166000908152600b60209081526040808320606088015190941683529290522054111561123d57806006611179565b60038152919050565b60008061125e6001548561286a90919063ffffffff16565b9050610b6b848285612879565b61127361456a565b61127e848484610846565b9050828160200151101561096657610966610a6c60018584602001516126de565b835160005b81811461130f576113078160001b8783815181106112be57fe5b60200260200101518784815181106112d257fe5b60200260200101518785815181106112e657fe5b60200260200101518786815181106112fa57fe5b60200260200101516128ce565b6001016112a4565b506040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134290615915565b60405180910390fd5b6113536145c1565b61135b611adf565b610b598585858560016125f1565b6060611373611adf565b83516040805182815260208084028201019091528180156113ae57816020015b61139b61456a565b8152602001906001900390816113935790505b50915060005b81811461111a576113ff8682815181106113ca57fe5b60200260200101518683815181106113de57fe5b60200260200101518684815181106113f257fe5b6020026020010151612a92565b83828151811061140b57fe5b60209081029190910101526001016113b4565b61142661184f565b61084381611896565b60015481565b61143d61184f565b60008173ffffffffffffffffffffffffffffffffffffffff1663ae25532e6040518163ffffffff1660e01b815260040160206040518083038186803b15801561148557600080fd5b505afa158015611499573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114bd9190810190614f14565b7fffffffff00000000000000000000000000000000000000000000000000000000811660009081526002602052604090205490915073ffffffffffffffffffffffffffffffffffffffff16801561151b5761151b610a6c8383612ac5565b7fffffffff0000000000000000000000000000000000000000000000000000000082166000908152600260205260409081902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8616179055517fd2c6b762299c609bdb96520b58a49bfb80186934d4f71a86a367571a15c03194906115bc9084908690615657565b60405180910390a1505050565b600b60209081526000928352604080842090915290825290205481565b7f20c13b0b0000000000000000000000000000000000000000000000000000000081565b611612611adf565b805160005b8181146116425761163a83828151811061162d57fe5b6020026020010151611b4e565b600101611617565b505061083b611b93565b61165461456a565b61165c611adf565b611147848484612a92565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b61168b61184f565b73ffffffffffffffffffffffffffffffffffffffff81166116b6576116b1610a6c612b67565b610843565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6060611730611931565b156117cd57825160408051828152602080840282010190915281801561176a57816020015b60608152602001906001900390816117555790505b50915060005b8181146117c6576117a785828151811061178657fe5b602002602001015185838151811061179a57fe5b6020026020010151611953565b8382815181106117b357fe5b6020908102919091010152600101611770565b50506107f5565b6117d5611a6d565b825160408051828152602080840282010190915281801561180a57816020015b60608152602001906001900390816117f55790505b50915060005b8181146118455761182685828151811061178657fe5b83828151811061183257fe5b6020908102919091010152600101611810565b50506107f5611aaf565b60005473ffffffffffffffffffffffffffffffffffffffff1633146107b1576000546107b190610a6c90339073ffffffffffffffffffffffffffffffffffffffff16612b9e565b6004546040517fe1a5430ebec577336427f40f15822f1f36c5e3509ff209d6db9e6c9e6941cb0b916118e29173ffffffffffffffffffffffffffffffffffffffff90911690849061537b565b60405180910390a1600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000547501000000000000000000000000000000000000000000900460ff1690565b6060600061196c600154856126fd90919063ffffffff16565b9050611979848483612bbb565b60608401516119888180612c8f565b60008281526005602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556080870151905160609130916119d6919061530d565b600060405180830381855af49150503d8060008114611a11576040519150601f19603f3d011682016040523d82523d6000602084013e611a16565b606091505b509150915081611a2d57611a2d610a6c8583612cf2565b611a38836000612c8f565b60405184907fa4a7329f1dd821363067e07d359e347b4af9b1efe4b6cccf13240228af3c800d90600090a29695505050505050565b600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff167501000000000000000000000000000000000000000000179055565b600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690556107b1612d0f565b60005474010000000000000000000000000000000000000000900460ff1615611b0d57611b0d610a6c612d43565b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b611b566145f5565b611b5f82611151565b9050611b6b8282612d7a565b600381516006811115611b7a57fe5b14611b855750610843565b610c50828260200151612e29565b611b9b611931565b6107b1576107b1612d0f565b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b600082821115611bea57611bea610a6c60028585612ed2565b50900390565b611bf861456a565b6040516060907f9b44d5560000000000000000000000000000000000000000000000000000000090611c3290879087908790602401615a63565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050600060603073ffffffffffffffffffffffffffffffffffffffff1683604051611cba919061530d565b600060405180830381855af49150503d8060008114611cf5576040519150601f19603f3d011682016040523d82523d6000602084013e611cfa565b606091505b50915091508115611d2757805160a014611d1057fe5b80806020019051611d249190810190614f30565b93505b5050509392505050565b611d3961456a565b81518351611d4c9163ffffffff612ef116565b815260208083015190840151611d679163ffffffff612ef116565b602082015260408083015190840151611d859163ffffffff612ef116565b604082015260608083015190840151611da39163ffffffff612ef116565b606082015260808083015190840151611dc19163ffffffff612ef116565b608082015292915050565b60065460009073ffffffffffffffffffffffffffffffffffffffff16818115611df55781611df7565b335b9250505090565b6060634ad3127560e01b848484604051602401611e1d939291906153a2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290509392505050565b805160208201fd5b611eb3614599565b8551611ec657611ec6610a6c6000612f0d565b8451611ed957611ed9610a6c6001612f0d565b8351865114611eef57611eef610a6c6002612f0d565b8251855114611f0557611f05610a6c6003612f0d565b8551604051908082528060200260200182016040528015611f4057816020015b611f2d61456a565b815260200190600190039081611f255790505b5081528451604080518281526020808402820101909152908015611f7e57816020015b611f6b61456a565b815260200190600190039081611f635790505b506020820152600080611f8f614617565b88600081518110611f9c57fe5b60200260200101519050611fae614617565b88600081518110611fbb57fe5b602002602001015190506000611fd083612839565b9150506000611fde83612839565b915050611fe961456a565b611ff161456a565b611ff96145c1565b61202c87878f8c8151811061200a57fe5b60200260200101518f8c8151811061201e57fe5b60200260200101518f6125f1565b80516020015190915061204690869063ffffffff612ef116565b945061206381602001516020015185612ef190919063ffffffff16565b9350612073838260000151611d31565b9250612083828260200151611d31565b91506120a081604001518b60400151612ef190919063ffffffff16565b60408b0152606080820151908b01516120be9163ffffffff612ef116565b60608b015260a08701518510612169578951805160018b019a85929181106120e257fe5b60200260200101819052506040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525092508e5189141561214657818a60200151898151811061213557fe5b602002602001018190525050612207565b8e898151811061215257fe5b6020026020010151965061216587612839565b9550505b8560a00151841061220157818a6020015189806001019a508151811061218b57fe5b60200260200101819052506040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525091508d518814156121de57828a600001518a8151811061213557fe5b8d88815181106121ea57fe5b602002602001015195506121fd86612839565b9450505b50611ff1565b505050505050505095945050505050565b6000610b6b8361224e61223282600163ffffffff611bd116565b612242888763ffffffff612fac16565b9063ffffffff612ef116565b9063ffffffff612fdd16565b6000612267848484613007565b905073ffffffffffffffffffffffffffffffffffffffff831661229457612294610a6c60068686866122d9565b600881818111156122a157fe5b60ff16106122b9576122b9610a6c60038686866122d9565b60008160088111156122c757fe5b141561096657610966610a6c60048686865b6060637e5a231860e01b858585856040516024016122fa94939291906158ba565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050949350505050565b6000600185600881111561239157fe5b14156123b85781516001146123b0576123b0610a6c60028686866122d9565b506000610b6b565b60028560088111156123c657fe5b14156124bf5781516042146123e5576123e5610a6c60028686866122d9565b6000826000815181106123f457fe5b016020015160f81c9050600061241184600163ffffffff61304616565b9050600061242685602163ffffffff61304616565b905060006001888585856040516000815260200160405260405161244d949392919061560c565b6020604051602081039080840390855afa15801561246f573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015173ffffffffffffffffffffffffffffffffffffffff8981169116149550610b6b945050505050565b60038560088111156124cd57fe5b141561257a5781516042146124ec576124ec610a6c60028686866122d9565b6000826000815181106124fb57fe5b016020015160f81c9050600061251884600163ffffffff61304616565b9050600061252d85602163ffffffff61304616565b905060006001886040516020016125449190615329565b604051602081830303815290604052805190602001208585856040516000815260200160405260405161244d949392919061560c565b600485600881111561258857fe5b14156125a057612599848484613070565b9050610b6b565b60068560088111156125ae57fe5b146125b557fe5b50600083815260076020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616845290915290205460ff16949350505050565b6125f96145c1565b6101608087015161014080880191909152870151908601526126196145f5565b61262287611151565b905061262c6145f5565b61263587611151565b90506000612641611dcc565b905061264f8984838a613266565b61265b88838389613266565b61266f89898560200151856020015161337e565b6126888989856040015185604001516003543a8b6133c3565b93506126a38982856020015186604001518860000151613518565b6126bc8882846020015185604001518860200151613518565b6126d2836020015183602001518b8b85896135f6565b50505095945050505050565b60606318e4b14160e01b848484604051602401611e1d9392919061589e565b60006109668261270c8561379d565b613825565b60608301516000908161272585838661225a565b9050600581600881111561273557fe5b141561275757612750612748878761385f565b868487613897565b925061278e565b600781600881111561276557fe5b141561277f57612750612778878761385f565b838661394b565b61278b81868487612381565b92505b50509392505050565b61279f61456a565b6127a76145f5565b6127b085611151565b905060006127bc611dcc565b90506127ca86838387613266565b60006127e783604001518860a00151611bd190919063ffffffff16565b905060006127f5878361395a565b905061280588826003543a613970565b945060008460200151905061282189858388604001518a613518565b61282d818a86896139e7565b50505050509392505050565b6000806128516001548461286a90919063ffffffff16565b6000818152600960205260409020549092509050915091565b60006109668261270c85613a7e565b82516000908161288a85838661225a565b9050600581600881111561289a57fe5b14156128ad576127506127488787613b55565b60078160088111156128bb57fe5b141561277f576127506127788787613b55565b8015612a8b5760208451816128df57fe5b066004146128f6576128f6610a6c60008787613b8d565b6000612908858263ffffffff613bac16565b7fffffffff00000000000000000000000000000000000000000000000000000000811660009081526002602052604090205490915073ffffffffffffffffffffffffffffffffffffffff168061296757612967610a6c60018989613b8d565b6040516060907fa85e59e400000000000000000000000000000000000000000000000000000000906129a39089908990899089906024016156b2565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050600060608373ffffffffffffffffffffffffffffffffffffffff1683604051612a2b919061530d565b6000604051808303816000865af19150503d8060008114612a68576040519150601f19603f3d011682016040523d82523d6000602084013e612a6d565b606091505b509150915081612a8557612a85610a6c8b8b84613bf8565b50505050505b5050505050565b612a9a61456a565b612aa5848484612797565b90508281602001511461096657610966610a6c60028584602001516126de565b60606311c7b72060e01b8383604051602401612ae2929190615657565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905092915050565b60408051808201909152600481527fe69edc3e00000000000000000000000000000000000000000000000000000000602082015290565b6060631de45ad160e01b8383604051602401612ae292919061537b565b82602001514210612bd457612bd4610a6c600183613c17565b60408301513a8114612bee57612bee610a6c833a84613c34565b60065473ffffffffffffffffffffffffffffffffffffffff168015612c1a57612c1a610a6c8483613c53565b60008381526005602052604090205460ff1615612c3f57612c3f610a6c600085613c17565b606085015173ffffffffffffffffffffffffffffffffffffffff81163314801590612c725750612c70868587612711565b155b15612c8757612c87610a6c60018684896122d9565b505050505050565b73ffffffffffffffffffffffffffffffffffffffff82163314610c50576006805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff00000000000000000000000000000000000000009091161790555050565b60606320d11f6160e01b8383604051602401612ae2929190615550565b47801561084357604051339082156108fc029083906000818181858888f19350505050158015610c50573d6000803e3d6000fd5b60408051808201909152600481527f0c3b823f00000000000000000000000000000000000000000000000000000000602082015290565b606082015173ffffffffffffffffffffffffffffffffffffffff1615612dce57606082015173ffffffffffffffffffffffffffffffffffffffff163314612dce57612dce610a6c6002836020015133613c70565b6000612dd8611dcc565b90508073ffffffffffffffffffffffffffffffffffffffff16836000015173ffffffffffffffffffffffffffffffffffffffff1614612e2457612e24610a6c6000846020015184613c70565b505050565b6000818152600a60205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558281015183516101408501516101608601519351859473ffffffffffffffffffffffffffffffffffffffff9485169493909316927f02c310a9a43963ff31a754a4099cc435ed498049687539d72d7818d9b093415c92612ec692909190339061571a565b60405180910390a45050565b606063e946c1bb60e01b848484604051602401611e1d93929190615845565b60008282018381101561096657610966610a6c60008686612ed2565b606063d4092f4f60e01b82604051602401612f289190615832565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050919050565b600082612fbb575060006107f5565b82820282848281612fc857fe5b041461096657610966610a6c60018686612ed2565b600081612ff357612ff3610a6c60038585612ed2565b6000828481612ffe57fe5b04949350505050565b600081516000141561302357613023610a6c60028686866122d9565b8160018351038151811061303357fe5b016020015160f81c6008811115610b6b57fe5b6000816020018351101561306757613067610a6c6005855185602001613c8f565b50016020015190565b80516000906130a7837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff830163ffffffff613cae16565b6040516060907f1626ba7e00000000000000000000000000000000000000000000000000000000906130df9088908790602401615550565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905061316e848363ffffffff613cae16565b600060608673ffffffffffffffffffffffffffffffffffffffff1683604051613197919061530d565b600060405180830381855afa9150503d80600081146131d2576040519150601f19603f3d011682016040523d82523d6000602084013e6131d7565b606091505b50915091508180156131ea575080516020145b1561324c577fb06713810000000000000000000000000000000000000000000000000000000061322182600063ffffffff613bac16565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614945050505050610966565b61325b610a6c89898985613cb2565b505050509392505050565b60038351600681111561327557fe5b1461328f5761328f610a6c84602001518560000151613cd3565b606084015173ffffffffffffffffffffffffffffffffffffffff16156132e357606084015173ffffffffffffffffffffffffffffffffffffffff1633146132e3576132e3610a6c6002856020015133613c70565b602084015173ffffffffffffffffffffffffffffffffffffffff161561334d578173ffffffffffffffffffffffffffffffffffffffff16846020015173ffffffffffffffffffffffffffffffffffffffff161461334d5761334d610a6c6001856020015185613c70565b61335c84846020015183612879565b61337857613378610a6c600085602001518760000151856122d9565b50505050565b60a080840151908501516133979163ffffffff612fac16565b608080850151908601516133b09163ffffffff612fac16565b101561337857613378610a6c8383613cf0565b6133cb6145c1565b60a08801516000906133e3908863ffffffff611bd116565b905060006133fa8a608001518b60a0015184613d0d565b90506000613415888b60a00151611bd190919063ffffffff16565b9050600061342c8b608001518c60a0015184613d0d565b90508515613449576134428c8c85878587613d41565b945061345a565b6134578c8c85878587613e13565b94505b84515160808d015160c08e0151613472929190613d0d565b85516040015284516020015160a08d015160e08e0151613493929190613d0d565b85516060015260208501515160808c015160c08d01516134b4929190613d0d565b856020015160400181815250506134dc8560200151602001518c60a001518d60e00151613d0d565b60208601516060015260006134f7888a63ffffffff612fac16565b86516080908101829052602088015101525050505050979650505050505050565b602081015161352e90839063ffffffff612ef116565b600960008581526020019081526020016000208190555082856040015173ffffffffffffffffffffffffffffffffffffffff16866000015173ffffffffffffffffffffffffffffffffffffffff167f6869791f0a34781b29882982cc39e882768cf2c96995c2a110c577c53bc932d58861014001518961016001518a61018001518b6101a001518b338a600001518b602001518c604001518d606001518e608001516040516135e79b9a99989796959493929190615766565b60405180910390a45050505050565b835183516040808701519086015161014087015185516020015161361f918b91869088906128ce565b6136398a89610140015186868960200151602001516128ce565b6136538988610180015185848960200151604001516128ce565b61366d8a89610180015186858960000151604001516128ce565b6136838a896101400151868989604001516128ce565b61369989886101400151858989606001516128ce565b60006136b18b8b88600001516080015188888c613eac565b9050806136ce578551600060809182018190526020880151909101525b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561371e57506101a080890151908a015161371e9163ffffffff613f0816565b1561375c576137578b8a6101a0015189866137528b60200151606001518c6000015160600151612ef190919063ffffffff16565b6128ce565b613790565b6137768a896101a0015189858a60200151606001516128ce565b6137908b8a6101a0015189868a60000151606001516128ce565b5050505050505050505050565b608081810151825160208085015160408087015160609788015186519685019690962082517fec69816980a3a3ca4554410e60253953e9ff375ba4536a98adfa15cc71541508815294850195909552908301919091529481019490945273ffffffffffffffffffffffffffffffffffffffff9091169183019190915260a082015260c0902090565b6040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b6040516060907fde047db40000000000000000000000000000000000000000000000000000000090612ae29085908590602401615a8e565b805160009060158110156138b5576138b5610a6c60028787876122d9565b60006138e9847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeb840163ffffffff613f2d16565b73ffffffffffffffffffffffffffffffffffffffff80871660009081526008602090815260408083209385168352929052205490915060ff1661393357613933610a6c8683613f6d565b6139408188866015613f8a565b979650505050505050565b6000610b6b8385846001613f8a565b60008183106139695781610966565b5090919050565b61397861456a565b6020810184905260a08501516080860151613994918691613d0d565b815260a085015160c08601516139ab918691613d0d565b604082015260a085015160e08601516139c5918691613d0d565b60608201526139da828463ffffffff612fac16565b6080820152949350505050565b613a018484610160015184866000015185602001516128ce565b613a1b8484610140015185600001518585600001516128ce565b613a3584846101a0015184866040015185606001516128ce565b613a53848461018001518560000151866040015185604001516128ce565b6000613a69858360800151866000015186614161565b905080612a8b57600060808301525050505050565b6101408101516101608201516101808301516101a08401516000937ff80322eb8376aafb64eadf8f0d7623f22130fd9491a221e902b713cb984a753493909290916020871015613aca57fe5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe087018051610140890180516101608b0180516101808d0180516101a08f0180519d89528c5160209d8e012087528b519b8d019b909b2084528951998c01999099208152875197909a019690962088526101e085209390945290529190529252919091529050919050565b6040516060907f3efe50c80000000000000000000000000000000000000000000000000000000090612ae29085908590602401615a41565b606063488219a660e01b848484604051602401611e1d9392919061580a565b60008160040183511015613bcd57613bcd610a6c6003855185600401613c8f565b5001602001517fffffffff000000000000000000000000000000000000000000000000000000001690565b6060634678472b60e01b848484604051602401611e1d93929190615569565b606063f598518460e01b8383604051602401612ae29291906158fe565b606063a26dac0960e01b848484604051602401611e1d939291906155f6565b606063dec4aedf60e01b8383604051602401612ae29291906154d7565b606063e53c76c860e01b848484604051602401611e1d93929190615866565b6060632800659560e01b848484604051602401611e1d939291906158ac565b9052565b6060631b8388f760e01b858585856040516024016122fa94939291906154fb565b606063fdb6ca8d60e01b8383604051602401612ae2929190615594565b606063b6555d6f60e01b8383604051602401612ae2929190615542565b6000613d1a8484846141a6565b15613d2d57613d2d610a6c85858561420c565b610b6b8361224e868563ffffffff612fac16565b613d496145c1565b81851184841184861115613d6957613d6289868661422b565b9250613db8565b86841115613da95782518790528251602001869052608088015160a0890151613d93919089613d0d565b6020808501805192909252905101879052613db8565b613db587878787614268565b92505b8115613dde576020808401510151835151613dd89163ffffffff611bd116565b60408401525b8015613e065782516020908101519084015151613e009163ffffffff611bd116565b60608401525b50505b9695505050505050565b613e1b6145c1565b82841115613e3557613e2e87848461422b565b9050613e83565b82841015613e745780518590528051602090810185905281015184905260a08601516080870151613e67919086614293565b6020808301510152613e83565b613e8085858585614268565b90505b6020808201510151815151613e9d9163ffffffff611bd116565b60408201529695505050505050565b60045460009073ffffffffffffffffffffffffffffffffffffffff168015613efe57476000613edf8a84848b8b8a6142cb565b9050613ef189848385038b8a8a6142cb565b5060019350505050613e09565b6000915050613e09565b6000815183511480156109665750508051602091820120825192909101919091201490565b60008160140183511015613f4e57613f4e610a6c6004855185601401613c8f565b50016014015173ffffffffffffffffffffffffffffffffffffffff1690565b606063a15c0d0660e01b8383604051602401612ae292919061537b565b8151600090613fa18484830363ffffffff613cae16565b6040516060907f20c13b0b0000000000000000000000000000000000000000000000000000000090613fd990889088906024016156f5565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050614068858363ffffffff613cae16565b600060608873ffffffffffffffffffffffffffffffffffffffff1683604051614091919061530d565b600060405180830381855afa9150503d80600081146140cc576040519150601f19603f3d011682016040523d82523d6000602084013e6140d1565b606091505b50915091508180156140e4575080516020145b15614146577f20c13b0b0000000000000000000000000000000000000000000000000000000061411b82600063ffffffff613bac16565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614945050505050610b6b565b614155610a6c8a8a8a85614403565b50505050949350505050565b60045460009073ffffffffffffffffffffffffffffffffffffffff16801561419c576141918682478888886142cb565b506001915050610b6b565b6000915050610b6b565b6000826141b8576141b8610a6c614424565b8115806141c3575083155b156141d057506000610966565b600083806141da57fe5b85840990506141ef858463ffffffff612fac16565b614201826103e863ffffffff612fac16565b101595945050505050565b606063339f3de260e01b848484604051602401611e1d939291906155f6565b6142336145c1565b60208082018051859052518101839052815101839052608084015160a085015161425e919085613d0d565b8151529392505050565b6142706145c1565b805194909452835160209081019390935282840180519290925290519091015290565b60006142a084848461445b565b156142b3576142b3610a6c85858561420c565b610b6b8361224e61223282600163ffffffff611bd116565b60008385106142d75750825b6040516060907fa3b4a3270000000000000000000000000000000000000000000000000000000090614311908690869089906024016153a2565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050600060608873ffffffffffffffffffffffffffffffffffffffff16848460405161439a919061530d565b60006040518083038185875af1925050503d80600081146143d7576040519150601f19603f3d011682016040523d82523d6000602084013e6143dc565b606091505b5091509150816143f6576143f6610a6c8b898989866144bf565b5050509695505050505050565b6060635bd0428d60e01b858585856040516024016122fa94939291906153d3565b60408051808201909152600481527fa791837c00000000000000000000000000000000000000000000000000000000602082015290565b60008261446d5761446d610a6c614424565b811580614478575083155b1561448557506000610966565b6000838061448f57fe5b8584099050836144a5818363ffffffff611bd116565b816144ac57fe5b0690506141ef858463ffffffff612fac16565b60606387cb1e7560e01b86868686866040516024016144e29594939291906155b1565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905095945050505050565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6040518060800160405280606081526020016060815260200160008152602001600081525090565b60405180608001604052806145d461456a565b81526020016145e161456a565b815260200160008152602001600081525090565b6040805160608101909152806000815260006020820181905260409091015290565b604051806101c00160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001606081526020016060815260200160608152602001606081525090565b803573ffffffffffffffffffffffffffffffffffffffff811681146107f557600080fd5b600082601f830112614712578081fd5b813561472561472082615b1f565b615af8565b81815291506020808301908481018184028601820187101561474657600080fd5b60005b8481101561476d5761475b88836146de565b84529282019290820190600101614749565b505050505092915050565b600082601f830112614788578081fd5b813561479661472082615b1f565b8181529150602080830190840160005b838110156147d3576147be8760208435890101614896565b835260209283019291909101906001016147a6565b5050505092915050565b600082601f8301126147ed578081fd5b81356147fb61472082615b1f565b8181529150602080830190840160005b838110156147d357614823876020843589010161491d565b8352602092830192919091019060010161480b565b600082601f830112614848578081fd5b813561485661472082615b1f565b81815291506020808301908481018184028601820187101561487757600080fd5b60005b8481101561476d5781358452928201929082019060010161487a565b600082601f8301126148a6578081fd5b813567ffffffffffffffff8111156148bc578182fd5b6148ed60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601615af8565b915080825283602082850101111561490457600080fd5b8060208401602084013760009082016020015292915050565b60006101c0808385031215614930578182fd5b61493981615af8565b91505061494683836146de565b815261495583602084016146de565b602082015261496783604084016146de565b604082015261497983606084016146de565b60608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e08201526101008083013581830152506101208083013581830152506101408083013567ffffffffffffffff808211156149db57600080fd5b6149e786838701614896565b83850152610160925082850135915080821115614a0357600080fd5b614a0f86838701614896565b83850152610180925082850135915080821115614a2b57600080fd5b614a3786838701614896565b838501526101a0925082850135915080821115614a5357600080fd5b50614a6085828601614896565b82840152505092915050565b600060a08284031215614a7d578081fd5b614a8760a0615af8565b90508135815260208201356020820152604082013560408201526060820135614aaf81615b89565b6060820152608082013567ffffffffffffffff811115614ace57600080fd5b614ada84828501614896565b60808301525092915050565b600060208284031215614af7578081fd5b61096683836146de565b60008060408385031215614b13578081fd5b614b1d84846146de565b9150614b2c84602085016146de565b90509250929050565b60008060408385031215614b47578182fd5b614b5184846146de565b915060208301358015158114614b65578182fd5b809150509250929050565b60008060008060808587031215614b85578182fd5b843567ffffffffffffffff80821115614b9c578384fd5b614ba888838901614778565b95506020870135915080821115614bbd578384fd5b614bc988838901614702565b94506040870135915080821115614bde578384fd5b614bea88838901614702565b93506060870135915080821115614bff578283fd5b50614c0c87828801614838565b91505092959194509250565b600060208284031215614c29578081fd5b813567ffffffffffffffff811115614c3f578182fd5b610b6b848285016147dd565b60008060008060808587031215614c60578182fd5b843567ffffffffffffffff80821115614c77578384fd5b614c83888389016147dd565b95506020870135915080821115614c98578384fd5b614ca4888389016147dd565b94506040870135915080821115614cb9578384fd5b614cc588838901614778565b93506060870135915080821115614cda578283fd5b50614c0c87828801614778565b600080600060608486031215614cfb578081fd5b833567ffffffffffffffff80821115614d12578283fd5b614d1e878388016147dd565b94506020860135915080821115614d33578283fd5b614d3f87838801614838565b93506040860135915080821115614d54578283fd5b50614d6186828701614778565b9150509250925092565b600080600060608486031215614d7f578081fd5b833567ffffffffffffffff80821115614d96578283fd5b614da2878388016147dd565b9450602086013593506040860135915080821115614d54578283fd5b60008060408385031215614dd0578182fd5b823567ffffffffffffffff80821115614de7578384fd5b81850186601f820112614df8578485fd5b80359250614e0861472084615b1f565b83815260208082019190838101885b87811015614e4057614e2e8c848435890101614a6c565b85529382019390820190600101614e17565b50919750880135945050505080821115614e58578283fd5b50614e6585828601614778565b9150509250929050565b600060208284031215614e80578081fd5b5035919050565b60008060408385031215614e99578182fd5b823591506020830135614b6581615b89565b600080600060608486031215614ebf578081fd5b833592506020840135614ed181615b89565b9150604084013567ffffffffffffffff811115614eec578182fd5b614d6186828701614896565b600060208284031215614f09578081fd5b813561096681615bab565b600060208284031215614f25578081fd5b815161096681615bab565b600060a08284031215614f41578081fd5b614f4b60a0615af8565b82518152602083015160208201526040830151604082015260608301516060820152608083015160808201528091505092915050565b600060208284031215614f92578081fd5b813567ffffffffffffffff811115614fa8578182fd5b610b6b8482850161491d565b60008060408385031215614fc6578182fd5b823567ffffffffffffffff80821115614fdd578384fd5b614fe98683870161491d565b93506020850135915080821115614ffe578283fd5b50614e6585828601614896565b60008060008060808587031215615020578182fd5b843567ffffffffffffffff80821115615037578384fd5b6150438883890161491d565b95506020870135915080821115615058578384fd5b6150648883890161491d565b94506040870135915080821115615079578384fd5b61508588838901614896565b9350606087013591508082111561509a578283fd5b50614c0c87828801614896565b6000806000606084860312156150bb578081fd5b833567ffffffffffffffff808211156150d2578283fd5b6150de8783880161491d565b94506020860135935060408601359150808211156150fa578283fd5b50614d6186828701614896565b60008060408385031215615119578182fd5b823567ffffffffffffffff80821115615130578384fd5b614fe986838701614a6c565b73ffffffffffffffffffffffffffffffffffffffff169052565b6000815180845260208401935060208301825b828110156151925761517c8683516151e6565b60a0959095019460209190910190600101615169565b5093949350505050565b600081518084526151b4816020860160208601615b3f565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b80518252602081015160208301526040810151604083015260608101516060830152608081015160808301525050565b60006101c061522684845161513c565b6020830151615238602086018261513c565b50604083015161524b604086018261513c565b50606083015161525e606086018261513c565b506080830151608085015260a083015160a085015260c083015160c085015260e083015160e08501526101008084015181860152506101208084015181860152506101408084015182828701526152b78387018261519c565b915050610160915081840151858203838701526152d4828261519c565b9250505061018080840151858303828701526152f0838261519c565b9150506101a091508184015185820383870152613e09828261519c565b6000825161531f818460208701615b3f565b9190910192915050565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c810191909152603c0190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b600073ffffffffffffffffffffffffffffffffffffffff8616825260806020830152615402608083018661519c565b8281036040840152615414818661519c565b8381036060850152615426818661519c565b98975050505050505050565b6000602080830181845280855180835260408601915060408482028701019250838701855b828110156154a3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845261549185835161519c565b94509285019290850190600101615457565b5092979650505050505050565b6000602082526109666020830184615156565b901515815260200190565b90815260200190565b91825273ffffffffffffffffffffffffffffffffffffffff16602082015260400190565b600085825273ffffffffffffffffffffffffffffffffffffffff8516602083015260806040830152615530608083018561519c565b8281036060840152613940818561519c565b918252602082015260400190565b600083825260406020830152610b6b604083018461519c565b600084825260606020830152615582606083018561519c565b8281036040840152613e09818561519c565b828152604081016155a483615b7f565b8260208301529392505050565b600086825285602083015273ffffffffffffffffffffffffffffffffffffffff808616604084015280851660608401525060a0608083015261394060a083018461519c565b9283526020830191909152604082015260600190565b93845260ff9290921660208401526040830152606082015260800190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b7fffffffff0000000000000000000000000000000000000000000000000000000092909216825273ffffffffffffffffffffffffffffffffffffffff16602082015260400190565b600060208252610966602083018461519c565b6000608082526156c5608083018761519c565b73ffffffffffffffffffffffffffffffffffffffff95861660208401529390941660408201526060015292915050565b600060408252615708604083018561519c565b8281036020840152610e1a818561519c565b60006060825261572d606083018661519c565b828103602084015261573f818661519c565b91505073ffffffffffffffffffffffffffffffffffffffff83166040830152949350505050565b600061016080835261577a8184018f61519c565b838103602085015261578c818f61519c565b91505082810360408401526157a1818d61519c565b83810360608501526157b3818d61519c565b73ffffffffffffffffffffffffffffffffffffffff9b8c16608086015299909a1660a0840152505060c081019590955260e08501939093526101008401919091526101208301526101409091015295945050505050565b600061581585615b6b565b84825283602083015260606040830152610e1a606083018461519c565b6020810161583f83615b75565b91905290565b6060810161585285615b75565b938152602081019290925260409091015290565b606081016003851061587457fe5b938152602081019290925273ffffffffffffffffffffffffffffffffffffffff1660409091015290565b606081016003851061585257fe5b606081016008851061585257fe5b60006158c586615b7f565b85825284602083015273ffffffffffffffffffffffffffffffffffffffff8416604083015260806060830152613e09608083018461519c565b6040810161590b84615b6b565b9281526020015290565b60208082526014908201527f5452414e53464552535f5355434345535346554c000000000000000000000000604082015260600190565b60006020825282516080602084015261596860a0840182615156565b602085015191507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08482030160408501526159a38183615156565b604086015160608601526060860151608086015280935050505092915050565b60a081016107f582846151e6565b6000610180820190506159e58284516151e6565b60208301516159f760a08401826151e6565b5060408301516101408301526060909201516101609091015290565b81516060820190615a2381615b7f565b80835250602083015160208301526040830151604083015292915050565b600060408252615a546040830185615216565b90508260208301529392505050565b600060608252615a766060830186615216565b8460208401528281036040840152613e09818561519c565b60006040825283516040830152602084015160608301526040840151608083015273ffffffffffffffffffffffffffffffffffffffff60608501511660a0830152608084015160a060c0840152615ae860e084018261519c565b9150508260208301529392505050565b60405181810167ffffffffffffffff81118282101715615b1757600080fd5b604052919050565b600067ffffffffffffffff821115615b35578081fd5b5060209081020190565b60005b83811015615b5a578181015183820152602001615b42565b838111156133785750506000910152565b6002811061084357fe5b6004811061084357fe5b6007811061084357fe5b73ffffffffffffffffffffffffffffffffffffffff8116811461084357600080fd5b7fffffffff000000000000000000000000000000000000000000000000000000008116811461084357600080fd5b8351602094850120835193850193909320604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815295860194909452928401929092526060830152608082015260a090209056fea365627a7a7231582057a99d2b26604884d7017ca2643f67d83fa0b377d07c01f3eb935fbcfa0af1976c6578706572696d656e74616cf564736f6c63430005110040" }, "deployedBytecode": { - "object": "0x6080604052600436106102dc5760003560e01c80638d45cd2311610184578063beee2e14116100d6578063dd885e2d1161008a578063eea086ba11610064578063eea086ba14610735578063f2fde38b1461074a578063fc74896d1461076a576102dc565b8063dd885e2d146106ed578063dedfc1f11461070f578063e14b58c414610722576102dc565b8063c26cfecd116100bb578063c26cfecd14610698578063c585bb93146106ad578063d9bfa73e146106cd576102dc565b8063beee2e1414610665578063c0fa16cc14610678576102dc565b80639b44d55611610138578063a6c3bf3311610112578063a6c3bf331461061f578063b04fbddd14610632578063b718e29214610652576102dc565b80639b44d556146105bf5780639d3fa4b9146105d2578063a12dcc6f146105ff576102dc565b80638ea8dfe4116101695780638ea8dfe41461056c5780639331c7421461058c5780639694a402146105ac576102dc565b80638d45cd23146105375780638da5cb5b14610557576102dc565b8063607041081161023d5780637b8e3514116101f1578063850a1501116101cb578063850a1501146104ef57806388ec79fb146105045780638bc8efb314610524576102dc565b80637b8e35141461048f5780638171c407146104af57806382c174d0146104cf576102dc565b80636fcf3e9e116102225780636fcf3e9e1461045657806377fcce681461046957806378d29ac11461047c576102dc565b806360704108146104095780636a1a80fd14610436576102dc565b80632ac1262211610294578063369da09911610279578063369da099146103c357806346c02d7a146103e35780634f9559b1146103f6576102dc565b80632ac12622146103905780632da62987146103b0576102dc565b80631ce4c78b116102c55780631ce4c78b1461032e5780632280c91014610350578063288cdc9114610370576102dc565b80630228e168146102e15780630efca18514610317575b600080fd5b3480156102ed57600080fd5b506103016102fc366004614e6f565b61078a565b60405161030e91906154c3565b60405180910390f35b34801561032357600080fd5b5061032c61079f565b005b34801561033a57600080fd5b506103436107b3565b60405161030e91906154ce565b61036361035e366004615107565b6107b9565b60405161030e919061569f565b34801561037c57600080fd5b5061034361038b366004614e6f565b6107fb565b34801561039c57600080fd5b506103016103ab366004614e6f565b61080d565b61032c6103be366004614f81565b610822565b6103d66103d1366004614d6b565b610846565b60405161030e91906159c3565b61032c6103f1366004614e6f565b61096d565b61032c610404366004614e6f565b6109e0565b34801561041557600080fd5b50610429610424366004614ef8565b610aed565b60405161030e919061535a565b610449610444366004614c4b565b610b3b565b60405161030e919061594c565b610449610464366004614c4b565b610b73565b61032c610477366004614b35565b610b91565b6103d661048a366004614d6b565b610c54565b34801561049b57600080fd5b506103016104aa366004614b01565b610da4565b3480156104bb57600080fd5b506103016104ca366004614eab565b610dc4565b3480156104db57600080fd5b506103016104ea366004614e87565b610e23565b3480156104fb57600080fd5b50610429610e43565b61051761051236600461500b565b610e5f565b60405161030e91906159d1565b6103d6610532366004614d6b565b610e7d565b34801561054357600080fd5b50610301610552366004615107565b610eb1565b34801561056357600080fd5b50610429610ed6565b61057f61057a366004614ce7565b610ef2565b60405161030e91906154b0565b34801561059857600080fd5b5061032c6105a7366004614e6f565b61101d565b61057f6105ba366004614ce7565b611065565b6103d66105cd3660046150a7565b61112c565b3480156105de57600080fd5b506105f26105ed366004614f81565b611151565b60405161030e9190615a13565b34801561060b57600080fd5b5061030161061a366004614fb4565b611246565b6103d661062d366004614d6b565b61126b565b34801561063e57600080fd5b5061032c61064d366004614b70565b61129f565b61051761066036600461500b565b61134b565b61057f610673366004614ce7565b611369565b34801561068457600080fd5b5061032c610693366004614ae6565b61141e565b3480156106a457600080fd5b5061034361142f565b3480156106b957600080fd5b5061032c6106c8366004614ae6565b611435565b3480156106d957600080fd5b506103436106e8366004614b01565b6115c9565b3480156106f957600080fd5b506107026115e6565b60405161030e919061562a565b61032c61071d366004614c18565b61160a565b6103d66107303660046150a7565b61164c565b34801561074157600080fd5b50610429611667565b34801561075657600080fd5b5061032c610765366004614ae6565b611683565b61077d610778366004614dbe565b611726565b60405161030e9190615432565b60056020526000908152604090205460ff1681565b6107a761184f565b6107b16000611896565b565b60035481565b60606107c3611931565b156107d9576107d28383611953565b90506107f5565b6107e1611a6d565b6107eb8383611953565b90506107f5611aaf565b92915050565b60096020526000908152604090205481565b600a6020526000908152604090205460ff1681565b61082a611adf565b61083381611b4e565b61083b611b93565b610843611ba7565b50565b61084e61456a565b610856611931565b156108ec57835160005b8181146108e5576000610880846020015187611bd190919063ffffffff16565b905061088a61456a565b6108bb88848151811061089957fe5b6020026020010151838886815181106108ae57fe5b6020026020010151611bf0565b90506108c78582611d31565b9450868560200151106108db5750506108e5565b5050600101610860565b5050610966565b6108f4611a6d565b835160005b81811461095c576000610919846020015187611bd190919063ffffffff16565b905061092361456a565b61093288848151811061089957fe5b905061093e8582611d31565b94508685602001511061095257505061095c565b50506001016108f9565b5050610966611aaf565b9392505050565b610975611adf565b600061097f611dcc565b600083815260076020908152604080832073ffffffffffffffffffffffffffffffffffffffff90941683529290522080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555061083b611b93565b6109e8611adf565b60006109f2611dcc565b9050600073ffffffffffffffffffffffffffffffffffffffff82163314610a195733610a1c565b60005b73ffffffffffffffffffffffffffffffffffffffff8084166000908152600b60209081526040808320938516835292905220549091506001840190808211610a7157610a71610a6c858584611dfe565b611ea3565b73ffffffffffffffffffffffffffffffffffffffff8085166000818152600b602090815260408083209488168084529490915290819020859055517f82af639571738f4ebd4268fb0363d8957ebe1bbb9e78dba5ebd69eed39b154f090610ad99086906154ce565b60405180910390a35050505061083b611b93565b7fffffffff00000000000000000000000000000000000000000000000000000000811660009081526002602052604090205473ffffffffffffffffffffffffffffffffffffffff165b919050565b610b43614599565b610b4b611adf565b610b59858585856001611eab565b9050610b63611b93565b610b6b611ba7565b949350505050565b610b7b614599565b610b83611adf565b610b59858585856000611eab565b610b99611adf565b6000610ba3611dcc565b73ffffffffffffffffffffffffffffffffffffffff8181166000818152600860209081526040808320948916808452949091529081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168715151790555192935090917fa8656e308026eeabce8f0bc18048433252318ab80ac79da0b3d3d8697dfba89190610c379086906154c3565b60405180910390a350610c48611b93565b610c50611ba7565b5050565b610c5c61456a565b610c64611931565b15610d2257835160005b8181146108e5578251600090610c8b90879063ffffffff611bd116565b90506000610cc8888481518110610c9e57fe5b602002602001015160a00151898581518110610cb657fe5b60200260200101516080015184612218565b9050610cd261456a565b610cf6898581518110610ce157fe5b6020026020010151838987815181106108ae57fe5b9050610d028682611d31565b955087866000015110610d17575050506108e5565b505050600101610c6e565b610d2a611a6d565b835160005b81811461095c578251600090610d4c90879063ffffffff611bd116565b90506000610d5f888481518110610c9e57fe5b9050610d6961456a565b610d78898581518110610ce157fe5b9050610d848682611d31565b955087866000015110610d995750505061095c565b505050600101610d2f565b600860209081526000928352604080842090915290825290205460ff1681565b600080610dd285858561225a565b90506005816008811115610de257fe5b1480610df957506007816008811115610df757fe5b145b15610e0e57610e0e610a6c60058787876122d9565b610e1a81868686612381565b95945050505050565b600760209081526000928352604080842090915290825290205460ff1681565b60045473ffffffffffffffffffffffffffffffffffffffff1681565b610e676145c1565b610e6f611adf565b610b598585858560006125f1565b610e8561456a565b610e90848484610c54565b9050828160000151101561096657610966610a6c60008584600001516126de565b600080610ec9600154856126fd90919063ffffffff16565b9050610b6b848285612711565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b6060610efc611931565b15610f9f578351604080518281526020808402820101909152818015610f3c57816020015b610f2961456a565b815260200190600190039081610f215790505b50915060005b8181146108e557610f80868281518110610f5857fe5b6020026020010151868381518110610f6c57fe5b60200260200101518684815181106108ae57fe5b838281518110610f8c57fe5b6020908102919091010152600101610f42565b610fa7611a6d565b8351604080518281526020808402820101909152818015610fe257816020015b610fcf61456a565b815260200190600190039081610fc75790505b50915060005b81811461095c57610ffe868281518110610f5857fe5b83828151811061100a57fe5b6020908102919091010152600101610fe8565b61102561184f565b7f3a3e76d7a75e198aef1f53137e4f2a8a2ec74e2e9526db8404d08ccc9f1e621d60035482604051611058929190615542565b60405180910390a1600355565b606061106f611adf565b83516040805182815260208084028201019091528180156110aa57816020015b61109761456a565b81526020019060019003908161108f5790505b50915060005b81811461111a576110fb8682815181106110c657fe5b60200260200101518683815181106110da57fe5b60200260200101518684815181106110ee57fe5b6020026020010151612797565b83828151811061110757fe5b60209081029190910101526001016110b0565b5050611124611b93565b610966611ba7565b61113461456a565b61113c611adf565b611147848484612797565b9050611124611b93565b6111596145f5565b61116282612839565b60408301526020820152608082015161118e578060015b9081600681111561118657fe5b905250610b36565b60a082015161119f57806002611179565b8160a001518160400151106111b657806005611179565b81610100015142106111ca57806004611179565b6020808201516000908152600a909152604090205460ff16156111ef57806006611179565b610120820151825173ffffffffffffffffffffffffffffffffffffffff9081166000908152600b60209081526040808320606088015190941683529290522054111561123d57806006611179565b60038152919050565b60008061125e6001548561286a90919063ffffffff16565b9050610b6b848285612879565b61127361456a565b61127e848484610846565b9050828160200151101561096657610966610a6c60018584602001516126de565b835160005b81811461130f576113078160001b8783815181106112be57fe5b60200260200101518784815181106112d257fe5b60200260200101518785815181106112e657fe5b60200260200101518786815181106112fa57fe5b60200260200101516128ce565b6001016112a4565b506040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134290615915565b60405180910390fd5b6113536145c1565b61135b611adf565b610b598585858560016125f1565b6060611373611adf565b83516040805182815260208084028201019091528180156113ae57816020015b61139b61456a565b8152602001906001900390816113935790505b50915060005b81811461111a576113ff8682815181106113ca57fe5b60200260200101518683815181106113de57fe5b60200260200101518684815181106113f257fe5b6020026020010151612a92565b83828151811061140b57fe5b60209081029190910101526001016113b4565b61142661184f565b61084381611896565b60015481565b61143d61184f565b60008173ffffffffffffffffffffffffffffffffffffffff1663ae25532e6040518163ffffffff1660e01b815260040160206040518083038186803b15801561148557600080fd5b505afa158015611499573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114bd9190810190614f14565b7fffffffff00000000000000000000000000000000000000000000000000000000811660009081526002602052604090205490915073ffffffffffffffffffffffffffffffffffffffff16801561151b5761151b610a6c8383612ac5565b7fffffffff0000000000000000000000000000000000000000000000000000000082166000908152600260205260409081902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8616179055517fd2c6b762299c609bdb96520b58a49bfb80186934d4f71a86a367571a15c03194906115bc9084908690615657565b60405180910390a1505050565b600b60209081526000928352604080842090915290825290205481565b7f20c13b0b0000000000000000000000000000000000000000000000000000000081565b611612611adf565b805160005b8181146116425761163a83828151811061162d57fe5b6020026020010151611b4e565b600101611617565b505061083b611b93565b61165461456a565b61165c611adf565b611147848484612a92565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b61168b61184f565b73ffffffffffffffffffffffffffffffffffffffff81166116b6576116b1610a6c612b67565b610843565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6060611730611931565b156117cd57825160408051828152602080840282010190915281801561176a57816020015b60608152602001906001900390816117555790505b50915060005b8181146117c6576117a785828151811061178657fe5b602002602001015185838151811061179a57fe5b6020026020010151611953565b8382815181106117b357fe5b6020908102919091010152600101611770565b50506107f5565b6117d5611a6d565b825160408051828152602080840282010190915281801561180a57816020015b60608152602001906001900390816117f55790505b50915060005b8181146118455761182685828151811061178657fe5b83828151811061183257fe5b6020908102919091010152600101611810565b50506107f5611aaf565b60005473ffffffffffffffffffffffffffffffffffffffff1633146107b1576000546107b190610a6c90339073ffffffffffffffffffffffffffffffffffffffff16612b9e565b6004546040517fe1a5430ebec577336427f40f15822f1f36c5e3509ff209d6db9e6c9e6941cb0b916118e29173ffffffffffffffffffffffffffffffffffffffff90911690849061537b565b60405180910390a1600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000547501000000000000000000000000000000000000000000900460ff1690565b6060600061196c600154856126fd90919063ffffffff16565b9050611979848483612bbb565b60608401516119888180612c8f565b60008281526005602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556080870151905160609130916119d6919061530d565b600060405180830381855af49150503d8060008114611a11576040519150601f19603f3d011682016040523d82523d6000602084013e611a16565b606091505b509150915081611a2d57611a2d610a6c8583612cf2565b611a38836000612c8f565b60405184907fa4a7329f1dd821363067e07d359e347b4af9b1efe4b6cccf13240228af3c800d90600090a29695505050505050565b600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff167501000000000000000000000000000000000000000000179055565b600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690556107b1612d0f565b60005474010000000000000000000000000000000000000000900460ff1615611b0d57611b0d610a6c612d43565b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b611b566145f5565b611b5f82611151565b9050611b6b8282612d7a565b600381516006811115611b7a57fe5b14611b855750610843565b610c50828260200151612e29565b611b9b611931565b6107b1576107b1612d0f565b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b600082821115611bea57611bea610a6c60028585612ed2565b50900390565b611bf861456a565b6040516060907f9b44d5560000000000000000000000000000000000000000000000000000000090611c3290879087908790602401615a63565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050600060603073ffffffffffffffffffffffffffffffffffffffff1683604051611cba919061530d565b600060405180830381855af49150503d8060008114611cf5576040519150601f19603f3d011682016040523d82523d6000602084013e611cfa565b606091505b50915091508115611d2757805160a014611d1057fe5b80806020019051611d249190810190614f30565b93505b5050509392505050565b611d3961456a565b81518351611d4c9163ffffffff612ef116565b815260208083015190840151611d679163ffffffff612ef116565b602082015260408083015190840151611d859163ffffffff612ef116565b604082015260608083015190840151611da39163ffffffff612ef116565b606082015260808083015190840151611dc19163ffffffff612ef116565b608082015292915050565b60065460009073ffffffffffffffffffffffffffffffffffffffff16818115611df55781611df7565b335b9250505090565b6060634ad3127560e01b848484604051602401611e1d939291906153a2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290509392505050565b805160208201fd5b611eb3614599565b8551611ec657611ec6610a6c6000612f0d565b8451611ed957611ed9610a6c6001612f0d565b8351865114611eef57611eef610a6c6002612f0d565b8251855114611f0557611f05610a6c6003612f0d565b8551604051908082528060200260200182016040528015611f4057816020015b611f2d61456a565b815260200190600190039081611f255790505b5081528451604080518281526020808402820101909152908015611f7e57816020015b611f6b61456a565b815260200190600190039081611f635790505b506020820152600080611f8f614617565b88600081518110611f9c57fe5b60200260200101519050611fae614617565b88600081518110611fbb57fe5b602002602001015190506000611fd083612839565b9150506000611fde83612839565b915050611fe961456a565b611ff161456a565b611ff96145c1565b61202c87878f8c8151811061200a57fe5b60200260200101518f8c8151811061201e57fe5b60200260200101518f6125f1565b80516020015190915061204690869063ffffffff612ef116565b945061206381602001516020015185612ef190919063ffffffff16565b9350612073838260000151611d31565b9250612083828260200151611d31565b91506120a081604001518b60400151612ef190919063ffffffff16565b60408b0152606080820151908b01516120be9163ffffffff612ef116565b60608b015260a08701518510612169578951805160018b019a85929181106120e257fe5b60200260200101819052506040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525092508e5189141561214657818a60200151898151811061213557fe5b602002602001018190525050612207565b8e898151811061215257fe5b6020026020010151965061216587612839565b9550505b8560a00151841061220157818a6020015189806001019a508151811061218b57fe5b60200260200101819052506040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525091508d518814156121de57828a600001518a8151811061213557fe5b8d88815181106121ea57fe5b602002602001015195506121fd86612839565b9450505b50611ff1565b505050505050505095945050505050565b6000610b6b8361224e61223282600163ffffffff611bd116565b612242888763ffffffff612fac16565b9063ffffffff612ef116565b9063ffffffff612fdd16565b6000612267848484613007565b905073ffffffffffffffffffffffffffffffffffffffff831661229457612294610a6c60068686866122d9565b600881818111156122a157fe5b60ff16106122b9576122b9610a6c60038686866122d9565b60008160088111156122c757fe5b141561096657610966610a6c60048686865b6060637e5a231860e01b858585856040516024016122fa94939291906158ba565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050949350505050565b6000600185600881111561239157fe5b14156123b85781516001146123b0576123b0610a6c60028686866122d9565b506000610b6b565b60028560088111156123c657fe5b14156124bf5781516042146123e5576123e5610a6c60028686866122d9565b6000826000815181106123f457fe5b016020015160f81c9050600061241184600163ffffffff61304616565b9050600061242685602163ffffffff61304616565b905060006001888585856040516000815260200160405260405161244d949392919061560c565b6020604051602081039080840390855afa15801561246f573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015173ffffffffffffffffffffffffffffffffffffffff8981169116149550610b6b945050505050565b60038560088111156124cd57fe5b141561257a5781516042146124ec576124ec610a6c60028686866122d9565b6000826000815181106124fb57fe5b016020015160f81c9050600061251884600163ffffffff61304616565b9050600061252d85602163ffffffff61304616565b905060006001886040516020016125449190615329565b604051602081830303815290604052805190602001208585856040516000815260200160405260405161244d949392919061560c565b600485600881111561258857fe5b14156125a057612599848484613070565b9050610b6b565b60068560088111156125ae57fe5b146125b557fe5b50600083815260076020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616845290915290205460ff16949350505050565b6125f96145c1565b6101608087015161014080880191909152870151908601526126196145f5565b61262287611151565b905061262c6145f5565b61263587611151565b90506000612641611dcc565b905061264f8984838a613266565b61265b88838389613266565b61266f89898560200151856020015161337e565b6126888989856040015185604001516003543a8b6133c3565b93506126a38982856020015186604001518860000151613518565b6126bc8882846020015185604001518860200151613518565b6126d2836020015183602001518b8b85896135f6565b50505095945050505050565b60606318e4b14160e01b848484604051602401611e1d9392919061589e565b60006109668261270c8561379d565b613825565b60608301516000908161272585838661225a565b9050600581600881111561273557fe5b141561275757612750612748878761385f565b868487613897565b925061278e565b600781600881111561276557fe5b141561277f57612750612778878761385f565b838661394b565b61278b81868487612381565b92505b50509392505050565b61279f61456a565b6127a76145f5565b6127b085611151565b905060006127bc611dcc565b90506127ca86838387613266565b60006127e783604001518860a00151611bd190919063ffffffff16565b905060006127f5878361395a565b905061280588826003543a613970565b945060008460200151905061282189858388604001518a613518565b61282d818a86896139e7565b50505050509392505050565b6000806128516001548461286a90919063ffffffff16565b6000818152600960205260409020549092509050915091565b60006109668261270c85613a7e565b82516000908161288a85838661225a565b9050600581600881111561289a57fe5b14156128ad576127506127488787613b55565b60078160088111156128bb57fe5b141561277f576127506127788787613b55565b8015612a8b5760208451816128df57fe5b066004146128f6576128f6610a6c60008787613b8d565b6000612908858263ffffffff613bac16565b7fffffffff00000000000000000000000000000000000000000000000000000000811660009081526002602052604090205490915073ffffffffffffffffffffffffffffffffffffffff168061296757612967610a6c60018989613b8d565b6040516060907fa85e59e400000000000000000000000000000000000000000000000000000000906129a39089908990899089906024016156b2565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050600060608373ffffffffffffffffffffffffffffffffffffffff1683604051612a2b919061530d565b6000604051808303816000865af19150503d8060008114612a68576040519150601f19603f3d011682016040523d82523d6000602084013e612a6d565b606091505b509150915081612a8557612a85610a6c8b8b84613bf8565b50505050505b5050505050565b612a9a61456a565b612aa5848484612797565b90508281602001511461096657610966610a6c60028584602001516126de565b60606311c7b72060e01b8383604051602401612ae2929190615657565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905092915050565b60408051808201909152600481527fe69edc3e00000000000000000000000000000000000000000000000000000000602082015290565b6060631de45ad160e01b8383604051602401612ae292919061537b565b82602001514210612bd457612bd4610a6c600183613c17565b60408301513a8114612bee57612bee610a6c833a84613c34565b60065473ffffffffffffffffffffffffffffffffffffffff168015612c1a57612c1a610a6c8483613c53565b60008381526005602052604090205460ff1615612c3f57612c3f610a6c600085613c17565b606085015173ffffffffffffffffffffffffffffffffffffffff81163314801590612c725750612c70868587612711565b155b15612c8757612c87610a6c60018684896122d9565b505050505050565b73ffffffffffffffffffffffffffffffffffffffff82163314610c50576006805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff00000000000000000000000000000000000000009091161790555050565b60606320d11f6160e01b8383604051602401612ae2929190615550565b47801561084357604051339082156108fc029083906000818181858888f19350505050158015610c50573d6000803e3d6000fd5b60408051808201909152600481527f0c3b823f00000000000000000000000000000000000000000000000000000000602082015290565b606082015173ffffffffffffffffffffffffffffffffffffffff1615612dce57606082015173ffffffffffffffffffffffffffffffffffffffff163314612dce57612dce610a6c6002836020015133613c70565b6000612dd8611dcc565b90508073ffffffffffffffffffffffffffffffffffffffff16836000015173ffffffffffffffffffffffffffffffffffffffff1614612e2457612e24610a6c6000846020015184613c70565b505050565b6000818152600a60205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558281015183516101408501516101608601519351859473ffffffffffffffffffffffffffffffffffffffff9485169493909316927f02c310a9a43963ff31a754a4099cc435ed498049687539d72d7818d9b093415c92612ec692909190339061571a565b60405180910390a45050565b606063e946c1bb60e01b848484604051602401611e1d93929190615845565b60008282018381101561096657610966610a6c60008686612ed2565b606063d4092f4f60e01b82604051602401612f289190615832565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050919050565b600082612fbb575060006107f5565b82820282848281612fc857fe5b041461096657610966610a6c60018686612ed2565b600081612ff357612ff3610a6c60038585612ed2565b6000828481612ffe57fe5b04949350505050565b600081516000141561302357613023610a6c60028686866122d9565b8160018351038151811061303357fe5b016020015160f81c6008811115610b6b57fe5b6000816020018351101561306757613067610a6c6005855185602001613c8f565b50016020015190565b80516000906130a7837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff830163ffffffff613cae16565b6040516060907f1626ba7e00000000000000000000000000000000000000000000000000000000906130df9088908790602401615550565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905061316e848363ffffffff613cae16565b600060608673ffffffffffffffffffffffffffffffffffffffff1683604051613197919061530d565b600060405180830381855afa9150503d80600081146131d2576040519150601f19603f3d011682016040523d82523d6000602084013e6131d7565b606091505b50915091508180156131ea575080516020145b1561324c577fb06713810000000000000000000000000000000000000000000000000000000061322182600063ffffffff613bac16565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614945050505050610966565b61325b610a6c89898985613cb2565b505050509392505050565b60038351600681111561327557fe5b1461328f5761328f610a6c84602001518560000151613cd3565b606084015173ffffffffffffffffffffffffffffffffffffffff16156132e357606084015173ffffffffffffffffffffffffffffffffffffffff1633146132e3576132e3610a6c6002856020015133613c70565b602084015173ffffffffffffffffffffffffffffffffffffffff161561334d578173ffffffffffffffffffffffffffffffffffffffff16846020015173ffffffffffffffffffffffffffffffffffffffff161461334d5761334d610a6c6001856020015185613c70565b61335c84846020015183612879565b61337857613378610a6c600085602001518760000151856122d9565b50505050565b60a080840151908501516133979163ffffffff612fac16565b608080850151908601516133b09163ffffffff612fac16565b101561337857613378610a6c8383613cf0565b6133cb6145c1565b60a08801516000906133e3908863ffffffff611bd116565b905060006133fa8a608001518b60a0015184613d0d565b90506000613415888b60a00151611bd190919063ffffffff16565b9050600061342c8b608001518c60a0015184613d0d565b90508515613449576134428c8c85878587613d41565b945061345a565b6134578c8c85878587613e13565b94505b84515160808d015160c08e0151613472929190613d0d565b85516040015284516020015160a08d015160e08e0151613493929190613d0d565b85516060015260208501515160808c015160c08d01516134b4929190613d0d565b856020015160400181815250506134dc8560200151602001518c60a001518d60e00151613d0d565b60208601516060015260006134f7888a63ffffffff612fac16565b86516080908101829052602088015101525050505050979650505050505050565b602081015161352e90839063ffffffff612ef116565b600960008581526020019081526020016000208190555082856040015173ffffffffffffffffffffffffffffffffffffffff16866000015173ffffffffffffffffffffffffffffffffffffffff167f6869791f0a34781b29882982cc39e882768cf2c96995c2a110c577c53bc932d58861014001518961016001518a61018001518b6101a001518b338a600001518b602001518c604001518d606001518e608001516040516135e79b9a99989796959493929190615766565b60405180910390a45050505050565b835183516040808701519086015161014087015185516020015161361f918b91869088906128ce565b6136398a89610140015186868960200151602001516128ce565b6136538988610180015185848960200151604001516128ce565b61366d8a89610180015186858960000151604001516128ce565b6136838a896101400151868989604001516128ce565b61369989886101400151858989606001516128ce565b60006136b18b8b88600001516080015188888c613eac565b9050806136ce578551600060809182018190526020880151909101525b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561371e57506101a080890151908a015161371e9163ffffffff613f0816565b1561375c576137578b8a6101a0015189866137528b60200151606001518c6000015160600151612ef190919063ffffffff16565b6128ce565b613790565b6137768a896101a0015189858a60200151606001516128ce565b6137908b8a6101a0015189868a60000151606001516128ce565b5050505050505050505050565b608081810151825160208085015160408087015160609788015186519685019690962082517fec69816980a3a3ca4554410e60253953e9ff375ba4536a98adfa15cc71541508815294850195909552908301919091529481019490945273ffffffffffffffffffffffffffffffffffffffff9091169183019190915260a082015260c0902090565b6040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b6040516060907fde047db40000000000000000000000000000000000000000000000000000000090612ae29085908590602401615a8e565b805160009060158110156138b5576138b5610a6c60028787876122d9565b60006138e9847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeb840163ffffffff613f2d16565b73ffffffffffffffffffffffffffffffffffffffff80871660009081526008602090815260408083209385168352929052205490915060ff1661393357613933610a6c8683613f6d565b6139408188866015613f8a565b979650505050505050565b6000610b6b8385846001613f8a565b60008183106139695781610966565b5090919050565b61397861456a565b6020810184905260a08501516080860151613994918691613d0d565b815260a085015160c08601516139ab918691613d0d565b604082015260a085015160e08601516139c5918691613d0d565b60608201526139da828463ffffffff612fac16565b6080820152949350505050565b613a018484610160015184866000015185602001516128ce565b613a1b8484610140015185600001518585600001516128ce565b613a3584846101a0015184866040015185606001516128ce565b613a53848461018001518560000151866040015185604001516128ce565b6000613a69858360800151866000015186614161565b905080612a8b57600060808301525050505050565b6101408101516101608201516101808301516101a08401516000937ff80322eb8376aafb64eadf8f0d7623f22130fd9491a221e902b713cb984a753493909290916020871015613aca57fe5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe087018051610140890180516101608b0180516101808d0180516101a08f0180519d89528c5160209d8e012087528b519b8d019b909b2084528951998c01999099208152875197909a019690962088526101e085209390945290529190529252919091529050919050565b6040516060907f3efe50c80000000000000000000000000000000000000000000000000000000090612ae29085908590602401615a41565b606063488219a660e01b848484604051602401611e1d9392919061580a565b60008160040183511015613bcd57613bcd610a6c6003855185600401613c8f565b5001602001517fffffffff000000000000000000000000000000000000000000000000000000001690565b6060634678472b60e01b848484604051602401611e1d93929190615569565b606063f598518460e01b8383604051602401612ae29291906158fe565b606063a26dac0960e01b848484604051602401611e1d939291906155f6565b606063dec4aedf60e01b8383604051602401612ae29291906154d7565b606063e53c76c860e01b848484604051602401611e1d93929190615866565b6060632800659560e01b848484604051602401611e1d939291906158ac565b9052565b6060631b8388f760e01b858585856040516024016122fa94939291906154fb565b606063fdb6ca8d60e01b8383604051602401612ae2929190615594565b606063b6555d6f60e01b8383604051602401612ae2929190615542565b6000613d1a8484846141a6565b15613d2d57613d2d610a6c85858561420c565b610b6b8361224e868563ffffffff612fac16565b613d496145c1565b81851184841184861115613d6957613d6289868661422b565b9250613db8565b86841115613da95782518790528251602001869052608088015160a0890151613d93919089613d0d565b6020808501805192909252905101879052613db8565b613db587878787614268565b92505b8115613dde576020808401510151835151613dd89163ffffffff611bd116565b60408401525b8015613e065782516020908101519084015151613e009163ffffffff611bd116565b60608401525b50505b9695505050505050565b613e1b6145c1565b82841115613e3557613e2e87848461422b565b9050613e83565b82841015613e745780518590528051602090810185905281015184905260a08601516080870151613e67919086614293565b6020808301510152613e83565b613e8085858585614268565b90505b6020808201510151815151613e9d9163ffffffff611bd116565b60408201529695505050505050565b60045460009073ffffffffffffffffffffffffffffffffffffffff168015613efe57476000613edf8a84848b8b8a6142cb565b9050613ef189848385038b8a8a6142cb565b5060019350505050613e09565b6000915050613e09565b6000815183511480156109665750508051602091820120825192909101919091201490565b60008160140183511015613f4e57613f4e610a6c6004855185601401613c8f565b50016014015173ffffffffffffffffffffffffffffffffffffffff1690565b606063a15c0d0660e01b8383604051602401612ae292919061537b565b8151600090613fa18484830363ffffffff613cae16565b6040516060907f20c13b0b0000000000000000000000000000000000000000000000000000000090613fd990889088906024016156f5565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050614068858363ffffffff613cae16565b600060608873ffffffffffffffffffffffffffffffffffffffff1683604051614091919061530d565b600060405180830381855afa9150503d80600081146140cc576040519150601f19603f3d011682016040523d82523d6000602084013e6140d1565b606091505b50915091508180156140e4575080516020145b15614146577f20c13b0b0000000000000000000000000000000000000000000000000000000061411b82600063ffffffff613bac16565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614945050505050610b6b565b614155610a6c8a8a8a85614403565b50505050949350505050565b60045460009073ffffffffffffffffffffffffffffffffffffffff16801561419c576141918682478888886142cb565b506001915050610b6b565b6000915050610b6b565b6000826141b8576141b8610a6c614424565b8115806141c3575083155b156141d057506000610966565b600083806141da57fe5b85840990506141ef858463ffffffff612fac16565b614201826103e863ffffffff612fac16565b101595945050505050565b606063339f3de260e01b848484604051602401611e1d939291906155f6565b6142336145c1565b60208082018051859052518101839052815101839052608084015160a085015161425e919085613d0d565b8151529392505050565b6142706145c1565b805194909452835160209081019390935282840180519290925290519091015290565b60006142a084848461445b565b156142b3576142b3610a6c85858561420c565b610b6b8361224e61223282600163ffffffff611bd116565b60008385106142d75750825b6040516060907fa3b4a3270000000000000000000000000000000000000000000000000000000090614311908690869089906024016153a2565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050600060608873ffffffffffffffffffffffffffffffffffffffff16848460405161439a919061530d565b60006040518083038185875af1925050503d80600081146143d7576040519150601f19603f3d011682016040523d82523d6000602084013e6143dc565b606091505b5091509150816143f6576143f6610a6c8b898989866144bf565b5050509695505050505050565b6060635bd0428d60e01b858585856040516024016122fa94939291906153d3565b60408051808201909152600481527fa791837c00000000000000000000000000000000000000000000000000000000602082015290565b60008261446d5761446d610a6c614424565b811580614478575083155b1561448557506000610966565b6000838061448f57fe5b8584099050836144a5818363ffffffff611bd116565b816144ac57fe5b0690506141ef858463ffffffff612fac16565b60606387cb1e7560e01b86868686866040516024016144e29594939291906155b1565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905095945050505050565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6040518060800160405280606081526020016060815260200160008152602001600081525090565b60405180608001604052806145d461456a565b81526020016145e161456a565b815260200160008152602001600081525090565b6040805160608101909152806000815260006020820181905260409091015290565b604051806101c00160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001606081526020016060815260200160608152602001606081525090565b803573ffffffffffffffffffffffffffffffffffffffff811681146107f557600080fd5b600082601f830112614712578081fd5b813561472561472082615b1f565b615af8565b81815291506020808301908481018184028601820187101561474657600080fd5b60005b8481101561476d5761475b88836146de565b84529282019290820190600101614749565b505050505092915050565b600082601f830112614788578081fd5b813561479661472082615b1f565b8181529150602080830190840160005b838110156147d3576147be8760208435890101614896565b835260209283019291909101906001016147a6565b5050505092915050565b600082601f8301126147ed578081fd5b81356147fb61472082615b1f565b8181529150602080830190840160005b838110156147d357614823876020843589010161491d565b8352602092830192919091019060010161480b565b600082601f830112614848578081fd5b813561485661472082615b1f565b81815291506020808301908481018184028601820187101561487757600080fd5b60005b8481101561476d5781358452928201929082019060010161487a565b600082601f8301126148a6578081fd5b813567ffffffffffffffff8111156148bc578182fd5b6148ed60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601615af8565b915080825283602082850101111561490457600080fd5b8060208401602084013760009082016020015292915050565b60006101c0808385031215614930578182fd5b61493981615af8565b91505061494683836146de565b815261495583602084016146de565b602082015261496783604084016146de565b604082015261497983606084016146de565b60608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e08201526101008083013581830152506101208083013581830152506101408083013567ffffffffffffffff808211156149db57600080fd5b6149e786838701614896565b83850152610160925082850135915080821115614a0357600080fd5b614a0f86838701614896565b83850152610180925082850135915080821115614a2b57600080fd5b614a3786838701614896565b838501526101a0925082850135915080821115614a5357600080fd5b50614a6085828601614896565b82840152505092915050565b600060a08284031215614a7d578081fd5b614a8760a0615af8565b90508135815260208201356020820152604082013560408201526060820135614aaf81615b89565b6060820152608082013567ffffffffffffffff811115614ace57600080fd5b614ada84828501614896565b60808301525092915050565b600060208284031215614af7578081fd5b61096683836146de565b60008060408385031215614b13578081fd5b614b1d84846146de565b9150614b2c84602085016146de565b90509250929050565b60008060408385031215614b47578182fd5b614b5184846146de565b915060208301358015158114614b65578182fd5b809150509250929050565b60008060008060808587031215614b85578182fd5b843567ffffffffffffffff80821115614b9c578384fd5b614ba888838901614778565b95506020870135915080821115614bbd578384fd5b614bc988838901614702565b94506040870135915080821115614bde578384fd5b614bea88838901614702565b93506060870135915080821115614bff578283fd5b50614c0c87828801614838565b91505092959194509250565b600060208284031215614c29578081fd5b813567ffffffffffffffff811115614c3f578182fd5b610b6b848285016147dd565b60008060008060808587031215614c60578182fd5b843567ffffffffffffffff80821115614c77578384fd5b614c83888389016147dd565b95506020870135915080821115614c98578384fd5b614ca4888389016147dd565b94506040870135915080821115614cb9578384fd5b614cc588838901614778565b93506060870135915080821115614cda578283fd5b50614c0c87828801614778565b600080600060608486031215614cfb578081fd5b833567ffffffffffffffff80821115614d12578283fd5b614d1e878388016147dd565b94506020860135915080821115614d33578283fd5b614d3f87838801614838565b93506040860135915080821115614d54578283fd5b50614d6186828701614778565b9150509250925092565b600080600060608486031215614d7f578081fd5b833567ffffffffffffffff80821115614d96578283fd5b614da2878388016147dd565b9450602086013593506040860135915080821115614d54578283fd5b60008060408385031215614dd0578182fd5b823567ffffffffffffffff80821115614de7578384fd5b81850186601f820112614df8578485fd5b80359250614e0861472084615b1f565b83815260208082019190838101885b87811015614e4057614e2e8c848435890101614a6c565b85529382019390820190600101614e17565b50919750880135945050505080821115614e58578283fd5b50614e6585828601614778565b9150509250929050565b600060208284031215614e80578081fd5b5035919050565b60008060408385031215614e99578182fd5b823591506020830135614b6581615b89565b600080600060608486031215614ebf578081fd5b833592506020840135614ed181615b89565b9150604084013567ffffffffffffffff811115614eec578182fd5b614d6186828701614896565b600060208284031215614f09578081fd5b813561096681615bab565b600060208284031215614f25578081fd5b815161096681615bab565b600060a08284031215614f41578081fd5b614f4b60a0615af8565b82518152602083015160208201526040830151604082015260608301516060820152608083015160808201528091505092915050565b600060208284031215614f92578081fd5b813567ffffffffffffffff811115614fa8578182fd5b610b6b8482850161491d565b60008060408385031215614fc6578182fd5b823567ffffffffffffffff80821115614fdd578384fd5b614fe98683870161491d565b93506020850135915080821115614ffe578283fd5b50614e6585828601614896565b60008060008060808587031215615020578182fd5b843567ffffffffffffffff80821115615037578384fd5b6150438883890161491d565b95506020870135915080821115615058578384fd5b6150648883890161491d565b94506040870135915080821115615079578384fd5b61508588838901614896565b9350606087013591508082111561509a578283fd5b50614c0c87828801614896565b6000806000606084860312156150bb578081fd5b833567ffffffffffffffff808211156150d2578283fd5b6150de8783880161491d565b94506020860135935060408601359150808211156150fa578283fd5b50614d6186828701614896565b60008060408385031215615119578182fd5b823567ffffffffffffffff80821115615130578384fd5b614fe986838701614a6c565b73ffffffffffffffffffffffffffffffffffffffff169052565b6000815180845260208401935060208301825b828110156151925761517c8683516151e6565b60a0959095019460209190910190600101615169565b5093949350505050565b600081518084526151b4816020860160208601615b3f565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b80518252602081015160208301526040810151604083015260608101516060830152608081015160808301525050565b60006101c061522684845161513c565b6020830151615238602086018261513c565b50604083015161524b604086018261513c565b50606083015161525e606086018261513c565b506080830151608085015260a083015160a085015260c083015160c085015260e083015160e08501526101008084015181860152506101208084015181860152506101408084015182828701526152b78387018261519c565b915050610160915081840151858203838701526152d4828261519c565b9250505061018080840151858303828701526152f0838261519c565b9150506101a091508184015185820383870152613e09828261519c565b6000825161531f818460208701615b3f565b9190910192915050565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c810191909152603c0190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b600073ffffffffffffffffffffffffffffffffffffffff8616825260806020830152615402608083018661519c565b8281036040840152615414818661519c565b8381036060850152615426818661519c565b98975050505050505050565b6000602080830181845280855180835260408601915060408482028701019250838701855b828110156154a3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845261549185835161519c565b94509285019290850190600101615457565b5092979650505050505050565b6000602082526109666020830184615156565b901515815260200190565b90815260200190565b91825273ffffffffffffffffffffffffffffffffffffffff16602082015260400190565b600085825273ffffffffffffffffffffffffffffffffffffffff8516602083015260806040830152615530608083018561519c565b8281036060840152613940818561519c565b918252602082015260400190565b600083825260406020830152610b6b604083018461519c565b600084825260606020830152615582606083018561519c565b8281036040840152613e09818561519c565b828152604081016155a483615b7f565b8260208301529392505050565b600086825285602083015273ffffffffffffffffffffffffffffffffffffffff808616604084015280851660608401525060a0608083015261394060a083018461519c565b9283526020830191909152604082015260600190565b93845260ff9290921660208401526040830152606082015260800190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b7fffffffff0000000000000000000000000000000000000000000000000000000092909216825273ffffffffffffffffffffffffffffffffffffffff16602082015260400190565b600060208252610966602083018461519c565b6000608082526156c5608083018761519c565b73ffffffffffffffffffffffffffffffffffffffff95861660208401529390941660408201526060015292915050565b600060408252615708604083018561519c565b8281036020840152610e1a818561519c565b60006060825261572d606083018661519c565b828103602084015261573f818661519c565b91505073ffffffffffffffffffffffffffffffffffffffff83166040830152949350505050565b600061016080835261577a8184018f61519c565b838103602085015261578c818f61519c565b91505082810360408401526157a1818d61519c565b83810360608501526157b3818d61519c565b73ffffffffffffffffffffffffffffffffffffffff9b8c16608086015299909a1660a0840152505060c081019590955260e08501939093526101008401919091526101208301526101409091015295945050505050565b600061581585615b6b565b84825283602083015260606040830152610e1a606083018461519c565b6020810161583f83615b75565b91905290565b6060810161585285615b75565b938152602081019290925260409091015290565b606081016003851061587457fe5b938152602081019290925273ffffffffffffffffffffffffffffffffffffffff1660409091015290565b606081016003851061585257fe5b606081016008851061585257fe5b60006158c586615b7f565b85825284602083015273ffffffffffffffffffffffffffffffffffffffff8416604083015260806060830152613e09608083018461519c565b6040810161590b84615b6b565b9281526020015290565b60208082526014908201527f5452414e53464552535f5355434345535346554c000000000000000000000000604082015260600190565b60006020825282516080602084015261596860a0840182615156565b602085015191507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08482030160408501526159a38183615156565b604086015160608601526060860151608086015280935050505092915050565b60a081016107f582846151e6565b6000610180820190506159e58284516151e6565b60208301516159f760a08401826151e6565b5060408301516101408301526060909201516101609091015290565b81516060820190615a2381615b7f565b80835250602083015160208301526040830151604083015292915050565b600060408252615a546040830185615216565b90508260208301529392505050565b600060608252615a766060830186615216565b8460208401528281036040840152613e09818561519c565b60006040825283516040830152602084015160608301526040840151608083015273ffffffffffffffffffffffffffffffffffffffff60608501511660a0830152608084015160a060c0840152615ae860e084018261519c565b9150508260208301529392505050565b60405181810167ffffffffffffffff81118282101715615b1757600080fd5b604052919050565b600067ffffffffffffffff821115615b35578081fd5b5060209081020190565b60005b83811015615b5a578181015183820152602001615b42565b838111156133785750506000910152565b6002811061084357fe5b6004811061084357fe5b6007811061084357fe5b73ffffffffffffffffffffffffffffffffffffffff8116811461084357600080fd5b7fffffffff000000000000000000000000000000000000000000000000000000008116811461084357600080fd5b8351602094850120835193850193909320604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815295860194909452928401929092526060830152608082015260a090209056fea365627a7a723158206628f553d4c70843d623568428c39acd1576188dbf22ecde8672c8c8de9525c06c6578706572696d656e74616cf564736f6c63430005110040" + "object": "0x6080604052600436106102dc5760003560e01c80638d45cd2311610184578063beee2e14116100d6578063dd885e2d1161008a578063eea086ba11610064578063eea086ba14610735578063f2fde38b1461074a578063fc74896d1461076a576102dc565b8063dd885e2d146106ed578063dedfc1f11461070f578063e14b58c414610722576102dc565b8063c26cfecd116100bb578063c26cfecd14610698578063c585bb93146106ad578063d9bfa73e146106cd576102dc565b8063beee2e1414610665578063c0fa16cc14610678576102dc565b80639b44d55611610138578063a6c3bf3311610112578063a6c3bf331461061f578063b04fbddd14610632578063b718e29214610652576102dc565b80639b44d556146105bf5780639d3fa4b9146105d2578063a12dcc6f146105ff576102dc565b80638ea8dfe4116101695780638ea8dfe41461056c5780639331c7421461058c5780639694a402146105ac576102dc565b80638d45cd23146105375780638da5cb5b14610557576102dc565b8063607041081161023d5780637b8e3514116101f1578063850a1501116101cb578063850a1501146104ef57806388ec79fb146105045780638bc8efb314610524576102dc565b80637b8e35141461048f5780638171c407146104af57806382c174d0146104cf576102dc565b80636fcf3e9e116102225780636fcf3e9e1461045657806377fcce681461046957806378d29ac11461047c576102dc565b806360704108146104095780636a1a80fd14610436576102dc565b80632ac1262211610294578063369da09911610279578063369da099146103c357806346c02d7a146103e35780634f9559b1146103f6576102dc565b80632ac12622146103905780632da62987146103b0576102dc565b80631ce4c78b116102c55780631ce4c78b1461032e5780632280c91014610350578063288cdc9114610370576102dc565b80630228e168146102e15780630efca18514610317575b600080fd5b3480156102ed57600080fd5b506103016102fc366004614e6f565b61078a565b60405161030e91906154c3565b60405180910390f35b34801561032357600080fd5b5061032c61079f565b005b34801561033a57600080fd5b506103436107b3565b60405161030e91906154ce565b61036361035e366004615107565b6107b9565b60405161030e919061569f565b34801561037c57600080fd5b5061034361038b366004614e6f565b6107fb565b34801561039c57600080fd5b506103016103ab366004614e6f565b61080d565b61032c6103be366004614f81565b610822565b6103d66103d1366004614d6b565b610846565b60405161030e91906159c3565b61032c6103f1366004614e6f565b61096d565b61032c610404366004614e6f565b6109e0565b34801561041557600080fd5b50610429610424366004614ef8565b610aed565b60405161030e919061535a565b610449610444366004614c4b565b610b3b565b60405161030e919061594c565b610449610464366004614c4b565b610b73565b61032c610477366004614b35565b610b91565b6103d661048a366004614d6b565b610c54565b34801561049b57600080fd5b506103016104aa366004614b01565b610da4565b3480156104bb57600080fd5b506103016104ca366004614eab565b610dc4565b3480156104db57600080fd5b506103016104ea366004614e87565b610e23565b3480156104fb57600080fd5b50610429610e43565b61051761051236600461500b565b610e5f565b60405161030e91906159d1565b6103d6610532366004614d6b565b610e7d565b34801561054357600080fd5b50610301610552366004615107565b610eb1565b34801561056357600080fd5b50610429610ed6565b61057f61057a366004614ce7565b610ef2565b60405161030e91906154b0565b34801561059857600080fd5b5061032c6105a7366004614e6f565b61101d565b61057f6105ba366004614ce7565b611065565b6103d66105cd3660046150a7565b61112c565b3480156105de57600080fd5b506105f26105ed366004614f81565b611151565b60405161030e9190615a13565b34801561060b57600080fd5b5061030161061a366004614fb4565b611246565b6103d661062d366004614d6b565b61126b565b34801561063e57600080fd5b5061032c61064d366004614b70565b61129f565b61051761066036600461500b565b61134b565b61057f610673366004614ce7565b611369565b34801561068457600080fd5b5061032c610693366004614ae6565b61141e565b3480156106a457600080fd5b5061034361142f565b3480156106b957600080fd5b5061032c6106c8366004614ae6565b611435565b3480156106d957600080fd5b506103436106e8366004614b01565b6115c9565b3480156106f957600080fd5b506107026115e6565b60405161030e919061562a565b61032c61071d366004614c18565b61160a565b6103d66107303660046150a7565b61164c565b34801561074157600080fd5b50610429611667565b34801561075657600080fd5b5061032c610765366004614ae6565b611683565b61077d610778366004614dbe565b611726565b60405161030e9190615432565b60056020526000908152604090205460ff1681565b6107a761184f565b6107b16000611896565b565b60035481565b60606107c3611931565b156107d9576107d28383611953565b90506107f5565b6107e1611a6d565b6107eb8383611953565b90506107f5611aaf565b92915050565b60096020526000908152604090205481565b600a6020526000908152604090205460ff1681565b61082a611adf565b61083381611b4e565b61083b611b93565b610843611ba7565b50565b61084e61456a565b610856611931565b156108ec57835160005b8181146108e5576000610880846020015187611bd190919063ffffffff16565b905061088a61456a565b6108bb88848151811061089957fe5b6020026020010151838886815181106108ae57fe5b6020026020010151611bf0565b90506108c78582611d31565b9450868560200151106108db5750506108e5565b5050600101610860565b5050610966565b6108f4611a6d565b835160005b81811461095c576000610919846020015187611bd190919063ffffffff16565b905061092361456a565b61093288848151811061089957fe5b905061093e8582611d31565b94508685602001511061095257505061095c565b50506001016108f9565b5050610966611aaf565b9392505050565b610975611adf565b600061097f611dcc565b600083815260076020908152604080832073ffffffffffffffffffffffffffffffffffffffff90941683529290522080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555061083b611b93565b6109e8611adf565b60006109f2611dcc565b9050600073ffffffffffffffffffffffffffffffffffffffff82163314610a195733610a1c565b60005b73ffffffffffffffffffffffffffffffffffffffff8084166000908152600b60209081526040808320938516835292905220549091506001840190808211610a7157610a71610a6c858584611dfe565b611ea3565b73ffffffffffffffffffffffffffffffffffffffff8085166000818152600b602090815260408083209488168084529490915290819020859055517f82af639571738f4ebd4268fb0363d8957ebe1bbb9e78dba5ebd69eed39b154f090610ad99086906154ce565b60405180910390a35050505061083b611b93565b7fffffffff00000000000000000000000000000000000000000000000000000000811660009081526002602052604090205473ffffffffffffffffffffffffffffffffffffffff165b919050565b610b43614599565b610b4b611adf565b610b59858585856001611eab565b9050610b63611b93565b610b6b611ba7565b949350505050565b610b7b614599565b610b83611adf565b610b59858585856000611eab565b610b99611adf565b6000610ba3611dcc565b73ffffffffffffffffffffffffffffffffffffffff8181166000818152600860209081526040808320948916808452949091529081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168715151790555192935090917fa8656e308026eeabce8f0bc18048433252318ab80ac79da0b3d3d8697dfba89190610c379086906154c3565b60405180910390a350610c48611b93565b610c50611ba7565b5050565b610c5c61456a565b610c64611931565b15610d2257835160005b8181146108e5578251600090610c8b90879063ffffffff611bd116565b90506000610cc8888481518110610c9e57fe5b602002602001015160a00151898581518110610cb657fe5b60200260200101516080015184612218565b9050610cd261456a565b610cf6898581518110610ce157fe5b6020026020010151838987815181106108ae57fe5b9050610d028682611d31565b955087866000015110610d17575050506108e5565b505050600101610c6e565b610d2a611a6d565b835160005b81811461095c578251600090610d4c90879063ffffffff611bd116565b90506000610d5f888481518110610c9e57fe5b9050610d6961456a565b610d78898581518110610ce157fe5b9050610d848682611d31565b955087866000015110610d995750505061095c565b505050600101610d2f565b600860209081526000928352604080842090915290825290205460ff1681565b600080610dd285858561225a565b90506005816008811115610de257fe5b1480610df957506007816008811115610df757fe5b145b15610e0e57610e0e610a6c60058787876122d9565b610e1a81868686612381565b95945050505050565b600760209081526000928352604080842090915290825290205460ff1681565b60045473ffffffffffffffffffffffffffffffffffffffff1681565b610e676145c1565b610e6f611adf565b610b598585858560006125f1565b610e8561456a565b610e90848484610c54565b9050828160000151101561096657610966610a6c60008584600001516126de565b600080610ec9600154856126fd90919063ffffffff16565b9050610b6b848285612711565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b6060610efc611931565b15610f9f578351604080518281526020808402820101909152818015610f3c57816020015b610f2961456a565b815260200190600190039081610f215790505b50915060005b8181146108e557610f80868281518110610f5857fe5b6020026020010151868381518110610f6c57fe5b60200260200101518684815181106108ae57fe5b838281518110610f8c57fe5b6020908102919091010152600101610f42565b610fa7611a6d565b8351604080518281526020808402820101909152818015610fe257816020015b610fcf61456a565b815260200190600190039081610fc75790505b50915060005b81811461095c57610ffe868281518110610f5857fe5b83828151811061100a57fe5b6020908102919091010152600101610fe8565b61102561184f565b7f3a3e76d7a75e198aef1f53137e4f2a8a2ec74e2e9526db8404d08ccc9f1e621d60035482604051611058929190615542565b60405180910390a1600355565b606061106f611adf565b83516040805182815260208084028201019091528180156110aa57816020015b61109761456a565b81526020019060019003908161108f5790505b50915060005b81811461111a576110fb8682815181106110c657fe5b60200260200101518683815181106110da57fe5b60200260200101518684815181106110ee57fe5b6020026020010151612797565b83828151811061110757fe5b60209081029190910101526001016110b0565b5050611124611b93565b610966611ba7565b61113461456a565b61113c611adf565b611147848484612797565b9050611124611b93565b6111596145f5565b61116282612839565b60408301526020820152608082015161118e578060015b9081600681111561118657fe5b905250610b36565b60a082015161119f57806002611179565b8160a001518160400151106111b657806005611179565b81610100015142106111ca57806004611179565b6020808201516000908152600a909152604090205460ff16156111ef57806006611179565b610120820151825173ffffffffffffffffffffffffffffffffffffffff9081166000908152600b60209081526040808320606088015190941683529290522054111561123d57806006611179565b60038152919050565b60008061125e6001548561286a90919063ffffffff16565b9050610b6b848285612879565b61127361456a565b61127e848484610846565b9050828160200151101561096657610966610a6c60018584602001516126de565b835160005b81811461130f576113078160001b8783815181106112be57fe5b60200260200101518784815181106112d257fe5b60200260200101518785815181106112e657fe5b60200260200101518786815181106112fa57fe5b60200260200101516128ce565b6001016112a4565b506040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134290615915565b60405180910390fd5b6113536145c1565b61135b611adf565b610b598585858560016125f1565b6060611373611adf565b83516040805182815260208084028201019091528180156113ae57816020015b61139b61456a565b8152602001906001900390816113935790505b50915060005b81811461111a576113ff8682815181106113ca57fe5b60200260200101518683815181106113de57fe5b60200260200101518684815181106113f257fe5b6020026020010151612a92565b83828151811061140b57fe5b60209081029190910101526001016113b4565b61142661184f565b61084381611896565b60015481565b61143d61184f565b60008173ffffffffffffffffffffffffffffffffffffffff1663ae25532e6040518163ffffffff1660e01b815260040160206040518083038186803b15801561148557600080fd5b505afa158015611499573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114bd9190810190614f14565b7fffffffff00000000000000000000000000000000000000000000000000000000811660009081526002602052604090205490915073ffffffffffffffffffffffffffffffffffffffff16801561151b5761151b610a6c8383612ac5565b7fffffffff0000000000000000000000000000000000000000000000000000000082166000908152600260205260409081902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8616179055517fd2c6b762299c609bdb96520b58a49bfb80186934d4f71a86a367571a15c03194906115bc9084908690615657565b60405180910390a1505050565b600b60209081526000928352604080842090915290825290205481565b7f20c13b0b0000000000000000000000000000000000000000000000000000000081565b611612611adf565b805160005b8181146116425761163a83828151811061162d57fe5b6020026020010151611b4e565b600101611617565b505061083b611b93565b61165461456a565b61165c611adf565b611147848484612a92565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b61168b61184f565b73ffffffffffffffffffffffffffffffffffffffff81166116b6576116b1610a6c612b67565b610843565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6060611730611931565b156117cd57825160408051828152602080840282010190915281801561176a57816020015b60608152602001906001900390816117555790505b50915060005b8181146117c6576117a785828151811061178657fe5b602002602001015185838151811061179a57fe5b6020026020010151611953565b8382815181106117b357fe5b6020908102919091010152600101611770565b50506107f5565b6117d5611a6d565b825160408051828152602080840282010190915281801561180a57816020015b60608152602001906001900390816117f55790505b50915060005b8181146118455761182685828151811061178657fe5b83828151811061183257fe5b6020908102919091010152600101611810565b50506107f5611aaf565b60005473ffffffffffffffffffffffffffffffffffffffff1633146107b1576000546107b190610a6c90339073ffffffffffffffffffffffffffffffffffffffff16612b9e565b6004546040517fe1a5430ebec577336427f40f15822f1f36c5e3509ff209d6db9e6c9e6941cb0b916118e29173ffffffffffffffffffffffffffffffffffffffff90911690849061537b565b60405180910390a1600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000547501000000000000000000000000000000000000000000900460ff1690565b6060600061196c600154856126fd90919063ffffffff16565b9050611979848483612bbb565b60608401516119888180612c8f565b60008281526005602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556080870151905160609130916119d6919061530d565b600060405180830381855af49150503d8060008114611a11576040519150601f19603f3d011682016040523d82523d6000602084013e611a16565b606091505b509150915081611a2d57611a2d610a6c8583612cf2565b611a38836000612c8f565b60405184907fa4a7329f1dd821363067e07d359e347b4af9b1efe4b6cccf13240228af3c800d90600090a29695505050505050565b600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff167501000000000000000000000000000000000000000000179055565b600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690556107b1612d0f565b60005474010000000000000000000000000000000000000000900460ff1615611b0d57611b0d610a6c612d43565b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b611b566145f5565b611b5f82611151565b9050611b6b8282612d7a565b600381516006811115611b7a57fe5b14611b855750610843565b610c50828260200151612e29565b611b9b611931565b6107b1576107b1612d0f565b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b600082821115611bea57611bea610a6c60028585612ed2565b50900390565b611bf861456a565b6040516060907f9b44d5560000000000000000000000000000000000000000000000000000000090611c3290879087908790602401615a63565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050600060603073ffffffffffffffffffffffffffffffffffffffff1683604051611cba919061530d565b600060405180830381855af49150503d8060008114611cf5576040519150601f19603f3d011682016040523d82523d6000602084013e611cfa565b606091505b50915091508115611d2757805160a014611d1057fe5b80806020019051611d249190810190614f30565b93505b5050509392505050565b611d3961456a565b81518351611d4c9163ffffffff612ef116565b815260208083015190840151611d679163ffffffff612ef116565b602082015260408083015190840151611d859163ffffffff612ef116565b604082015260608083015190840151611da39163ffffffff612ef116565b606082015260808083015190840151611dc19163ffffffff612ef116565b608082015292915050565b60065460009073ffffffffffffffffffffffffffffffffffffffff16818115611df55781611df7565b335b9250505090565b6060634ad3127560e01b848484604051602401611e1d939291906153a2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290509392505050565b805160208201fd5b611eb3614599565b8551611ec657611ec6610a6c6000612f0d565b8451611ed957611ed9610a6c6001612f0d565b8351865114611eef57611eef610a6c6002612f0d565b8251855114611f0557611f05610a6c6003612f0d565b8551604051908082528060200260200182016040528015611f4057816020015b611f2d61456a565b815260200190600190039081611f255790505b5081528451604080518281526020808402820101909152908015611f7e57816020015b611f6b61456a565b815260200190600190039081611f635790505b506020820152600080611f8f614617565b88600081518110611f9c57fe5b60200260200101519050611fae614617565b88600081518110611fbb57fe5b602002602001015190506000611fd083612839565b9150506000611fde83612839565b915050611fe961456a565b611ff161456a565b611ff96145c1565b61202c87878f8c8151811061200a57fe5b60200260200101518f8c8151811061201e57fe5b60200260200101518f6125f1565b80516020015190915061204690869063ffffffff612ef116565b945061206381602001516020015185612ef190919063ffffffff16565b9350612073838260000151611d31565b9250612083828260200151611d31565b91506120a081604001518b60400151612ef190919063ffffffff16565b60408b0152606080820151908b01516120be9163ffffffff612ef116565b60608b015260a08701518510612169578951805160018b019a85929181106120e257fe5b60200260200101819052506040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525092508e5189141561214657818a60200151898151811061213557fe5b602002602001018190525050612207565b8e898151811061215257fe5b6020026020010151965061216587612839565b9550505b8560a00151841061220157818a6020015189806001019a508151811061218b57fe5b60200260200101819052506040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525091508d518814156121de57828a600001518a8151811061213557fe5b8d88815181106121ea57fe5b602002602001015195506121fd86612839565b9450505b50611ff1565b505050505050505095945050505050565b6000610b6b8361224e61223282600163ffffffff611bd116565b612242888763ffffffff612fac16565b9063ffffffff612ef116565b9063ffffffff612fdd16565b6000612267848484613007565b905073ffffffffffffffffffffffffffffffffffffffff831661229457612294610a6c60068686866122d9565b600881818111156122a157fe5b60ff16106122b9576122b9610a6c60038686866122d9565b60008160088111156122c757fe5b141561096657610966610a6c60048686865b6060637e5a231860e01b858585856040516024016122fa94939291906158ba565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050949350505050565b6000600185600881111561239157fe5b14156123b85781516001146123b0576123b0610a6c60028686866122d9565b506000610b6b565b60028560088111156123c657fe5b14156124bf5781516042146123e5576123e5610a6c60028686866122d9565b6000826000815181106123f457fe5b016020015160f81c9050600061241184600163ffffffff61304616565b9050600061242685602163ffffffff61304616565b905060006001888585856040516000815260200160405260405161244d949392919061560c565b6020604051602081039080840390855afa15801561246f573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015173ffffffffffffffffffffffffffffffffffffffff8981169116149550610b6b945050505050565b60038560088111156124cd57fe5b141561257a5781516042146124ec576124ec610a6c60028686866122d9565b6000826000815181106124fb57fe5b016020015160f81c9050600061251884600163ffffffff61304616565b9050600061252d85602163ffffffff61304616565b905060006001886040516020016125449190615329565b604051602081830303815290604052805190602001208585856040516000815260200160405260405161244d949392919061560c565b600485600881111561258857fe5b14156125a057612599848484613070565b9050610b6b565b60068560088111156125ae57fe5b146125b557fe5b50600083815260076020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616845290915290205460ff16949350505050565b6125f96145c1565b6101608087015161014080880191909152870151908601526126196145f5565b61262287611151565b905061262c6145f5565b61263587611151565b90506000612641611dcc565b905061264f8984838a613266565b61265b88838389613266565b61266f89898560200151856020015161337e565b6126888989856040015185604001516003543a8b6133c3565b93506126a38982856020015186604001518860000151613518565b6126bc8882846020015185604001518860200151613518565b6126d2836020015183602001518b8b85896135f6565b50505095945050505050565b60606318e4b14160e01b848484604051602401611e1d9392919061589e565b60006109668261270c8561379d565b613825565b60608301516000908161272585838661225a565b9050600581600881111561273557fe5b141561275757612750612748878761385f565b868487613897565b925061278e565b600781600881111561276557fe5b141561277f57612750612778878761385f565b838661394b565b61278b81868487612381565b92505b50509392505050565b61279f61456a565b6127a76145f5565b6127b085611151565b905060006127bc611dcc565b90506127ca86838387613266565b60006127e783604001518860a00151611bd190919063ffffffff16565b905060006127f5878361395a565b905061280588826003543a613970565b945060008460200151905061282189858388604001518a613518565b61282d818a86896139e7565b50505050509392505050565b6000806128516001548461286a90919063ffffffff16565b6000818152600960205260409020549092509050915091565b60006109668261270c85613a7e565b82516000908161288a85838661225a565b9050600581600881111561289a57fe5b14156128ad576127506127488787613b55565b60078160088111156128bb57fe5b141561277f576127506127788787613b55565b8015612a8b5760208451816128df57fe5b066004146128f6576128f6610a6c60008787613b8d565b6000612908858263ffffffff613bac16565b7fffffffff00000000000000000000000000000000000000000000000000000000811660009081526002602052604090205490915073ffffffffffffffffffffffffffffffffffffffff168061296757612967610a6c60018989613b8d565b6040516060907fa85e59e400000000000000000000000000000000000000000000000000000000906129a39089908990899089906024016156b2565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050600060608373ffffffffffffffffffffffffffffffffffffffff1683604051612a2b919061530d565b6000604051808303816000865af19150503d8060008114612a68576040519150601f19603f3d011682016040523d82523d6000602084013e612a6d565b606091505b509150915081612a8557612a85610a6c8b8b84613bf8565b50505050505b5050505050565b612a9a61456a565b612aa5848484612797565b90508281602001511461096657610966610a6c60028584602001516126de565b60606311c7b72060e01b8383604051602401612ae2929190615657565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905092915050565b60408051808201909152600481527fe69edc3e00000000000000000000000000000000000000000000000000000000602082015290565b6060631de45ad160e01b8383604051602401612ae292919061537b565b82602001514210612bd457612bd4610a6c600183613c17565b60408301513a8114612bee57612bee610a6c833a84613c34565b60065473ffffffffffffffffffffffffffffffffffffffff168015612c1a57612c1a610a6c8483613c53565b60008381526005602052604090205460ff1615612c3f57612c3f610a6c600085613c17565b606085015173ffffffffffffffffffffffffffffffffffffffff81163314801590612c725750612c70868587612711565b155b15612c8757612c87610a6c60018684896122d9565b505050505050565b73ffffffffffffffffffffffffffffffffffffffff82163314610c50576006805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff00000000000000000000000000000000000000009091161790555050565b60606320d11f6160e01b8383604051602401612ae2929190615550565b47801561084357604051339082156108fc029083906000818181858888f19350505050158015610c50573d6000803e3d6000fd5b60408051808201909152600481527f0c3b823f00000000000000000000000000000000000000000000000000000000602082015290565b606082015173ffffffffffffffffffffffffffffffffffffffff1615612dce57606082015173ffffffffffffffffffffffffffffffffffffffff163314612dce57612dce610a6c6002836020015133613c70565b6000612dd8611dcc565b90508073ffffffffffffffffffffffffffffffffffffffff16836000015173ffffffffffffffffffffffffffffffffffffffff1614612e2457612e24610a6c6000846020015184613c70565b505050565b6000818152600a60205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558281015183516101408501516101608601519351859473ffffffffffffffffffffffffffffffffffffffff9485169493909316927f02c310a9a43963ff31a754a4099cc435ed498049687539d72d7818d9b093415c92612ec692909190339061571a565b60405180910390a45050565b606063e946c1bb60e01b848484604051602401611e1d93929190615845565b60008282018381101561096657610966610a6c60008686612ed2565b606063d4092f4f60e01b82604051602401612f289190615832565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050919050565b600082612fbb575060006107f5565b82820282848281612fc857fe5b041461096657610966610a6c60018686612ed2565b600081612ff357612ff3610a6c60038585612ed2565b6000828481612ffe57fe5b04949350505050565b600081516000141561302357613023610a6c60028686866122d9565b8160018351038151811061303357fe5b016020015160f81c6008811115610b6b57fe5b6000816020018351101561306757613067610a6c6005855185602001613c8f565b50016020015190565b80516000906130a7837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff830163ffffffff613cae16565b6040516060907f1626ba7e00000000000000000000000000000000000000000000000000000000906130df9088908790602401615550565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905061316e848363ffffffff613cae16565b600060608673ffffffffffffffffffffffffffffffffffffffff1683604051613197919061530d565b600060405180830381855afa9150503d80600081146131d2576040519150601f19603f3d011682016040523d82523d6000602084013e6131d7565b606091505b50915091508180156131ea575080516020145b1561324c577fb06713810000000000000000000000000000000000000000000000000000000061322182600063ffffffff613bac16565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614945050505050610966565b61325b610a6c89898985613cb2565b505050509392505050565b60038351600681111561327557fe5b1461328f5761328f610a6c84602001518560000151613cd3565b606084015173ffffffffffffffffffffffffffffffffffffffff16156132e357606084015173ffffffffffffffffffffffffffffffffffffffff1633146132e3576132e3610a6c6002856020015133613c70565b602084015173ffffffffffffffffffffffffffffffffffffffff161561334d578173ffffffffffffffffffffffffffffffffffffffff16846020015173ffffffffffffffffffffffffffffffffffffffff161461334d5761334d610a6c6001856020015185613c70565b61335c84846020015183612879565b61337857613378610a6c600085602001518760000151856122d9565b50505050565b60a080840151908501516133979163ffffffff612fac16565b608080850151908601516133b09163ffffffff612fac16565b101561337857613378610a6c8383613cf0565b6133cb6145c1565b60a08801516000906133e3908863ffffffff611bd116565b905060006133fa8a608001518b60a0015184613d0d565b90506000613415888b60a00151611bd190919063ffffffff16565b9050600061342c8b608001518c60a0015184613d0d565b90508515613449576134428c8c85878587613d41565b945061345a565b6134578c8c85878587613e13565b94505b84515160808d015160c08e0151613472929190613d0d565b85516040015284516020015160a08d015160e08e0151613493929190613d0d565b85516060015260208501515160808c015160c08d01516134b4929190613d0d565b856020015160400181815250506134dc8560200151602001518c60a001518d60e00151613d0d565b60208601516060015260006134f7888a63ffffffff612fac16565b86516080908101829052602088015101525050505050979650505050505050565b602081015161352e90839063ffffffff612ef116565b600960008581526020019081526020016000208190555082856040015173ffffffffffffffffffffffffffffffffffffffff16866000015173ffffffffffffffffffffffffffffffffffffffff167f6869791f0a34781b29882982cc39e882768cf2c96995c2a110c577c53bc932d58861014001518961016001518a61018001518b6101a001518b338a600001518b602001518c604001518d606001518e608001516040516135e79b9a99989796959493929190615766565b60405180910390a45050505050565b835183516040808701519086015161014087015185516020015161361f918b91869088906128ce565b6136398a89610140015186868960200151602001516128ce565b6136538988610180015185848960200151604001516128ce565b61366d8a89610180015186858960000151604001516128ce565b6136838a896101400151868989604001516128ce565b61369989886101400151858989606001516128ce565b60006136b18b8b88600001516080015188888c613eac565b9050806136ce578551600060809182018190526020880151909101525b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561371e57506101a080890151908a015161371e9163ffffffff613f0816565b1561375c576137578b8a6101a0015189866137528b60200151606001518c6000015160600151612ef190919063ffffffff16565b6128ce565b613790565b6137768a896101a0015189858a60200151606001516128ce565b6137908b8a6101a0015189868a60000151606001516128ce565b5050505050505050505050565b608081810151825160208085015160408087015160609788015186519685019690962082517fec69816980a3a3ca4554410e60253953e9ff375ba4536a98adfa15cc71541508815294850195909552908301919091529481019490945273ffffffffffffffffffffffffffffffffffffffff9091169183019190915260a082015260c0902090565b6040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b6040516060907fde047db40000000000000000000000000000000000000000000000000000000090612ae29085908590602401615a8e565b805160009060158110156138b5576138b5610a6c60028787876122d9565b60006138e9847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeb840163ffffffff613f2d16565b73ffffffffffffffffffffffffffffffffffffffff80871660009081526008602090815260408083209385168352929052205490915060ff1661393357613933610a6c8683613f6d565b6139408188866015613f8a565b979650505050505050565b6000610b6b8385846001613f8a565b60008183106139695781610966565b5090919050565b61397861456a565b6020810184905260a08501516080860151613994918691613d0d565b815260a085015160c08601516139ab918691613d0d565b604082015260a085015160e08601516139c5918691613d0d565b60608201526139da828463ffffffff612fac16565b6080820152949350505050565b613a018484610160015184866000015185602001516128ce565b613a1b8484610140015185600001518585600001516128ce565b613a3584846101a0015184866040015185606001516128ce565b613a53848461018001518560000151866040015185604001516128ce565b6000613a69858360800151866000015186614161565b905080612a8b57600060808301525050505050565b6101408101516101608201516101808301516101a08401516000937ff80322eb8376aafb64eadf8f0d7623f22130fd9491a221e902b713cb984a753493909290916020871015613aca57fe5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe087018051610140890180516101608b0180516101808d0180516101a08f0180519d89528c5160209d8e012087528b519b8d019b909b2084528951998c01999099208152875197909a019690962088526101e085209390945290529190529252919091529050919050565b6040516060907f3efe50c80000000000000000000000000000000000000000000000000000000090612ae29085908590602401615a41565b606063488219a660e01b848484604051602401611e1d9392919061580a565b60008160040183511015613bcd57613bcd610a6c6003855185600401613c8f565b5001602001517fffffffff000000000000000000000000000000000000000000000000000000001690565b6060634678472b60e01b848484604051602401611e1d93929190615569565b606063f598518460e01b8383604051602401612ae29291906158fe565b606063a26dac0960e01b848484604051602401611e1d939291906155f6565b606063dec4aedf60e01b8383604051602401612ae29291906154d7565b606063e53c76c860e01b848484604051602401611e1d93929190615866565b6060632800659560e01b848484604051602401611e1d939291906158ac565b9052565b6060631b8388f760e01b858585856040516024016122fa94939291906154fb565b606063fdb6ca8d60e01b8383604051602401612ae2929190615594565b606063b6555d6f60e01b8383604051602401612ae2929190615542565b6000613d1a8484846141a6565b15613d2d57613d2d610a6c85858561420c565b610b6b8361224e868563ffffffff612fac16565b613d496145c1565b81851184841184861115613d6957613d6289868661422b565b9250613db8565b86841115613da95782518790528251602001869052608088015160a0890151613d93919089613d0d565b6020808501805192909252905101879052613db8565b613db587878787614268565b92505b8115613dde576020808401510151835151613dd89163ffffffff611bd116565b60408401525b8015613e065782516020908101519084015151613e009163ffffffff611bd116565b60608401525b50505b9695505050505050565b613e1b6145c1565b82841115613e3557613e2e87848461422b565b9050613e83565b82841015613e745780518590528051602090810185905281015184905260a08601516080870151613e67919086614293565b6020808301510152613e83565b613e8085858585614268565b90505b6020808201510151815151613e9d9163ffffffff611bd116565b60408201529695505050505050565b60045460009073ffffffffffffffffffffffffffffffffffffffff168015613efe57476000613edf8a84848b8b8a6142cb565b9050613ef189848385038b8a8a6142cb565b5060019350505050613e09565b6000915050613e09565b6000815183511480156109665750508051602091820120825192909101919091201490565b60008160140183511015613f4e57613f4e610a6c6004855185601401613c8f565b50016014015173ffffffffffffffffffffffffffffffffffffffff1690565b606063a15c0d0660e01b8383604051602401612ae292919061537b565b8151600090613fa18484830363ffffffff613cae16565b6040516060907f20c13b0b0000000000000000000000000000000000000000000000000000000090613fd990889088906024016156f5565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050614068858363ffffffff613cae16565b600060608873ffffffffffffffffffffffffffffffffffffffff1683604051614091919061530d565b600060405180830381855afa9150503d80600081146140cc576040519150601f19603f3d011682016040523d82523d6000602084013e6140d1565b606091505b50915091508180156140e4575080516020145b15614146577f20c13b0b0000000000000000000000000000000000000000000000000000000061411b82600063ffffffff613bac16565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614945050505050610b6b565b614155610a6c8a8a8a85614403565b50505050949350505050565b60045460009073ffffffffffffffffffffffffffffffffffffffff16801561419c576141918682478888886142cb565b506001915050610b6b565b6000915050610b6b565b6000826141b8576141b8610a6c614424565b8115806141c3575083155b156141d057506000610966565b600083806141da57fe5b85840990506141ef858463ffffffff612fac16565b614201826103e863ffffffff612fac16565b101595945050505050565b606063339f3de260e01b848484604051602401611e1d939291906155f6565b6142336145c1565b60208082018051859052518101839052815101839052608084015160a085015161425e919085613d0d565b8151529392505050565b6142706145c1565b805194909452835160209081019390935282840180519290925290519091015290565b60006142a084848461445b565b156142b3576142b3610a6c85858561420c565b610b6b8361224e61223282600163ffffffff611bd116565b60008385106142d75750825b6040516060907fa3b4a3270000000000000000000000000000000000000000000000000000000090614311908690869089906024016153a2565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050600060608873ffffffffffffffffffffffffffffffffffffffff16848460405161439a919061530d565b60006040518083038185875af1925050503d80600081146143d7576040519150601f19603f3d011682016040523d82523d6000602084013e6143dc565b606091505b5091509150816143f6576143f6610a6c8b898989866144bf565b5050509695505050505050565b6060635bd0428d60e01b858585856040516024016122fa94939291906153d3565b60408051808201909152600481527fa791837c00000000000000000000000000000000000000000000000000000000602082015290565b60008261446d5761446d610a6c614424565b811580614478575083155b1561448557506000610966565b6000838061448f57fe5b8584099050836144a5818363ffffffff611bd116565b816144ac57fe5b0690506141ef858463ffffffff612fac16565b60606387cb1e7560e01b86868686866040516024016144e29594939291906155b1565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905095945050505050565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6040518060800160405280606081526020016060815260200160008152602001600081525090565b60405180608001604052806145d461456a565b81526020016145e161456a565b815260200160008152602001600081525090565b6040805160608101909152806000815260006020820181905260409091015290565b604051806101c00160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001606081526020016060815260200160608152602001606081525090565b803573ffffffffffffffffffffffffffffffffffffffff811681146107f557600080fd5b600082601f830112614712578081fd5b813561472561472082615b1f565b615af8565b81815291506020808301908481018184028601820187101561474657600080fd5b60005b8481101561476d5761475b88836146de565b84529282019290820190600101614749565b505050505092915050565b600082601f830112614788578081fd5b813561479661472082615b1f565b8181529150602080830190840160005b838110156147d3576147be8760208435890101614896565b835260209283019291909101906001016147a6565b5050505092915050565b600082601f8301126147ed578081fd5b81356147fb61472082615b1f565b8181529150602080830190840160005b838110156147d357614823876020843589010161491d565b8352602092830192919091019060010161480b565b600082601f830112614848578081fd5b813561485661472082615b1f565b81815291506020808301908481018184028601820187101561487757600080fd5b60005b8481101561476d5781358452928201929082019060010161487a565b600082601f8301126148a6578081fd5b813567ffffffffffffffff8111156148bc578182fd5b6148ed60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601615af8565b915080825283602082850101111561490457600080fd5b8060208401602084013760009082016020015292915050565b60006101c0808385031215614930578182fd5b61493981615af8565b91505061494683836146de565b815261495583602084016146de565b602082015261496783604084016146de565b604082015261497983606084016146de565b60608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e08201526101008083013581830152506101208083013581830152506101408083013567ffffffffffffffff808211156149db57600080fd5b6149e786838701614896565b83850152610160925082850135915080821115614a0357600080fd5b614a0f86838701614896565b83850152610180925082850135915080821115614a2b57600080fd5b614a3786838701614896565b838501526101a0925082850135915080821115614a5357600080fd5b50614a6085828601614896565b82840152505092915050565b600060a08284031215614a7d578081fd5b614a8760a0615af8565b90508135815260208201356020820152604082013560408201526060820135614aaf81615b89565b6060820152608082013567ffffffffffffffff811115614ace57600080fd5b614ada84828501614896565b60808301525092915050565b600060208284031215614af7578081fd5b61096683836146de565b60008060408385031215614b13578081fd5b614b1d84846146de565b9150614b2c84602085016146de565b90509250929050565b60008060408385031215614b47578182fd5b614b5184846146de565b915060208301358015158114614b65578182fd5b809150509250929050565b60008060008060808587031215614b85578182fd5b843567ffffffffffffffff80821115614b9c578384fd5b614ba888838901614778565b95506020870135915080821115614bbd578384fd5b614bc988838901614702565b94506040870135915080821115614bde578384fd5b614bea88838901614702565b93506060870135915080821115614bff578283fd5b50614c0c87828801614838565b91505092959194509250565b600060208284031215614c29578081fd5b813567ffffffffffffffff811115614c3f578182fd5b610b6b848285016147dd565b60008060008060808587031215614c60578182fd5b843567ffffffffffffffff80821115614c77578384fd5b614c83888389016147dd565b95506020870135915080821115614c98578384fd5b614ca4888389016147dd565b94506040870135915080821115614cb9578384fd5b614cc588838901614778565b93506060870135915080821115614cda578283fd5b50614c0c87828801614778565b600080600060608486031215614cfb578081fd5b833567ffffffffffffffff80821115614d12578283fd5b614d1e878388016147dd565b94506020860135915080821115614d33578283fd5b614d3f87838801614838565b93506040860135915080821115614d54578283fd5b50614d6186828701614778565b9150509250925092565b600080600060608486031215614d7f578081fd5b833567ffffffffffffffff80821115614d96578283fd5b614da2878388016147dd565b9450602086013593506040860135915080821115614d54578283fd5b60008060408385031215614dd0578182fd5b823567ffffffffffffffff80821115614de7578384fd5b81850186601f820112614df8578485fd5b80359250614e0861472084615b1f565b83815260208082019190838101885b87811015614e4057614e2e8c848435890101614a6c565b85529382019390820190600101614e17565b50919750880135945050505080821115614e58578283fd5b50614e6585828601614778565b9150509250929050565b600060208284031215614e80578081fd5b5035919050565b60008060408385031215614e99578182fd5b823591506020830135614b6581615b89565b600080600060608486031215614ebf578081fd5b833592506020840135614ed181615b89565b9150604084013567ffffffffffffffff811115614eec578182fd5b614d6186828701614896565b600060208284031215614f09578081fd5b813561096681615bab565b600060208284031215614f25578081fd5b815161096681615bab565b600060a08284031215614f41578081fd5b614f4b60a0615af8565b82518152602083015160208201526040830151604082015260608301516060820152608083015160808201528091505092915050565b600060208284031215614f92578081fd5b813567ffffffffffffffff811115614fa8578182fd5b610b6b8482850161491d565b60008060408385031215614fc6578182fd5b823567ffffffffffffffff80821115614fdd578384fd5b614fe98683870161491d565b93506020850135915080821115614ffe578283fd5b50614e6585828601614896565b60008060008060808587031215615020578182fd5b843567ffffffffffffffff80821115615037578384fd5b6150438883890161491d565b95506020870135915080821115615058578384fd5b6150648883890161491d565b94506040870135915080821115615079578384fd5b61508588838901614896565b9350606087013591508082111561509a578283fd5b50614c0c87828801614896565b6000806000606084860312156150bb578081fd5b833567ffffffffffffffff808211156150d2578283fd5b6150de8783880161491d565b94506020860135935060408601359150808211156150fa578283fd5b50614d6186828701614896565b60008060408385031215615119578182fd5b823567ffffffffffffffff80821115615130578384fd5b614fe986838701614a6c565b73ffffffffffffffffffffffffffffffffffffffff169052565b6000815180845260208401935060208301825b828110156151925761517c8683516151e6565b60a0959095019460209190910190600101615169565b5093949350505050565b600081518084526151b4816020860160208601615b3f565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b80518252602081015160208301526040810151604083015260608101516060830152608081015160808301525050565b60006101c061522684845161513c565b6020830151615238602086018261513c565b50604083015161524b604086018261513c565b50606083015161525e606086018261513c565b506080830151608085015260a083015160a085015260c083015160c085015260e083015160e08501526101008084015181860152506101208084015181860152506101408084015182828701526152b78387018261519c565b915050610160915081840151858203838701526152d4828261519c565b9250505061018080840151858303828701526152f0838261519c565b9150506101a091508184015185820383870152613e09828261519c565b6000825161531f818460208701615b3f565b9190910192915050565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c810191909152603c0190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b600073ffffffffffffffffffffffffffffffffffffffff8616825260806020830152615402608083018661519c565b8281036040840152615414818661519c565b8381036060850152615426818661519c565b98975050505050505050565b6000602080830181845280855180835260408601915060408482028701019250838701855b828110156154a3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845261549185835161519c565b94509285019290850190600101615457565b5092979650505050505050565b6000602082526109666020830184615156565b901515815260200190565b90815260200190565b91825273ffffffffffffffffffffffffffffffffffffffff16602082015260400190565b600085825273ffffffffffffffffffffffffffffffffffffffff8516602083015260806040830152615530608083018561519c565b8281036060840152613940818561519c565b918252602082015260400190565b600083825260406020830152610b6b604083018461519c565b600084825260606020830152615582606083018561519c565b8281036040840152613e09818561519c565b828152604081016155a483615b7f565b8260208301529392505050565b600086825285602083015273ffffffffffffffffffffffffffffffffffffffff808616604084015280851660608401525060a0608083015261394060a083018461519c565b9283526020830191909152604082015260600190565b93845260ff9290921660208401526040830152606082015260800190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b7fffffffff0000000000000000000000000000000000000000000000000000000092909216825273ffffffffffffffffffffffffffffffffffffffff16602082015260400190565b600060208252610966602083018461519c565b6000608082526156c5608083018761519c565b73ffffffffffffffffffffffffffffffffffffffff95861660208401529390941660408201526060015292915050565b600060408252615708604083018561519c565b8281036020840152610e1a818561519c565b60006060825261572d606083018661519c565b828103602084015261573f818661519c565b91505073ffffffffffffffffffffffffffffffffffffffff83166040830152949350505050565b600061016080835261577a8184018f61519c565b838103602085015261578c818f61519c565b91505082810360408401526157a1818d61519c565b83810360608501526157b3818d61519c565b73ffffffffffffffffffffffffffffffffffffffff9b8c16608086015299909a1660a0840152505060c081019590955260e08501939093526101008401919091526101208301526101409091015295945050505050565b600061581585615b6b565b84825283602083015260606040830152610e1a606083018461519c565b6020810161583f83615b75565b91905290565b6060810161585285615b75565b938152602081019290925260409091015290565b606081016003851061587457fe5b938152602081019290925273ffffffffffffffffffffffffffffffffffffffff1660409091015290565b606081016003851061585257fe5b606081016008851061585257fe5b60006158c586615b7f565b85825284602083015273ffffffffffffffffffffffffffffffffffffffff8416604083015260806060830152613e09608083018461519c565b6040810161590b84615b6b565b9281526020015290565b60208082526014908201527f5452414e53464552535f5355434345535346554c000000000000000000000000604082015260600190565b60006020825282516080602084015261596860a0840182615156565b602085015191507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08482030160408501526159a38183615156565b604086015160608601526060860151608086015280935050505092915050565b60a081016107f582846151e6565b6000610180820190506159e58284516151e6565b60208301516159f760a08401826151e6565b5060408301516101408301526060909201516101609091015290565b81516060820190615a2381615b7f565b80835250602083015160208301526040830151604083015292915050565b600060408252615a546040830185615216565b90508260208301529392505050565b600060608252615a766060830186615216565b8460208401528281036040840152613e09818561519c565b60006040825283516040830152602084015160608301526040840151608083015273ffffffffffffffffffffffffffffffffffffffff60608501511660a0830152608084015160a060c0840152615ae860e084018261519c565b9150508260208301529392505050565b60405181810167ffffffffffffffff81118282101715615b1757600080fd5b604052919050565b600067ffffffffffffffff821115615b35578081fd5b5060209081020190565b60005b83811015615b5a578181015183820152602001615b42565b838111156133785750506000910152565b6002811061084357fe5b6004811061084357fe5b6007811061084357fe5b73ffffffffffffffffffffffffffffffffffffffff8116811461084357600080fd5b7fffffffff000000000000000000000000000000000000000000000000000000008116811461084357600080fd5b8351602094850120835193850193909320604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815295860194909452928401929092526060830152608082015260a090209056fea365627a7a7231582057a99d2b26604884d7017ca2643f67d83fa0b377d07c01f3eb935fbcfa0af1976c6578706572696d656e74616cf564736f6c63430005110040" } } }, "compiler": { "name": "solc", - "version": "soljson-v0.5.17+commit.d19bba13.js", + "version": "0.5.17+commit.d19bba13", "settings": { "optimizer": { "enabled": true, diff --git a/packages/contract-artifacts/artifacts/Forwarder.json b/packages/contract-artifacts/artifacts/Forwarder.json index 1ef8d6b2a0..1fb18ff177 100644 --- a/packages/contract-artifacts/artifacts/Forwarder.json +++ b/packages/contract-artifacts/artifacts/Forwarder.json @@ -308,16 +308,16 @@ }, "evm": { "bytecode": { - "object": "0x60806040523480156200001157600080fd5b5060405162003f2c38038062003f2c833981016040819052620000349162000472565b60008054336001600160a01b031991821617909155600180549091166001600160a01b0383161790556040518390839082908490630f47261b60e41b9062000081908390602401620004e7565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217825251620000c191600291620003a0565b50604051630c0e082160e31b81526000906001600160a01b03841690636070410890620000fa90630f47261b60e41b9060040162000514565b60206040518083038186803b1580156200011357600080fd5b505afa15801562000128573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200014e919081019062000442565b90506001600160a01b038116620001895762000189620001786200036b60201b6200082f1760201c565b6200039860201b620002f61760201c565b60015460405163095ea7b360e01b81526001600160a01b039091169063095ea7b390620001bf90849060001990600401620004fb565b602060405180830381600087803b158015620001da57600080fd5b505af1158015620001ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620002159190810190620004c5565b506000836001600160a01b031663850a15016040518163ffffffff1660e01b815260040160206040518083038186803b1580156200025257600080fd5b505afa15801562000267573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200028d919081019062000442565b90506001600160a01b038116156200032d5760015460405163095ea7b360e01b81526001600160a01b039091169063095ea7b390620002d590849060001990600401620004fb565b602060405180830381600087803b158015620002f057600080fd5b505af115801562000305573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200032b9190810190620004c5565b505b5050600380546001600160a01b039586166001600160a01b031991821617909155600480549490951693169290921790925550620005429350505050565b6040805160048152602481019091526020810180516001600160e01b031663f3b96b8d60e01b1790525b90565b805160208201fd5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620003e357805160ff191683800117855562000413565b8280016001018555821562000413579182015b8281111562000413578251825591602001919060010190620003f6565b506200042192915062000425565b5090565b6200039591905b808211156200042157600081556001016200042c565b60006020828403121562000454578081fd5b81516001600160a01b03811681146200046b578182fd5b9392505050565b60008060006060848603121562000487578182fd5b8351620004948162000529565b6020850151909350620004a78162000529565b6040850151909250620004ba8162000529565b809150509250925092565b600060208284031215620004d7578081fd5b815180151581146200046b578182fd5b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160e01b031991909116815260200190565b6001600160a01b03811681146200053f57600080fd5b50565b6139da80620005526000396000f3fe6080604052600436106100c75760003560e01c8063bc197c8111610074578063f23a6e611161004e578063f23a6e6114610202578063f2fde38b14610222578063fc67bf1c14610242576100c7565b8063bc197c81146101ab578063e0a5c949146101d8578063e196001b146101ed576100c7565b8063907e5cc3116100a5578063907e5cc314610164578063939ce6ba146101855780639e83231514610198576100c7565b8063442026ed146100f9578063630f1e6c146101195780638da5cb5b14610139575b60015473ffffffffffffffffffffffffffffffffffffffff1633146100f7576100f76100f233610257565b6102f6565b005b34801561010557600080fd5b506100f7610114366004613304565b6102fe565b34801561012557600080fd5b506100f7610134366004613344565b6104e8565b34801561014557600080fd5b5061014e61053e565b60405161015b91906134d5565b60405180910390f35b610177610172366004613106565b61055a565b60405161015b9291906138b2565b6101776101933660046131a2565b6105b5565b6101776101a63660046131a2565b61063b565b3480156101b757600080fd5b506101cb6101c6366004612fd1565b610671565b60405161015b91906135de565b3480156101e457600080fd5b506101cb61069e565b3480156101f957600080fd5b506101cb6106c2565b34801561020e57600080fd5b506101cb61021d36600461308c565b6106e6565b34801561022e57600080fd5b506100f761023d366004612f01565b610711565b34801561024e57600080fd5b506101cb6107b5565b60606308b1869860e01b8260405160240161027291906134d5565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050919050565b805160208201fd5b600061034a600084848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff6107d9169050565b90507ff47261b0000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000082168114156104e2576003546040517f6070410800000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff16906360704108906103ee9085906004016135de565b60206040518083038186803b15801561040657600080fd5b505afa15801561041a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061043e9190810190612f1d565b905073ffffffffffffffffffffffffffffffffffffffff8116610466576104666100f261082f565b60006104b2601087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff610889169050565b90506104df81837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6108c9565b50505b50505050565b6104f061098a565b6105398184848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff6109d3169050565b505050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b600080600061056985856109e9565b9050610576878288610b3f565b909350915080831115610590576105906100f28434610d53565b6105a0818463ffffffff610df516565b90506105ab81610e14565b5094509492505050565b600080348611156105cd576105cd6100f28734610ecf565b60006105d985856109e9565b9050868110156105f0576105f06100f28289610d53565b6105fb888888610eec565b909350915086831015610615576106156100f28885610ecf565b610625818463ffffffff610df516565b905061063081610e14565b509550959350505050565b600080600061064a85856109e9565b905061065788888861100d565b909350915080831115610615576106156100f28434610d53565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b7ff23a6e610000000000000000000000000000000000000000000000000000000081565b7f770501f80000000000000000000000000000000000000000000000000000000081565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b61071961098a565b73ffffffffffffffffffffffffffffffffffffffff81166107445761073f6100f261139f565b6107b2565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35b50565b7fbc197c810000000000000000000000000000000000000000000000000000000081565b600081600401835110156107fa576107fa6100f260038551856004016113d6565b5060208183018101519101907fffffffff00000000000000000000000000000000000000000000000000000000165b92915050565b6040805160048152602481019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff3b96b8d0000000000000000000000000000000000000000000000000000000017905290565b600081601401835110156108aa576108aa6100f260048551856014016113d6565b50016014015173ffffffffffffffffffffffffffffffffffffffff1690565b6040516060907f095ea7b3000000000000000000000000000000000000000000000000000000009061090190859085906024016135b8565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290506104e2848261147c565b60005473ffffffffffffffffffffffffffffffffffffffff1633146109d1576000546109d1906100f290339073ffffffffffffffffffffffffffffffffffffffff16611534565b565b6109e58230338463ffffffff61155116565b5050565b81518151600091908114610a0557610a056100f282855161178c565b34915060005b818114610ab4576000858281518110610a2057fe5b6020026020010151905080841015610a3f57610a3f6100f282866117a9565b610a4f848263ffffffff610df516565b9350848281518110610a5d57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610aaa573d6000803e3d6000fd5b5050600101610a0b565b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b158015610b1f57600080fd5b505af1158015610b33573d6000803e3d6000fd5b50505050505092915050565b6000806000610bf4600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631ce4c78b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610baf57600080fd5b505afa158015610bc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610be791908101906133df565b3a9063ffffffff6117c616565b905060005b86518114610d4957868181518110610c0d57fe5b60200260200101516080015160001480610c3e5750868181518110610c2e57fe5b602002602001015160a001516000145b15610c4857610d41565b6000610c5a878663ffffffff610df516565b90506000610c7a898481518110610c6d57fe5b60200260200101516117f7565b610c845783610c87565b60005b905080821115610ca857610ca1828263ffffffff610df516565b9150610caf565b5050610d49565b610cb761297e565b610ce88a8581518110610cc657fe5b6020026020010151898681518110610cda57fe5b60200260200101518561186c565b60408101518151919250610d1391610d07908a9063ffffffff611bde16565b9063ffffffff611bde16565b9650610d2c816020015187611bde90919063ffffffff16565b9550888710610d3d57505050610d49565b5050505b600101610bf9565b5050935093915050565b606063cdcbed5d60e01b8383604051602401610d709291906138b2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905092915050565b600082821115610e0e57610e0e6100f260028585611bf6565b50900390565b80156107b2576001546040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690632e1a7d4d90610e709084906004016138a9565b600060405180830381600087803b158015610e8a57600080fd5b505af1158015610e9e573d6000803e3d6000fd5b505060405133925083156108fc02915083906000818181858888f193505050501580156109e5573d6000803e3d6000fd5b606063450a021960e01b8383604051602401610d709291906138b2565b60008080805b86518114610ff157868181518110610f0657fe5b60200260200101516080015160001480610f375750868181518110610f2757fe5b602002602001015160a001516000145b15610f4157610fe9565b6000610f53878663ffffffff610df516565b9050610f5d61297e565b610f8e898481518110610f6c57fe5b6020026020010151888581518110610f8057fe5b60200260200101518461186c565b8051909150610fa490879063ffffffff611bde16565b9550610fbd816020015186611bde90919063ffffffff16565b9450610fd6816040015185611bde90919063ffffffff16565b9350878610610fe6575050610ff1565b50505b600101610ef2565b50611002838263ffffffff611bde16565b925050935093915050565b82516000908190815b8181146113805786818151811061102957fe5b6020026020010151608001516000148061105a575086818151811061104a57fe5b602002602001015160a001516000145b1561106457611378565b6000611076878563ffffffff610df516565b905060006110a660008a858151811061108b57fe5b602002602001015161014001516107d990919063ffffffff16565b90506000807fffffffff0000000000000000000000000000000000000000000000000000000083167fdc1600f30000000000000000000000000000000000000000000000000000000014156111c95761112160108c878151811061110657fe5b6020026020010151610140015161088990919063ffffffff16565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815290925073ffffffffffffffffffffffffffffffffffffffff8316906370a08231906111769030906004016134d5565b60206040518083038186803b15801561118e57600080fd5b505afa1580156111a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111c691908101906133df565b90505b6000806111fd8d88815181106111db57fe5b60200260200101518c89815181106111ef57fe5b602002602001015188611c15565b90925090507fffffffff0000000000000000000000000000000000000000000000000000000085167fdc1600f3000000000000000000000000000000000000000000000000000000001415611310576040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8616906370a08231906112a19030906004016134d5565b60206040518083038186803b1580156112b957600080fd5b505afa1580156112cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506112f191908101906133df565b905061130c611306828663ffffffff610df516565b83611d4e565b9150505b61133b818e898151811061132057fe5b602002602001015161014001516109d390919063ffffffff16565b61134b8a8363ffffffff611bde16565b995061135d898263ffffffff611bde16565b98508b891061137157505050505050611380565b5050505050505b600101611016565b5084821015611396576113966100f28684611d65565b50935093915050565b60408051808201909152600481527fe69edc3e00000000000000000000000000000000000000000000000000000000602082015290565b6060632800659560e01b8484846040516024016113f593929190613640565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290505b9392505050565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040516114a591906134b9565b6000604051808303816000865af19150503d80600081146114e2576040519150601f19603f3d011682016040523d82523d6000602084013e6114e7565b606091505b5091509150811561152b5780516114ff5750506109e5565b80516020141561152b576000611516826000611d82565b90508060011415611529575050506109e5565b505b6104e2816102f6565b6060631de45ad160e01b8383604051602401610d709291906134f6565b8061155b576104e2565b600061156d858263ffffffff6107d916565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167ff47261b000000000000000000000000000000000000000000000000000000000148061160057507fffffffff0000000000000000000000000000000000000000000000000000000081167fdc1600f300000000000000000000000000000000000000000000000000000000145b1561161c576116178585858563ffffffff611d8e16565b611785565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f02571792000000000000000000000000000000000000000000000000000000001415611678576116178585858563ffffffff611dd816565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fa7cb5fb70000000000000000000000000000000000000000000000000000000014156116d4576116178585858563ffffffff611ea716565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f94cfcdd7000000000000000000000000000000000000000000000000000000001415611730576116178585858563ffffffff611ffd16565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fc339d10a0000000000000000000000000000000000000000000000000000000014611785576117856100f282612091565b5050505050565b6060633ecb6ceb60e01b8383604051602401610d709291906138b2565b606063ecf40fd960e01b8383604051602401610d709291906138b2565b6000826117d557506000610829565b828202828482816117e257fe5b0414611475576114756100f260018686611bf6565b600060038261018001515111801561082957506101808201517f770501f8000000000000000000000000000000000000000000000000000000009061184390600063ffffffff6107d916565b7fffffffff00000000000000000000000000000000000000000000000000000000161492915050565b61187461297e565b61014084015160009061188d908263ffffffff6107d916565b90506000807fffffffff0000000000000000000000000000000000000000000000000000000083167fdc1600f300000000000000000000000000000000000000000000000000000000141561199b576101408701516118f390601063ffffffff61088916565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815290925073ffffffffffffffffffffffffffffffffffffffff8316906370a08231906119489030906004016134d5565b60206040518083038186803b15801561196057600080fd5b505afa158015611974573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061199891908101906133df565b90505b60e087015115806119bb57506119bb876101a001518861014001516120ac565b15611a09576119c861299f565b6119d3888789612259565b6020810151865260808101516040870152606081015181519192506119fe919063ffffffff610df516565b602086015250611aa5565b611a1d876101a001518861016001516120ac565b15611a945760a087015160e0880151600091611a4a91611a4490829063ffffffff611bde16565b88612294565b9050611a5461299f565b611a5f89838a612259565b9050611a7c81606001518260200151611bde90919063ffffffff16565b86528051602087015260800151604086015250611aa5565b611aa56100f2886101a001516122ca565b7fffffffff0000000000000000000000000000000000000000000000000000000083167fdc1600f3000000000000000000000000000000000000000000000000000000001415611bba576040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190611b449030906004016134d5565b60206040518083038186803b158015611b5c57600080fd5b505afa158015611b70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b9491908101906133df565b9050611bb3611ba9828463ffffffff610df516565b8660200151611d4e565b6020860152505b6020840151610140880151611bd49163ffffffff6109d316565b5050509392505050565b600082820183811015611475576114756100f2600086865b606063e946c1bb60e01b8484846040516024016113f59392919061361e565b6000808460e0015160001480611c3a5750611c3a856101a001518661016001516120ac565b15611c9c576000611c548660a00151876080015186612294565b9050611c5e61299f565b611c69878388612259565b9050611c8e8160800151610d0783606001518460200151611bde90919063ffffffff16565b90519093509150611d469050565b611cb0856101a001518661014001516120ac565b15611d35576000611ce08660a00151611cda8860e001518960800151610df590919063ffffffff16565b86612294565b9050611cea61299f565b611cf5878388612259565b9050611d1281608001518260200151611bde90919063ffffffff16565b60608201518251919550611d2c919063ffffffff610df516565b92505050611d46565b611d466100f2866101a001516122ca565b935093915050565b600081831015611d5e5781611475565b5090919050565b60606391353a0c60e01b8383604051602401610d709291906138b2565b600061147583836122e5565b6000611da185601063ffffffff61088916565b905073ffffffffffffffffffffffffffffffffffffffff8416301415611dcc5761161781848461230f565b61178581858585612347565b80600114611dec57611dec6100f28261240a565b6000611dff85601063ffffffff61088916565b90506000611e1486602463ffffffff611d8216565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd90611e6d90889088908690600401613587565b600060405180830381600087803b158015611e8757600080fd5b505af1158015611e9b573d6000803e3d6000fd5b50505050505050505050565b60006060806060611ec5600489518a6124259092919063ffffffff16565b806020019051611ed89190810190612f39565b9350935093509350600082519050606081604051908082528060200260200182016040528015611f12578160200160208202803883390190505b50905060005b828114611f6457611f4588868381518110611f2f57fe5b60200260200101516117c690919063ffffffff16565b828281518110611f5157fe5b6020908102919091010152600101611f18565b506040517f2eb2c2d600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871690632eb2c2d690611fbf908c908c908a9087908a9060040161351d565b600060405180830381600087803b158015611fd957600080fd5b505af1158015611fed573d6000803e3d6000fd5b5050505050505050505050505050565b60608061201760048751886124259092919063ffffffff16565b80602001905161202a9190810190613254565b8051919350915060005b8181146120875761207f83828151811061204a57fe5b6020026020010151888861207a88868151811061206357fe5b60200260200101518a6117c690919063ffffffff16565b611551565b600101612034565b5050505050505050565b6060637996a27160e01b8260405160240161027291906135de565b6000806120bf848263ffffffff6107d916565b905060006120d3848263ffffffff6107d916565b90507ff47261b0000000000000000000000000000000000000000000000000000000007fdc1600f3000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000841682148061216b57507fffffffff00000000000000000000000000000000000000000000000000000000848116908216145b80156121c957507fffffffff0000000000000000000000000000000000000000000000000000000083811690831614806121c957507fffffffff00000000000000000000000000000000000000000000000000000000838116908216145b156122345760006121e188601063ffffffff61088916565b905060006121f688601063ffffffff61088916565b90508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149650505050505050610829565b612244878763ffffffff6124a516565b945050505050610829565b5050505092915050565b61226161299f565b61226a846117f7565b156122815761227a8484846124ca565b9050611475565b61228c84848461271e565b949350505050565b600061228c836122be6122ae82600163ffffffff610df516565b610d07888763ffffffff6117c616565b9063ffffffff61288b16565b60606331360af160e01b82604051602401610272919061360b565b60008160200183511015612306576123066100f260058551856020016113d6565b50016020015190565b6040516060907fa9059cbb000000000000000000000000000000000000000000000000000000009061090190859085906024016135b8565b6040516060907f23b872dd000000000000000000000000000000000000000000000000000000009061238190869086908690602401613587565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050611785858261147c565b606063baffa47460e01b8260405160240161027291906138a9565b60608183111561243e5761243e6100f2600085856113d6565b8351821115612457576124576100f260018487516113d6565b8282036040519080825280601f01601f191660200182016040528015612484576020820181803883390190505b509050611475612493826128b5565b8461249d876128b5565b0183516128bb565b6000815183511480156114755750508051602091820120825192909101919091201490565b6124d261299f565b6124da6129ce565b604051806101800160405280866000015173ffffffffffffffffffffffffffffffffffffffff168152602001866020015173ffffffffffffffffffffffffffffffffffffffff168152602001866040015173ffffffffffffffffffffffffffffffffffffffff168152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152602001866080015181526020018660a001518152602001600081526020016000815260200186610100015181526020018661012001518152602001866101400151815260200186610160015181525090506060600073ffffffffffffffffffffffffffffffffffffffff1663b4be83d5905060e01b8286866040516024016125ed9392919061364e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252600454915190925073ffffffffffffffffffffffffffffffffffffffff90911690600090606090839061269e9086906134b9565b6000604051808303816000865af19150503d80600081146126db576040519150601f19603f3d011682016040523d82523d6000602084013e6126e0565b606091505b509150915081156127125780516080146126f657fe5b8080602001905161270a91908101906133f7565b602088015286525b50505050509392505050565b61272661299f565b6040516060907f9b44d55600000000000000000000000000000000000000000000000000000000906127609087908790879060240161376e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252600354915190925073ffffffffffffffffffffffffffffffffffffffff9091169060009060609083906128119086906134b9565b6000604051808303816000865af19150503d806000811461284e576040519150601f19603f3d011682016040523d82523d6000602084013e612853565b606091505b5091509150811561288057805160a01461286957fe5b8080602001905161287d919081019061338e565b94505b505050509392505050565b6000816128a1576128a16100f260038585611bf6565b60008284816128ac57fe5b04949350505050565b60200190565b60208110156128e5576001816020036101000a038019835116818551168082178652505050610539565b828214156128f257610539565b8282111561292c5760208103905080820181840181515b82851015612924578451865260209586019590940193612909565b905250610539565b60208103905080820181840183515b8186121561297557825182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0928301929091019061293b565b85525050505050565b60405180606001604052806000815260200160008152602001600081525090565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b604051806101800160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160608152602001606081525090565b803561082981613975565b600082601f830112612aa2578081fd5b8135612ab5612ab0826138e7565b6138c0565b818152915060208083019084810181840286018201871015612ad657600080fd5b60005b84811015612afe578135612aec81613975565b84529282019290820190600101612ad9565b505050505092915050565b600082601f830112612b19578081fd5b8135612b27612ab0826138e7565b8181529150602080830190840160005b8381101561224f57612b4f8760208435890101612e66565b83526020928301929190910190600101612b37565b600082601f830112612b74578081fd5b8135612b82612ab0826138e7565b818152915060208083019084810160005b84811015612afe57813587016101c0807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0838c03011215612bd357600080fd5b612bdc816138c0565b612be88b878501612a87565b8152612bf78b60408501612a87565b86820152612c088b60608501612a87565b6040820152612c1a8b60808501612a87565b606082015260a0830135608082015260c083013560a082015260e083013560c08201526101008084013560e0830152610120808501358284015261014091508185013581840152506101608085013567ffffffffffffffff80821115612c7f57600080fd5b612c8d8f8b848a0101612e66565b84860152610180935083870135915080821115612ca957600080fd5b612cb78f8b848a0101612e66565b838601526101a0925082870135915080821115612cd357600080fd5b612ce18f8b848a0101612e66565b8486015285870135935080841115612cf857600080fd5b5050612d088d8984880101612e66565b9083015250865250509282019290820190600101612b93565b60008083601f840112612d32578182fd5b50813567ffffffffffffffff811115612d49578182fd5b6020830191508360208083028501011115612d6357600080fd5b9250929050565b600082601f830112612d7a578081fd5b8151612d88612ab0826138e7565b818152915060208083019084810181840286018201871015612da957600080fd5b60005b84811015612afe57815184529282019290820190600101612dac565b600082601f830112612dd8578081fd5b8135612de6612ab0826138e7565b818152915060208083019084810181840286018201871015612e0757600080fd5b60005b84811015612afe57813584529282019290820190600101612e0a565b60008083601f840112612e37578182fd5b50813567ffffffffffffffff811115612e4e578182fd5b602083019150836020828501011115612d6357600080fd5b600082601f830112612e76578081fd5b8135612e84612ab082613907565b9150808252836020828501011115612e9b57600080fd5b8060208401602084013760009082016020015292915050565b600082601f830112612ec4578081fd5b8151612ed2612ab082613907565b9150808252836020828501011115612ee957600080fd5b612efa816020840160208601613949565b5092915050565b600060208284031215612f12578081fd5b813561147581613975565b600060208284031215612f2e578081fd5b815161147581613975565b60008060008060808587031215612f4e578283fd5b8451612f5981613975565b602086015190945067ffffffffffffffff80821115612f76578485fd5b612f8288838901612d6a565b94506040870151915080821115612f97578384fd5b612fa388838901612d6a565b93506060870151915080821115612fb8578283fd5b50612fc587828801612eb4565b91505092959194509250565b60008060008060008060008060a0898b031215612fec578586fd5b8835612ff781613975565b9750602089013561300781613975565b9650604089013567ffffffffffffffff80821115613023578788fd5b61302f8c838d01612d21565b909850965060608b0135915080821115613047578586fd5b6130538c838d01612d21565b909650945060808b013591508082111561306b578384fd5b506130788b828c01612e26565b999c989b5096995094979396929594505050565b60008060008060008060a087890312156130a4578384fd5b86356130af81613975565b955060208701356130bf81613975565b94506040870135935060608701359250608087013567ffffffffffffffff8111156130e8578283fd5b6130f489828a01612e26565b979a9699509497509295939492505050565b6000806000806080858703121561311b578182fd5b843567ffffffffffffffff80821115613132578384fd5b61313e88838901612b64565b95506020870135915080821115613153578384fd5b61315f88838901612b09565b94506040870135915080821115613174578384fd5b61318088838901612dc8565b93506060870135915080821115613195578283fd5b50612fc587828801612a92565b600080600080600060a086880312156131b9578283fd5b853567ffffffffffffffff808211156131d0578485fd5b6131dc89838a01612b64565b96506020880135955060408801359150808211156131f8578485fd5b61320489838a01612b09565b94506060880135915080821115613219578283fd5b61322589838a01612dc8565b9350608088013591508082111561323a578283fd5b5061324788828901612a92565b9150509295509295909350565b60008060408385031215613266578182fd5b825167ffffffffffffffff8082111561327d578384fd5b61328986838701612d6a565b935060209150818501518181111561329f578384fd5b85019050601f810186136132b1578283fd5b80516132bf612ab0826138e7565b81815283810190838501865b848110156132f4576132e28b888451890101612eb4565b845292860192908601906001016132cb565b5096999098509650505050505050565b60008060208385031215613316578182fd5b823567ffffffffffffffff81111561332c578283fd5b61333885828601612e26565b90969095509350505050565b600080600060408486031215613358578081fd5b833567ffffffffffffffff81111561336e578182fd5b61337a86828701612e26565b909790965060209590950135949350505050565b600060a0828403121561339f578081fd5b6133a960a06138c0565b82518152602083015160208201526040830151604082015260608301516060820152608083015160808201528091505092915050565b6000602082840312156133f0578081fd5b5051919050565b60008060408385031215613409578182fd5b505080516020909101519092909150565b73ffffffffffffffffffffffffffffffffffffffff169052565b6000815180845260208401935060208301825b82811015613465578151865260209586019590910190600101613447565b5093949350505050565b60008151808452613487816020860160208601613949565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600082516134cb818460208701613949565b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525060a0604083015261355660a0830186613434565b82810360608401526135688186613434565b838103608085015261357a818661346f565b9998505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b600060208252611475602083018461346f565b606081016004851061362c57fe5b938152602081019290925260409091015290565b606081016008851061362c57fe5b60006060825261366260608301865161341a565b6020850151613674608084018261341a565b50604085015161368760a084018261341a565b50606085015161369a60c084018261341a565b50608085015160e083015260a0850151610100818185015260c08701519150610120828186015260e088015192506101408381870152828901519350610160925083838701528189015193506101809150838287015280890151935050806101a08601525061370d6101e085018361346f565b8188015192507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0858203016101c0860152613748818461346f565b9150508560208501528381036040850152613763818661346f565b979650505050505050565b60006060825261378260608301865161341a565b6020850151613794608084018261341a565b5060408501516137a760a084018261341a565b5060608501516137ba60c084018261341a565b50608085015160e083015260a0850151610100818185015260c08701519150610120828186015260e0880151925061014083818701528289015193506101609250838387015281890151935061018091508382870152808901519350506101c06101a0818188015261383061022088018661346f565b848b015195507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0945084888203018389015261386c818761346f565b925050828a0151945083878303016101e088015261388a828661346f565b9250808a0151945050508185820301610200860152613748818461346f565b90815260200190565b918252602082015260400190565b60405181810167ffffffffffffffff811182821017156138df57600080fd5b604052919050565b600067ffffffffffffffff8211156138fd578081fd5b5060209081020190565b600067ffffffffffffffff82111561391d578081fd5b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b8381101561396457818101518382015260200161394c565b838111156104e25750506000910152565b73ffffffffffffffffffffffffffffffffffffffff811681146107b257600080fdfea365627a7a72315820efa457c9b812317d74459754abece7470f3cb0627eec998020620a2962c52b566c6578706572696d656e74616cf564736f6c63430005110040" + "object": "0x60806040523480156200001157600080fd5b5060405162003f2c38038062003f2c833981016040819052620000349162000472565b60008054336001600160a01b031991821617909155600180549091166001600160a01b0383161790556040518390839082908490630f47261b60e41b9062000081908390602401620004e7565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217825251620000c191600291620003a0565b50604051630c0e082160e31b81526000906001600160a01b03841690636070410890620000fa90630f47261b60e41b9060040162000514565b60206040518083038186803b1580156200011357600080fd5b505afa15801562000128573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200014e919081019062000442565b90506001600160a01b038116620001895762000189620001786200036b60201b6200082f1760201c565b6200039860201b620002f61760201c565b60015460405163095ea7b360e01b81526001600160a01b039091169063095ea7b390620001bf90849060001990600401620004fb565b602060405180830381600087803b158015620001da57600080fd5b505af1158015620001ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620002159190810190620004c5565b506000836001600160a01b031663850a15016040518163ffffffff1660e01b815260040160206040518083038186803b1580156200025257600080fd5b505afa15801562000267573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200028d919081019062000442565b90506001600160a01b038116156200032d5760015460405163095ea7b360e01b81526001600160a01b039091169063095ea7b390620002d590849060001990600401620004fb565b602060405180830381600087803b158015620002f057600080fd5b505af115801562000305573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200032b9190810190620004c5565b505b5050600380546001600160a01b039586166001600160a01b031991821617909155600480549490951693169290921790925550620005429350505050565b6040805160048152602481019091526020810180516001600160e01b031663f3b96b8d60e01b1790525b90565b805160208201fd5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620003e357805160ff191683800117855562000413565b8280016001018555821562000413579182015b8281111562000413578251825591602001919060010190620003f6565b506200042192915062000425565b5090565b6200039591905b808211156200042157600081556001016200042c565b60006020828403121562000454578081fd5b81516001600160a01b03811681146200046b578182fd5b9392505050565b60008060006060848603121562000487578182fd5b8351620004948162000529565b6020850151909350620004a78162000529565b6040850151909250620004ba8162000529565b809150509250925092565b600060208284031215620004d7578081fd5b815180151581146200046b578182fd5b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160e01b031991909116815260200190565b6001600160a01b03811681146200053f57600080fd5b50565b6139da80620005526000396000f3fe6080604052600436106100c75760003560e01c8063bc197c8111610074578063f23a6e611161004e578063f23a6e6114610202578063f2fde38b14610222578063fc67bf1c14610242576100c7565b8063bc197c81146101ab578063e0a5c949146101d8578063e196001b146101ed576100c7565b8063907e5cc3116100a5578063907e5cc314610164578063939ce6ba146101855780639e83231514610198576100c7565b8063442026ed146100f9578063630f1e6c146101195780638da5cb5b14610139575b60015473ffffffffffffffffffffffffffffffffffffffff1633146100f7576100f76100f233610257565b6102f6565b005b34801561010557600080fd5b506100f7610114366004613304565b6102fe565b34801561012557600080fd5b506100f7610134366004613344565b6104e8565b34801561014557600080fd5b5061014e61053e565b60405161015b91906134d5565b60405180910390f35b610177610172366004613106565b61055a565b60405161015b9291906138b2565b6101776101933660046131a2565b6105b5565b6101776101a63660046131a2565b61063b565b3480156101b757600080fd5b506101cb6101c6366004612fd1565b610671565b60405161015b91906135de565b3480156101e457600080fd5b506101cb61069e565b3480156101f957600080fd5b506101cb6106c2565b34801561020e57600080fd5b506101cb61021d36600461308c565b6106e6565b34801561022e57600080fd5b506100f761023d366004612f01565b610711565b34801561024e57600080fd5b506101cb6107b5565b60606308b1869860e01b8260405160240161027291906134d5565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050919050565b805160208201fd5b600061034a600084848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff6107d9169050565b90507ff47261b0000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000082168114156104e2576003546040517f6070410800000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff16906360704108906103ee9085906004016135de565b60206040518083038186803b15801561040657600080fd5b505afa15801561041a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061043e9190810190612f1d565b905073ffffffffffffffffffffffffffffffffffffffff8116610466576104666100f261082f565b60006104b2601087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff610889169050565b90506104df81837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6108c9565b50505b50505050565b6104f061098a565b6105398184848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff6109d3169050565b505050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b600080600061056985856109e9565b9050610576878288610b3f565b909350915080831115610590576105906100f28434610d53565b6105a0818463ffffffff610df516565b90506105ab81610e14565b5094509492505050565b600080348611156105cd576105cd6100f28734610ecf565b60006105d985856109e9565b9050868110156105f0576105f06100f28289610d53565b6105fb888888610eec565b909350915086831015610615576106156100f28885610ecf565b610625818463ffffffff610df516565b905061063081610e14565b509550959350505050565b600080600061064a85856109e9565b905061065788888861100d565b909350915080831115610615576106156100f28434610d53565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b7ff23a6e610000000000000000000000000000000000000000000000000000000081565b7f770501f80000000000000000000000000000000000000000000000000000000081565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b61071961098a565b73ffffffffffffffffffffffffffffffffffffffff81166107445761073f6100f261139f565b6107b2565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35b50565b7fbc197c810000000000000000000000000000000000000000000000000000000081565b600081600401835110156107fa576107fa6100f260038551856004016113d6565b5060208183018101519101907fffffffff00000000000000000000000000000000000000000000000000000000165b92915050565b6040805160048152602481019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff3b96b8d0000000000000000000000000000000000000000000000000000000017905290565b600081601401835110156108aa576108aa6100f260048551856014016113d6565b50016014015173ffffffffffffffffffffffffffffffffffffffff1690565b6040516060907f095ea7b3000000000000000000000000000000000000000000000000000000009061090190859085906024016135b8565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290506104e2848261147c565b60005473ffffffffffffffffffffffffffffffffffffffff1633146109d1576000546109d1906100f290339073ffffffffffffffffffffffffffffffffffffffff16611534565b565b6109e58230338463ffffffff61155116565b5050565b81518151600091908114610a0557610a056100f282855161178c565b34915060005b818114610ab4576000858281518110610a2057fe5b6020026020010151905080841015610a3f57610a3f6100f282866117a9565b610a4f848263ffffffff610df516565b9350848281518110610a5d57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610aaa573d6000803e3d6000fd5b5050600101610a0b565b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b158015610b1f57600080fd5b505af1158015610b33573d6000803e3d6000fd5b50505050505092915050565b6000806000610bf4600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631ce4c78b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610baf57600080fd5b505afa158015610bc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610be791908101906133df565b3a9063ffffffff6117c616565b905060005b86518114610d4957868181518110610c0d57fe5b60200260200101516080015160001480610c3e5750868181518110610c2e57fe5b602002602001015160a001516000145b15610c4857610d41565b6000610c5a878663ffffffff610df516565b90506000610c7a898481518110610c6d57fe5b60200260200101516117f7565b610c845783610c87565b60005b905080821115610ca857610ca1828263ffffffff610df516565b9150610caf565b5050610d49565b610cb761297e565b610ce88a8581518110610cc657fe5b6020026020010151898681518110610cda57fe5b60200260200101518561186c565b60408101518151919250610d1391610d07908a9063ffffffff611bde16565b9063ffffffff611bde16565b9650610d2c816020015187611bde90919063ffffffff16565b9550888710610d3d57505050610d49565b5050505b600101610bf9565b5050935093915050565b606063cdcbed5d60e01b8383604051602401610d709291906138b2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905092915050565b600082821115610e0e57610e0e6100f260028585611bf6565b50900390565b80156107b2576001546040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690632e1a7d4d90610e709084906004016138a9565b600060405180830381600087803b158015610e8a57600080fd5b505af1158015610e9e573d6000803e3d6000fd5b505060405133925083156108fc02915083906000818181858888f193505050501580156109e5573d6000803e3d6000fd5b606063450a021960e01b8383604051602401610d709291906138b2565b60008080805b86518114610ff157868181518110610f0657fe5b60200260200101516080015160001480610f375750868181518110610f2757fe5b602002602001015160a001516000145b15610f4157610fe9565b6000610f53878663ffffffff610df516565b9050610f5d61297e565b610f8e898481518110610f6c57fe5b6020026020010151888581518110610f8057fe5b60200260200101518461186c565b8051909150610fa490879063ffffffff611bde16565b9550610fbd816020015186611bde90919063ffffffff16565b9450610fd6816040015185611bde90919063ffffffff16565b9350878610610fe6575050610ff1565b50505b600101610ef2565b50611002838263ffffffff611bde16565b925050935093915050565b82516000908190815b8181146113805786818151811061102957fe5b6020026020010151608001516000148061105a575086818151811061104a57fe5b602002602001015160a001516000145b1561106457611378565b6000611076878563ffffffff610df516565b905060006110a660008a858151811061108b57fe5b602002602001015161014001516107d990919063ffffffff16565b90506000807fffffffff0000000000000000000000000000000000000000000000000000000083167fdc1600f30000000000000000000000000000000000000000000000000000000014156111c95761112160108c878151811061110657fe5b6020026020010151610140015161088990919063ffffffff16565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815290925073ffffffffffffffffffffffffffffffffffffffff8316906370a08231906111769030906004016134d5565b60206040518083038186803b15801561118e57600080fd5b505afa1580156111a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111c691908101906133df565b90505b6000806111fd8d88815181106111db57fe5b60200260200101518c89815181106111ef57fe5b602002602001015188611c15565b90925090507fffffffff0000000000000000000000000000000000000000000000000000000085167fdc1600f3000000000000000000000000000000000000000000000000000000001415611310576040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8616906370a08231906112a19030906004016134d5565b60206040518083038186803b1580156112b957600080fd5b505afa1580156112cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506112f191908101906133df565b905061130c611306828663ffffffff610df516565b83611d4e565b9150505b61133b818e898151811061132057fe5b602002602001015161014001516109d390919063ffffffff16565b61134b8a8363ffffffff611bde16565b995061135d898263ffffffff611bde16565b98508b891061137157505050505050611380565b5050505050505b600101611016565b5084821015611396576113966100f28684611d65565b50935093915050565b60408051808201909152600481527fe69edc3e00000000000000000000000000000000000000000000000000000000602082015290565b6060632800659560e01b8484846040516024016113f593929190613640565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290505b9392505050565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040516114a591906134b9565b6000604051808303816000865af19150503d80600081146114e2576040519150601f19603f3d011682016040523d82523d6000602084013e6114e7565b606091505b5091509150811561152b5780516114ff5750506109e5565b80516020141561152b576000611516826000611d82565b90508060011415611529575050506109e5565b505b6104e2816102f6565b6060631de45ad160e01b8383604051602401610d709291906134f6565b8061155b576104e2565b600061156d858263ffffffff6107d916565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167ff47261b000000000000000000000000000000000000000000000000000000000148061160057507fffffffff0000000000000000000000000000000000000000000000000000000081167fdc1600f300000000000000000000000000000000000000000000000000000000145b1561161c576116178585858563ffffffff611d8e16565b611785565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f02571792000000000000000000000000000000000000000000000000000000001415611678576116178585858563ffffffff611dd816565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fa7cb5fb70000000000000000000000000000000000000000000000000000000014156116d4576116178585858563ffffffff611ea716565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f94cfcdd7000000000000000000000000000000000000000000000000000000001415611730576116178585858563ffffffff611ffd16565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fc339d10a0000000000000000000000000000000000000000000000000000000014611785576117856100f282612091565b5050505050565b6060633ecb6ceb60e01b8383604051602401610d709291906138b2565b606063ecf40fd960e01b8383604051602401610d709291906138b2565b6000826117d557506000610829565b828202828482816117e257fe5b0414611475576114756100f260018686611bf6565b600060038261018001515111801561082957506101808201517f770501f8000000000000000000000000000000000000000000000000000000009061184390600063ffffffff6107d916565b7fffffffff00000000000000000000000000000000000000000000000000000000161492915050565b61187461297e565b61014084015160009061188d908263ffffffff6107d916565b90506000807fffffffff0000000000000000000000000000000000000000000000000000000083167fdc1600f300000000000000000000000000000000000000000000000000000000141561199b576101408701516118f390601063ffffffff61088916565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815290925073ffffffffffffffffffffffffffffffffffffffff8316906370a08231906119489030906004016134d5565b60206040518083038186803b15801561196057600080fd5b505afa158015611974573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061199891908101906133df565b90505b60e087015115806119bb57506119bb876101a001518861014001516120ac565b15611a09576119c861299f565b6119d3888789612259565b6020810151865260808101516040870152606081015181519192506119fe919063ffffffff610df516565b602086015250611aa5565b611a1d876101a001518861016001516120ac565b15611a945760a087015160e0880151600091611a4a91611a4490829063ffffffff611bde16565b88612294565b9050611a5461299f565b611a5f89838a612259565b9050611a7c81606001518260200151611bde90919063ffffffff16565b86528051602087015260800151604086015250611aa5565b611aa56100f2886101a001516122ca565b7fffffffff0000000000000000000000000000000000000000000000000000000083167fdc1600f3000000000000000000000000000000000000000000000000000000001415611bba576040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190611b449030906004016134d5565b60206040518083038186803b158015611b5c57600080fd5b505afa158015611b70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b9491908101906133df565b9050611bb3611ba9828463ffffffff610df516565b8660200151611d4e565b6020860152505b6020840151610140880151611bd49163ffffffff6109d316565b5050509392505050565b600082820183811015611475576114756100f2600086865b606063e946c1bb60e01b8484846040516024016113f59392919061361e565b6000808460e0015160001480611c3a5750611c3a856101a001518661016001516120ac565b15611c9c576000611c548660a00151876080015186612294565b9050611c5e61299f565b611c69878388612259565b9050611c8e8160800151610d0783606001518460200151611bde90919063ffffffff16565b90519093509150611d469050565b611cb0856101a001518661014001516120ac565b15611d35576000611ce08660a00151611cda8860e001518960800151610df590919063ffffffff16565b86612294565b9050611cea61299f565b611cf5878388612259565b9050611d1281608001518260200151611bde90919063ffffffff16565b60608201518251919550611d2c919063ffffffff610df516565b92505050611d46565b611d466100f2866101a001516122ca565b935093915050565b600081831015611d5e5781611475565b5090919050565b60606391353a0c60e01b8383604051602401610d709291906138b2565b600061147583836122e5565b6000611da185601063ffffffff61088916565b905073ffffffffffffffffffffffffffffffffffffffff8416301415611dcc5761161781848461230f565b61178581858585612347565b80600114611dec57611dec6100f28261240a565b6000611dff85601063ffffffff61088916565b90506000611e1486602463ffffffff611d8216565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd90611e6d90889088908690600401613587565b600060405180830381600087803b158015611e8757600080fd5b505af1158015611e9b573d6000803e3d6000fd5b50505050505050505050565b60006060806060611ec5600489518a6124259092919063ffffffff16565b806020019051611ed89190810190612f39565b9350935093509350600082519050606081604051908082528060200260200182016040528015611f12578160200160208202803883390190505b50905060005b828114611f6457611f4588868381518110611f2f57fe5b60200260200101516117c690919063ffffffff16565b828281518110611f5157fe5b6020908102919091010152600101611f18565b506040517f2eb2c2d600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871690632eb2c2d690611fbf908c908c908a9087908a9060040161351d565b600060405180830381600087803b158015611fd957600080fd5b505af1158015611fed573d6000803e3d6000fd5b5050505050505050505050505050565b60608061201760048751886124259092919063ffffffff16565b80602001905161202a9190810190613254565b8051919350915060005b8181146120875761207f83828151811061204a57fe5b6020026020010151888861207a88868151811061206357fe5b60200260200101518a6117c690919063ffffffff16565b611551565b600101612034565b5050505050505050565b6060637996a27160e01b8260405160240161027291906135de565b6000806120bf848263ffffffff6107d916565b905060006120d3848263ffffffff6107d916565b90507ff47261b0000000000000000000000000000000000000000000000000000000007fdc1600f3000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000841682148061216b57507fffffffff00000000000000000000000000000000000000000000000000000000848116908216145b80156121c957507fffffffff0000000000000000000000000000000000000000000000000000000083811690831614806121c957507fffffffff00000000000000000000000000000000000000000000000000000000838116908216145b156122345760006121e188601063ffffffff61088916565b905060006121f688601063ffffffff61088916565b90508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149650505050505050610829565b612244878763ffffffff6124a516565b945050505050610829565b5050505092915050565b61226161299f565b61226a846117f7565b156122815761227a8484846124ca565b9050611475565b61228c84848461271e565b949350505050565b600061228c836122be6122ae82600163ffffffff610df516565b610d07888763ffffffff6117c616565b9063ffffffff61288b16565b60606331360af160e01b82604051602401610272919061360b565b60008160200183511015612306576123066100f260058551856020016113d6565b50016020015190565b6040516060907fa9059cbb000000000000000000000000000000000000000000000000000000009061090190859085906024016135b8565b6040516060907f23b872dd000000000000000000000000000000000000000000000000000000009061238190869086908690602401613587565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050611785858261147c565b606063baffa47460e01b8260405160240161027291906138a9565b60608183111561243e5761243e6100f2600085856113d6565b8351821115612457576124576100f260018487516113d6565b8282036040519080825280601f01601f191660200182016040528015612484576020820181803883390190505b509050611475612493826128b5565b8461249d876128b5565b0183516128bb565b6000815183511480156114755750508051602091820120825192909101919091201490565b6124d261299f565b6124da6129ce565b604051806101800160405280866000015173ffffffffffffffffffffffffffffffffffffffff168152602001866020015173ffffffffffffffffffffffffffffffffffffffff168152602001866040015173ffffffffffffffffffffffffffffffffffffffff168152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152602001866080015181526020018660a001518152602001600081526020016000815260200186610100015181526020018661012001518152602001866101400151815260200186610160015181525090506060600073ffffffffffffffffffffffffffffffffffffffff1663b4be83d5905060e01b8286866040516024016125ed9392919061364e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252600454915190925073ffffffffffffffffffffffffffffffffffffffff90911690600090606090839061269e9086906134b9565b6000604051808303816000865af19150503d80600081146126db576040519150601f19603f3d011682016040523d82523d6000602084013e6126e0565b606091505b509150915081156127125780516080146126f657fe5b8080602001905161270a91908101906133f7565b602088015286525b50505050509392505050565b61272661299f565b6040516060907f9b44d55600000000000000000000000000000000000000000000000000000000906127609087908790879060240161376e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252600354915190925073ffffffffffffffffffffffffffffffffffffffff9091169060009060609083906128119086906134b9565b6000604051808303816000865af19150503d806000811461284e576040519150601f19603f3d011682016040523d82523d6000602084013e612853565b606091505b5091509150811561288057805160a01461286957fe5b8080602001905161287d919081019061338e565b94505b505050509392505050565b6000816128a1576128a16100f260038585611bf6565b60008284816128ac57fe5b04949350505050565b60200190565b60208110156128e5576001816020036101000a038019835116818551168082178652505050610539565b828214156128f257610539565b8282111561292c5760208103905080820181840181515b82851015612924578451865260209586019590940193612909565b905250610539565b60208103905080820181840183515b8186121561297557825182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0928301929091019061293b565b85525050505050565b60405180606001604052806000815260200160008152602001600081525090565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b604051806101800160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160608152602001606081525090565b803561082981613975565b600082601f830112612aa2578081fd5b8135612ab5612ab0826138e7565b6138c0565b818152915060208083019084810181840286018201871015612ad657600080fd5b60005b84811015612afe578135612aec81613975565b84529282019290820190600101612ad9565b505050505092915050565b600082601f830112612b19578081fd5b8135612b27612ab0826138e7565b8181529150602080830190840160005b8381101561224f57612b4f8760208435890101612e66565b83526020928301929190910190600101612b37565b600082601f830112612b74578081fd5b8135612b82612ab0826138e7565b818152915060208083019084810160005b84811015612afe57813587016101c0807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0838c03011215612bd357600080fd5b612bdc816138c0565b612be88b878501612a87565b8152612bf78b60408501612a87565b86820152612c088b60608501612a87565b6040820152612c1a8b60808501612a87565b606082015260a0830135608082015260c083013560a082015260e083013560c08201526101008084013560e0830152610120808501358284015261014091508185013581840152506101608085013567ffffffffffffffff80821115612c7f57600080fd5b612c8d8f8b848a0101612e66565b84860152610180935083870135915080821115612ca957600080fd5b612cb78f8b848a0101612e66565b838601526101a0925082870135915080821115612cd357600080fd5b612ce18f8b848a0101612e66565b8486015285870135935080841115612cf857600080fd5b5050612d088d8984880101612e66565b9083015250865250509282019290820190600101612b93565b60008083601f840112612d32578182fd5b50813567ffffffffffffffff811115612d49578182fd5b6020830191508360208083028501011115612d6357600080fd5b9250929050565b600082601f830112612d7a578081fd5b8151612d88612ab0826138e7565b818152915060208083019084810181840286018201871015612da957600080fd5b60005b84811015612afe57815184529282019290820190600101612dac565b600082601f830112612dd8578081fd5b8135612de6612ab0826138e7565b818152915060208083019084810181840286018201871015612e0757600080fd5b60005b84811015612afe57813584529282019290820190600101612e0a565b60008083601f840112612e37578182fd5b50813567ffffffffffffffff811115612e4e578182fd5b602083019150836020828501011115612d6357600080fd5b600082601f830112612e76578081fd5b8135612e84612ab082613907565b9150808252836020828501011115612e9b57600080fd5b8060208401602084013760009082016020015292915050565b600082601f830112612ec4578081fd5b8151612ed2612ab082613907565b9150808252836020828501011115612ee957600080fd5b612efa816020840160208601613949565b5092915050565b600060208284031215612f12578081fd5b813561147581613975565b600060208284031215612f2e578081fd5b815161147581613975565b60008060008060808587031215612f4e578283fd5b8451612f5981613975565b602086015190945067ffffffffffffffff80821115612f76578485fd5b612f8288838901612d6a565b94506040870151915080821115612f97578384fd5b612fa388838901612d6a565b93506060870151915080821115612fb8578283fd5b50612fc587828801612eb4565b91505092959194509250565b60008060008060008060008060a0898b031215612fec578586fd5b8835612ff781613975565b9750602089013561300781613975565b9650604089013567ffffffffffffffff80821115613023578788fd5b61302f8c838d01612d21565b909850965060608b0135915080821115613047578586fd5b6130538c838d01612d21565b909650945060808b013591508082111561306b578384fd5b506130788b828c01612e26565b999c989b5096995094979396929594505050565b60008060008060008060a087890312156130a4578384fd5b86356130af81613975565b955060208701356130bf81613975565b94506040870135935060608701359250608087013567ffffffffffffffff8111156130e8578283fd5b6130f489828a01612e26565b979a9699509497509295939492505050565b6000806000806080858703121561311b578182fd5b843567ffffffffffffffff80821115613132578384fd5b61313e88838901612b64565b95506020870135915080821115613153578384fd5b61315f88838901612b09565b94506040870135915080821115613174578384fd5b61318088838901612dc8565b93506060870135915080821115613195578283fd5b50612fc587828801612a92565b600080600080600060a086880312156131b9578283fd5b853567ffffffffffffffff808211156131d0578485fd5b6131dc89838a01612b64565b96506020880135955060408801359150808211156131f8578485fd5b61320489838a01612b09565b94506060880135915080821115613219578283fd5b61322589838a01612dc8565b9350608088013591508082111561323a578283fd5b5061324788828901612a92565b9150509295509295909350565b60008060408385031215613266578182fd5b825167ffffffffffffffff8082111561327d578384fd5b61328986838701612d6a565b935060209150818501518181111561329f578384fd5b85019050601f810186136132b1578283fd5b80516132bf612ab0826138e7565b81815283810190838501865b848110156132f4576132e28b888451890101612eb4565b845292860192908601906001016132cb565b5096999098509650505050505050565b60008060208385031215613316578182fd5b823567ffffffffffffffff81111561332c578283fd5b61333885828601612e26565b90969095509350505050565b600080600060408486031215613358578081fd5b833567ffffffffffffffff81111561336e578182fd5b61337a86828701612e26565b909790965060209590950135949350505050565b600060a0828403121561339f578081fd5b6133a960a06138c0565b82518152602083015160208201526040830151604082015260608301516060820152608083015160808201528091505092915050565b6000602082840312156133f0578081fd5b5051919050565b60008060408385031215613409578182fd5b505080516020909101519092909150565b73ffffffffffffffffffffffffffffffffffffffff169052565b6000815180845260208401935060208301825b82811015613465578151865260209586019590910190600101613447565b5093949350505050565b60008151808452613487816020860160208601613949565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600082516134cb818460208701613949565b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525060a0604083015261355660a0830186613434565b82810360608401526135688186613434565b838103608085015261357a818661346f565b9998505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b600060208252611475602083018461346f565b606081016004851061362c57fe5b938152602081019290925260409091015290565b606081016008851061362c57fe5b60006060825261366260608301865161341a565b6020850151613674608084018261341a565b50604085015161368760a084018261341a565b50606085015161369a60c084018261341a565b50608085015160e083015260a0850151610100818185015260c08701519150610120828186015260e088015192506101408381870152828901519350610160925083838701528189015193506101809150838287015280890151935050806101a08601525061370d6101e085018361346f565b8188015192507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0858203016101c0860152613748818461346f565b9150508560208501528381036040850152613763818661346f565b979650505050505050565b60006060825261378260608301865161341a565b6020850151613794608084018261341a565b5060408501516137a760a084018261341a565b5060608501516137ba60c084018261341a565b50608085015160e083015260a0850151610100818185015260c08701519150610120828186015260e0880151925061014083818701528289015193506101609250838387015281890151935061018091508382870152808901519350506101c06101a0818188015261383061022088018661346f565b848b015195507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0945084888203018389015261386c818761346f565b925050828a0151945083878303016101e088015261388a828661346f565b9250808a0151945050508185820301610200860152613748818461346f565b90815260200190565b918252602082015260400190565b60405181810167ffffffffffffffff811182821017156138df57600080fd5b604052919050565b600067ffffffffffffffff8211156138fd578081fd5b5060209081020190565b600067ffffffffffffffff82111561391d578081fd5b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b8381101561396457818101518382015260200161394c565b838111156104e25750506000910152565b73ffffffffffffffffffffffffffffffffffffffff811681146107b257600080fdfea365627a7a72315820a628a0297c881ef29bae0d4528faebedc5b2db8fd6c1645204fa4d37effc54326c6578706572696d656e74616cf564736f6c63430005110040" }, "deployedBytecode": { - "object": "0x6080604052600436106100c75760003560e01c8063bc197c8111610074578063f23a6e611161004e578063f23a6e6114610202578063f2fde38b14610222578063fc67bf1c14610242576100c7565b8063bc197c81146101ab578063e0a5c949146101d8578063e196001b146101ed576100c7565b8063907e5cc3116100a5578063907e5cc314610164578063939ce6ba146101855780639e83231514610198576100c7565b8063442026ed146100f9578063630f1e6c146101195780638da5cb5b14610139575b60015473ffffffffffffffffffffffffffffffffffffffff1633146100f7576100f76100f233610257565b6102f6565b005b34801561010557600080fd5b506100f7610114366004613304565b6102fe565b34801561012557600080fd5b506100f7610134366004613344565b6104e8565b34801561014557600080fd5b5061014e61053e565b60405161015b91906134d5565b60405180910390f35b610177610172366004613106565b61055a565b60405161015b9291906138b2565b6101776101933660046131a2565b6105b5565b6101776101a63660046131a2565b61063b565b3480156101b757600080fd5b506101cb6101c6366004612fd1565b610671565b60405161015b91906135de565b3480156101e457600080fd5b506101cb61069e565b3480156101f957600080fd5b506101cb6106c2565b34801561020e57600080fd5b506101cb61021d36600461308c565b6106e6565b34801561022e57600080fd5b506100f761023d366004612f01565b610711565b34801561024e57600080fd5b506101cb6107b5565b60606308b1869860e01b8260405160240161027291906134d5565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050919050565b805160208201fd5b600061034a600084848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff6107d9169050565b90507ff47261b0000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000082168114156104e2576003546040517f6070410800000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff16906360704108906103ee9085906004016135de565b60206040518083038186803b15801561040657600080fd5b505afa15801561041a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061043e9190810190612f1d565b905073ffffffffffffffffffffffffffffffffffffffff8116610466576104666100f261082f565b60006104b2601087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff610889169050565b90506104df81837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6108c9565b50505b50505050565b6104f061098a565b6105398184848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff6109d3169050565b505050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b600080600061056985856109e9565b9050610576878288610b3f565b909350915080831115610590576105906100f28434610d53565b6105a0818463ffffffff610df516565b90506105ab81610e14565b5094509492505050565b600080348611156105cd576105cd6100f28734610ecf565b60006105d985856109e9565b9050868110156105f0576105f06100f28289610d53565b6105fb888888610eec565b909350915086831015610615576106156100f28885610ecf565b610625818463ffffffff610df516565b905061063081610e14565b509550959350505050565b600080600061064a85856109e9565b905061065788888861100d565b909350915080831115610615576106156100f28434610d53565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b7ff23a6e610000000000000000000000000000000000000000000000000000000081565b7f770501f80000000000000000000000000000000000000000000000000000000081565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b61071961098a565b73ffffffffffffffffffffffffffffffffffffffff81166107445761073f6100f261139f565b6107b2565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35b50565b7fbc197c810000000000000000000000000000000000000000000000000000000081565b600081600401835110156107fa576107fa6100f260038551856004016113d6565b5060208183018101519101907fffffffff00000000000000000000000000000000000000000000000000000000165b92915050565b6040805160048152602481019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff3b96b8d0000000000000000000000000000000000000000000000000000000017905290565b600081601401835110156108aa576108aa6100f260048551856014016113d6565b50016014015173ffffffffffffffffffffffffffffffffffffffff1690565b6040516060907f095ea7b3000000000000000000000000000000000000000000000000000000009061090190859085906024016135b8565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290506104e2848261147c565b60005473ffffffffffffffffffffffffffffffffffffffff1633146109d1576000546109d1906100f290339073ffffffffffffffffffffffffffffffffffffffff16611534565b565b6109e58230338463ffffffff61155116565b5050565b81518151600091908114610a0557610a056100f282855161178c565b34915060005b818114610ab4576000858281518110610a2057fe5b6020026020010151905080841015610a3f57610a3f6100f282866117a9565b610a4f848263ffffffff610df516565b9350848281518110610a5d57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610aaa573d6000803e3d6000fd5b5050600101610a0b565b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b158015610b1f57600080fd5b505af1158015610b33573d6000803e3d6000fd5b50505050505092915050565b6000806000610bf4600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631ce4c78b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610baf57600080fd5b505afa158015610bc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610be791908101906133df565b3a9063ffffffff6117c616565b905060005b86518114610d4957868181518110610c0d57fe5b60200260200101516080015160001480610c3e5750868181518110610c2e57fe5b602002602001015160a001516000145b15610c4857610d41565b6000610c5a878663ffffffff610df516565b90506000610c7a898481518110610c6d57fe5b60200260200101516117f7565b610c845783610c87565b60005b905080821115610ca857610ca1828263ffffffff610df516565b9150610caf565b5050610d49565b610cb761297e565b610ce88a8581518110610cc657fe5b6020026020010151898681518110610cda57fe5b60200260200101518561186c565b60408101518151919250610d1391610d07908a9063ffffffff611bde16565b9063ffffffff611bde16565b9650610d2c816020015187611bde90919063ffffffff16565b9550888710610d3d57505050610d49565b5050505b600101610bf9565b5050935093915050565b606063cdcbed5d60e01b8383604051602401610d709291906138b2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905092915050565b600082821115610e0e57610e0e6100f260028585611bf6565b50900390565b80156107b2576001546040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690632e1a7d4d90610e709084906004016138a9565b600060405180830381600087803b158015610e8a57600080fd5b505af1158015610e9e573d6000803e3d6000fd5b505060405133925083156108fc02915083906000818181858888f193505050501580156109e5573d6000803e3d6000fd5b606063450a021960e01b8383604051602401610d709291906138b2565b60008080805b86518114610ff157868181518110610f0657fe5b60200260200101516080015160001480610f375750868181518110610f2757fe5b602002602001015160a001516000145b15610f4157610fe9565b6000610f53878663ffffffff610df516565b9050610f5d61297e565b610f8e898481518110610f6c57fe5b6020026020010151888581518110610f8057fe5b60200260200101518461186c565b8051909150610fa490879063ffffffff611bde16565b9550610fbd816020015186611bde90919063ffffffff16565b9450610fd6816040015185611bde90919063ffffffff16565b9350878610610fe6575050610ff1565b50505b600101610ef2565b50611002838263ffffffff611bde16565b925050935093915050565b82516000908190815b8181146113805786818151811061102957fe5b6020026020010151608001516000148061105a575086818151811061104a57fe5b602002602001015160a001516000145b1561106457611378565b6000611076878563ffffffff610df516565b905060006110a660008a858151811061108b57fe5b602002602001015161014001516107d990919063ffffffff16565b90506000807fffffffff0000000000000000000000000000000000000000000000000000000083167fdc1600f30000000000000000000000000000000000000000000000000000000014156111c95761112160108c878151811061110657fe5b6020026020010151610140015161088990919063ffffffff16565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815290925073ffffffffffffffffffffffffffffffffffffffff8316906370a08231906111769030906004016134d5565b60206040518083038186803b15801561118e57600080fd5b505afa1580156111a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111c691908101906133df565b90505b6000806111fd8d88815181106111db57fe5b60200260200101518c89815181106111ef57fe5b602002602001015188611c15565b90925090507fffffffff0000000000000000000000000000000000000000000000000000000085167fdc1600f3000000000000000000000000000000000000000000000000000000001415611310576040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8616906370a08231906112a19030906004016134d5565b60206040518083038186803b1580156112b957600080fd5b505afa1580156112cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506112f191908101906133df565b905061130c611306828663ffffffff610df516565b83611d4e565b9150505b61133b818e898151811061132057fe5b602002602001015161014001516109d390919063ffffffff16565b61134b8a8363ffffffff611bde16565b995061135d898263ffffffff611bde16565b98508b891061137157505050505050611380565b5050505050505b600101611016565b5084821015611396576113966100f28684611d65565b50935093915050565b60408051808201909152600481527fe69edc3e00000000000000000000000000000000000000000000000000000000602082015290565b6060632800659560e01b8484846040516024016113f593929190613640565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290505b9392505050565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040516114a591906134b9565b6000604051808303816000865af19150503d80600081146114e2576040519150601f19603f3d011682016040523d82523d6000602084013e6114e7565b606091505b5091509150811561152b5780516114ff5750506109e5565b80516020141561152b576000611516826000611d82565b90508060011415611529575050506109e5565b505b6104e2816102f6565b6060631de45ad160e01b8383604051602401610d709291906134f6565b8061155b576104e2565b600061156d858263ffffffff6107d916565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167ff47261b000000000000000000000000000000000000000000000000000000000148061160057507fffffffff0000000000000000000000000000000000000000000000000000000081167fdc1600f300000000000000000000000000000000000000000000000000000000145b1561161c576116178585858563ffffffff611d8e16565b611785565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f02571792000000000000000000000000000000000000000000000000000000001415611678576116178585858563ffffffff611dd816565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fa7cb5fb70000000000000000000000000000000000000000000000000000000014156116d4576116178585858563ffffffff611ea716565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f94cfcdd7000000000000000000000000000000000000000000000000000000001415611730576116178585858563ffffffff611ffd16565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fc339d10a0000000000000000000000000000000000000000000000000000000014611785576117856100f282612091565b5050505050565b6060633ecb6ceb60e01b8383604051602401610d709291906138b2565b606063ecf40fd960e01b8383604051602401610d709291906138b2565b6000826117d557506000610829565b828202828482816117e257fe5b0414611475576114756100f260018686611bf6565b600060038261018001515111801561082957506101808201517f770501f8000000000000000000000000000000000000000000000000000000009061184390600063ffffffff6107d916565b7fffffffff00000000000000000000000000000000000000000000000000000000161492915050565b61187461297e565b61014084015160009061188d908263ffffffff6107d916565b90506000807fffffffff0000000000000000000000000000000000000000000000000000000083167fdc1600f300000000000000000000000000000000000000000000000000000000141561199b576101408701516118f390601063ffffffff61088916565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815290925073ffffffffffffffffffffffffffffffffffffffff8316906370a08231906119489030906004016134d5565b60206040518083038186803b15801561196057600080fd5b505afa158015611974573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061199891908101906133df565b90505b60e087015115806119bb57506119bb876101a001518861014001516120ac565b15611a09576119c861299f565b6119d3888789612259565b6020810151865260808101516040870152606081015181519192506119fe919063ffffffff610df516565b602086015250611aa5565b611a1d876101a001518861016001516120ac565b15611a945760a087015160e0880151600091611a4a91611a4490829063ffffffff611bde16565b88612294565b9050611a5461299f565b611a5f89838a612259565b9050611a7c81606001518260200151611bde90919063ffffffff16565b86528051602087015260800151604086015250611aa5565b611aa56100f2886101a001516122ca565b7fffffffff0000000000000000000000000000000000000000000000000000000083167fdc1600f3000000000000000000000000000000000000000000000000000000001415611bba576040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190611b449030906004016134d5565b60206040518083038186803b158015611b5c57600080fd5b505afa158015611b70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b9491908101906133df565b9050611bb3611ba9828463ffffffff610df516565b8660200151611d4e565b6020860152505b6020840151610140880151611bd49163ffffffff6109d316565b5050509392505050565b600082820183811015611475576114756100f2600086865b606063e946c1bb60e01b8484846040516024016113f59392919061361e565b6000808460e0015160001480611c3a5750611c3a856101a001518661016001516120ac565b15611c9c576000611c548660a00151876080015186612294565b9050611c5e61299f565b611c69878388612259565b9050611c8e8160800151610d0783606001518460200151611bde90919063ffffffff16565b90519093509150611d469050565b611cb0856101a001518661014001516120ac565b15611d35576000611ce08660a00151611cda8860e001518960800151610df590919063ffffffff16565b86612294565b9050611cea61299f565b611cf5878388612259565b9050611d1281608001518260200151611bde90919063ffffffff16565b60608201518251919550611d2c919063ffffffff610df516565b92505050611d46565b611d466100f2866101a001516122ca565b935093915050565b600081831015611d5e5781611475565b5090919050565b60606391353a0c60e01b8383604051602401610d709291906138b2565b600061147583836122e5565b6000611da185601063ffffffff61088916565b905073ffffffffffffffffffffffffffffffffffffffff8416301415611dcc5761161781848461230f565b61178581858585612347565b80600114611dec57611dec6100f28261240a565b6000611dff85601063ffffffff61088916565b90506000611e1486602463ffffffff611d8216565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd90611e6d90889088908690600401613587565b600060405180830381600087803b158015611e8757600080fd5b505af1158015611e9b573d6000803e3d6000fd5b50505050505050505050565b60006060806060611ec5600489518a6124259092919063ffffffff16565b806020019051611ed89190810190612f39565b9350935093509350600082519050606081604051908082528060200260200182016040528015611f12578160200160208202803883390190505b50905060005b828114611f6457611f4588868381518110611f2f57fe5b60200260200101516117c690919063ffffffff16565b828281518110611f5157fe5b6020908102919091010152600101611f18565b506040517f2eb2c2d600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871690632eb2c2d690611fbf908c908c908a9087908a9060040161351d565b600060405180830381600087803b158015611fd957600080fd5b505af1158015611fed573d6000803e3d6000fd5b5050505050505050505050505050565b60608061201760048751886124259092919063ffffffff16565b80602001905161202a9190810190613254565b8051919350915060005b8181146120875761207f83828151811061204a57fe5b6020026020010151888861207a88868151811061206357fe5b60200260200101518a6117c690919063ffffffff16565b611551565b600101612034565b5050505050505050565b6060637996a27160e01b8260405160240161027291906135de565b6000806120bf848263ffffffff6107d916565b905060006120d3848263ffffffff6107d916565b90507ff47261b0000000000000000000000000000000000000000000000000000000007fdc1600f3000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000841682148061216b57507fffffffff00000000000000000000000000000000000000000000000000000000848116908216145b80156121c957507fffffffff0000000000000000000000000000000000000000000000000000000083811690831614806121c957507fffffffff00000000000000000000000000000000000000000000000000000000838116908216145b156122345760006121e188601063ffffffff61088916565b905060006121f688601063ffffffff61088916565b90508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149650505050505050610829565b612244878763ffffffff6124a516565b945050505050610829565b5050505092915050565b61226161299f565b61226a846117f7565b156122815761227a8484846124ca565b9050611475565b61228c84848461271e565b949350505050565b600061228c836122be6122ae82600163ffffffff610df516565b610d07888763ffffffff6117c616565b9063ffffffff61288b16565b60606331360af160e01b82604051602401610272919061360b565b60008160200183511015612306576123066100f260058551856020016113d6565b50016020015190565b6040516060907fa9059cbb000000000000000000000000000000000000000000000000000000009061090190859085906024016135b8565b6040516060907f23b872dd000000000000000000000000000000000000000000000000000000009061238190869086908690602401613587565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050611785858261147c565b606063baffa47460e01b8260405160240161027291906138a9565b60608183111561243e5761243e6100f2600085856113d6565b8351821115612457576124576100f260018487516113d6565b8282036040519080825280601f01601f191660200182016040528015612484576020820181803883390190505b509050611475612493826128b5565b8461249d876128b5565b0183516128bb565b6000815183511480156114755750508051602091820120825192909101919091201490565b6124d261299f565b6124da6129ce565b604051806101800160405280866000015173ffffffffffffffffffffffffffffffffffffffff168152602001866020015173ffffffffffffffffffffffffffffffffffffffff168152602001866040015173ffffffffffffffffffffffffffffffffffffffff168152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152602001866080015181526020018660a001518152602001600081526020016000815260200186610100015181526020018661012001518152602001866101400151815260200186610160015181525090506060600073ffffffffffffffffffffffffffffffffffffffff1663b4be83d5905060e01b8286866040516024016125ed9392919061364e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252600454915190925073ffffffffffffffffffffffffffffffffffffffff90911690600090606090839061269e9086906134b9565b6000604051808303816000865af19150503d80600081146126db576040519150601f19603f3d011682016040523d82523d6000602084013e6126e0565b606091505b509150915081156127125780516080146126f657fe5b8080602001905161270a91908101906133f7565b602088015286525b50505050509392505050565b61272661299f565b6040516060907f9b44d55600000000000000000000000000000000000000000000000000000000906127609087908790879060240161376e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252600354915190925073ffffffffffffffffffffffffffffffffffffffff9091169060009060609083906128119086906134b9565b6000604051808303816000865af19150503d806000811461284e576040519150601f19603f3d011682016040523d82523d6000602084013e612853565b606091505b5091509150811561288057805160a01461286957fe5b8080602001905161287d919081019061338e565b94505b505050509392505050565b6000816128a1576128a16100f260038585611bf6565b60008284816128ac57fe5b04949350505050565b60200190565b60208110156128e5576001816020036101000a038019835116818551168082178652505050610539565b828214156128f257610539565b8282111561292c5760208103905080820181840181515b82851015612924578451865260209586019590940193612909565b905250610539565b60208103905080820181840183515b8186121561297557825182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0928301929091019061293b565b85525050505050565b60405180606001604052806000815260200160008152602001600081525090565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b604051806101800160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160608152602001606081525090565b803561082981613975565b600082601f830112612aa2578081fd5b8135612ab5612ab0826138e7565b6138c0565b818152915060208083019084810181840286018201871015612ad657600080fd5b60005b84811015612afe578135612aec81613975565b84529282019290820190600101612ad9565b505050505092915050565b600082601f830112612b19578081fd5b8135612b27612ab0826138e7565b8181529150602080830190840160005b8381101561224f57612b4f8760208435890101612e66565b83526020928301929190910190600101612b37565b600082601f830112612b74578081fd5b8135612b82612ab0826138e7565b818152915060208083019084810160005b84811015612afe57813587016101c0807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0838c03011215612bd357600080fd5b612bdc816138c0565b612be88b878501612a87565b8152612bf78b60408501612a87565b86820152612c088b60608501612a87565b6040820152612c1a8b60808501612a87565b606082015260a0830135608082015260c083013560a082015260e083013560c08201526101008084013560e0830152610120808501358284015261014091508185013581840152506101608085013567ffffffffffffffff80821115612c7f57600080fd5b612c8d8f8b848a0101612e66565b84860152610180935083870135915080821115612ca957600080fd5b612cb78f8b848a0101612e66565b838601526101a0925082870135915080821115612cd357600080fd5b612ce18f8b848a0101612e66565b8486015285870135935080841115612cf857600080fd5b5050612d088d8984880101612e66565b9083015250865250509282019290820190600101612b93565b60008083601f840112612d32578182fd5b50813567ffffffffffffffff811115612d49578182fd5b6020830191508360208083028501011115612d6357600080fd5b9250929050565b600082601f830112612d7a578081fd5b8151612d88612ab0826138e7565b818152915060208083019084810181840286018201871015612da957600080fd5b60005b84811015612afe57815184529282019290820190600101612dac565b600082601f830112612dd8578081fd5b8135612de6612ab0826138e7565b818152915060208083019084810181840286018201871015612e0757600080fd5b60005b84811015612afe57813584529282019290820190600101612e0a565b60008083601f840112612e37578182fd5b50813567ffffffffffffffff811115612e4e578182fd5b602083019150836020828501011115612d6357600080fd5b600082601f830112612e76578081fd5b8135612e84612ab082613907565b9150808252836020828501011115612e9b57600080fd5b8060208401602084013760009082016020015292915050565b600082601f830112612ec4578081fd5b8151612ed2612ab082613907565b9150808252836020828501011115612ee957600080fd5b612efa816020840160208601613949565b5092915050565b600060208284031215612f12578081fd5b813561147581613975565b600060208284031215612f2e578081fd5b815161147581613975565b60008060008060808587031215612f4e578283fd5b8451612f5981613975565b602086015190945067ffffffffffffffff80821115612f76578485fd5b612f8288838901612d6a565b94506040870151915080821115612f97578384fd5b612fa388838901612d6a565b93506060870151915080821115612fb8578283fd5b50612fc587828801612eb4565b91505092959194509250565b60008060008060008060008060a0898b031215612fec578586fd5b8835612ff781613975565b9750602089013561300781613975565b9650604089013567ffffffffffffffff80821115613023578788fd5b61302f8c838d01612d21565b909850965060608b0135915080821115613047578586fd5b6130538c838d01612d21565b909650945060808b013591508082111561306b578384fd5b506130788b828c01612e26565b999c989b5096995094979396929594505050565b60008060008060008060a087890312156130a4578384fd5b86356130af81613975565b955060208701356130bf81613975565b94506040870135935060608701359250608087013567ffffffffffffffff8111156130e8578283fd5b6130f489828a01612e26565b979a9699509497509295939492505050565b6000806000806080858703121561311b578182fd5b843567ffffffffffffffff80821115613132578384fd5b61313e88838901612b64565b95506020870135915080821115613153578384fd5b61315f88838901612b09565b94506040870135915080821115613174578384fd5b61318088838901612dc8565b93506060870135915080821115613195578283fd5b50612fc587828801612a92565b600080600080600060a086880312156131b9578283fd5b853567ffffffffffffffff808211156131d0578485fd5b6131dc89838a01612b64565b96506020880135955060408801359150808211156131f8578485fd5b61320489838a01612b09565b94506060880135915080821115613219578283fd5b61322589838a01612dc8565b9350608088013591508082111561323a578283fd5b5061324788828901612a92565b9150509295509295909350565b60008060408385031215613266578182fd5b825167ffffffffffffffff8082111561327d578384fd5b61328986838701612d6a565b935060209150818501518181111561329f578384fd5b85019050601f810186136132b1578283fd5b80516132bf612ab0826138e7565b81815283810190838501865b848110156132f4576132e28b888451890101612eb4565b845292860192908601906001016132cb565b5096999098509650505050505050565b60008060208385031215613316578182fd5b823567ffffffffffffffff81111561332c578283fd5b61333885828601612e26565b90969095509350505050565b600080600060408486031215613358578081fd5b833567ffffffffffffffff81111561336e578182fd5b61337a86828701612e26565b909790965060209590950135949350505050565b600060a0828403121561339f578081fd5b6133a960a06138c0565b82518152602083015160208201526040830151604082015260608301516060820152608083015160808201528091505092915050565b6000602082840312156133f0578081fd5b5051919050565b60008060408385031215613409578182fd5b505080516020909101519092909150565b73ffffffffffffffffffffffffffffffffffffffff169052565b6000815180845260208401935060208301825b82811015613465578151865260209586019590910190600101613447565b5093949350505050565b60008151808452613487816020860160208601613949565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600082516134cb818460208701613949565b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525060a0604083015261355660a0830186613434565b82810360608401526135688186613434565b838103608085015261357a818661346f565b9998505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b600060208252611475602083018461346f565b606081016004851061362c57fe5b938152602081019290925260409091015290565b606081016008851061362c57fe5b60006060825261366260608301865161341a565b6020850151613674608084018261341a565b50604085015161368760a084018261341a565b50606085015161369a60c084018261341a565b50608085015160e083015260a0850151610100818185015260c08701519150610120828186015260e088015192506101408381870152828901519350610160925083838701528189015193506101809150838287015280890151935050806101a08601525061370d6101e085018361346f565b8188015192507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0858203016101c0860152613748818461346f565b9150508560208501528381036040850152613763818661346f565b979650505050505050565b60006060825261378260608301865161341a565b6020850151613794608084018261341a565b5060408501516137a760a084018261341a565b5060608501516137ba60c084018261341a565b50608085015160e083015260a0850151610100818185015260c08701519150610120828186015260e0880151925061014083818701528289015193506101609250838387015281890151935061018091508382870152808901519350506101c06101a0818188015261383061022088018661346f565b848b015195507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0945084888203018389015261386c818761346f565b925050828a0151945083878303016101e088015261388a828661346f565b9250808a0151945050508185820301610200860152613748818461346f565b90815260200190565b918252602082015260400190565b60405181810167ffffffffffffffff811182821017156138df57600080fd5b604052919050565b600067ffffffffffffffff8211156138fd578081fd5b5060209081020190565b600067ffffffffffffffff82111561391d578081fd5b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b8381101561396457818101518382015260200161394c565b838111156104e25750506000910152565b73ffffffffffffffffffffffffffffffffffffffff811681146107b257600080fdfea365627a7a72315820efa457c9b812317d74459754abece7470f3cb0627eec998020620a2962c52b566c6578706572696d656e74616cf564736f6c63430005110040" + "object": "0x6080604052600436106100c75760003560e01c8063bc197c8111610074578063f23a6e611161004e578063f23a6e6114610202578063f2fde38b14610222578063fc67bf1c14610242576100c7565b8063bc197c81146101ab578063e0a5c949146101d8578063e196001b146101ed576100c7565b8063907e5cc3116100a5578063907e5cc314610164578063939ce6ba146101855780639e83231514610198576100c7565b8063442026ed146100f9578063630f1e6c146101195780638da5cb5b14610139575b60015473ffffffffffffffffffffffffffffffffffffffff1633146100f7576100f76100f233610257565b6102f6565b005b34801561010557600080fd5b506100f7610114366004613304565b6102fe565b34801561012557600080fd5b506100f7610134366004613344565b6104e8565b34801561014557600080fd5b5061014e61053e565b60405161015b91906134d5565b60405180910390f35b610177610172366004613106565b61055a565b60405161015b9291906138b2565b6101776101933660046131a2565b6105b5565b6101776101a63660046131a2565b61063b565b3480156101b757600080fd5b506101cb6101c6366004612fd1565b610671565b60405161015b91906135de565b3480156101e457600080fd5b506101cb61069e565b3480156101f957600080fd5b506101cb6106c2565b34801561020e57600080fd5b506101cb61021d36600461308c565b6106e6565b34801561022e57600080fd5b506100f761023d366004612f01565b610711565b34801561024e57600080fd5b506101cb6107b5565b60606308b1869860e01b8260405160240161027291906134d5565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050919050565b805160208201fd5b600061034a600084848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff6107d9169050565b90507ff47261b0000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000082168114156104e2576003546040517f6070410800000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff16906360704108906103ee9085906004016135de565b60206040518083038186803b15801561040657600080fd5b505afa15801561041a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061043e9190810190612f1d565b905073ffffffffffffffffffffffffffffffffffffffff8116610466576104666100f261082f565b60006104b2601087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff610889169050565b90506104df81837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6108c9565b50505b50505050565b6104f061098a565b6105398184848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff6109d3169050565b505050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b600080600061056985856109e9565b9050610576878288610b3f565b909350915080831115610590576105906100f28434610d53565b6105a0818463ffffffff610df516565b90506105ab81610e14565b5094509492505050565b600080348611156105cd576105cd6100f28734610ecf565b60006105d985856109e9565b9050868110156105f0576105f06100f28289610d53565b6105fb888888610eec565b909350915086831015610615576106156100f28885610ecf565b610625818463ffffffff610df516565b905061063081610e14565b509550959350505050565b600080600061064a85856109e9565b905061065788888861100d565b909350915080831115610615576106156100f28434610d53565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b7ff23a6e610000000000000000000000000000000000000000000000000000000081565b7f770501f80000000000000000000000000000000000000000000000000000000081565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b61071961098a565b73ffffffffffffffffffffffffffffffffffffffff81166107445761073f6100f261139f565b6107b2565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35b50565b7fbc197c810000000000000000000000000000000000000000000000000000000081565b600081600401835110156107fa576107fa6100f260038551856004016113d6565b5060208183018101519101907fffffffff00000000000000000000000000000000000000000000000000000000165b92915050565b6040805160048152602481019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff3b96b8d0000000000000000000000000000000000000000000000000000000017905290565b600081601401835110156108aa576108aa6100f260048551856014016113d6565b50016014015173ffffffffffffffffffffffffffffffffffffffff1690565b6040516060907f095ea7b3000000000000000000000000000000000000000000000000000000009061090190859085906024016135b8565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290506104e2848261147c565b60005473ffffffffffffffffffffffffffffffffffffffff1633146109d1576000546109d1906100f290339073ffffffffffffffffffffffffffffffffffffffff16611534565b565b6109e58230338463ffffffff61155116565b5050565b81518151600091908114610a0557610a056100f282855161178c565b34915060005b818114610ab4576000858281518110610a2057fe5b6020026020010151905080841015610a3f57610a3f6100f282866117a9565b610a4f848263ffffffff610df516565b9350848281518110610a5d57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610aaa573d6000803e3d6000fd5b5050600101610a0b565b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b158015610b1f57600080fd5b505af1158015610b33573d6000803e3d6000fd5b50505050505092915050565b6000806000610bf4600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631ce4c78b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610baf57600080fd5b505afa158015610bc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610be791908101906133df565b3a9063ffffffff6117c616565b905060005b86518114610d4957868181518110610c0d57fe5b60200260200101516080015160001480610c3e5750868181518110610c2e57fe5b602002602001015160a001516000145b15610c4857610d41565b6000610c5a878663ffffffff610df516565b90506000610c7a898481518110610c6d57fe5b60200260200101516117f7565b610c845783610c87565b60005b905080821115610ca857610ca1828263ffffffff610df516565b9150610caf565b5050610d49565b610cb761297e565b610ce88a8581518110610cc657fe5b6020026020010151898681518110610cda57fe5b60200260200101518561186c565b60408101518151919250610d1391610d07908a9063ffffffff611bde16565b9063ffffffff611bde16565b9650610d2c816020015187611bde90919063ffffffff16565b9550888710610d3d57505050610d49565b5050505b600101610bf9565b5050935093915050565b606063cdcbed5d60e01b8383604051602401610d709291906138b2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905092915050565b600082821115610e0e57610e0e6100f260028585611bf6565b50900390565b80156107b2576001546040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690632e1a7d4d90610e709084906004016138a9565b600060405180830381600087803b158015610e8a57600080fd5b505af1158015610e9e573d6000803e3d6000fd5b505060405133925083156108fc02915083906000818181858888f193505050501580156109e5573d6000803e3d6000fd5b606063450a021960e01b8383604051602401610d709291906138b2565b60008080805b86518114610ff157868181518110610f0657fe5b60200260200101516080015160001480610f375750868181518110610f2757fe5b602002602001015160a001516000145b15610f4157610fe9565b6000610f53878663ffffffff610df516565b9050610f5d61297e565b610f8e898481518110610f6c57fe5b6020026020010151888581518110610f8057fe5b60200260200101518461186c565b8051909150610fa490879063ffffffff611bde16565b9550610fbd816020015186611bde90919063ffffffff16565b9450610fd6816040015185611bde90919063ffffffff16565b9350878610610fe6575050610ff1565b50505b600101610ef2565b50611002838263ffffffff611bde16565b925050935093915050565b82516000908190815b8181146113805786818151811061102957fe5b6020026020010151608001516000148061105a575086818151811061104a57fe5b602002602001015160a001516000145b1561106457611378565b6000611076878563ffffffff610df516565b905060006110a660008a858151811061108b57fe5b602002602001015161014001516107d990919063ffffffff16565b90506000807fffffffff0000000000000000000000000000000000000000000000000000000083167fdc1600f30000000000000000000000000000000000000000000000000000000014156111c95761112160108c878151811061110657fe5b6020026020010151610140015161088990919063ffffffff16565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815290925073ffffffffffffffffffffffffffffffffffffffff8316906370a08231906111769030906004016134d5565b60206040518083038186803b15801561118e57600080fd5b505afa1580156111a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111c691908101906133df565b90505b6000806111fd8d88815181106111db57fe5b60200260200101518c89815181106111ef57fe5b602002602001015188611c15565b90925090507fffffffff0000000000000000000000000000000000000000000000000000000085167fdc1600f3000000000000000000000000000000000000000000000000000000001415611310576040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8616906370a08231906112a19030906004016134d5565b60206040518083038186803b1580156112b957600080fd5b505afa1580156112cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506112f191908101906133df565b905061130c611306828663ffffffff610df516565b83611d4e565b9150505b61133b818e898151811061132057fe5b602002602001015161014001516109d390919063ffffffff16565b61134b8a8363ffffffff611bde16565b995061135d898263ffffffff611bde16565b98508b891061137157505050505050611380565b5050505050505b600101611016565b5084821015611396576113966100f28684611d65565b50935093915050565b60408051808201909152600481527fe69edc3e00000000000000000000000000000000000000000000000000000000602082015290565b6060632800659560e01b8484846040516024016113f593929190613640565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290505b9392505050565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040516114a591906134b9565b6000604051808303816000865af19150503d80600081146114e2576040519150601f19603f3d011682016040523d82523d6000602084013e6114e7565b606091505b5091509150811561152b5780516114ff5750506109e5565b80516020141561152b576000611516826000611d82565b90508060011415611529575050506109e5565b505b6104e2816102f6565b6060631de45ad160e01b8383604051602401610d709291906134f6565b8061155b576104e2565b600061156d858263ffffffff6107d916565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167ff47261b000000000000000000000000000000000000000000000000000000000148061160057507fffffffff0000000000000000000000000000000000000000000000000000000081167fdc1600f300000000000000000000000000000000000000000000000000000000145b1561161c576116178585858563ffffffff611d8e16565b611785565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f02571792000000000000000000000000000000000000000000000000000000001415611678576116178585858563ffffffff611dd816565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fa7cb5fb70000000000000000000000000000000000000000000000000000000014156116d4576116178585858563ffffffff611ea716565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f94cfcdd7000000000000000000000000000000000000000000000000000000001415611730576116178585858563ffffffff611ffd16565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fc339d10a0000000000000000000000000000000000000000000000000000000014611785576117856100f282612091565b5050505050565b6060633ecb6ceb60e01b8383604051602401610d709291906138b2565b606063ecf40fd960e01b8383604051602401610d709291906138b2565b6000826117d557506000610829565b828202828482816117e257fe5b0414611475576114756100f260018686611bf6565b600060038261018001515111801561082957506101808201517f770501f8000000000000000000000000000000000000000000000000000000009061184390600063ffffffff6107d916565b7fffffffff00000000000000000000000000000000000000000000000000000000161492915050565b61187461297e565b61014084015160009061188d908263ffffffff6107d916565b90506000807fffffffff0000000000000000000000000000000000000000000000000000000083167fdc1600f300000000000000000000000000000000000000000000000000000000141561199b576101408701516118f390601063ffffffff61088916565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815290925073ffffffffffffffffffffffffffffffffffffffff8316906370a08231906119489030906004016134d5565b60206040518083038186803b15801561196057600080fd5b505afa158015611974573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061199891908101906133df565b90505b60e087015115806119bb57506119bb876101a001518861014001516120ac565b15611a09576119c861299f565b6119d3888789612259565b6020810151865260808101516040870152606081015181519192506119fe919063ffffffff610df516565b602086015250611aa5565b611a1d876101a001518861016001516120ac565b15611a945760a087015160e0880151600091611a4a91611a4490829063ffffffff611bde16565b88612294565b9050611a5461299f565b611a5f89838a612259565b9050611a7c81606001518260200151611bde90919063ffffffff16565b86528051602087015260800151604086015250611aa5565b611aa56100f2886101a001516122ca565b7fffffffff0000000000000000000000000000000000000000000000000000000083167fdc1600f3000000000000000000000000000000000000000000000000000000001415611bba576040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190611b449030906004016134d5565b60206040518083038186803b158015611b5c57600080fd5b505afa158015611b70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b9491908101906133df565b9050611bb3611ba9828463ffffffff610df516565b8660200151611d4e565b6020860152505b6020840151610140880151611bd49163ffffffff6109d316565b5050509392505050565b600082820183811015611475576114756100f2600086865b606063e946c1bb60e01b8484846040516024016113f59392919061361e565b6000808460e0015160001480611c3a5750611c3a856101a001518661016001516120ac565b15611c9c576000611c548660a00151876080015186612294565b9050611c5e61299f565b611c69878388612259565b9050611c8e8160800151610d0783606001518460200151611bde90919063ffffffff16565b90519093509150611d469050565b611cb0856101a001518661014001516120ac565b15611d35576000611ce08660a00151611cda8860e001518960800151610df590919063ffffffff16565b86612294565b9050611cea61299f565b611cf5878388612259565b9050611d1281608001518260200151611bde90919063ffffffff16565b60608201518251919550611d2c919063ffffffff610df516565b92505050611d46565b611d466100f2866101a001516122ca565b935093915050565b600081831015611d5e5781611475565b5090919050565b60606391353a0c60e01b8383604051602401610d709291906138b2565b600061147583836122e5565b6000611da185601063ffffffff61088916565b905073ffffffffffffffffffffffffffffffffffffffff8416301415611dcc5761161781848461230f565b61178581858585612347565b80600114611dec57611dec6100f28261240a565b6000611dff85601063ffffffff61088916565b90506000611e1486602463ffffffff611d8216565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd90611e6d90889088908690600401613587565b600060405180830381600087803b158015611e8757600080fd5b505af1158015611e9b573d6000803e3d6000fd5b50505050505050505050565b60006060806060611ec5600489518a6124259092919063ffffffff16565b806020019051611ed89190810190612f39565b9350935093509350600082519050606081604051908082528060200260200182016040528015611f12578160200160208202803883390190505b50905060005b828114611f6457611f4588868381518110611f2f57fe5b60200260200101516117c690919063ffffffff16565b828281518110611f5157fe5b6020908102919091010152600101611f18565b506040517f2eb2c2d600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871690632eb2c2d690611fbf908c908c908a9087908a9060040161351d565b600060405180830381600087803b158015611fd957600080fd5b505af1158015611fed573d6000803e3d6000fd5b5050505050505050505050505050565b60608061201760048751886124259092919063ffffffff16565b80602001905161202a9190810190613254565b8051919350915060005b8181146120875761207f83828151811061204a57fe5b6020026020010151888861207a88868151811061206357fe5b60200260200101518a6117c690919063ffffffff16565b611551565b600101612034565b5050505050505050565b6060637996a27160e01b8260405160240161027291906135de565b6000806120bf848263ffffffff6107d916565b905060006120d3848263ffffffff6107d916565b90507ff47261b0000000000000000000000000000000000000000000000000000000007fdc1600f3000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000841682148061216b57507fffffffff00000000000000000000000000000000000000000000000000000000848116908216145b80156121c957507fffffffff0000000000000000000000000000000000000000000000000000000083811690831614806121c957507fffffffff00000000000000000000000000000000000000000000000000000000838116908216145b156122345760006121e188601063ffffffff61088916565b905060006121f688601063ffffffff61088916565b90508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149650505050505050610829565b612244878763ffffffff6124a516565b945050505050610829565b5050505092915050565b61226161299f565b61226a846117f7565b156122815761227a8484846124ca565b9050611475565b61228c84848461271e565b949350505050565b600061228c836122be6122ae82600163ffffffff610df516565b610d07888763ffffffff6117c616565b9063ffffffff61288b16565b60606331360af160e01b82604051602401610272919061360b565b60008160200183511015612306576123066100f260058551856020016113d6565b50016020015190565b6040516060907fa9059cbb000000000000000000000000000000000000000000000000000000009061090190859085906024016135b8565b6040516060907f23b872dd000000000000000000000000000000000000000000000000000000009061238190869086908690602401613587565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050611785858261147c565b606063baffa47460e01b8260405160240161027291906138a9565b60608183111561243e5761243e6100f2600085856113d6565b8351821115612457576124576100f260018487516113d6565b8282036040519080825280601f01601f191660200182016040528015612484576020820181803883390190505b509050611475612493826128b5565b8461249d876128b5565b0183516128bb565b6000815183511480156114755750508051602091820120825192909101919091201490565b6124d261299f565b6124da6129ce565b604051806101800160405280866000015173ffffffffffffffffffffffffffffffffffffffff168152602001866020015173ffffffffffffffffffffffffffffffffffffffff168152602001866040015173ffffffffffffffffffffffffffffffffffffffff168152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152602001866080015181526020018660a001518152602001600081526020016000815260200186610100015181526020018661012001518152602001866101400151815260200186610160015181525090506060600073ffffffffffffffffffffffffffffffffffffffff1663b4be83d5905060e01b8286866040516024016125ed9392919061364e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252600454915190925073ffffffffffffffffffffffffffffffffffffffff90911690600090606090839061269e9086906134b9565b6000604051808303816000865af19150503d80600081146126db576040519150601f19603f3d011682016040523d82523d6000602084013e6126e0565b606091505b509150915081156127125780516080146126f657fe5b8080602001905161270a91908101906133f7565b602088015286525b50505050509392505050565b61272661299f565b6040516060907f9b44d55600000000000000000000000000000000000000000000000000000000906127609087908790879060240161376e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252600354915190925073ffffffffffffffffffffffffffffffffffffffff9091169060009060609083906128119086906134b9565b6000604051808303816000865af19150503d806000811461284e576040519150601f19603f3d011682016040523d82523d6000602084013e612853565b606091505b5091509150811561288057805160a01461286957fe5b8080602001905161287d919081019061338e565b94505b505050509392505050565b6000816128a1576128a16100f260038585611bf6565b60008284816128ac57fe5b04949350505050565b60200190565b60208110156128e5576001816020036101000a038019835116818551168082178652505050610539565b828214156128f257610539565b8282111561292c5760208103905080820181840181515b82851015612924578451865260209586019590940193612909565b905250610539565b60208103905080820181840183515b8186121561297557825182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0928301929091019061293b565b85525050505050565b60405180606001604052806000815260200160008152602001600081525090565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b604051806101800160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160608152602001606081525090565b803561082981613975565b600082601f830112612aa2578081fd5b8135612ab5612ab0826138e7565b6138c0565b818152915060208083019084810181840286018201871015612ad657600080fd5b60005b84811015612afe578135612aec81613975565b84529282019290820190600101612ad9565b505050505092915050565b600082601f830112612b19578081fd5b8135612b27612ab0826138e7565b8181529150602080830190840160005b8381101561224f57612b4f8760208435890101612e66565b83526020928301929190910190600101612b37565b600082601f830112612b74578081fd5b8135612b82612ab0826138e7565b818152915060208083019084810160005b84811015612afe57813587016101c0807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0838c03011215612bd357600080fd5b612bdc816138c0565b612be88b878501612a87565b8152612bf78b60408501612a87565b86820152612c088b60608501612a87565b6040820152612c1a8b60808501612a87565b606082015260a0830135608082015260c083013560a082015260e083013560c08201526101008084013560e0830152610120808501358284015261014091508185013581840152506101608085013567ffffffffffffffff80821115612c7f57600080fd5b612c8d8f8b848a0101612e66565b84860152610180935083870135915080821115612ca957600080fd5b612cb78f8b848a0101612e66565b838601526101a0925082870135915080821115612cd357600080fd5b612ce18f8b848a0101612e66565b8486015285870135935080841115612cf857600080fd5b5050612d088d8984880101612e66565b9083015250865250509282019290820190600101612b93565b60008083601f840112612d32578182fd5b50813567ffffffffffffffff811115612d49578182fd5b6020830191508360208083028501011115612d6357600080fd5b9250929050565b600082601f830112612d7a578081fd5b8151612d88612ab0826138e7565b818152915060208083019084810181840286018201871015612da957600080fd5b60005b84811015612afe57815184529282019290820190600101612dac565b600082601f830112612dd8578081fd5b8135612de6612ab0826138e7565b818152915060208083019084810181840286018201871015612e0757600080fd5b60005b84811015612afe57813584529282019290820190600101612e0a565b60008083601f840112612e37578182fd5b50813567ffffffffffffffff811115612e4e578182fd5b602083019150836020828501011115612d6357600080fd5b600082601f830112612e76578081fd5b8135612e84612ab082613907565b9150808252836020828501011115612e9b57600080fd5b8060208401602084013760009082016020015292915050565b600082601f830112612ec4578081fd5b8151612ed2612ab082613907565b9150808252836020828501011115612ee957600080fd5b612efa816020840160208601613949565b5092915050565b600060208284031215612f12578081fd5b813561147581613975565b600060208284031215612f2e578081fd5b815161147581613975565b60008060008060808587031215612f4e578283fd5b8451612f5981613975565b602086015190945067ffffffffffffffff80821115612f76578485fd5b612f8288838901612d6a565b94506040870151915080821115612f97578384fd5b612fa388838901612d6a565b93506060870151915080821115612fb8578283fd5b50612fc587828801612eb4565b91505092959194509250565b60008060008060008060008060a0898b031215612fec578586fd5b8835612ff781613975565b9750602089013561300781613975565b9650604089013567ffffffffffffffff80821115613023578788fd5b61302f8c838d01612d21565b909850965060608b0135915080821115613047578586fd5b6130538c838d01612d21565b909650945060808b013591508082111561306b578384fd5b506130788b828c01612e26565b999c989b5096995094979396929594505050565b60008060008060008060a087890312156130a4578384fd5b86356130af81613975565b955060208701356130bf81613975565b94506040870135935060608701359250608087013567ffffffffffffffff8111156130e8578283fd5b6130f489828a01612e26565b979a9699509497509295939492505050565b6000806000806080858703121561311b578182fd5b843567ffffffffffffffff80821115613132578384fd5b61313e88838901612b64565b95506020870135915080821115613153578384fd5b61315f88838901612b09565b94506040870135915080821115613174578384fd5b61318088838901612dc8565b93506060870135915080821115613195578283fd5b50612fc587828801612a92565b600080600080600060a086880312156131b9578283fd5b853567ffffffffffffffff808211156131d0578485fd5b6131dc89838a01612b64565b96506020880135955060408801359150808211156131f8578485fd5b61320489838a01612b09565b94506060880135915080821115613219578283fd5b61322589838a01612dc8565b9350608088013591508082111561323a578283fd5b5061324788828901612a92565b9150509295509295909350565b60008060408385031215613266578182fd5b825167ffffffffffffffff8082111561327d578384fd5b61328986838701612d6a565b935060209150818501518181111561329f578384fd5b85019050601f810186136132b1578283fd5b80516132bf612ab0826138e7565b81815283810190838501865b848110156132f4576132e28b888451890101612eb4565b845292860192908601906001016132cb565b5096999098509650505050505050565b60008060208385031215613316578182fd5b823567ffffffffffffffff81111561332c578283fd5b61333885828601612e26565b90969095509350505050565b600080600060408486031215613358578081fd5b833567ffffffffffffffff81111561336e578182fd5b61337a86828701612e26565b909790965060209590950135949350505050565b600060a0828403121561339f578081fd5b6133a960a06138c0565b82518152602083015160208201526040830151604082015260608301516060820152608083015160808201528091505092915050565b6000602082840312156133f0578081fd5b5051919050565b60008060408385031215613409578182fd5b505080516020909101519092909150565b73ffffffffffffffffffffffffffffffffffffffff169052565b6000815180845260208401935060208301825b82811015613465578151865260209586019590910190600101613447565b5093949350505050565b60008151808452613487816020860160208601613949565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600082516134cb818460208701613949565b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525060a0604083015261355660a0830186613434565b82810360608401526135688186613434565b838103608085015261357a818661346f565b9998505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b600060208252611475602083018461346f565b606081016004851061362c57fe5b938152602081019290925260409091015290565b606081016008851061362c57fe5b60006060825261366260608301865161341a565b6020850151613674608084018261341a565b50604085015161368760a084018261341a565b50606085015161369a60c084018261341a565b50608085015160e083015260a0850151610100818185015260c08701519150610120828186015260e088015192506101408381870152828901519350610160925083838701528189015193506101809150838287015280890151935050806101a08601525061370d6101e085018361346f565b8188015192507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0858203016101c0860152613748818461346f565b9150508560208501528381036040850152613763818661346f565b979650505050505050565b60006060825261378260608301865161341a565b6020850151613794608084018261341a565b5060408501516137a760a084018261341a565b5060608501516137ba60c084018261341a565b50608085015160e083015260a0850151610100818185015260c08701519150610120828186015260e0880151925061014083818701528289015193506101609250838387015281890151935061018091508382870152808901519350506101c06101a0818188015261383061022088018661346f565b848b015195507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0945084888203018389015261386c818761346f565b925050828a0151945083878303016101e088015261388a828661346f565b9250808a0151945050508185820301610200860152613748818461346f565b90815260200190565b918252602082015260400190565b60405181810167ffffffffffffffff811182821017156138df57600080fd5b604052919050565b600067ffffffffffffffff8211156138fd578081fd5b5060209081020190565b600067ffffffffffffffff82111561391d578081fd5b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b8381101561396457818101518382015260200161394c565b838111156104e25750506000910152565b73ffffffffffffffffffffffffffffffffffffffff811681146107b257600080fdfea365627a7a72315820a628a0297c881ef29bae0d4528faebedc5b2db8fd6c1645204fa4d37effc54326c6578706572696d656e74616cf564736f6c63430005110040" } } }, "compiler": { "name": "solc", - "version": "soljson-v0.5.17+commit.d19bba13.js", + "version": "0.5.17+commit.d19bba13", "settings": { "optimizer": { "enabled": true, diff --git a/packages/contract-artifacts/artifacts/GodsUnchainedValidator.json b/packages/contract-artifacts/artifacts/GodsUnchainedValidator.json index cf5eadcad7..c2e7b6f9ca 100644 --- a/packages/contract-artifacts/artifacts/GodsUnchainedValidator.json +++ b/packages/contract-artifacts/artifacts/GodsUnchainedValidator.json @@ -35,16 +35,16 @@ }, "evm": { "bytecode": { - "object": "0x608060405234801561001057600080fd5b5060405161042b38038061042b83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610082565b600060208284031215610065578081fd5b81516001600160a01b038116811461007b578182fd5b9392505050565b61039a806100916000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80639256050a14610030575b600080fd5b61004361003e3660046101fd565b610045565b005b60008061005483850185610197565b600080546040517fb93a89f700000000000000000000000000000000000000000000000000000000815293955091935091829173ffffffffffffffffffffffffffffffffffffffff169063b93a89f7906100b2908a9060040161032c565b604080518083038186803b1580156100c957600080fd5b505afa1580156100dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061010191908101906101cf565b915091508361ffff168261ffff161461014f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610146906102cf565b60405180910390fd5b8260ff168160ff161461018e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014690610272565b50505050505050565b600080604083850312156101a9578182fd5b82356101b481610335565b915060208301356101c481610348565b809150509250929050565b600080604083850312156101e1578182fd5b82516101ec81610335565b60208401519092506101c481610348565b600080600060408486031215610211578081fd5b83359250602084013567ffffffffffffffff8082111561022f578283fd5b81860187601f820112610240578384fd5b8035925081831115610250578384fd5b876020848301011115610261578384fd5b949760209095019650909450505050565b60208082526027908201527f476f6473556e636861696e656456616c696461746f722f5155414c4954595f4d60408201527f49534d4154434800000000000000000000000000000000000000000000000000606082015260800190565b60208082526025908201527f476f6473556e636861696e656456616c696461746f722f50524f544f5f4d495360408201527f4d41544348000000000000000000000000000000000000000000000000000000606082015260800190565b90815260200190565b61ffff8116811461034557600080fd5b50565b60ff8116811461034557600080fdfea365627a7a723158202821782e13a836dcbb710cbd9e62c24ec15b337cdce6d8201315aaf776f1ecd66c6578706572696d656e74616cf564736f6c63430005110040" + "object": "0x608060405234801561001057600080fd5b5060405161042b38038061042b83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610082565b600060208284031215610065578081fd5b81516001600160a01b038116811461007b578182fd5b9392505050565b61039a806100916000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80639256050a14610030575b600080fd5b61004361003e3660046101fd565b610045565b005b60008061005483850185610197565b600080546040517fb93a89f700000000000000000000000000000000000000000000000000000000815293955091935091829173ffffffffffffffffffffffffffffffffffffffff169063b93a89f7906100b2908a9060040161032c565b604080518083038186803b1580156100c957600080fd5b505afa1580156100dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061010191908101906101cf565b915091508361ffff168261ffff161461014f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610146906102cf565b60405180910390fd5b8260ff168160ff161461018e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014690610272565b50505050505050565b600080604083850312156101a9578182fd5b82356101b481610335565b915060208301356101c481610348565b809150509250929050565b600080604083850312156101e1578182fd5b82516101ec81610335565b60208401519092506101c481610348565b600080600060408486031215610211578081fd5b83359250602084013567ffffffffffffffff8082111561022f578283fd5b81860187601f820112610240578384fd5b8035925081831115610250578384fd5b876020848301011115610261578384fd5b949760209095019650909450505050565b60208082526027908201527f476f6473556e636861696e656456616c696461746f722f5155414c4954595f4d60408201527f49534d4154434800000000000000000000000000000000000000000000000000606082015260800190565b60208082526025908201527f476f6473556e636861696e656456616c696461746f722f50524f544f5f4d495360408201527f4d41544348000000000000000000000000000000000000000000000000000000606082015260800190565b90815260200190565b61ffff8116811461034557600080fd5b50565b60ff8116811461034557600080fdfea365627a7a723158202e078abc4192f31bdba8b9ee66aa83710b9d92589098be5440423730c6275c306c6578706572696d656e74616cf564736f6c63430005110040" }, "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c80639256050a14610030575b600080fd5b61004361003e3660046101fd565b610045565b005b60008061005483850185610197565b600080546040517fb93a89f700000000000000000000000000000000000000000000000000000000815293955091935091829173ffffffffffffffffffffffffffffffffffffffff169063b93a89f7906100b2908a9060040161032c565b604080518083038186803b1580156100c957600080fd5b505afa1580156100dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061010191908101906101cf565b915091508361ffff168261ffff161461014f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610146906102cf565b60405180910390fd5b8260ff168160ff161461018e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014690610272565b50505050505050565b600080604083850312156101a9578182fd5b82356101b481610335565b915060208301356101c481610348565b809150509250929050565b600080604083850312156101e1578182fd5b82516101ec81610335565b60208401519092506101c481610348565b600080600060408486031215610211578081fd5b83359250602084013567ffffffffffffffff8082111561022f578283fd5b81860187601f820112610240578384fd5b8035925081831115610250578384fd5b876020848301011115610261578384fd5b949760209095019650909450505050565b60208082526027908201527f476f6473556e636861696e656456616c696461746f722f5155414c4954595f4d60408201527f49534d4154434800000000000000000000000000000000000000000000000000606082015260800190565b60208082526025908201527f476f6473556e636861696e656456616c696461746f722f50524f544f5f4d495360408201527f4d41544348000000000000000000000000000000000000000000000000000000606082015260800190565b90815260200190565b61ffff8116811461034557600080fd5b50565b60ff8116811461034557600080fdfea365627a7a723158202821782e13a836dcbb710cbd9e62c24ec15b337cdce6d8201315aaf776f1ecd66c6578706572696d656e74616cf564736f6c63430005110040" + "object": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c80639256050a14610030575b600080fd5b61004361003e3660046101fd565b610045565b005b60008061005483850185610197565b600080546040517fb93a89f700000000000000000000000000000000000000000000000000000000815293955091935091829173ffffffffffffffffffffffffffffffffffffffff169063b93a89f7906100b2908a9060040161032c565b604080518083038186803b1580156100c957600080fd5b505afa1580156100dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061010191908101906101cf565b915091508361ffff168261ffff161461014f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610146906102cf565b60405180910390fd5b8260ff168160ff161461018e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014690610272565b50505050505050565b600080604083850312156101a9578182fd5b82356101b481610335565b915060208301356101c481610348565b809150509250929050565b600080604083850312156101e1578182fd5b82516101ec81610335565b60208401519092506101c481610348565b600080600060408486031215610211578081fd5b83359250602084013567ffffffffffffffff8082111561022f578283fd5b81860187601f820112610240578384fd5b8035925081831115610250578384fd5b876020848301011115610261578384fd5b949760209095019650909450505050565b60208082526027908201527f476f6473556e636861696e656456616c696461746f722f5155414c4954595f4d60408201527f49534d4154434800000000000000000000000000000000000000000000000000606082015260800190565b60208082526025908201527f476f6473556e636861696e656456616c696461746f722f50524f544f5f4d495360408201527f4d41544348000000000000000000000000000000000000000000000000000000606082015260800190565b90815260200190565b61ffff8116811461034557600080fd5b50565b60ff8116811461034557600080fdfea365627a7a723158202e078abc4192f31bdba8b9ee66aa83710b9d92589098be5440423730c6275c306c6578706572696d656e74616cf564736f6c63430005110040" } } }, "compiler": { "name": "solc", - "version": "soljson-v0.5.17+commit.d19bba13.js", + "version": "0.5.17+commit.d19bba13", "settings": { "optimizer": { "enabled": true, diff --git a/packages/contract-artifacts/artifacts/IWallet.json b/packages/contract-artifacts/artifacts/IWallet.json index 27065999cc..30286aa687 100644 --- a/packages/contract-artifacts/artifacts/IWallet.json +++ b/packages/contract-artifacts/artifacts/IWallet.json @@ -29,7 +29,7 @@ }, "compiler": { "name": "solc", - "version": "soljson-v0.5.17+commit.d19bba13.js", + "version": "0.5.17+commit.d19bba13", "settings": { "optimizer": { "enabled": true, diff --git a/packages/contract-artifacts/artifacts/IZeroEx.json b/packages/contract-artifacts/artifacts/IZeroEx.json index 4b4bd1c8a6..83d46a4f7f 100644 --- a/packages/contract-artifacts/artifacts/IZeroEx.json +++ b/packages/contract-artifacts/artifacts/IZeroEx.json @@ -3,6 +3,39 @@ "contractName": "IZeroEx", "compilerOutput": { "abi": [ + { + "anonymous": false, + "inputs": [ + { "indexed": false, "internalType": "bytes32", "name": "orderHash", "type": "bytes32" }, + { "indexed": false, "internalType": "address", "name": "maker", "type": "address" }, + { "indexed": false, "internalType": "address", "name": "taker", "type": "address" }, + { "indexed": false, "internalType": "address", "name": "feeRecipient", "type": "address" }, + { "indexed": false, "internalType": "address", "name": "makerToken", "type": "address" }, + { "indexed": false, "internalType": "address", "name": "takerToken", "type": "address" }, + { + "indexed": false, + "internalType": "uint128", + "name": "takerTokenFilledAmount", + "type": "uint128" + }, + { + "indexed": false, + "internalType": "uint128", + "name": "makerTokenFilledAmount", + "type": "uint128" + }, + { + "indexed": false, + "internalType": "uint128", + "name": "takerTokenFeeFilledAmount", + "type": "uint128" + }, + { "indexed": false, "internalType": "uint256", "name": "protocolFeePaid", "type": "uint256" }, + { "indexed": false, "internalType": "bytes32", "name": "pool", "type": "bytes32" } + ], + "name": "LimitOrderFilled", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -24,6 +57,15 @@ "name": "Migrated", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { "indexed": false, "internalType": "bytes32", "name": "orderHash", "type": "bytes32" }, + { "indexed": false, "internalType": "address", "name": "maker", "type": "address" } + ], + "name": "OrderCancelled", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -33,6 +75,28 @@ "name": "OwnershipTransferred", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { "indexed": false, "internalType": "address", "name": "maker", "type": "address" }, + { "indexed": false, "internalType": "address", "name": "makerToken", "type": "address" }, + { "indexed": false, "internalType": "address", "name": "takerToken", "type": "address" }, + { "indexed": false, "internalType": "uint256", "name": "minValidSalt", "type": "uint256" } + ], + "name": "PairCancelledLimitOrders", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": false, "internalType": "address", "name": "maker", "type": "address" }, + { "indexed": false, "internalType": "address", "name": "makerToken", "type": "address" }, + { "indexed": false, "internalType": "address", "name": "takerToken", "type": "address" }, + { "indexed": false, "internalType": "uint256", "name": "minValidSalt", "type": "uint256" } + ], + "name": "PairCancelledRfqOrders", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -49,6 +113,41 @@ "name": "QuoteSignerUpdated", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { "indexed": false, "internalType": "bytes32", "name": "orderHash", "type": "bytes32" }, + { "indexed": false, "internalType": "address", "name": "maker", "type": "address" }, + { "indexed": false, "internalType": "address", "name": "taker", "type": "address" }, + { "indexed": false, "internalType": "address", "name": "makerToken", "type": "address" }, + { "indexed": false, "internalType": "address", "name": "takerToken", "type": "address" }, + { + "indexed": false, + "internalType": "uint128", + "name": "takerTokenFilledAmount", + "type": "uint128" + }, + { + "indexed": false, + "internalType": "uint128", + "name": "makerTokenFilledAmount", + "type": "uint128" + }, + { "indexed": false, "internalType": "bytes32", "name": "pool", "type": "bytes32" } + ], + "name": "RfqOrderFilled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": false, "internalType": "address", "name": "origin", "type": "address" }, + { "indexed": false, "internalType": "address[]", "name": "addrs", "type": "address[]" }, + { "indexed": false, "internalType": "bool", "name": "allowed", "type": "bool" } + ], + "name": "RfqOrderOriginsAllowed", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -89,13 +188,120 @@ "name": "mtx", "type": "tuple" }, - { "internalType": "bytes", "name": "signature", "type": "bytes" } + { + "components": [ + { + "internalType": "enum LibSignature.SignatureType", + "name": "signatureType", + "type": "uint8" + }, + { "internalType": "uint8", "name": "v", "type": "uint8" }, + { "internalType": "bytes32", "name": "r", "type": "bytes32" }, + { "internalType": "bytes32", "name": "s", "type": "bytes32" } + ], + "internalType": "struct LibSignature.Signature", + "name": "signature", + "type": "tuple" + } ], "name": "_executeMetaTransaction", "outputs": [{ "internalType": "bytes", "name": "returnResult", "type": "bytes" }], "stateMutability": "payable", "type": "function" }, + { + "inputs": [ + { + "components": [ + { "internalType": "contract IERC20TokenV06", "name": "makerToken", "type": "address" }, + { "internalType": "contract IERC20TokenV06", "name": "takerToken", "type": "address" }, + { "internalType": "uint128", "name": "makerAmount", "type": "uint128" }, + { "internalType": "uint128", "name": "takerAmount", "type": "uint128" }, + { "internalType": "uint128", "name": "takerTokenFeeAmount", "type": "uint128" }, + { "internalType": "address", "name": "maker", "type": "address" }, + { "internalType": "address", "name": "taker", "type": "address" }, + { "internalType": "address", "name": "sender", "type": "address" }, + { "internalType": "address", "name": "feeRecipient", "type": "address" }, + { "internalType": "bytes32", "name": "pool", "type": "bytes32" }, + { "internalType": "uint64", "name": "expiry", "type": "uint64" }, + { "internalType": "uint256", "name": "salt", "type": "uint256" } + ], + "internalType": "struct LibNativeOrder.LimitOrder", + "name": "order", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "enum LibSignature.SignatureType", + "name": "signatureType", + "type": "uint8" + }, + { "internalType": "uint8", "name": "v", "type": "uint8" }, + { "internalType": "bytes32", "name": "r", "type": "bytes32" }, + { "internalType": "bytes32", "name": "s", "type": "bytes32" } + ], + "internalType": "struct LibSignature.Signature", + "name": "signature", + "type": "tuple" + }, + { "internalType": "uint128", "name": "takerTokenFillAmount", "type": "uint128" }, + { "internalType": "address", "name": "taker", "type": "address" }, + { "internalType": "address", "name": "sender", "type": "address" } + ], + "name": "_fillLimitOrder", + "outputs": [ + { "internalType": "uint128", "name": "takerTokenFilledAmount", "type": "uint128" }, + { "internalType": "uint128", "name": "makerTokenFilledAmount", "type": "uint128" } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { "internalType": "contract IERC20TokenV06", "name": "makerToken", "type": "address" }, + { "internalType": "contract IERC20TokenV06", "name": "takerToken", "type": "address" }, + { "internalType": "uint128", "name": "makerAmount", "type": "uint128" }, + { "internalType": "uint128", "name": "takerAmount", "type": "uint128" }, + { "internalType": "address", "name": "maker", "type": "address" }, + { "internalType": "address", "name": "taker", "type": "address" }, + { "internalType": "address", "name": "txOrigin", "type": "address" }, + { "internalType": "bytes32", "name": "pool", "type": "bytes32" }, + { "internalType": "uint64", "name": "expiry", "type": "uint64" }, + { "internalType": "uint256", "name": "salt", "type": "uint256" } + ], + "internalType": "struct LibNativeOrder.RfqOrder", + "name": "order", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "enum LibSignature.SignatureType", + "name": "signatureType", + "type": "uint8" + }, + { "internalType": "uint8", "name": "v", "type": "uint8" }, + { "internalType": "bytes32", "name": "r", "type": "bytes32" }, + { "internalType": "bytes32", "name": "s", "type": "bytes32" } + ], + "internalType": "struct LibSignature.Signature", + "name": "signature", + "type": "tuple" + }, + { "internalType": "uint128", "name": "takerTokenFillAmount", "type": "uint128" }, + { "internalType": "address", "name": "taker", "type": "address" } + ], + "name": "_fillRfqOrder", + "outputs": [ + { "internalType": "uint128", "name": "takerTokenFilledAmount", "type": "uint128" }, + { "internalType": "uint128", "name": "makerTokenFilledAmount", "type": "uint128" } + ], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { "internalType": "contract IERC20TokenV06", "name": "token", "type": "address" }, @@ -125,9 +331,7 @@ "internalType": "struct ITransformERC20Feature.Transformation[]", "name": "transformations", "type": "tuple[]" - }, - { "internalType": "bytes32", "name": "callDataHash", "type": "bytes32" }, - { "internalType": "bytes", "name": "callDataSignature", "type": "bytes" } + } ], "internalType": "struct ITransformERC20Feature.TransformERC20Args", "name": "args", @@ -139,6 +343,80 @@ "stateMutability": "payable", "type": "function" }, + { + "inputs": [ + { + "components": [ + { "internalType": "contract IERC20TokenV06", "name": "makerToken", "type": "address" }, + { "internalType": "contract IERC20TokenV06", "name": "takerToken", "type": "address" }, + { "internalType": "uint128", "name": "makerAmount", "type": "uint128" }, + { "internalType": "uint128", "name": "takerAmount", "type": "uint128" }, + { "internalType": "uint128", "name": "takerTokenFeeAmount", "type": "uint128" }, + { "internalType": "address", "name": "maker", "type": "address" }, + { "internalType": "address", "name": "taker", "type": "address" }, + { "internalType": "address", "name": "sender", "type": "address" }, + { "internalType": "address", "name": "feeRecipient", "type": "address" }, + { "internalType": "bytes32", "name": "pool", "type": "bytes32" }, + { "internalType": "uint64", "name": "expiry", "type": "uint64" }, + { "internalType": "uint256", "name": "salt", "type": "uint256" } + ], + "internalType": "struct LibNativeOrder.LimitOrder[]", + "name": "orders", + "type": "tuple[]" + } + ], + "name": "batchCancelLimitOrders", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "contract IERC20TokenV06[]", "name": "makerTokens", "type": "address[]" }, + { "internalType": "contract IERC20TokenV06[]", "name": "takerTokens", "type": "address[]" }, + { "internalType": "uint256[]", "name": "minValidSalts", "type": "uint256[]" } + ], + "name": "batchCancelPairLimitOrders", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "contract IERC20TokenV06[]", "name": "makerTokens", "type": "address[]" }, + { "internalType": "contract IERC20TokenV06[]", "name": "takerTokens", "type": "address[]" }, + { "internalType": "uint256[]", "name": "minValidSalts", "type": "uint256[]" } + ], + "name": "batchCancelPairRfqOrders", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { "internalType": "contract IERC20TokenV06", "name": "makerToken", "type": "address" }, + { "internalType": "contract IERC20TokenV06", "name": "takerToken", "type": "address" }, + { "internalType": "uint128", "name": "makerAmount", "type": "uint128" }, + { "internalType": "uint128", "name": "takerAmount", "type": "uint128" }, + { "internalType": "address", "name": "maker", "type": "address" }, + { "internalType": "address", "name": "taker", "type": "address" }, + { "internalType": "address", "name": "txOrigin", "type": "address" }, + { "internalType": "bytes32", "name": "pool", "type": "bytes32" }, + { "internalType": "uint64", "name": "expiry", "type": "uint64" }, + { "internalType": "uint256", "name": "salt", "type": "uint256" } + ], + "internalType": "struct LibNativeOrder.RfqOrder[]", + "name": "orders", + "type": "tuple[]" + } + ], + "name": "batchCancelRfqOrders", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -158,13 +436,101 @@ "name": "mtxs", "type": "tuple[]" }, - { "internalType": "bytes[]", "name": "signatures", "type": "bytes[]" } + { + "components": [ + { + "internalType": "enum LibSignature.SignatureType", + "name": "signatureType", + "type": "uint8" + }, + { "internalType": "uint8", "name": "v", "type": "uint8" }, + { "internalType": "bytes32", "name": "r", "type": "bytes32" }, + { "internalType": "bytes32", "name": "s", "type": "bytes32" } + ], + "internalType": "struct LibSignature.Signature[]", + "name": "signatures", + "type": "tuple[]" + } ], "name": "batchExecuteMetaTransactions", "outputs": [{ "internalType": "bytes[]", "name": "returnResults", "type": "bytes[]" }], "stateMutability": "payable", "type": "function" }, + { + "inputs": [ + { + "components": [ + { "internalType": "contract IERC20TokenV06", "name": "makerToken", "type": "address" }, + { "internalType": "contract IERC20TokenV06", "name": "takerToken", "type": "address" }, + { "internalType": "uint128", "name": "makerAmount", "type": "uint128" }, + { "internalType": "uint128", "name": "takerAmount", "type": "uint128" }, + { "internalType": "uint128", "name": "takerTokenFeeAmount", "type": "uint128" }, + { "internalType": "address", "name": "maker", "type": "address" }, + { "internalType": "address", "name": "taker", "type": "address" }, + { "internalType": "address", "name": "sender", "type": "address" }, + { "internalType": "address", "name": "feeRecipient", "type": "address" }, + { "internalType": "bytes32", "name": "pool", "type": "bytes32" }, + { "internalType": "uint64", "name": "expiry", "type": "uint64" }, + { "internalType": "uint256", "name": "salt", "type": "uint256" } + ], + "internalType": "struct LibNativeOrder.LimitOrder", + "name": "order", + "type": "tuple" + } + ], + "name": "cancelLimitOrder", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "contract IERC20TokenV06", "name": "makerToken", "type": "address" }, + { "internalType": "contract IERC20TokenV06", "name": "takerToken", "type": "address" }, + { "internalType": "uint256", "name": "minValidSalt", "type": "uint256" } + ], + "name": "cancelPairLimitOrders", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "contract IERC20TokenV06", "name": "makerToken", "type": "address" }, + { "internalType": "contract IERC20TokenV06", "name": "takerToken", "type": "address" }, + { "internalType": "uint256", "name": "minValidSalt", "type": "uint256" } + ], + "name": "cancelPairRfqOrders", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { "internalType": "contract IERC20TokenV06", "name": "makerToken", "type": "address" }, + { "internalType": "contract IERC20TokenV06", "name": "takerToken", "type": "address" }, + { "internalType": "uint128", "name": "makerAmount", "type": "uint128" }, + { "internalType": "uint128", "name": "takerAmount", "type": "uint128" }, + { "internalType": "address", "name": "maker", "type": "address" }, + { "internalType": "address", "name": "taker", "type": "address" }, + { "internalType": "address", "name": "txOrigin", "type": "address" }, + { "internalType": "bytes32", "name": "pool", "type": "bytes32" }, + { "internalType": "uint64", "name": "expiry", "type": "uint64" }, + { "internalType": "uint256", "name": "salt", "type": "uint256" } + ], + "internalType": "struct LibNativeOrder.RfqOrder", + "name": "order", + "type": "tuple" + } + ], + "name": "cancelRfqOrder", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [], "name": "createTransformWallet", @@ -191,7 +557,21 @@ "name": "mtx", "type": "tuple" }, - { "internalType": "bytes", "name": "signature", "type": "bytes" } + { + "components": [ + { + "internalType": "enum LibSignature.SignatureType", + "name": "signatureType", + "type": "uint8" + }, + { "internalType": "uint8", "name": "v", "type": "uint8" }, + { "internalType": "bytes32", "name": "r", "type": "bytes32" }, + { "internalType": "bytes32", "name": "s", "type": "bytes32" } + ], + "internalType": "struct LibSignature.Signature", + "name": "signature", + "type": "tuple" + } ], "name": "executeMetaTransaction", "outputs": [{ "internalType": "bytes", "name": "returnResult", "type": "bytes" }], @@ -208,6 +588,180 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "components": [ + { "internalType": "contract IERC20TokenV06", "name": "makerToken", "type": "address" }, + { "internalType": "contract IERC20TokenV06", "name": "takerToken", "type": "address" }, + { "internalType": "uint128", "name": "makerAmount", "type": "uint128" }, + { "internalType": "uint128", "name": "takerAmount", "type": "uint128" }, + { "internalType": "uint128", "name": "takerTokenFeeAmount", "type": "uint128" }, + { "internalType": "address", "name": "maker", "type": "address" }, + { "internalType": "address", "name": "taker", "type": "address" }, + { "internalType": "address", "name": "sender", "type": "address" }, + { "internalType": "address", "name": "feeRecipient", "type": "address" }, + { "internalType": "bytes32", "name": "pool", "type": "bytes32" }, + { "internalType": "uint64", "name": "expiry", "type": "uint64" }, + { "internalType": "uint256", "name": "salt", "type": "uint256" } + ], + "internalType": "struct LibNativeOrder.LimitOrder", + "name": "order", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "enum LibSignature.SignatureType", + "name": "signatureType", + "type": "uint8" + }, + { "internalType": "uint8", "name": "v", "type": "uint8" }, + { "internalType": "bytes32", "name": "r", "type": "bytes32" }, + { "internalType": "bytes32", "name": "s", "type": "bytes32" } + ], + "internalType": "struct LibSignature.Signature", + "name": "signature", + "type": "tuple" + }, + { "internalType": "uint128", "name": "takerTokenFillAmount", "type": "uint128" } + ], + "name": "fillLimitOrder", + "outputs": [ + { "internalType": "uint128", "name": "takerTokenFilledAmount", "type": "uint128" }, + { "internalType": "uint128", "name": "makerTokenFilledAmount", "type": "uint128" } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { "internalType": "contract IERC20TokenV06", "name": "makerToken", "type": "address" }, + { "internalType": "contract IERC20TokenV06", "name": "takerToken", "type": "address" }, + { "internalType": "uint128", "name": "makerAmount", "type": "uint128" }, + { "internalType": "uint128", "name": "takerAmount", "type": "uint128" }, + { "internalType": "uint128", "name": "takerTokenFeeAmount", "type": "uint128" }, + { "internalType": "address", "name": "maker", "type": "address" }, + { "internalType": "address", "name": "taker", "type": "address" }, + { "internalType": "address", "name": "sender", "type": "address" }, + { "internalType": "address", "name": "feeRecipient", "type": "address" }, + { "internalType": "bytes32", "name": "pool", "type": "bytes32" }, + { "internalType": "uint64", "name": "expiry", "type": "uint64" }, + { "internalType": "uint256", "name": "salt", "type": "uint256" } + ], + "internalType": "struct LibNativeOrder.LimitOrder", + "name": "order", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "enum LibSignature.SignatureType", + "name": "signatureType", + "type": "uint8" + }, + { "internalType": "uint8", "name": "v", "type": "uint8" }, + { "internalType": "bytes32", "name": "r", "type": "bytes32" }, + { "internalType": "bytes32", "name": "s", "type": "bytes32" } + ], + "internalType": "struct LibSignature.Signature", + "name": "signature", + "type": "tuple" + }, + { "internalType": "uint128", "name": "takerTokenFillAmount", "type": "uint128" } + ], + "name": "fillOrKillLimitOrder", + "outputs": [{ "internalType": "uint128", "name": "makerTokenFilledAmount", "type": "uint128" }], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { "internalType": "contract IERC20TokenV06", "name": "makerToken", "type": "address" }, + { "internalType": "contract IERC20TokenV06", "name": "takerToken", "type": "address" }, + { "internalType": "uint128", "name": "makerAmount", "type": "uint128" }, + { "internalType": "uint128", "name": "takerAmount", "type": "uint128" }, + { "internalType": "address", "name": "maker", "type": "address" }, + { "internalType": "address", "name": "taker", "type": "address" }, + { "internalType": "address", "name": "txOrigin", "type": "address" }, + { "internalType": "bytes32", "name": "pool", "type": "bytes32" }, + { "internalType": "uint64", "name": "expiry", "type": "uint64" }, + { "internalType": "uint256", "name": "salt", "type": "uint256" } + ], + "internalType": "struct LibNativeOrder.RfqOrder", + "name": "order", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "enum LibSignature.SignatureType", + "name": "signatureType", + "type": "uint8" + }, + { "internalType": "uint8", "name": "v", "type": "uint8" }, + { "internalType": "bytes32", "name": "r", "type": "bytes32" }, + { "internalType": "bytes32", "name": "s", "type": "bytes32" } + ], + "internalType": "struct LibSignature.Signature", + "name": "signature", + "type": "tuple" + }, + { "internalType": "uint128", "name": "takerTokenFillAmount", "type": "uint128" } + ], + "name": "fillOrKillRfqOrder", + "outputs": [{ "internalType": "uint128", "name": "makerTokenFilledAmount", "type": "uint128" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { "internalType": "contract IERC20TokenV06", "name": "makerToken", "type": "address" }, + { "internalType": "contract IERC20TokenV06", "name": "takerToken", "type": "address" }, + { "internalType": "uint128", "name": "makerAmount", "type": "uint128" }, + { "internalType": "uint128", "name": "takerAmount", "type": "uint128" }, + { "internalType": "address", "name": "maker", "type": "address" }, + { "internalType": "address", "name": "taker", "type": "address" }, + { "internalType": "address", "name": "txOrigin", "type": "address" }, + { "internalType": "bytes32", "name": "pool", "type": "bytes32" }, + { "internalType": "uint64", "name": "expiry", "type": "uint64" }, + { "internalType": "uint256", "name": "salt", "type": "uint256" } + ], + "internalType": "struct LibNativeOrder.RfqOrder", + "name": "order", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "enum LibSignature.SignatureType", + "name": "signatureType", + "type": "uint8" + }, + { "internalType": "uint8", "name": "v", "type": "uint8" }, + { "internalType": "bytes32", "name": "r", "type": "bytes32" }, + { "internalType": "bytes32", "name": "s", "type": "bytes32" } + ], + "internalType": "struct LibSignature.Signature", + "name": "signature", + "type": "tuple" + }, + { "internalType": "uint128", "name": "takerTokenFillAmount", "type": "uint128" } + ], + "name": "fillRfqOrder", + "outputs": [ + { "internalType": "uint128", "name": "takerTokenFilledAmount", "type": "uint128" }, + { "internalType": "uint128", "name": "makerTokenFilledAmount", "type": "uint128" } + ], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [], "name": "getAllowanceTarget", @@ -216,9 +770,67 @@ "type": "function" }, { - "inputs": [{ "internalType": "bytes4", "name": "selector", "type": "bytes4" }], - "name": "getFunctionImplementation", - "outputs": [{ "internalType": "address", "name": "impl", "type": "address" }], + "inputs": [ + { + "components": [ + { "internalType": "contract IERC20TokenV06", "name": "makerToken", "type": "address" }, + { "internalType": "contract IERC20TokenV06", "name": "takerToken", "type": "address" }, + { "internalType": "uint128", "name": "makerAmount", "type": "uint128" }, + { "internalType": "uint128", "name": "takerAmount", "type": "uint128" }, + { "internalType": "uint128", "name": "takerTokenFeeAmount", "type": "uint128" }, + { "internalType": "address", "name": "maker", "type": "address" }, + { "internalType": "address", "name": "taker", "type": "address" }, + { "internalType": "address", "name": "sender", "type": "address" }, + { "internalType": "address", "name": "feeRecipient", "type": "address" }, + { "internalType": "bytes32", "name": "pool", "type": "bytes32" }, + { "internalType": "uint64", "name": "expiry", "type": "uint64" }, + { "internalType": "uint256", "name": "salt", "type": "uint256" } + ], + "internalType": "struct LibNativeOrder.LimitOrder", + "name": "order", + "type": "tuple" + } + ], + "name": "getLimitOrderHash", + "outputs": [{ "internalType": "bytes32", "name": "orderHash", "type": "bytes32" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { "internalType": "contract IERC20TokenV06", "name": "makerToken", "type": "address" }, + { "internalType": "contract IERC20TokenV06", "name": "takerToken", "type": "address" }, + { "internalType": "uint128", "name": "makerAmount", "type": "uint128" }, + { "internalType": "uint128", "name": "takerAmount", "type": "uint128" }, + { "internalType": "uint128", "name": "takerTokenFeeAmount", "type": "uint128" }, + { "internalType": "address", "name": "maker", "type": "address" }, + { "internalType": "address", "name": "taker", "type": "address" }, + { "internalType": "address", "name": "sender", "type": "address" }, + { "internalType": "address", "name": "feeRecipient", "type": "address" }, + { "internalType": "bytes32", "name": "pool", "type": "bytes32" }, + { "internalType": "uint64", "name": "expiry", "type": "uint64" }, + { "internalType": "uint256", "name": "salt", "type": "uint256" } + ], + "internalType": "struct LibNativeOrder.LimitOrder", + "name": "order", + "type": "tuple" + } + ], + "name": "getLimitOrderInfo", + "outputs": [ + { + "components": [ + { "internalType": "bytes32", "name": "orderHash", "type": "bytes32" }, + { "internalType": "enum LibNativeOrder.OrderStatus", "name": "status", "type": "uint8" }, + { "internalType": "uint128", "name": "takerTokenFilledAmount", "type": "uint128" } + ], + "internalType": "struct LibNativeOrder.OrderInfo", + "name": "orderInfo", + "type": "tuple" + } + ], "stateMutability": "view", "type": "function" }, @@ -279,6 +891,13 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "getProtocolFeeMultiplier", + "outputs": [{ "internalType": "uint32", "name": "multiplier", "type": "uint32" }], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "getQuoteSigner", @@ -286,6 +905,67 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "components": [ + { "internalType": "contract IERC20TokenV06", "name": "makerToken", "type": "address" }, + { "internalType": "contract IERC20TokenV06", "name": "takerToken", "type": "address" }, + { "internalType": "uint128", "name": "makerAmount", "type": "uint128" }, + { "internalType": "uint128", "name": "takerAmount", "type": "uint128" }, + { "internalType": "address", "name": "maker", "type": "address" }, + { "internalType": "address", "name": "taker", "type": "address" }, + { "internalType": "address", "name": "txOrigin", "type": "address" }, + { "internalType": "bytes32", "name": "pool", "type": "bytes32" }, + { "internalType": "uint64", "name": "expiry", "type": "uint64" }, + { "internalType": "uint256", "name": "salt", "type": "uint256" } + ], + "internalType": "struct LibNativeOrder.RfqOrder", + "name": "order", + "type": "tuple" + } + ], + "name": "getRfqOrderHash", + "outputs": [{ "internalType": "bytes32", "name": "orderHash", "type": "bytes32" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { "internalType": "contract IERC20TokenV06", "name": "makerToken", "type": "address" }, + { "internalType": "contract IERC20TokenV06", "name": "takerToken", "type": "address" }, + { "internalType": "uint128", "name": "makerAmount", "type": "uint128" }, + { "internalType": "uint128", "name": "takerAmount", "type": "uint128" }, + { "internalType": "address", "name": "maker", "type": "address" }, + { "internalType": "address", "name": "taker", "type": "address" }, + { "internalType": "address", "name": "txOrigin", "type": "address" }, + { "internalType": "bytes32", "name": "pool", "type": "bytes32" }, + { "internalType": "uint64", "name": "expiry", "type": "uint64" }, + { "internalType": "uint256", "name": "salt", "type": "uint256" } + ], + "internalType": "struct LibNativeOrder.RfqOrder", + "name": "order", + "type": "tuple" + } + ], + "name": "getRfqOrderInfo", + "outputs": [ + { + "components": [ + { "internalType": "bytes32", "name": "orderHash", "type": "bytes32" }, + { "internalType": "enum LibNativeOrder.OrderStatus", "name": "status", "type": "uint8" }, + { "internalType": "uint128", "name": "takerTokenFilledAmount", "type": "uint128" } + ], + "internalType": "struct LibNativeOrder.OrderInfo", + "name": "orderInfo", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { "internalType": "bytes4", "name": "selector", "type": "bytes4" }, @@ -356,6 +1036,16 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { "internalType": "address[]", "name": "origins", "type": "address[]" }, + { "internalType": "bool", "name": "allowed", "type": "bool" } + ], + "name": "registerAllowedRfqOrigins", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { "internalType": "bytes4", "name": "selector", "type": "bytes4" }, @@ -368,9 +1058,9 @@ }, { "inputs": [ - { "internalType": "address", "name": "makerToken", "type": "address" }, - { "internalType": "address", "name": "takerToken", "type": "address" }, - { "internalType": "address payable", "name": "target", "type": "address" }, + { "internalType": "address", "name": "inputToken", "type": "address" }, + { "internalType": "address", "name": "outputToken", "type": "address" }, + { "internalType": "address payable", "name": "provider", "type": "address" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "sellAmount", "type": "uint256" }, { "internalType": "uint256", "name": "minBuyAmount", "type": "uint256" }, @@ -414,6 +1104,13 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [{ "internalType": "bytes32[]", "name": "poolIds", "type": "bytes32[]" }], + "name": "transferProtocolFeesForPools", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { "internalType": "contract IERC20TokenV06", "name": "inputToken", "type": "address" }, @@ -451,15 +1148,42 @@ "details": "Interface for a fully featured Exchange Proxy.", "kind": "dev", "methods": { - "_executeMetaTransaction(address,(address,address,uint256,uint256,uint256,uint256,bytes,uint256,address,uint256),bytes)": { + "_executeMetaTransaction(address,(address,address,uint256,uint256,uint256,uint256,bytes,uint256,address,uint256),(uint8,uint8,bytes32,bytes32))": { "details": "Execute a meta-transaction via `sender`. Privileged variant. Only callable from within.", "params": { "mtx": "The meta-transaction.", - "sender": "Who is executing the meta-transaction..", + "sender": "Who is executing the meta-transaction.", "signature": "The signature by `mtx.signer`." }, "returns": { "returnResult": "The ABI-encoded result of the underlying call." } }, + "_fillLimitOrder((address,address,uint128,uint128,uint128,address,address,address,address,bytes32,uint64,uint256),(uint8,uint8,bytes32,bytes32),uint128,address,address)": { + "details": "Fill a limit order. Internal variant. ETH protocol fees can be attached to this call. Any unspent ETH will be refunded to `msg.sender` (not `sender`).", + "params": { + "order": "The limit order.", + "sender": "The order sender.", + "signature": "The order signature.", + "taker": "The order taker.", + "takerTokenFillAmount": "Maximum taker token to fill this order with." + }, + "returns": { + "makerTokenFilledAmount": "How much maker token was filled.", + "takerTokenFilledAmount": "How much maker token was filled." + } + }, + "_fillRfqOrder((address,address,uint128,uint128,address,address,address,bytes32,uint64,uint256),(uint8,uint8,bytes32,bytes32),uint128,address)": { + "details": "Fill an RFQ order. Internal variant.", + "params": { + "order": "The RFQ order.", + "signature": "The order signature.", + "taker": "The order taker.", + "takerTokenFillAmount": "Maximum taker token to fill this order with." + }, + "returns": { + "makerTokenFilledAmount": "How much maker token was filled.", + "takerTokenFilledAmount": "How much maker token was filled." + } + }, "_spendERC20Tokens(address,address,address,uint256)": { "details": "Transfers ERC20 tokens from `owner` to `to`. Only callable from within.", "params": { @@ -469,12 +1193,36 @@ "token": "The token to spend." } }, - "_transformERC20((address,address,address,uint256,uint256,(uint32,bytes)[],bytes32,bytes))": { + "_transformERC20((address,address,address,uint256,uint256,(uint32,bytes)[]))": { "details": "Internal version of `transformERC20()`. Only callable from within.", "params": { "args": "A `TransformERC20Args` struct." }, "returns": { "outputTokenAmount": "The amount of `outputToken` received by the taker." } }, - "batchExecuteMetaTransactions((address,address,uint256,uint256,uint256,uint256,bytes,uint256,address,uint256)[],bytes[])": { + "batchCancelLimitOrders((address,address,uint128,uint128,uint128,address,address,address,address,bytes32,uint64,uint256)[])": { + "details": "Cancel multiple limit orders. The caller must be the maker. Silently succeeds if the order has already been cancelled.", + "params": { "orders": "The limit orders." } + }, + "batchCancelPairLimitOrders(address[],address[],uint256[])": { + "details": "Cancel all limit orders for a given maker and pair with a salt less than the value provided. The caller must be the maker. Subsequent calls to this function with the same caller and pair require the new salt to be >= the old salt.", + "params": { + "makerTokens": "The maker tokens.", + "minValidSalts": "The new minimum valid salts.", + "takerTokens": "The taker tokens." + } + }, + "batchCancelPairRfqOrders(address[],address[],uint256[])": { + "details": "Cancel all RFQ orders for a given maker and pair with a salt less than the value provided. The caller must be the maker. Subsequent calls to this function with the same caller and pair require the new salt to be >= the old salt.", + "params": { + "makerTokens": "The maker tokens.", + "minValidSalts": "The new minimum valid salts.", + "takerTokens": "The taker tokens." + } + }, + "batchCancelRfqOrders((address,address,uint128,uint128,address,address,address,bytes32,uint64,uint256)[])": { + "details": "Cancel multiple RFQ orders. The caller must be the maker. Silently succeeds if the order has already been cancelled.", + "params": { "orders": "The RFQ orders." } + }, + "batchExecuteMetaTransactions((address,address,uint256,uint256,uint256,uint256,bytes,uint256,address,uint256)[],(uint8,uint8,bytes32,bytes32)[])": { "details": "Execute multiple meta-transactions.", "params": { "mtxs": "The meta-transactions.", @@ -482,11 +1230,35 @@ }, "returns": { "returnResults": "The ABI-encoded results of the underlying calls." } }, + "cancelLimitOrder((address,address,uint128,uint128,uint128,address,address,address,address,bytes32,uint64,uint256))": { + "details": "Cancel a single limit order. The caller must be the maker. Silently succeeds if the order has already been cancelled.", + "params": { "order": "The limit order." } + }, + "cancelPairLimitOrders(address,address,uint256)": { + "details": "Cancel all limit orders for a given maker and pair with a salt less than the value provided. The caller must be the maker. Subsequent calls to this function with the same caller and pair require the new salt to be >= the old salt.", + "params": { + "makerToken": "The maker token.", + "minValidSalt": "The new minimum valid salt.", + "takerToken": "The taker token." + } + }, + "cancelPairRfqOrders(address,address,uint256)": { + "details": "Cancel all RFQ orders for a given maker and pair with a salt less than the value provided. The caller must be the maker. Subsequent calls to this function with the same caller and pair require the new salt to be >= the old salt.", + "params": { + "makerToken": "The maker token.", + "minValidSalt": "The new minimum valid salt.", + "takerToken": "The taker token." + } + }, + "cancelRfqOrder((address,address,uint128,uint128,address,address,address,bytes32,uint64,uint256))": { + "details": "Cancel a single RFQ order. The caller must be the maker. Silently succeeds if the order has already been cancelled.", + "params": { "order": "The RFQ order." } + }, "createTransformWallet()": { "details": "Deploy a new flash wallet instance and replace the current one with it. Useful if we somehow break the current wallet instance. Only callable by the owner.", "returns": { "wallet": "The new wallet instance." } }, - "executeMetaTransaction((address,address,uint256,uint256,uint256,uint256,bytes,uint256,address,uint256),bytes)": { + "executeMetaTransaction((address,address,uint256,uint256,uint256,uint256,bytes,uint256,address,uint256),(uint8,uint8,bytes32,bytes32))": { "details": "Execute a single meta-transaction.", "params": { "mtx": "The meta-transaction.", "signature": "The signature by `mtx.signer`." }, "returns": { "returnResult": "The ABI-encoded result of the underlying call." } @@ -498,14 +1270,61 @@ "selector": "The function selector." } }, + "fillLimitOrder((address,address,uint128,uint128,uint128,address,address,address,address,bytes32,uint64,uint256),(uint8,uint8,bytes32,bytes32),uint128)": { + "details": "Fill a limit order. The taker and sender will be the caller.", + "params": { + "order": "The limit order. ETH protocol fees can be attached to this call. Any unspent ETH will be refunded to the caller.", + "signature": "The order signature.", + "takerTokenFillAmount": "Maximum taker token amount to fill this order with." + }, + "returns": { + "makerTokenFilledAmount": "How much maker token was filled.", + "takerTokenFilledAmount": "How much maker token was filled." + } + }, + "fillOrKillLimitOrder((address,address,uint128,uint128,uint128,address,address,address,address,bytes32,uint64,uint256),(uint8,uint8,bytes32,bytes32),uint128)": { + "details": "Fill an RFQ order for exactly `takerTokenFillAmount` taker tokens. The taker will be the caller. ETH protocol fees can be attached to this call. Any unspent ETH will be refunded to the caller.", + "params": { + "order": "The limit order.", + "signature": "The order signature.", + "takerTokenFillAmount": "How much taker token to fill this order with." + }, + "returns": { "makerTokenFilledAmount": "How much maker token was filled." } + }, + "fillOrKillRfqOrder((address,address,uint128,uint128,address,address,address,bytes32,uint64,uint256),(uint8,uint8,bytes32,bytes32),uint128)": { + "details": "Fill an RFQ order for exactly `takerTokenFillAmount` taker tokens. The taker will be the caller.", + "params": { + "order": "The RFQ order.", + "signature": "The order signature.", + "takerTokenFillAmount": "How much taker token to fill this order with." + }, + "returns": { "makerTokenFilledAmount": "How much maker token was filled." } + }, + "fillRfqOrder((address,address,uint128,uint128,address,address,address,bytes32,uint64,uint256),(uint8,uint8,bytes32,bytes32),uint128)": { + "details": "Fill an RFQ order for up to `takerTokenFillAmount` taker tokens. The taker will be the caller.", + "params": { + "order": "The RFQ order.", + "signature": "The order signature.", + "takerTokenFillAmount": "Maximum taker token amount to fill this order with." + }, + "returns": { + "makerTokenFilledAmount": "How much maker token was filled.", + "takerTokenFilledAmount": "How much maker token was filled." + } + }, "getAllowanceTarget()": { "details": "Get the address of the allowance target.", "returns": { "target": "The target of token allowances." } }, - "getFunctionImplementation(bytes4)": { - "details": "Get the implementation contract of a registered function.", - "params": { "selector": "The function selector." }, - "returns": { "impl": "The implementation contract address." } + "getLimitOrderHash((address,address,uint128,uint128,uint128,address,address,address,address,bytes32,uint64,uint256))": { + "details": "Get the canonical hash of a limit order.", + "params": { "order": "The limit order." }, + "returns": { "orderHash": "The order hash." } + }, + "getLimitOrderInfo((address,address,uint128,uint128,uint128,address,address,address,address,bytes32,uint64,uint256))": { + "details": "Get the order info for a limit order.", + "params": { "order": "The limit order." }, + "returns": { "orderInfo": "Info about the order." } }, "getMetaTransactionExecutedBlock((address,address,uint256,uint256,uint256,uint256,bytes,uint256,address,uint256))": { "details": "Get the block at which a meta-transaction has been executed.", @@ -522,10 +1341,24 @@ "params": { "mtxHash": "The meta-transaction hash." }, "returns": { "blockNumber": "The block height when the meta-transactioin was executed." } }, + "getProtocolFeeMultiplier()": { + "details": "Get the protocol fee multiplier. This should be multiplied by the gas price to arrive at the required protocol fee to fill a native order.", + "returns": { "multiplier": "The protocol fee multiplier." } + }, "getQuoteSigner()": { "details": "Return the optional signer for `transformERC20()` calldata.", "returns": { "signer": "The transform deployer address." } }, + "getRfqOrderHash((address,address,uint128,uint128,address,address,address,bytes32,uint64,uint256))": { + "details": "Get the canonical hash of an RFQ order.", + "params": { "order": "The RFQ order." }, + "returns": { "orderHash": "The order hash." } + }, + "getRfqOrderInfo((address,address,uint128,uint128,address,address,address,bytes32,uint64,uint256))": { + "details": "Get the order info for an RFQ order.", + "params": { "order": "The RFQ order." }, + "returns": { "orderInfo": "Info about the order." } + }, "getRollbackEntryAtIndex(bytes4,uint256)": { "details": "Retrieve an entry in the rollback history for a function.", "params": { "idx": "The index in the rollback history.", "selector": "The function selector." }, @@ -572,6 +1405,13 @@ "details": "The owner of this contract.", "returns": { "ownerAddress": "The owner address." } }, + "registerAllowedRfqOrigins(address[],bool)": { + "details": "Mark what tx.origin addresses are allowed to fill an order that specifies the message sender as its txOrigin.", + "params": { + "allowed": "True to register, false to unregister.", + "origins": "An array of origin addresses to update." + } + }, "rollback(bytes4,address)": { "details": "Roll back to a prior implementation of a function.", "params": { @@ -580,17 +1420,17 @@ } }, "sellToLiquidityProvider(address,address,address,address,uint256,uint256,bytes)": { - "details": "Sells `sellAmount` of `takerToken` to the liquidity provider at the given `target`.", + "details": "Sells `sellAmount` of `inputToken` to the liquidity provider at the given `provider` address.", "params": { - "auxiliaryData": "Auxiliary data supplied to the `target` contract.", - "makerToken": "The token being bought.", - "minBuyAmount": "The minimum acceptable amount of `makerToken` to buy. Reverts if this amount is not satisfied.", + "auxiliaryData": "Auxiliary data supplied to the `provider` contract.", + "inputToken": "The token being sold.", + "minBuyAmount": "The minimum acceptable amount of `outputToken` to buy. Reverts if this amount is not satisfied.", + "outputToken": "The token being bought.", + "provider": "The address of the on-chain liquidity provider to trade with.", "recipient": "The recipient of the bought tokens. If equal to address(0), `msg.sender` is assumed to be the recipient.", - "sellAmount": "The amount of `takerToken` to sell.", - "takerToken": "The token being sold.", - "target": "The address of the on-chain liquidity provider to trade with." + "sellAmount": "The amount of `inputToken` to sell." }, - "returns": { "boughtAmount": "The amount of `makerToken` bought." } + "returns": { "boughtAmount": "The amount of `outputToken` bought." } }, "sellToUniswap(address[],uint256,uint256,bool)": { "details": "Efficiently sell directly to uniswap/sushiswap.", @@ -616,6 +1456,10 @@ "details": "Transfers ownership of the contract to a new address.", "params": { "newOwner": "The address that will become the owner." } }, + "transferProtocolFeesForPools(bytes32[])": { + "details": "Transfers protocol fees from the `FeeCollector` pools into the staking contract.", + "params": { "poolIds": "Staking pool IDs" } + }, "transformERC20(address,address,uint256,uint256,(uint32,bytes)[])": { "details": "Executes a series of transformations to convert an ERC20 `inputToken` to an ERC20 `outputToken`.", "params": { @@ -657,7 +1501,8 @@ "evm.bytecode.object", "evm.bytecode.sourceMap", "evm.deployedBytecode.object", - "evm.deployedBytecode.sourceMap" + "evm.deployedBytecode.sourceMap", + "evm.methodIdentifiers" ] } }, diff --git a/packages/contract-artifacts/artifacts/MultiAssetProxy.json b/packages/contract-artifacts/artifacts/MultiAssetProxy.json index cce0ff0097..c5587a1242 100644 --- a/packages/contract-artifacts/artifacts/MultiAssetProxy.json +++ b/packages/contract-artifacts/artifacts/MultiAssetProxy.json @@ -190,10 +190,10 @@ }, "evm": { "bytecode": { - "object": "0x6080604052600080546001600160a01b03191633179055611617806100256000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c80639ad2674411610081578063c585bb931161005b578063c585bb9314610789578063d39de6e9146107bc578063f2fde38b14610814576100d4565b80639ad26744146106cc578063ae25532e14610705578063b918161114610742576100d4565b806360704108116100b2578063607041081461065257806370712939146106915780638da5cb5b146106c4576100d4565b80633fd3c9971461059857806342f1181e14610600578063494503d414610635575b7fffffffff00000000000000000000000000000000000000000000000000000000600035167fa85e59e400000000000000000000000000000000000000000000000000000000811415610592573360005260026020526040600020546101a5577f08c379a0000000000000000000000000000000000000000000000000000000006000527c20000000000000000000000000000000000000000000000000000000006020527c1553454e4445525f4e4f545f415554484f52495a454400000000000000604052600060605260646000fd5b600480350180356020600482030660448210171561022e577f08c379a0000000000000000000000000000000000000000000000000000000006000527c20000000000000000000000000000000000000000000000000000000006020527c19494e56414c49445f41535345545f444154415f4c454e475448000000604052600060605260646000fd5b602081018201368111156102ad577f08c379a0000000000000000000000000000000000000000000000000000000006000527c20000000000000000000000000000000000000000000000000000000006020527c16494e56414c49445f41535345545f444154415f454e44000000000000604052600060605260646000fd5b5050602481013560448201356044820183016020810335925060448201840160208103358085031561034a577f08c379a0000000000000000000000000000000000000000000000000000000006000527c20000000000000000000000000000000000000000000000000000000006020527c0f4c454e4754485f4d49534d4154434800000000000000000000000000604052600060605260646000fd5b5060646000803760806004526000936064359060200285805b82811015610587578086013584810281868204148615176103ef577f08c379a0000000000000000000000000000000000000000000000000000000006000527c20000000000000000000000000000000000000000000000000000000006020527c1055494e543235365f4f564552464c4f57000000000000000000000000604052600060605260646000fd5b60649081528287013589018b01604481019250018135600481101561049e577f08c379a0000000000000000000000000000000000000000000000000000000006000527c20000000000000000000000000000000000000000000000000000000006020527c1e4c454e4754485f475245415445525f5448414e5f335f5245515549526040527f454400000000000000000000000000000000000000000000000000000000000060605260646000fd5b7fffffffff000000000000000000000000000000000000000000000000000000008235168b8103156104df57809b508b608452600160a45260406084205495505b5084610556577f08c379a0000000000000000000000000000000000000000000000000000000006000527c20000000000000000000000000000000000000000000000000000000006020527c1a41535345545f50524f58595f444f45535f4e4f545f45584953540000604052600060605260646000fd5b60208101836084376000808260a401600080895af1925050508061057e573d6000803e3d6000fd5b50602001610363565b505050505050505050005b50600080fd5b6105d7600480360360208110156105ae57600080fd5b50357fffffffff0000000000000000000000000000000000000000000000000000000016610847565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6106336004803603602081101561061657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661086f565b005b6105d76004803603602081101561064b57600080fd5b5035610a5b565b6105d76004803603602081101561066857600080fd5b50357fffffffff0000000000000000000000000000000000000000000000000000000016610a8f565b610633600480360360208110156106a757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610ad9565b6105d7610dcc565b610633600480360360408110156106e257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610de8565b61070d611199565b604080517fffffffff000000000000000000000000000000000000000000000000000000009092168252519081900360200190f35b6107756004803603602081101561075857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166111cf565b604080519115158252519081900360200190f35b6106336004803603602081101561079f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166111e4565b6107c4611446565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156108005781810151838201526020016107e8565b505050509050019250505060405180910390f35b6106336004803603602081101561082a57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166114b5565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff1633146108f557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604090205460ff161561098a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f5441524745545f414c52454144595f415554484f52495a454400000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811660008181526002602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915560038054918201815583527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001684179055513392917f3147867c59d17e8fa9d522465651d44aae0a9e38f902f3475b97e58072f0ed4c91a350565b60038181548110610a6857fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b7fffffffff000000000000000000000000000000000000000000000000000000001660009081526001602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60005473ffffffffffffffffffffffffffffffffffffffff163314610b5f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604090205460ff16610bf357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f5441524745545f4e4f545f415554484f52495a45440000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116600090815260026020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555b600354811015610d85578173ffffffffffffffffffffffffffffffffffffffff1660038281548110610c6d57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff161415610d7d57600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101908110610cc557fe5b6000918252602090912001546003805473ffffffffffffffffffffffffffffffffffffffff9092169183908110610cf857fe5b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190610d77908261159b565b50610d85565b600101610c3f565b50604051339073ffffffffffffffffffffffffffffffffffffffff8316907f1f32c1b084e2de0713b8fb16bd46bb9df710a3dbeae2f3ca93af46e016dcc6b090600090a350565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff163314610e6e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526002602052604090205460ff16610f0257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f5441524745545f4e4f545f415554484f52495a45440000000000000000000000604482015290519081900360640190fd5b6003548110610f7257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e4445585f4f55545f4f465f424f554e445300000000000000000000000000604482015290519081900360640190fd5b8173ffffffffffffffffffffffffffffffffffffffff1660038281548110610f9657fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff161461102457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f415554484f52495a45445f414444524553535f4d49534d415443480000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8216600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810190811061109f57fe5b6000918252602090912001546003805473ffffffffffffffffffffffffffffffffffffffff90921691839081106110d257fe5b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190611151908261159b565b50604051339073ffffffffffffffffffffffffffffffffffffffff8416907f1f32c1b084e2de0713b8fb16bd46bb9df710a3dbeae2f3ca93af46e016dcc6b090600090a35050565b604080517f4d756c746941737365742875696e743235365b5d2c62797465735b5d290000008152905190819003601d0190205b90565b60026020526000908152604090205460ff1681565b60005473ffffffffffffffffffffffffffffffffffffffff16331461126a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b60008173ffffffffffffffffffffffffffffffffffffffff1663ae25532e6040518163ffffffff1660e01b815260040160206040518083038186803b1580156112b257600080fd5b505afa1580156112c6573d6000803e3d6000fd5b505050506040513d60208110156112dc57600080fd5b50517fffffffff00000000000000000000000000000000000000000000000000000000811660009081526001602052604090205490915073ffffffffffffffffffffffffffffffffffffffff16801561139657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f41535345545f50524f58595f414c52454144595f455849535453000000000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000821660008181526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff881690811790915582519384529083015280517fd2c6b762299c609bdb96520b58a49bfb80186934d4f71a86a367571a15c031949281900390910190a1505050565b606060038054806020026020016040519081016040528092919081815260200182805480156114ab57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611480575b5050505050905090565b60005473ffffffffffffffffffffffffffffffffffffffff16331461153b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81161561159857600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790555b50565b8154818355818111156115bf576000838152602090206115bf9181019083016115c4565b505050565b6111cc91905b808211156115de57600081556001016115ca565b509056fea265627a7a72315820ebfea827ef976e2385bd39182ad9bc9353ba40aaf4988ba768c6d29bac7d050164736f6c63430005110032" + "object": "0x6080604052600080546001600160a01b03191633179055611617806100256000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c80639ad2674411610081578063c585bb931161005b578063c585bb9314610789578063d39de6e9146107bc578063f2fde38b14610814576100d4565b80639ad26744146106cc578063ae25532e14610705578063b918161114610742576100d4565b806360704108116100b2578063607041081461065257806370712939146106915780638da5cb5b146106c4576100d4565b80633fd3c9971461059857806342f1181e14610600578063494503d414610635575b7fffffffff00000000000000000000000000000000000000000000000000000000600035167fa85e59e400000000000000000000000000000000000000000000000000000000811415610592573360005260026020526040600020546101a5577f08c379a0000000000000000000000000000000000000000000000000000000006000527c20000000000000000000000000000000000000000000000000000000006020527c1553454e4445525f4e4f545f415554484f52495a454400000000000000604052600060605260646000fd5b600480350180356020600482030660448210171561022e577f08c379a0000000000000000000000000000000000000000000000000000000006000527c20000000000000000000000000000000000000000000000000000000006020527c19494e56414c49445f41535345545f444154415f4c454e475448000000604052600060605260646000fd5b602081018201368111156102ad577f08c379a0000000000000000000000000000000000000000000000000000000006000527c20000000000000000000000000000000000000000000000000000000006020527c16494e56414c49445f41535345545f444154415f454e44000000000000604052600060605260646000fd5b5050602481013560448201356044820183016020810335925060448201840160208103358085031561034a577f08c379a0000000000000000000000000000000000000000000000000000000006000527c20000000000000000000000000000000000000000000000000000000006020527c0f4c454e4754485f4d49534d4154434800000000000000000000000000604052600060605260646000fd5b5060646000803760806004526000936064359060200285805b82811015610587578086013584810281868204148615176103ef577f08c379a0000000000000000000000000000000000000000000000000000000006000527c20000000000000000000000000000000000000000000000000000000006020527c1055494e543235365f4f564552464c4f57000000000000000000000000604052600060605260646000fd5b60649081528287013589018b01604481019250018135600481101561049e577f08c379a0000000000000000000000000000000000000000000000000000000006000527c20000000000000000000000000000000000000000000000000000000006020527c1e4c454e4754485f475245415445525f5448414e5f335f5245515549526040527f454400000000000000000000000000000000000000000000000000000000000060605260646000fd5b7fffffffff000000000000000000000000000000000000000000000000000000008235168b8103156104df57809b508b608452600160a45260406084205495505b5084610556577f08c379a0000000000000000000000000000000000000000000000000000000006000527c20000000000000000000000000000000000000000000000000000000006020527c1a41535345545f50524f58595f444f45535f4e4f545f45584953540000604052600060605260646000fd5b60208101836084376000808260a401600080895af1925050508061057e573d6000803e3d6000fd5b50602001610363565b505050505050505050005b50600080fd5b6105d7600480360360208110156105ae57600080fd5b50357fffffffff0000000000000000000000000000000000000000000000000000000016610847565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6106336004803603602081101561061657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661086f565b005b6105d76004803603602081101561064b57600080fd5b5035610a5b565b6105d76004803603602081101561066857600080fd5b50357fffffffff0000000000000000000000000000000000000000000000000000000016610a8f565b610633600480360360208110156106a757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610ad9565b6105d7610dcc565b610633600480360360408110156106e257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610de8565b61070d611199565b604080517fffffffff000000000000000000000000000000000000000000000000000000009092168252519081900360200190f35b6107756004803603602081101561075857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166111cf565b604080519115158252519081900360200190f35b6106336004803603602081101561079f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166111e4565b6107c4611446565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156108005781810151838201526020016107e8565b505050509050019250505060405180910390f35b6106336004803603602081101561082a57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166114b5565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff1633146108f557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604090205460ff161561098a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f5441524745545f414c52454144595f415554484f52495a454400000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811660008181526002602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915560038054918201815583527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001684179055513392917f3147867c59d17e8fa9d522465651d44aae0a9e38f902f3475b97e58072f0ed4c91a350565b60038181548110610a6857fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b7fffffffff000000000000000000000000000000000000000000000000000000001660009081526001602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60005473ffffffffffffffffffffffffffffffffffffffff163314610b5f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604090205460ff16610bf357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f5441524745545f4e4f545f415554484f52495a45440000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116600090815260026020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555b600354811015610d85578173ffffffffffffffffffffffffffffffffffffffff1660038281548110610c6d57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff161415610d7d57600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101908110610cc557fe5b6000918252602090912001546003805473ffffffffffffffffffffffffffffffffffffffff9092169183908110610cf857fe5b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190610d77908261159b565b50610d85565b600101610c3f565b50604051339073ffffffffffffffffffffffffffffffffffffffff8316907f1f32c1b084e2de0713b8fb16bd46bb9df710a3dbeae2f3ca93af46e016dcc6b090600090a350565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff163314610e6e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526002602052604090205460ff16610f0257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f5441524745545f4e4f545f415554484f52495a45440000000000000000000000604482015290519081900360640190fd5b6003548110610f7257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e4445585f4f55545f4f465f424f554e445300000000000000000000000000604482015290519081900360640190fd5b8173ffffffffffffffffffffffffffffffffffffffff1660038281548110610f9657fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff161461102457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f415554484f52495a45445f414444524553535f4d49534d415443480000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8216600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810190811061109f57fe5b6000918252602090912001546003805473ffffffffffffffffffffffffffffffffffffffff90921691839081106110d257fe5b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190611151908261159b565b50604051339073ffffffffffffffffffffffffffffffffffffffff8416907f1f32c1b084e2de0713b8fb16bd46bb9df710a3dbeae2f3ca93af46e016dcc6b090600090a35050565b604080517f4d756c746941737365742875696e743235365b5d2c62797465735b5d290000008152905190819003601d0190205b90565b60026020526000908152604090205460ff1681565b60005473ffffffffffffffffffffffffffffffffffffffff16331461126a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b60008173ffffffffffffffffffffffffffffffffffffffff1663ae25532e6040518163ffffffff1660e01b815260040160206040518083038186803b1580156112b257600080fd5b505afa1580156112c6573d6000803e3d6000fd5b505050506040513d60208110156112dc57600080fd5b50517fffffffff00000000000000000000000000000000000000000000000000000000811660009081526001602052604090205490915073ffffffffffffffffffffffffffffffffffffffff16801561139657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f41535345545f50524f58595f414c52454144595f455849535453000000000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000821660008181526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff881690811790915582519384529083015280517fd2c6b762299c609bdb96520b58a49bfb80186934d4f71a86a367571a15c031949281900390910190a1505050565b606060038054806020026020016040519081016040528092919081815260200182805480156114ab57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611480575b5050505050905090565b60005473ffffffffffffffffffffffffffffffffffffffff16331461153b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81161561159857600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790555b50565b8154818355818111156115bf576000838152602090206115bf9181019083016115c4565b505050565b6111cc91905b808211156115de57600081556001016115ca565b509056fea265627a7a723158203dfc7b314ffc719acf21f6ed0736e90549714ac6df8a93e13c109883adaf76a964736f6c63430005110032" }, "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b50600436106100d45760003560e01c80639ad2674411610081578063c585bb931161005b578063c585bb9314610789578063d39de6e9146107bc578063f2fde38b14610814576100d4565b80639ad26744146106cc578063ae25532e14610705578063b918161114610742576100d4565b806360704108116100b2578063607041081461065257806370712939146106915780638da5cb5b146106c4576100d4565b80633fd3c9971461059857806342f1181e14610600578063494503d414610635575b7fffffffff00000000000000000000000000000000000000000000000000000000600035167fa85e59e400000000000000000000000000000000000000000000000000000000811415610592573360005260026020526040600020546101a5577f08c379a0000000000000000000000000000000000000000000000000000000006000527c20000000000000000000000000000000000000000000000000000000006020527c1553454e4445525f4e4f545f415554484f52495a454400000000000000604052600060605260646000fd5b600480350180356020600482030660448210171561022e577f08c379a0000000000000000000000000000000000000000000000000000000006000527c20000000000000000000000000000000000000000000000000000000006020527c19494e56414c49445f41535345545f444154415f4c454e475448000000604052600060605260646000fd5b602081018201368111156102ad577f08c379a0000000000000000000000000000000000000000000000000000000006000527c20000000000000000000000000000000000000000000000000000000006020527c16494e56414c49445f41535345545f444154415f454e44000000000000604052600060605260646000fd5b5050602481013560448201356044820183016020810335925060448201840160208103358085031561034a577f08c379a0000000000000000000000000000000000000000000000000000000006000527c20000000000000000000000000000000000000000000000000000000006020527c0f4c454e4754485f4d49534d4154434800000000000000000000000000604052600060605260646000fd5b5060646000803760806004526000936064359060200285805b82811015610587578086013584810281868204148615176103ef577f08c379a0000000000000000000000000000000000000000000000000000000006000527c20000000000000000000000000000000000000000000000000000000006020527c1055494e543235365f4f564552464c4f57000000000000000000000000604052600060605260646000fd5b60649081528287013589018b01604481019250018135600481101561049e577f08c379a0000000000000000000000000000000000000000000000000000000006000527c20000000000000000000000000000000000000000000000000000000006020527c1e4c454e4754485f475245415445525f5448414e5f335f5245515549526040527f454400000000000000000000000000000000000000000000000000000000000060605260646000fd5b7fffffffff000000000000000000000000000000000000000000000000000000008235168b8103156104df57809b508b608452600160a45260406084205495505b5084610556577f08c379a0000000000000000000000000000000000000000000000000000000006000527c20000000000000000000000000000000000000000000000000000000006020527c1a41535345545f50524f58595f444f45535f4e4f545f45584953540000604052600060605260646000fd5b60208101836084376000808260a401600080895af1925050508061057e573d6000803e3d6000fd5b50602001610363565b505050505050505050005b50600080fd5b6105d7600480360360208110156105ae57600080fd5b50357fffffffff0000000000000000000000000000000000000000000000000000000016610847565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6106336004803603602081101561061657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661086f565b005b6105d76004803603602081101561064b57600080fd5b5035610a5b565b6105d76004803603602081101561066857600080fd5b50357fffffffff0000000000000000000000000000000000000000000000000000000016610a8f565b610633600480360360208110156106a757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610ad9565b6105d7610dcc565b610633600480360360408110156106e257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610de8565b61070d611199565b604080517fffffffff000000000000000000000000000000000000000000000000000000009092168252519081900360200190f35b6107756004803603602081101561075857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166111cf565b604080519115158252519081900360200190f35b6106336004803603602081101561079f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166111e4565b6107c4611446565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156108005781810151838201526020016107e8565b505050509050019250505060405180910390f35b6106336004803603602081101561082a57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166114b5565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff1633146108f557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604090205460ff161561098a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f5441524745545f414c52454144595f415554484f52495a454400000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811660008181526002602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915560038054918201815583527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001684179055513392917f3147867c59d17e8fa9d522465651d44aae0a9e38f902f3475b97e58072f0ed4c91a350565b60038181548110610a6857fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b7fffffffff000000000000000000000000000000000000000000000000000000001660009081526001602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60005473ffffffffffffffffffffffffffffffffffffffff163314610b5f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604090205460ff16610bf357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f5441524745545f4e4f545f415554484f52495a45440000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116600090815260026020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555b600354811015610d85578173ffffffffffffffffffffffffffffffffffffffff1660038281548110610c6d57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff161415610d7d57600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101908110610cc557fe5b6000918252602090912001546003805473ffffffffffffffffffffffffffffffffffffffff9092169183908110610cf857fe5b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190610d77908261159b565b50610d85565b600101610c3f565b50604051339073ffffffffffffffffffffffffffffffffffffffff8316907f1f32c1b084e2de0713b8fb16bd46bb9df710a3dbeae2f3ca93af46e016dcc6b090600090a350565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff163314610e6e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526002602052604090205460ff16610f0257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f5441524745545f4e4f545f415554484f52495a45440000000000000000000000604482015290519081900360640190fd5b6003548110610f7257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e4445585f4f55545f4f465f424f554e445300000000000000000000000000604482015290519081900360640190fd5b8173ffffffffffffffffffffffffffffffffffffffff1660038281548110610f9657fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff161461102457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f415554484f52495a45445f414444524553535f4d49534d415443480000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8216600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810190811061109f57fe5b6000918252602090912001546003805473ffffffffffffffffffffffffffffffffffffffff90921691839081106110d257fe5b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190611151908261159b565b50604051339073ffffffffffffffffffffffffffffffffffffffff8416907f1f32c1b084e2de0713b8fb16bd46bb9df710a3dbeae2f3ca93af46e016dcc6b090600090a35050565b604080517f4d756c746941737365742875696e743235365b5d2c62797465735b5d290000008152905190819003601d0190205b90565b60026020526000908152604090205460ff1681565b60005473ffffffffffffffffffffffffffffffffffffffff16331461126a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b60008173ffffffffffffffffffffffffffffffffffffffff1663ae25532e6040518163ffffffff1660e01b815260040160206040518083038186803b1580156112b257600080fd5b505afa1580156112c6573d6000803e3d6000fd5b505050506040513d60208110156112dc57600080fd5b50517fffffffff00000000000000000000000000000000000000000000000000000000811660009081526001602052604090205490915073ffffffffffffffffffffffffffffffffffffffff16801561139657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f41535345545f50524f58595f414c52454144595f455849535453000000000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000821660008181526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff881690811790915582519384529083015280517fd2c6b762299c609bdb96520b58a49bfb80186934d4f71a86a367571a15c031949281900390910190a1505050565b606060038054806020026020016040519081016040528092919081815260200182805480156114ab57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611480575b5050505050905090565b60005473ffffffffffffffffffffffffffffffffffffffff16331461153b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81161561159857600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790555b50565b8154818355818111156115bf576000838152602090206115bf9181019083016115c4565b505050565b6111cc91905b808211156115de57600081556001016115ca565b509056fea265627a7a72315820ebfea827ef976e2385bd39182ad9bc9353ba40aaf4988ba768c6d29bac7d050164736f6c63430005110032" + "object": "0x608060405234801561001057600080fd5b50600436106100d45760003560e01c80639ad2674411610081578063c585bb931161005b578063c585bb9314610789578063d39de6e9146107bc578063f2fde38b14610814576100d4565b80639ad26744146106cc578063ae25532e14610705578063b918161114610742576100d4565b806360704108116100b2578063607041081461065257806370712939146106915780638da5cb5b146106c4576100d4565b80633fd3c9971461059857806342f1181e14610600578063494503d414610635575b7fffffffff00000000000000000000000000000000000000000000000000000000600035167fa85e59e400000000000000000000000000000000000000000000000000000000811415610592573360005260026020526040600020546101a5577f08c379a0000000000000000000000000000000000000000000000000000000006000527c20000000000000000000000000000000000000000000000000000000006020527c1553454e4445525f4e4f545f415554484f52495a454400000000000000604052600060605260646000fd5b600480350180356020600482030660448210171561022e577f08c379a0000000000000000000000000000000000000000000000000000000006000527c20000000000000000000000000000000000000000000000000000000006020527c19494e56414c49445f41535345545f444154415f4c454e475448000000604052600060605260646000fd5b602081018201368111156102ad577f08c379a0000000000000000000000000000000000000000000000000000000006000527c20000000000000000000000000000000000000000000000000000000006020527c16494e56414c49445f41535345545f444154415f454e44000000000000604052600060605260646000fd5b5050602481013560448201356044820183016020810335925060448201840160208103358085031561034a577f08c379a0000000000000000000000000000000000000000000000000000000006000527c20000000000000000000000000000000000000000000000000000000006020527c0f4c454e4754485f4d49534d4154434800000000000000000000000000604052600060605260646000fd5b5060646000803760806004526000936064359060200285805b82811015610587578086013584810281868204148615176103ef577f08c379a0000000000000000000000000000000000000000000000000000000006000527c20000000000000000000000000000000000000000000000000000000006020527c1055494e543235365f4f564552464c4f57000000000000000000000000604052600060605260646000fd5b60649081528287013589018b01604481019250018135600481101561049e577f08c379a0000000000000000000000000000000000000000000000000000000006000527c20000000000000000000000000000000000000000000000000000000006020527c1e4c454e4754485f475245415445525f5448414e5f335f5245515549526040527f454400000000000000000000000000000000000000000000000000000000000060605260646000fd5b7fffffffff000000000000000000000000000000000000000000000000000000008235168b8103156104df57809b508b608452600160a45260406084205495505b5084610556577f08c379a0000000000000000000000000000000000000000000000000000000006000527c20000000000000000000000000000000000000000000000000000000006020527c1a41535345545f50524f58595f444f45535f4e4f545f45584953540000604052600060605260646000fd5b60208101836084376000808260a401600080895af1925050508061057e573d6000803e3d6000fd5b50602001610363565b505050505050505050005b50600080fd5b6105d7600480360360208110156105ae57600080fd5b50357fffffffff0000000000000000000000000000000000000000000000000000000016610847565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6106336004803603602081101561061657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661086f565b005b6105d76004803603602081101561064b57600080fd5b5035610a5b565b6105d76004803603602081101561066857600080fd5b50357fffffffff0000000000000000000000000000000000000000000000000000000016610a8f565b610633600480360360208110156106a757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610ad9565b6105d7610dcc565b610633600480360360408110156106e257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610de8565b61070d611199565b604080517fffffffff000000000000000000000000000000000000000000000000000000009092168252519081900360200190f35b6107756004803603602081101561075857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166111cf565b604080519115158252519081900360200190f35b6106336004803603602081101561079f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166111e4565b6107c4611446565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156108005781810151838201526020016107e8565b505050509050019250505060405180910390f35b6106336004803603602081101561082a57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166114b5565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff1633146108f557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604090205460ff161561098a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f5441524745545f414c52454144595f415554484f52495a454400000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811660008181526002602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915560038054918201815583527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001684179055513392917f3147867c59d17e8fa9d522465651d44aae0a9e38f902f3475b97e58072f0ed4c91a350565b60038181548110610a6857fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b7fffffffff000000000000000000000000000000000000000000000000000000001660009081526001602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60005473ffffffffffffffffffffffffffffffffffffffff163314610b5f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604090205460ff16610bf357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f5441524745545f4e4f545f415554484f52495a45440000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116600090815260026020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555b600354811015610d85578173ffffffffffffffffffffffffffffffffffffffff1660038281548110610c6d57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff161415610d7d57600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101908110610cc557fe5b6000918252602090912001546003805473ffffffffffffffffffffffffffffffffffffffff9092169183908110610cf857fe5b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190610d77908261159b565b50610d85565b600101610c3f565b50604051339073ffffffffffffffffffffffffffffffffffffffff8316907f1f32c1b084e2de0713b8fb16bd46bb9df710a3dbeae2f3ca93af46e016dcc6b090600090a350565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff163314610e6e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526002602052604090205460ff16610f0257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f5441524745545f4e4f545f415554484f52495a45440000000000000000000000604482015290519081900360640190fd5b6003548110610f7257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e4445585f4f55545f4f465f424f554e445300000000000000000000000000604482015290519081900360640190fd5b8173ffffffffffffffffffffffffffffffffffffffff1660038281548110610f9657fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff161461102457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f415554484f52495a45445f414444524553535f4d49534d415443480000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8216600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810190811061109f57fe5b6000918252602090912001546003805473ffffffffffffffffffffffffffffffffffffffff90921691839081106110d257fe5b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190611151908261159b565b50604051339073ffffffffffffffffffffffffffffffffffffffff8416907f1f32c1b084e2de0713b8fb16bd46bb9df710a3dbeae2f3ca93af46e016dcc6b090600090a35050565b604080517f4d756c746941737365742875696e743235365b5d2c62797465735b5d290000008152905190819003601d0190205b90565b60026020526000908152604090205460ff1681565b60005473ffffffffffffffffffffffffffffffffffffffff16331461126a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b60008173ffffffffffffffffffffffffffffffffffffffff1663ae25532e6040518163ffffffff1660e01b815260040160206040518083038186803b1580156112b257600080fd5b505afa1580156112c6573d6000803e3d6000fd5b505050506040513d60208110156112dc57600080fd5b50517fffffffff00000000000000000000000000000000000000000000000000000000811660009081526001602052604090205490915073ffffffffffffffffffffffffffffffffffffffff16801561139657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f41535345545f50524f58595f414c52454144595f455849535453000000000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000821660008181526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff881690811790915582519384529083015280517fd2c6b762299c609bdb96520b58a49bfb80186934d4f71a86a367571a15c031949281900390910190a1505050565b606060038054806020026020016040519081016040528092919081815260200182805480156114ab57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611480575b5050505050905090565b60005473ffffffffffffffffffffffffffffffffffffffff16331461153b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81161561159857600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790555b50565b8154818355818111156115bf576000838152602090206115bf9181019083016115c4565b505050565b6111cc91905b808211156115de57600081556001016115ca565b509056fea265627a7a723158203dfc7b314ffc719acf21f6ed0736e90549714ac6df8a93e13c109883adaf76a964736f6c63430005110032" } } }, diff --git a/packages/contract-artifacts/artifacts/Staking.json b/packages/contract-artifacts/artifacts/Staking.json index 49adb8bcde..40d4909ab9 100644 --- a/packages/contract-artifacts/artifacts/Staking.json +++ b/packages/contract-artifacts/artifacts/Staking.json @@ -928,16 +928,16 @@ }, "evm": { "bytecode": { - "object": "0x6080604052600080546001600160a01b031916331790556156b7806100256000396000f3fe6080604052600436106103295760003560e01c80638da5cb5b116101a5578063bb7ef7e0116100ec578063e8eeb3f811610095578063f18765321161006f578063f1876532146108bf578063f252b7a1146108df578063f2fde38b146108ff578063ff691b111461091f57610329565b8063e8eeb3f814610875578063e907f0031461088a578063ee99205c146108aa57610329565b8063e0ee036e116100c6578063e0ee036e1461082b578063e1c7392a14610840578063e804d0a41461085557610329565b8063bb7ef7e0146107c9578063c18c9141146107e9578063d39de6e91461080957610329565b8063a694fc3a1161014e578063b3e3337911610128578063b3e3337914610769578063b510879f14610789578063b9181611146107a957610329565b8063a694fc3a1461071f578063b05315241461073f578063b2baa33e1461075457610329565b8063a26171e21161017f578063a26171e2146106e2578063a3b4a327146106f7578063a657e5791461070a57610329565b80638da5cb5b1461068d5780639ad26744146106a25780639c3ccc82146106c257610329565b80634bcc3f6711610274578063624a72321161021d57806370712939116101f757806370712939146106165780637667180814610636578063816667961461064b5780638a2e271a1461066d57610329565b8063624a7232146105cc57806363403801146105e157806368a7d6cd146105f657610329565b80635bd4ab731161024e5780635bd4ab73146105595780635d91121d146105865780635e615a6b146105a657610329565b80634bcc3f67146104f7578063587da0231461052457806358f6c7e31461053957610329565b80633c277fc5116102d657806344a6958b116102b057806344a6958b1461048a57806346b97959146104aa578063494503d4146104d757610329565b80633c277fc51461041b5780633e4ad7321461043d57806342f1181e1461046a57610329565b80632a94c279116103075780632a94c2791461039b5780632e17de78146103ca57806338229d93146103ea57610329565b806301e28d841461032e5780630b9663db146103505780631e7ff8f61461037b575b600080fd5b34801561033a57600080fd5b5061034e610349366004614fd2565b61093f565b005b34801561035c57600080fd5b50610365610a0d565b6040516103729190615332565b60405180910390f35b34801561038757600080fd5b50610365610396366004614fd2565b610b5a565b3480156103a757600080fd5b506103bb6103b63660046150e6565b610bf4565b6040516103729392919061551f565b3480156103d657600080fd5b5061034e6103e53660046150aa565b610c20565b3480156103f657600080fd5b5061040a6104053660046150aa565b610dd5565b604051610372959493929190615550565b34801561042757600080fd5b50610430610e04565b604051610372919061522f565b34801561044957600080fd5b5061045d6104583660046150aa565b610e1c565b60405161037291906154e0565b34801561047657600080fd5b5061034e610485366004614fd2565b610e3b565b34801561049657600080fd5b5061045d6104a5366004615057565b610e4f565b3480156104b657600080fd5b506104ca6104c53660046150aa565b610eae565b604051610372919061548c565b3480156104e357600080fd5b506104306104f23660046150aa565b610ef9565b34801561050357600080fd5b506105176105123660046150aa565b610f2d565b60405161037291906154ad565b34801561053057600080fd5b50610365610f8f565b34801561054557600080fd5b5061034e61055436600461514f565b610f95565b34801561056557600080fd5b50610579610574366004614fd2565b611192565b6040516103729190615327565b34801561059257600080fd5b5061034e6105a1366004615107565b6111a7565b3480156105b257600080fd5b506105bb611270565b604051610372959493929190615573565b3480156105d857600080fd5b50610430611299565b3480156105ed57600080fd5b506103656112b1565b34801561060257600080fd5b50610365610611366004615202565b6112b7565b34801561062257600080fd5b5061034e610631366004614fd2565b6113f0565b34801561064257600080fd5b506103656114a5565b34801561065757600080fd5b506106606114ab565b60405161037291906155b7565b34801561067957600080fd5b5061034e610688366004614fd2565b6114b7565b34801561069957600080fd5b50610430611579565b3480156106ae57600080fd5b5061034e6106bd36600461502d565b611595565b3480156106ce57600080fd5b5061034e6106dd3660046151a4565b6115a7565b3480156106ee57600080fd5b50610365611621565b61034e610705366004614fed565b611627565b34801561071657600080fd5b50610365611877565b34801561072b57600080fd5b5061034e61073a3660046150aa565b61187d565b34801561074b57600080fd5b50610365611992565b34801561076057600080fd5b50610365611998565b34801561077557600080fd5b5061034e6107843660046150aa565b6119b6565b34801561079557600080fd5b5061034e6107a43660046150aa565b6119f6565b3480156107b557600080fd5b506105796107c4366004614fd2565b611a00565b3480156107d557600080fd5b506103656107e43660046150aa565b611a15565b3480156107f557600080fd5b506103656108043660046150aa565b611aa0565b34801561081557600080fd5b5061081e611ab2565b60405161037291906152ce565b34801561083757600080fd5b50610660611b21565b34801561084c57600080fd5b5061034e611b2d565b34801561086157600080fd5b5061045d610870366004615133565b611b47565b34801561088157600080fd5b50610660611c97565b34801561089657600080fd5b506103656108a53660046150c2565b611cab565b3480156108b657600080fd5b50610430611d48565b3480156108cb57600080fd5b506103656108da366004614fd2565b611d64565b3480156108eb57600080fd5b5061045d6108fa36600461502d565b611d76565b34801561090b57600080fd5b5061034e61091a366004614fd2565b611db7565b34801561092b57600080fd5b5061034e61093a3660046150aa565b611e5a565b610947612087565b73ffffffffffffffffffffffffffffffffffffffff811660009081526010602052604090205460ff16610987576109876109826001836120aa565b61214c565b73ffffffffffffffffffffffffffffffffffffffff81166000908152601060205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055517ff50d0d312d501878616eb5e78ebf3ed6dcd3955aaef8165af9c6b057cc4832fb90610a0290839061522f565b60405180910390a150565b600c5460009081610a2582600163ffffffff61215416565b6000818152601660205260409020600101549091508015610a4d57610a4d6109828383612173565b610a55612190565b610a5d612203565b600084815260166020526040902055610a74614eba565b50600083815260166020908152604091829020825160a08101845281548082526001830154938201849052600283015482860181905260038401546060840181905260049094015460808401529451919488947fbb4a26fa0ace13ee4da343896c20eaa44a618fb9071fdd8c2e2c960a4583189d94610af69491939291615535565b60405180910390a2610b066122a7565b6020810151610b4d57805160405185917fb463d19ecf455be65365092cf8e1db6934a0334cf8cd532ddf9964d01f36b5b291610b449160009161537d565b60405180910390a25b6020015193505050505b90565b6000610b64611299565b73ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b8152600401610b9c919061522f565b60206040518083038186803b158015610bb457600080fd5b505afa158015610bc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610bec919081019061518c565b90505b919050565b601560209081526000928352604080842090915290825290208054600182015460029092015490919083565b33610c29614ee9565b73ffffffffffffffffffffffffffffffffffffffff821660009081527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc60205260409020610c76906122ea565b90506000610ca882602001516bffffffffffffffffffffffff1683604001516bffffffffffffffffffffffff16612390565b905080841115610cbf57610cbf61098285836123a6565b73ffffffffffffffffffffffffffffffffffffffff831660009081527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc60205260409020610d0d90856123c3565b610d15611299565b73ffffffffffffffffffffffffffffffffffffffff16639470b0bd84866040518363ffffffff1660e01b8152600401610d4f9291906152a8565b600060405180830381600087803b158015610d6957600080fd5b505af1158015610d7d573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f85082129d87b2fe11527cb1b3b7a520aeb5aa6913f88a3d8757fe40d1db02fdd85604051610dc79190615332565b60405180910390a250505050565b601660205260009081526040902080546001820154600283015460038401546004909401549293919290919085565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc290565b610e24614ee9565b6000828152600760205260409020610bec906122ea565b610e4361244a565b610e4c81612491565b50565b610e57614ee9565b610ea560056000846001811115610e6a57fe5b60ff1681526020808201929092526040908101600090812073ffffffffffffffffffffffffffffffffffffffff8816825290925290206122ea565b90505b92915050565b610eb6614f09565b506000908152601560209081526040808320600c548452825291829020825160608101845281548152600182015492810192909252600201549181019190915290565b60028181548110610f0657fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b610f35614f2a565b506000908152600a602090815260409182902082518084019093525473ffffffffffffffffffffffffffffffffffffffff8116835274010000000000000000000000000000000000000000900463ffffffff169082015290565b600d5481565b3381610fa1575061118d565b6000610fb06020860186615133565b6001811115610fbb57fe5b148015610fdf57506000610fd26020850185615133565b6001811115610fdd57fe5b145b15610fea575061118d565b6001610ff96020860186615133565b600181111561100457fe5b141561101957611019846020013582846125c2565b60016110286020850185615133565b600181111561103357fe5b1415611048576110488360200135828461265b565b600060058161105a6020880188615133565b600181111561106557fe5b60ff1681526020808201929092526040908101600090812073ffffffffffffffffffffffffffffffffffffffff86168252835290812092509060059082906110af90880188615133565b60018111156110ba57fe5b60ff1681526020808201929092526040908101600090812073ffffffffffffffffffffffffffffffffffffffff87168252909252902090506110fd8282866126f4565b60208086013590870180359073ffffffffffffffffffffffffffffffffffffffff8616907f7d3ad1dcf03b9027064d1d9a474a69e0cecc31324c541d3eb9b5e6fa2f106c8d90889061114f908c615133565b600181111561115a57fe5b61116760208c018c615133565b600181111561117257fe5b6040516111819392919061559e565b60405180910390a45050505b505050565b60106020526000908152604090205460ff1681565b816111b1816127ed565b6000838152600a602052604090205474010000000000000000000000000000000000000000900463ffffffff166111e9848285612826565b6000848152600a60205260409081902080547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000063ffffffff8716021790555184907f8ea2a7a959bd25f226b7b0a4393613f7fdcaa8404e8bad96aa52dc1c1459016790610dc790849087906155c8565b601154601254601354601454929363ffffffff9283169391928281169264010000000090041690565b73ba7f8b5fb1b19c1211c5d49550fcd149177a5eaf90565b60115481565b60085460009033906112d090600163ffffffff61286e16565b600881905591506112e582620f424086612826565b6112ed614f2a565b5060408051808201825273ffffffffffffffffffffffffffffffffffffffff838116825263ffffffff87811660208085019182526000888152600a9091528590208451815492517fffffffffffffffffffffffff00000000000000000000000000000000000000009093169416939093177fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000919092160217905590517fcec6fc86ea644053f6edff1160dfe3fa5c61e7a5ef9f873f145bb03a0bd319e7906113d19085908590899061533b565b60405180910390a183156113e8576113e8836119b6565b505092915050565b6113f861244a565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff16611431576114316109828261288a565b60005b6002548110156114a1578173ffffffffffffffffffffffffffffffffffffffff166002828154811061146257fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff161415611499576114948282612929565b6114a1565b600101611434565b5050565b600c5481565b60145463ffffffff1681565b6114bf612087565b73ffffffffffffffffffffffffffffffffffffffff811660009081526010602052604090205460ff16156114fb576114fb6109826000836120aa565b73ffffffffffffffffffffffffffffffffffffffff81166000908152601060205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055517f3e535d1ab441ef41c268fd9b52b478aee02d693c5ca2a84b5d26b89e0922e5e190610a0290839061522f565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b61159d61244a565b6114a18282612929565b6115af612087565b6115bc8585858585612b78565b3073ffffffffffffffffffffffffffffffffffffffff1663c6f3a4276040518163ffffffff1660e01b815260040160006040518083038186803b15801561160257600080fd5b505afa158015611616573d6000803e3d6000fd5b505050505050505050565b60135481565b3360009081526010602052604090205460ff1661164a5761164a61098233612c3b565b61165381612c56565b3461172d57611660610e04565b73ffffffffffffffffffffffffffffffffffffffff166323b872dd8330846040518463ffffffff1660e01b815260040161169c93929190615277565b602060405180830381600087803b1580156116b657600080fd5b505af11580156116ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506116ee919081019061508e565b61172d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172490615455565b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83166000908152600960205260409020548061175e575061118d565b600061176982610e1c565b602001516bffffffffffffffffffffffff16905060135481101561178e57505061118d565b600c5460008381526015602090815260408083208484528252808320601690925290912081548061183d576000806117c68888612c77565b6002870182905560018701819055600386015491935091506117ee908263ffffffff61286e16565b60038501556001808501546118089163ffffffff61286e16565b6001850155604051889087907f14b098103235344975b17508c2391721cc9ac3f3fa2b56c7ff46f8480dfd074f90600090a350505b61184d818863ffffffff61286e16565b83556002820154611864908863ffffffff61286e16565b8260020181905550505050505050505050565b60085481565b33611886611299565b73ffffffffffffffffffffffffffffffffffffffff166315cc36f282846040518363ffffffff1660e01b81526004016118c09291906152a8565b600060405180830381600087803b1580156118da57600080fd5b505af11580156118ee573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff811660009081527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc602052604090206119409083612d03565b8073ffffffffffffffffffffffffffffffffffffffff167febedb8b3c678666e7f36970bc8f57abf6d8fa2e828c0da91ea5b75bf68ed101a836040516119869190615332565b60405180910390a25050565b60175481565b60006119b1601154600d5461286e90919063ffffffff16565b905090565b3360008181526009602052604080822084905551839183917f5640833634fce74eb9211d1209a91dd5a1c8c6a751696bff9323b4db67f815139190a35050565b610e4c8133612d6d565b60016020526000908152604090205460ff1681565b6000611a1f614f2a565b506000828152600a6020908152604080832081518083019092525473ffffffffffffffffffffffffffffffffffffffff8116825274010000000000000000000000000000000000000000900463ffffffff16918101919091529080611a8385612f45565b91509150611a9683602001518383613002565b5095945050505050565b600b6020526000908152604090205481565b60606002805480602002602001604051908101604052809291908181526020018280548015611b1757602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611aec575b5050505050905090565b60125463ffffffff1681565b611b35612087565b611b3d613043565b611b45613056565b565b611b4f614ee9565b60016000526004602052611b827fabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe056122ea565b90506000826001811115611b9257fe5b1415610bef576000611ba2611299565b73ffffffffffffffffffffffffffffffffffffffff16639706e0c06040518163ffffffff1660e01b815260040160206040518083038186803b158015611be757600080fd5b505afa158015611bfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611c1f919081019061518c565b9050611c4e611c4983602001516bffffffffffffffffffffffff168361215490919063ffffffff16565b613081565b6bffffffffffffffffffffffff90811660208401526040830151611c7e91611c499184911663ffffffff61215416565b6bffffffffffffffffffffffff16604083015250919050565b601454640100000000900463ffffffff1681565b6000611cb5614f2a565b506000838152600a6020908152604080832081518083019092525473ffffffffffffffffffffffffffffffffffffffff8116825274010000000000000000000000000000000000000000900463ffffffff16918101919091529080611d1986612f45565b915091506000611d2e84602001518484613002565b915050611d3d878783856130a5565b979650505050505050565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b60096020526000908152604090205481565b611d7e614ee9565b73ffffffffffffffffffffffffffffffffffffffff831660009081526006602090815260408083208584529091529020610ea5906122ea565b611dbf61244a565b73ffffffffffffffffffffffffffffffffffffffff8116611dea57611de56109826131f2565b610e4c565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b600c546000611e7082600163ffffffff61215416565b9050611e7a614eba565b50600081815260166020908152604091829020825160a08101845281548152600182015492810183905260028201549381019390935260038101546060840152600401546080830152611ecf57505050610e4c565b611ed7614f09565b5060008481526015602090815260408083208584528252918290208251606081018452815480825260018301549382019390935260029091015492810192909252611f255750505050610e4c565b6000858152601560209081526040808320868452909152812081815560018101829055600201819055611f588284613229565b9050600080611f6c8884866040015161329e565b9150915087877ff1116b309178aa62dcb6bf8c3b8bc2321724907c7ebf52192d14c8ce3aa9194c8484604051611fa392919061537d565b60405180910390a36000611fbd838363ffffffff61286e16565b6080870151909150611fd5908263ffffffff61286e16565b6080870181905260008881526016602090815260409091206004019190915586015161200890600163ffffffff61215416565b602080880182815260008a8152601690925260409091206001019190915551611616576080860151865188917fb463d19ecf455be65365092cf8e1db6934a0334cf8cd532ddf9964d01f36b5b291612066908263ffffffff61215416565b60405161207492919061537d565b60405180910390a2505050505050505050565b3360009081526001602052604090205460ff16611b4557611b45610982336133ee565b606063b9588e4360e01b83836040516024016120c79291906153c5565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905092915050565b805160208201fd5b60008282111561216d5761216d61098260028585613409565b50900390565b606063614b800a60e01b83836040516024016120c792919061537d565b30318015610e4c576121a0610e04565b73ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b1580156121e757600080fd5b505af11580156121fb573d6000803e3d6000fd5b505050505050565b60006119b1601754612213610e04565b73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161224b919061522f565b60206040518083038186803b15801561226357600080fd5b505afa158015612277573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061229b919081019061518c565b9063ffffffff61215416565b4260006122b2611998565b9050818111156122c9576122c961098282846134ae565b600c546000906122e090600163ffffffff61286e16565b600c555050600d55565b6122f2614ee9565b5060408051606081018252825467ffffffffffffffff81168083526bffffffffffffffffffffffff680100000000000000008304811660208501527401000000000000000000000000000000000000000090920490911692820192909252600c54909181111561238a57612365816134cb565b67ffffffffffffffff16825260408201516bffffffffffffffffffffffff1660208301525b50919050565b600081831061239f5781610ea5565b5090919050565b60606384c8b7c960e01b83836040516024016120c792919061537d565b6123cb614ee9565b6123d4836122ea565b90506123fe611c498383604001516bffffffffffffffffffffffff1661215490919063ffffffff16565b6bffffffffffffffffffffffff9081166040830152602082015161242d91611c4991168463ffffffff61215416565b6bffffffffffffffffffffffff16602082015261118d83826134eb565b60005473ffffffffffffffffffffffffffffffffffffffff163314611b4557600054611b459061098290339073ffffffffffffffffffffffffffffffffffffffff166135a5565b73ffffffffffffffffffffffffffffffffffffffff81166124b7576124b76109826135c2565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff16156124f1576124f1610982826135f9565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168317905560028054928301815583527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001684179055513392917f3147867c59d17e8fa9d522465651d44aae0a9e38f902f3475b97e58072f0ed4c91a350565b6125cb83613614565b6125d58383612d6d565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600660209081526040808320868452909152902061260f908261364b565b6000838152600760205260409020612627908261364b565b6001600052600460205261118d7fabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe058261364b565b61266483613614565b61266e8383612d6d565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260066020908152604080832086845290915290206126a890826136a3565b60008381526007602052604090206126c090826136a3565b6001600052600460205261118d7fabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05826136a3565b6126fe83836136de565b156127085761118d565b612710614ee9565b612719846122ea565b9050612723614ee9565b61272c846122ea565b905081604001516bffffffffffffffffffffffff16831115612767576127676109828484604001516bffffffffffffffffffffffff166123a6565b604082015161278e90611c49906bffffffffffffffffffffffff168563ffffffff61215416565b6bffffffffffffffffffffffff9081166040808501919091528201516127bf91611c4991168563ffffffff61286e16565b6bffffffffffffffffffffffff1660408201526127dc85836134eb565b6127e684826134eb565b5050505050565b6000818152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff163381146114a1576114a161098233846136e5565b620f424063ffffffff8216111561284b5761284661098260008584613702565b61118d565b8163ffffffff168163ffffffff16111561118d5761118d61098260018584613702565b600082820183811015610ea557610ea561098260008686613409565b606063eb5108a260e01b826040516024016128a5919061522f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050919050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205460ff16612962576129626109828361288a565b600254811061297d5761297d61098282600280549050613721565b8173ffffffffffffffffffffffffffffffffffffffff16600282815481106129a157fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1614612a0357612a03610982600283815481106129db57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff168461373e565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101908110612a7e57fe5b6000918252602090912001546002805473ffffffffffffffffffffffffffffffffffffffff9092169183908110612ab157fe5b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190612b309082614f41565b50604051339073ffffffffffffffffffffffffffffffffffffffff8416907f1f32c1b084e2de0713b8fb16bd46bb9df710a3dbeae2f3ca93af46e016dcc6b090600090a35050565b60118590556012805463ffffffff8087167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000092831617909255601385905560148054848416640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff9487169190931617929092161790556040517f613157dbb0e920deab8ad6ddd3805e87cbf57344b9fe780f1764790ec789754290612c2c9087908790879087908790615573565b60405180910390a15050505050565b606063b56d2df060e01b826040516024016128a5919061522f565b803414158015612c6557503415155b15610e4c57610e4c610982823461375b565b6000828152600a602052604081205481908190612caa9073ffffffffffffffffffffffffffffffffffffffff1686611d76565b602001516bffffffffffffffffffffffff169050612cce848263ffffffff61215416565b601254909350612cf990612cec9063ffffffff16620f424086613778565b829063ffffffff61286e16565b9150509250929050565b612d0b614ee9565b612d14836122ea565b9050612d3e611c498383604001516bffffffffffffffffffffffff1661286e90919063ffffffff16565b6bffffffffffffffffffffffff9081166040830152602082015161242d91611c4991168463ffffffff61286e16565b612d768261379a565b6000612d8583836000806130a5565b73ffffffffffffffffffffffffffffffffffffffff831660009081526006602090815260408083208784529091529020909150612dc1906122ea565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600660209081526040808320888452825291829020845181549286015195909301517fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090921667ffffffffffffffff909316929092177fffffffffffffffffffffffff000000000000000000000000ffffffffffffffff16680100000000000000006bffffffffffffffffffffffff95861602179092167401000000000000000000000000000000000000000093909216929092021790558015612f3c57612ea6838261380e565b612eae610e04565b73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401612ee89291906152a8565b602060405180830381600087803b158015612f0257600080fd5b505af1158015612f16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612f3a919081019061508e565b505b61118d83613856565b6000806000612f606001600c5461215490919063ffffffff16565b9050612f6a614f09565b50600084815260156020908152604080832084845282528083208151606080820184528254825260018084015483870152600293840154838601528787526016865295849020845160a0810186528154815296810154958701959095529184015492850192909252600383015490840152600490910154608083015290612ff2908290613229565b9350806040015192505050915091565b600080826130125783915061303b565b61302663ffffffff8616620f424086613863565b9150613038848363ffffffff61215416565b90505b935093915050565b61304b613899565b42600d556001600c55565b61305e6138ae565b620d2f00620dbba068056bc75e2d63100000600260036127e68585858585612b78565b806bffffffffffffffffffffffff81168114610bef57610bef610982600284613913565b600c546000906130b3614ee9565b5073ffffffffffffffffffffffffffffffffffffffff851660009081526006602090815260408083208984528252918290208251606081018452905467ffffffffffffffff81168083526bffffffffffffffffffffffff6801000000000000000083048116948401949094527401000000000000000000000000000000000000000090910490921692810192909252821415613154576000925050506131ea565b61316081838787613930565b81519093506000906131839067ffffffffffffffff16600163ffffffff61286e16565b90506131c16131b48984602001516bffffffffffffffffffffffff16856000015167ffffffffffffffff16856139b3565b859063ffffffff61286e16565b93506131e46131b48984604001516bffffffffffffffffffffffff1684876139b3565b93505050505b949350505050565b60408051808201909152600481527fe69edc3e00000000000000000000000000000000000000000000000000000000602082015290565b815160009061323757610ea8565b8151835160408401516020860151606086015160145461326d95949392919063ffffffff80821691640100000000900416613a4c565b608083015183519192506000916132899163ffffffff61215416565b905081811015613297578091505b5092915050565b6000806132a9614f2a565b506000858152600a602090815260409182902082518084019093525473ffffffffffffffffffffffffffffffffffffffff8116835274010000000000000000000000000000000000000000900463ffffffff1690820181905261330d908686613002565b909350915082156133ca57613320610e04565b81516040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff929092169163a9059cbb916133769187906004016152a8565b602060405180830381600087803b15801561339057600080fd5b505af11580156133a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506133c8919081019061508e565b505b81156133e5576133da8683613b0f565b6133e5868386613b50565b50935093915050565b606063b65a25b960e01b826040516024016128a5919061522f565b606063e946c1bb60e01b8484846040516024016134289392919061538b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290509392505050565b606063a6bcde4760e01b83836040516024016120c792919061537d565b8067ffffffffffffffff81168114610bef57610bef610982600184613913565b8051825460408301516020909301516bffffffffffffffffffffffff90811668010000000000000000027fffffffffffffffffffffffff000000000000000000000000ffffffffffffffff91909416740100000000000000000000000000000000000000000273ffffffffffffffffffffffffffffffffffffffff67ffffffffffffffff9094167fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090931692909217929092161716179055565b6060631de45ad160e01b83836040516024016120c7929190615250565b60408051808201909152600481527f57654fe400000000000000000000000000000000000000000000000000000000602082015290565b606063de16f1a060e01b826040516024016128a5919061522f565b6000818152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff16610e4c57610e4c610982826000613c39565b613653614ee9565b61365c836122ea565b9050613686611c498383604001516bffffffffffffffffffffffff1661215490919063ffffffff16565b6bffffffffffffffffffffffff16604082015261118d83826134eb565b6136ab614ee9565b6136b4836122ea565b9050613686611c498383604001516bffffffffffffffffffffffff1661286e90919063ffffffff16565b1460011690565b60606382ded78560e01b83836040516024016120c79291906152a8565b60606322df959760e01b848484604051602401613428939291906153f7565b606063e9f8377160e01b83836040516024016120c792919061537d565b606063140a84db60e01b83836040516024016120c7929190615250565b60606331d7a50560e01b83836040516024016120c792919061537d565b60006131ea8361378e868563ffffffff613c5616565b9063ffffffff613c8716565b600c546000906137b190600163ffffffff61215416565b90506137bb614f09565b50600082815260156020908152604080832084845282529182902082516060810184528154808252600183015493820193909352600290910154928101929092521561118d5761118d6109828484613cb1565b6000828152600b602052604090205461382d908263ffffffff61215416565b6000838152600b602052604090205560175461384f908263ffffffff61215416565b6017555050565b610e4c8160006001613b50565b60006131ea8361378e61387d82600163ffffffff61215416565b61388d888763ffffffff613c5616565b9063ffffffff61286e16565b600d5415611b4557611b456109826000613cce565b601154158015906138c6575060125463ffffffff1615155b80156138d3575060135415155b80156138e6575060145463ffffffff1615155b80156139015750601454640100000000900463ffffffff1615155b15611b4557611b456109826001613cce565b606063c996af7b60e01b83836040516024016120c79291906153ad565b600082158061393d575081155b1561394a575060006131ea565b600061395d85600163ffffffff61215416565b865167ffffffffffffffff16101561397957856040015161397f565b85602001515b6bffffffffffffffffffffffff1690508061399e5760009150506131ea565b6139a9848483613778565b9695505050505050565b60008315806139c157508183145b156139ce575060006131ea565b818310613a07576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117249061541e565b613a0f614f65565b613a198685613d0d565b9050613a23614f65565b613a2d8785613d0d565b9050611d3d81600001518260200151846000015185602001518a613e2b565b600080613a598888613eb7565b90506000613a678787613eb7565b9050811580613a74575080155b15613a85575060009150611d3d9050565b600081831315613a9e57613a998284613f09565b613aa8565b613aa88383613f09565b9050613ad1613acc613ab983613f28565b8863ffffffff168863ffffffff166145ca565b6145d9565b905081831315613aea57613ae58282613f09565b613af4565b613af48282614bc3565b9050613b00818c614bef565b9b9a5050505050505050505050565b6000828152600b6020526040902054613b2e908263ffffffff61286e16565b6000838152600b602052604090205560175461384f908263ffffffff61286e16565b6000838152600f6020526040902054600c5480821415613b7157505061118d565b613b79614f65565b506000858152600e602090815260408083208584528252918290208251808401909352805483526001015490820152613bb0614f65565b613bb982614c31565b15613bf257613bd2826000015183602001518888614c3a565b60208301819052818352613be69190614c9c565b60208301528152613bfd565b602081018590528581525b6000878152600e6020908152604080832086845282528083208451815593820151600190940193909355978152600f9097529095205550505050565b6060639ae94f0160e01b83836040516024016120c792919061536d565b600082613c6557506000610ea8565b82820282848281613c7257fe5b0414610ea557610ea561098260018686613409565b600081613c9d57613c9d61098260038585613409565b6000828481613ca857fe5b04949350505050565b6060635caa0b0560e01b83836040516024016120c792919061537d565b60607f0b02d77300000000000000000000000000000000000000000000000000000000826001811115613cfd57fe5b6040516024016128a591906155df565b613d15614f65565b506000828152600e602090815260408083208484528252918290208251808401909352805483526001015490820152613d4d81614c31565b15613d5757610ea8565b6000613d6a83600163ffffffff61215416565b6000858152600e60209081526040808320848452825291829020825180840190935280548352600101549082015292509050613da582614c31565b15613db05750610ea8565b6000848152600f602052604090205483811015613e0d576000858152600e6020908152604080832084845282529182902082518084019093528054835260010154908201529250613e0083614c31565b15613e0d5750610ea89050565b50506040805180820190915260008152600160208201529392505050565b600081613e3a57506000613eae565b83613e5a57613e538561378e848963ffffffff613c5616565b9050613eae565b6000613e7f613e6f868863ffffffff613c5616565b61229b898763ffffffff613c5616565b90506000613e93828663ffffffff613c8716565b9050613ea98761378e868463ffffffff613c5616565b925050505b95945050505050565b600080831215613ecf57613ecf610982600185614cc5565b6000821215613ee657613ee6610982600184614cc5565b610ea5613f03846f80000000000000000000000000000000614d06565b83614d59565b6000610ea5613f03846f80000000000000000000000000000000614d06565b60006f80000000000000000000000000000000821315613f5057613f50610982600184614dda565b60008213613f6657613f66610982600084614dda565b6f80000000000000000000000000000000821415613f8657506000610bef565b640733048c5a8213613fb957507fffffffffffffffffffffffffffffffe010000000000000000000000000000000610bef565b60008060006a01c8464f761647600000008513614018577ffffffffffffffffffffffffffffffff000000000000000000000000000000000909301926a01c8464f761647600000006f8000000000000000000000000000000086020594505b6cf1aaddd7742e900000000000008513614076577ffffffffffffffffffffffffffffffff800000000000000000000000000000000909301926cf1aaddd7742e900000000000006f8000000000000000000000000000000086020594505b6e0afe10820813d7800000000000000085136140d8577ffffffffffffffffffffffffffffffffc00000000000000000000000000000000909301926e0afe10820813d780000000000000006f8000000000000000000000000000000086020594505b6f02582ab704279ec00000000000000000851361413c577ffffffffffffffffffffffffffffffffe00000000000000000000000000000000909301926f02582ab704279ec000000000000000006f8000000000000000000000000000000086020594505b6f1152aaa3bf81cc00000000000000000085136141a0577fffffffffffffffffffffffffffffffff00000000000000000000000000000000909301926f1152aaa3bf81cc0000000000000000006f8000000000000000000000000000000086020594505b6f2f16ac6c59de700000000000000000008513614204577fffffffffffffffffffffffffffffffff80000000000000000000000000000000909301926f2f16ac6c59de700000000000000000006f8000000000000000000000000000000086020594505b6f4da2cbf1be58280000000000000000008513614268577fffffffffffffffffffffffffffffffffc0000000000000000000000000000000909301926f4da2cbf1be58280000000000000000006f8000000000000000000000000000000086020594505b6f63afbe7ab2082c00000000000000000085136142cc577fffffffffffffffffffffffffffffffffe0000000000000000000000000000000909301926f63afbe7ab2082c0000000000000000006f8000000000000000000000000000000086020594505b6f70f5a893b608861e1f58934f97aea57d8513614330577ffffffffffffffffffffffffffffffffff0000000000000000000000000000000909301926f70f5a893b608861e1f58934f97aea57d6f8000000000000000000000000000000086020594505b7fffffffffffffffffffffffffffffffff80000000000000000000000000000000850192508291506f80000000000000000000000000000000828002059050700100000000000000000000000000000000838103830205840193506f80000000000000000000000000000000818302816143a657fe5b059150700200000000000000000000000000000000836faaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa038302816143d757fe5b05840193506f80000000000000000000000000000000818302816143f757fe5b059150700300000000000000000000000000000000836f999999999999999999999999999999990383028161442857fe5b05840193506f800000000000000000000000000000008183028161444857fe5b059150700400000000000000000000000000000000836f924924924924924924924924924924920383028161447957fe5b05840193506f800000000000000000000000000000008183028161449957fe5b059150700500000000000000000000000000000000836f8e38e38e38e38e38e38e38e38e38e38e038302816144ca57fe5b05840193506f80000000000000000000000000000000818302816144ea57fe5b059150700600000000000000000000000000000000836f8ba2e8ba2e8ba2e8ba2e8ba2e8ba2e8b0383028161451b57fe5b05840193506f800000000000000000000000000000008183028161453b57fe5b059150700700000000000000000000000000000000836f89d89d89d89d89d89d89d89d89d89d890383028161456c57fe5b05840193506f800000000000000000000000000000008183028161458c57fe5b059150700800000000000000000000000000000000836f88888888888888888888888888888888038302816145bd57fe5b0584019350505050919050565b60006131ea613f038585614d06565b60007fffffffffffffffffffffffffffffffe01000000000000000000000000000000082121561460b57506000610bef565b8161462757506f80000000000000000000000000000000610bef565b600082131561463e5761463e610982600184614dda565b6f800000000000000000000000000000006f1000000000000000000000000000000083078080028290056710e1b3be415a0000810293909301929091818302059050806705a0913f6b1e000002830192506f80000000000000000000000000000000828202816146aa57fe5b05905080670168244fdac7800002830192506f80000000000000000000000000000000828202816146d757fe5b05905080664807432bc1800002830192506f800000000000000000000000000000008282028161470357fe5b05905080660c0135dca0400002830192506f800000000000000000000000000000008282028161472f57fe5b059050806601b707b1cdc00002830192506f800000000000000000000000000000008282028161475b57fe5b059050806536e0f639b80002830192506f800000000000000000000000000000008282028161478657fe5b05905080650618fee9f80002830192506f80000000000000000000000000000000828202816147b157fe5b05905080649c197dcc0002830192506f80000000000000000000000000000000828202816147db57fe5b05905080640e30dce40002830192506f800000000000000000000000000000008282028161480557fe5b0590508064012ebd130002830192506f800000000000000000000000000000008282028161482f57fe5b059050806317499f0002830192506f800000000000000000000000000000008282028161485857fe5b059050806301a9d48002830192506f800000000000000000000000000000008282028161488157fe5b05905080621c638002830192506f80000000000000000000000000000000828202816148a957fe5b059050806201c63802830192506f80000000000000000000000000000000828202816148d157fe5b05905080611ab802830192506f80000000000000000000000000000000828202816148f857fe5b0590508061017c02830192506f800000000000000000000000000000008282028161491f57fe5b05905080601402830192506f800000000000000000000000000000008282028161494557fe5b600095909503946721c3677c82b400009190059384010582016f80000000000000000000000000000000019290507010000000000000000000000000000000008416156149b4577243cbaf42a000812488fc5c220ad7b97bf6e99e6cf1aaddd7742e56d32fb9f9974484020592505b7008000000000000000000000000000000008416156149f6577105d27a9f51c31b7c2f8038212a05747799916e0afe10820813d65dfe6a33c07f738f84020592505b700400000000000000000000000000000000841615614a3857701b4c902e273a58678d6d3bfdb93db96d026f02582ab704279e8efd15e0265855c47a84020592505b700200000000000000000000000000000000841615614a7a577003b1cc971a9bb5b9867477440d6d1577506f1152aaa3bf81cb9fdb76eae12d02957184020592505b700100000000000000000000000000000000841615614abc5770015bf0a8b1457695355fb8ac404e7a79e36f2f16ac6c59de6f8d5d6f63c1482a7c8684020592505b6f80000000000000000000000000000000841615614afc576fd3094c70f034de4b96ff7d5b6f99fcd86f4da2cbf1be5827f9eb3ad1aa9866ebb384020592505b6f40000000000000000000000000000000841615614b3c576fa45af1e1f40c333b3de1db4dd55f29a76f63afbe7ab2082ba1a0ae5e4eb1b479dc84020592505b6f20000000000000000000000000000000841615614b7c576f910b022db7ae67ce76b441c27035c6a16f70f5a893b608861e1f58934f97aea57d84020592505b6f10000000000000000000000000000000841615614bbc576f88415abbe9a76bead8d00cf112e4d4a86f783eafef1c0a8f3978c7f81824d62ebf84020592505b5050919050565b60006f80000000000000000000000000000000614be08484614d06565b81614be757fe5b059392505050565b600080821215614c0757614c07610982600184614cc5565b6000614c138484614d06565b905060008113614c27576000915050610ea8565b607f1c9392505050565b60200151151590565b60008085614c4c575082905081614c93565b83614c5b575084905083614c93565b614c7e614c6e858763ffffffff613c5616565b61388d888663ffffffff613c5616565b9150614c90858463ffffffff613c5616565b90505b94509492505050565b600080614cba84846f80000000000000000000000000000000614e09565b915091509250929050565b60607fbd79545f00000000000000000000000000000000000000000000000000000000836001811115614cf457fe5b836040516024016120c79291906155ed565b6000821580614d13575081155b15614d2057506000610ea8565b5081810281838281614d2e57fe5b05141580614d45575082828281614d4157fe5b0514155b15610ea857610ea861098260018585614e77565b600081614d6f57614d6f61098260028585614e77565b7f800000000000000000000000000000000000000000000000000000000000000083148015614dbd5750817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff145b15614dd157614dd161098260038585614e77565b818381614be757fe5b60607fed2f26a100000000000000000000000000000000000000000000000000000000836001811115614cf457fe5b60008082851180614e1957508284115b15614e6e57600084861015614e2e5784614e30565b855b9050614e42818563ffffffff613c8716565b9050614e54868263ffffffff613c8716565b9250614e66858263ffffffff613c8716565b91505061303b565b50929391925050565b60607f8c12dfe700000000000000000000000000000000000000000000000000000000846003811115614ea657fe5b848460405160240161342893929190615600565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b604080516060810182526000808252602082018190529181019190915290565b60405180606001604052806000815260200160008152602001600081525090565b604080518082019091526000808252602082015290565b81548183558181111561118d5760008381526020902061118d918101908301614f7f565b604051806040016040528060008152602001600081525090565b610b5791905b80821115614f995760008155600101614f85565b5090565b803573ffffffffffffffffffffffffffffffffffffffff81168114610ea857600080fd5b60006040828403121561238a578081fd5b600060208284031215614fe3578081fd5b610ea58383614f9d565b600080600060608486031215615001578182fd5b833561500c81615625565b9250602084013561501c81615625565b929592945050506040919091013590565b6000806040838503121561503f578182fd5b6150498484614f9d565b946020939093013593505050565b60008060408385031215615069578182fd5b6150738484614f9d565b9150602083013561508381615655565b809150509250929050565b60006020828403121561509f578081fd5b8151610ea581615647565b6000602082840312156150bb578081fd5b5035919050565b600080604083850312156150d4578182fd5b82359150602083013561508381615625565b600080604083850312156150f8578182fd5b50508035926020909101359150565b60008060408385031215615119578182fd5b82359150602083013563ffffffff81168114615083578182fd5b600060208284031215615144578081fd5b8135610ea581615655565b600080600060a08486031215615163578283fd5b61516d8585614fc1565b925061517c8560408601614fc1565b9150608084013590509250925092565b60006020828403121561519d578081fd5b5051919050565b600080600080600060a086880312156151bb578283fd5b8535945060208601356151cd81615662565b93506040860135925060608601356151e481615662565b915060808601356151f481615662565b809150509295509295909350565b60008060408385031215615214578182fd5b823561521f81615662565b9150602083013561508381615647565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b602080825282518282018190526000918401906040840190835b8181101561531c57835173ffffffffffffffffffffffffffffffffffffffff168352602093840193909201916001016152e8565b509095945050505050565b901515815260200190565b90815260200190565b92835273ffffffffffffffffffffffffffffffffffffffff91909116602083015263ffffffff16604082015260600190565b9182521515602082015260400190565b918252602082015260400190565b606081016004851061539957fe5b938152602081019290925260409091015290565b60408101600384106153bb57fe5b9281526020015290565b604081016153d28461561b565b92815273ffffffffffffffffffffffffffffffffffffffff9190911660209091015290565b606081016154048561561b565b938152602081019290925263ffffffff1660409091015290565b60208082526013908201527f43525f494e54455256414c5f494e56414c494400000000000000000000000000604082015260600190565b60208082526014908201527f574554485f5452414e534645525f4641494c4544000000000000000000000000604082015260600190565b81518152602080830151908201526040918201519181019190915260600190565b815173ffffffffffffffffffffffffffffffffffffffff16815260209182015163ffffffff169181019190915260400190565b815167ffffffffffffffff1681526020808301516bffffffffffffffffffffffff90811691830191909152604092830151169181019190915260600190565b9283526020830191909152604082015260600190565b93845260208401929092526040830152606082015260800190565b948552602085019390935260408401919091526060830152608082015260a00190565b94855263ffffffff938416602086015260408501929092528216606084015216608082015260a00190565b92835260ff918216602084015216604082015260600190565b63ffffffff91909116815260200190565b63ffffffff92831681529116602082015260400190565b60ff91909116815260200190565b60ff929092168252602082015260400190565b60ff9390931683526020830191909152604082015260600190565b60028110610e4c57fe5b73ffffffffffffffffffffffffffffffffffffffff81168114610e4c57600080fd5b8015158114610e4c57600080fd5b60028110610e4c57600080fd5b63ffffffff81168114610e4c57600080fdfea365627a7a72315820aaa74c9eed38f6d75114c73ae847a986db473c91ccb1cf6041795e71c08e39206c6578706572696d656e74616cf564736f6c634300050c0040" + "object": "0x6080604052600080546001600160a01b031916331790556156b7806100256000396000f3fe6080604052600436106103295760003560e01c80638da5cb5b116101a5578063bb7ef7e0116100ec578063e8eeb3f811610095578063f18765321161006f578063f1876532146108bf578063f252b7a1146108df578063f2fde38b146108ff578063ff691b111461091f57610329565b8063e8eeb3f814610875578063e907f0031461088a578063ee99205c146108aa57610329565b8063e0ee036e116100c6578063e0ee036e1461082b578063e1c7392a14610840578063e804d0a41461085557610329565b8063bb7ef7e0146107c9578063c18c9141146107e9578063d39de6e91461080957610329565b8063a694fc3a1161014e578063b3e3337911610128578063b3e3337914610769578063b510879f14610789578063b9181611146107a957610329565b8063a694fc3a1461071f578063b05315241461073f578063b2baa33e1461075457610329565b8063a26171e21161017f578063a26171e2146106e2578063a3b4a327146106f7578063a657e5791461070a57610329565b80638da5cb5b1461068d5780639ad26744146106a25780639c3ccc82146106c257610329565b80634bcc3f6711610274578063624a72321161021d57806370712939116101f757806370712939146106165780637667180814610636578063816667961461064b5780638a2e271a1461066d57610329565b8063624a7232146105cc57806363403801146105e157806368a7d6cd146105f657610329565b80635bd4ab731161024e5780635bd4ab73146105595780635d91121d146105865780635e615a6b146105a657610329565b80634bcc3f67146104f7578063587da0231461052457806358f6c7e31461053957610329565b80633c277fc5116102d657806344a6958b116102b057806344a6958b1461048a57806346b97959146104aa578063494503d4146104d757610329565b80633c277fc51461041b5780633e4ad7321461043d57806342f1181e1461046a57610329565b80632a94c279116103075780632a94c2791461039b5780632e17de78146103ca57806338229d93146103ea57610329565b806301e28d841461032e5780630b9663db146103505780631e7ff8f61461037b575b600080fd5b34801561033a57600080fd5b5061034e610349366004614fd2565b61093f565b005b34801561035c57600080fd5b50610365610a0d565b6040516103729190615332565b60405180910390f35b34801561038757600080fd5b50610365610396366004614fd2565b610b5a565b3480156103a757600080fd5b506103bb6103b63660046150e6565b610bf4565b6040516103729392919061551f565b3480156103d657600080fd5b5061034e6103e53660046150aa565b610c20565b3480156103f657600080fd5b5061040a6104053660046150aa565b610dd5565b604051610372959493929190615550565b34801561042757600080fd5b50610430610e04565b604051610372919061522f565b34801561044957600080fd5b5061045d6104583660046150aa565b610e1c565b60405161037291906154e0565b34801561047657600080fd5b5061034e610485366004614fd2565b610e3b565b34801561049657600080fd5b5061045d6104a5366004615057565b610e4f565b3480156104b657600080fd5b506104ca6104c53660046150aa565b610eae565b604051610372919061548c565b3480156104e357600080fd5b506104306104f23660046150aa565b610ef9565b34801561050357600080fd5b506105176105123660046150aa565b610f2d565b60405161037291906154ad565b34801561053057600080fd5b50610365610f8f565b34801561054557600080fd5b5061034e61055436600461514f565b610f95565b34801561056557600080fd5b50610579610574366004614fd2565b611192565b6040516103729190615327565b34801561059257600080fd5b5061034e6105a1366004615107565b6111a7565b3480156105b257600080fd5b506105bb611270565b604051610372959493929190615573565b3480156105d857600080fd5b50610430611299565b3480156105ed57600080fd5b506103656112b1565b34801561060257600080fd5b50610365610611366004615202565b6112b7565b34801561062257600080fd5b5061034e610631366004614fd2565b6113f0565b34801561064257600080fd5b506103656114a5565b34801561065757600080fd5b506106606114ab565b60405161037291906155b7565b34801561067957600080fd5b5061034e610688366004614fd2565b6114b7565b34801561069957600080fd5b50610430611579565b3480156106ae57600080fd5b5061034e6106bd36600461502d565b611595565b3480156106ce57600080fd5b5061034e6106dd3660046151a4565b6115a7565b3480156106ee57600080fd5b50610365611621565b61034e610705366004614fed565b611627565b34801561071657600080fd5b50610365611877565b34801561072b57600080fd5b5061034e61073a3660046150aa565b61187d565b34801561074b57600080fd5b50610365611992565b34801561076057600080fd5b50610365611998565b34801561077557600080fd5b5061034e6107843660046150aa565b6119b6565b34801561079557600080fd5b5061034e6107a43660046150aa565b6119f6565b3480156107b557600080fd5b506105796107c4366004614fd2565b611a00565b3480156107d557600080fd5b506103656107e43660046150aa565b611a15565b3480156107f557600080fd5b506103656108043660046150aa565b611aa0565b34801561081557600080fd5b5061081e611ab2565b60405161037291906152ce565b34801561083757600080fd5b50610660611b21565b34801561084c57600080fd5b5061034e611b2d565b34801561086157600080fd5b5061045d610870366004615133565b611b47565b34801561088157600080fd5b50610660611c97565b34801561089657600080fd5b506103656108a53660046150c2565b611cab565b3480156108b657600080fd5b50610430611d48565b3480156108cb57600080fd5b506103656108da366004614fd2565b611d64565b3480156108eb57600080fd5b5061045d6108fa36600461502d565b611d76565b34801561090b57600080fd5b5061034e61091a366004614fd2565b611db7565b34801561092b57600080fd5b5061034e61093a3660046150aa565b611e5a565b610947612087565b73ffffffffffffffffffffffffffffffffffffffff811660009081526010602052604090205460ff16610987576109876109826001836120aa565b61214c565b73ffffffffffffffffffffffffffffffffffffffff81166000908152601060205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055517ff50d0d312d501878616eb5e78ebf3ed6dcd3955aaef8165af9c6b057cc4832fb90610a0290839061522f565b60405180910390a150565b600c5460009081610a2582600163ffffffff61215416565b6000818152601660205260409020600101549091508015610a4d57610a4d6109828383612173565b610a55612190565b610a5d612203565b600084815260166020526040902055610a74614eba565b50600083815260166020908152604091829020825160a08101845281548082526001830154938201849052600283015482860181905260038401546060840181905260049094015460808401529451919488947fbb4a26fa0ace13ee4da343896c20eaa44a618fb9071fdd8c2e2c960a4583189d94610af69491939291615535565b60405180910390a2610b066122a7565b6020810151610b4d57805160405185917fb463d19ecf455be65365092cf8e1db6934a0334cf8cd532ddf9964d01f36b5b291610b449160009161537d565b60405180910390a25b6020015193505050505b90565b6000610b64611299565b73ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b8152600401610b9c919061522f565b60206040518083038186803b158015610bb457600080fd5b505afa158015610bc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610bec919081019061518c565b90505b919050565b601560209081526000928352604080842090915290825290208054600182015460029092015490919083565b33610c29614ee9565b73ffffffffffffffffffffffffffffffffffffffff821660009081527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc60205260409020610c76906122ea565b90506000610ca882602001516bffffffffffffffffffffffff1683604001516bffffffffffffffffffffffff16612390565b905080841115610cbf57610cbf61098285836123a6565b73ffffffffffffffffffffffffffffffffffffffff831660009081527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc60205260409020610d0d90856123c3565b610d15611299565b73ffffffffffffffffffffffffffffffffffffffff16639470b0bd84866040518363ffffffff1660e01b8152600401610d4f9291906152a8565b600060405180830381600087803b158015610d6957600080fd5b505af1158015610d7d573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f85082129d87b2fe11527cb1b3b7a520aeb5aa6913f88a3d8757fe40d1db02fdd85604051610dc79190615332565b60405180910390a250505050565b601660205260009081526040902080546001820154600283015460038401546004909401549293919290919085565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc290565b610e24614ee9565b6000828152600760205260409020610bec906122ea565b610e4361244a565b610e4c81612491565b50565b610e57614ee9565b610ea560056000846001811115610e6a57fe5b60ff1681526020808201929092526040908101600090812073ffffffffffffffffffffffffffffffffffffffff8816825290925290206122ea565b90505b92915050565b610eb6614f09565b506000908152601560209081526040808320600c548452825291829020825160608101845281548152600182015492810192909252600201549181019190915290565b60028181548110610f0657fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b610f35614f2a565b506000908152600a602090815260409182902082518084019093525473ffffffffffffffffffffffffffffffffffffffff8116835274010000000000000000000000000000000000000000900463ffffffff169082015290565b600d5481565b3381610fa1575061118d565b6000610fb06020860186615133565b6001811115610fbb57fe5b148015610fdf57506000610fd26020850185615133565b6001811115610fdd57fe5b145b15610fea575061118d565b6001610ff96020860186615133565b600181111561100457fe5b141561101957611019846020013582846125c2565b60016110286020850185615133565b600181111561103357fe5b1415611048576110488360200135828461265b565b600060058161105a6020880188615133565b600181111561106557fe5b60ff1681526020808201929092526040908101600090812073ffffffffffffffffffffffffffffffffffffffff86168252835290812092509060059082906110af90880188615133565b60018111156110ba57fe5b60ff1681526020808201929092526040908101600090812073ffffffffffffffffffffffffffffffffffffffff87168252909252902090506110fd8282866126f4565b60208086013590870180359073ffffffffffffffffffffffffffffffffffffffff8616907f7d3ad1dcf03b9027064d1d9a474a69e0cecc31324c541d3eb9b5e6fa2f106c8d90889061114f908c615133565b600181111561115a57fe5b61116760208c018c615133565b600181111561117257fe5b6040516111819392919061559e565b60405180910390a45050505b505050565b60106020526000908152604090205460ff1681565b816111b1816127ed565b6000838152600a602052604090205474010000000000000000000000000000000000000000900463ffffffff166111e9848285612826565b6000848152600a60205260409081902080547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000063ffffffff8716021790555184907f8ea2a7a959bd25f226b7b0a4393613f7fdcaa8404e8bad96aa52dc1c1459016790610dc790849087906155c8565b601154601254601354601454929363ffffffff9283169391928281169264010000000090041690565b73ba7f8b5fb1b19c1211c5d49550fcd149177a5eaf90565b60115481565b60085460009033906112d090600163ffffffff61286e16565b600881905591506112e582620f424086612826565b6112ed614f2a565b5060408051808201825273ffffffffffffffffffffffffffffffffffffffff838116825263ffffffff87811660208085019182526000888152600a9091528590208451815492517fffffffffffffffffffffffff00000000000000000000000000000000000000009093169416939093177fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000919092160217905590517fcec6fc86ea644053f6edff1160dfe3fa5c61e7a5ef9f873f145bb03a0bd319e7906113d19085908590899061533b565b60405180910390a183156113e8576113e8836119b6565b505092915050565b6113f861244a565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff16611431576114316109828261288a565b60005b6002548110156114a1578173ffffffffffffffffffffffffffffffffffffffff166002828154811061146257fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff161415611499576114948282612929565b6114a1565b600101611434565b5050565b600c5481565b60145463ffffffff1681565b6114bf612087565b73ffffffffffffffffffffffffffffffffffffffff811660009081526010602052604090205460ff16156114fb576114fb6109826000836120aa565b73ffffffffffffffffffffffffffffffffffffffff81166000908152601060205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055517f3e535d1ab441ef41c268fd9b52b478aee02d693c5ca2a84b5d26b89e0922e5e190610a0290839061522f565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b61159d61244a565b6114a18282612929565b6115af612087565b6115bc8585858585612b78565b3073ffffffffffffffffffffffffffffffffffffffff1663c6f3a4276040518163ffffffff1660e01b815260040160006040518083038186803b15801561160257600080fd5b505afa158015611616573d6000803e3d6000fd5b505050505050505050565b60135481565b3360009081526010602052604090205460ff1661164a5761164a61098233612c3b565b61165381612c56565b3461172d57611660610e04565b73ffffffffffffffffffffffffffffffffffffffff166323b872dd8330846040518463ffffffff1660e01b815260040161169c93929190615277565b602060405180830381600087803b1580156116b657600080fd5b505af11580156116ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506116ee919081019061508e565b61172d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172490615455565b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83166000908152600960205260409020548061175e575061118d565b600061176982610e1c565b602001516bffffffffffffffffffffffff16905060135481101561178e57505061118d565b600c5460008381526015602090815260408083208484528252808320601690925290912081548061183d576000806117c68888612c77565b6002870182905560018701819055600386015491935091506117ee908263ffffffff61286e16565b60038501556001808501546118089163ffffffff61286e16565b6001850155604051889087907f14b098103235344975b17508c2391721cc9ac3f3fa2b56c7ff46f8480dfd074f90600090a350505b61184d818863ffffffff61286e16565b83556002820154611864908863ffffffff61286e16565b8260020181905550505050505050505050565b60085481565b33611886611299565b73ffffffffffffffffffffffffffffffffffffffff166315cc36f282846040518363ffffffff1660e01b81526004016118c09291906152a8565b600060405180830381600087803b1580156118da57600080fd5b505af11580156118ee573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff811660009081527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc602052604090206119409083612d03565b8073ffffffffffffffffffffffffffffffffffffffff167febedb8b3c678666e7f36970bc8f57abf6d8fa2e828c0da91ea5b75bf68ed101a836040516119869190615332565b60405180910390a25050565b60175481565b60006119b1601154600d5461286e90919063ffffffff16565b905090565b3360008181526009602052604080822084905551839183917f5640833634fce74eb9211d1209a91dd5a1c8c6a751696bff9323b4db67f815139190a35050565b610e4c8133612d6d565b60016020526000908152604090205460ff1681565b6000611a1f614f2a565b506000828152600a6020908152604080832081518083019092525473ffffffffffffffffffffffffffffffffffffffff8116825274010000000000000000000000000000000000000000900463ffffffff16918101919091529080611a8385612f45565b91509150611a9683602001518383613002565b5095945050505050565b600b6020526000908152604090205481565b60606002805480602002602001604051908101604052809291908181526020018280548015611b1757602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611aec575b5050505050905090565b60125463ffffffff1681565b611b35612087565b611b3d613043565b611b45613056565b565b611b4f614ee9565b60016000526004602052611b827fabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe056122ea565b90506000826001811115611b9257fe5b1415610bef576000611ba2611299565b73ffffffffffffffffffffffffffffffffffffffff16639706e0c06040518163ffffffff1660e01b815260040160206040518083038186803b158015611be757600080fd5b505afa158015611bfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611c1f919081019061518c565b9050611c4e611c4983602001516bffffffffffffffffffffffff168361215490919063ffffffff16565b613081565b6bffffffffffffffffffffffff90811660208401526040830151611c7e91611c499184911663ffffffff61215416565b6bffffffffffffffffffffffff16604083015250919050565b601454640100000000900463ffffffff1681565b6000611cb5614f2a565b506000838152600a6020908152604080832081518083019092525473ffffffffffffffffffffffffffffffffffffffff8116825274010000000000000000000000000000000000000000900463ffffffff16918101919091529080611d1986612f45565b915091506000611d2e84602001518484613002565b915050611d3d878783856130a5565b979650505050505050565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b60096020526000908152604090205481565b611d7e614ee9565b73ffffffffffffffffffffffffffffffffffffffff831660009081526006602090815260408083208584529091529020610ea5906122ea565b611dbf61244a565b73ffffffffffffffffffffffffffffffffffffffff8116611dea57611de56109826131f2565b610e4c565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b600c546000611e7082600163ffffffff61215416565b9050611e7a614eba565b50600081815260166020908152604091829020825160a08101845281548152600182015492810183905260028201549381019390935260038101546060840152600401546080830152611ecf57505050610e4c565b611ed7614f09565b5060008481526015602090815260408083208584528252918290208251606081018452815480825260018301549382019390935260029091015492810192909252611f255750505050610e4c565b6000858152601560209081526040808320868452909152812081815560018101829055600201819055611f588284613229565b9050600080611f6c8884866040015161329e565b9150915087877ff1116b309178aa62dcb6bf8c3b8bc2321724907c7ebf52192d14c8ce3aa9194c8484604051611fa392919061537d565b60405180910390a36000611fbd838363ffffffff61286e16565b6080870151909150611fd5908263ffffffff61286e16565b6080870181905260008881526016602090815260409091206004019190915586015161200890600163ffffffff61215416565b602080880182815260008a8152601690925260409091206001019190915551611616576080860151865188917fb463d19ecf455be65365092cf8e1db6934a0334cf8cd532ddf9964d01f36b5b291612066908263ffffffff61215416565b60405161207492919061537d565b60405180910390a2505050505050505050565b3360009081526001602052604090205460ff16611b4557611b45610982336133ee565b606063b9588e4360e01b83836040516024016120c79291906153c5565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905092915050565b805160208201fd5b60008282111561216d5761216d61098260028585613409565b50900390565b606063614b800a60e01b83836040516024016120c792919061537d565b30318015610e4c576121a0610e04565b73ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b1580156121e757600080fd5b505af11580156121fb573d6000803e3d6000fd5b505050505050565b60006119b1601754612213610e04565b73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161224b919061522f565b60206040518083038186803b15801561226357600080fd5b505afa158015612277573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061229b919081019061518c565b9063ffffffff61215416565b4260006122b2611998565b9050818111156122c9576122c961098282846134ae565b600c546000906122e090600163ffffffff61286e16565b600c555050600d55565b6122f2614ee9565b5060408051606081018252825467ffffffffffffffff81168083526bffffffffffffffffffffffff680100000000000000008304811660208501527401000000000000000000000000000000000000000090920490911692820192909252600c54909181111561238a57612365816134cb565b67ffffffffffffffff16825260408201516bffffffffffffffffffffffff1660208301525b50919050565b600081831061239f5781610ea5565b5090919050565b60606384c8b7c960e01b83836040516024016120c792919061537d565b6123cb614ee9565b6123d4836122ea565b90506123fe611c498383604001516bffffffffffffffffffffffff1661215490919063ffffffff16565b6bffffffffffffffffffffffff9081166040830152602082015161242d91611c4991168463ffffffff61215416565b6bffffffffffffffffffffffff16602082015261118d83826134eb565b60005473ffffffffffffffffffffffffffffffffffffffff163314611b4557600054611b459061098290339073ffffffffffffffffffffffffffffffffffffffff166135a5565b73ffffffffffffffffffffffffffffffffffffffff81166124b7576124b76109826135c2565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff16156124f1576124f1610982826135f9565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168317905560028054928301815583527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001684179055513392917f3147867c59d17e8fa9d522465651d44aae0a9e38f902f3475b97e58072f0ed4c91a350565b6125cb83613614565b6125d58383612d6d565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600660209081526040808320868452909152902061260f908261364b565b6000838152600760205260409020612627908261364b565b6001600052600460205261118d7fabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe058261364b565b61266483613614565b61266e8383612d6d565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260066020908152604080832086845290915290206126a890826136a3565b60008381526007602052604090206126c090826136a3565b6001600052600460205261118d7fabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05826136a3565b6126fe83836136de565b156127085761118d565b612710614ee9565b612719846122ea565b9050612723614ee9565b61272c846122ea565b905081604001516bffffffffffffffffffffffff16831115612767576127676109828484604001516bffffffffffffffffffffffff166123a6565b604082015161278e90611c49906bffffffffffffffffffffffff168563ffffffff61215416565b6bffffffffffffffffffffffff9081166040808501919091528201516127bf91611c4991168563ffffffff61286e16565b6bffffffffffffffffffffffff1660408201526127dc85836134eb565b6127e684826134eb565b5050505050565b6000818152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff163381146114a1576114a161098233846136e5565b620f424063ffffffff8216111561284b5761284661098260008584613702565b61118d565b8163ffffffff168163ffffffff16111561118d5761118d61098260018584613702565b600082820183811015610ea557610ea561098260008686613409565b606063eb5108a260e01b826040516024016128a5919061522f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050919050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205460ff16612962576129626109828361288a565b600254811061297d5761297d61098282600280549050613721565b8173ffffffffffffffffffffffffffffffffffffffff16600282815481106129a157fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1614612a0357612a03610982600283815481106129db57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff168461373e565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101908110612a7e57fe5b6000918252602090912001546002805473ffffffffffffffffffffffffffffffffffffffff9092169183908110612ab157fe5b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190612b309082614f41565b50604051339073ffffffffffffffffffffffffffffffffffffffff8416907f1f32c1b084e2de0713b8fb16bd46bb9df710a3dbeae2f3ca93af46e016dcc6b090600090a35050565b60118590556012805463ffffffff8087167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000092831617909255601385905560148054848416640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff9487169190931617929092161790556040517f613157dbb0e920deab8ad6ddd3805e87cbf57344b9fe780f1764790ec789754290612c2c9087908790879087908790615573565b60405180910390a15050505050565b606063b56d2df060e01b826040516024016128a5919061522f565b803414158015612c6557503415155b15610e4c57610e4c610982823461375b565b6000828152600a602052604081205481908190612caa9073ffffffffffffffffffffffffffffffffffffffff1686611d76565b602001516bffffffffffffffffffffffff169050612cce848263ffffffff61215416565b601254909350612cf990612cec9063ffffffff16620f424086613778565b829063ffffffff61286e16565b9150509250929050565b612d0b614ee9565b612d14836122ea565b9050612d3e611c498383604001516bffffffffffffffffffffffff1661286e90919063ffffffff16565b6bffffffffffffffffffffffff9081166040830152602082015161242d91611c4991168463ffffffff61286e16565b612d768261379a565b6000612d8583836000806130a5565b73ffffffffffffffffffffffffffffffffffffffff831660009081526006602090815260408083208784529091529020909150612dc1906122ea565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600660209081526040808320888452825291829020845181549286015195909301517fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090921667ffffffffffffffff909316929092177fffffffffffffffffffffffff000000000000000000000000ffffffffffffffff16680100000000000000006bffffffffffffffffffffffff95861602179092167401000000000000000000000000000000000000000093909216929092021790558015612f3c57612ea6838261380e565b612eae610e04565b73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401612ee89291906152a8565b602060405180830381600087803b158015612f0257600080fd5b505af1158015612f16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612f3a919081019061508e565b505b61118d83613856565b6000806000612f606001600c5461215490919063ffffffff16565b9050612f6a614f09565b50600084815260156020908152604080832084845282528083208151606080820184528254825260018084015483870152600293840154838601528787526016865295849020845160a0810186528154815296810154958701959095529184015492850192909252600383015490840152600490910154608083015290612ff2908290613229565b9350806040015192505050915091565b600080826130125783915061303b565b61302663ffffffff8616620f424086613863565b9150613038848363ffffffff61215416565b90505b935093915050565b61304b613899565b42600d556001600c55565b61305e6138ae565b620d2f00620dbba068056bc75e2d63100000600260036127e68585858585612b78565b806bffffffffffffffffffffffff81168114610bef57610bef610982600284613913565b600c546000906130b3614ee9565b5073ffffffffffffffffffffffffffffffffffffffff851660009081526006602090815260408083208984528252918290208251606081018452905467ffffffffffffffff81168083526bffffffffffffffffffffffff6801000000000000000083048116948401949094527401000000000000000000000000000000000000000090910490921692810192909252821415613154576000925050506131ea565b61316081838787613930565b81519093506000906131839067ffffffffffffffff16600163ffffffff61286e16565b90506131c16131b48984602001516bffffffffffffffffffffffff16856000015167ffffffffffffffff16856139b3565b859063ffffffff61286e16565b93506131e46131b48984604001516bffffffffffffffffffffffff1684876139b3565b93505050505b949350505050565b60408051808201909152600481527fe69edc3e00000000000000000000000000000000000000000000000000000000602082015290565b815160009061323757610ea8565b8151835160408401516020860151606086015160145461326d95949392919063ffffffff80821691640100000000900416613a4c565b608083015183519192506000916132899163ffffffff61215416565b905081811015613297578091505b5092915050565b6000806132a9614f2a565b506000858152600a602090815260409182902082518084019093525473ffffffffffffffffffffffffffffffffffffffff8116835274010000000000000000000000000000000000000000900463ffffffff1690820181905261330d908686613002565b909350915082156133ca57613320610e04565b81516040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff929092169163a9059cbb916133769187906004016152a8565b602060405180830381600087803b15801561339057600080fd5b505af11580156133a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506133c8919081019061508e565b505b81156133e5576133da8683613b0f565b6133e5868386613b50565b50935093915050565b606063b65a25b960e01b826040516024016128a5919061522f565b606063e946c1bb60e01b8484846040516024016134289392919061538b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290509392505050565b606063a6bcde4760e01b83836040516024016120c792919061537d565b8067ffffffffffffffff81168114610bef57610bef610982600184613913565b8051825460408301516020909301516bffffffffffffffffffffffff90811668010000000000000000027fffffffffffffffffffffffff000000000000000000000000ffffffffffffffff91909416740100000000000000000000000000000000000000000273ffffffffffffffffffffffffffffffffffffffff67ffffffffffffffff9094167fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090931692909217929092161716179055565b6060631de45ad160e01b83836040516024016120c7929190615250565b60408051808201909152600481527f57654fe400000000000000000000000000000000000000000000000000000000602082015290565b606063de16f1a060e01b826040516024016128a5919061522f565b6000818152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff16610e4c57610e4c610982826000613c39565b613653614ee9565b61365c836122ea565b9050613686611c498383604001516bffffffffffffffffffffffff1661215490919063ffffffff16565b6bffffffffffffffffffffffff16604082015261118d83826134eb565b6136ab614ee9565b6136b4836122ea565b9050613686611c498383604001516bffffffffffffffffffffffff1661286e90919063ffffffff16565b1460011690565b60606382ded78560e01b83836040516024016120c79291906152a8565b60606322df959760e01b848484604051602401613428939291906153f7565b606063e9f8377160e01b83836040516024016120c792919061537d565b606063140a84db60e01b83836040516024016120c7929190615250565b60606331d7a50560e01b83836040516024016120c792919061537d565b60006131ea8361378e868563ffffffff613c5616565b9063ffffffff613c8716565b600c546000906137b190600163ffffffff61215416565b90506137bb614f09565b50600082815260156020908152604080832084845282529182902082516060810184528154808252600183015493820193909352600290910154928101929092521561118d5761118d6109828484613cb1565b6000828152600b602052604090205461382d908263ffffffff61215416565b6000838152600b602052604090205560175461384f908263ffffffff61215416565b6017555050565b610e4c8160006001613b50565b60006131ea8361378e61387d82600163ffffffff61215416565b61388d888763ffffffff613c5616565b9063ffffffff61286e16565b600d5415611b4557611b456109826000613cce565b601154158015906138c6575060125463ffffffff1615155b80156138d3575060135415155b80156138e6575060145463ffffffff1615155b80156139015750601454640100000000900463ffffffff1615155b15611b4557611b456109826001613cce565b606063c996af7b60e01b83836040516024016120c79291906153ad565b600082158061393d575081155b1561394a575060006131ea565b600061395d85600163ffffffff61215416565b865167ffffffffffffffff16101561397957856040015161397f565b85602001515b6bffffffffffffffffffffffff1690508061399e5760009150506131ea565b6139a9848483613778565b9695505050505050565b60008315806139c157508183145b156139ce575060006131ea565b818310613a07576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117249061541e565b613a0f614f65565b613a198685613d0d565b9050613a23614f65565b613a2d8785613d0d565b9050611d3d81600001518260200151846000015185602001518a613e2b565b600080613a598888613eb7565b90506000613a678787613eb7565b9050811580613a74575080155b15613a85575060009150611d3d9050565b600081831315613a9e57613a998284613f09565b613aa8565b613aa88383613f09565b9050613ad1613acc613ab983613f28565b8863ffffffff168863ffffffff166145ca565b6145d9565b905081831315613aea57613ae58282613f09565b613af4565b613af48282614bc3565b9050613b00818c614bef565b9b9a5050505050505050505050565b6000828152600b6020526040902054613b2e908263ffffffff61286e16565b6000838152600b602052604090205560175461384f908263ffffffff61286e16565b6000838152600f6020526040902054600c5480821415613b7157505061118d565b613b79614f65565b506000858152600e602090815260408083208584528252918290208251808401909352805483526001015490820152613bb0614f65565b613bb982614c31565b15613bf257613bd2826000015183602001518888614c3a565b60208301819052818352613be69190614c9c565b60208301528152613bfd565b602081018590528581525b6000878152600e6020908152604080832086845282528083208451815593820151600190940193909355978152600f9097529095205550505050565b6060639ae94f0160e01b83836040516024016120c792919061536d565b600082613c6557506000610ea8565b82820282848281613c7257fe5b0414610ea557610ea561098260018686613409565b600081613c9d57613c9d61098260038585613409565b6000828481613ca857fe5b04949350505050565b6060635caa0b0560e01b83836040516024016120c792919061537d565b60607f0b02d77300000000000000000000000000000000000000000000000000000000826001811115613cfd57fe5b6040516024016128a591906155df565b613d15614f65565b506000828152600e602090815260408083208484528252918290208251808401909352805483526001015490820152613d4d81614c31565b15613d5757610ea8565b6000613d6a83600163ffffffff61215416565b6000858152600e60209081526040808320848452825291829020825180840190935280548352600101549082015292509050613da582614c31565b15613db05750610ea8565b6000848152600f602052604090205483811015613e0d576000858152600e6020908152604080832084845282529182902082518084019093528054835260010154908201529250613e0083614c31565b15613e0d5750610ea89050565b50506040805180820190915260008152600160208201529392505050565b600081613e3a57506000613eae565b83613e5a57613e538561378e848963ffffffff613c5616565b9050613eae565b6000613e7f613e6f868863ffffffff613c5616565b61229b898763ffffffff613c5616565b90506000613e93828663ffffffff613c8716565b9050613ea98761378e868463ffffffff613c5616565b925050505b95945050505050565b600080831215613ecf57613ecf610982600185614cc5565b6000821215613ee657613ee6610982600184614cc5565b610ea5613f03846f80000000000000000000000000000000614d06565b83614d59565b6000610ea5613f03846f80000000000000000000000000000000614d06565b60006f80000000000000000000000000000000821315613f5057613f50610982600184614dda565b60008213613f6657613f66610982600084614dda565b6f80000000000000000000000000000000821415613f8657506000610bef565b640733048c5a8213613fb957507fffffffffffffffffffffffffffffffe010000000000000000000000000000000610bef565b60008060006a01c8464f761647600000008513614018577ffffffffffffffffffffffffffffffff000000000000000000000000000000000909301926a01c8464f761647600000006f8000000000000000000000000000000086020594505b6cf1aaddd7742e900000000000008513614076577ffffffffffffffffffffffffffffffff800000000000000000000000000000000909301926cf1aaddd7742e900000000000006f8000000000000000000000000000000086020594505b6e0afe10820813d7800000000000000085136140d8577ffffffffffffffffffffffffffffffffc00000000000000000000000000000000909301926e0afe10820813d780000000000000006f8000000000000000000000000000000086020594505b6f02582ab704279ec00000000000000000851361413c577ffffffffffffffffffffffffffffffffe00000000000000000000000000000000909301926f02582ab704279ec000000000000000006f8000000000000000000000000000000086020594505b6f1152aaa3bf81cc00000000000000000085136141a0577fffffffffffffffffffffffffffffffff00000000000000000000000000000000909301926f1152aaa3bf81cc0000000000000000006f8000000000000000000000000000000086020594505b6f2f16ac6c59de700000000000000000008513614204577fffffffffffffffffffffffffffffffff80000000000000000000000000000000909301926f2f16ac6c59de700000000000000000006f8000000000000000000000000000000086020594505b6f4da2cbf1be58280000000000000000008513614268577fffffffffffffffffffffffffffffffffc0000000000000000000000000000000909301926f4da2cbf1be58280000000000000000006f8000000000000000000000000000000086020594505b6f63afbe7ab2082c00000000000000000085136142cc577fffffffffffffffffffffffffffffffffe0000000000000000000000000000000909301926f63afbe7ab2082c0000000000000000006f8000000000000000000000000000000086020594505b6f70f5a893b608861e1f58934f97aea57d8513614330577ffffffffffffffffffffffffffffffffff0000000000000000000000000000000909301926f70f5a893b608861e1f58934f97aea57d6f8000000000000000000000000000000086020594505b7fffffffffffffffffffffffffffffffff80000000000000000000000000000000850192508291506f80000000000000000000000000000000828002059050700100000000000000000000000000000000838103830205840193506f80000000000000000000000000000000818302816143a657fe5b059150700200000000000000000000000000000000836faaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa038302816143d757fe5b05840193506f80000000000000000000000000000000818302816143f757fe5b059150700300000000000000000000000000000000836f999999999999999999999999999999990383028161442857fe5b05840193506f800000000000000000000000000000008183028161444857fe5b059150700400000000000000000000000000000000836f924924924924924924924924924924920383028161447957fe5b05840193506f800000000000000000000000000000008183028161449957fe5b059150700500000000000000000000000000000000836f8e38e38e38e38e38e38e38e38e38e38e038302816144ca57fe5b05840193506f80000000000000000000000000000000818302816144ea57fe5b059150700600000000000000000000000000000000836f8ba2e8ba2e8ba2e8ba2e8ba2e8ba2e8b0383028161451b57fe5b05840193506f800000000000000000000000000000008183028161453b57fe5b059150700700000000000000000000000000000000836f89d89d89d89d89d89d89d89d89d89d890383028161456c57fe5b05840193506f800000000000000000000000000000008183028161458c57fe5b059150700800000000000000000000000000000000836f88888888888888888888888888888888038302816145bd57fe5b0584019350505050919050565b60006131ea613f038585614d06565b60007fffffffffffffffffffffffffffffffe01000000000000000000000000000000082121561460b57506000610bef565b8161462757506f80000000000000000000000000000000610bef565b600082131561463e5761463e610982600184614dda565b6f800000000000000000000000000000006f1000000000000000000000000000000083078080028290056710e1b3be415a0000810293909301929091818302059050806705a0913f6b1e000002830192506f80000000000000000000000000000000828202816146aa57fe5b05905080670168244fdac7800002830192506f80000000000000000000000000000000828202816146d757fe5b05905080664807432bc1800002830192506f800000000000000000000000000000008282028161470357fe5b05905080660c0135dca0400002830192506f800000000000000000000000000000008282028161472f57fe5b059050806601b707b1cdc00002830192506f800000000000000000000000000000008282028161475b57fe5b059050806536e0f639b80002830192506f800000000000000000000000000000008282028161478657fe5b05905080650618fee9f80002830192506f80000000000000000000000000000000828202816147b157fe5b05905080649c197dcc0002830192506f80000000000000000000000000000000828202816147db57fe5b05905080640e30dce40002830192506f800000000000000000000000000000008282028161480557fe5b0590508064012ebd130002830192506f800000000000000000000000000000008282028161482f57fe5b059050806317499f0002830192506f800000000000000000000000000000008282028161485857fe5b059050806301a9d48002830192506f800000000000000000000000000000008282028161488157fe5b05905080621c638002830192506f80000000000000000000000000000000828202816148a957fe5b059050806201c63802830192506f80000000000000000000000000000000828202816148d157fe5b05905080611ab802830192506f80000000000000000000000000000000828202816148f857fe5b0590508061017c02830192506f800000000000000000000000000000008282028161491f57fe5b05905080601402830192506f800000000000000000000000000000008282028161494557fe5b600095909503946721c3677c82b400009190059384010582016f80000000000000000000000000000000019290507010000000000000000000000000000000008416156149b4577243cbaf42a000812488fc5c220ad7b97bf6e99e6cf1aaddd7742e56d32fb9f9974484020592505b7008000000000000000000000000000000008416156149f6577105d27a9f51c31b7c2f8038212a05747799916e0afe10820813d65dfe6a33c07f738f84020592505b700400000000000000000000000000000000841615614a3857701b4c902e273a58678d6d3bfdb93db96d026f02582ab704279e8efd15e0265855c47a84020592505b700200000000000000000000000000000000841615614a7a577003b1cc971a9bb5b9867477440d6d1577506f1152aaa3bf81cb9fdb76eae12d02957184020592505b700100000000000000000000000000000000841615614abc5770015bf0a8b1457695355fb8ac404e7a79e36f2f16ac6c59de6f8d5d6f63c1482a7c8684020592505b6f80000000000000000000000000000000841615614afc576fd3094c70f034de4b96ff7d5b6f99fcd86f4da2cbf1be5827f9eb3ad1aa9866ebb384020592505b6f40000000000000000000000000000000841615614b3c576fa45af1e1f40c333b3de1db4dd55f29a76f63afbe7ab2082ba1a0ae5e4eb1b479dc84020592505b6f20000000000000000000000000000000841615614b7c576f910b022db7ae67ce76b441c27035c6a16f70f5a893b608861e1f58934f97aea57d84020592505b6f10000000000000000000000000000000841615614bbc576f88415abbe9a76bead8d00cf112e4d4a86f783eafef1c0a8f3978c7f81824d62ebf84020592505b5050919050565b60006f80000000000000000000000000000000614be08484614d06565b81614be757fe5b059392505050565b600080821215614c0757614c07610982600184614cc5565b6000614c138484614d06565b905060008113614c27576000915050610ea8565b607f1c9392505050565b60200151151590565b60008085614c4c575082905081614c93565b83614c5b575084905083614c93565b614c7e614c6e858763ffffffff613c5616565b61388d888663ffffffff613c5616565b9150614c90858463ffffffff613c5616565b90505b94509492505050565b600080614cba84846f80000000000000000000000000000000614e09565b915091509250929050565b60607fbd79545f00000000000000000000000000000000000000000000000000000000836001811115614cf457fe5b836040516024016120c79291906155ed565b6000821580614d13575081155b15614d2057506000610ea8565b5081810281838281614d2e57fe5b05141580614d45575082828281614d4157fe5b0514155b15610ea857610ea861098260018585614e77565b600081614d6f57614d6f61098260028585614e77565b7f800000000000000000000000000000000000000000000000000000000000000083148015614dbd5750817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff145b15614dd157614dd161098260038585614e77565b818381614be757fe5b60607fed2f26a100000000000000000000000000000000000000000000000000000000836001811115614cf457fe5b60008082851180614e1957508284115b15614e6e57600084861015614e2e5784614e30565b855b9050614e42818563ffffffff613c8716565b9050614e54868263ffffffff613c8716565b9250614e66858263ffffffff613c8716565b91505061303b565b50929391925050565b60607f8c12dfe700000000000000000000000000000000000000000000000000000000846003811115614ea657fe5b848460405160240161342893929190615600565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b604080516060810182526000808252602082018190529181019190915290565b60405180606001604052806000815260200160008152602001600081525090565b604080518082019091526000808252602082015290565b81548183558181111561118d5760008381526020902061118d918101908301614f7f565b604051806040016040528060008152602001600081525090565b610b5791905b80821115614f995760008155600101614f85565b5090565b803573ffffffffffffffffffffffffffffffffffffffff81168114610ea857600080fd5b60006040828403121561238a578081fd5b600060208284031215614fe3578081fd5b610ea58383614f9d565b600080600060608486031215615001578182fd5b833561500c81615625565b9250602084013561501c81615625565b929592945050506040919091013590565b6000806040838503121561503f578182fd5b6150498484614f9d565b946020939093013593505050565b60008060408385031215615069578182fd5b6150738484614f9d565b9150602083013561508381615655565b809150509250929050565b60006020828403121561509f578081fd5b8151610ea581615647565b6000602082840312156150bb578081fd5b5035919050565b600080604083850312156150d4578182fd5b82359150602083013561508381615625565b600080604083850312156150f8578182fd5b50508035926020909101359150565b60008060408385031215615119578182fd5b82359150602083013563ffffffff81168114615083578182fd5b600060208284031215615144578081fd5b8135610ea581615655565b600080600060a08486031215615163578283fd5b61516d8585614fc1565b925061517c8560408601614fc1565b9150608084013590509250925092565b60006020828403121561519d578081fd5b5051919050565b600080600080600060a086880312156151bb578283fd5b8535945060208601356151cd81615662565b93506040860135925060608601356151e481615662565b915060808601356151f481615662565b809150509295509295909350565b60008060408385031215615214578182fd5b823561521f81615662565b9150602083013561508381615647565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b602080825282518282018190526000918401906040840190835b8181101561531c57835173ffffffffffffffffffffffffffffffffffffffff168352602093840193909201916001016152e8565b509095945050505050565b901515815260200190565b90815260200190565b92835273ffffffffffffffffffffffffffffffffffffffff91909116602083015263ffffffff16604082015260600190565b9182521515602082015260400190565b918252602082015260400190565b606081016004851061539957fe5b938152602081019290925260409091015290565b60408101600384106153bb57fe5b9281526020015290565b604081016153d28461561b565b92815273ffffffffffffffffffffffffffffffffffffffff9190911660209091015290565b606081016154048561561b565b938152602081019290925263ffffffff1660409091015290565b60208082526013908201527f43525f494e54455256414c5f494e56414c494400000000000000000000000000604082015260600190565b60208082526014908201527f574554485f5452414e534645525f4641494c4544000000000000000000000000604082015260600190565b81518152602080830151908201526040918201519181019190915260600190565b815173ffffffffffffffffffffffffffffffffffffffff16815260209182015163ffffffff169181019190915260400190565b815167ffffffffffffffff1681526020808301516bffffffffffffffffffffffff90811691830191909152604092830151169181019190915260600190565b9283526020830191909152604082015260600190565b93845260208401929092526040830152606082015260800190565b948552602085019390935260408401919091526060830152608082015260a00190565b94855263ffffffff938416602086015260408501929092528216606084015216608082015260a00190565b92835260ff918216602084015216604082015260600190565b63ffffffff91909116815260200190565b63ffffffff92831681529116602082015260400190565b60ff91909116815260200190565b60ff929092168252602082015260400190565b60ff9390931683526020830191909152604082015260600190565b60028110610e4c57fe5b73ffffffffffffffffffffffffffffffffffffffff81168114610e4c57600080fd5b8015158114610e4c57600080fd5b60028110610e4c57600080fd5b63ffffffff81168114610e4c57600080fdfea365627a7a723158204d038b5bbb04cd172bdf1cbdc85fbcdef1958f78733cbf713478ef117741cc2f6c6578706572696d656e74616cf564736f6c634300050c0040" }, "deployedBytecode": { - "object": "0x6080604052600436106103295760003560e01c80638da5cb5b116101a5578063bb7ef7e0116100ec578063e8eeb3f811610095578063f18765321161006f578063f1876532146108bf578063f252b7a1146108df578063f2fde38b146108ff578063ff691b111461091f57610329565b8063e8eeb3f814610875578063e907f0031461088a578063ee99205c146108aa57610329565b8063e0ee036e116100c6578063e0ee036e1461082b578063e1c7392a14610840578063e804d0a41461085557610329565b8063bb7ef7e0146107c9578063c18c9141146107e9578063d39de6e91461080957610329565b8063a694fc3a1161014e578063b3e3337911610128578063b3e3337914610769578063b510879f14610789578063b9181611146107a957610329565b8063a694fc3a1461071f578063b05315241461073f578063b2baa33e1461075457610329565b8063a26171e21161017f578063a26171e2146106e2578063a3b4a327146106f7578063a657e5791461070a57610329565b80638da5cb5b1461068d5780639ad26744146106a25780639c3ccc82146106c257610329565b80634bcc3f6711610274578063624a72321161021d57806370712939116101f757806370712939146106165780637667180814610636578063816667961461064b5780638a2e271a1461066d57610329565b8063624a7232146105cc57806363403801146105e157806368a7d6cd146105f657610329565b80635bd4ab731161024e5780635bd4ab73146105595780635d91121d146105865780635e615a6b146105a657610329565b80634bcc3f67146104f7578063587da0231461052457806358f6c7e31461053957610329565b80633c277fc5116102d657806344a6958b116102b057806344a6958b1461048a57806346b97959146104aa578063494503d4146104d757610329565b80633c277fc51461041b5780633e4ad7321461043d57806342f1181e1461046a57610329565b80632a94c279116103075780632a94c2791461039b5780632e17de78146103ca57806338229d93146103ea57610329565b806301e28d841461032e5780630b9663db146103505780631e7ff8f61461037b575b600080fd5b34801561033a57600080fd5b5061034e610349366004614fd2565b61093f565b005b34801561035c57600080fd5b50610365610a0d565b6040516103729190615332565b60405180910390f35b34801561038757600080fd5b50610365610396366004614fd2565b610b5a565b3480156103a757600080fd5b506103bb6103b63660046150e6565b610bf4565b6040516103729392919061551f565b3480156103d657600080fd5b5061034e6103e53660046150aa565b610c20565b3480156103f657600080fd5b5061040a6104053660046150aa565b610dd5565b604051610372959493929190615550565b34801561042757600080fd5b50610430610e04565b604051610372919061522f565b34801561044957600080fd5b5061045d6104583660046150aa565b610e1c565b60405161037291906154e0565b34801561047657600080fd5b5061034e610485366004614fd2565b610e3b565b34801561049657600080fd5b5061045d6104a5366004615057565b610e4f565b3480156104b657600080fd5b506104ca6104c53660046150aa565b610eae565b604051610372919061548c565b3480156104e357600080fd5b506104306104f23660046150aa565b610ef9565b34801561050357600080fd5b506105176105123660046150aa565b610f2d565b60405161037291906154ad565b34801561053057600080fd5b50610365610f8f565b34801561054557600080fd5b5061034e61055436600461514f565b610f95565b34801561056557600080fd5b50610579610574366004614fd2565b611192565b6040516103729190615327565b34801561059257600080fd5b5061034e6105a1366004615107565b6111a7565b3480156105b257600080fd5b506105bb611270565b604051610372959493929190615573565b3480156105d857600080fd5b50610430611299565b3480156105ed57600080fd5b506103656112b1565b34801561060257600080fd5b50610365610611366004615202565b6112b7565b34801561062257600080fd5b5061034e610631366004614fd2565b6113f0565b34801561064257600080fd5b506103656114a5565b34801561065757600080fd5b506106606114ab565b60405161037291906155b7565b34801561067957600080fd5b5061034e610688366004614fd2565b6114b7565b34801561069957600080fd5b50610430611579565b3480156106ae57600080fd5b5061034e6106bd36600461502d565b611595565b3480156106ce57600080fd5b5061034e6106dd3660046151a4565b6115a7565b3480156106ee57600080fd5b50610365611621565b61034e610705366004614fed565b611627565b34801561071657600080fd5b50610365611877565b34801561072b57600080fd5b5061034e61073a3660046150aa565b61187d565b34801561074b57600080fd5b50610365611992565b34801561076057600080fd5b50610365611998565b34801561077557600080fd5b5061034e6107843660046150aa565b6119b6565b34801561079557600080fd5b5061034e6107a43660046150aa565b6119f6565b3480156107b557600080fd5b506105796107c4366004614fd2565b611a00565b3480156107d557600080fd5b506103656107e43660046150aa565b611a15565b3480156107f557600080fd5b506103656108043660046150aa565b611aa0565b34801561081557600080fd5b5061081e611ab2565b60405161037291906152ce565b34801561083757600080fd5b50610660611b21565b34801561084c57600080fd5b5061034e611b2d565b34801561086157600080fd5b5061045d610870366004615133565b611b47565b34801561088157600080fd5b50610660611c97565b34801561089657600080fd5b506103656108a53660046150c2565b611cab565b3480156108b657600080fd5b50610430611d48565b3480156108cb57600080fd5b506103656108da366004614fd2565b611d64565b3480156108eb57600080fd5b5061045d6108fa36600461502d565b611d76565b34801561090b57600080fd5b5061034e61091a366004614fd2565b611db7565b34801561092b57600080fd5b5061034e61093a3660046150aa565b611e5a565b610947612087565b73ffffffffffffffffffffffffffffffffffffffff811660009081526010602052604090205460ff16610987576109876109826001836120aa565b61214c565b73ffffffffffffffffffffffffffffffffffffffff81166000908152601060205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055517ff50d0d312d501878616eb5e78ebf3ed6dcd3955aaef8165af9c6b057cc4832fb90610a0290839061522f565b60405180910390a150565b600c5460009081610a2582600163ffffffff61215416565b6000818152601660205260409020600101549091508015610a4d57610a4d6109828383612173565b610a55612190565b610a5d612203565b600084815260166020526040902055610a74614eba565b50600083815260166020908152604091829020825160a08101845281548082526001830154938201849052600283015482860181905260038401546060840181905260049094015460808401529451919488947fbb4a26fa0ace13ee4da343896c20eaa44a618fb9071fdd8c2e2c960a4583189d94610af69491939291615535565b60405180910390a2610b066122a7565b6020810151610b4d57805160405185917fb463d19ecf455be65365092cf8e1db6934a0334cf8cd532ddf9964d01f36b5b291610b449160009161537d565b60405180910390a25b6020015193505050505b90565b6000610b64611299565b73ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b8152600401610b9c919061522f565b60206040518083038186803b158015610bb457600080fd5b505afa158015610bc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610bec919081019061518c565b90505b919050565b601560209081526000928352604080842090915290825290208054600182015460029092015490919083565b33610c29614ee9565b73ffffffffffffffffffffffffffffffffffffffff821660009081527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc60205260409020610c76906122ea565b90506000610ca882602001516bffffffffffffffffffffffff1683604001516bffffffffffffffffffffffff16612390565b905080841115610cbf57610cbf61098285836123a6565b73ffffffffffffffffffffffffffffffffffffffff831660009081527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc60205260409020610d0d90856123c3565b610d15611299565b73ffffffffffffffffffffffffffffffffffffffff16639470b0bd84866040518363ffffffff1660e01b8152600401610d4f9291906152a8565b600060405180830381600087803b158015610d6957600080fd5b505af1158015610d7d573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f85082129d87b2fe11527cb1b3b7a520aeb5aa6913f88a3d8757fe40d1db02fdd85604051610dc79190615332565b60405180910390a250505050565b601660205260009081526040902080546001820154600283015460038401546004909401549293919290919085565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc290565b610e24614ee9565b6000828152600760205260409020610bec906122ea565b610e4361244a565b610e4c81612491565b50565b610e57614ee9565b610ea560056000846001811115610e6a57fe5b60ff1681526020808201929092526040908101600090812073ffffffffffffffffffffffffffffffffffffffff8816825290925290206122ea565b90505b92915050565b610eb6614f09565b506000908152601560209081526040808320600c548452825291829020825160608101845281548152600182015492810192909252600201549181019190915290565b60028181548110610f0657fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b610f35614f2a565b506000908152600a602090815260409182902082518084019093525473ffffffffffffffffffffffffffffffffffffffff8116835274010000000000000000000000000000000000000000900463ffffffff169082015290565b600d5481565b3381610fa1575061118d565b6000610fb06020860186615133565b6001811115610fbb57fe5b148015610fdf57506000610fd26020850185615133565b6001811115610fdd57fe5b145b15610fea575061118d565b6001610ff96020860186615133565b600181111561100457fe5b141561101957611019846020013582846125c2565b60016110286020850185615133565b600181111561103357fe5b1415611048576110488360200135828461265b565b600060058161105a6020880188615133565b600181111561106557fe5b60ff1681526020808201929092526040908101600090812073ffffffffffffffffffffffffffffffffffffffff86168252835290812092509060059082906110af90880188615133565b60018111156110ba57fe5b60ff1681526020808201929092526040908101600090812073ffffffffffffffffffffffffffffffffffffffff87168252909252902090506110fd8282866126f4565b60208086013590870180359073ffffffffffffffffffffffffffffffffffffffff8616907f7d3ad1dcf03b9027064d1d9a474a69e0cecc31324c541d3eb9b5e6fa2f106c8d90889061114f908c615133565b600181111561115a57fe5b61116760208c018c615133565b600181111561117257fe5b6040516111819392919061559e565b60405180910390a45050505b505050565b60106020526000908152604090205460ff1681565b816111b1816127ed565b6000838152600a602052604090205474010000000000000000000000000000000000000000900463ffffffff166111e9848285612826565b6000848152600a60205260409081902080547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000063ffffffff8716021790555184907f8ea2a7a959bd25f226b7b0a4393613f7fdcaa8404e8bad96aa52dc1c1459016790610dc790849087906155c8565b601154601254601354601454929363ffffffff9283169391928281169264010000000090041690565b73ba7f8b5fb1b19c1211c5d49550fcd149177a5eaf90565b60115481565b60085460009033906112d090600163ffffffff61286e16565b600881905591506112e582620f424086612826565b6112ed614f2a565b5060408051808201825273ffffffffffffffffffffffffffffffffffffffff838116825263ffffffff87811660208085019182526000888152600a9091528590208451815492517fffffffffffffffffffffffff00000000000000000000000000000000000000009093169416939093177fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000919092160217905590517fcec6fc86ea644053f6edff1160dfe3fa5c61e7a5ef9f873f145bb03a0bd319e7906113d19085908590899061533b565b60405180910390a183156113e8576113e8836119b6565b505092915050565b6113f861244a565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff16611431576114316109828261288a565b60005b6002548110156114a1578173ffffffffffffffffffffffffffffffffffffffff166002828154811061146257fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff161415611499576114948282612929565b6114a1565b600101611434565b5050565b600c5481565b60145463ffffffff1681565b6114bf612087565b73ffffffffffffffffffffffffffffffffffffffff811660009081526010602052604090205460ff16156114fb576114fb6109826000836120aa565b73ffffffffffffffffffffffffffffffffffffffff81166000908152601060205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055517f3e535d1ab441ef41c268fd9b52b478aee02d693c5ca2a84b5d26b89e0922e5e190610a0290839061522f565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b61159d61244a565b6114a18282612929565b6115af612087565b6115bc8585858585612b78565b3073ffffffffffffffffffffffffffffffffffffffff1663c6f3a4276040518163ffffffff1660e01b815260040160006040518083038186803b15801561160257600080fd5b505afa158015611616573d6000803e3d6000fd5b505050505050505050565b60135481565b3360009081526010602052604090205460ff1661164a5761164a61098233612c3b565b61165381612c56565b3461172d57611660610e04565b73ffffffffffffffffffffffffffffffffffffffff166323b872dd8330846040518463ffffffff1660e01b815260040161169c93929190615277565b602060405180830381600087803b1580156116b657600080fd5b505af11580156116ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506116ee919081019061508e565b61172d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172490615455565b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83166000908152600960205260409020548061175e575061118d565b600061176982610e1c565b602001516bffffffffffffffffffffffff16905060135481101561178e57505061118d565b600c5460008381526015602090815260408083208484528252808320601690925290912081548061183d576000806117c68888612c77565b6002870182905560018701819055600386015491935091506117ee908263ffffffff61286e16565b60038501556001808501546118089163ffffffff61286e16565b6001850155604051889087907f14b098103235344975b17508c2391721cc9ac3f3fa2b56c7ff46f8480dfd074f90600090a350505b61184d818863ffffffff61286e16565b83556002820154611864908863ffffffff61286e16565b8260020181905550505050505050505050565b60085481565b33611886611299565b73ffffffffffffffffffffffffffffffffffffffff166315cc36f282846040518363ffffffff1660e01b81526004016118c09291906152a8565b600060405180830381600087803b1580156118da57600080fd5b505af11580156118ee573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff811660009081527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc602052604090206119409083612d03565b8073ffffffffffffffffffffffffffffffffffffffff167febedb8b3c678666e7f36970bc8f57abf6d8fa2e828c0da91ea5b75bf68ed101a836040516119869190615332565b60405180910390a25050565b60175481565b60006119b1601154600d5461286e90919063ffffffff16565b905090565b3360008181526009602052604080822084905551839183917f5640833634fce74eb9211d1209a91dd5a1c8c6a751696bff9323b4db67f815139190a35050565b610e4c8133612d6d565b60016020526000908152604090205460ff1681565b6000611a1f614f2a565b506000828152600a6020908152604080832081518083019092525473ffffffffffffffffffffffffffffffffffffffff8116825274010000000000000000000000000000000000000000900463ffffffff16918101919091529080611a8385612f45565b91509150611a9683602001518383613002565b5095945050505050565b600b6020526000908152604090205481565b60606002805480602002602001604051908101604052809291908181526020018280548015611b1757602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611aec575b5050505050905090565b60125463ffffffff1681565b611b35612087565b611b3d613043565b611b45613056565b565b611b4f614ee9565b60016000526004602052611b827fabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe056122ea565b90506000826001811115611b9257fe5b1415610bef576000611ba2611299565b73ffffffffffffffffffffffffffffffffffffffff16639706e0c06040518163ffffffff1660e01b815260040160206040518083038186803b158015611be757600080fd5b505afa158015611bfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611c1f919081019061518c565b9050611c4e611c4983602001516bffffffffffffffffffffffff168361215490919063ffffffff16565b613081565b6bffffffffffffffffffffffff90811660208401526040830151611c7e91611c499184911663ffffffff61215416565b6bffffffffffffffffffffffff16604083015250919050565b601454640100000000900463ffffffff1681565b6000611cb5614f2a565b506000838152600a6020908152604080832081518083019092525473ffffffffffffffffffffffffffffffffffffffff8116825274010000000000000000000000000000000000000000900463ffffffff16918101919091529080611d1986612f45565b915091506000611d2e84602001518484613002565b915050611d3d878783856130a5565b979650505050505050565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b60096020526000908152604090205481565b611d7e614ee9565b73ffffffffffffffffffffffffffffffffffffffff831660009081526006602090815260408083208584529091529020610ea5906122ea565b611dbf61244a565b73ffffffffffffffffffffffffffffffffffffffff8116611dea57611de56109826131f2565b610e4c565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b600c546000611e7082600163ffffffff61215416565b9050611e7a614eba565b50600081815260166020908152604091829020825160a08101845281548152600182015492810183905260028201549381019390935260038101546060840152600401546080830152611ecf57505050610e4c565b611ed7614f09565b5060008481526015602090815260408083208584528252918290208251606081018452815480825260018301549382019390935260029091015492810192909252611f255750505050610e4c565b6000858152601560209081526040808320868452909152812081815560018101829055600201819055611f588284613229565b9050600080611f6c8884866040015161329e565b9150915087877ff1116b309178aa62dcb6bf8c3b8bc2321724907c7ebf52192d14c8ce3aa9194c8484604051611fa392919061537d565b60405180910390a36000611fbd838363ffffffff61286e16565b6080870151909150611fd5908263ffffffff61286e16565b6080870181905260008881526016602090815260409091206004019190915586015161200890600163ffffffff61215416565b602080880182815260008a8152601690925260409091206001019190915551611616576080860151865188917fb463d19ecf455be65365092cf8e1db6934a0334cf8cd532ddf9964d01f36b5b291612066908263ffffffff61215416565b60405161207492919061537d565b60405180910390a2505050505050505050565b3360009081526001602052604090205460ff16611b4557611b45610982336133ee565b606063b9588e4360e01b83836040516024016120c79291906153c5565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905092915050565b805160208201fd5b60008282111561216d5761216d61098260028585613409565b50900390565b606063614b800a60e01b83836040516024016120c792919061537d565b30318015610e4c576121a0610e04565b73ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b1580156121e757600080fd5b505af11580156121fb573d6000803e3d6000fd5b505050505050565b60006119b1601754612213610e04565b73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161224b919061522f565b60206040518083038186803b15801561226357600080fd5b505afa158015612277573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061229b919081019061518c565b9063ffffffff61215416565b4260006122b2611998565b9050818111156122c9576122c961098282846134ae565b600c546000906122e090600163ffffffff61286e16565b600c555050600d55565b6122f2614ee9565b5060408051606081018252825467ffffffffffffffff81168083526bffffffffffffffffffffffff680100000000000000008304811660208501527401000000000000000000000000000000000000000090920490911692820192909252600c54909181111561238a57612365816134cb565b67ffffffffffffffff16825260408201516bffffffffffffffffffffffff1660208301525b50919050565b600081831061239f5781610ea5565b5090919050565b60606384c8b7c960e01b83836040516024016120c792919061537d565b6123cb614ee9565b6123d4836122ea565b90506123fe611c498383604001516bffffffffffffffffffffffff1661215490919063ffffffff16565b6bffffffffffffffffffffffff9081166040830152602082015161242d91611c4991168463ffffffff61215416565b6bffffffffffffffffffffffff16602082015261118d83826134eb565b60005473ffffffffffffffffffffffffffffffffffffffff163314611b4557600054611b459061098290339073ffffffffffffffffffffffffffffffffffffffff166135a5565b73ffffffffffffffffffffffffffffffffffffffff81166124b7576124b76109826135c2565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff16156124f1576124f1610982826135f9565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168317905560028054928301815583527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001684179055513392917f3147867c59d17e8fa9d522465651d44aae0a9e38f902f3475b97e58072f0ed4c91a350565b6125cb83613614565b6125d58383612d6d565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600660209081526040808320868452909152902061260f908261364b565b6000838152600760205260409020612627908261364b565b6001600052600460205261118d7fabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe058261364b565b61266483613614565b61266e8383612d6d565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260066020908152604080832086845290915290206126a890826136a3565b60008381526007602052604090206126c090826136a3565b6001600052600460205261118d7fabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05826136a3565b6126fe83836136de565b156127085761118d565b612710614ee9565b612719846122ea565b9050612723614ee9565b61272c846122ea565b905081604001516bffffffffffffffffffffffff16831115612767576127676109828484604001516bffffffffffffffffffffffff166123a6565b604082015161278e90611c49906bffffffffffffffffffffffff168563ffffffff61215416565b6bffffffffffffffffffffffff9081166040808501919091528201516127bf91611c4991168563ffffffff61286e16565b6bffffffffffffffffffffffff1660408201526127dc85836134eb565b6127e684826134eb565b5050505050565b6000818152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff163381146114a1576114a161098233846136e5565b620f424063ffffffff8216111561284b5761284661098260008584613702565b61118d565b8163ffffffff168163ffffffff16111561118d5761118d61098260018584613702565b600082820183811015610ea557610ea561098260008686613409565b606063eb5108a260e01b826040516024016128a5919061522f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050919050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205460ff16612962576129626109828361288a565b600254811061297d5761297d61098282600280549050613721565b8173ffffffffffffffffffffffffffffffffffffffff16600282815481106129a157fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1614612a0357612a03610982600283815481106129db57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff168461373e565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101908110612a7e57fe5b6000918252602090912001546002805473ffffffffffffffffffffffffffffffffffffffff9092169183908110612ab157fe5b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190612b309082614f41565b50604051339073ffffffffffffffffffffffffffffffffffffffff8416907f1f32c1b084e2de0713b8fb16bd46bb9df710a3dbeae2f3ca93af46e016dcc6b090600090a35050565b60118590556012805463ffffffff8087167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000092831617909255601385905560148054848416640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff9487169190931617929092161790556040517f613157dbb0e920deab8ad6ddd3805e87cbf57344b9fe780f1764790ec789754290612c2c9087908790879087908790615573565b60405180910390a15050505050565b606063b56d2df060e01b826040516024016128a5919061522f565b803414158015612c6557503415155b15610e4c57610e4c610982823461375b565b6000828152600a602052604081205481908190612caa9073ffffffffffffffffffffffffffffffffffffffff1686611d76565b602001516bffffffffffffffffffffffff169050612cce848263ffffffff61215416565b601254909350612cf990612cec9063ffffffff16620f424086613778565b829063ffffffff61286e16565b9150509250929050565b612d0b614ee9565b612d14836122ea565b9050612d3e611c498383604001516bffffffffffffffffffffffff1661286e90919063ffffffff16565b6bffffffffffffffffffffffff9081166040830152602082015161242d91611c4991168463ffffffff61286e16565b612d768261379a565b6000612d8583836000806130a5565b73ffffffffffffffffffffffffffffffffffffffff831660009081526006602090815260408083208784529091529020909150612dc1906122ea565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600660209081526040808320888452825291829020845181549286015195909301517fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090921667ffffffffffffffff909316929092177fffffffffffffffffffffffff000000000000000000000000ffffffffffffffff16680100000000000000006bffffffffffffffffffffffff95861602179092167401000000000000000000000000000000000000000093909216929092021790558015612f3c57612ea6838261380e565b612eae610e04565b73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401612ee89291906152a8565b602060405180830381600087803b158015612f0257600080fd5b505af1158015612f16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612f3a919081019061508e565b505b61118d83613856565b6000806000612f606001600c5461215490919063ffffffff16565b9050612f6a614f09565b50600084815260156020908152604080832084845282528083208151606080820184528254825260018084015483870152600293840154838601528787526016865295849020845160a0810186528154815296810154958701959095529184015492850192909252600383015490840152600490910154608083015290612ff2908290613229565b9350806040015192505050915091565b600080826130125783915061303b565b61302663ffffffff8616620f424086613863565b9150613038848363ffffffff61215416565b90505b935093915050565b61304b613899565b42600d556001600c55565b61305e6138ae565b620d2f00620dbba068056bc75e2d63100000600260036127e68585858585612b78565b806bffffffffffffffffffffffff81168114610bef57610bef610982600284613913565b600c546000906130b3614ee9565b5073ffffffffffffffffffffffffffffffffffffffff851660009081526006602090815260408083208984528252918290208251606081018452905467ffffffffffffffff81168083526bffffffffffffffffffffffff6801000000000000000083048116948401949094527401000000000000000000000000000000000000000090910490921692810192909252821415613154576000925050506131ea565b61316081838787613930565b81519093506000906131839067ffffffffffffffff16600163ffffffff61286e16565b90506131c16131b48984602001516bffffffffffffffffffffffff16856000015167ffffffffffffffff16856139b3565b859063ffffffff61286e16565b93506131e46131b48984604001516bffffffffffffffffffffffff1684876139b3565b93505050505b949350505050565b60408051808201909152600481527fe69edc3e00000000000000000000000000000000000000000000000000000000602082015290565b815160009061323757610ea8565b8151835160408401516020860151606086015160145461326d95949392919063ffffffff80821691640100000000900416613a4c565b608083015183519192506000916132899163ffffffff61215416565b905081811015613297578091505b5092915050565b6000806132a9614f2a565b506000858152600a602090815260409182902082518084019093525473ffffffffffffffffffffffffffffffffffffffff8116835274010000000000000000000000000000000000000000900463ffffffff1690820181905261330d908686613002565b909350915082156133ca57613320610e04565b81516040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff929092169163a9059cbb916133769187906004016152a8565b602060405180830381600087803b15801561339057600080fd5b505af11580156133a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506133c8919081019061508e565b505b81156133e5576133da8683613b0f565b6133e5868386613b50565b50935093915050565b606063b65a25b960e01b826040516024016128a5919061522f565b606063e946c1bb60e01b8484846040516024016134289392919061538b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290509392505050565b606063a6bcde4760e01b83836040516024016120c792919061537d565b8067ffffffffffffffff81168114610bef57610bef610982600184613913565b8051825460408301516020909301516bffffffffffffffffffffffff90811668010000000000000000027fffffffffffffffffffffffff000000000000000000000000ffffffffffffffff91909416740100000000000000000000000000000000000000000273ffffffffffffffffffffffffffffffffffffffff67ffffffffffffffff9094167fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090931692909217929092161716179055565b6060631de45ad160e01b83836040516024016120c7929190615250565b60408051808201909152600481527f57654fe400000000000000000000000000000000000000000000000000000000602082015290565b606063de16f1a060e01b826040516024016128a5919061522f565b6000818152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff16610e4c57610e4c610982826000613c39565b613653614ee9565b61365c836122ea565b9050613686611c498383604001516bffffffffffffffffffffffff1661215490919063ffffffff16565b6bffffffffffffffffffffffff16604082015261118d83826134eb565b6136ab614ee9565b6136b4836122ea565b9050613686611c498383604001516bffffffffffffffffffffffff1661286e90919063ffffffff16565b1460011690565b60606382ded78560e01b83836040516024016120c79291906152a8565b60606322df959760e01b848484604051602401613428939291906153f7565b606063e9f8377160e01b83836040516024016120c792919061537d565b606063140a84db60e01b83836040516024016120c7929190615250565b60606331d7a50560e01b83836040516024016120c792919061537d565b60006131ea8361378e868563ffffffff613c5616565b9063ffffffff613c8716565b600c546000906137b190600163ffffffff61215416565b90506137bb614f09565b50600082815260156020908152604080832084845282529182902082516060810184528154808252600183015493820193909352600290910154928101929092521561118d5761118d6109828484613cb1565b6000828152600b602052604090205461382d908263ffffffff61215416565b6000838152600b602052604090205560175461384f908263ffffffff61215416565b6017555050565b610e4c8160006001613b50565b60006131ea8361378e61387d82600163ffffffff61215416565b61388d888763ffffffff613c5616565b9063ffffffff61286e16565b600d5415611b4557611b456109826000613cce565b601154158015906138c6575060125463ffffffff1615155b80156138d3575060135415155b80156138e6575060145463ffffffff1615155b80156139015750601454640100000000900463ffffffff1615155b15611b4557611b456109826001613cce565b606063c996af7b60e01b83836040516024016120c79291906153ad565b600082158061393d575081155b1561394a575060006131ea565b600061395d85600163ffffffff61215416565b865167ffffffffffffffff16101561397957856040015161397f565b85602001515b6bffffffffffffffffffffffff1690508061399e5760009150506131ea565b6139a9848483613778565b9695505050505050565b60008315806139c157508183145b156139ce575060006131ea565b818310613a07576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117249061541e565b613a0f614f65565b613a198685613d0d565b9050613a23614f65565b613a2d8785613d0d565b9050611d3d81600001518260200151846000015185602001518a613e2b565b600080613a598888613eb7565b90506000613a678787613eb7565b9050811580613a74575080155b15613a85575060009150611d3d9050565b600081831315613a9e57613a998284613f09565b613aa8565b613aa88383613f09565b9050613ad1613acc613ab983613f28565b8863ffffffff168863ffffffff166145ca565b6145d9565b905081831315613aea57613ae58282613f09565b613af4565b613af48282614bc3565b9050613b00818c614bef565b9b9a5050505050505050505050565b6000828152600b6020526040902054613b2e908263ffffffff61286e16565b6000838152600b602052604090205560175461384f908263ffffffff61286e16565b6000838152600f6020526040902054600c5480821415613b7157505061118d565b613b79614f65565b506000858152600e602090815260408083208584528252918290208251808401909352805483526001015490820152613bb0614f65565b613bb982614c31565b15613bf257613bd2826000015183602001518888614c3a565b60208301819052818352613be69190614c9c565b60208301528152613bfd565b602081018590528581525b6000878152600e6020908152604080832086845282528083208451815593820151600190940193909355978152600f9097529095205550505050565b6060639ae94f0160e01b83836040516024016120c792919061536d565b600082613c6557506000610ea8565b82820282848281613c7257fe5b0414610ea557610ea561098260018686613409565b600081613c9d57613c9d61098260038585613409565b6000828481613ca857fe5b04949350505050565b6060635caa0b0560e01b83836040516024016120c792919061537d565b60607f0b02d77300000000000000000000000000000000000000000000000000000000826001811115613cfd57fe5b6040516024016128a591906155df565b613d15614f65565b506000828152600e602090815260408083208484528252918290208251808401909352805483526001015490820152613d4d81614c31565b15613d5757610ea8565b6000613d6a83600163ffffffff61215416565b6000858152600e60209081526040808320848452825291829020825180840190935280548352600101549082015292509050613da582614c31565b15613db05750610ea8565b6000848152600f602052604090205483811015613e0d576000858152600e6020908152604080832084845282529182902082518084019093528054835260010154908201529250613e0083614c31565b15613e0d5750610ea89050565b50506040805180820190915260008152600160208201529392505050565b600081613e3a57506000613eae565b83613e5a57613e538561378e848963ffffffff613c5616565b9050613eae565b6000613e7f613e6f868863ffffffff613c5616565b61229b898763ffffffff613c5616565b90506000613e93828663ffffffff613c8716565b9050613ea98761378e868463ffffffff613c5616565b925050505b95945050505050565b600080831215613ecf57613ecf610982600185614cc5565b6000821215613ee657613ee6610982600184614cc5565b610ea5613f03846f80000000000000000000000000000000614d06565b83614d59565b6000610ea5613f03846f80000000000000000000000000000000614d06565b60006f80000000000000000000000000000000821315613f5057613f50610982600184614dda565b60008213613f6657613f66610982600084614dda565b6f80000000000000000000000000000000821415613f8657506000610bef565b640733048c5a8213613fb957507fffffffffffffffffffffffffffffffe010000000000000000000000000000000610bef565b60008060006a01c8464f761647600000008513614018577ffffffffffffffffffffffffffffffff000000000000000000000000000000000909301926a01c8464f761647600000006f8000000000000000000000000000000086020594505b6cf1aaddd7742e900000000000008513614076577ffffffffffffffffffffffffffffffff800000000000000000000000000000000909301926cf1aaddd7742e900000000000006f8000000000000000000000000000000086020594505b6e0afe10820813d7800000000000000085136140d8577ffffffffffffffffffffffffffffffffc00000000000000000000000000000000909301926e0afe10820813d780000000000000006f8000000000000000000000000000000086020594505b6f02582ab704279ec00000000000000000851361413c577ffffffffffffffffffffffffffffffffe00000000000000000000000000000000909301926f02582ab704279ec000000000000000006f8000000000000000000000000000000086020594505b6f1152aaa3bf81cc00000000000000000085136141a0577fffffffffffffffffffffffffffffffff00000000000000000000000000000000909301926f1152aaa3bf81cc0000000000000000006f8000000000000000000000000000000086020594505b6f2f16ac6c59de700000000000000000008513614204577fffffffffffffffffffffffffffffffff80000000000000000000000000000000909301926f2f16ac6c59de700000000000000000006f8000000000000000000000000000000086020594505b6f4da2cbf1be58280000000000000000008513614268577fffffffffffffffffffffffffffffffffc0000000000000000000000000000000909301926f4da2cbf1be58280000000000000000006f8000000000000000000000000000000086020594505b6f63afbe7ab2082c00000000000000000085136142cc577fffffffffffffffffffffffffffffffffe0000000000000000000000000000000909301926f63afbe7ab2082c0000000000000000006f8000000000000000000000000000000086020594505b6f70f5a893b608861e1f58934f97aea57d8513614330577ffffffffffffffffffffffffffffffffff0000000000000000000000000000000909301926f70f5a893b608861e1f58934f97aea57d6f8000000000000000000000000000000086020594505b7fffffffffffffffffffffffffffffffff80000000000000000000000000000000850192508291506f80000000000000000000000000000000828002059050700100000000000000000000000000000000838103830205840193506f80000000000000000000000000000000818302816143a657fe5b059150700200000000000000000000000000000000836faaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa038302816143d757fe5b05840193506f80000000000000000000000000000000818302816143f757fe5b059150700300000000000000000000000000000000836f999999999999999999999999999999990383028161442857fe5b05840193506f800000000000000000000000000000008183028161444857fe5b059150700400000000000000000000000000000000836f924924924924924924924924924924920383028161447957fe5b05840193506f800000000000000000000000000000008183028161449957fe5b059150700500000000000000000000000000000000836f8e38e38e38e38e38e38e38e38e38e38e038302816144ca57fe5b05840193506f80000000000000000000000000000000818302816144ea57fe5b059150700600000000000000000000000000000000836f8ba2e8ba2e8ba2e8ba2e8ba2e8ba2e8b0383028161451b57fe5b05840193506f800000000000000000000000000000008183028161453b57fe5b059150700700000000000000000000000000000000836f89d89d89d89d89d89d89d89d89d89d890383028161456c57fe5b05840193506f800000000000000000000000000000008183028161458c57fe5b059150700800000000000000000000000000000000836f88888888888888888888888888888888038302816145bd57fe5b0584019350505050919050565b60006131ea613f038585614d06565b60007fffffffffffffffffffffffffffffffe01000000000000000000000000000000082121561460b57506000610bef565b8161462757506f80000000000000000000000000000000610bef565b600082131561463e5761463e610982600184614dda565b6f800000000000000000000000000000006f1000000000000000000000000000000083078080028290056710e1b3be415a0000810293909301929091818302059050806705a0913f6b1e000002830192506f80000000000000000000000000000000828202816146aa57fe5b05905080670168244fdac7800002830192506f80000000000000000000000000000000828202816146d757fe5b05905080664807432bc1800002830192506f800000000000000000000000000000008282028161470357fe5b05905080660c0135dca0400002830192506f800000000000000000000000000000008282028161472f57fe5b059050806601b707b1cdc00002830192506f800000000000000000000000000000008282028161475b57fe5b059050806536e0f639b80002830192506f800000000000000000000000000000008282028161478657fe5b05905080650618fee9f80002830192506f80000000000000000000000000000000828202816147b157fe5b05905080649c197dcc0002830192506f80000000000000000000000000000000828202816147db57fe5b05905080640e30dce40002830192506f800000000000000000000000000000008282028161480557fe5b0590508064012ebd130002830192506f800000000000000000000000000000008282028161482f57fe5b059050806317499f0002830192506f800000000000000000000000000000008282028161485857fe5b059050806301a9d48002830192506f800000000000000000000000000000008282028161488157fe5b05905080621c638002830192506f80000000000000000000000000000000828202816148a957fe5b059050806201c63802830192506f80000000000000000000000000000000828202816148d157fe5b05905080611ab802830192506f80000000000000000000000000000000828202816148f857fe5b0590508061017c02830192506f800000000000000000000000000000008282028161491f57fe5b05905080601402830192506f800000000000000000000000000000008282028161494557fe5b600095909503946721c3677c82b400009190059384010582016f80000000000000000000000000000000019290507010000000000000000000000000000000008416156149b4577243cbaf42a000812488fc5c220ad7b97bf6e99e6cf1aaddd7742e56d32fb9f9974484020592505b7008000000000000000000000000000000008416156149f6577105d27a9f51c31b7c2f8038212a05747799916e0afe10820813d65dfe6a33c07f738f84020592505b700400000000000000000000000000000000841615614a3857701b4c902e273a58678d6d3bfdb93db96d026f02582ab704279e8efd15e0265855c47a84020592505b700200000000000000000000000000000000841615614a7a577003b1cc971a9bb5b9867477440d6d1577506f1152aaa3bf81cb9fdb76eae12d02957184020592505b700100000000000000000000000000000000841615614abc5770015bf0a8b1457695355fb8ac404e7a79e36f2f16ac6c59de6f8d5d6f63c1482a7c8684020592505b6f80000000000000000000000000000000841615614afc576fd3094c70f034de4b96ff7d5b6f99fcd86f4da2cbf1be5827f9eb3ad1aa9866ebb384020592505b6f40000000000000000000000000000000841615614b3c576fa45af1e1f40c333b3de1db4dd55f29a76f63afbe7ab2082ba1a0ae5e4eb1b479dc84020592505b6f20000000000000000000000000000000841615614b7c576f910b022db7ae67ce76b441c27035c6a16f70f5a893b608861e1f58934f97aea57d84020592505b6f10000000000000000000000000000000841615614bbc576f88415abbe9a76bead8d00cf112e4d4a86f783eafef1c0a8f3978c7f81824d62ebf84020592505b5050919050565b60006f80000000000000000000000000000000614be08484614d06565b81614be757fe5b059392505050565b600080821215614c0757614c07610982600184614cc5565b6000614c138484614d06565b905060008113614c27576000915050610ea8565b607f1c9392505050565b60200151151590565b60008085614c4c575082905081614c93565b83614c5b575084905083614c93565b614c7e614c6e858763ffffffff613c5616565b61388d888663ffffffff613c5616565b9150614c90858463ffffffff613c5616565b90505b94509492505050565b600080614cba84846f80000000000000000000000000000000614e09565b915091509250929050565b60607fbd79545f00000000000000000000000000000000000000000000000000000000836001811115614cf457fe5b836040516024016120c79291906155ed565b6000821580614d13575081155b15614d2057506000610ea8565b5081810281838281614d2e57fe5b05141580614d45575082828281614d4157fe5b0514155b15610ea857610ea861098260018585614e77565b600081614d6f57614d6f61098260028585614e77565b7f800000000000000000000000000000000000000000000000000000000000000083148015614dbd5750817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff145b15614dd157614dd161098260038585614e77565b818381614be757fe5b60607fed2f26a100000000000000000000000000000000000000000000000000000000836001811115614cf457fe5b60008082851180614e1957508284115b15614e6e57600084861015614e2e5784614e30565b855b9050614e42818563ffffffff613c8716565b9050614e54868263ffffffff613c8716565b9250614e66858263ffffffff613c8716565b91505061303b565b50929391925050565b60607f8c12dfe700000000000000000000000000000000000000000000000000000000846003811115614ea657fe5b848460405160240161342893929190615600565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b604080516060810182526000808252602082018190529181019190915290565b60405180606001604052806000815260200160008152602001600081525090565b604080518082019091526000808252602082015290565b81548183558181111561118d5760008381526020902061118d918101908301614f7f565b604051806040016040528060008152602001600081525090565b610b5791905b80821115614f995760008155600101614f85565b5090565b803573ffffffffffffffffffffffffffffffffffffffff81168114610ea857600080fd5b60006040828403121561238a578081fd5b600060208284031215614fe3578081fd5b610ea58383614f9d565b600080600060608486031215615001578182fd5b833561500c81615625565b9250602084013561501c81615625565b929592945050506040919091013590565b6000806040838503121561503f578182fd5b6150498484614f9d565b946020939093013593505050565b60008060408385031215615069578182fd5b6150738484614f9d565b9150602083013561508381615655565b809150509250929050565b60006020828403121561509f578081fd5b8151610ea581615647565b6000602082840312156150bb578081fd5b5035919050565b600080604083850312156150d4578182fd5b82359150602083013561508381615625565b600080604083850312156150f8578182fd5b50508035926020909101359150565b60008060408385031215615119578182fd5b82359150602083013563ffffffff81168114615083578182fd5b600060208284031215615144578081fd5b8135610ea581615655565b600080600060a08486031215615163578283fd5b61516d8585614fc1565b925061517c8560408601614fc1565b9150608084013590509250925092565b60006020828403121561519d578081fd5b5051919050565b600080600080600060a086880312156151bb578283fd5b8535945060208601356151cd81615662565b93506040860135925060608601356151e481615662565b915060808601356151f481615662565b809150509295509295909350565b60008060408385031215615214578182fd5b823561521f81615662565b9150602083013561508381615647565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b602080825282518282018190526000918401906040840190835b8181101561531c57835173ffffffffffffffffffffffffffffffffffffffff168352602093840193909201916001016152e8565b509095945050505050565b901515815260200190565b90815260200190565b92835273ffffffffffffffffffffffffffffffffffffffff91909116602083015263ffffffff16604082015260600190565b9182521515602082015260400190565b918252602082015260400190565b606081016004851061539957fe5b938152602081019290925260409091015290565b60408101600384106153bb57fe5b9281526020015290565b604081016153d28461561b565b92815273ffffffffffffffffffffffffffffffffffffffff9190911660209091015290565b606081016154048561561b565b938152602081019290925263ffffffff1660409091015290565b60208082526013908201527f43525f494e54455256414c5f494e56414c494400000000000000000000000000604082015260600190565b60208082526014908201527f574554485f5452414e534645525f4641494c4544000000000000000000000000604082015260600190565b81518152602080830151908201526040918201519181019190915260600190565b815173ffffffffffffffffffffffffffffffffffffffff16815260209182015163ffffffff169181019190915260400190565b815167ffffffffffffffff1681526020808301516bffffffffffffffffffffffff90811691830191909152604092830151169181019190915260600190565b9283526020830191909152604082015260600190565b93845260208401929092526040830152606082015260800190565b948552602085019390935260408401919091526060830152608082015260a00190565b94855263ffffffff938416602086015260408501929092528216606084015216608082015260a00190565b92835260ff918216602084015216604082015260600190565b63ffffffff91909116815260200190565b63ffffffff92831681529116602082015260400190565b60ff91909116815260200190565b60ff929092168252602082015260400190565b60ff9390931683526020830191909152604082015260600190565b60028110610e4c57fe5b73ffffffffffffffffffffffffffffffffffffffff81168114610e4c57600080fd5b8015158114610e4c57600080fd5b60028110610e4c57600080fd5b63ffffffff81168114610e4c57600080fdfea365627a7a72315820aaa74c9eed38f6d75114c73ae847a986db473c91ccb1cf6041795e71c08e39206c6578706572696d656e74616cf564736f6c634300050c0040" + "object": "0x6080604052600436106103295760003560e01c80638da5cb5b116101a5578063bb7ef7e0116100ec578063e8eeb3f811610095578063f18765321161006f578063f1876532146108bf578063f252b7a1146108df578063f2fde38b146108ff578063ff691b111461091f57610329565b8063e8eeb3f814610875578063e907f0031461088a578063ee99205c146108aa57610329565b8063e0ee036e116100c6578063e0ee036e1461082b578063e1c7392a14610840578063e804d0a41461085557610329565b8063bb7ef7e0146107c9578063c18c9141146107e9578063d39de6e91461080957610329565b8063a694fc3a1161014e578063b3e3337911610128578063b3e3337914610769578063b510879f14610789578063b9181611146107a957610329565b8063a694fc3a1461071f578063b05315241461073f578063b2baa33e1461075457610329565b8063a26171e21161017f578063a26171e2146106e2578063a3b4a327146106f7578063a657e5791461070a57610329565b80638da5cb5b1461068d5780639ad26744146106a25780639c3ccc82146106c257610329565b80634bcc3f6711610274578063624a72321161021d57806370712939116101f757806370712939146106165780637667180814610636578063816667961461064b5780638a2e271a1461066d57610329565b8063624a7232146105cc57806363403801146105e157806368a7d6cd146105f657610329565b80635bd4ab731161024e5780635bd4ab73146105595780635d91121d146105865780635e615a6b146105a657610329565b80634bcc3f67146104f7578063587da0231461052457806358f6c7e31461053957610329565b80633c277fc5116102d657806344a6958b116102b057806344a6958b1461048a57806346b97959146104aa578063494503d4146104d757610329565b80633c277fc51461041b5780633e4ad7321461043d57806342f1181e1461046a57610329565b80632a94c279116103075780632a94c2791461039b5780632e17de78146103ca57806338229d93146103ea57610329565b806301e28d841461032e5780630b9663db146103505780631e7ff8f61461037b575b600080fd5b34801561033a57600080fd5b5061034e610349366004614fd2565b61093f565b005b34801561035c57600080fd5b50610365610a0d565b6040516103729190615332565b60405180910390f35b34801561038757600080fd5b50610365610396366004614fd2565b610b5a565b3480156103a757600080fd5b506103bb6103b63660046150e6565b610bf4565b6040516103729392919061551f565b3480156103d657600080fd5b5061034e6103e53660046150aa565b610c20565b3480156103f657600080fd5b5061040a6104053660046150aa565b610dd5565b604051610372959493929190615550565b34801561042757600080fd5b50610430610e04565b604051610372919061522f565b34801561044957600080fd5b5061045d6104583660046150aa565b610e1c565b60405161037291906154e0565b34801561047657600080fd5b5061034e610485366004614fd2565b610e3b565b34801561049657600080fd5b5061045d6104a5366004615057565b610e4f565b3480156104b657600080fd5b506104ca6104c53660046150aa565b610eae565b604051610372919061548c565b3480156104e357600080fd5b506104306104f23660046150aa565b610ef9565b34801561050357600080fd5b506105176105123660046150aa565b610f2d565b60405161037291906154ad565b34801561053057600080fd5b50610365610f8f565b34801561054557600080fd5b5061034e61055436600461514f565b610f95565b34801561056557600080fd5b50610579610574366004614fd2565b611192565b6040516103729190615327565b34801561059257600080fd5b5061034e6105a1366004615107565b6111a7565b3480156105b257600080fd5b506105bb611270565b604051610372959493929190615573565b3480156105d857600080fd5b50610430611299565b3480156105ed57600080fd5b506103656112b1565b34801561060257600080fd5b50610365610611366004615202565b6112b7565b34801561062257600080fd5b5061034e610631366004614fd2565b6113f0565b34801561064257600080fd5b506103656114a5565b34801561065757600080fd5b506106606114ab565b60405161037291906155b7565b34801561067957600080fd5b5061034e610688366004614fd2565b6114b7565b34801561069957600080fd5b50610430611579565b3480156106ae57600080fd5b5061034e6106bd36600461502d565b611595565b3480156106ce57600080fd5b5061034e6106dd3660046151a4565b6115a7565b3480156106ee57600080fd5b50610365611621565b61034e610705366004614fed565b611627565b34801561071657600080fd5b50610365611877565b34801561072b57600080fd5b5061034e61073a3660046150aa565b61187d565b34801561074b57600080fd5b50610365611992565b34801561076057600080fd5b50610365611998565b34801561077557600080fd5b5061034e6107843660046150aa565b6119b6565b34801561079557600080fd5b5061034e6107a43660046150aa565b6119f6565b3480156107b557600080fd5b506105796107c4366004614fd2565b611a00565b3480156107d557600080fd5b506103656107e43660046150aa565b611a15565b3480156107f557600080fd5b506103656108043660046150aa565b611aa0565b34801561081557600080fd5b5061081e611ab2565b60405161037291906152ce565b34801561083757600080fd5b50610660611b21565b34801561084c57600080fd5b5061034e611b2d565b34801561086157600080fd5b5061045d610870366004615133565b611b47565b34801561088157600080fd5b50610660611c97565b34801561089657600080fd5b506103656108a53660046150c2565b611cab565b3480156108b657600080fd5b50610430611d48565b3480156108cb57600080fd5b506103656108da366004614fd2565b611d64565b3480156108eb57600080fd5b5061045d6108fa36600461502d565b611d76565b34801561090b57600080fd5b5061034e61091a366004614fd2565b611db7565b34801561092b57600080fd5b5061034e61093a3660046150aa565b611e5a565b610947612087565b73ffffffffffffffffffffffffffffffffffffffff811660009081526010602052604090205460ff16610987576109876109826001836120aa565b61214c565b73ffffffffffffffffffffffffffffffffffffffff81166000908152601060205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055517ff50d0d312d501878616eb5e78ebf3ed6dcd3955aaef8165af9c6b057cc4832fb90610a0290839061522f565b60405180910390a150565b600c5460009081610a2582600163ffffffff61215416565b6000818152601660205260409020600101549091508015610a4d57610a4d6109828383612173565b610a55612190565b610a5d612203565b600084815260166020526040902055610a74614eba565b50600083815260166020908152604091829020825160a08101845281548082526001830154938201849052600283015482860181905260038401546060840181905260049094015460808401529451919488947fbb4a26fa0ace13ee4da343896c20eaa44a618fb9071fdd8c2e2c960a4583189d94610af69491939291615535565b60405180910390a2610b066122a7565b6020810151610b4d57805160405185917fb463d19ecf455be65365092cf8e1db6934a0334cf8cd532ddf9964d01f36b5b291610b449160009161537d565b60405180910390a25b6020015193505050505b90565b6000610b64611299565b73ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b8152600401610b9c919061522f565b60206040518083038186803b158015610bb457600080fd5b505afa158015610bc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610bec919081019061518c565b90505b919050565b601560209081526000928352604080842090915290825290208054600182015460029092015490919083565b33610c29614ee9565b73ffffffffffffffffffffffffffffffffffffffff821660009081527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc60205260409020610c76906122ea565b90506000610ca882602001516bffffffffffffffffffffffff1683604001516bffffffffffffffffffffffff16612390565b905080841115610cbf57610cbf61098285836123a6565b73ffffffffffffffffffffffffffffffffffffffff831660009081527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc60205260409020610d0d90856123c3565b610d15611299565b73ffffffffffffffffffffffffffffffffffffffff16639470b0bd84866040518363ffffffff1660e01b8152600401610d4f9291906152a8565b600060405180830381600087803b158015610d6957600080fd5b505af1158015610d7d573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f85082129d87b2fe11527cb1b3b7a520aeb5aa6913f88a3d8757fe40d1db02fdd85604051610dc79190615332565b60405180910390a250505050565b601660205260009081526040902080546001820154600283015460038401546004909401549293919290919085565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc290565b610e24614ee9565b6000828152600760205260409020610bec906122ea565b610e4361244a565b610e4c81612491565b50565b610e57614ee9565b610ea560056000846001811115610e6a57fe5b60ff1681526020808201929092526040908101600090812073ffffffffffffffffffffffffffffffffffffffff8816825290925290206122ea565b90505b92915050565b610eb6614f09565b506000908152601560209081526040808320600c548452825291829020825160608101845281548152600182015492810192909252600201549181019190915290565b60028181548110610f0657fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b610f35614f2a565b506000908152600a602090815260409182902082518084019093525473ffffffffffffffffffffffffffffffffffffffff8116835274010000000000000000000000000000000000000000900463ffffffff169082015290565b600d5481565b3381610fa1575061118d565b6000610fb06020860186615133565b6001811115610fbb57fe5b148015610fdf57506000610fd26020850185615133565b6001811115610fdd57fe5b145b15610fea575061118d565b6001610ff96020860186615133565b600181111561100457fe5b141561101957611019846020013582846125c2565b60016110286020850185615133565b600181111561103357fe5b1415611048576110488360200135828461265b565b600060058161105a6020880188615133565b600181111561106557fe5b60ff1681526020808201929092526040908101600090812073ffffffffffffffffffffffffffffffffffffffff86168252835290812092509060059082906110af90880188615133565b60018111156110ba57fe5b60ff1681526020808201929092526040908101600090812073ffffffffffffffffffffffffffffffffffffffff87168252909252902090506110fd8282866126f4565b60208086013590870180359073ffffffffffffffffffffffffffffffffffffffff8616907f7d3ad1dcf03b9027064d1d9a474a69e0cecc31324c541d3eb9b5e6fa2f106c8d90889061114f908c615133565b600181111561115a57fe5b61116760208c018c615133565b600181111561117257fe5b6040516111819392919061559e565b60405180910390a45050505b505050565b60106020526000908152604090205460ff1681565b816111b1816127ed565b6000838152600a602052604090205474010000000000000000000000000000000000000000900463ffffffff166111e9848285612826565b6000848152600a60205260409081902080547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000063ffffffff8716021790555184907f8ea2a7a959bd25f226b7b0a4393613f7fdcaa8404e8bad96aa52dc1c1459016790610dc790849087906155c8565b601154601254601354601454929363ffffffff9283169391928281169264010000000090041690565b73ba7f8b5fb1b19c1211c5d49550fcd149177a5eaf90565b60115481565b60085460009033906112d090600163ffffffff61286e16565b600881905591506112e582620f424086612826565b6112ed614f2a565b5060408051808201825273ffffffffffffffffffffffffffffffffffffffff838116825263ffffffff87811660208085019182526000888152600a9091528590208451815492517fffffffffffffffffffffffff00000000000000000000000000000000000000009093169416939093177fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000919092160217905590517fcec6fc86ea644053f6edff1160dfe3fa5c61e7a5ef9f873f145bb03a0bd319e7906113d19085908590899061533b565b60405180910390a183156113e8576113e8836119b6565b505092915050565b6113f861244a565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff16611431576114316109828261288a565b60005b6002548110156114a1578173ffffffffffffffffffffffffffffffffffffffff166002828154811061146257fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff161415611499576114948282612929565b6114a1565b600101611434565b5050565b600c5481565b60145463ffffffff1681565b6114bf612087565b73ffffffffffffffffffffffffffffffffffffffff811660009081526010602052604090205460ff16156114fb576114fb6109826000836120aa565b73ffffffffffffffffffffffffffffffffffffffff81166000908152601060205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055517f3e535d1ab441ef41c268fd9b52b478aee02d693c5ca2a84b5d26b89e0922e5e190610a0290839061522f565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b61159d61244a565b6114a18282612929565b6115af612087565b6115bc8585858585612b78565b3073ffffffffffffffffffffffffffffffffffffffff1663c6f3a4276040518163ffffffff1660e01b815260040160006040518083038186803b15801561160257600080fd5b505afa158015611616573d6000803e3d6000fd5b505050505050505050565b60135481565b3360009081526010602052604090205460ff1661164a5761164a61098233612c3b565b61165381612c56565b3461172d57611660610e04565b73ffffffffffffffffffffffffffffffffffffffff166323b872dd8330846040518463ffffffff1660e01b815260040161169c93929190615277565b602060405180830381600087803b1580156116b657600080fd5b505af11580156116ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506116ee919081019061508e565b61172d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172490615455565b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83166000908152600960205260409020548061175e575061118d565b600061176982610e1c565b602001516bffffffffffffffffffffffff16905060135481101561178e57505061118d565b600c5460008381526015602090815260408083208484528252808320601690925290912081548061183d576000806117c68888612c77565b6002870182905560018701819055600386015491935091506117ee908263ffffffff61286e16565b60038501556001808501546118089163ffffffff61286e16565b6001850155604051889087907f14b098103235344975b17508c2391721cc9ac3f3fa2b56c7ff46f8480dfd074f90600090a350505b61184d818863ffffffff61286e16565b83556002820154611864908863ffffffff61286e16565b8260020181905550505050505050505050565b60085481565b33611886611299565b73ffffffffffffffffffffffffffffffffffffffff166315cc36f282846040518363ffffffff1660e01b81526004016118c09291906152a8565b600060405180830381600087803b1580156118da57600080fd5b505af11580156118ee573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff811660009081527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc602052604090206119409083612d03565b8073ffffffffffffffffffffffffffffffffffffffff167febedb8b3c678666e7f36970bc8f57abf6d8fa2e828c0da91ea5b75bf68ed101a836040516119869190615332565b60405180910390a25050565b60175481565b60006119b1601154600d5461286e90919063ffffffff16565b905090565b3360008181526009602052604080822084905551839183917f5640833634fce74eb9211d1209a91dd5a1c8c6a751696bff9323b4db67f815139190a35050565b610e4c8133612d6d565b60016020526000908152604090205460ff1681565b6000611a1f614f2a565b506000828152600a6020908152604080832081518083019092525473ffffffffffffffffffffffffffffffffffffffff8116825274010000000000000000000000000000000000000000900463ffffffff16918101919091529080611a8385612f45565b91509150611a9683602001518383613002565b5095945050505050565b600b6020526000908152604090205481565b60606002805480602002602001604051908101604052809291908181526020018280548015611b1757602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611aec575b5050505050905090565b60125463ffffffff1681565b611b35612087565b611b3d613043565b611b45613056565b565b611b4f614ee9565b60016000526004602052611b827fabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe056122ea565b90506000826001811115611b9257fe5b1415610bef576000611ba2611299565b73ffffffffffffffffffffffffffffffffffffffff16639706e0c06040518163ffffffff1660e01b815260040160206040518083038186803b158015611be757600080fd5b505afa158015611bfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611c1f919081019061518c565b9050611c4e611c4983602001516bffffffffffffffffffffffff168361215490919063ffffffff16565b613081565b6bffffffffffffffffffffffff90811660208401526040830151611c7e91611c499184911663ffffffff61215416565b6bffffffffffffffffffffffff16604083015250919050565b601454640100000000900463ffffffff1681565b6000611cb5614f2a565b506000838152600a6020908152604080832081518083019092525473ffffffffffffffffffffffffffffffffffffffff8116825274010000000000000000000000000000000000000000900463ffffffff16918101919091529080611d1986612f45565b915091506000611d2e84602001518484613002565b915050611d3d878783856130a5565b979650505050505050565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b60096020526000908152604090205481565b611d7e614ee9565b73ffffffffffffffffffffffffffffffffffffffff831660009081526006602090815260408083208584529091529020610ea5906122ea565b611dbf61244a565b73ffffffffffffffffffffffffffffffffffffffff8116611dea57611de56109826131f2565b610e4c565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b600c546000611e7082600163ffffffff61215416565b9050611e7a614eba565b50600081815260166020908152604091829020825160a08101845281548152600182015492810183905260028201549381019390935260038101546060840152600401546080830152611ecf57505050610e4c565b611ed7614f09565b5060008481526015602090815260408083208584528252918290208251606081018452815480825260018301549382019390935260029091015492810192909252611f255750505050610e4c565b6000858152601560209081526040808320868452909152812081815560018101829055600201819055611f588284613229565b9050600080611f6c8884866040015161329e565b9150915087877ff1116b309178aa62dcb6bf8c3b8bc2321724907c7ebf52192d14c8ce3aa9194c8484604051611fa392919061537d565b60405180910390a36000611fbd838363ffffffff61286e16565b6080870151909150611fd5908263ffffffff61286e16565b6080870181905260008881526016602090815260409091206004019190915586015161200890600163ffffffff61215416565b602080880182815260008a8152601690925260409091206001019190915551611616576080860151865188917fb463d19ecf455be65365092cf8e1db6934a0334cf8cd532ddf9964d01f36b5b291612066908263ffffffff61215416565b60405161207492919061537d565b60405180910390a2505050505050505050565b3360009081526001602052604090205460ff16611b4557611b45610982336133ee565b606063b9588e4360e01b83836040516024016120c79291906153c5565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905092915050565b805160208201fd5b60008282111561216d5761216d61098260028585613409565b50900390565b606063614b800a60e01b83836040516024016120c792919061537d565b30318015610e4c576121a0610e04565b73ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b1580156121e757600080fd5b505af11580156121fb573d6000803e3d6000fd5b505050505050565b60006119b1601754612213610e04565b73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161224b919061522f565b60206040518083038186803b15801561226357600080fd5b505afa158015612277573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061229b919081019061518c565b9063ffffffff61215416565b4260006122b2611998565b9050818111156122c9576122c961098282846134ae565b600c546000906122e090600163ffffffff61286e16565b600c555050600d55565b6122f2614ee9565b5060408051606081018252825467ffffffffffffffff81168083526bffffffffffffffffffffffff680100000000000000008304811660208501527401000000000000000000000000000000000000000090920490911692820192909252600c54909181111561238a57612365816134cb565b67ffffffffffffffff16825260408201516bffffffffffffffffffffffff1660208301525b50919050565b600081831061239f5781610ea5565b5090919050565b60606384c8b7c960e01b83836040516024016120c792919061537d565b6123cb614ee9565b6123d4836122ea565b90506123fe611c498383604001516bffffffffffffffffffffffff1661215490919063ffffffff16565b6bffffffffffffffffffffffff9081166040830152602082015161242d91611c4991168463ffffffff61215416565b6bffffffffffffffffffffffff16602082015261118d83826134eb565b60005473ffffffffffffffffffffffffffffffffffffffff163314611b4557600054611b459061098290339073ffffffffffffffffffffffffffffffffffffffff166135a5565b73ffffffffffffffffffffffffffffffffffffffff81166124b7576124b76109826135c2565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff16156124f1576124f1610982826135f9565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168317905560028054928301815583527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001684179055513392917f3147867c59d17e8fa9d522465651d44aae0a9e38f902f3475b97e58072f0ed4c91a350565b6125cb83613614565b6125d58383612d6d565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600660209081526040808320868452909152902061260f908261364b565b6000838152600760205260409020612627908261364b565b6001600052600460205261118d7fabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe058261364b565b61266483613614565b61266e8383612d6d565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260066020908152604080832086845290915290206126a890826136a3565b60008381526007602052604090206126c090826136a3565b6001600052600460205261118d7fabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05826136a3565b6126fe83836136de565b156127085761118d565b612710614ee9565b612719846122ea565b9050612723614ee9565b61272c846122ea565b905081604001516bffffffffffffffffffffffff16831115612767576127676109828484604001516bffffffffffffffffffffffff166123a6565b604082015161278e90611c49906bffffffffffffffffffffffff168563ffffffff61215416565b6bffffffffffffffffffffffff9081166040808501919091528201516127bf91611c4991168563ffffffff61286e16565b6bffffffffffffffffffffffff1660408201526127dc85836134eb565b6127e684826134eb565b5050505050565b6000818152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff163381146114a1576114a161098233846136e5565b620f424063ffffffff8216111561284b5761284661098260008584613702565b61118d565b8163ffffffff168163ffffffff16111561118d5761118d61098260018584613702565b600082820183811015610ea557610ea561098260008686613409565b606063eb5108a260e01b826040516024016128a5919061522f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050919050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205460ff16612962576129626109828361288a565b600254811061297d5761297d61098282600280549050613721565b8173ffffffffffffffffffffffffffffffffffffffff16600282815481106129a157fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1614612a0357612a03610982600283815481106129db57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff168461373e565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101908110612a7e57fe5b6000918252602090912001546002805473ffffffffffffffffffffffffffffffffffffffff9092169183908110612ab157fe5b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190612b309082614f41565b50604051339073ffffffffffffffffffffffffffffffffffffffff8416907f1f32c1b084e2de0713b8fb16bd46bb9df710a3dbeae2f3ca93af46e016dcc6b090600090a35050565b60118590556012805463ffffffff8087167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000092831617909255601385905560148054848416640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff9487169190931617929092161790556040517f613157dbb0e920deab8ad6ddd3805e87cbf57344b9fe780f1764790ec789754290612c2c9087908790879087908790615573565b60405180910390a15050505050565b606063b56d2df060e01b826040516024016128a5919061522f565b803414158015612c6557503415155b15610e4c57610e4c610982823461375b565b6000828152600a602052604081205481908190612caa9073ffffffffffffffffffffffffffffffffffffffff1686611d76565b602001516bffffffffffffffffffffffff169050612cce848263ffffffff61215416565b601254909350612cf990612cec9063ffffffff16620f424086613778565b829063ffffffff61286e16565b9150509250929050565b612d0b614ee9565b612d14836122ea565b9050612d3e611c498383604001516bffffffffffffffffffffffff1661286e90919063ffffffff16565b6bffffffffffffffffffffffff9081166040830152602082015161242d91611c4991168463ffffffff61286e16565b612d768261379a565b6000612d8583836000806130a5565b73ffffffffffffffffffffffffffffffffffffffff831660009081526006602090815260408083208784529091529020909150612dc1906122ea565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600660209081526040808320888452825291829020845181549286015195909301517fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090921667ffffffffffffffff909316929092177fffffffffffffffffffffffff000000000000000000000000ffffffffffffffff16680100000000000000006bffffffffffffffffffffffff95861602179092167401000000000000000000000000000000000000000093909216929092021790558015612f3c57612ea6838261380e565b612eae610e04565b73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401612ee89291906152a8565b602060405180830381600087803b158015612f0257600080fd5b505af1158015612f16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612f3a919081019061508e565b505b61118d83613856565b6000806000612f606001600c5461215490919063ffffffff16565b9050612f6a614f09565b50600084815260156020908152604080832084845282528083208151606080820184528254825260018084015483870152600293840154838601528787526016865295849020845160a0810186528154815296810154958701959095529184015492850192909252600383015490840152600490910154608083015290612ff2908290613229565b9350806040015192505050915091565b600080826130125783915061303b565b61302663ffffffff8616620f424086613863565b9150613038848363ffffffff61215416565b90505b935093915050565b61304b613899565b42600d556001600c55565b61305e6138ae565b620d2f00620dbba068056bc75e2d63100000600260036127e68585858585612b78565b806bffffffffffffffffffffffff81168114610bef57610bef610982600284613913565b600c546000906130b3614ee9565b5073ffffffffffffffffffffffffffffffffffffffff851660009081526006602090815260408083208984528252918290208251606081018452905467ffffffffffffffff81168083526bffffffffffffffffffffffff6801000000000000000083048116948401949094527401000000000000000000000000000000000000000090910490921692810192909252821415613154576000925050506131ea565b61316081838787613930565b81519093506000906131839067ffffffffffffffff16600163ffffffff61286e16565b90506131c16131b48984602001516bffffffffffffffffffffffff16856000015167ffffffffffffffff16856139b3565b859063ffffffff61286e16565b93506131e46131b48984604001516bffffffffffffffffffffffff1684876139b3565b93505050505b949350505050565b60408051808201909152600481527fe69edc3e00000000000000000000000000000000000000000000000000000000602082015290565b815160009061323757610ea8565b8151835160408401516020860151606086015160145461326d95949392919063ffffffff80821691640100000000900416613a4c565b608083015183519192506000916132899163ffffffff61215416565b905081811015613297578091505b5092915050565b6000806132a9614f2a565b506000858152600a602090815260409182902082518084019093525473ffffffffffffffffffffffffffffffffffffffff8116835274010000000000000000000000000000000000000000900463ffffffff1690820181905261330d908686613002565b909350915082156133ca57613320610e04565b81516040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff929092169163a9059cbb916133769187906004016152a8565b602060405180830381600087803b15801561339057600080fd5b505af11580156133a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506133c8919081019061508e565b505b81156133e5576133da8683613b0f565b6133e5868386613b50565b50935093915050565b606063b65a25b960e01b826040516024016128a5919061522f565b606063e946c1bb60e01b8484846040516024016134289392919061538b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290509392505050565b606063a6bcde4760e01b83836040516024016120c792919061537d565b8067ffffffffffffffff81168114610bef57610bef610982600184613913565b8051825460408301516020909301516bffffffffffffffffffffffff90811668010000000000000000027fffffffffffffffffffffffff000000000000000000000000ffffffffffffffff91909416740100000000000000000000000000000000000000000273ffffffffffffffffffffffffffffffffffffffff67ffffffffffffffff9094167fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090931692909217929092161716179055565b6060631de45ad160e01b83836040516024016120c7929190615250565b60408051808201909152600481527f57654fe400000000000000000000000000000000000000000000000000000000602082015290565b606063de16f1a060e01b826040516024016128a5919061522f565b6000818152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff16610e4c57610e4c610982826000613c39565b613653614ee9565b61365c836122ea565b9050613686611c498383604001516bffffffffffffffffffffffff1661215490919063ffffffff16565b6bffffffffffffffffffffffff16604082015261118d83826134eb565b6136ab614ee9565b6136b4836122ea565b9050613686611c498383604001516bffffffffffffffffffffffff1661286e90919063ffffffff16565b1460011690565b60606382ded78560e01b83836040516024016120c79291906152a8565b60606322df959760e01b848484604051602401613428939291906153f7565b606063e9f8377160e01b83836040516024016120c792919061537d565b606063140a84db60e01b83836040516024016120c7929190615250565b60606331d7a50560e01b83836040516024016120c792919061537d565b60006131ea8361378e868563ffffffff613c5616565b9063ffffffff613c8716565b600c546000906137b190600163ffffffff61215416565b90506137bb614f09565b50600082815260156020908152604080832084845282529182902082516060810184528154808252600183015493820193909352600290910154928101929092521561118d5761118d6109828484613cb1565b6000828152600b602052604090205461382d908263ffffffff61215416565b6000838152600b602052604090205560175461384f908263ffffffff61215416565b6017555050565b610e4c8160006001613b50565b60006131ea8361378e61387d82600163ffffffff61215416565b61388d888763ffffffff613c5616565b9063ffffffff61286e16565b600d5415611b4557611b456109826000613cce565b601154158015906138c6575060125463ffffffff1615155b80156138d3575060135415155b80156138e6575060145463ffffffff1615155b80156139015750601454640100000000900463ffffffff1615155b15611b4557611b456109826001613cce565b606063c996af7b60e01b83836040516024016120c79291906153ad565b600082158061393d575081155b1561394a575060006131ea565b600061395d85600163ffffffff61215416565b865167ffffffffffffffff16101561397957856040015161397f565b85602001515b6bffffffffffffffffffffffff1690508061399e5760009150506131ea565b6139a9848483613778565b9695505050505050565b60008315806139c157508183145b156139ce575060006131ea565b818310613a07576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117249061541e565b613a0f614f65565b613a198685613d0d565b9050613a23614f65565b613a2d8785613d0d565b9050611d3d81600001518260200151846000015185602001518a613e2b565b600080613a598888613eb7565b90506000613a678787613eb7565b9050811580613a74575080155b15613a85575060009150611d3d9050565b600081831315613a9e57613a998284613f09565b613aa8565b613aa88383613f09565b9050613ad1613acc613ab983613f28565b8863ffffffff168863ffffffff166145ca565b6145d9565b905081831315613aea57613ae58282613f09565b613af4565b613af48282614bc3565b9050613b00818c614bef565b9b9a5050505050505050505050565b6000828152600b6020526040902054613b2e908263ffffffff61286e16565b6000838152600b602052604090205560175461384f908263ffffffff61286e16565b6000838152600f6020526040902054600c5480821415613b7157505061118d565b613b79614f65565b506000858152600e602090815260408083208584528252918290208251808401909352805483526001015490820152613bb0614f65565b613bb982614c31565b15613bf257613bd2826000015183602001518888614c3a565b60208301819052818352613be69190614c9c565b60208301528152613bfd565b602081018590528581525b6000878152600e6020908152604080832086845282528083208451815593820151600190940193909355978152600f9097529095205550505050565b6060639ae94f0160e01b83836040516024016120c792919061536d565b600082613c6557506000610ea8565b82820282848281613c7257fe5b0414610ea557610ea561098260018686613409565b600081613c9d57613c9d61098260038585613409565b6000828481613ca857fe5b04949350505050565b6060635caa0b0560e01b83836040516024016120c792919061537d565b60607f0b02d77300000000000000000000000000000000000000000000000000000000826001811115613cfd57fe5b6040516024016128a591906155df565b613d15614f65565b506000828152600e602090815260408083208484528252918290208251808401909352805483526001015490820152613d4d81614c31565b15613d5757610ea8565b6000613d6a83600163ffffffff61215416565b6000858152600e60209081526040808320848452825291829020825180840190935280548352600101549082015292509050613da582614c31565b15613db05750610ea8565b6000848152600f602052604090205483811015613e0d576000858152600e6020908152604080832084845282529182902082518084019093528054835260010154908201529250613e0083614c31565b15613e0d5750610ea89050565b50506040805180820190915260008152600160208201529392505050565b600081613e3a57506000613eae565b83613e5a57613e538561378e848963ffffffff613c5616565b9050613eae565b6000613e7f613e6f868863ffffffff613c5616565b61229b898763ffffffff613c5616565b90506000613e93828663ffffffff613c8716565b9050613ea98761378e868463ffffffff613c5616565b925050505b95945050505050565b600080831215613ecf57613ecf610982600185614cc5565b6000821215613ee657613ee6610982600184614cc5565b610ea5613f03846f80000000000000000000000000000000614d06565b83614d59565b6000610ea5613f03846f80000000000000000000000000000000614d06565b60006f80000000000000000000000000000000821315613f5057613f50610982600184614dda565b60008213613f6657613f66610982600084614dda565b6f80000000000000000000000000000000821415613f8657506000610bef565b640733048c5a8213613fb957507fffffffffffffffffffffffffffffffe010000000000000000000000000000000610bef565b60008060006a01c8464f761647600000008513614018577ffffffffffffffffffffffffffffffff000000000000000000000000000000000909301926a01c8464f761647600000006f8000000000000000000000000000000086020594505b6cf1aaddd7742e900000000000008513614076577ffffffffffffffffffffffffffffffff800000000000000000000000000000000909301926cf1aaddd7742e900000000000006f8000000000000000000000000000000086020594505b6e0afe10820813d7800000000000000085136140d8577ffffffffffffffffffffffffffffffffc00000000000000000000000000000000909301926e0afe10820813d780000000000000006f8000000000000000000000000000000086020594505b6f02582ab704279ec00000000000000000851361413c577ffffffffffffffffffffffffffffffffe00000000000000000000000000000000909301926f02582ab704279ec000000000000000006f8000000000000000000000000000000086020594505b6f1152aaa3bf81cc00000000000000000085136141a0577fffffffffffffffffffffffffffffffff00000000000000000000000000000000909301926f1152aaa3bf81cc0000000000000000006f8000000000000000000000000000000086020594505b6f2f16ac6c59de700000000000000000008513614204577fffffffffffffffffffffffffffffffff80000000000000000000000000000000909301926f2f16ac6c59de700000000000000000006f8000000000000000000000000000000086020594505b6f4da2cbf1be58280000000000000000008513614268577fffffffffffffffffffffffffffffffffc0000000000000000000000000000000909301926f4da2cbf1be58280000000000000000006f8000000000000000000000000000000086020594505b6f63afbe7ab2082c00000000000000000085136142cc577fffffffffffffffffffffffffffffffffe0000000000000000000000000000000909301926f63afbe7ab2082c0000000000000000006f8000000000000000000000000000000086020594505b6f70f5a893b608861e1f58934f97aea57d8513614330577ffffffffffffffffffffffffffffffffff0000000000000000000000000000000909301926f70f5a893b608861e1f58934f97aea57d6f8000000000000000000000000000000086020594505b7fffffffffffffffffffffffffffffffff80000000000000000000000000000000850192508291506f80000000000000000000000000000000828002059050700100000000000000000000000000000000838103830205840193506f80000000000000000000000000000000818302816143a657fe5b059150700200000000000000000000000000000000836faaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa038302816143d757fe5b05840193506f80000000000000000000000000000000818302816143f757fe5b059150700300000000000000000000000000000000836f999999999999999999999999999999990383028161442857fe5b05840193506f800000000000000000000000000000008183028161444857fe5b059150700400000000000000000000000000000000836f924924924924924924924924924924920383028161447957fe5b05840193506f800000000000000000000000000000008183028161449957fe5b059150700500000000000000000000000000000000836f8e38e38e38e38e38e38e38e38e38e38e038302816144ca57fe5b05840193506f80000000000000000000000000000000818302816144ea57fe5b059150700600000000000000000000000000000000836f8ba2e8ba2e8ba2e8ba2e8ba2e8ba2e8b0383028161451b57fe5b05840193506f800000000000000000000000000000008183028161453b57fe5b059150700700000000000000000000000000000000836f89d89d89d89d89d89d89d89d89d89d890383028161456c57fe5b05840193506f800000000000000000000000000000008183028161458c57fe5b059150700800000000000000000000000000000000836f88888888888888888888888888888888038302816145bd57fe5b0584019350505050919050565b60006131ea613f038585614d06565b60007fffffffffffffffffffffffffffffffe01000000000000000000000000000000082121561460b57506000610bef565b8161462757506f80000000000000000000000000000000610bef565b600082131561463e5761463e610982600184614dda565b6f800000000000000000000000000000006f1000000000000000000000000000000083078080028290056710e1b3be415a0000810293909301929091818302059050806705a0913f6b1e000002830192506f80000000000000000000000000000000828202816146aa57fe5b05905080670168244fdac7800002830192506f80000000000000000000000000000000828202816146d757fe5b05905080664807432bc1800002830192506f800000000000000000000000000000008282028161470357fe5b05905080660c0135dca0400002830192506f800000000000000000000000000000008282028161472f57fe5b059050806601b707b1cdc00002830192506f800000000000000000000000000000008282028161475b57fe5b059050806536e0f639b80002830192506f800000000000000000000000000000008282028161478657fe5b05905080650618fee9f80002830192506f80000000000000000000000000000000828202816147b157fe5b05905080649c197dcc0002830192506f80000000000000000000000000000000828202816147db57fe5b05905080640e30dce40002830192506f800000000000000000000000000000008282028161480557fe5b0590508064012ebd130002830192506f800000000000000000000000000000008282028161482f57fe5b059050806317499f0002830192506f800000000000000000000000000000008282028161485857fe5b059050806301a9d48002830192506f800000000000000000000000000000008282028161488157fe5b05905080621c638002830192506f80000000000000000000000000000000828202816148a957fe5b059050806201c63802830192506f80000000000000000000000000000000828202816148d157fe5b05905080611ab802830192506f80000000000000000000000000000000828202816148f857fe5b0590508061017c02830192506f800000000000000000000000000000008282028161491f57fe5b05905080601402830192506f800000000000000000000000000000008282028161494557fe5b600095909503946721c3677c82b400009190059384010582016f80000000000000000000000000000000019290507010000000000000000000000000000000008416156149b4577243cbaf42a000812488fc5c220ad7b97bf6e99e6cf1aaddd7742e56d32fb9f9974484020592505b7008000000000000000000000000000000008416156149f6577105d27a9f51c31b7c2f8038212a05747799916e0afe10820813d65dfe6a33c07f738f84020592505b700400000000000000000000000000000000841615614a3857701b4c902e273a58678d6d3bfdb93db96d026f02582ab704279e8efd15e0265855c47a84020592505b700200000000000000000000000000000000841615614a7a577003b1cc971a9bb5b9867477440d6d1577506f1152aaa3bf81cb9fdb76eae12d02957184020592505b700100000000000000000000000000000000841615614abc5770015bf0a8b1457695355fb8ac404e7a79e36f2f16ac6c59de6f8d5d6f63c1482a7c8684020592505b6f80000000000000000000000000000000841615614afc576fd3094c70f034de4b96ff7d5b6f99fcd86f4da2cbf1be5827f9eb3ad1aa9866ebb384020592505b6f40000000000000000000000000000000841615614b3c576fa45af1e1f40c333b3de1db4dd55f29a76f63afbe7ab2082ba1a0ae5e4eb1b479dc84020592505b6f20000000000000000000000000000000841615614b7c576f910b022db7ae67ce76b441c27035c6a16f70f5a893b608861e1f58934f97aea57d84020592505b6f10000000000000000000000000000000841615614bbc576f88415abbe9a76bead8d00cf112e4d4a86f783eafef1c0a8f3978c7f81824d62ebf84020592505b5050919050565b60006f80000000000000000000000000000000614be08484614d06565b81614be757fe5b059392505050565b600080821215614c0757614c07610982600184614cc5565b6000614c138484614d06565b905060008113614c27576000915050610ea8565b607f1c9392505050565b60200151151590565b60008085614c4c575082905081614c93565b83614c5b575084905083614c93565b614c7e614c6e858763ffffffff613c5616565b61388d888663ffffffff613c5616565b9150614c90858463ffffffff613c5616565b90505b94509492505050565b600080614cba84846f80000000000000000000000000000000614e09565b915091509250929050565b60607fbd79545f00000000000000000000000000000000000000000000000000000000836001811115614cf457fe5b836040516024016120c79291906155ed565b6000821580614d13575081155b15614d2057506000610ea8565b5081810281838281614d2e57fe5b05141580614d45575082828281614d4157fe5b0514155b15610ea857610ea861098260018585614e77565b600081614d6f57614d6f61098260028585614e77565b7f800000000000000000000000000000000000000000000000000000000000000083148015614dbd5750817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff145b15614dd157614dd161098260038585614e77565b818381614be757fe5b60607fed2f26a100000000000000000000000000000000000000000000000000000000836001811115614cf457fe5b60008082851180614e1957508284115b15614e6e57600084861015614e2e5784614e30565b855b9050614e42818563ffffffff613c8716565b9050614e54868263ffffffff613c8716565b9250614e66858263ffffffff613c8716565b91505061303b565b50929391925050565b60607f8c12dfe700000000000000000000000000000000000000000000000000000000846003811115614ea657fe5b848460405160240161342893929190615600565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b604080516060810182526000808252602082018190529181019190915290565b60405180606001604052806000815260200160008152602001600081525090565b604080518082019091526000808252602082015290565b81548183558181111561118d5760008381526020902061118d918101908301614f7f565b604051806040016040528060008152602001600081525090565b610b5791905b80821115614f995760008155600101614f85565b5090565b803573ffffffffffffffffffffffffffffffffffffffff81168114610ea857600080fd5b60006040828403121561238a578081fd5b600060208284031215614fe3578081fd5b610ea58383614f9d565b600080600060608486031215615001578182fd5b833561500c81615625565b9250602084013561501c81615625565b929592945050506040919091013590565b6000806040838503121561503f578182fd5b6150498484614f9d565b946020939093013593505050565b60008060408385031215615069578182fd5b6150738484614f9d565b9150602083013561508381615655565b809150509250929050565b60006020828403121561509f578081fd5b8151610ea581615647565b6000602082840312156150bb578081fd5b5035919050565b600080604083850312156150d4578182fd5b82359150602083013561508381615625565b600080604083850312156150f8578182fd5b50508035926020909101359150565b60008060408385031215615119578182fd5b82359150602083013563ffffffff81168114615083578182fd5b600060208284031215615144578081fd5b8135610ea581615655565b600080600060a08486031215615163578283fd5b61516d8585614fc1565b925061517c8560408601614fc1565b9150608084013590509250925092565b60006020828403121561519d578081fd5b5051919050565b600080600080600060a086880312156151bb578283fd5b8535945060208601356151cd81615662565b93506040860135925060608601356151e481615662565b915060808601356151f481615662565b809150509295509295909350565b60008060408385031215615214578182fd5b823561521f81615662565b9150602083013561508381615647565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b602080825282518282018190526000918401906040840190835b8181101561531c57835173ffffffffffffffffffffffffffffffffffffffff168352602093840193909201916001016152e8565b509095945050505050565b901515815260200190565b90815260200190565b92835273ffffffffffffffffffffffffffffffffffffffff91909116602083015263ffffffff16604082015260600190565b9182521515602082015260400190565b918252602082015260400190565b606081016004851061539957fe5b938152602081019290925260409091015290565b60408101600384106153bb57fe5b9281526020015290565b604081016153d28461561b565b92815273ffffffffffffffffffffffffffffffffffffffff9190911660209091015290565b606081016154048561561b565b938152602081019290925263ffffffff1660409091015290565b60208082526013908201527f43525f494e54455256414c5f494e56414c494400000000000000000000000000604082015260600190565b60208082526014908201527f574554485f5452414e534645525f4641494c4544000000000000000000000000604082015260600190565b81518152602080830151908201526040918201519181019190915260600190565b815173ffffffffffffffffffffffffffffffffffffffff16815260209182015163ffffffff169181019190915260400190565b815167ffffffffffffffff1681526020808301516bffffffffffffffffffffffff90811691830191909152604092830151169181019190915260600190565b9283526020830191909152604082015260600190565b93845260208401929092526040830152606082015260800190565b948552602085019390935260408401919091526060830152608082015260a00190565b94855263ffffffff938416602086015260408501929092528216606084015216608082015260a00190565b92835260ff918216602084015216604082015260600190565b63ffffffff91909116815260200190565b63ffffffff92831681529116602082015260400190565b60ff91909116815260200190565b60ff929092168252602082015260400190565b60ff9390931683526020830191909152604082015260600190565b60028110610e4c57fe5b73ffffffffffffffffffffffffffffffffffffffff81168114610e4c57600080fd5b8015158114610e4c57600080fd5b60028110610e4c57600080fd5b63ffffffff81168114610e4c57600080fdfea365627a7a723158204d038b5bbb04cd172bdf1cbdc85fbcdef1958f78733cbf713478ef117741cc2f6c6578706572696d656e74616cf564736f6c634300050c0040" } } }, "compiler": { "name": "solc", - "version": "soljson-v0.5.12+commit.7709ece9.js", + "version": "0.5.12+commit.7709ece9", "settings": { "optimizer": { "enabled": true, diff --git a/packages/contract-artifacts/artifacts/StakingProxy.json b/packages/contract-artifacts/artifacts/StakingProxy.json index 487d6f3c87..b8aa3d50d2 100644 --- a/packages/contract-artifacts/artifacts/StakingProxy.json +++ b/packages/contract-artifacts/artifacts/StakingProxy.json @@ -358,16 +358,16 @@ }, "evm": { "bytecode": { - "object": "0x60806040523480156200001157600080fd5b5060405162001f0c38038062001f0c83398101604081905262000034916200071a565b600080546001600160a01b031916339081179091556200005d906001600160e01b036200008e16565b62000071816001600160e01b036200019116565b620000873360006001600160e01b03620002b716565b50620007d0565b6001600160a01b038116620000c757620000c7620000b66200046060201b620012e01760201c565b6200049860201b620005db1760201c565b6001600160a01b03811660009081526001602052604090205460ff1615620001035762000103620000b682620004a060201b620013171760201c565b6001600160a01b0381166000818152600160208190526040808320805460ff19168317905560028054928301815583527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910180546001600160a01b03191684179055513392917f3147867c59d17e8fa9d522465651d44aae0a9e38f902f3475b97e58072f0ed4c91a350565b600380546001600160a01b0319166001600160a01b0383161790556040517f048368388f801041f7690185c4e28b6f3505c740c47be8ac104b55df666bfc8490620001de90839062000786565b60405180910390a160035460408051600481526024810182526020810180516001600160e01b03167fe1c7392a0000000000000000000000000000000000000000000000000000000017905290516000926060926001600160a01b03909116916200024a91906200074a565b600060405180830381855af49150503d806000811462000287576040519150601f19603f3d011682016040523d82523d6000602084013e6200028c565b606091505b5091509150816200029f57805160208201fd5b620002b26001600160e01b036200050e16565b505050565b6001600160a01b03821660009081526001602052604090205460ff16620002f257620002f2620000b683620005e960201b62000ebf1760201c565b60025481106200031c576200031c620000b6826002805490506200060660201b620013321760201c565b816001600160a01b0316600282815481106200033457fe5b6000918252602090912001546001600160a01b0316146200038d576200038d620000b6600283815481106200036557fe5b600091825260209182902001546001600160a01b03169085906200134f62000677821b17901c565b6001600160a01b0382166000908152600160205260409020805460ff19169055600280546000198101908110620003c057fe5b600091825260209091200154600280546001600160a01b039092169183908110620003e757fe5b600091825260209091200180546001600160a01b0319166001600160a01b0392909216919091179055600280546000190190620004259082620006d8565b5060405133906001600160a01b038416907f1f32c1b084e2de0713b8fb16bd46bb9df710a3dbeae2f3ca93af46e016dcc6b090600090a35050565b60408051808201909152600481527f57654fe40000000000000000000000000000000000000000000000000000000060208201525b90565b805160208201fd5b606063de16f1a060e01b82604051602401620004bd919062000786565b60408051601f198184030181529190526020810180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050919050565b6011546206978081108062000525575062278d0081115b15620005465762000546620000b660046200069660201b620011ad1760201c565b60145463ffffffff6401000000008204811691168110806200056c575063ffffffff8116155b156200058d576200058d620000b660006200069660201b620011ad1760201c565b601254620f424063ffffffff9091161115620005be57620005be620000b660016200069660201b620011ad1760201c565b60026013541015620005e557620005e5620000b660036200069660201b620011ad1760201c565b5050565b606063eb5108a260e01b82604051602401620004bd919062000786565b606063e9f8377160e01b838360405160240162000625929190620007b4565b60408051601f198184030181529190526020810180516001600160e01b03167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905092915050565b606063140a84db60e01b8383604051602401620006259291906200079a565b60607ffc45bd1100000000000000000000000000000000000000000000000000000000826004811115620006c657fe5b604051602401620004bd9190620007c2565b815481835581811115620002b257600083815260209020620002b29181019083016200049591905b8082111562000716576000815560010162000700565b5090565b6000602082840312156200072c578081fd5b81516001600160a01b038116811462000743578182fd5b9392505050565b60008251815b818110156200076c576020818601810151858301520162000750565b818111156200077b5782828501525b509190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b918252602082015260400190565b60ff91909116815260200190565b61172c80620007e06000396000f3fe6080604052600436106101ac5760003560e01c80638da5cb5b116100ec578063c6f3a4271161008a578063e8eeb3f811610064578063e8eeb3f814610539578063ee99205c1461054e578063f187653214610563578063f2fde38b14610583576101ac565b8063c6f3a427146104ed578063d39de6e914610502578063e0ee036e14610524576101ac565b8063a657e579116100c6578063a657e57914610483578063b053152414610498578063b9181611146104ad578063c18c9141146104cd576101ac565b80638da5cb5b146104395780639ad267441461044e578063a26171e21461046e576101ac565b80635bd4ab7311610159578063707129391161013357806370712939146103b557806376671808146103d557806381666796146103ea578063856a65eb1461040c576101ac565b80635bd4ab7314610353578063634038011461038057806366615d5614610395576101ac565b806342f1181e1161018a57806342f1181e146102e4578063494503d414610304578063587da02314610331576101ac565b80632a94c2791461026457806337b006a61461029c57806338229d93146102b3575b60035473ffffffffffffffffffffffffffffffffffffffff16806101da576101da6101d56105a3565b6105db565b600060608273ffffffffffffffffffffffffffffffffffffffff166000366040516102069291906114be565b600060405180830381855af49150503d8060008114610241576040519150601f19603f3d011682016040523d82523d6000602084013e610246565b606091505b5091509150816000811461025c57815182602001f35b815182602001fd5b34801561027057600080fd5b5061028461027f36600461149d565b6105e3565b60405161029393929190611661565b60405180910390f35b3480156102a857600080fd5b506102b161060f565b005b3480156102bf57600080fd5b506102d36102ce366004611485565b61066a565b604051610293959493929190611677565b3480156102f057600080fd5b506102b16102ff3660046113cd565b610699565b34801561031057600080fd5b5061032461031f366004611485565b6106ad565b60405161029391906114ea565b34801561033d57600080fd5b506103466106e1565b604051610293919061164a565b34801561035f57600080fd5b5061037361036e3660046113cd565b6106e7565b604051610293919061163f565b34801561038c57600080fd5b506103466106fc565b3480156103a157600080fd5b506102b16103b03660046113cd565b610702565b3480156103c157600080fd5b506102b16103d03660046113cd565b610713565b3480156103e157600080fd5b506103466107c8565b3480156103f657600080fd5b506103ff6107ce565b604051610293919061169a565b34801561041857600080fd5b5061042c610427366004611419565b6107da565b604051610293919061158b565b34801561044557600080fd5b50610324610967565b34801561045a57600080fd5b506102b16104693660046113ef565b610983565b34801561047a57600080fd5b50610346610995565b34801561048f57600080fd5b5061034661099b565b3480156104a457600080fd5b506103466109a1565b3480156104b957600080fd5b506103736104c83660046113cd565b6109a7565b3480156104d957600080fd5b506103466104e8366004611485565b6109bc565b3480156104f957600080fd5b506102b16109ce565b34801561050e57600080fd5b50610517610a67565b6040516102939190611532565b34801561053057600080fd5b506103ff610ad6565b34801561054557600080fd5b506103ff610ae2565b34801561055a57600080fd5b50610324610af6565b34801561056f57600080fd5b5061034661057e3660046113cd565b610b12565b34801561058f57600080fd5b506102b161059e3660046113cd565b610b24565b60408051808201909152600481527f6eff82850000000000000000000000000000000000000000000000000000000060208201525b90565b805160208201fd5b601560209081526000928352604080842090915290825290208054600182015460029092015490919083565b610617610bc7565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556040517f6caedcb22a5c22c8ebd0caf751fec1228a6e006e6ee37169321e02d31ecc818390600090a1565b601660205260009081526040902080546001820154600283015460038401546004909401549293919290919085565b6106a1610bec565b6106aa81610c33565b50565b600281815481106106ba57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b600d5481565b60106020526000908152604090205460ff1681565b60115481565b61070a610bc7565b6106aa81610d64565b61071b610bec565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff16610754576107546101d582610ebf565b60005b6002548110156107c4578173ffffffffffffffffffffffffffffffffffffffff166002828154811061078557fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1614156107bc576107b78282610f5e565b6107c4565b600101610757565b5050565b600c5481565b60145463ffffffff1681565b6040805182815260208084028201019091526060906000908290849081801561081757816020015b60608152602001906001900390816108025790505b5060035490945073ffffffffffffffffffffffffffffffffffffffff1680610844576108446101d56105a3565b60005b82811461095b578173ffffffffffffffffffffffffffffffffffffffff1688888381811061087157fe5b6020028201905080357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1368490030181126108ab57600080fd5b9091016020810191503567ffffffffffffffff8111156108ca57600080fd5b368190038213156108da57600080fd5b6040516108e89291906114be565b600060405180830381855af49150503d8060008114610923576040519150601f19603f3d011682016040523d82523d6000602084013e610928565b606091505b5090955093508461093b57835184602001fd5b8386828151811061094857fe5b6020908102919091010152600101610847565b50505050505b92915050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b61098b610bec565b6107c48282610f5e565b60135481565b60085481565b60175481565b60016020526000908152604090205460ff1681565b600b6020526000908152604090205481565b601154620697808110806109e4575062278d0081115b156109f6576109f66101d560046111ad565b60145463ffffffff640100000000820481169116811080610a1b575063ffffffff8116155b15610a2d57610a2d6101d560006111ad565b601254620f424063ffffffff9091161115610a4f57610a4f6101d560016111ad565b600260135410156107c4576107c46101d560036111ad565b60606002805480602002602001604051908101604052809291908181526020018280548015610acc57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610aa1575b5050505050905090565b60125463ffffffff1681565b601454640100000000900463ffffffff1681565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b60096020526000908152604090205481565b610b2c610bec565b73ffffffffffffffffffffffffffffffffffffffff8116610b5757610b526101d56111ec565b6106aa565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b3360009081526001602052604090205460ff16610bea57610bea6101d533611223565b565b60005473ffffffffffffffffffffffffffffffffffffffff163314610bea57600054610bea906101d590339073ffffffffffffffffffffffffffffffffffffffff1661123e565b73ffffffffffffffffffffffffffffffffffffffff8116610c5957610c596101d56112e0565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff1615610c9357610c936101d582611317565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168317905560028054928301815583527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001684179055513392917f3147867c59d17e8fa9d522465651d44aae0a9e38f902f3475b97e58072f0ed4c91a350565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790556040517f048368388f801041f7690185c4e28b6f3505c740c47be8ac104b55df666bfc8490610dd49083906114ea565b60405180910390a160035460408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe1c7392a00000000000000000000000000000000000000000000000000000000179052905160009260609273ffffffffffffffffffffffffffffffffffffffff90911691610e6091906114ce565b600060405180830381855af49150503d8060008114610e9b576040519150601f19603f3d011682016040523d82523d6000602084013e610ea0565b606091505b509150915081610eb257805160208201fd5b610eba6109ce565b505050565b606063eb5108a260e01b82604051602401610eda91906114ea565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050919050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205460ff16610f9757610f976101d583610ebf565b6002548110610fb257610fb26101d582600280549050611332565b8173ffffffffffffffffffffffffffffffffffffffff1660028281548110610fd657fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1614611038576110386101d56002838154811061101057fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff168461134f565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81019081106110b357fe5b6000918252602090912001546002805473ffffffffffffffffffffffffffffffffffffffff90921691839081106110e657fe5b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190611165908261136c565b50604051339073ffffffffffffffffffffffffffffffffffffffff8416907f1f32c1b084e2de0713b8fb16bd46bb9df710a3dbeae2f3ca93af46e016dcc6b090600090a35050565b60607ffc45bd11000000000000000000000000000000000000000000000000000000008260048111156111dc57fe5b604051602401610eda91906116ab565b60408051808201909152600481527fe69edc3e00000000000000000000000000000000000000000000000000000000602082015290565b606063b65a25b960e01b82604051602401610eda91906114ea565b6060631de45ad160e01b838360405160240161125b92919061150b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905092915050565b60408051808201909152600481527f57654fe400000000000000000000000000000000000000000000000000000000602082015290565b606063de16f1a060e01b82604051602401610eda91906114ea565b606063e9f8377160e01b838360405160240161125b929190611653565b606063140a84db60e01b838360405160240161125b92919061150b565b815481835581811115610eba57600083815260209020610eba9181019083016105d891905b808211156113a55760008155600101611391565b5090565b803573ffffffffffffffffffffffffffffffffffffffff8116811461096157600080fd5b6000602082840312156113de578081fd5b6113e883836113a9565b9392505050565b60008060408385031215611401578081fd5b61140b84846113a9565b946020939093013593505050565b6000806020838503121561142b578182fd5b823567ffffffffffffffff80821115611442578384fd5b81850186601f820112611453578485fd5b8035925081831115611463578485fd5b8660208085028301011115611476578485fd5b60200196919550909350505050565b600060208284031215611496578081fd5b5035919050565b600080604083850312156114af578182fd5b50508035926020909101359150565b6000828483379101908152919050565b600082516114e08184602087016116b9565b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b602080825282518282018190526000918401906040840190835b8181101561158057835173ffffffffffffffffffffffffffffffffffffffff1683526020938401939092019160010161154c565b509095945050505050565b6000602080830181845280855180835260408601915060408482028701019250838701855b82811015611632577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452815180518087526115f5818989018a85016116b9565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016959095018601945092850192908501906001016115b0565b5092979650505050505050565b901515815260200190565b90815260200190565b918252602082015260400190565b9283526020830191909152604082015260600190565b948552602085019390935260408401919091526060830152608082015260a00190565b63ffffffff91909116815260200190565b60ff91909116815260200190565b60005b838110156116d45781810151838201526020016116bc565b838111156116e3576000848401525b5050505056fea365627a7a72315820264f7de7ca58238f45ed13ef6ac03be5e92f85e59eed756acfcdecdfe18a73df6c6578706572696d656e74616cf564736f6c634300050c0040" + "object": "0x60806040523480156200001157600080fd5b5060405162001f0c38038062001f0c83398101604081905262000034916200071a565b600080546001600160a01b031916339081179091556200005d906001600160e01b036200008e16565b62000071816001600160e01b036200019116565b620000873360006001600160e01b03620002b716565b50620007d0565b6001600160a01b038116620000c757620000c7620000b66200046060201b620012e01760201c565b6200049860201b620005db1760201c565b6001600160a01b03811660009081526001602052604090205460ff1615620001035762000103620000b682620004a060201b620013171760201c565b6001600160a01b0381166000818152600160208190526040808320805460ff19168317905560028054928301815583527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910180546001600160a01b03191684179055513392917f3147867c59d17e8fa9d522465651d44aae0a9e38f902f3475b97e58072f0ed4c91a350565b600380546001600160a01b0319166001600160a01b0383161790556040517f048368388f801041f7690185c4e28b6f3505c740c47be8ac104b55df666bfc8490620001de90839062000786565b60405180910390a160035460408051600481526024810182526020810180516001600160e01b03167fe1c7392a0000000000000000000000000000000000000000000000000000000017905290516000926060926001600160a01b03909116916200024a91906200074a565b600060405180830381855af49150503d806000811462000287576040519150601f19603f3d011682016040523d82523d6000602084013e6200028c565b606091505b5091509150816200029f57805160208201fd5b620002b26001600160e01b036200050e16565b505050565b6001600160a01b03821660009081526001602052604090205460ff16620002f257620002f2620000b683620005e960201b62000ebf1760201c565b60025481106200031c576200031c620000b6826002805490506200060660201b620013321760201c565b816001600160a01b0316600282815481106200033457fe5b6000918252602090912001546001600160a01b0316146200038d576200038d620000b6600283815481106200036557fe5b600091825260209182902001546001600160a01b03169085906200134f62000677821b17901c565b6001600160a01b0382166000908152600160205260409020805460ff19169055600280546000198101908110620003c057fe5b600091825260209091200154600280546001600160a01b039092169183908110620003e757fe5b600091825260209091200180546001600160a01b0319166001600160a01b0392909216919091179055600280546000190190620004259082620006d8565b5060405133906001600160a01b038416907f1f32c1b084e2de0713b8fb16bd46bb9df710a3dbeae2f3ca93af46e016dcc6b090600090a35050565b60408051808201909152600481527f57654fe40000000000000000000000000000000000000000000000000000000060208201525b90565b805160208201fd5b606063de16f1a060e01b82604051602401620004bd919062000786565b60408051601f198184030181529190526020810180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050919050565b6011546206978081108062000525575062278d0081115b15620005465762000546620000b660046200069660201b620011ad1760201c565b60145463ffffffff6401000000008204811691168110806200056c575063ffffffff8116155b156200058d576200058d620000b660006200069660201b620011ad1760201c565b601254620f424063ffffffff9091161115620005be57620005be620000b660016200069660201b620011ad1760201c565b60026013541015620005e557620005e5620000b660036200069660201b620011ad1760201c565b5050565b606063eb5108a260e01b82604051602401620004bd919062000786565b606063e9f8377160e01b838360405160240162000625929190620007b4565b60408051601f198184030181529190526020810180516001600160e01b03167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905092915050565b606063140a84db60e01b8383604051602401620006259291906200079a565b60607ffc45bd1100000000000000000000000000000000000000000000000000000000826004811115620006c657fe5b604051602401620004bd9190620007c2565b815481835581811115620002b257600083815260209020620002b29181019083016200049591905b8082111562000716576000815560010162000700565b5090565b6000602082840312156200072c578081fd5b81516001600160a01b038116811462000743578182fd5b9392505050565b60008251815b818110156200076c576020818601810151858301520162000750565b818111156200077b5782828501525b509190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b918252602082015260400190565b60ff91909116815260200190565b61172c80620007e06000396000f3fe6080604052600436106101ac5760003560e01c80638da5cb5b116100ec578063c6f3a4271161008a578063e8eeb3f811610064578063e8eeb3f814610539578063ee99205c1461054e578063f187653214610563578063f2fde38b14610583576101ac565b8063c6f3a427146104ed578063d39de6e914610502578063e0ee036e14610524576101ac565b8063a657e579116100c6578063a657e57914610483578063b053152414610498578063b9181611146104ad578063c18c9141146104cd576101ac565b80638da5cb5b146104395780639ad267441461044e578063a26171e21461046e576101ac565b80635bd4ab7311610159578063707129391161013357806370712939146103b557806376671808146103d557806381666796146103ea578063856a65eb1461040c576101ac565b80635bd4ab7314610353578063634038011461038057806366615d5614610395576101ac565b806342f1181e1161018a57806342f1181e146102e4578063494503d414610304578063587da02314610331576101ac565b80632a94c2791461026457806337b006a61461029c57806338229d93146102b3575b60035473ffffffffffffffffffffffffffffffffffffffff16806101da576101da6101d56105a3565b6105db565b600060608273ffffffffffffffffffffffffffffffffffffffff166000366040516102069291906114be565b600060405180830381855af49150503d8060008114610241576040519150601f19603f3d011682016040523d82523d6000602084013e610246565b606091505b5091509150816000811461025c57815182602001f35b815182602001fd5b34801561027057600080fd5b5061028461027f36600461149d565b6105e3565b60405161029393929190611661565b60405180910390f35b3480156102a857600080fd5b506102b161060f565b005b3480156102bf57600080fd5b506102d36102ce366004611485565b61066a565b604051610293959493929190611677565b3480156102f057600080fd5b506102b16102ff3660046113cd565b610699565b34801561031057600080fd5b5061032461031f366004611485565b6106ad565b60405161029391906114ea565b34801561033d57600080fd5b506103466106e1565b604051610293919061164a565b34801561035f57600080fd5b5061037361036e3660046113cd565b6106e7565b604051610293919061163f565b34801561038c57600080fd5b506103466106fc565b3480156103a157600080fd5b506102b16103b03660046113cd565b610702565b3480156103c157600080fd5b506102b16103d03660046113cd565b610713565b3480156103e157600080fd5b506103466107c8565b3480156103f657600080fd5b506103ff6107ce565b604051610293919061169a565b34801561041857600080fd5b5061042c610427366004611419565b6107da565b604051610293919061158b565b34801561044557600080fd5b50610324610967565b34801561045a57600080fd5b506102b16104693660046113ef565b610983565b34801561047a57600080fd5b50610346610995565b34801561048f57600080fd5b5061034661099b565b3480156104a457600080fd5b506103466109a1565b3480156104b957600080fd5b506103736104c83660046113cd565b6109a7565b3480156104d957600080fd5b506103466104e8366004611485565b6109bc565b3480156104f957600080fd5b506102b16109ce565b34801561050e57600080fd5b50610517610a67565b6040516102939190611532565b34801561053057600080fd5b506103ff610ad6565b34801561054557600080fd5b506103ff610ae2565b34801561055a57600080fd5b50610324610af6565b34801561056f57600080fd5b5061034661057e3660046113cd565b610b12565b34801561058f57600080fd5b506102b161059e3660046113cd565b610b24565b60408051808201909152600481527f6eff82850000000000000000000000000000000000000000000000000000000060208201525b90565b805160208201fd5b601560209081526000928352604080842090915290825290208054600182015460029092015490919083565b610617610bc7565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556040517f6caedcb22a5c22c8ebd0caf751fec1228a6e006e6ee37169321e02d31ecc818390600090a1565b601660205260009081526040902080546001820154600283015460038401546004909401549293919290919085565b6106a1610bec565b6106aa81610c33565b50565b600281815481106106ba57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b600d5481565b60106020526000908152604090205460ff1681565b60115481565b61070a610bc7565b6106aa81610d64565b61071b610bec565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff16610754576107546101d582610ebf565b60005b6002548110156107c4578173ffffffffffffffffffffffffffffffffffffffff166002828154811061078557fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1614156107bc576107b78282610f5e565b6107c4565b600101610757565b5050565b600c5481565b60145463ffffffff1681565b6040805182815260208084028201019091526060906000908290849081801561081757816020015b60608152602001906001900390816108025790505b5060035490945073ffffffffffffffffffffffffffffffffffffffff1680610844576108446101d56105a3565b60005b82811461095b578173ffffffffffffffffffffffffffffffffffffffff1688888381811061087157fe5b6020028201905080357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1368490030181126108ab57600080fd5b9091016020810191503567ffffffffffffffff8111156108ca57600080fd5b368190038213156108da57600080fd5b6040516108e89291906114be565b600060405180830381855af49150503d8060008114610923576040519150601f19603f3d011682016040523d82523d6000602084013e610928565b606091505b5090955093508461093b57835184602001fd5b8386828151811061094857fe5b6020908102919091010152600101610847565b50505050505b92915050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b61098b610bec565b6107c48282610f5e565b60135481565b60085481565b60175481565b60016020526000908152604090205460ff1681565b600b6020526000908152604090205481565b601154620697808110806109e4575062278d0081115b156109f6576109f66101d560046111ad565b60145463ffffffff640100000000820481169116811080610a1b575063ffffffff8116155b15610a2d57610a2d6101d560006111ad565b601254620f424063ffffffff9091161115610a4f57610a4f6101d560016111ad565b600260135410156107c4576107c46101d560036111ad565b60606002805480602002602001604051908101604052809291908181526020018280548015610acc57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610aa1575b5050505050905090565b60125463ffffffff1681565b601454640100000000900463ffffffff1681565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b60096020526000908152604090205481565b610b2c610bec565b73ffffffffffffffffffffffffffffffffffffffff8116610b5757610b526101d56111ec565b6106aa565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b3360009081526001602052604090205460ff16610bea57610bea6101d533611223565b565b60005473ffffffffffffffffffffffffffffffffffffffff163314610bea57600054610bea906101d590339073ffffffffffffffffffffffffffffffffffffffff1661123e565b73ffffffffffffffffffffffffffffffffffffffff8116610c5957610c596101d56112e0565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff1615610c9357610c936101d582611317565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168317905560028054928301815583527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001684179055513392917f3147867c59d17e8fa9d522465651d44aae0a9e38f902f3475b97e58072f0ed4c91a350565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790556040517f048368388f801041f7690185c4e28b6f3505c740c47be8ac104b55df666bfc8490610dd49083906114ea565b60405180910390a160035460408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe1c7392a00000000000000000000000000000000000000000000000000000000179052905160009260609273ffffffffffffffffffffffffffffffffffffffff90911691610e6091906114ce565b600060405180830381855af49150503d8060008114610e9b576040519150601f19603f3d011682016040523d82523d6000602084013e610ea0565b606091505b509150915081610eb257805160208201fd5b610eba6109ce565b505050565b606063eb5108a260e01b82604051602401610eda91906114ea565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050919050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205460ff16610f9757610f976101d583610ebf565b6002548110610fb257610fb26101d582600280549050611332565b8173ffffffffffffffffffffffffffffffffffffffff1660028281548110610fd657fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1614611038576110386101d56002838154811061101057fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff168461134f565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81019081106110b357fe5b6000918252602090912001546002805473ffffffffffffffffffffffffffffffffffffffff90921691839081106110e657fe5b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190611165908261136c565b50604051339073ffffffffffffffffffffffffffffffffffffffff8416907f1f32c1b084e2de0713b8fb16bd46bb9df710a3dbeae2f3ca93af46e016dcc6b090600090a35050565b60607ffc45bd11000000000000000000000000000000000000000000000000000000008260048111156111dc57fe5b604051602401610eda91906116ab565b60408051808201909152600481527fe69edc3e00000000000000000000000000000000000000000000000000000000602082015290565b606063b65a25b960e01b82604051602401610eda91906114ea565b6060631de45ad160e01b838360405160240161125b92919061150b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905092915050565b60408051808201909152600481527f57654fe400000000000000000000000000000000000000000000000000000000602082015290565b606063de16f1a060e01b82604051602401610eda91906114ea565b606063e9f8377160e01b838360405160240161125b929190611653565b606063140a84db60e01b838360405160240161125b92919061150b565b815481835581811115610eba57600083815260209020610eba9181019083016105d891905b808211156113a55760008155600101611391565b5090565b803573ffffffffffffffffffffffffffffffffffffffff8116811461096157600080fd5b6000602082840312156113de578081fd5b6113e883836113a9565b9392505050565b60008060408385031215611401578081fd5b61140b84846113a9565b946020939093013593505050565b6000806020838503121561142b578182fd5b823567ffffffffffffffff80821115611442578384fd5b81850186601f820112611453578485fd5b8035925081831115611463578485fd5b8660208085028301011115611476578485fd5b60200196919550909350505050565b600060208284031215611496578081fd5b5035919050565b600080604083850312156114af578182fd5b50508035926020909101359150565b6000828483379101908152919050565b600082516114e08184602087016116b9565b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b602080825282518282018190526000918401906040840190835b8181101561158057835173ffffffffffffffffffffffffffffffffffffffff1683526020938401939092019160010161154c565b509095945050505050565b6000602080830181845280855180835260408601915060408482028701019250838701855b82811015611632577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452815180518087526115f5818989018a85016116b9565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016959095018601945092850192908501906001016115b0565b5092979650505050505050565b901515815260200190565b90815260200190565b918252602082015260400190565b9283526020830191909152604082015260600190565b948552602085019390935260408401919091526060830152608082015260a00190565b63ffffffff91909116815260200190565b60ff91909116815260200190565b60005b838110156116d45781810151838201526020016116bc565b838111156116e3576000848401525b5050505056fea365627a7a723158203281bdb75355ec2a52448624e19dbd2d005a2f9ed8ffe01bedfc7822c874a8d36c6578706572696d656e74616cf564736f6c634300050c0040" }, "deployedBytecode": { - "object": "0x6080604052600436106101ac5760003560e01c80638da5cb5b116100ec578063c6f3a4271161008a578063e8eeb3f811610064578063e8eeb3f814610539578063ee99205c1461054e578063f187653214610563578063f2fde38b14610583576101ac565b8063c6f3a427146104ed578063d39de6e914610502578063e0ee036e14610524576101ac565b8063a657e579116100c6578063a657e57914610483578063b053152414610498578063b9181611146104ad578063c18c9141146104cd576101ac565b80638da5cb5b146104395780639ad267441461044e578063a26171e21461046e576101ac565b80635bd4ab7311610159578063707129391161013357806370712939146103b557806376671808146103d557806381666796146103ea578063856a65eb1461040c576101ac565b80635bd4ab7314610353578063634038011461038057806366615d5614610395576101ac565b806342f1181e1161018a57806342f1181e146102e4578063494503d414610304578063587da02314610331576101ac565b80632a94c2791461026457806337b006a61461029c57806338229d93146102b3575b60035473ffffffffffffffffffffffffffffffffffffffff16806101da576101da6101d56105a3565b6105db565b600060608273ffffffffffffffffffffffffffffffffffffffff166000366040516102069291906114be565b600060405180830381855af49150503d8060008114610241576040519150601f19603f3d011682016040523d82523d6000602084013e610246565b606091505b5091509150816000811461025c57815182602001f35b815182602001fd5b34801561027057600080fd5b5061028461027f36600461149d565b6105e3565b60405161029393929190611661565b60405180910390f35b3480156102a857600080fd5b506102b161060f565b005b3480156102bf57600080fd5b506102d36102ce366004611485565b61066a565b604051610293959493929190611677565b3480156102f057600080fd5b506102b16102ff3660046113cd565b610699565b34801561031057600080fd5b5061032461031f366004611485565b6106ad565b60405161029391906114ea565b34801561033d57600080fd5b506103466106e1565b604051610293919061164a565b34801561035f57600080fd5b5061037361036e3660046113cd565b6106e7565b604051610293919061163f565b34801561038c57600080fd5b506103466106fc565b3480156103a157600080fd5b506102b16103b03660046113cd565b610702565b3480156103c157600080fd5b506102b16103d03660046113cd565b610713565b3480156103e157600080fd5b506103466107c8565b3480156103f657600080fd5b506103ff6107ce565b604051610293919061169a565b34801561041857600080fd5b5061042c610427366004611419565b6107da565b604051610293919061158b565b34801561044557600080fd5b50610324610967565b34801561045a57600080fd5b506102b16104693660046113ef565b610983565b34801561047a57600080fd5b50610346610995565b34801561048f57600080fd5b5061034661099b565b3480156104a457600080fd5b506103466109a1565b3480156104b957600080fd5b506103736104c83660046113cd565b6109a7565b3480156104d957600080fd5b506103466104e8366004611485565b6109bc565b3480156104f957600080fd5b506102b16109ce565b34801561050e57600080fd5b50610517610a67565b6040516102939190611532565b34801561053057600080fd5b506103ff610ad6565b34801561054557600080fd5b506103ff610ae2565b34801561055a57600080fd5b50610324610af6565b34801561056f57600080fd5b5061034661057e3660046113cd565b610b12565b34801561058f57600080fd5b506102b161059e3660046113cd565b610b24565b60408051808201909152600481527f6eff82850000000000000000000000000000000000000000000000000000000060208201525b90565b805160208201fd5b601560209081526000928352604080842090915290825290208054600182015460029092015490919083565b610617610bc7565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556040517f6caedcb22a5c22c8ebd0caf751fec1228a6e006e6ee37169321e02d31ecc818390600090a1565b601660205260009081526040902080546001820154600283015460038401546004909401549293919290919085565b6106a1610bec565b6106aa81610c33565b50565b600281815481106106ba57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b600d5481565b60106020526000908152604090205460ff1681565b60115481565b61070a610bc7565b6106aa81610d64565b61071b610bec565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff16610754576107546101d582610ebf565b60005b6002548110156107c4578173ffffffffffffffffffffffffffffffffffffffff166002828154811061078557fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1614156107bc576107b78282610f5e565b6107c4565b600101610757565b5050565b600c5481565b60145463ffffffff1681565b6040805182815260208084028201019091526060906000908290849081801561081757816020015b60608152602001906001900390816108025790505b5060035490945073ffffffffffffffffffffffffffffffffffffffff1680610844576108446101d56105a3565b60005b82811461095b578173ffffffffffffffffffffffffffffffffffffffff1688888381811061087157fe5b6020028201905080357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1368490030181126108ab57600080fd5b9091016020810191503567ffffffffffffffff8111156108ca57600080fd5b368190038213156108da57600080fd5b6040516108e89291906114be565b600060405180830381855af49150503d8060008114610923576040519150601f19603f3d011682016040523d82523d6000602084013e610928565b606091505b5090955093508461093b57835184602001fd5b8386828151811061094857fe5b6020908102919091010152600101610847565b50505050505b92915050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b61098b610bec565b6107c48282610f5e565b60135481565b60085481565b60175481565b60016020526000908152604090205460ff1681565b600b6020526000908152604090205481565b601154620697808110806109e4575062278d0081115b156109f6576109f66101d560046111ad565b60145463ffffffff640100000000820481169116811080610a1b575063ffffffff8116155b15610a2d57610a2d6101d560006111ad565b601254620f424063ffffffff9091161115610a4f57610a4f6101d560016111ad565b600260135410156107c4576107c46101d560036111ad565b60606002805480602002602001604051908101604052809291908181526020018280548015610acc57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610aa1575b5050505050905090565b60125463ffffffff1681565b601454640100000000900463ffffffff1681565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b60096020526000908152604090205481565b610b2c610bec565b73ffffffffffffffffffffffffffffffffffffffff8116610b5757610b526101d56111ec565b6106aa565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b3360009081526001602052604090205460ff16610bea57610bea6101d533611223565b565b60005473ffffffffffffffffffffffffffffffffffffffff163314610bea57600054610bea906101d590339073ffffffffffffffffffffffffffffffffffffffff1661123e565b73ffffffffffffffffffffffffffffffffffffffff8116610c5957610c596101d56112e0565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff1615610c9357610c936101d582611317565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168317905560028054928301815583527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001684179055513392917f3147867c59d17e8fa9d522465651d44aae0a9e38f902f3475b97e58072f0ed4c91a350565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790556040517f048368388f801041f7690185c4e28b6f3505c740c47be8ac104b55df666bfc8490610dd49083906114ea565b60405180910390a160035460408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe1c7392a00000000000000000000000000000000000000000000000000000000179052905160009260609273ffffffffffffffffffffffffffffffffffffffff90911691610e6091906114ce565b600060405180830381855af49150503d8060008114610e9b576040519150601f19603f3d011682016040523d82523d6000602084013e610ea0565b606091505b509150915081610eb257805160208201fd5b610eba6109ce565b505050565b606063eb5108a260e01b82604051602401610eda91906114ea565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050919050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205460ff16610f9757610f976101d583610ebf565b6002548110610fb257610fb26101d582600280549050611332565b8173ffffffffffffffffffffffffffffffffffffffff1660028281548110610fd657fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1614611038576110386101d56002838154811061101057fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff168461134f565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81019081106110b357fe5b6000918252602090912001546002805473ffffffffffffffffffffffffffffffffffffffff90921691839081106110e657fe5b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190611165908261136c565b50604051339073ffffffffffffffffffffffffffffffffffffffff8416907f1f32c1b084e2de0713b8fb16bd46bb9df710a3dbeae2f3ca93af46e016dcc6b090600090a35050565b60607ffc45bd11000000000000000000000000000000000000000000000000000000008260048111156111dc57fe5b604051602401610eda91906116ab565b60408051808201909152600481527fe69edc3e00000000000000000000000000000000000000000000000000000000602082015290565b606063b65a25b960e01b82604051602401610eda91906114ea565b6060631de45ad160e01b838360405160240161125b92919061150b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905092915050565b60408051808201909152600481527f57654fe400000000000000000000000000000000000000000000000000000000602082015290565b606063de16f1a060e01b82604051602401610eda91906114ea565b606063e9f8377160e01b838360405160240161125b929190611653565b606063140a84db60e01b838360405160240161125b92919061150b565b815481835581811115610eba57600083815260209020610eba9181019083016105d891905b808211156113a55760008155600101611391565b5090565b803573ffffffffffffffffffffffffffffffffffffffff8116811461096157600080fd5b6000602082840312156113de578081fd5b6113e883836113a9565b9392505050565b60008060408385031215611401578081fd5b61140b84846113a9565b946020939093013593505050565b6000806020838503121561142b578182fd5b823567ffffffffffffffff80821115611442578384fd5b81850186601f820112611453578485fd5b8035925081831115611463578485fd5b8660208085028301011115611476578485fd5b60200196919550909350505050565b600060208284031215611496578081fd5b5035919050565b600080604083850312156114af578182fd5b50508035926020909101359150565b6000828483379101908152919050565b600082516114e08184602087016116b9565b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b602080825282518282018190526000918401906040840190835b8181101561158057835173ffffffffffffffffffffffffffffffffffffffff1683526020938401939092019160010161154c565b509095945050505050565b6000602080830181845280855180835260408601915060408482028701019250838701855b82811015611632577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452815180518087526115f5818989018a85016116b9565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016959095018601945092850192908501906001016115b0565b5092979650505050505050565b901515815260200190565b90815260200190565b918252602082015260400190565b9283526020830191909152604082015260600190565b948552602085019390935260408401919091526060830152608082015260a00190565b63ffffffff91909116815260200190565b60ff91909116815260200190565b60005b838110156116d45781810151838201526020016116bc565b838111156116e3576000848401525b5050505056fea365627a7a72315820264f7de7ca58238f45ed13ef6ac03be5e92f85e59eed756acfcdecdfe18a73df6c6578706572696d656e74616cf564736f6c634300050c0040" + "object": "0x6080604052600436106101ac5760003560e01c80638da5cb5b116100ec578063c6f3a4271161008a578063e8eeb3f811610064578063e8eeb3f814610539578063ee99205c1461054e578063f187653214610563578063f2fde38b14610583576101ac565b8063c6f3a427146104ed578063d39de6e914610502578063e0ee036e14610524576101ac565b8063a657e579116100c6578063a657e57914610483578063b053152414610498578063b9181611146104ad578063c18c9141146104cd576101ac565b80638da5cb5b146104395780639ad267441461044e578063a26171e21461046e576101ac565b80635bd4ab7311610159578063707129391161013357806370712939146103b557806376671808146103d557806381666796146103ea578063856a65eb1461040c576101ac565b80635bd4ab7314610353578063634038011461038057806366615d5614610395576101ac565b806342f1181e1161018a57806342f1181e146102e4578063494503d414610304578063587da02314610331576101ac565b80632a94c2791461026457806337b006a61461029c57806338229d93146102b3575b60035473ffffffffffffffffffffffffffffffffffffffff16806101da576101da6101d56105a3565b6105db565b600060608273ffffffffffffffffffffffffffffffffffffffff166000366040516102069291906114be565b600060405180830381855af49150503d8060008114610241576040519150601f19603f3d011682016040523d82523d6000602084013e610246565b606091505b5091509150816000811461025c57815182602001f35b815182602001fd5b34801561027057600080fd5b5061028461027f36600461149d565b6105e3565b60405161029393929190611661565b60405180910390f35b3480156102a857600080fd5b506102b161060f565b005b3480156102bf57600080fd5b506102d36102ce366004611485565b61066a565b604051610293959493929190611677565b3480156102f057600080fd5b506102b16102ff3660046113cd565b610699565b34801561031057600080fd5b5061032461031f366004611485565b6106ad565b60405161029391906114ea565b34801561033d57600080fd5b506103466106e1565b604051610293919061164a565b34801561035f57600080fd5b5061037361036e3660046113cd565b6106e7565b604051610293919061163f565b34801561038c57600080fd5b506103466106fc565b3480156103a157600080fd5b506102b16103b03660046113cd565b610702565b3480156103c157600080fd5b506102b16103d03660046113cd565b610713565b3480156103e157600080fd5b506103466107c8565b3480156103f657600080fd5b506103ff6107ce565b604051610293919061169a565b34801561041857600080fd5b5061042c610427366004611419565b6107da565b604051610293919061158b565b34801561044557600080fd5b50610324610967565b34801561045a57600080fd5b506102b16104693660046113ef565b610983565b34801561047a57600080fd5b50610346610995565b34801561048f57600080fd5b5061034661099b565b3480156104a457600080fd5b506103466109a1565b3480156104b957600080fd5b506103736104c83660046113cd565b6109a7565b3480156104d957600080fd5b506103466104e8366004611485565b6109bc565b3480156104f957600080fd5b506102b16109ce565b34801561050e57600080fd5b50610517610a67565b6040516102939190611532565b34801561053057600080fd5b506103ff610ad6565b34801561054557600080fd5b506103ff610ae2565b34801561055a57600080fd5b50610324610af6565b34801561056f57600080fd5b5061034661057e3660046113cd565b610b12565b34801561058f57600080fd5b506102b161059e3660046113cd565b610b24565b60408051808201909152600481527f6eff82850000000000000000000000000000000000000000000000000000000060208201525b90565b805160208201fd5b601560209081526000928352604080842090915290825290208054600182015460029092015490919083565b610617610bc7565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556040517f6caedcb22a5c22c8ebd0caf751fec1228a6e006e6ee37169321e02d31ecc818390600090a1565b601660205260009081526040902080546001820154600283015460038401546004909401549293919290919085565b6106a1610bec565b6106aa81610c33565b50565b600281815481106106ba57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b600d5481565b60106020526000908152604090205460ff1681565b60115481565b61070a610bc7565b6106aa81610d64565b61071b610bec565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff16610754576107546101d582610ebf565b60005b6002548110156107c4578173ffffffffffffffffffffffffffffffffffffffff166002828154811061078557fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1614156107bc576107b78282610f5e565b6107c4565b600101610757565b5050565b600c5481565b60145463ffffffff1681565b6040805182815260208084028201019091526060906000908290849081801561081757816020015b60608152602001906001900390816108025790505b5060035490945073ffffffffffffffffffffffffffffffffffffffff1680610844576108446101d56105a3565b60005b82811461095b578173ffffffffffffffffffffffffffffffffffffffff1688888381811061087157fe5b6020028201905080357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1368490030181126108ab57600080fd5b9091016020810191503567ffffffffffffffff8111156108ca57600080fd5b368190038213156108da57600080fd5b6040516108e89291906114be565b600060405180830381855af49150503d8060008114610923576040519150601f19603f3d011682016040523d82523d6000602084013e610928565b606091505b5090955093508461093b57835184602001fd5b8386828151811061094857fe5b6020908102919091010152600101610847565b50505050505b92915050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b61098b610bec565b6107c48282610f5e565b60135481565b60085481565b60175481565b60016020526000908152604090205460ff1681565b600b6020526000908152604090205481565b601154620697808110806109e4575062278d0081115b156109f6576109f66101d560046111ad565b60145463ffffffff640100000000820481169116811080610a1b575063ffffffff8116155b15610a2d57610a2d6101d560006111ad565b601254620f424063ffffffff9091161115610a4f57610a4f6101d560016111ad565b600260135410156107c4576107c46101d560036111ad565b60606002805480602002602001604051908101604052809291908181526020018280548015610acc57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610aa1575b5050505050905090565b60125463ffffffff1681565b601454640100000000900463ffffffff1681565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b60096020526000908152604090205481565b610b2c610bec565b73ffffffffffffffffffffffffffffffffffffffff8116610b5757610b526101d56111ec565b6106aa565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b3360009081526001602052604090205460ff16610bea57610bea6101d533611223565b565b60005473ffffffffffffffffffffffffffffffffffffffff163314610bea57600054610bea906101d590339073ffffffffffffffffffffffffffffffffffffffff1661123e565b73ffffffffffffffffffffffffffffffffffffffff8116610c5957610c596101d56112e0565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff1615610c9357610c936101d582611317565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168317905560028054928301815583527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001684179055513392917f3147867c59d17e8fa9d522465651d44aae0a9e38f902f3475b97e58072f0ed4c91a350565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790556040517f048368388f801041f7690185c4e28b6f3505c740c47be8ac104b55df666bfc8490610dd49083906114ea565b60405180910390a160035460408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe1c7392a00000000000000000000000000000000000000000000000000000000179052905160009260609273ffffffffffffffffffffffffffffffffffffffff90911691610e6091906114ce565b600060405180830381855af49150503d8060008114610e9b576040519150601f19603f3d011682016040523d82523d6000602084013e610ea0565b606091505b509150915081610eb257805160208201fd5b610eba6109ce565b505050565b606063eb5108a260e01b82604051602401610eda91906114ea565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050919050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205460ff16610f9757610f976101d583610ebf565b6002548110610fb257610fb26101d582600280549050611332565b8173ffffffffffffffffffffffffffffffffffffffff1660028281548110610fd657fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1614611038576110386101d56002838154811061101057fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff168461134f565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81019081106110b357fe5b6000918252602090912001546002805473ffffffffffffffffffffffffffffffffffffffff90921691839081106110e657fe5b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190611165908261136c565b50604051339073ffffffffffffffffffffffffffffffffffffffff8416907f1f32c1b084e2de0713b8fb16bd46bb9df710a3dbeae2f3ca93af46e016dcc6b090600090a35050565b60607ffc45bd11000000000000000000000000000000000000000000000000000000008260048111156111dc57fe5b604051602401610eda91906116ab565b60408051808201909152600481527fe69edc3e00000000000000000000000000000000000000000000000000000000602082015290565b606063b65a25b960e01b82604051602401610eda91906114ea565b6060631de45ad160e01b838360405160240161125b92919061150b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905092915050565b60408051808201909152600481527f57654fe400000000000000000000000000000000000000000000000000000000602082015290565b606063de16f1a060e01b82604051602401610eda91906114ea565b606063e9f8377160e01b838360405160240161125b929190611653565b606063140a84db60e01b838360405160240161125b92919061150b565b815481835581811115610eba57600083815260209020610eba9181019083016105d891905b808211156113a55760008155600101611391565b5090565b803573ffffffffffffffffffffffffffffffffffffffff8116811461096157600080fd5b6000602082840312156113de578081fd5b6113e883836113a9565b9392505050565b60008060408385031215611401578081fd5b61140b84846113a9565b946020939093013593505050565b6000806020838503121561142b578182fd5b823567ffffffffffffffff80821115611442578384fd5b81850186601f820112611453578485fd5b8035925081831115611463578485fd5b8660208085028301011115611476578485fd5b60200196919550909350505050565b600060208284031215611496578081fd5b5035919050565b600080604083850312156114af578182fd5b50508035926020909101359150565b6000828483379101908152919050565b600082516114e08184602087016116b9565b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b602080825282518282018190526000918401906040840190835b8181101561158057835173ffffffffffffffffffffffffffffffffffffffff1683526020938401939092019160010161154c565b509095945050505050565b6000602080830181845280855180835260408601915060408482028701019250838701855b82811015611632577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452815180518087526115f5818989018a85016116b9565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016959095018601945092850192908501906001016115b0565b5092979650505050505050565b901515815260200190565b90815260200190565b918252602082015260400190565b9283526020830191909152604082015260600190565b948552602085019390935260408401919091526060830152608082015260a00190565b63ffffffff91909116815260200190565b60ff91909116815260200190565b60005b838110156116d45781810151838201526020016116bc565b838111156116e3576000848401525b5050505056fea365627a7a723158203281bdb75355ec2a52448624e19dbd2d005a2f9ed8ffe01bedfc7822c874a8d36c6578706572696d656e74616cf564736f6c634300050c0040" } } }, "compiler": { "name": "solc", - "version": "soljson-v0.5.12+commit.7709ece9.js", + "version": "0.5.12+commit.7709ece9", "settings": { "optimizer": { "enabled": true, diff --git a/packages/contract-artifacts/artifacts/StaticCallProxy.json b/packages/contract-artifacts/artifacts/StaticCallProxy.json index 47bdc53bda..8cac15573c 100644 --- a/packages/contract-artifacts/artifacts/StaticCallProxy.json +++ b/packages/contract-artifacts/artifacts/StaticCallProxy.json @@ -46,10 +46,10 @@ }, "evm": { "bytecode": { - "object": "0x608060405234801561001057600080fd5b50610505806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063a85e59e41461003b578063ae25532e146100d3575b600080fd5b6100d16004803603608081101561005157600080fd5b81019060208101813564010000000081111561006c57600080fd5b82018360208201111561007e57600080fd5b803590602001918460018302840111640100000000831117156100a057600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610110565b005b6100db6103a5565b604080517fffffffff000000000000000000000000000000000000000000000000000000009092168252519081900360200190f35b6000606060006101656004898990508a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092949392505063ffffffff6103c5169050565b806020019051606081101561017957600080fd5b8151602083018051604051929492938301929190846401000000008211156101a057600080fd5b9083019060208201858111156101b557600080fd5b82516401000000008111828201881017156101cf57600080fd5b82525081516020918201929091019080838360005b838110156101fc5781810151838201526020016101e4565b50505050905090810190601f1680156102295780820380516001836020036101000a031916815260200191505b5060405260200180519060200190929190505050925092509250600060608473ffffffffffffffffffffffffffffffffffffffff16846040518082805190602001908083835b602083106102ac57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161026f565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d806000811461030c576040519150601f19603f3d011682016040523d82523d6000602084013e610311565b606091505b50915091508161032357805160208201fd5b8051602082012083811461039857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f554e45585045435445445f5354415449435f43414c4c5f524553554c54000000604482015290519081900360640190fd5b5050505050505050505050565b600060405180806104b06021913960210190506040518091039020905090565b6060818311156103e3576103e36103de60008585610408565b6104a7565b83518211156103fc576103fc6103de6001848751610408565b50819003910190815290565b6060632800659560e01b8484846040516024018084600781111561042857fe5b60ff1681526020018381526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090509392505050565b805160208201fdfe53746174696343616c6c28616464726573732c62797465732c6279746573333229a265627a7a72315820e0bbdfc729189e053bb150f25953e9cbba2143f29cb7441e1605fc05a7d4b2e464736f6c63430005110032" + "object": "0x608060405234801561001057600080fd5b50610505806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063a85e59e41461003b578063ae25532e146100d3575b600080fd5b6100d16004803603608081101561005157600080fd5b81019060208101813564010000000081111561006c57600080fd5b82018360208201111561007e57600080fd5b803590602001918460018302840111640100000000831117156100a057600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610110565b005b6100db6103a5565b604080517fffffffff000000000000000000000000000000000000000000000000000000009092168252519081900360200190f35b6000606060006101656004898990508a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092949392505063ffffffff6103c5169050565b806020019051606081101561017957600080fd5b8151602083018051604051929492938301929190846401000000008211156101a057600080fd5b9083019060208201858111156101b557600080fd5b82516401000000008111828201881017156101cf57600080fd5b82525081516020918201929091019080838360005b838110156101fc5781810151838201526020016101e4565b50505050905090810190601f1680156102295780820380516001836020036101000a031916815260200191505b5060405260200180519060200190929190505050925092509250600060608473ffffffffffffffffffffffffffffffffffffffff16846040518082805190602001908083835b602083106102ac57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161026f565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d806000811461030c576040519150601f19603f3d011682016040523d82523d6000602084013e610311565b606091505b50915091508161032357805160208201fd5b8051602082012083811461039857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f554e45585045435445445f5354415449435f43414c4c5f524553554c54000000604482015290519081900360640190fd5b5050505050505050505050565b600060405180806104b06021913960210190506040518091039020905090565b6060818311156103e3576103e36103de60008585610408565b6104a7565b83518211156103fc576103fc6103de6001848751610408565b50819003910190815290565b6060632800659560e01b8484846040516024018084600781111561042857fe5b60ff1681526020018381526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090509392505050565b805160208201fdfe53746174696343616c6c28616464726573732c62797465732c6279746573333229a265627a7a72315820b0263a415f7a30e5dfb57dfdca6a544c1deec40d1259b7cf5cd5c3ccf13825ff64736f6c63430005110032" }, "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063a85e59e41461003b578063ae25532e146100d3575b600080fd5b6100d16004803603608081101561005157600080fd5b81019060208101813564010000000081111561006c57600080fd5b82018360208201111561007e57600080fd5b803590602001918460018302840111640100000000831117156100a057600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610110565b005b6100db6103a5565b604080517fffffffff000000000000000000000000000000000000000000000000000000009092168252519081900360200190f35b6000606060006101656004898990508a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092949392505063ffffffff6103c5169050565b806020019051606081101561017957600080fd5b8151602083018051604051929492938301929190846401000000008211156101a057600080fd5b9083019060208201858111156101b557600080fd5b82516401000000008111828201881017156101cf57600080fd5b82525081516020918201929091019080838360005b838110156101fc5781810151838201526020016101e4565b50505050905090810190601f1680156102295780820380516001836020036101000a031916815260200191505b5060405260200180519060200190929190505050925092509250600060608473ffffffffffffffffffffffffffffffffffffffff16846040518082805190602001908083835b602083106102ac57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161026f565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d806000811461030c576040519150601f19603f3d011682016040523d82523d6000602084013e610311565b606091505b50915091508161032357805160208201fd5b8051602082012083811461039857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f554e45585045435445445f5354415449435f43414c4c5f524553554c54000000604482015290519081900360640190fd5b5050505050505050505050565b600060405180806104b06021913960210190506040518091039020905090565b6060818311156103e3576103e36103de60008585610408565b6104a7565b83518211156103fc576103fc6103de6001848751610408565b50819003910190815290565b6060632800659560e01b8484846040516024018084600781111561042857fe5b60ff1681526020018381526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090509392505050565b805160208201fdfe53746174696343616c6c28616464726573732c62797465732c6279746573333229a265627a7a72315820e0bbdfc729189e053bb150f25953e9cbba2143f29cb7441e1605fc05a7d4b2e464736f6c63430005110032" + "object": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063a85e59e41461003b578063ae25532e146100d3575b600080fd5b6100d16004803603608081101561005157600080fd5b81019060208101813564010000000081111561006c57600080fd5b82018360208201111561007e57600080fd5b803590602001918460018302840111640100000000831117156100a057600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610110565b005b6100db6103a5565b604080517fffffffff000000000000000000000000000000000000000000000000000000009092168252519081900360200190f35b6000606060006101656004898990508a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092949392505063ffffffff6103c5169050565b806020019051606081101561017957600080fd5b8151602083018051604051929492938301929190846401000000008211156101a057600080fd5b9083019060208201858111156101b557600080fd5b82516401000000008111828201881017156101cf57600080fd5b82525081516020918201929091019080838360005b838110156101fc5781810151838201526020016101e4565b50505050905090810190601f1680156102295780820380516001836020036101000a031916815260200191505b5060405260200180519060200190929190505050925092509250600060608473ffffffffffffffffffffffffffffffffffffffff16846040518082805190602001908083835b602083106102ac57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161026f565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d806000811461030c576040519150601f19603f3d011682016040523d82523d6000602084013e610311565b606091505b50915091508161032357805160208201fd5b8051602082012083811461039857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f554e45585045435445445f5354415449435f43414c4c5f524553554c54000000604482015290519081900360640190fd5b5050505050505050505050565b600060405180806104b06021913960210190506040518091039020905090565b6060818311156103e3576103e36103de60008585610408565b6104a7565b83518211156103fc576103fc6103de6001848751610408565b50819003910190815290565b6060632800659560e01b8484846040516024018084600781111561042857fe5b60ff1681526020018381526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090509392505050565b805160208201fdfe53746174696343616c6c28616464726573732c62797465732c6279746573333229a265627a7a72315820b0263a415f7a30e5dfb57dfdca6a544c1deec40d1259b7cf5cd5c3ccf13825ff64736f6c63430005110032" } } }, diff --git a/packages/contract-artifacts/artifacts/WETH9.json b/packages/contract-artifacts/artifacts/WETH9.json index a1bebc7130..6add1b52a8 100644 --- a/packages/contract-artifacts/artifacts/WETH9.json +++ b/packages/contract-artifacts/artifacts/WETH9.json @@ -158,16 +158,16 @@ "devdoc": { "methods": {} }, "evm": { "bytecode": { - "object": "0x60c0604052600d60808190526c2bb930b83832b21022ba3432b960991b60a090815261002e916000919061007a565b50604080518082019091526004808252630ae8aa8960e31b602090920191825261005a9160019161007a565b506002805460ff1916601217905534801561007457600080fd5b50610115565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100bb57805160ff19168380011785556100e8565b828001600101855582156100e8579182015b828111156100e85782518255916020019190600101906100cd565b506100f49291506100f8565b5090565b61011291905b808211156100f457600081556001016100fe565b90565b6107f9806101246000396000f3fe6080604052600436106100bc5760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146102cb578063d0e30db0146100bc578063dd62ed3e14610311576100bc565b8063313ce5671461024b57806370a082311461027657806395d89b41146102b6576100bc565b806318160ddd116100a557806318160ddd146101aa57806323b872dd146101d15780632e1a7d4d14610221576100bc565b806306fdde03146100c6578063095ea7b314610150575b6100c4610359565b005b3480156100d257600080fd5b506100db6103a8565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101155781810151838201526020016100fd565b50505050905090810190601f1680156101425780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561015c57600080fd5b506101966004803603604081101561017357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610454565b604080519115158252519081900360200190f35b3480156101b657600080fd5b506101bf6104c7565b60408051918252519081900360200190f35b3480156101dd57600080fd5b50610196600480360360608110156101f457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356104cb565b34801561022d57600080fd5b506100c46004803603602081101561024457600080fd5b503561066b565b34801561025757600080fd5b50610260610700565b6040805160ff9092168252519081900360200190f35b34801561028257600080fd5b506101bf6004803603602081101561029957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610709565b3480156102c257600080fd5b506100db61071b565b3480156102d757600080fd5b50610196600480360360408110156102ee57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610793565b34801561031d57600080fd5b506101bf6004803603604081101561033457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166107a7565b33600081815260036020908152604091829020805434908101909155825190815291517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9281900390910190a2565b6000805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f8101849004840282018401909252818152929183018282801561044c5780601f106104215761010080835404028352916020019161044c565b820191906000526020600020905b81548152906001019060200180831161042f57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b4790565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260408120548211156104fd57600080fd5b73ffffffffffffffffffffffffffffffffffffffff84163314801590610573575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105ed5773ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020548211156105b557600080fd5b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020805483900390555b73ffffffffffffffffffffffffffffffffffffffff808516600081815260036020908152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35060019392505050565b3360009081526003602052604090205481111561068757600080fd5b33600081815260036020526040808220805485900390555183156108fc0291849190818181858888f193505050501580156106c6573d6000803e3d6000fd5b5060408051828152905133917f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65919081900360200190a250565b60025460ff1681565b60036020526000908152604090205481565b60018054604080516020600284861615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f8101849004840282018401909252818152929183018282801561044c5780601f106104215761010080835404028352916020019161044c565b60006107a03384846104cb565b9392505050565b60046020908152600092835260408084209091529082529020548156fea265627a7a723158203cd1ca14603fcfa858fca0001d639d0e3bd2280e97e110042bb4613ca89b20c864736f6c63430005110032" + "object": "0x60c0604052600d60808190526c2bb930b83832b21022ba3432b960991b60a090815261002e916000919061007a565b50604080518082019091526004808252630ae8aa8960e31b602090920191825261005a9160019161007a565b506002805460ff1916601217905534801561007457600080fd5b50610115565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100bb57805160ff19168380011785556100e8565b828001600101855582156100e8579182015b828111156100e85782518255916020019190600101906100cd565b506100f49291506100f8565b5090565b61011291905b808211156100f457600081556001016100fe565b90565b6107f9806101246000396000f3fe6080604052600436106100bc5760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146102cb578063d0e30db0146100bc578063dd62ed3e14610311576100bc565b8063313ce5671461024b57806370a082311461027657806395d89b41146102b6576100bc565b806318160ddd116100a557806318160ddd146101aa57806323b872dd146101d15780632e1a7d4d14610221576100bc565b806306fdde03146100c6578063095ea7b314610150575b6100c4610359565b005b3480156100d257600080fd5b506100db6103a8565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101155781810151838201526020016100fd565b50505050905090810190601f1680156101425780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561015c57600080fd5b506101966004803603604081101561017357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610454565b604080519115158252519081900360200190f35b3480156101b657600080fd5b506101bf6104c7565b60408051918252519081900360200190f35b3480156101dd57600080fd5b50610196600480360360608110156101f457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356104cb565b34801561022d57600080fd5b506100c46004803603602081101561024457600080fd5b503561066b565b34801561025757600080fd5b50610260610700565b6040805160ff9092168252519081900360200190f35b34801561028257600080fd5b506101bf6004803603602081101561029957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610709565b3480156102c257600080fd5b506100db61071b565b3480156102d757600080fd5b50610196600480360360408110156102ee57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610793565b34801561031d57600080fd5b506101bf6004803603604081101561033457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166107a7565b33600081815260036020908152604091829020805434908101909155825190815291517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9281900390910190a2565b6000805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f8101849004840282018401909252818152929183018282801561044c5780601f106104215761010080835404028352916020019161044c565b820191906000526020600020905b81548152906001019060200180831161042f57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b4790565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260408120548211156104fd57600080fd5b73ffffffffffffffffffffffffffffffffffffffff84163314801590610573575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105ed5773ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020548211156105b557600080fd5b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020805483900390555b73ffffffffffffffffffffffffffffffffffffffff808516600081815260036020908152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35060019392505050565b3360009081526003602052604090205481111561068757600080fd5b33600081815260036020526040808220805485900390555183156108fc0291849190818181858888f193505050501580156106c6573d6000803e3d6000fd5b5060408051828152905133917f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65919081900360200190a250565b60025460ff1681565b60036020526000908152604090205481565b60018054604080516020600284861615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f8101849004840282018401909252818152929183018282801561044c5780601f106104215761010080835404028352916020019161044c565b60006107a03384846104cb565b9392505050565b60046020908152600092835260408084209091529082529020548156fea265627a7a723158206b7dcca2f4268299085314087a9c8506d18f6b6a5debabd331b75cf760e6714564736f6c63430005110032" }, "deployedBytecode": { - "object": "0x6080604052600436106100bc5760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146102cb578063d0e30db0146100bc578063dd62ed3e14610311576100bc565b8063313ce5671461024b57806370a082311461027657806395d89b41146102b6576100bc565b806318160ddd116100a557806318160ddd146101aa57806323b872dd146101d15780632e1a7d4d14610221576100bc565b806306fdde03146100c6578063095ea7b314610150575b6100c4610359565b005b3480156100d257600080fd5b506100db6103a8565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101155781810151838201526020016100fd565b50505050905090810190601f1680156101425780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561015c57600080fd5b506101966004803603604081101561017357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610454565b604080519115158252519081900360200190f35b3480156101b657600080fd5b506101bf6104c7565b60408051918252519081900360200190f35b3480156101dd57600080fd5b50610196600480360360608110156101f457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356104cb565b34801561022d57600080fd5b506100c46004803603602081101561024457600080fd5b503561066b565b34801561025757600080fd5b50610260610700565b6040805160ff9092168252519081900360200190f35b34801561028257600080fd5b506101bf6004803603602081101561029957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610709565b3480156102c257600080fd5b506100db61071b565b3480156102d757600080fd5b50610196600480360360408110156102ee57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610793565b34801561031d57600080fd5b506101bf6004803603604081101561033457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166107a7565b33600081815260036020908152604091829020805434908101909155825190815291517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9281900390910190a2565b6000805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f8101849004840282018401909252818152929183018282801561044c5780601f106104215761010080835404028352916020019161044c565b820191906000526020600020905b81548152906001019060200180831161042f57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b4790565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260408120548211156104fd57600080fd5b73ffffffffffffffffffffffffffffffffffffffff84163314801590610573575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105ed5773ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020548211156105b557600080fd5b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020805483900390555b73ffffffffffffffffffffffffffffffffffffffff808516600081815260036020908152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35060019392505050565b3360009081526003602052604090205481111561068757600080fd5b33600081815260036020526040808220805485900390555183156108fc0291849190818181858888f193505050501580156106c6573d6000803e3d6000fd5b5060408051828152905133917f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65919081900360200190a250565b60025460ff1681565b60036020526000908152604090205481565b60018054604080516020600284861615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f8101849004840282018401909252818152929183018282801561044c5780601f106104215761010080835404028352916020019161044c565b60006107a03384846104cb565b9392505050565b60046020908152600092835260408084209091529082529020548156fea265627a7a723158203cd1ca14603fcfa858fca0001d639d0e3bd2280e97e110042bb4613ca89b20c864736f6c63430005110032" + "object": "0x6080604052600436106100bc5760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146102cb578063d0e30db0146100bc578063dd62ed3e14610311576100bc565b8063313ce5671461024b57806370a082311461027657806395d89b41146102b6576100bc565b806318160ddd116100a557806318160ddd146101aa57806323b872dd146101d15780632e1a7d4d14610221576100bc565b806306fdde03146100c6578063095ea7b314610150575b6100c4610359565b005b3480156100d257600080fd5b506100db6103a8565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101155781810151838201526020016100fd565b50505050905090810190601f1680156101425780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561015c57600080fd5b506101966004803603604081101561017357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610454565b604080519115158252519081900360200190f35b3480156101b657600080fd5b506101bf6104c7565b60408051918252519081900360200190f35b3480156101dd57600080fd5b50610196600480360360608110156101f457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356104cb565b34801561022d57600080fd5b506100c46004803603602081101561024457600080fd5b503561066b565b34801561025757600080fd5b50610260610700565b6040805160ff9092168252519081900360200190f35b34801561028257600080fd5b506101bf6004803603602081101561029957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610709565b3480156102c257600080fd5b506100db61071b565b3480156102d757600080fd5b50610196600480360360408110156102ee57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610793565b34801561031d57600080fd5b506101bf6004803603604081101561033457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166107a7565b33600081815260036020908152604091829020805434908101909155825190815291517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9281900390910190a2565b6000805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f8101849004840282018401909252818152929183018282801561044c5780601f106104215761010080835404028352916020019161044c565b820191906000526020600020905b81548152906001019060200180831161042f57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b4790565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260408120548211156104fd57600080fd5b73ffffffffffffffffffffffffffffffffffffffff84163314801590610573575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105ed5773ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020548211156105b557600080fd5b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020805483900390555b73ffffffffffffffffffffffffffffffffffffffff808516600081815260036020908152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35060019392505050565b3360009081526003602052604090205481111561068757600080fd5b33600081815260036020526040808220805485900390555183156108fc0291849190818181858888f193505050501580156106c6573d6000803e3d6000fd5b5060408051828152905133917f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65919081900360200190a250565b60025460ff1681565b60036020526000908152604090205481565b60018054604080516020600284861615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f8101849004840282018401909252818152929183018282801561044c5780601f106104215761010080835404028352916020019161044c565b60006107a03384846104cb565b9392505050565b60046020908152600092835260408084209091529082529020548156fea265627a7a723158206b7dcca2f4268299085314087a9c8506d18f6b6a5debabd331b75cf760e6714564736f6c63430005110032" } } }, "compiler": { "name": "solc", - "version": "soljson-v0.5.17+commit.d19bba13.js", + "version": "0.5.17+commit.d19bba13", "settings": { "optimizer": { "enabled": true, diff --git a/packages/contract-artifacts/artifacts/ZRXToken.json b/packages/contract-artifacts/artifacts/ZRXToken.json index b6606ae51f..11cf3fffc5 100644 --- a/packages/contract-artifacts/artifacts/ZRXToken.json +++ b/packages/contract-artifacts/artifacts/ZRXToken.json @@ -116,16 +116,16 @@ }, "evm": { "bytecode": { - "object": "0x60606040526b033b2e3c9fd0803ce8000000600355341561001c57fe5b5b600354600160a060020a0333166000908152602081905260409020555b5b61078d8061004a6000396000f300606060405236156100965763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde038114610098578063095ea7b31461014657806318160ddd1461018657806323b872dd146101a8578063313ce567146101ee57806370a082311461021457806395d89b411461024f578063a9059cbb146102fd578063dd62ed3e1461033d575bfe5b34156100a057fe5b6100a861037e565b60408051602080825283518183015283519192839290830191850190808383821561010c575b80518252602083111561010c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016100ce565b505050905090810190601f1680156101385780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561014e57fe5b61017273ffffffffffffffffffffffffffffffffffffffff600435166024356103b5565b604080519115158252519081900360200190f35b341561018e57fe5b61019661042d565b60408051918252519081900360200190f35b34156101b057fe5b61017273ffffffffffffffffffffffffffffffffffffffff60043581169060243516604435610433565b604080519115158252519081900360200190f35b34156101f657fe5b6101fe6105d4565b6040805160ff9092168252519081900360200190f35b341561021c57fe5b61019673ffffffffffffffffffffffffffffffffffffffff600435166105d9565b60408051918252519081900360200190f35b341561025757fe5b6100a8610605565b60408051602080825283518183015283519192839290830191850190808383821561010c575b80518252602083111561010c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016100ce565b505050905090810190601f1680156101385780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561030557fe5b61017273ffffffffffffffffffffffffffffffffffffffff6004351660243561063c565b604080519115158252519081900360200190f35b341561034557fe5b61019673ffffffffffffffffffffffffffffffffffffffff60043581169060243516610727565b60408051918252519081900360200190f35b60408051808201909152601181527f30782050726f746f636f6c20546f6b656e000000000000000000000000000000602082015281565b73ffffffffffffffffffffffffffffffffffffffff338116600081815260016020908152604080832094871680845294825280832086905580518681529051929493927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b60035481565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832033909516835293815283822054928252819052918220548390108015906104835750828110155b80156104b6575073ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090205483810110155b156105c65773ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220805487019055918716815220805484900390557fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156105585773ffffffffffffffffffffffffffffffffffffffff808616600090815260016020908152604080832033909416835292905220805484900390555b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3600191506105cb565b600091505b5b509392505050565b601281565b73ffffffffffffffffffffffffffffffffffffffff81166000908152602081905260409020545b919050565b60408051808201909152600381527f5a52580000000000000000000000000000000000000000000000000000000000602082015281565b73ffffffffffffffffffffffffffffffffffffffff3316600090815260208190526040812054829010801590610699575073ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205482810110155b156107185773ffffffffffffffffffffffffffffffffffffffff33811660008181526020818152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a3506001610427565b506000610427565b5b92915050565b73ffffffffffffffffffffffffffffffffffffffff8083166000908152600160209081526040808320938516835292905220545b929150505600a165627a7a72305820ed1258581d81c9784322a395f1d964704760df40d638285300bbe445e268746d0029" + "object": "0x60606040526b033b2e3c9fd0803ce8000000600355341561001c57fe5b5b600354600160a060020a0333166000908152602081905260409020555b5b61078d8061004a6000396000f300606060405236156100965763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde038114610098578063095ea7b31461014657806318160ddd1461018657806323b872dd146101a8578063313ce567146101ee57806370a082311461021457806395d89b411461024f578063a9059cbb146102fd578063dd62ed3e1461033d575bfe5b34156100a057fe5b6100a861037e565b60408051602080825283518183015283519192839290830191850190808383821561010c575b80518252602083111561010c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016100ce565b505050905090810190601f1680156101385780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561014e57fe5b61017273ffffffffffffffffffffffffffffffffffffffff600435166024356103b5565b604080519115158252519081900360200190f35b341561018e57fe5b61019661042d565b60408051918252519081900360200190f35b34156101b057fe5b61017273ffffffffffffffffffffffffffffffffffffffff60043581169060243516604435610433565b604080519115158252519081900360200190f35b34156101f657fe5b6101fe6105d4565b6040805160ff9092168252519081900360200190f35b341561021c57fe5b61019673ffffffffffffffffffffffffffffffffffffffff600435166105d9565b60408051918252519081900360200190f35b341561025757fe5b6100a8610605565b60408051602080825283518183015283519192839290830191850190808383821561010c575b80518252602083111561010c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016100ce565b505050905090810190601f1680156101385780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561030557fe5b61017273ffffffffffffffffffffffffffffffffffffffff6004351660243561063c565b604080519115158252519081900360200190f35b341561034557fe5b61019673ffffffffffffffffffffffffffffffffffffffff60043581169060243516610727565b60408051918252519081900360200190f35b60408051808201909152601181527f30782050726f746f636f6c20546f6b656e000000000000000000000000000000602082015281565b73ffffffffffffffffffffffffffffffffffffffff338116600081815260016020908152604080832094871680845294825280832086905580518681529051929493927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b60035481565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832033909516835293815283822054928252819052918220548390108015906104835750828110155b80156104b6575073ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090205483810110155b156105c65773ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220805487019055918716815220805484900390557fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156105585773ffffffffffffffffffffffffffffffffffffffff808616600090815260016020908152604080832033909416835292905220805484900390555b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3600191506105cb565b600091505b5b509392505050565b601281565b73ffffffffffffffffffffffffffffffffffffffff81166000908152602081905260409020545b919050565b60408051808201909152600381527f5a52580000000000000000000000000000000000000000000000000000000000602082015281565b73ffffffffffffffffffffffffffffffffffffffff3316600090815260208190526040812054829010801590610699575073ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205482810110155b156107185773ffffffffffffffffffffffffffffffffffffffff33811660008181526020818152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a3506001610427565b506000610427565b5b92915050565b73ffffffffffffffffffffffffffffffffffffffff8083166000908152600160209081526040808320938516835292905220545b929150505600a165627a7a7230582046535601227b5593da4370a7dfeedd2cba029ac1cbef52fe6cae0e64fbbb37ce0029" }, "deployedBytecode": { - "object": "0x606060405236156100965763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde038114610098578063095ea7b31461014657806318160ddd1461018657806323b872dd146101a8578063313ce567146101ee57806370a082311461021457806395d89b411461024f578063a9059cbb146102fd578063dd62ed3e1461033d575bfe5b34156100a057fe5b6100a861037e565b60408051602080825283518183015283519192839290830191850190808383821561010c575b80518252602083111561010c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016100ce565b505050905090810190601f1680156101385780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561014e57fe5b61017273ffffffffffffffffffffffffffffffffffffffff600435166024356103b5565b604080519115158252519081900360200190f35b341561018e57fe5b61019661042d565b60408051918252519081900360200190f35b34156101b057fe5b61017273ffffffffffffffffffffffffffffffffffffffff60043581169060243516604435610433565b604080519115158252519081900360200190f35b34156101f657fe5b6101fe6105d4565b6040805160ff9092168252519081900360200190f35b341561021c57fe5b61019673ffffffffffffffffffffffffffffffffffffffff600435166105d9565b60408051918252519081900360200190f35b341561025757fe5b6100a8610605565b60408051602080825283518183015283519192839290830191850190808383821561010c575b80518252602083111561010c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016100ce565b505050905090810190601f1680156101385780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561030557fe5b61017273ffffffffffffffffffffffffffffffffffffffff6004351660243561063c565b604080519115158252519081900360200190f35b341561034557fe5b61019673ffffffffffffffffffffffffffffffffffffffff60043581169060243516610727565b60408051918252519081900360200190f35b60408051808201909152601181527f30782050726f746f636f6c20546f6b656e000000000000000000000000000000602082015281565b73ffffffffffffffffffffffffffffffffffffffff338116600081815260016020908152604080832094871680845294825280832086905580518681529051929493927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b60035481565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832033909516835293815283822054928252819052918220548390108015906104835750828110155b80156104b6575073ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090205483810110155b156105c65773ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220805487019055918716815220805484900390557fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156105585773ffffffffffffffffffffffffffffffffffffffff808616600090815260016020908152604080832033909416835292905220805484900390555b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3600191506105cb565b600091505b5b509392505050565b601281565b73ffffffffffffffffffffffffffffffffffffffff81166000908152602081905260409020545b919050565b60408051808201909152600381527f5a52580000000000000000000000000000000000000000000000000000000000602082015281565b73ffffffffffffffffffffffffffffffffffffffff3316600090815260208190526040812054829010801590610699575073ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205482810110155b156107185773ffffffffffffffffffffffffffffffffffffffff33811660008181526020818152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a3506001610427565b506000610427565b5b92915050565b73ffffffffffffffffffffffffffffffffffffffff8083166000908152600160209081526040808320938516835292905220545b929150505600a165627a7a72305820ed1258581d81c9784322a395f1d964704760df40d638285300bbe445e268746d0029" + "object": "0x606060405236156100965763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde038114610098578063095ea7b31461014657806318160ddd1461018657806323b872dd146101a8578063313ce567146101ee57806370a082311461021457806395d89b411461024f578063a9059cbb146102fd578063dd62ed3e1461033d575bfe5b34156100a057fe5b6100a861037e565b60408051602080825283518183015283519192839290830191850190808383821561010c575b80518252602083111561010c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016100ce565b505050905090810190601f1680156101385780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561014e57fe5b61017273ffffffffffffffffffffffffffffffffffffffff600435166024356103b5565b604080519115158252519081900360200190f35b341561018e57fe5b61019661042d565b60408051918252519081900360200190f35b34156101b057fe5b61017273ffffffffffffffffffffffffffffffffffffffff60043581169060243516604435610433565b604080519115158252519081900360200190f35b34156101f657fe5b6101fe6105d4565b6040805160ff9092168252519081900360200190f35b341561021c57fe5b61019673ffffffffffffffffffffffffffffffffffffffff600435166105d9565b60408051918252519081900360200190f35b341561025757fe5b6100a8610605565b60408051602080825283518183015283519192839290830191850190808383821561010c575b80518252602083111561010c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016100ce565b505050905090810190601f1680156101385780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561030557fe5b61017273ffffffffffffffffffffffffffffffffffffffff6004351660243561063c565b604080519115158252519081900360200190f35b341561034557fe5b61019673ffffffffffffffffffffffffffffffffffffffff60043581169060243516610727565b60408051918252519081900360200190f35b60408051808201909152601181527f30782050726f746f636f6c20546f6b656e000000000000000000000000000000602082015281565b73ffffffffffffffffffffffffffffffffffffffff338116600081815260016020908152604080832094871680845294825280832086905580518681529051929493927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b60035481565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832033909516835293815283822054928252819052918220548390108015906104835750828110155b80156104b6575073ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090205483810110155b156105c65773ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220805487019055918716815220805484900390557fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156105585773ffffffffffffffffffffffffffffffffffffffff808616600090815260016020908152604080832033909416835292905220805484900390555b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3600191506105cb565b600091505b5b509392505050565b601281565b73ffffffffffffffffffffffffffffffffffffffff81166000908152602081905260409020545b919050565b60408051808201909152600381527f5a52580000000000000000000000000000000000000000000000000000000000602082015281565b73ffffffffffffffffffffffffffffffffffffffff3316600090815260208190526040812054829010801590610699575073ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205482810110155b156107185773ffffffffffffffffffffffffffffffffffffffff33811660008181526020818152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a3506001610427565b506000610427565b5b92915050565b73ffffffffffffffffffffffffffffffffffffffff8083166000908152600160209081526040808320938516835292905220545b929150505600a165627a7a7230582046535601227b5593da4370a7dfeedd2cba029ac1cbef52fe6cae0e64fbbb37ce0029" } } }, "compiler": { "name": "solc", - "version": "soljson-v0.4.11+commit.68ef5810.js", + "version": "0.4.11+commit.68ef5810", "settings": { "optimizer": { "enabled": true, diff --git a/packages/contract-artifacts/artifacts/ZrxVault.json b/packages/contract-artifacts/artifacts/ZrxVault.json index b5247e4e9c..37dfce5b1d 100644 --- a/packages/contract-artifacts/artifacts/ZrxVault.json +++ b/packages/contract-artifacts/artifacts/ZrxVault.json @@ -324,16 +324,16 @@ }, "evm": { "bytecode": { - "object": "0x60806040523480156200001157600080fd5b506040516200190238038062001902833981810160405260408110156200003757600080fd5b508051602091820151600080546001600160a01b03199081163317909155600580546001600160a01b0380861691841691909117909155600680549184169190921681179091556040805160248082019390935281518082039093018352604401905292830180516001600160e01b03167ff47261b000000000000000000000000000000000000000000000000000000000178152925191929091620000e091600791620000e9565b5050506200018e565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200012c57805160ff19168380011785556200015c565b828001600101855582156200015c579182015b828111156200015c5782518255916020019190600101906200013f565b506200016a9291506200016e565b5090565b6200018b91905b808211156200016a576000815560010162000175565b90565b611764806200019e6000396000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c80639470b0bd116100cd578063c4d8f23711610081578063d39de6e911610066578063d39de6e9146103d1578063f2fde38b14610429578063f957ddba1461045c57610151565b8063c4d8f23714610396578063ca5b02181461039e57610151565b80639ad26744116100b25780639ad2674414610322578063b91816111461035b578063c02e5a7f1461038e57610151565b80639470b0bd146102e15780639706e0c01461031a57610151565b8063494503d4116101245780637071293911610109578063707129391461026157806370a08231146102945780638da5cb5b146102d957610151565b8063494503d4146102115780636bf3f9e51461022e57610151565b806315cc36f214610156578063266df27c1461019157806342f1181e146101ad5780634551ab31146101e0575b600080fd5b61018f6004803603604081101561016c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561048f565b005b610199610676565b604080519115158252519081900360200190f35b61018f600480360360208110156101c357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610697565b6101e86106ab565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6101e86004803603602081101561022757600080fd5b50356106c7565b61018f6004803603602081101561024457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166106fb565b61018f6004803603602081101561027757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661077c565b6102c7600480360360208110156102aa57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610836565b60408051918252519081900360200190f35b6101e861085e565b61018f600480360360408110156102f757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561087a565b6102c7610894565b61018f6004803603604081101561033857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610937565b6101996004803603602081101561037157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610949565b61018f61095e565b6101e86109e2565b61018f600480360360208110156103b457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166109fe565b6103d9610a87565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156104155781810151838201526020016103fd565b505050509050019250505060405180910390f35b61018f6004803603602081101561043f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610af6565b6102c76004803603602081101561047257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610b99565b610497610bd9565b61049f610c06565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600460205260409020546104d5908263ffffffff610c3416565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260046020908152604091829020939093558051848152905191927fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c92918290030190a26005546040517fa85e59e400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660248301523060448301819052606483018590526080600484019081526007805460027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600183161561010002019091160460848601819052939095169463a85e59e494909388939288929091829160a40190879080156106375780601f1061060c57610100808354040283529160200191610637565b820191906000526020600020905b81548152906001019060200180831161061a57829003601f168201915b505095505050505050600060405180830381600087803b15801561065a57600080fd5b505af115801561066e573d6000803e3d6000fd5b505050505050565b60035474010000000000000000000000000000000000000000900460ff1681565b61069f610c57565b6106a881610c9e565b50565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b600281815481106106d457fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b610703610dcf565b6003805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915560408051918252517fb72b2a9919ffd08bc0d415d8a38b1395a40377207a9867cac2e3c10b1aa560fc9181900360200190a150565b610784610c57565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff166107c2576107c26107bd82610df2565b610e75565b60005b600254811015610832578173ffffffffffffffffffffffffffffffffffffffff16600282815481106107f357fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16141561082a576108258282610e7d565b610832565b6001016107c5565b5050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b610882610bd9565b61088a610c06565b61083282826110cc565b600654604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b15801561090557600080fd5b505afa158015610919573d6000803e3d6000fd5b505050506040513d602081101561092f57600080fd5b505190505b90565b61093f610c57565b6108328282610e7d565b60016020526000908152604090205460ff1681565b610966610dcf565b61096e610c06565b600380547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790556040805133815290517fdc2ba7cd6b8e3bf6f27f665a737e34fb7f72f480a597b51686332c539fab04489181900360200190a1565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b610a06610dcf565b610a0e610c06565b6005805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915560408051918252517fab1ca8eb645c27b1fa85b29ed92584109de7cc576a907cddaa0bf3f1f7f253109181900360200190a150565b60606002805480602002602001604051908101604052809291908181526020018280548015610aec57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610ac1575b5050505050905090565b610afe610c57565b73ffffffffffffffffffffffffffffffffffffffff8116610b2957610b246107bd61120d565b6106a8565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000610ba3611244565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040902054610bd383826110cc565b92915050565b60035473ffffffffffffffffffffffffffffffffffffffff163314610c0457610c046107bd33611271565b565b60035474010000000000000000000000000000000000000000900460ff1615610c0457610c046107bd6112f4565b600082820183811015610c5057610c506107bd6000868661132b565b9392505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610c0457600054610c04906107bd90339073ffffffffffffffffffffffffffffffffffffffff166113ca565b73ffffffffffffffffffffffffffffffffffffffff8116610cc457610cc46107bd611456565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff1615610cfe57610cfe6107bd8261148d565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168317905560028054928301815583527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001684179055513392917f3147867c59d17e8fa9d522465651d44aae0a9e38f902f3475b97e58072f0ed4c91a350565b3360009081526001602052604090205460ff16610c0457610c046107bd33611510565b6040805173ffffffffffffffffffffffffffffffffffffffff83166024808301919091528251808303909101815260449091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167feb5108a200000000000000000000000000000000000000000000000000000000179052919050565b805160208201fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205460ff16610eb657610eb66107bd83610df2565b6002548110610ed157610ed16107bd82600280549050611593565b8173ffffffffffffffffffffffffffffffffffffffff1660028281548110610ef557fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1614610f5757610f576107bd60028381548110610f2f57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1684611606565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101908110610fd257fe5b6000918252602090912001546002805473ffffffffffffffffffffffffffffffffffffffff909216918390811061100557fe5b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019061108490826116e8565b50604051339073ffffffffffffffffffffffffffffffffffffffff8416907f1f32c1b084e2de0713b8fb16bd46bb9df710a3dbeae2f3ca93af46e016dcc6b090600090a35050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040902054611102908263ffffffff61169216565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260046020908152604091829020939093558051848152905191927f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a942436492918290030190a2600654604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b1580156111dd57600080fd5b505af11580156111f1573d6000803e3d6000fd5b505050506040513d602081101561120757600080fd5b50505050565b60408051808201909152600481527fe69edc3e00000000000000000000000000000000000000000000000000000000602082015290565b60035474010000000000000000000000000000000000000000900460ff16610c0457610c046107bd6116b1565b6040805173ffffffffffffffffffffffffffffffffffffffff83166024808301919091528251808303909101815260449091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fca1d07a200000000000000000000000000000000000000000000000000000000179052919050565b60408051808201909152600481527f7dd020ce00000000000000000000000000000000000000000000000000000000602082015290565b606063e946c1bb60e01b8484846040516024018084600381111561134b57fe5b60ff1681526020018381526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090509392505050565b6040805173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044808301919091528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1de45ad10000000000000000000000000000000000000000000000000000000017905292915050565b60408051808201909152600481527f57654fe400000000000000000000000000000000000000000000000000000000602082015290565b6040805173ffffffffffffffffffffffffffffffffffffffff83166024808301919091528251808303909101815260449091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fde16f1a000000000000000000000000000000000000000000000000000000000179052919050565b6040805173ffffffffffffffffffffffffffffffffffffffff83166024808301919091528251808303909101815260449091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fb65a25b900000000000000000000000000000000000000000000000000000000179052919050565b604080516024810184905260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe9f837710000000000000000000000000000000000000000000000000000000017905292915050565b6040805173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044808301919091528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f140a84db0000000000000000000000000000000000000000000000000000000017905292915050565b6000828211156116ab576116ab6107bd6002858561132b565b50900390565b60408051808201909152600481527f3ef081cc00000000000000000000000000000000000000000000000000000000602082015290565b81548183558181111561170c5760008381526020902061170c918101908301611711565b505050565b61093491905b8082111561172b5760008155600101611717565b509056fea265627a7a72315820353494a7cb0f1de5778bf6c5cd23d4d6fa4128a3ea4693352a1b54c3e353c64464736f6c634300050c0032" + "object": "0x60806040523480156200001157600080fd5b506040516200190238038062001902833981810160405260408110156200003757600080fd5b508051602091820151600080546001600160a01b03199081163317909155600580546001600160a01b0380861691841691909117909155600680549184169190921681179091556040805160248082019390935281518082039093018352604401905292830180516001600160e01b03167ff47261b000000000000000000000000000000000000000000000000000000000178152925191929091620000e091600791620000e9565b5050506200018e565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200012c57805160ff19168380011785556200015c565b828001600101855582156200015c579182015b828111156200015c5782518255916020019190600101906200013f565b506200016a9291506200016e565b5090565b6200018b91905b808211156200016a576000815560010162000175565b90565b611764806200019e6000396000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c80639470b0bd116100cd578063c4d8f23711610081578063d39de6e911610066578063d39de6e9146103d1578063f2fde38b14610429578063f957ddba1461045c57610151565b8063c4d8f23714610396578063ca5b02181461039e57610151565b80639ad26744116100b25780639ad2674414610322578063b91816111461035b578063c02e5a7f1461038e57610151565b80639470b0bd146102e15780639706e0c01461031a57610151565b8063494503d4116101245780637071293911610109578063707129391461026157806370a08231146102945780638da5cb5b146102d957610151565b8063494503d4146102115780636bf3f9e51461022e57610151565b806315cc36f214610156578063266df27c1461019157806342f1181e146101ad5780634551ab31146101e0575b600080fd5b61018f6004803603604081101561016c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561048f565b005b610199610676565b604080519115158252519081900360200190f35b61018f600480360360208110156101c357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610697565b6101e86106ab565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6101e86004803603602081101561022757600080fd5b50356106c7565b61018f6004803603602081101561024457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166106fb565b61018f6004803603602081101561027757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661077c565b6102c7600480360360208110156102aa57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610836565b60408051918252519081900360200190f35b6101e861085e565b61018f600480360360408110156102f757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561087a565b6102c7610894565b61018f6004803603604081101561033857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610937565b6101996004803603602081101561037157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610949565b61018f61095e565b6101e86109e2565b61018f600480360360208110156103b457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166109fe565b6103d9610a87565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156104155781810151838201526020016103fd565b505050509050019250505060405180910390f35b61018f6004803603602081101561043f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610af6565b6102c76004803603602081101561047257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610b99565b610497610bd9565b61049f610c06565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600460205260409020546104d5908263ffffffff610c3416565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260046020908152604091829020939093558051848152905191927fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c92918290030190a26005546040517fa85e59e400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660248301523060448301819052606483018590526080600484019081526007805460027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600183161561010002019091160460848601819052939095169463a85e59e494909388939288929091829160a40190879080156106375780601f1061060c57610100808354040283529160200191610637565b820191906000526020600020905b81548152906001019060200180831161061a57829003601f168201915b505095505050505050600060405180830381600087803b15801561065a57600080fd5b505af115801561066e573d6000803e3d6000fd5b505050505050565b60035474010000000000000000000000000000000000000000900460ff1681565b61069f610c57565b6106a881610c9e565b50565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b600281815481106106d457fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b610703610dcf565b6003805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915560408051918252517fb72b2a9919ffd08bc0d415d8a38b1395a40377207a9867cac2e3c10b1aa560fc9181900360200190a150565b610784610c57565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff166107c2576107c26107bd82610df2565b610e75565b60005b600254811015610832578173ffffffffffffffffffffffffffffffffffffffff16600282815481106107f357fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16141561082a576108258282610e7d565b610832565b6001016107c5565b5050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b610882610bd9565b61088a610c06565b61083282826110cc565b600654604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b15801561090557600080fd5b505afa158015610919573d6000803e3d6000fd5b505050506040513d602081101561092f57600080fd5b505190505b90565b61093f610c57565b6108328282610e7d565b60016020526000908152604090205460ff1681565b610966610dcf565b61096e610c06565b600380547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790556040805133815290517fdc2ba7cd6b8e3bf6f27f665a737e34fb7f72f480a597b51686332c539fab04489181900360200190a1565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b610a06610dcf565b610a0e610c06565b6005805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915560408051918252517fab1ca8eb645c27b1fa85b29ed92584109de7cc576a907cddaa0bf3f1f7f253109181900360200190a150565b60606002805480602002602001604051908101604052809291908181526020018280548015610aec57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610ac1575b5050505050905090565b610afe610c57565b73ffffffffffffffffffffffffffffffffffffffff8116610b2957610b246107bd61120d565b6106a8565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000610ba3611244565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040902054610bd383826110cc565b92915050565b60035473ffffffffffffffffffffffffffffffffffffffff163314610c0457610c046107bd33611271565b565b60035474010000000000000000000000000000000000000000900460ff1615610c0457610c046107bd6112f4565b600082820183811015610c5057610c506107bd6000868661132b565b9392505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610c0457600054610c04906107bd90339073ffffffffffffffffffffffffffffffffffffffff166113ca565b73ffffffffffffffffffffffffffffffffffffffff8116610cc457610cc46107bd611456565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff1615610cfe57610cfe6107bd8261148d565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168317905560028054928301815583527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001684179055513392917f3147867c59d17e8fa9d522465651d44aae0a9e38f902f3475b97e58072f0ed4c91a350565b3360009081526001602052604090205460ff16610c0457610c046107bd33611510565b6040805173ffffffffffffffffffffffffffffffffffffffff83166024808301919091528251808303909101815260449091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167feb5108a200000000000000000000000000000000000000000000000000000000179052919050565b805160208201fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205460ff16610eb657610eb66107bd83610df2565b6002548110610ed157610ed16107bd82600280549050611593565b8173ffffffffffffffffffffffffffffffffffffffff1660028281548110610ef557fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1614610f5757610f576107bd60028381548110610f2f57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1684611606565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101908110610fd257fe5b6000918252602090912001546002805473ffffffffffffffffffffffffffffffffffffffff909216918390811061100557fe5b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019061108490826116e8565b50604051339073ffffffffffffffffffffffffffffffffffffffff8416907f1f32c1b084e2de0713b8fb16bd46bb9df710a3dbeae2f3ca93af46e016dcc6b090600090a35050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040902054611102908263ffffffff61169216565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260046020908152604091829020939093558051848152905191927f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a942436492918290030190a2600654604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b1580156111dd57600080fd5b505af11580156111f1573d6000803e3d6000fd5b505050506040513d602081101561120757600080fd5b50505050565b60408051808201909152600481527fe69edc3e00000000000000000000000000000000000000000000000000000000602082015290565b60035474010000000000000000000000000000000000000000900460ff16610c0457610c046107bd6116b1565b6040805173ffffffffffffffffffffffffffffffffffffffff83166024808301919091528251808303909101815260449091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fca1d07a200000000000000000000000000000000000000000000000000000000179052919050565b60408051808201909152600481527f7dd020ce00000000000000000000000000000000000000000000000000000000602082015290565b606063e946c1bb60e01b8484846040516024018084600381111561134b57fe5b60ff1681526020018381526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090509392505050565b6040805173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044808301919091528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1de45ad10000000000000000000000000000000000000000000000000000000017905292915050565b60408051808201909152600481527f57654fe400000000000000000000000000000000000000000000000000000000602082015290565b6040805173ffffffffffffffffffffffffffffffffffffffff83166024808301919091528251808303909101815260449091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fde16f1a000000000000000000000000000000000000000000000000000000000179052919050565b6040805173ffffffffffffffffffffffffffffffffffffffff83166024808301919091528251808303909101815260449091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fb65a25b900000000000000000000000000000000000000000000000000000000179052919050565b604080516024810184905260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe9f837710000000000000000000000000000000000000000000000000000000017905292915050565b6040805173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044808301919091528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f140a84db0000000000000000000000000000000000000000000000000000000017905292915050565b6000828211156116ab576116ab6107bd6002858561132b565b50900390565b60408051808201909152600481527f3ef081cc00000000000000000000000000000000000000000000000000000000602082015290565b81548183558181111561170c5760008381526020902061170c918101908301611711565b505050565b61093491905b8082111561172b5760008155600101611717565b509056fea265627a7a7231582076ed2811cd62e3d73b929871d57c0611c7b106d39b13ba7bd35bffd7b3eb802364736f6c634300050c0032" }, "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b50600436106101515760003560e01c80639470b0bd116100cd578063c4d8f23711610081578063d39de6e911610066578063d39de6e9146103d1578063f2fde38b14610429578063f957ddba1461045c57610151565b8063c4d8f23714610396578063ca5b02181461039e57610151565b80639ad26744116100b25780639ad2674414610322578063b91816111461035b578063c02e5a7f1461038e57610151565b80639470b0bd146102e15780639706e0c01461031a57610151565b8063494503d4116101245780637071293911610109578063707129391461026157806370a08231146102945780638da5cb5b146102d957610151565b8063494503d4146102115780636bf3f9e51461022e57610151565b806315cc36f214610156578063266df27c1461019157806342f1181e146101ad5780634551ab31146101e0575b600080fd5b61018f6004803603604081101561016c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561048f565b005b610199610676565b604080519115158252519081900360200190f35b61018f600480360360208110156101c357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610697565b6101e86106ab565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6101e86004803603602081101561022757600080fd5b50356106c7565b61018f6004803603602081101561024457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166106fb565b61018f6004803603602081101561027757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661077c565b6102c7600480360360208110156102aa57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610836565b60408051918252519081900360200190f35b6101e861085e565b61018f600480360360408110156102f757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561087a565b6102c7610894565b61018f6004803603604081101561033857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610937565b6101996004803603602081101561037157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610949565b61018f61095e565b6101e86109e2565b61018f600480360360208110156103b457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166109fe565b6103d9610a87565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156104155781810151838201526020016103fd565b505050509050019250505060405180910390f35b61018f6004803603602081101561043f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610af6565b6102c76004803603602081101561047257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610b99565b610497610bd9565b61049f610c06565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600460205260409020546104d5908263ffffffff610c3416565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260046020908152604091829020939093558051848152905191927fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c92918290030190a26005546040517fa85e59e400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660248301523060448301819052606483018590526080600484019081526007805460027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600183161561010002019091160460848601819052939095169463a85e59e494909388939288929091829160a40190879080156106375780601f1061060c57610100808354040283529160200191610637565b820191906000526020600020905b81548152906001019060200180831161061a57829003601f168201915b505095505050505050600060405180830381600087803b15801561065a57600080fd5b505af115801561066e573d6000803e3d6000fd5b505050505050565b60035474010000000000000000000000000000000000000000900460ff1681565b61069f610c57565b6106a881610c9e565b50565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b600281815481106106d457fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b610703610dcf565b6003805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915560408051918252517fb72b2a9919ffd08bc0d415d8a38b1395a40377207a9867cac2e3c10b1aa560fc9181900360200190a150565b610784610c57565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff166107c2576107c26107bd82610df2565b610e75565b60005b600254811015610832578173ffffffffffffffffffffffffffffffffffffffff16600282815481106107f357fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16141561082a576108258282610e7d565b610832565b6001016107c5565b5050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b610882610bd9565b61088a610c06565b61083282826110cc565b600654604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b15801561090557600080fd5b505afa158015610919573d6000803e3d6000fd5b505050506040513d602081101561092f57600080fd5b505190505b90565b61093f610c57565b6108328282610e7d565b60016020526000908152604090205460ff1681565b610966610dcf565b61096e610c06565b600380547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790556040805133815290517fdc2ba7cd6b8e3bf6f27f665a737e34fb7f72f480a597b51686332c539fab04489181900360200190a1565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b610a06610dcf565b610a0e610c06565b6005805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915560408051918252517fab1ca8eb645c27b1fa85b29ed92584109de7cc576a907cddaa0bf3f1f7f253109181900360200190a150565b60606002805480602002602001604051908101604052809291908181526020018280548015610aec57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610ac1575b5050505050905090565b610afe610c57565b73ffffffffffffffffffffffffffffffffffffffff8116610b2957610b246107bd61120d565b6106a8565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000610ba3611244565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040902054610bd383826110cc565b92915050565b60035473ffffffffffffffffffffffffffffffffffffffff163314610c0457610c046107bd33611271565b565b60035474010000000000000000000000000000000000000000900460ff1615610c0457610c046107bd6112f4565b600082820183811015610c5057610c506107bd6000868661132b565b9392505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610c0457600054610c04906107bd90339073ffffffffffffffffffffffffffffffffffffffff166113ca565b73ffffffffffffffffffffffffffffffffffffffff8116610cc457610cc46107bd611456565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff1615610cfe57610cfe6107bd8261148d565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168317905560028054928301815583527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001684179055513392917f3147867c59d17e8fa9d522465651d44aae0a9e38f902f3475b97e58072f0ed4c91a350565b3360009081526001602052604090205460ff16610c0457610c046107bd33611510565b6040805173ffffffffffffffffffffffffffffffffffffffff83166024808301919091528251808303909101815260449091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167feb5108a200000000000000000000000000000000000000000000000000000000179052919050565b805160208201fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205460ff16610eb657610eb66107bd83610df2565b6002548110610ed157610ed16107bd82600280549050611593565b8173ffffffffffffffffffffffffffffffffffffffff1660028281548110610ef557fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1614610f5757610f576107bd60028381548110610f2f57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1684611606565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101908110610fd257fe5b6000918252602090912001546002805473ffffffffffffffffffffffffffffffffffffffff909216918390811061100557fe5b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019061108490826116e8565b50604051339073ffffffffffffffffffffffffffffffffffffffff8416907f1f32c1b084e2de0713b8fb16bd46bb9df710a3dbeae2f3ca93af46e016dcc6b090600090a35050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040902054611102908263ffffffff61169216565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260046020908152604091829020939093558051848152905191927f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a942436492918290030190a2600654604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b1580156111dd57600080fd5b505af11580156111f1573d6000803e3d6000fd5b505050506040513d602081101561120757600080fd5b50505050565b60408051808201909152600481527fe69edc3e00000000000000000000000000000000000000000000000000000000602082015290565b60035474010000000000000000000000000000000000000000900460ff16610c0457610c046107bd6116b1565b6040805173ffffffffffffffffffffffffffffffffffffffff83166024808301919091528251808303909101815260449091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fca1d07a200000000000000000000000000000000000000000000000000000000179052919050565b60408051808201909152600481527f7dd020ce00000000000000000000000000000000000000000000000000000000602082015290565b606063e946c1bb60e01b8484846040516024018084600381111561134b57fe5b60ff1681526020018381526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090509392505050565b6040805173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044808301919091528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1de45ad10000000000000000000000000000000000000000000000000000000017905292915050565b60408051808201909152600481527f57654fe400000000000000000000000000000000000000000000000000000000602082015290565b6040805173ffffffffffffffffffffffffffffffffffffffff83166024808301919091528251808303909101815260449091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fde16f1a000000000000000000000000000000000000000000000000000000000179052919050565b6040805173ffffffffffffffffffffffffffffffffffffffff83166024808301919091528251808303909101815260449091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fb65a25b900000000000000000000000000000000000000000000000000000000179052919050565b604080516024810184905260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe9f837710000000000000000000000000000000000000000000000000000000017905292915050565b6040805173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044808301919091528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f140a84db0000000000000000000000000000000000000000000000000000000017905292915050565b6000828211156116ab576116ab6107bd6002858561132b565b50900390565b60408051808201909152600481527f3ef081cc00000000000000000000000000000000000000000000000000000000602082015290565b81548183558181111561170c5760008381526020902061170c918101908301611711565b505050565b61093491905b8082111561172b5760008155600101611717565b509056fea265627a7a72315820353494a7cb0f1de5778bf6c5cd23d4d6fa4128a3ea4693352a1b54c3e353c64464736f6c634300050c0032" + "object": "0x608060405234801561001057600080fd5b50600436106101515760003560e01c80639470b0bd116100cd578063c4d8f23711610081578063d39de6e911610066578063d39de6e9146103d1578063f2fde38b14610429578063f957ddba1461045c57610151565b8063c4d8f23714610396578063ca5b02181461039e57610151565b80639ad26744116100b25780639ad2674414610322578063b91816111461035b578063c02e5a7f1461038e57610151565b80639470b0bd146102e15780639706e0c01461031a57610151565b8063494503d4116101245780637071293911610109578063707129391461026157806370a08231146102945780638da5cb5b146102d957610151565b8063494503d4146102115780636bf3f9e51461022e57610151565b806315cc36f214610156578063266df27c1461019157806342f1181e146101ad5780634551ab31146101e0575b600080fd5b61018f6004803603604081101561016c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561048f565b005b610199610676565b604080519115158252519081900360200190f35b61018f600480360360208110156101c357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610697565b6101e86106ab565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6101e86004803603602081101561022757600080fd5b50356106c7565b61018f6004803603602081101561024457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166106fb565b61018f6004803603602081101561027757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661077c565b6102c7600480360360208110156102aa57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610836565b60408051918252519081900360200190f35b6101e861085e565b61018f600480360360408110156102f757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561087a565b6102c7610894565b61018f6004803603604081101561033857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610937565b6101996004803603602081101561037157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610949565b61018f61095e565b6101e86109e2565b61018f600480360360208110156103b457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166109fe565b6103d9610a87565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156104155781810151838201526020016103fd565b505050509050019250505060405180910390f35b61018f6004803603602081101561043f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610af6565b6102c76004803603602081101561047257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610b99565b610497610bd9565b61049f610c06565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600460205260409020546104d5908263ffffffff610c3416565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260046020908152604091829020939093558051848152905191927fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c92918290030190a26005546040517fa85e59e400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660248301523060448301819052606483018590526080600484019081526007805460027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600183161561010002019091160460848601819052939095169463a85e59e494909388939288929091829160a40190879080156106375780601f1061060c57610100808354040283529160200191610637565b820191906000526020600020905b81548152906001019060200180831161061a57829003601f168201915b505095505050505050600060405180830381600087803b15801561065a57600080fd5b505af115801561066e573d6000803e3d6000fd5b505050505050565b60035474010000000000000000000000000000000000000000900460ff1681565b61069f610c57565b6106a881610c9e565b50565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b600281815481106106d457fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b610703610dcf565b6003805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915560408051918252517fb72b2a9919ffd08bc0d415d8a38b1395a40377207a9867cac2e3c10b1aa560fc9181900360200190a150565b610784610c57565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff166107c2576107c26107bd82610df2565b610e75565b60005b600254811015610832578173ffffffffffffffffffffffffffffffffffffffff16600282815481106107f357fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16141561082a576108258282610e7d565b610832565b6001016107c5565b5050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b610882610bd9565b61088a610c06565b61083282826110cc565b600654604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b15801561090557600080fd5b505afa158015610919573d6000803e3d6000fd5b505050506040513d602081101561092f57600080fd5b505190505b90565b61093f610c57565b6108328282610e7d565b60016020526000908152604090205460ff1681565b610966610dcf565b61096e610c06565b600380547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790556040805133815290517fdc2ba7cd6b8e3bf6f27f665a737e34fb7f72f480a597b51686332c539fab04489181900360200190a1565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b610a06610dcf565b610a0e610c06565b6005805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915560408051918252517fab1ca8eb645c27b1fa85b29ed92584109de7cc576a907cddaa0bf3f1f7f253109181900360200190a150565b60606002805480602002602001604051908101604052809291908181526020018280548015610aec57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610ac1575b5050505050905090565b610afe610c57565b73ffffffffffffffffffffffffffffffffffffffff8116610b2957610b246107bd61120d565b6106a8565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000610ba3611244565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040902054610bd383826110cc565b92915050565b60035473ffffffffffffffffffffffffffffffffffffffff163314610c0457610c046107bd33611271565b565b60035474010000000000000000000000000000000000000000900460ff1615610c0457610c046107bd6112f4565b600082820183811015610c5057610c506107bd6000868661132b565b9392505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610c0457600054610c04906107bd90339073ffffffffffffffffffffffffffffffffffffffff166113ca565b73ffffffffffffffffffffffffffffffffffffffff8116610cc457610cc46107bd611456565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff1615610cfe57610cfe6107bd8261148d565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168317905560028054928301815583527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001684179055513392917f3147867c59d17e8fa9d522465651d44aae0a9e38f902f3475b97e58072f0ed4c91a350565b3360009081526001602052604090205460ff16610c0457610c046107bd33611510565b6040805173ffffffffffffffffffffffffffffffffffffffff83166024808301919091528251808303909101815260449091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167feb5108a200000000000000000000000000000000000000000000000000000000179052919050565b805160208201fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205460ff16610eb657610eb66107bd83610df2565b6002548110610ed157610ed16107bd82600280549050611593565b8173ffffffffffffffffffffffffffffffffffffffff1660028281548110610ef557fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1614610f5757610f576107bd60028381548110610f2f57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1684611606565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101908110610fd257fe5b6000918252602090912001546002805473ffffffffffffffffffffffffffffffffffffffff909216918390811061100557fe5b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019061108490826116e8565b50604051339073ffffffffffffffffffffffffffffffffffffffff8416907f1f32c1b084e2de0713b8fb16bd46bb9df710a3dbeae2f3ca93af46e016dcc6b090600090a35050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040902054611102908263ffffffff61169216565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260046020908152604091829020939093558051848152905191927f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a942436492918290030190a2600654604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b1580156111dd57600080fd5b505af11580156111f1573d6000803e3d6000fd5b505050506040513d602081101561120757600080fd5b50505050565b60408051808201909152600481527fe69edc3e00000000000000000000000000000000000000000000000000000000602082015290565b60035474010000000000000000000000000000000000000000900460ff16610c0457610c046107bd6116b1565b6040805173ffffffffffffffffffffffffffffffffffffffff83166024808301919091528251808303909101815260449091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fca1d07a200000000000000000000000000000000000000000000000000000000179052919050565b60408051808201909152600481527f7dd020ce00000000000000000000000000000000000000000000000000000000602082015290565b606063e946c1bb60e01b8484846040516024018084600381111561134b57fe5b60ff1681526020018381526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090509392505050565b6040805173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044808301919091528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1de45ad10000000000000000000000000000000000000000000000000000000017905292915050565b60408051808201909152600481527f57654fe400000000000000000000000000000000000000000000000000000000602082015290565b6040805173ffffffffffffffffffffffffffffffffffffffff83166024808301919091528251808303909101815260449091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fde16f1a000000000000000000000000000000000000000000000000000000000179052919050565b6040805173ffffffffffffffffffffffffffffffffffffffff83166024808301919091528251808303909101815260449091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fb65a25b900000000000000000000000000000000000000000000000000000000179052919050565b604080516024810184905260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe9f837710000000000000000000000000000000000000000000000000000000017905292915050565b6040805173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044808301919091528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f140a84db0000000000000000000000000000000000000000000000000000000017905292915050565b6000828211156116ab576116ab6107bd6002858561132b565b50900390565b60408051808201909152600481527f3ef081cc00000000000000000000000000000000000000000000000000000000602082015290565b81548183558181111561170c5760008381526020902061170c918101908301611711565b505050565b61093491905b8082111561172b5760008155600101611717565b509056fea265627a7a7231582076ed2811cd62e3d73b929871d57c0611c7b106d39b13ba7bd35bffd7b3eb802364736f6c634300050c0032" } } }, "compiler": { "name": "solc", - "version": "soljson-v0.5.12+commit.7709ece9.js", + "version": "0.5.12+commit.7709ece9", "settings": { "optimizer": { "enabled": true, diff --git a/packages/contract-wrappers-test/package.json b/packages/contract-wrappers-test/package.json index e48ecc9523..7c55d5aa47 100644 --- a/packages/contract-wrappers-test/package.json +++ b/packages/contract-wrappers-test/package.json @@ -33,15 +33,15 @@ "devDependencies": { "@0x/contract-wrappers": "^13.10.3", "@0x/contracts-test-utils": "^5.3.14", - "@0x/dev-utils": "^4.1.2", + "@0x/dev-utils": "^4.1.3", "@0x/migrations": "^6.5.3", "@0x/order-utils": "^10.4.9", - "@0x/subproviders": "^6.2.2", + "@0x/subproviders": "^6.2.3", "@0x/ts-doc-gen": "^0.0.28", "@0x/tslint-config": "^4.1.3", "@0x/types": "^3.3.1", "@0x/utils": "^6.1.1", - "@0x/web3-wrapper": "^7.2.10", + "@0x/web3-wrapper": "^7.3.0", "@types/nock": "^10.0.3", "chai": "^4.0.1", "dirty-chai": "^2.0.1", diff --git a/packages/contract-wrappers/CHANGELOG.json b/packages/contract-wrappers/CHANGELOG.json index 8849d658a1..0208f2c500 100644 --- a/packages/contract-wrappers/CHANGELOG.json +++ b/packages/contract-wrappers/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "version": "13.11.0", + "changes": [ + { + "note": "Regenerate wrappers", + "pr": 76 + } + ] + }, { "timestamp": 1607381756, "version": "13.10.3", diff --git a/packages/contract-wrappers/package.json b/packages/contract-wrappers/package.json index 32ad182632..bf45c6b604 100644 --- a/packages/contract-wrappers/package.json +++ b/packages/contract-wrappers/package.json @@ -56,12 +56,12 @@ }, "dependencies": { "@0x/assert": "^3.0.19", - "@0x/base-contract": "^6.2.13", + "@0x/base-contract": "^6.2.14", "@0x/contract-addresses": "^5.6.0", "@0x/json-schemas": "^5.3.4", "@0x/types": "^3.3.1", "@0x/utils": "^6.1.1", - "@0x/web3-wrapper": "^7.2.10", + "@0x/web3-wrapper": "^7.3.0", "ethereum-types": "^3.4.0", "ethers": "~4.0.4" }, diff --git a/packages/contract-wrappers/src/generated-wrappers/coordinator.ts b/packages/contract-wrappers/src/generated-wrappers/coordinator.ts index 2ea0b0b9b9..ffcc1d9bcb 100644 --- a/packages/contract-wrappers/src/generated-wrappers/coordinator.ts +++ b/packages/contract-wrappers/src/generated-wrappers/coordinator.ts @@ -42,7 +42,7 @@ export class CoordinatorContract extends BaseContract { * @ignore */ public static deployedBytecode = - '0x6080604052600436106100b15760003560e01c8063da4fe07411610069578063ee55b9681161004e578063ee55b9681461018a578063fb6961cc146101b7578063fdd059a5146101cc576100b1565b8063da4fe07414610162578063e1c7157814610175576100b1565b806389fab5b71161009a57806389fab5b714610109578063b2562b7a1461012b578063c26cfecd14610140576100b1565b80630f7d8e39146100b357806352813679146100e9575b005b3480156100bf57600080fd5b506100d36100ce3660046116c1565b6101ec565b6040516100e09190611a14565b60405180910390f35b3480156100f557600080fd5b506100b1610104366004611888565b610455565b34801561011557600080fd5b5061011e610482565b6040516100e09190611c40565b34801561013757600080fd5b5061011e6104bb565b34801561014c57600080fd5b506101556104f4565b6040516100e09190611ba1565b6100b1610170366004611888565b6104fa565b34801561018157600080fd5b506101556105e8565b34801561019657600080fd5b506101aa6101a5366004611706565b61060c565b6040516100e09190611a35565b3480156101c357600080fd5b50610155610ac0565b3480156101d857600080fd5b506101556101e7366004611774565b610ac6565b80516000908061020a5761020a61020560008686610ad9565b610b7e565b60008360018551038151811061021c57fe5b016020015160f81c90506008811061023d5761023d61020560018787610ad9565b60008160ff16600881111561024e57fe5b9050600081600881111561025e57fe5b14156102785761027361020560028888610ad9565b61043c565b600181600881111561028657fe5b141561029b5761027361020560038888610ad9565b60028160088111156102a957fe5b141561038557826042146102c6576102c661020560008888610ad9565b6000856000815181106102d557fe5b016020015160f81c905060006102f287600163ffffffff610b8616565b9050600061030788602163ffffffff610b8616565b90506001898484846040516000815260200160405260405161032c9493929190611bce565b6020604051602081039080840390855afa15801561034e573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00151975061044f9650505050505050565b600381600881111561039357fe5b141561043c57826042146103b0576103b061020560008888610ad9565b6000856000815181106103bf57fe5b016020015160f81c905060006103dc87600163ffffffff610b8616565b905060006103f188602163ffffffff610b8616565b905060018960405160200161040691906119e3565b604051602081830303815290604052805190602001208484846040516000815260200160405260405161032c9493929190611bce565b61044b61020560018888610ad9565b5050505b92915050565b6060610464856080015161060c565b80519091501561047b5761047b8582868686610bb0565b5050505050565b6040518060400160405280601781526020017f30782050726f746f636f6c20436f6f7264696e61746f7200000000000000000081525081565b6040518060400160405280600581526020017f332e302e3000000000000000000000000000000000000000000000000000000081525081565b60015481565b61050684848484610455565b6002546040517f2280c9100000000000000000000000000000000000000000000000000000000081526201000090910473ffffffffffffffffffffffffffffffffffffffff1690632280c9109034906105659088908790600401611c53565b6000604051808303818588803b15801561057e57600080fd5b505af1158015610592573d6000803e3d6000fd5b50505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526105d99190810190611741565b506105e2610d5d565b50505050565b7fa6511c04ca44625d50986f8c36bedc09366207a17b96e347094053a9f850716881565b60606000610620838263ffffffff610d7316565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167f9b44d5560000000000000000000000000000000000000000000000000000000014806106b357507fffffffff0000000000000000000000000000000000000000000000000000000081167fe14b58c400000000000000000000000000000000000000000000000000000000145b1561073c576106c06112e5565b83516106d690859060049063ffffffff610dbf16565b8060200190516106e991908101906117fe565b604080516001808252818301909252919250816020015b6107086112e5565b815260200190600190039081610700579050509250808360008151811061072b57fe5b602002602001018190525050610aba565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f9694a4020000000000000000000000000000000000000000000000000000000014806107cd57507fffffffff0000000000000000000000000000000000000000000000000000000081167f8ea8dfe400000000000000000000000000000000000000000000000000000000145b8061081957507fffffffff0000000000000000000000000000000000000000000000000000000081167fbeee2e1400000000000000000000000000000000000000000000000000000000145b8061086557507fffffffff0000000000000000000000000000000000000000000000000000000081167f78d29ac100000000000000000000000000000000000000000000000000000000145b806108b157507fffffffff0000000000000000000000000000000000000000000000000000000081167f8bc8efb300000000000000000000000000000000000000000000000000000000145b806108fd57507fffffffff0000000000000000000000000000000000000000000000000000000081167f369da09900000000000000000000000000000000000000000000000000000000145b8061094957507fffffffff0000000000000000000000000000000000000000000000000000000081167fa6c3bf3300000000000000000000000000000000000000000000000000000000145b1561097e57825161096490849060049063ffffffff610dbf16565b8060200190516109779190810190611635565b9150610aba565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f88ec79fb000000000000000000000000000000000000000000000000000000001480610a0f57507fffffffff0000000000000000000000000000000000000000000000000000000081167fb718e29200000000000000000000000000000000000000000000000000000000145b15610aba57610a1c6112e5565b610a246112e5565b8451610a3a90869060049063ffffffff610dbf16565b806020019051610a4d9190810190611831565b60408051600280825260608201909252929450909250816020015b610a706112e5565b815260200190600190039081610a685790505093508184600081518110610a9357fe5b60200260200101819052508084600181518110610aac57fe5b602002602001018190525050505b50919050565b60005481565b600061044f610ad483610e46565b610e99565b606063779c522360e01b848484604051602401610af893929190611c0e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290509392505050565b805160208201fd5b60008160200183511015610ba757610ba76102056005855185602001610ea7565b50016020015190565b3273ffffffffffffffffffffffffffffffffffffffff841614610bd957610bd961020584610ec6565b6000610be786600154610f65565b60408051600080825260208201909252845192935091905b818114610c9057610c0e6113ac565b60405180606001604052808973ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018881525090506000610c4c82610ac6565b90506000610c6d82898681518110610c6057fe5b60200260200101516101ec565b9050610c7f868263ffffffff610f7916565b95505060019092019150610bff9050565b50610ca1823263ffffffff610f7916565b875190925060005b818114610d5157600073ffffffffffffffffffffffffffffffffffffffff16898281518110610cd457fe5b60200260200101516060015173ffffffffffffffffffffffffffffffffffffffff161415610d0157610d49565b6000898281518110610d0f57fe5b60200260200101516040015190506000610d32828761101b90919063ffffffff16565b905080610d4657610d466102058884611053565b50505b600101610ca9565b50505050505050505050565b610d656110f5565b610d7157610d71611103565b565b60008160040183511015610d9457610d946102056003855185600401610ea7565b5001602001517fffffffff000000000000000000000000000000000000000000000000000000001690565b606081831115610dd857610dd861020560008585610ea7565b8351821115610df157610df16102056001848751610ea7565b8282036040519080825280601f01601f191660200182016040528015610e1e576020820181803883390190505b509050610e3f610e2d8261113c565b84610e378761113c565b018351611142565b9392505050565b604081810151825160209384015182519285019290922083517fa6511c04ca44625d50986f8c36bedc09366207a17b96e347094053a9f85071688152948501919091529183015260608201526080902090565b600061044f60005483611206565b6060632800659560e01b848484604051602401610af893929190611bec565b606063a458d7ff60e01b82604051602401610ee19190611a14565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050919050565b6000610e3f82610f7485611240565b611206565b815160405160609184906020808202808401820192910182851015610fa557610fa561020586856112c8565b82851115610fbf57610fb8858583611142565b8497508793505b60018201915060208101905080840192508294508188528460405286886001840381518110610fea57fe5b73ffffffffffffffffffffffffffffffffffffffff9092166020928302919091019091015250959695505050505050565b60006020835102602084018181018192505b8083101561044b5782518086141561104757600194508193505b5060208301925061102d565b606063d789b64060e01b8383604051602401611070929190611baa565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905092915050565b600254610100900460ff1690565b47801561113957604051339082156108fc029083906000818181858888f19350505050158015611137573d6000803e3d6000fd5b505b50565b60200190565b602081101561116c576001816020036101000a038019835116818551168082178652505050611201565b8282141561117957611201565b828211156111b35760208103905080820181840181515b828510156111ab578451865260209586019590940193611190565b905250611201565b60208103905080820181840183515b818612156111fc57825182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe092830192909101906111c2565b855250505b505050565b6040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b608081810151825160208085015160408087015160609788015186519685019690962082517fec69816980a3a3ca4554410e60253953e9ff375ba4536a98adfa15cc71541508815294850195909552908301919091529481019490945273ffffffffffffffffffffffffffffffffffffffff9091169183019190915260a082015260c0902090565b6060635fc8372260e01b8383604051602401611070929190611cc9565b604051806101c00160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001606081526020016060815260200160608152602001606081525090565b6040805160608082018352600080835260208301529181019190915290565b803561044f81611d8c565b805161044f81611d8c565b600082601f8301126113f1578081fd5b81356114046113ff82611cfe565b611cd7565b8181529150602080830190840160005b838110156114415761142c876020843589010161144b565b83526020928301929190910190600101611414565b5050505092915050565b600082601f83011261145b578081fd5b81356114696113ff82611d1e565b915080825283602082850101111561148057600080fd5b8060208401602084013760009082016020015292915050565b600082601f8301126114a9578081fd5b81516114b76113ff82611d1e565b91508082528360208285010111156114ce57600080fd5b6114df816020840160208601611d60565b5092915050565b60006101c08083850312156114f9578182fd5b61150281611cd7565b91505061150f83836113d6565b815261151e83602084016113d6565b602082015261153083604084016113d6565b604082015261154283606084016113d6565b60608201526080820151608082015260a082015160a082015260c082015160c082015260e082015160e08201526101008083015181830152506101208083015181830152506101408083015167ffffffffffffffff808211156115a457600080fd5b6115b086838701611499565b838501526101609250828501519150808211156115cc57600080fd5b6115d886838701611499565b838501526101809250828501519150808211156115f457600080fd5b61160086838701611499565b838501526101a092508285015191508082111561161c57600080fd5b5061162985828601611499565b82840152505092915050565b60006020808385031215611647578182fd5b825167ffffffffffffffff81111561165d578283fd5b80840185601f82011261166e578384fd5b8051915061167e6113ff83611cfe565b82815283810190828501865b858110156116b3576116a18a8884518801016114e6565b8452928601929086019060010161168a565b509098975050505050505050565b600080604083850312156116d3578081fd5b82359150602083013567ffffffffffffffff8111156116f0578182fd5b6116fc8582860161144b565b9150509250929050565b600060208284031215611717578081fd5b813567ffffffffffffffff81111561172d578182fd5b6117398482850161144b565b949350505050565b600060208284031215611752578081fd5b815167ffffffffffffffff811115611768578182fd5b61173984828501611499565b600060208284031215611785578081fd5b813567ffffffffffffffff8082111561179c578283fd5b818401606081870312156117ae578384fd5b6117b86060611cd7565b925080356117c581611d8c565b8352602081810135908401526040810135828111156117e2578485fd5b6117ee8782840161144b565b6040850152509195945050505050565b60006020828403121561180f578081fd5b815167ffffffffffffffff811115611825578182fd5b611739848285016114e6565b60008060408385031215611843578182fd5b825167ffffffffffffffff8082111561185a578384fd5b611866868387016114e6565b9350602085015191508082111561187b578283fd5b506116fc858286016114e6565b6000806000806080858703121561189d578182fd5b843567ffffffffffffffff808211156118b4578384fd5b81870160a0818a0312156118c6578485fd5b6118d060a0611cd7565b92508035835260208101356020840152604081013560408401526118f789606083016113cb565b606084015260808101358281111561190d578586fd5b6119198a82840161144b565b6080850152505081955061193088602089016113cb565b94506040870135915080821115611945578384fd5b6119518883890161144b565b93506060870135915080821115611966578283fd5b50611973878288016113e1565b91505092959194509250565b73ffffffffffffffffffffffffffffffffffffffff169052565b600081518084526119b1816020860160208601611d60565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c810191909152603c0190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6000602080830181845280855180835260408601915060408482028701019250838701855b82811015611b94577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845281516101c0611a9987835161197f565b87820151611aa98989018261197f565b506040820151611abc604089018261197f565b506060820151611acf606089018261197f565b506080820151608088015260a082015160a088015260c082015160c088015260e082015160e08801526101008083015181890152506101208083015181890152506101408083015182828a0152611b28838a0182611999565b915050610160915081830151888203838a0152611b458282611999565b9250505061018080830151888303828a0152611b618382611999565b9150506101a0915081830151888203838a0152611b7e8282611999565b9850505094870194505090850190600101611a5a565b5092979650505050505050565b90815260200190565b91825273ffffffffffffffffffffffffffffffffffffffff16602082015260400190565b93845260ff9290921660208401526040830152606082015260800190565b6060810160088510611bfa57fe5b938152602081019290925260409091015290565b600060048510611c1a57fe5b84825283602083015260606040830152611c376060830184611999565b95945050505050565b600060208252610e3f6020830184611999565b60006040825283516040830152602084015160608301526040840151608083015273ffffffffffffffffffffffffffffffffffffffff60608501511660a0830152608084015160a060c0840152611cad60e0840182611999565b8381036020850152611cbf8186611999565b9695505050505050565b918252602082015260400190565b60405181810167ffffffffffffffff81118282101715611cf657600080fd5b604052919050565b600067ffffffffffffffff821115611d14578081fd5b5060209081020190565b600067ffffffffffffffff821115611d34578081fd5b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b83811015611d7b578181015183820152602001611d63565b838111156105e25750506000910152565b73ffffffffffffffffffffffffffffffffffffffff8116811461113957600080fd5b8351602094850120835193850193909320604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815295860194909452928401929092526060830152608082015260a090209056fea365627a7a72315820353fada6a7d942697f3b4ca6576b433bad3cc0e8814b93adb94bd3e1d3df52df6c6578706572696d656e74616cf564736f6c63430005110040'; + '0x6080604052600436106100b15760003560e01c8063da4fe07411610069578063ee55b9681161004e578063ee55b9681461018a578063fb6961cc146101b7578063fdd059a5146101cc576100b1565b8063da4fe07414610162578063e1c7157814610175576100b1565b806389fab5b71161009a57806389fab5b714610109578063b2562b7a1461012b578063c26cfecd14610140576100b1565b80630f7d8e39146100b357806352813679146100e9575b005b3480156100bf57600080fd5b506100d36100ce3660046116c1565b6101ec565b6040516100e09190611a14565b60405180910390f35b3480156100f557600080fd5b506100b1610104366004611888565b610455565b34801561011557600080fd5b5061011e610482565b6040516100e09190611c40565b34801561013757600080fd5b5061011e6104bb565b34801561014c57600080fd5b506101556104f4565b6040516100e09190611ba1565b6100b1610170366004611888565b6104fa565b34801561018157600080fd5b506101556105e8565b34801561019657600080fd5b506101aa6101a5366004611706565b61060c565b6040516100e09190611a35565b3480156101c357600080fd5b50610155610ac0565b3480156101d857600080fd5b506101556101e7366004611774565b610ac6565b80516000908061020a5761020a61020560008686610ad9565b610b7e565b60008360018551038151811061021c57fe5b016020015160f81c90506008811061023d5761023d61020560018787610ad9565b60008160ff16600881111561024e57fe5b9050600081600881111561025e57fe5b14156102785761027361020560028888610ad9565b61043c565b600181600881111561028657fe5b141561029b5761027361020560038888610ad9565b60028160088111156102a957fe5b141561038557826042146102c6576102c661020560008888610ad9565b6000856000815181106102d557fe5b016020015160f81c905060006102f287600163ffffffff610b8616565b9050600061030788602163ffffffff610b8616565b90506001898484846040516000815260200160405260405161032c9493929190611bce565b6020604051602081039080840390855afa15801561034e573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00151975061044f9650505050505050565b600381600881111561039357fe5b141561043c57826042146103b0576103b061020560008888610ad9565b6000856000815181106103bf57fe5b016020015160f81c905060006103dc87600163ffffffff610b8616565b905060006103f188602163ffffffff610b8616565b905060018960405160200161040691906119e3565b604051602081830303815290604052805190602001208484846040516000815260200160405260405161032c9493929190611bce565b61044b61020560018888610ad9565b5050505b92915050565b6060610464856080015161060c565b80519091501561047b5761047b8582868686610bb0565b5050505050565b6040518060400160405280601781526020017f30782050726f746f636f6c20436f6f7264696e61746f7200000000000000000081525081565b6040518060400160405280600581526020017f332e302e3000000000000000000000000000000000000000000000000000000081525081565b60015481565b61050684848484610455565b6002546040517f2280c9100000000000000000000000000000000000000000000000000000000081526201000090910473ffffffffffffffffffffffffffffffffffffffff1690632280c9109034906105659088908790600401611c53565b6000604051808303818588803b15801561057e57600080fd5b505af1158015610592573d6000803e3d6000fd5b50505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526105d99190810190611741565b506105e2610d5d565b50505050565b7fa6511c04ca44625d50986f8c36bedc09366207a17b96e347094053a9f850716881565b60606000610620838263ffffffff610d7316565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167f9b44d5560000000000000000000000000000000000000000000000000000000014806106b357507fffffffff0000000000000000000000000000000000000000000000000000000081167fe14b58c400000000000000000000000000000000000000000000000000000000145b1561073c576106c06112e5565b83516106d690859060049063ffffffff610dbf16565b8060200190516106e991908101906117fe565b604080516001808252818301909252919250816020015b6107086112e5565b815260200190600190039081610700579050509250808360008151811061072b57fe5b602002602001018190525050610aba565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f9694a4020000000000000000000000000000000000000000000000000000000014806107cd57507fffffffff0000000000000000000000000000000000000000000000000000000081167f8ea8dfe400000000000000000000000000000000000000000000000000000000145b8061081957507fffffffff0000000000000000000000000000000000000000000000000000000081167fbeee2e1400000000000000000000000000000000000000000000000000000000145b8061086557507fffffffff0000000000000000000000000000000000000000000000000000000081167f78d29ac100000000000000000000000000000000000000000000000000000000145b806108b157507fffffffff0000000000000000000000000000000000000000000000000000000081167f8bc8efb300000000000000000000000000000000000000000000000000000000145b806108fd57507fffffffff0000000000000000000000000000000000000000000000000000000081167f369da09900000000000000000000000000000000000000000000000000000000145b8061094957507fffffffff0000000000000000000000000000000000000000000000000000000081167fa6c3bf3300000000000000000000000000000000000000000000000000000000145b1561097e57825161096490849060049063ffffffff610dbf16565b8060200190516109779190810190611635565b9150610aba565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f88ec79fb000000000000000000000000000000000000000000000000000000001480610a0f57507fffffffff0000000000000000000000000000000000000000000000000000000081167fb718e29200000000000000000000000000000000000000000000000000000000145b15610aba57610a1c6112e5565b610a246112e5565b8451610a3a90869060049063ffffffff610dbf16565b806020019051610a4d9190810190611831565b60408051600280825260608201909252929450909250816020015b610a706112e5565b815260200190600190039081610a685790505093508184600081518110610a9357fe5b60200260200101819052508084600181518110610aac57fe5b602002602001018190525050505b50919050565b60005481565b600061044f610ad483610e46565b610e99565b606063779c522360e01b848484604051602401610af893929190611c0e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290509392505050565b805160208201fd5b60008160200183511015610ba757610ba76102056005855185602001610ea7565b50016020015190565b3273ffffffffffffffffffffffffffffffffffffffff841614610bd957610bd961020584610ec6565b6000610be786600154610f65565b60408051600080825260208201909252845192935091905b818114610c9057610c0e6113ac565b60405180606001604052808973ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018881525090506000610c4c82610ac6565b90506000610c6d82898681518110610c6057fe5b60200260200101516101ec565b9050610c7f868263ffffffff610f7916565b95505060019092019150610bff9050565b50610ca1823263ffffffff610f7916565b875190925060005b818114610d5157600073ffffffffffffffffffffffffffffffffffffffff16898281518110610cd457fe5b60200260200101516060015173ffffffffffffffffffffffffffffffffffffffff161415610d0157610d49565b6000898281518110610d0f57fe5b60200260200101516040015190506000610d32828761101b90919063ffffffff16565b905080610d4657610d466102058884611053565b50505b600101610ca9565b50505050505050505050565b610d656110f5565b610d7157610d71611103565b565b60008160040183511015610d9457610d946102056003855185600401610ea7565b5001602001517fffffffff000000000000000000000000000000000000000000000000000000001690565b606081831115610dd857610dd861020560008585610ea7565b8351821115610df157610df16102056001848751610ea7565b8282036040519080825280601f01601f191660200182016040528015610e1e576020820181803883390190505b509050610e3f610e2d8261113c565b84610e378761113c565b018351611142565b9392505050565b604081810151825160209384015182519285019290922083517fa6511c04ca44625d50986f8c36bedc09366207a17b96e347094053a9f85071688152948501919091529183015260608201526080902090565b600061044f60005483611206565b6060632800659560e01b848484604051602401610af893929190611bec565b606063a458d7ff60e01b82604051602401610ee19190611a14565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050919050565b6000610e3f82610f7485611240565b611206565b815160405160609184906020808202808401820192910182851015610fa557610fa561020586856112c8565b82851115610fbf57610fb8858583611142565b8497508793505b60018201915060208101905080840192508294508188528460405286886001840381518110610fea57fe5b73ffffffffffffffffffffffffffffffffffffffff9092166020928302919091019091015250959695505050505050565b60006020835102602084018181018192505b8083101561044b5782518086141561104757600194508193505b5060208301925061102d565b606063d789b64060e01b8383604051602401611070929190611baa565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905092915050565b600254610100900460ff1690565b47801561113957604051339082156108fc029083906000818181858888f19350505050158015611137573d6000803e3d6000fd5b505b50565b60200190565b602081101561116c576001816020036101000a038019835116818551168082178652505050611201565b8282141561117957611201565b828211156111b35760208103905080820181840181515b828510156111ab578451865260209586019590940193611190565b905250611201565b60208103905080820181840183515b818612156111fc57825182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe092830192909101906111c2565b855250505b505050565b6040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b608081810151825160208085015160408087015160609788015186519685019690962082517fec69816980a3a3ca4554410e60253953e9ff375ba4536a98adfa15cc71541508815294850195909552908301919091529481019490945273ffffffffffffffffffffffffffffffffffffffff9091169183019190915260a082015260c0902090565b6060635fc8372260e01b8383604051602401611070929190611cc9565b604051806101c00160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001606081526020016060815260200160608152602001606081525090565b6040805160608082018352600080835260208301529181019190915290565b803561044f81611d8c565b805161044f81611d8c565b600082601f8301126113f1578081fd5b81356114046113ff82611cfe565b611cd7565b8181529150602080830190840160005b838110156114415761142c876020843589010161144b565b83526020928301929190910190600101611414565b5050505092915050565b600082601f83011261145b578081fd5b81356114696113ff82611d1e565b915080825283602082850101111561148057600080fd5b8060208401602084013760009082016020015292915050565b600082601f8301126114a9578081fd5b81516114b76113ff82611d1e565b91508082528360208285010111156114ce57600080fd5b6114df816020840160208601611d60565b5092915050565b60006101c08083850312156114f9578182fd5b61150281611cd7565b91505061150f83836113d6565b815261151e83602084016113d6565b602082015261153083604084016113d6565b604082015261154283606084016113d6565b60608201526080820151608082015260a082015160a082015260c082015160c082015260e082015160e08201526101008083015181830152506101208083015181830152506101408083015167ffffffffffffffff808211156115a457600080fd5b6115b086838701611499565b838501526101609250828501519150808211156115cc57600080fd5b6115d886838701611499565b838501526101809250828501519150808211156115f457600080fd5b61160086838701611499565b838501526101a092508285015191508082111561161c57600080fd5b5061162985828601611499565b82840152505092915050565b60006020808385031215611647578182fd5b825167ffffffffffffffff81111561165d578283fd5b80840185601f82011261166e578384fd5b8051915061167e6113ff83611cfe565b82815283810190828501865b858110156116b3576116a18a8884518801016114e6565b8452928601929086019060010161168a565b509098975050505050505050565b600080604083850312156116d3578081fd5b82359150602083013567ffffffffffffffff8111156116f0578182fd5b6116fc8582860161144b565b9150509250929050565b600060208284031215611717578081fd5b813567ffffffffffffffff81111561172d578182fd5b6117398482850161144b565b949350505050565b600060208284031215611752578081fd5b815167ffffffffffffffff811115611768578182fd5b61173984828501611499565b600060208284031215611785578081fd5b813567ffffffffffffffff8082111561179c578283fd5b818401606081870312156117ae578384fd5b6117b86060611cd7565b925080356117c581611d8c565b8352602081810135908401526040810135828111156117e2578485fd5b6117ee8782840161144b565b6040850152509195945050505050565b60006020828403121561180f578081fd5b815167ffffffffffffffff811115611825578182fd5b611739848285016114e6565b60008060408385031215611843578182fd5b825167ffffffffffffffff8082111561185a578384fd5b611866868387016114e6565b9350602085015191508082111561187b578283fd5b506116fc858286016114e6565b6000806000806080858703121561189d578182fd5b843567ffffffffffffffff808211156118b4578384fd5b81870160a0818a0312156118c6578485fd5b6118d060a0611cd7565b92508035835260208101356020840152604081013560408401526118f789606083016113cb565b606084015260808101358281111561190d578586fd5b6119198a82840161144b565b6080850152505081955061193088602089016113cb565b94506040870135915080821115611945578384fd5b6119518883890161144b565b93506060870135915080821115611966578283fd5b50611973878288016113e1565b91505092959194509250565b73ffffffffffffffffffffffffffffffffffffffff169052565b600081518084526119b1816020860160208601611d60565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c810191909152603c0190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6000602080830181845280855180835260408601915060408482028701019250838701855b82811015611b94577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845281516101c0611a9987835161197f565b87820151611aa98989018261197f565b506040820151611abc604089018261197f565b506060820151611acf606089018261197f565b506080820151608088015260a082015160a088015260c082015160c088015260e082015160e08801526101008083015181890152506101208083015181890152506101408083015182828a0152611b28838a0182611999565b915050610160915081830151888203838a0152611b458282611999565b9250505061018080830151888303828a0152611b618382611999565b9150506101a0915081830151888203838a0152611b7e8282611999565b9850505094870194505090850190600101611a5a565b5092979650505050505050565b90815260200190565b91825273ffffffffffffffffffffffffffffffffffffffff16602082015260400190565b93845260ff9290921660208401526040830152606082015260800190565b6060810160088510611bfa57fe5b938152602081019290925260409091015290565b600060048510611c1a57fe5b84825283602083015260606040830152611c376060830184611999565b95945050505050565b600060208252610e3f6020830184611999565b60006040825283516040830152602084015160608301526040840151608083015273ffffffffffffffffffffffffffffffffffffffff60608501511660a0830152608084015160a060c0840152611cad60e0840182611999565b8381036020850152611cbf8186611999565b9695505050505050565b918252602082015260400190565b60405181810167ffffffffffffffff81118282101715611cf657600080fd5b604052919050565b600067ffffffffffffffff821115611d14578081fd5b5060209081020190565b600067ffffffffffffffff821115611d34578081fd5b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b83811015611d7b578181015183820152602001611d63565b838111156105e25750506000910152565b73ffffffffffffffffffffffffffffffffffffffff8116811461113957600080fd5b8351602094850120835193850193909320604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815295860194909452928401929092526060830152608082015260a090209056fea365627a7a7231582007e5f7bd880cb0d15a4c34ad2fa0c2f83e1dd1cd069daf9b35a429946bbcc3226c6578706572696d656e74616cf564736f6c63430005110040'; public static contractName = 'Coordinator'; private readonly _methodABIIndex: { [name: string]: number } = {}; public static async deployFrom0xArtifactAsync( diff --git a/packages/contract-wrappers/src/generated-wrappers/dev_utils.ts b/packages/contract-wrappers/src/generated-wrappers/dev_utils.ts index 108d4db5f8..87cbc7a983 100644 --- a/packages/contract-wrappers/src/generated-wrappers/dev_utils.ts +++ b/packages/contract-wrappers/src/generated-wrappers/dev_utils.ts @@ -42,7 +42,7 @@ export class DevUtilsContract extends BaseContract { * @ignore */ public static deployedBytecode = - '0x608060405234801561001057600080fd5b50600436106102775760003560e01c8063a5cd62ba11610160578063d186037f116100d8578063e4e6e7da1161008c578063ee18599711610071578063ee185997146105d8578063ef3bb097146105e0578063ff84e7cc146105e857610277565b8063e4e6e7da14610595578063e77286eb146105b657610277565b8063d3d862d1116100bd578063d3d862d114610540578063d469502814610553578063e25cabf71461057357610277565b8063d186037f1461051a578063d36379051461052d57610277565b8063bbb2dcf61161012f578063c82037ef11610114578063c82037ef146104dc578063ca49f47c146104e4578063d001c5dc1461050757610277565b8063bbb2dcf6146104b2578063c26cfecd146104d457610277565b8063a5cd62ba14610464578063a6627e9f14610484578063a7530f1214610497578063b43cffe11461049f57610277565b80637982653e116101f35780639baf2705116101c25780639eadc835116101a75780639eadc8351461041a578063a070cac81461043e578063a0901e511461045157610277565b80639baf2705146103fd5780639cd016051461041257610277565b80637982653e1461039657806379c9c426146103b65780637d727512146103c95780638f4ce479146103dc57610277565b80634dfdac201161024a57806363eb39921161022f57806363eb39921461033d5780636f83188e14610350578063750bdb301461037357610277565b80634dfdac20146102fd578063590aa8751461031d57610277565b806304a5618a1461027c5780630d7b7d76146102a75780632322cf76146102c857806346eb65cb146102e8575b600080fd5b61028f61028a366004614168565b6105f0565b60405161029e93929190614d64565b60405180910390f35b6102ba6102b5366004613c2c565b610689565b60405161029e929190614f6d565b6102db6102d6366004613c2c565b6106ab565b60405161029e9190614c41565b6102fb6102f6366004614168565b6106d3565b005b61031061030b366004613b47565b610757565b60405161029e9190614b99565b61033061032b366004613b2b565b6107da565b60405161029e9190614dc4565b61033061034b366004613c70565b610889565b61036361035e366004614168565b61093c565b60405161029e9493929190614e59565b610386610381366004614168565b6109dc565b60405161029e9493929190614c82565b6103a96103a43660046144b3565b610a6e565b60405161029e9190614e45565b6102db6103c43660046145bb565b610b20565b6102db6103d7366004613c2c565b610ba1565b6103ef6103ea366004614168565b611497565b60405161029e929190614c5f565b61040561152a565b60405161029e91906148c4565b610405611539565b61042d610428366004614168565b611548565b60405161029e959493929190614cbe565b6102db61044c366004614562565b6115ed565b61031061045f366004613cf2565b61166e565b610477610472366004613dc0565b6116e7565b60405161029e9190614aad565b610330610492366004613cc7565b6117a1565b610405611851565b6103306104ad366004613b95565b611860565b6104c56104c0366004614168565b611916565b60405161029e93929190614d8f565b6102db6119a6565b6104056119ac565b6104f76104f2366004614168565b6119bb565b60405161029e9493929190614d21565b610310610515366004613b47565b611a4d565b6102db610528366004613c2c565b611abb565b6103a961053b3660046144b3565b612446565b61033061054e366004613e9b565b6124a8565b610566610561366004614168565b6124fd565b60405161029e9190614c4a565b610586610581366004613e44565b6125a0565b60405161029e93929190614afa565b6105a86105a3366004613b47565b6126d8565b60405161029e929190614c1c565b6105c96105c436600461450b565b6126f1565b60405161029e93929190614ee6565b610405612960565b61040561296f565b61040561297e565b600080600073__$af40232205bf188fa8dd573e0f47eaeabc$__6304a5618a856040518263ffffffff1660e01b815260040161062c9190614dc4565b60606040518083038186803b15801561064457600080fd5b505af4158015610658573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061067c91908101906140be565b9250925092509193909250565b6000806106968484610ba1565b91506106a28484611abb565b90509250929050565b60008060006106ba8585610689565b915091506106c8828261298d565b925050505b92915050565b6040517f46eb65cb00000000000000000000000000000000000000000000000000000000815273__$af40232205bf188fa8dd573e0f47eaeabc$__906346eb65cb90610723908490600401614dc4565b60006040518083038186803b15801561073b57600080fd5b505af415801561074f573d6000803e3d6000fd5b505050505b50565b606060008251905080604051908082528060200260200182016040528015610789578160200160208202803883390190505b50915060005b8181146107d2576107b3858583815181106107a657fe5b6020026020010151611abb565b8382815181106107bf57fe5b602090810291909101015260010161078f565b505092915050565b6040517f590aa87500000000000000000000000000000000000000000000000000000000815260609073__$af40232205bf188fa8dd573e0f47eaeabc$__9063590aa8759061082d9085906004016148c4565b60006040518083038186803b15801561084557600080fd5b505af4158015610859573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610881919081019061419b565b90505b919050565b6040517f63eb399200000000000000000000000000000000000000000000000000000000815260609073__$af40232205bf188fa8dd573e0f47eaeabc$__906363eb3992906108e090879087908790600401614a2d565b60006040518083038186803b1580156108f857600080fd5b505af415801561090c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610934919081019061419b565b949350505050565b60608060608073__$d80c8447db5aca01fdd367a509db3f8167$__636f83188e866040518263ffffffff1660e01b81526004016109799190614dc4565b60006040518083038186803b15801561099157600080fd5b505af41580156109a5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109cd9190810190614209565b93509350935093509193509193565b6000806000606073__$af40232205bf188fa8dd573e0f47eaeabc$__63750bdb30866040518263ffffffff1660e01b8152600401610a1a9190614dc4565b60006040518083038186803b158015610a3257600080fd5b505af4158015610a46573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109cd9190810190613f42565b600080546040517f9caa023b00000000000000000000000000000000000000000000000000000000815273__$51238773fd6195a8a6f152a329b1854152$__91639caa023b91610ad0916001600160a01b031690889088908890600401614a5f565b60206040518083038186803b158015610ae857600080fd5b505af4158015610afc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061093491908101906141ea565b600061093484610b9c6040518060400160405280600b81526020017f30782050726f746f636f6c0000000000000000000000000000000000000000008152506040518060400160405280600581526020017f332e302e3000000000000000000000000000000000000000000000000000000081525087876129a3565b6129fa565b600080610bb4838263ffffffff612a0e16565b90506001600160e01b031981167ff47261b0000000000000000000000000000000000000000000000000000000001415610c0f576000610bfb84601063ffffffff612a4716565b9050610c078186612a7a565b925050611490565b6001600160e01b031981167f02571792000000000000000000000000000000000000000000000000000000001415610e285760008073__$af40232205bf188fa8dd573e0f47eaeabc$__6304a5618a866040518263ffffffff1660e01b8152600401610c7b9190614dc4565b60606040518083038186803b158015610c9357600080fd5b505af4158015610ca7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ccb91908101906140be565b6040519194509250606091507f6352211e0000000000000000000000000000000000000000000000000000000090610d07908490602401614c41565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050905060006060846001600160a01b031683604051610d8291906148a8565b600060405180830381855afa9150503d8060008114610dbd576040519150601f19603f3d011682016040523d82523d6000602084013e610dc2565b606091505b50915091506000828015610dd7575081516020145b610de2576000610df3565b610df382600c63ffffffff612a4716565b9050896001600160a01b0316816001600160a01b031614610e15576000610e18565b60015b60ff169750505050505050611490565b6001600160e01b031981167fa7cb5fb70000000000000000000000000000000000000000000000000000000014156110c457600060608073__$af40232205bf188fa8dd573e0f47eaeabc$__639eadc835876040518263ffffffff1660e01b8152600401610e969190614dc4565b60006040518083038186803b158015610eae57600080fd5b505af4158015610ec2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610eea9190810190613fac565b5081519296509094509250905060005b8181146110ba57828181518110610f0d57fe5b602002602001015160001415610f22576110b2565b83516060907efdd58e00000000000000000000000000000000000000000000000000000000908b90879085908110610f5657fe5b6020026020010151604051602401610f6f929190614a94565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050905060006060876001600160a01b031683604051610fea91906148a8565b600060405180830381855afa9150503d8060008114611025576040519150601f19603f3d011682016040523d82523d6000602084013e61102a565b606091505b5091509150600082801561103f575081516020145b61104a57600061105b565b61105b82600063ffffffff612b7216565b9050600087868151811061106b57fe5b6020026020010151828161107b57fe5b049050806110975760009b5050505050505050505050506106cd565b8b8110806110a357508b155b156110ac57809b505b50505050505b600101610efa565b5050505050611490565b6001600160e01b031981167fc339d10a0000000000000000000000000000000000000000000000000000000014156111f7576040516060907fa85e59e4000000000000000000000000000000000000000000000000000000009061113390869060009081908190602401614dd7565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166001600160e01b03199094169390931790925260045491519092506000916001600160a01b03169061119a9084906148a8565b600060405180830381855afa9150503d80600081146111d5576040519150601f19603f3d011682016040523d82523d6000602084013e6111da565b606091505b50509050806111ea5760006111ee565b6000195b93505050611490565b6001600160e01b031981167fdc1600f30000000000000000000000000000000000000000000000000000000014156113205760008073__$af40232205bf188fa8dd573e0f47eaeabc$__63750bdb30866040518263ffffffff1660e01b81526004016112639190614dc4565b60006040518083038186803b15801561127b57600080fd5b505af415801561128f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112b79190810190613f42565b5092509250506112c5612b7e565b6001600160a01b0316826001600160a01b03161480156112f257506005546001600160a01b038281169116145b1561131957600061130a611304612b96565b88612a7a565b905061131581612bae565b9450505b5050611490565b6001600160e01b031981167f94cfcdd70000000000000000000000000000000000000000000000000000000014156114905760608073__$af40232205bf188fa8dd573e0f47eaeabc$__63bbb2dcf6866040518263ffffffff1660e01b815260040161138c9190614dc4565b60006040518083038186803b1580156113a457600080fd5b505af41580156113b8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113e091908101906140fe565b80519194509250905060005b81811461148b578381815181106113ff57fe5b60200260200101516000141561141457611483565b60006114338985848151811061142657fe5b6020026020010151610ba1565b9050600085838151811061144357fe5b6020026020010151828161145357fe5b0490508061146b5760009750505050505050506106cd565b87811080611477575087155b15611480578097505b50505b6001016113ec565b505050505b5092915050565b60008073__$af40232205bf188fa8dd573e0f47eaeabc$__638f4ce479846040518263ffffffff1660e01b81526004016114d19190614dc4565b604080518083038186803b1580156114e857600080fd5b505af41580156114fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506115209190810190613f0b565b915091505b915091565b6004546001600160a01b031681565b6000546001600160a01b031681565b600080606080606073__$af40232205bf188fa8dd573e0f47eaeabc$__639eadc835876040518263ffffffff1660e01b81526004016115879190614dc4565b60006040518083038186803b15801561159f57600080fd5b505af41580156115b3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115db9190810190613fac565b939a9299509097509550909350915050565b6000610934846116696040518060400160405280600b81526020017f30782050726f746f636f6c0000000000000000000000000000000000000000008152506040518060400160405280600581526020017f332e302e3000000000000000000000000000000000000000000000000000000081525087876129a3565b612dac565b606080825160405190808252806020026020018201604052801561169c578160200160208202803883390190505b50905060005b83518114611490578381815181106116b657fe5b60200260200101516001600160a01b0316318282815181106116d457fe5b60209081029190910101526001016116a2565b6000546040517f02cffc4500000000000000000000000000000000000000000000000000000000815260609173__$51238773fd6195a8a6f152a329b1854152$__916302cffc459161174d916001600160a01b0390911690889088908890600401614915565b60006040518083038186803b15801561176557600080fd5b505af4158015611779573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109349190810190613d25565b6040517fa6627e9f00000000000000000000000000000000000000000000000000000000815260609073__$af40232205bf188fa8dd573e0f47eaeabc$__9063a6627e9f906117f69086908690600401614a94565b60006040518083038186803b15801561180e57600080fd5b505af4158015611822573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261184a919081019061419b565b9392505050565b6006546001600160a01b031681565b6040517fb43cffe100000000000000000000000000000000000000000000000000000000815260609073__$af40232205bf188fa8dd573e0f47eaeabc$__9063b43cffe1906118b99088908890889088906004016149db565b60006040518083038186803b1580156118d157600080fd5b505af41580156118e5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261190d919081019061419b565b95945050505050565b600060608073__$af40232205bf188fa8dd573e0f47eaeabc$__63bbb2dcf6856040518263ffffffff1660e01b81526004016119529190614dc4565b60006040518083038186803b15801561196a57600080fd5b505af415801561197e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261067c91908101906140fe565b60075481565b6005546001600160a01b031681565b6000806060600073__$af40232205bf188fa8dd573e0f47eaeabc$__63ca49f47c866040518263ffffffff1660e01b81526004016119f99190614dc4565b60006040518083038186803b158015611a1157600080fd5b505af4158015611a25573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109cd9190810190614056565b606060008251905080604051908082528060200260200182016040528015611a7f578160200160208202803883390190505b50915060005b8181146107d257611a9c8585838151811061142657fe5b838281518110611aa857fe5b6020908102919091010152600101611a85565b600080611ace838263ffffffff612a0e16565b90506001600160e01b031981167f94cfcdd7000000000000000000000000000000000000000000000000000000001415611c395760608073__$af40232205bf188fa8dd573e0f47eaeabc$__63bbb2dcf6866040518263ffffffff1660e01b8152600401611b3c9190614dc4565b60006040518083038186803b158015611b5457600080fd5b505af4158015611b68573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611b9091908101906140fe565b80519194509250905060005b818114611c2e57838181518110611baf57fe5b602002602001015160001415611bc457611c26565b6000611bd6898584815181106107a657fe5b90506000858381518110611be657fe5b60200260200101518281611bf657fe5b04905080611c0e5760009750505050505050506106cd565b87811080611c1a575087155b15611c23578097505b50505b600101611b9c565b506106cd9350505050565b6001600160e01b031981167ff47261b0000000000000000000000000000000000000000000000000000000001415611c9a576000611c7e84601063ffffffff612a4716565b600154909150610c0790829087906001600160a01b0316612dbb565b6001600160e01b031981167f02571792000000000000000000000000000000000000000000000000000000001415611fea5760008073__$af40232205bf188fa8dd573e0f47eaeabc$__6304a5618a866040518263ffffffff1660e01b8152600401611d069190614dc4565b60606040518083038186803b158015611d1e57600080fd5b505af4158015611d32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611d5691908101906140be565b600254604051929550909350606092507fe985e9c50000000000000000000000000000000000000000000000000000000091611da2918a916001600160a01b03909116906024016148d8565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050905060006060846001600160a01b031683604051611e1d91906148a8565b600060405180830381855afa9150503d8060008114611e58576040519150601f19603f3d011682016040523d82523d6000602084013e611e5d565b606091505b5091509150811580611e7157508051602014155b80611e8d5750611e8881600063ffffffff612b7216565b600114155b15611fdb576040516060907f081812fc0000000000000000000000000000000000000000000000000000000090611ec8908790602401614c41565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050856001600160a01b031681604051611f3f91906148a8565b600060405180830381855afa9150503d8060008114611f7a576040519150601f19603f3d011682016040523d82523d6000602084013e611f7f565b606091505b509093509150828015611f93575081516020145b8015611fc257506002546001600160a01b0316611fb783600c63ffffffff612a4716565b6001600160a01b0316145b611fcd576000611fd0565b60015b60ff169750506110ba565b60001996505050505050611490565b6001600160e01b031981167fa7cb5fb7000000000000000000000000000000000000000000000000000000001415612211576040517f9eadc83500000000000000000000000000000000000000000000000000000000815260009073__$af40232205bf188fa8dd573e0f47eaeabc$__90639eadc8359061206f908790600401614dc4565b60006040518083038186803b15801561208757600080fd5b505af415801561209b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526120c39190810190613fac565b5050600354604051929450606093507fe985e9c5000000000000000000000000000000000000000000000000000000009261210d925089916001600160a01b0316906024016148d8565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050905060006060836001600160a01b03168360405161218891906148a8565b600060405180830381855afa9150503d80600081146121c3576040519150601f19603f3d011682016040523d82523d6000602084013e6121c8565b606091505b50915091508180156121db575080516020145b80156121f757506121f381600063ffffffff612b7216565b6001145b612202576000612206565b6000195b955050505050611490565b6001600160e01b031981167fc339d10a00000000000000000000000000000000000000000000000000000000141561224d576000199150611490565b6001600160e01b031981167fdc1600f30000000000000000000000000000000000000000000000000000000014156114905760008073__$af40232205bf188fa8dd573e0f47eaeabc$__63750bdb30866040518263ffffffff1660e01b81526004016122b99190614dc4565b60006040518083038186803b1580156122d157600080fd5b505af41580156122e5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261230d9190810190613f42565b50925092505061231b612b7e565b6001600160a01b0316826001600160a01b031614801561234857506005546001600160a01b038281169116145b1561239257600061236d61235a612b96565b60055489906001600160a01b0316612dbb565b905060001981146123865761238181612bae565b61238a565b6000195b94505061243d565b6006546001600160a01b038281169116141561243d5773__$8ab3d6b0b5fe290c724f8d6cfdac7eabfb$__630e70a03387836123cc612ec5565b6040518463ffffffff1660e01b81526004016123ea939291906148f2565b60206040518083038186803b15801561240257600080fd5b505af4158015612416573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061243a9190810190614673565b93505b50505092915050565b600080546040517f8dccde0400000000000000000000000000000000000000000000000000000000815273__$51238773fd6195a8a6f152a329b1854152$__91638dccde0491610ad0916001600160a01b031690889088908890600401614a5f565b6040517fd3d862d100000000000000000000000000000000000000000000000000000000815260609073__$af40232205bf188fa8dd573e0f47eaeabc$__9063d3d862d1906117f69086908690600401614bac565b6040517fd469502800000000000000000000000000000000000000000000000000000000815260009073__$af40232205bf188fa8dd573e0f47eaeabc$__9063d469502890612550908590600401614dc4565b60206040518083038186803b15801561256857600080fd5b505af415801561257c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108819190810190613ef0565b6060806060600085519050806040519080825280602002602001820160405280156125e557816020015b6125d26136a6565b8152602001906001900390816125ca5790505b50935080604051908082528060200260200182016040528015612612578160200160208202803883390190505b5092508060405190808252806020026020018201604052801561263f578160200160208202803883390190505b50915060005b8181146126cf5761267c87828151811061265b57fe5b602002602001015187838151811061266f57fe5b60200260200101516126f1565b875188908590811061268a57fe5b6020026020010187858151811061269d57fe5b602002602001018786815181106126b057fe5b9315156020948502919091019093019290925291905252600101612645565b50509250925092565b6060806126e58484611a4d565b91506106a28484610757565b6126f96136a6565b600080546040517f9d3fa4b900000000000000000000000000000000000000000000000000000000815282916001600160a01b031690639d3fa4b990612743908890600401614f0a565b60606040518083038186803b15801561275b57600080fd5b505afa15801561276f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612793919081019061446b565b85516000546040517fa12dcc6f00000000000000000000000000000000000000000000000000000000815292955090916001600160a01b039091169063a12dcc6f906127e59089908990600401614f48565b60206040518083038186803b1580156127fd57600080fd5b505afa158015612811573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506128359190810190613ed0565b9150600061284287612edd565b90506000612863886101800151896101400151612f0990919063ffffffff16565b1561289857612891826128878a60c001518b60800151612f2e90919063ffffffff16565b8a60a00151612f4a565b9050612905565b60c08801516128b4576128918289608001518a60a00151612f4a565b60006128c5848a61018001516106ab565b905060006128dc848b608001518c60a00151612f4a565b905060006128f3838c60c001518d60a00151612f4a565b90506128ff828261298d565b93505050505b61292961292387604001518a60a00151612f6c90919063ffffffff16565b8261298d565b945061293488612f8b565b61293d57600094505b60038651600681111561294c57fe5b1461295657600094505b5050509250925092565b6001546001600160a01b031681565b6002546001600160a01b031681565b6003546001600160a01b031681565b600081831061299c578161184a565b5090919050565b8351602094850120835193850193909320604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815295860194909452928401929092526060830152608082015260a0902090565b600061184a82612a0985612ff2565b61306d565b60008160040183511015612a3457612a34612a2f60038551856004016130a7565b613116565b5001602001516001600160e01b03191690565b60008160140183511015612a6857612a68612a2f60048551856014016130a7565b5001601401516001600160a01b031690565b60405160009081906060906001600160a01b038616907f70a082310000000000000000000000000000000000000000000000000000000090612ac09087906024016148c4565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166001600160e01b0319909416939093179092529051612b1391906148a8565b600060405180830381855afa9150503d8060008114612b4e576040519150601f19603f3d011682016040523d82523d6000602084013e612b53565b606091505b5091509150818015612b66575080516020145b156107d2576106c88160005b600061184a838361311e565b736b175474e89094c44da98b954eedeac495271d0f90565b7306af07097c9eeb7fd685c692751d5c66db49c21590565b600080612bb9612b96565b6001600160a01b0316634ba2363a6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015612bf357600080fd5b505af1158015612c07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612c2b91908101906141ce565b90506000816001600160a01b03166320aba08b6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015612c6a57600080fd5b505af1158015612c7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612ca29190810190614673565b4211612d2057816001600160a01b031663c92aecc46040518163ffffffff1660e01b8152600401602060405180830381600087803b158015612ce357600080fd5b505af1158015612cf7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612d1b9190810190614673565b612d93565b816001600160a01b0316639f678cca6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015612d5b57600080fd5b505af1158015612d6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612d939190810190614673565b9050610934816b033b2e3c9fd0803ce800000086612f4a565b600061184a82612a0985613148565b60405160009081906060906001600160a01b038716907fdd62ed3e0000000000000000000000000000000000000000000000000000000090612e0390889088906024016148d8565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166001600160e01b0319909416939093179092529051612e5691906148a8565b600060405180830381855afa9150503d8060008114612e91576040519150601f19603f3d011682016040523d82523d6000602084013e612e96565b606091505b5091509150818015612ea9575080516020145b15612ebc57612eb9816000612b72565b92505b50509392505050565b731e0447b19bb6ecfdae1e4ae1694b0c3659614e4e90565b6000806000612eeb84613201565b91509150612ef9828261298d565b925061093483856080015161298d565b60008151835114801561184a5750508051602091820120825192909101919091201490565b60008282018381101561184a5761184a612a2f60008686613414565b600061093483612f60868563ffffffff61343316565b9063ffffffff61346416565b600082821115612f8557612f85612a2f60028585613414565b50900390565b6000612f9b82610140015161348e565b8015612fbc575060c08201511580612fbc5750612fbc82610180015161348e565b8015612fd15750612fd182610160015161348e565b8015610881575060e082015115806108815750610881826101a0015161348e565b608081810151825160208085015160408087015160609788015186519685019690962082517fec69816980a3a3ca4554410e60253953e9ff375ba4536a98adfa15cc7154150881529485019590955290830191909152948101949094526001600160a01b039091169183019190915260a082015260c0902090565b6040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b6060632800659560e01b8484846040516024016130c693929190614e37565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166001600160e01b03199093169290921790915290509392505050565b805160208201fd5b6000816020018351101561313f5761313f612a2f60058551856020016130a7565b50016020015190565b6101408101516101608201516101808301516101a08401516000937ff80322eb8376aafb64eadf8f0d7623f22130fd9491a221e902b713cb984a75349390929091602087101561319457fe5b601f1987018051610140890180516101608b0180516101808d0180516101a08f0180519d89528c5160209d8e012087528b519b8d019b909b2084528951998c01999099208152875197909a019690962088526101e085209390945290529190529252919091529050919050565b600080600483610140015151101561321e57506000905080611525565b610140830151600090613237908263ffffffff612a0e16565b90506001600160e01b031981167fdc1600f30000000000000000000000000000000000000000000000000000000014156133e4576101408401516040517f750bdb3000000000000000000000000000000000000000000000000000000000815260009173__$af40232205bf188fa8dd573e0f47eaeabc$__9163750bdb30916132c291600401614dc4565b60006040518083038186803b1580156132da57600080fd5b505af41580156132ee573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526133169190810190613f42565b506006549093506001600160a01b038085169116141591506133e290505773__$8ab3d6b0b5fe290c724f8d6cfdac7eabfb$__63d12a796086613357612ec5565b6040518363ffffffff1660e01b8152600401613374929190614f1d565b60206040518083038186803b15801561338c57600080fd5b505af41580156133a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506133c49190810190614673565b6133d78660000151876101400151611abb565b935093505050611525565b505b6133f78460000151856101400151610ba1565b61340a8560000151866101400151611abb565b9250925050915091565b606063e946c1bb60e01b8484846040516024016130c693929190614e15565b600082613442575060006106cd565b8282028284828161344f57fe5b041461184a5761184a612a2f60018686613414565b60008161347a5761347a612a2f60038585613414565b600082848161348557fe5b04949350505050565b6000602082518161349b57fe5b066004146134ab57506000610884565b60006134bd838263ffffffff612a0e16565b90506001600160e01b031981167f94cfcdd700000000000000000000000000000000000000000000000000000000146134fa576001915050610884565b6040517fbbb2dcf600000000000000000000000000000000000000000000000000000000815260609073__$af40232205bf188fa8dd573e0f47eaeabc$__9063bbb2dcf69061354d908790600401614dc4565b60006040518083038186803b15801561356557600080fd5b505af4158015613579573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135a191908101906140fe565b80519093509150600090505b8181146136375760006135dd60008584815181106135c757fe5b6020026020010151612a0e90919063ffffffff16565b90506001600160e01b031981167f0257179200000000000000000000000000000000000000000000000000000000141561362e5761361b8483613643565b1561362e57600095505050505050610884565b506001016135ad565b50600195945050505050565b8151600090600183015b818110156107d25761368e85828151811061366457fe5b602002602001015186868151811061367857fe5b6020026020010151612f0990919063ffffffff16565b1561369e576001925050506106cd565b60010161364d565b6040805160608101909152806000815260006020820181905260409091015290565b80356106cd81615016565b80516106cd81615016565b600082601f8301126136ee578081fd5b81356137016136fc82614fa2565b614f7b565b81815291506020808301908481018184028601820187101561372257600080fd5b60005b8481101561148b57813561373881615016565b84529282019290820190600101613725565b600082601f83011261375a578081fd5b81356137686136fc82614fa2565b8181529150602080830190840160005b838110156137a5576137908760208435890101613939565b83526020928301929190910190600101613778565b5050505092915050565b600082601f8301126137bf578081fd5b81516137cd6136fc82614fa2565b8181529150602080830190840160005b838110156137a5576137f58760208451890101613987565b835260209283019291909101906001016137dd565b600082601f83011261381a578081fd5b81356138286136fc82614fa2565b8181529150602080830190840160005b838110156137a55761385087602084358901016139dc565b83526020928301929190910190600101613838565b600082601f830112613875578081fd5b81356138836136fc82614fa2565b8181529150602080830190848101818402860182018710156138a457600080fd5b60005b8481101561148b578135845292820192908201906001016138a7565b600082601f8301126138d3578081fd5b81516138e16136fc82614fa2565b81815291506020808301908481018184028601820187101561390257600080fd5b60005b8481101561148b57815184529282019290820190600101613905565b80516001600160e01b0319811681146106cd57600080fd5b600082601f830112613949578081fd5b81356139576136fc82614fc2565b915080825283602082850101111561396e57600080fd5b8060208401602084013760009082016020015292915050565b600082601f830112613997578081fd5b81516139a56136fc82614fc2565b91508082528360208285010111156139bc57600080fd5b611490816020840160208601614fe6565b8051600581106106cd57600080fd5b60006101c08083850312156139ef578182fd5b6139f881614f7b565b915050613a0583836136c8565b8152613a1483602084016136c8565b6020820152613a2683604084016136c8565b6040820152613a3883606084016136c8565b60608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e08201526101008083013581830152506101208083013581830152506101408083013567ffffffffffffffff80821115613a9a57600080fd5b613aa686838701613939565b83850152610160925082850135915080821115613ac257600080fd5b613ace86838701613939565b83850152610180925082850135915080821115613aea57600080fd5b613af686838701613939565b838501526101a0925082850135915080821115613b1257600080fd5b50613b1f85828601613939565b82840152505092915050565b600060208284031215613b3c578081fd5b813561184a81615016565b60008060408385031215613b59578081fd5b8235613b6481615016565b9150602083013567ffffffffffffffff811115613b7f578182fd5b613b8b8582860161374a565b9150509250929050565b60008060008060808587031215613baa578182fd5b8435613bb581615016565b9350602085013567ffffffffffffffff80821115613bd1578384fd5b613bdd88838901613865565b94506040870135915080821115613bf2578384fd5b613bfe88838901613865565b93506060870135915080821115613c13578283fd5b50613c2087828801613939565b91505092959194509250565b60008060408385031215613c3e578182fd5b8235613c4981615016565b9150602083013567ffffffffffffffff811115613c64578182fd5b613b8b85828601613939565b600080600060608486031215613c84578081fd5b8335613c8f81615016565b9250602084013567ffffffffffffffff811115613caa578182fd5b613cb686828701613939565b925050604084013590509250925092565b60008060408385031215613cd9578182fd5b8235613ce481615016565b946020939093013593505050565b600060208284031215613d03578081fd5b813567ffffffffffffffff811115613d19578182fd5b610934848285016136de565b60006020808385031215613d37578182fd5b825167ffffffffffffffff811115613d4d578283fd5b80840185601f820112613d5e578384fd5b80519150613d6e6136fc83614fa2565b8281528381019082850185850284018601891015613d8a578687fd5b8693505b84841015613db457613da089826139cd565b835260019390930192918501918501613d8e565b50979650505050505050565b600080600060608486031215613dd4578081fd5b833567ffffffffffffffff80821115613deb578283fd5b613df78783880161380a565b94506020860135915080821115613e0c578283fd5b613e18878388016136de565b93506040860135915080821115613e2d578283fd5b50613e3a86828701613865565b9150509250925092565b60008060408385031215613e56578182fd5b823567ffffffffffffffff80821115613e6d578384fd5b613e798683870161380a565b93506020850135915080821115613e8e578283fd5b50613b8b8582860161374a565b60008060408385031215613ead578182fd5b823567ffffffffffffffff80821115613ec4578384fd5b613e7986838701613865565b600060208284031215613ee1578081fd5b8151801515811461184a578182fd5b600060208284031215613f01578081fd5b61184a8383613921565b60008060408385031215613f1d578182fd5b613f278484613921565b91506020830151613f3781615016565b809150509250929050565b60008060008060808587031215613f57578182fd5b8451613f628161502b565b6020860151909450613f7381615016565b6040860151909350613f8481615016565b606086015190925067ffffffffffffffff811115613fa0578182fd5b613c2087828801613987565b600080600080600060a08688031215613fc3578283fd5b613fcd8787613921565b94506020860151613fdd81615016565b604087015190945067ffffffffffffffff80821115613ffa578485fd5b61400689838a016138c3565b9450606088015191508082111561401b578283fd5b61402789838a016138c3565b9350608088015191508082111561403c578283fd5b5061404988828901613987565b9150509295509295909350565b6000806000806080858703121561406b578182fd5b6140758686613921565b9350602085015161408581615016565b604086015190935067ffffffffffffffff8111156140a1578283fd5b6140ad87828801613987565b606096909601519497939650505050565b6000806000606084860312156140d2578081fd5b6140dc8585613921565b925060208401516140ec81615016565b80925050604084015190509250925092565b600080600060608486031215614112578081fd5b835161411d8161502b565b602085015190935067ffffffffffffffff8082111561413a578283fd5b614146878388016138c3565b9350604086015191508082111561415b578283fd5b50613e3a868287016137af565b600060208284031215614179578081fd5b813567ffffffffffffffff81111561418f578182fd5b61093484828501613939565b6000602082840312156141ac578081fd5b815167ffffffffffffffff8111156141c2578182fd5b61093484828501613987565b6000602082840312156141df578081fd5b815161184a81615016565b6000602082840312156141fb578081fd5b81516005811061184a578182fd5b6000806000806080858703121561421e578182fd5b845167ffffffffffffffff811115614234578283fd5b61424087828801613987565b945050602085015167ffffffffffffffff81111561425c578283fd5b86601f828801011261426c578283fd5b8086015161427c6136fc82614fa2565b8181526020808201919089850101865b84811015614415578151868c01016101c0601f19828f030112156142ae578889fd5b6142b96101c0614f7b565b6142c68e602084016136d3565b81526142d58e604084016136d3565b60208201526142e78e606084016136d3565b60408201526142f98e608084016136d3565b606082015260a0820151608082015260c082015160a082015260e082015160c082015261010082015160e082015261012082015161010082015261014082015161012082015261016082015167ffffffffffffffff811115614359578a8bfd5b6143688f602083860101613987565b6101408301525061018082015167ffffffffffffffff811115614389578a8bfd5b6143988f602083860101613987565b610160830152506101a082015167ffffffffffffffff8111156143b9578a8bfd5b6143c88f602083860101613987565b610180830152506101c082015167ffffffffffffffff8111156143e9578a8bfd5b6143f88f602083860101613987565b6101a083015250855250602093840193919091019060010161428c565b505080965050505050604085015167ffffffffffffffff811115614437578283fd5b614443878288016138c3565b925050606085015167ffffffffffffffff81111561445f578182fd5b613c20878288016137af565b60006060828403121561447c578081fd5b6144866060614f7b565b825160078110614494578283fd5b8152602083810151908201526040928301519281019290925250919050565b6000806000606084860312156144c7578081fd5b833567ffffffffffffffff8111156144dd578182fd5b6144e9868287016139dc565b93505060208401356144fa81615016565b929592945050506040919091013590565b6000806040838503121561451d578182fd5b823567ffffffffffffffff80821115614534578384fd5b614540868387016139dc565b93506020850135915080821115614555578283fd5b50613b8b85828601613939565b600080600060608486031215614576578081fd5b833567ffffffffffffffff81111561458c578182fd5b614598868287016139dc565b9350506020840135915060408401356145b081615016565b809150509250925092565b6000806000606084860312156145cf578081fd5b833567ffffffffffffffff808211156145e6578283fd5b81860160a081890312156145f8578384fd5b61460260a0614f7b565b925080358352602081013560208401526040810135604084015261462988606083016136c8565b606084015260808101358281111561463f578485fd5b61464b89828401613939565b60808501525091945050506020840135915061466a85604086016136c8565b90509250925092565b600060208284031215614684578081fd5b5051919050565b6001600160a01b0316815260200190565b1515815260200190565b60006146b28383614784565b505060600190565b6001600160a01b03169052565b60008282518085526020808601955080818302840101818601855b8481101561471057601f198684030189526146fe838351614758565b988401989250908301906001016146e2565b5090979650505050505050565b6000815180845260208401935060208301825b8281101561474e578151865260209586019590910190600101614730565b5093949350505050565b60008151808452614770816020860160208601614fe6565b601f01601f19169290920160200192915050565b80516007811061479057fe5b825260208181015190830152604090810151910152565b60006101c06147b78484516146ba565b60208301516147c960208601826146ba565b5060408301516147dc60408601826146ba565b5060608301516147ef60608601826146ba565b506080830151608085015260a083015160a085015260c083015160c085015260e083015160e085015261010080840151818601525061012080840151818601525061014080840151828287015261484883870182614758565b915050610160915081840151858203838701526148658282614758565b9250505061018080840151858303828701526148818382614758565b9150506101a09150818401518582038387015261489e8282614758565b9695505050505050565b600082516148ba818460208701614fe6565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b0393841681529183166020830152909116604082015260600190565b6000608082016001600160a01b0387168352602060808185015281875161493c8185614c41565b91508193508281028201838a01865b838110156149755786830385526149638383516147a7565b9486019492509085019060010161494b565b50508681036040880152809450885192506149908382614c41565b94505050818701845b828110156149ba576149ac85835161468b565b945090830190600101614999565b5050505082810360608401526149d0818561471d565b979650505050505050565b60006001600160a01b0386168252608060208301526149fd608083018661471d565b8281036040840152614a0f818661471d565b8381036060850152614a218186614758565b98975050505050505050565b60006001600160a01b038516825260606020830152614a4f6060830185614758565b9050826040830152949350505050565b60006001600160a01b03808716835260806020840152614a8260808401876147a7565b94166040830152506060015292915050565b6001600160a01b03929092168252602082015260400190565b602080825282518282018190526000918401906040840190835b81811015614aef57835160058110614adb57fe5b835260209384019390920191600101614ac7565b509095945050505050565b60006060820160608352808651614b118184614c41565b9150602088019250835b81811015614b3f57614b2e8385516146a6565b602094909401939250600101614b1b565b50508381036020850152614b53818761471d565b9150508281036040840152808451614b6b8184614c41565b9150602086019250835b8181101561471057614b8883855161469c565b602094909401939250600101614b75565b60006020825261184a602083018461471d565b600060408252614bbf604083018561471d565b602083820381850152818551808452828401915082838202850101838801865b83811015614c0d57601f19878403018552614bfb838351614758565b94860194925090850190600101614bdf565b50909998505050505050505050565b600060408252614c2f604083018561471d565b828103602084015261190d818561471d565b90815260200190565b6001600160e01b031991909116815260200190565b6001600160e01b03199290921682526001600160a01b0316602082015260400190565b60006001600160e01b0319861682526001600160a01b0380861660208401528085166040840152506080606083015261489e6080830184614758565b60006001600160e01b0319871682526001600160a01b038616602083015260a06040830152614cf060a083018661471d565b8281036060840152614d02818661471d565b8381036080850152614d148186614758565b9998505050505050505050565b60006001600160e01b0319861682526001600160a01b038516602083015260806040830152614d536080830185614758565b905082606083015295945050505050565b6001600160e01b03199390931683526001600160a01b03919091166020830152604082015260600190565b60006001600160e01b03198516825260606020830152614db2606083018561471d565b828103604084015261489e81856146c7565b60006020825261184a6020830184614758565b600060808252614dea6080830187614758565b6001600160a01b03958616602084015293909416604082015260ff9190911660609091015292915050565b6060810160048510614e2357fe5b938152602081019290925260409091015290565b6060810160088510614e2357fe5b6020810160058310614e5357fe5b91905290565b600060808252614e6c6080830187614758565b602083820381850152818751808452828401915082838202850101838a01865b83811015614eba57601f19878403018552614ea88383516147a7565b94860194925090850190600101614e8c565b50508681036040880152614ece818a61471d565b94505050505082810360608401526149d081856146c7565b60a08101614ef48286614784565b8360608301528215156080830152949350505050565b60006020825261184a60208301846147a7565b600060408252614f3060408301856147a7565b90506001600160a01b03831660208301529392505050565b600060408252614f5b60408301856147a7565b828103602084015261190d8185614758565b918252602082015260400190565b60405181810167ffffffffffffffff81118282101715614f9a57600080fd5b604052919050565b600067ffffffffffffffff821115614fb8578081fd5b5060209081020190565b600067ffffffffffffffff821115614fd8578081fd5b50601f01601f191660200190565b60005b83811015615001578181015183820152602001614fe9565b83811115615010576000848401525b50505050565b6001600160a01b038116811461075457600080fd5b6001600160e01b03198116811461075457600080fdfea365627a7a7231582042d7fae961b1460c70c7ec8ff1688f8680c3323368dee844634a86b8a2f15fdb6c6578706572696d656e74616cf564736f6c63430005110040'; + '0x608060405234801561001057600080fd5b50600436106102775760003560e01c8063a5cd62ba11610160578063d186037f116100d8578063e4e6e7da1161008c578063ee18599711610071578063ee185997146105d8578063ef3bb097146105e0578063ff84e7cc146105e857610277565b8063e4e6e7da14610595578063e77286eb146105b657610277565b8063d3d862d1116100bd578063d3d862d114610540578063d469502814610553578063e25cabf71461057357610277565b8063d186037f1461051a578063d36379051461052d57610277565b8063bbb2dcf61161012f578063c82037ef11610114578063c82037ef146104dc578063ca49f47c146104e4578063d001c5dc1461050757610277565b8063bbb2dcf6146104b2578063c26cfecd146104d457610277565b8063a5cd62ba14610464578063a6627e9f14610484578063a7530f1214610497578063b43cffe11461049f57610277565b80637982653e116101f35780639baf2705116101c25780639eadc835116101a75780639eadc8351461041a578063a070cac81461043e578063a0901e511461045157610277565b80639baf2705146103fd5780639cd016051461041257610277565b80637982653e1461039657806379c9c426146103b65780637d727512146103c95780638f4ce479146103dc57610277565b80634dfdac201161024a57806363eb39921161022f57806363eb39921461033d5780636f83188e14610350578063750bdb301461037357610277565b80634dfdac20146102fd578063590aa8751461031d57610277565b806304a5618a1461027c5780630d7b7d76146102a75780632322cf76146102c857806346eb65cb146102e8575b600080fd5b61028f61028a3660046142ab565b6105f0565b60405161029e93929190614d24565b60405180910390f35b6102ba6102b5366004613d6f565b610689565b60405161029e929190614f2d565b6102db6102d6366004613d6f565b6106ab565b60405161029e9190614c01565b6102fb6102f63660046142ab565b6106d3565b005b61031061030b366004613c8a565b610757565b60405161029e9190614b59565b61033061032b366004613c6e565b6107da565b60405161029e9190614d84565b61033061034b366004613db3565b610889565b61036361035e3660046142ab565b61093c565b60405161029e9493929190614e19565b6103866103813660046142ab565b6109dc565b60405161029e9493929190614c42565b6103a96103a4366004614481565b610a6e565b60405161029e9190614e05565b6102db6103c4366004614589565b610b20565b6102db6103d7366004613d6f565b610ba1565b6103ef6103ea3660046142ab565b611497565b60405161029e929190614c1f565b61040561152a565b60405161029e9190614888565b610405611539565b61042d6104283660046142ab565b611548565b60405161029e959493929190614c7e565b6102db61044c366004614530565b6115ed565b61031061045f366004613e35565b61166e565b610477610472366004613f03565b6116e7565b60405161029e9190614a71565b610330610492366004613e0a565b6117a1565b610405611851565b6103306104ad366004613cd8565b611860565b6104c56104c03660046142ab565b611916565b60405161029e93929190614d4f565b6102db6119a6565b6104056119ac565b6104f76104f23660046142ab565b6119bb565b60405161029e9493929190614ce1565b610310610515366004613c8a565b611a4d565b6102db610528366004613d6f565b611abb565b6103a961053b366004614481565b612446565b61033061054e366004613fde565b6124a8565b6105666105613660046142ab565b6124fd565b60405161029e9190614c0a565b610586610581366004613f87565b6125a0565b60405161029e93929190614abe565b6105a86105a3366004613c8a565b6126d8565b60405161029e929190614bdc565b6105c96105c43660046144d9565b6126f1565b60405161029e93929190614ea6565b610405612960565b61040561296f565b61040561297e565b600080600073__$808f8f452496495931fd70b932e88106d9$__6304a5618a856040518263ffffffff1660e01b815260040161062c9190614d84565b60606040518083038186803b15801561064457600080fd5b505af4158015610658573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061067c9190810190614201565b9250925092509193909250565b6000806106968484610ba1565b91506106a28484611abb565b90509250929050565b60008060006106ba8585610689565b915091506106c8828261298d565b925050505b92915050565b6040517f46eb65cb00000000000000000000000000000000000000000000000000000000815273__$808f8f452496495931fd70b932e88106d9$__906346eb65cb90610723908490600401614d84565b60006040518083038186803b15801561073b57600080fd5b505af415801561074f573d6000803e3d6000fd5b505050505b50565b606060008251905080604051908082528060200260200182016040528015610789578160200160208202803883390190505b50915060005b8181146107d2576107b3858583815181106107a657fe5b6020026020010151611abb565b8382815181106107bf57fe5b602090810291909101015260010161078f565b505092915050565b6040517f590aa87500000000000000000000000000000000000000000000000000000000815260609073__$808f8f452496495931fd70b932e88106d9$__9063590aa8759061082d908590600401614888565b60006040518083038186803b15801561084557600080fd5b505af4158015610859573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261088191908101906142de565b90505b919050565b6040517f63eb399200000000000000000000000000000000000000000000000000000000815260609073__$808f8f452496495931fd70b932e88106d9$__906363eb3992906108e0908790879087906004016149f1565b60006040518083038186803b1580156108f857600080fd5b505af415801561090c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261093491908101906142de565b949350505050565b60608060608073__$f3880127484c626d9b3a095208b13cbf1b$__636f83188e866040518263ffffffff1660e01b81526004016109799190614d84565b60006040518083038186803b15801561099157600080fd5b505af41580156109a5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109cd919081019061434c565b93509350935093509193509193565b6000806000606073__$808f8f452496495931fd70b932e88106d9$__63750bdb30866040518263ffffffff1660e01b8152600401610a1a9190614d84565b60006040518083038186803b158015610a3257600080fd5b505af4158015610a46573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109cd9190810190614085565b600080546040517f9caa023b00000000000000000000000000000000000000000000000000000000815273__$988eef118a938b5a4e7336ebab0aae599b$__91639caa023b91610ad0916001600160a01b031690889088908890600401614a23565b60206040518083038186803b158015610ae857600080fd5b505af4158015610afc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610934919081019061432d565b600061093484610b9c6040518060400160405280600b81526020017f30782050726f746f636f6c0000000000000000000000000000000000000000008152506040518060400160405280600581526020017f332e302e3000000000000000000000000000000000000000000000000000000081525087876129a3565b6129fa565b600080610bb4838263ffffffff612a0e16565b90506001600160e01b031981167ff47261b0000000000000000000000000000000000000000000000000000000001415610c0f576000610bfb84601063ffffffff612a4716565b9050610c078186612a7a565b925050611490565b6001600160e01b031981167f02571792000000000000000000000000000000000000000000000000000000001415610e285760008073__$808f8f452496495931fd70b932e88106d9$__6304a5618a866040518263ffffffff1660e01b8152600401610c7b9190614d84565b60606040518083038186803b158015610c9357600080fd5b505af4158015610ca7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ccb9190810190614201565b6040519194509250606091507f6352211e0000000000000000000000000000000000000000000000000000000090610d07908490602401614c01565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050905060006060846001600160a01b031683604051610d82919061486c565b600060405180830381855afa9150503d8060008114610dbd576040519150601f19603f3d011682016040523d82523d6000602084013e610dc2565b606091505b50915091506000828015610dd7575081516020145b610de2576000610df3565b610df382600c63ffffffff612a4716565b9050896001600160a01b0316816001600160a01b031614610e15576000610e18565b60015b60ff169750505050505050611490565b6001600160e01b031981167fa7cb5fb70000000000000000000000000000000000000000000000000000000014156110c457600060608073__$808f8f452496495931fd70b932e88106d9$__639eadc835876040518263ffffffff1660e01b8152600401610e969190614d84565b60006040518083038186803b158015610eae57600080fd5b505af4158015610ec2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610eea91908101906140ef565b5081519296509094509250905060005b8181146110ba57828181518110610f0d57fe5b602002602001015160001415610f22576110b2565b83516060907efdd58e00000000000000000000000000000000000000000000000000000000908b90879085908110610f5657fe5b6020026020010151604051602401610f6f929190614a58565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050905060006060876001600160a01b031683604051610fea919061486c565b600060405180830381855afa9150503d8060008114611025576040519150601f19603f3d011682016040523d82523d6000602084013e61102a565b606091505b5091509150600082801561103f575081516020145b61104a57600061105b565b61105b82600063ffffffff612b7216565b9050600087868151811061106b57fe5b6020026020010151828161107b57fe5b049050806110975760009b5050505050505050505050506106cd565b8b8110806110a357508b155b156110ac57809b505b50505050505b600101610efa565b5050505050611490565b6001600160e01b031981167fc339d10a0000000000000000000000000000000000000000000000000000000014156111f7576040516060907fa85e59e4000000000000000000000000000000000000000000000000000000009061113390869060009081908190602401614d97565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166001600160e01b03199094169390931790925260045491519092506000916001600160a01b03169061119a90849061486c565b600060405180830381855afa9150503d80600081146111d5576040519150601f19603f3d011682016040523d82523d6000602084013e6111da565b606091505b50509050806111ea5760006111ee565b6000195b93505050611490565b6001600160e01b031981167fdc1600f30000000000000000000000000000000000000000000000000000000014156113205760008073__$808f8f452496495931fd70b932e88106d9$__63750bdb30866040518263ffffffff1660e01b81526004016112639190614d84565b60006040518083038186803b15801561127b57600080fd5b505af415801561128f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112b79190810190614085565b5092509250506112c5612b7e565b6001600160a01b0316826001600160a01b03161480156112f257506005546001600160a01b038281169116145b1561131957600061130a611304612b96565b88612a7a565b905061131581612bae565b9450505b5050611490565b6001600160e01b031981167f94cfcdd70000000000000000000000000000000000000000000000000000000014156114905760608073__$808f8f452496495931fd70b932e88106d9$__63bbb2dcf6866040518263ffffffff1660e01b815260040161138c9190614d84565b60006040518083038186803b1580156113a457600080fd5b505af41580156113b8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113e09190810190614241565b80519194509250905060005b81811461148b578381815181106113ff57fe5b60200260200101516000141561141457611483565b60006114338985848151811061142657fe5b6020026020010151610ba1565b9050600085838151811061144357fe5b6020026020010151828161145357fe5b0490508061146b5760009750505050505050506106cd565b87811080611477575087155b15611480578097505b50505b6001016113ec565b505050505b5092915050565b60008073__$808f8f452496495931fd70b932e88106d9$__638f4ce479846040518263ffffffff1660e01b81526004016114d19190614d84565b604080518083038186803b1580156114e857600080fd5b505af41580156114fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611520919081019061404e565b915091505b915091565b6004546001600160a01b031681565b6000546001600160a01b031681565b600080606080606073__$808f8f452496495931fd70b932e88106d9$__639eadc835876040518263ffffffff1660e01b81526004016115879190614d84565b60006040518083038186803b15801561159f57600080fd5b505af41580156115b3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115db91908101906140ef565b939a9299509097509550909350915050565b6000610934846116696040518060400160405280600b81526020017f30782050726f746f636f6c0000000000000000000000000000000000000000008152506040518060400160405280600581526020017f332e302e3000000000000000000000000000000000000000000000000000000081525087876129a3565b612dac565b606080825160405190808252806020026020018201604052801561169c578160200160208202803883390190505b50905060005b83518114611490578381815181106116b657fe5b60200260200101516001600160a01b0316318282815181106116d457fe5b60209081029190910101526001016116a2565b6000546040517f02cffc4500000000000000000000000000000000000000000000000000000000815260609173__$988eef118a938b5a4e7336ebab0aae599b$__916302cffc459161174d916001600160a01b03909116908890889088906004016148d9565b60006040518083038186803b15801561176557600080fd5b505af4158015611779573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109349190810190613e68565b6040517fa6627e9f00000000000000000000000000000000000000000000000000000000815260609073__$808f8f452496495931fd70b932e88106d9$__9063a6627e9f906117f69086908690600401614a58565b60006040518083038186803b15801561180e57600080fd5b505af4158015611822573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261184a91908101906142de565b9392505050565b6006546001600160a01b031681565b6040517fb43cffe100000000000000000000000000000000000000000000000000000000815260609073__$808f8f452496495931fd70b932e88106d9$__9063b43cffe1906118b990889088908890889060040161499f565b60006040518083038186803b1580156118d157600080fd5b505af41580156118e5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261190d91908101906142de565b95945050505050565b600060608073__$808f8f452496495931fd70b932e88106d9$__63bbb2dcf6856040518263ffffffff1660e01b81526004016119529190614d84565b60006040518083038186803b15801561196a57600080fd5b505af415801561197e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261067c9190810190614241565b60075481565b6005546001600160a01b031681565b6000806060600073__$808f8f452496495931fd70b932e88106d9$__63ca49f47c866040518263ffffffff1660e01b81526004016119f99190614d84565b60006040518083038186803b158015611a1157600080fd5b505af4158015611a25573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109cd9190810190614199565b606060008251905080604051908082528060200260200182016040528015611a7f578160200160208202803883390190505b50915060005b8181146107d257611a9c8585838151811061142657fe5b838281518110611aa857fe5b6020908102919091010152600101611a85565b600080611ace838263ffffffff612a0e16565b90506001600160e01b031981167f94cfcdd7000000000000000000000000000000000000000000000000000000001415611c395760608073__$808f8f452496495931fd70b932e88106d9$__63bbb2dcf6866040518263ffffffff1660e01b8152600401611b3c9190614d84565b60006040518083038186803b158015611b5457600080fd5b505af4158015611b68573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611b909190810190614241565b80519194509250905060005b818114611c2e57838181518110611baf57fe5b602002602001015160001415611bc457611c26565b6000611bd6898584815181106107a657fe5b90506000858381518110611be657fe5b60200260200101518281611bf657fe5b04905080611c0e5760009750505050505050506106cd565b87811080611c1a575087155b15611c23578097505b50505b600101611b9c565b506106cd9350505050565b6001600160e01b031981167ff47261b0000000000000000000000000000000000000000000000000000000001415611c9a576000611c7e84601063ffffffff612a4716565b600154909150610c0790829087906001600160a01b0316612dbb565b6001600160e01b031981167f02571792000000000000000000000000000000000000000000000000000000001415611fea5760008073__$808f8f452496495931fd70b932e88106d9$__6304a5618a866040518263ffffffff1660e01b8152600401611d069190614d84565b60606040518083038186803b158015611d1e57600080fd5b505af4158015611d32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611d569190810190614201565b600254604051929550909350606092507fe985e9c50000000000000000000000000000000000000000000000000000000091611da2918a916001600160a01b039091169060240161489c565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050905060006060846001600160a01b031683604051611e1d919061486c565b600060405180830381855afa9150503d8060008114611e58576040519150601f19603f3d011682016040523d82523d6000602084013e611e5d565b606091505b5091509150811580611e7157508051602014155b80611e8d5750611e8881600063ffffffff612b7216565b600114155b15611fdb576040516060907f081812fc0000000000000000000000000000000000000000000000000000000090611ec8908790602401614c01565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050856001600160a01b031681604051611f3f919061486c565b600060405180830381855afa9150503d8060008114611f7a576040519150601f19603f3d011682016040523d82523d6000602084013e611f7f565b606091505b509093509150828015611f93575081516020145b8015611fc257506002546001600160a01b0316611fb783600c63ffffffff612a4716565b6001600160a01b0316145b611fcd576000611fd0565b60015b60ff169750506110ba565b60001996505050505050611490565b6001600160e01b031981167fa7cb5fb7000000000000000000000000000000000000000000000000000000001415612211576040517f9eadc83500000000000000000000000000000000000000000000000000000000815260009073__$808f8f452496495931fd70b932e88106d9$__90639eadc8359061206f908790600401614d84565b60006040518083038186803b15801561208757600080fd5b505af415801561209b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526120c391908101906140ef565b5050600354604051929450606093507fe985e9c5000000000000000000000000000000000000000000000000000000009261210d925089916001600160a01b03169060240161489c565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050905060006060836001600160a01b031683604051612188919061486c565b600060405180830381855afa9150503d80600081146121c3576040519150601f19603f3d011682016040523d82523d6000602084013e6121c8565b606091505b50915091508180156121db575080516020145b80156121f757506121f381600063ffffffff612b7216565b6001145b612202576000612206565b6000195b955050505050611490565b6001600160e01b031981167fc339d10a00000000000000000000000000000000000000000000000000000000141561224d576000199150611490565b6001600160e01b031981167fdc1600f30000000000000000000000000000000000000000000000000000000014156114905760008073__$808f8f452496495931fd70b932e88106d9$__63750bdb30866040518263ffffffff1660e01b81526004016122b99190614d84565b60006040518083038186803b1580156122d157600080fd5b505af41580156122e5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261230d9190810190614085565b50925092505061231b612b7e565b6001600160a01b0316826001600160a01b031614801561234857506005546001600160a01b038281169116145b1561239257600061236d61235a612b96565b60055489906001600160a01b0316612dbb565b905060001981146123865761238181612bae565b61238a565b6000195b94505061243d565b6006546001600160a01b038281169116141561243d5773__$1fa048dff19b08eb02dfb6ebf13779c5bf$__630e70a03387836123cc612ec5565b6040518463ffffffff1660e01b81526004016123ea939291906148b6565b60206040518083038186803b15801561240257600080fd5b505af4158015612416573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061243a9190810190614641565b93505b50505092915050565b600080546040517f8dccde0400000000000000000000000000000000000000000000000000000000815273__$988eef118a938b5a4e7336ebab0aae599b$__91638dccde0491610ad0916001600160a01b031690889088908890600401614a23565b6040517fd3d862d100000000000000000000000000000000000000000000000000000000815260609073__$808f8f452496495931fd70b932e88106d9$__9063d3d862d1906117f69086908690600401614b6c565b6040517fd469502800000000000000000000000000000000000000000000000000000000815260009073__$808f8f452496495931fd70b932e88106d9$__9063d469502890612550908590600401614d84565b60206040518083038186803b15801561256857600080fd5b505af415801561257c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108819190810190614033565b6060806060600085519050806040519080825280602002602001820160405280156125e557816020015b6125d26136a6565b8152602001906001900390816125ca5790505b50935080604051908082528060200260200182016040528015612612578160200160208202803883390190505b5092508060405190808252806020026020018201604052801561263f578160200160208202803883390190505b50915060005b8181146126cf5761267c87828151811061265b57fe5b602002602001015187838151811061266f57fe5b60200260200101516126f1565b875188908590811061268a57fe5b6020026020010187858151811061269d57fe5b602002602001018786815181106126b057fe5b9315156020948502919091019093019290925291905252600101612645565b50509250925092565b6060806126e58484611a4d565b91506106a28484610757565b6126f96136a6565b600080546040517f9d3fa4b900000000000000000000000000000000000000000000000000000000815282916001600160a01b031690639d3fa4b990612743908890600401614eca565b60606040518083038186803b15801561275b57600080fd5b505afa15801561276f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506127939190810190614439565b85516000546040517fa12dcc6f00000000000000000000000000000000000000000000000000000000815292955090916001600160a01b039091169063a12dcc6f906127e59089908990600401614f08565b60206040518083038186803b1580156127fd57600080fd5b505afa158015612811573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506128359190810190614013565b9150600061284287612edd565b90506000612863886101800151896101400151612f0990919063ffffffff16565b1561289857612891826128878a60c001518b60800151612f2e90919063ffffffff16565b8a60a00151612f4a565b9050612905565b60c08801516128b4576128918289608001518a60a00151612f4a565b60006128c5848a61018001516106ab565b905060006128dc848b608001518c60a00151612f4a565b905060006128f3838c60c001518d60a00151612f4a565b90506128ff828261298d565b93505050505b61292961292387604001518a60a00151612f6c90919063ffffffff16565b8261298d565b945061293488612f8b565b61293d57600094505b60038651600681111561294c57fe5b1461295657600094505b5050509250925092565b6001546001600160a01b031681565b6002546001600160a01b031681565b6003546001600160a01b031681565b600081831061299c578161184a565b5090919050565b8351602094850120835193850193909320604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815295860194909452928401929092526060830152608082015260a0902090565b600061184a82612a0985612ff2565b61306d565b60008160040183511015612a3457612a34612a2f60038551856004016130a7565b613116565b5001602001516001600160e01b03191690565b60008160140183511015612a6857612a68612a2f60048551856014016130a7565b5001601401516001600160a01b031690565b60405160009081906060906001600160a01b038616907f70a082310000000000000000000000000000000000000000000000000000000090612ac0908790602401614888565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166001600160e01b0319909416939093179092529051612b13919061486c565b600060405180830381855afa9150503d8060008114612b4e576040519150601f19603f3d011682016040523d82523d6000602084013e612b53565b606091505b5091509150818015612b66575080516020145b156107d2576106c88160005b600061184a838361311e565b736b175474e89094c44da98b954eedeac495271d0f90565b7306af07097c9eeb7fd685c692751d5c66db49c21590565b600080612bb9612b96565b6001600160a01b0316634ba2363a6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015612bf357600080fd5b505af1158015612c07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612c2b9190810190614311565b90506000816001600160a01b03166320aba08b6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015612c6a57600080fd5b505af1158015612c7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612ca29190810190614641565b4211612d2057816001600160a01b031663c92aecc46040518163ffffffff1660e01b8152600401602060405180830381600087803b158015612ce357600080fd5b505af1158015612cf7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612d1b9190810190614641565b612d93565b816001600160a01b0316639f678cca6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015612d5b57600080fd5b505af1158015612d6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612d939190810190614641565b9050610934816b033b2e3c9fd0803ce800000086612f4a565b600061184a82612a0985613148565b60405160009081906060906001600160a01b038716907fdd62ed3e0000000000000000000000000000000000000000000000000000000090612e03908890889060240161489c565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166001600160e01b0319909416939093179092529051612e56919061486c565b600060405180830381855afa9150503d8060008114612e91576040519150601f19603f3d011682016040523d82523d6000602084013e612e96565b606091505b5091509150818015612ea9575080516020145b15612ebc57612eb9816000612b72565b92505b50509392505050565b731e0447b19bb6ecfdae1e4ae1694b0c3659614e4e90565b6000806000612eeb84613201565b91509150612ef9828261298d565b925061093483856080015161298d565b60008151835114801561184a5750508051602091820120825192909101919091201490565b60008282018381101561184a5761184a612a2f60008686613414565b600061093483612f60868563ffffffff61343316565b9063ffffffff61346416565b600082821115612f8557612f85612a2f60028585613414565b50900390565b6000612f9b82610140015161348e565b8015612fbc575060c08201511580612fbc5750612fbc82610180015161348e565b8015612fd15750612fd182610160015161348e565b8015610881575060e082015115806108815750610881826101a0015161348e565b608081810151825160208085015160408087015160609788015186519685019690962082517fec69816980a3a3ca4554410e60253953e9ff375ba4536a98adfa15cc7154150881529485019590955290830191909152948101949094526001600160a01b039091169183019190915260a082015260c0902090565b6040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b6060632800659560e01b8484846040516024016130c693929190614df7565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166001600160e01b03199093169290921790915290509392505050565b805160208201fd5b6000816020018351101561313f5761313f612a2f60058551856020016130a7565b50016020015190565b6101408101516101608201516101808301516101a08401516000937ff80322eb8376aafb64eadf8f0d7623f22130fd9491a221e902b713cb984a75349390929091602087101561319457fe5b601f1987018051610140890180516101608b0180516101808d0180516101a08f0180519d89528c5160209d8e012087528b519b8d019b909b2084528951998c01999099208152875197909a019690962088526101e085209390945290529190529252919091529050919050565b600080600483610140015151101561321e57506000905080611525565b610140830151600090613237908263ffffffff612a0e16565b90506001600160e01b031981167fdc1600f30000000000000000000000000000000000000000000000000000000014156133e4576101408401516040517f750bdb3000000000000000000000000000000000000000000000000000000000815260009173__$808f8f452496495931fd70b932e88106d9$__9163750bdb30916132c291600401614d84565b60006040518083038186803b1580156132da57600080fd5b505af41580156132ee573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526133169190810190614085565b506006549093506001600160a01b038085169116141591506133e290505773__$1fa048dff19b08eb02dfb6ebf13779c5bf$__63d12a796086613357612ec5565b6040518363ffffffff1660e01b8152600401613374929190614edd565b60206040518083038186803b15801561338c57600080fd5b505af41580156133a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506133c49190810190614641565b6133d78660000151876101400151611abb565b935093505050611525565b505b6133f78460000151856101400151610ba1565b61340a8560000151866101400151611abb565b9250925050915091565b606063e946c1bb60e01b8484846040516024016130c693929190614dd5565b600082613442575060006106cd565b8282028284828161344f57fe5b041461184a5761184a612a2f60018686613414565b60008161347a5761347a612a2f60038585613414565b600082848161348557fe5b04949350505050565b6000602082518161349b57fe5b066004146134ab57506000610884565b60006134bd838263ffffffff612a0e16565b90506001600160e01b031981167f94cfcdd700000000000000000000000000000000000000000000000000000000146134fa576001915050610884565b6040517fbbb2dcf600000000000000000000000000000000000000000000000000000000815260609073__$808f8f452496495931fd70b932e88106d9$__9063bbb2dcf69061354d908790600401614d84565b60006040518083038186803b15801561356557600080fd5b505af4158015613579573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135a19190810190614241565b80519093509150600090505b8181146136375760006135dd60008584815181106135c757fe5b6020026020010151612a0e90919063ffffffff16565b90506001600160e01b031981167f0257179200000000000000000000000000000000000000000000000000000000141561362e5761361b8483613643565b1561362e57600095505050505050610884565b506001016135ad565b50600195945050505050565b8151600090600183015b818110156107d25761368e85828151811061366457fe5b602002602001015186868151811061367857fe5b6020026020010151612f0990919063ffffffff16565b1561369e576001925050506106cd565b60010161364d565b6040805160608101909152806000815260006020820181905260409091015290565b80356106cd81614fd6565b80516106cd81614fd6565b600082601f8301126136ee578081fd5b81356137016136fc82614f62565b614f3b565b81815291506020808301908481018184028601820187101561372257600080fd5b60005b8481101561148b57813561373881614fd6565b84529282019290820190600101613725565b600082601f83011261375a578081fd5b81356137686136fc82614f62565b8181529150602080830190840160005b838110156137a5576137908760208435890101613939565b83526020928301929190910190600101613778565b5050505092915050565b600082601f8301126137bf578081fd5b81516137cd6136fc82614f62565b8181529150602080830190840160005b838110156137a5576137f58760208451890101613987565b835260209283019291909101906001016137dd565b600082601f83011261381a578081fd5b81356138286136fc82614f62565b8181529150602080830190840160005b838110156137a55761385087602084358901016139dc565b83526020928301929190910190600101613838565b600082601f830112613875578081fd5b81356138836136fc82614f62565b8181529150602080830190848101818402860182018710156138a457600080fd5b60005b8481101561148b578135845292820192908201906001016138a7565b600082601f8301126138d3578081fd5b81516138e16136fc82614f62565b81815291506020808301908481018184028601820187101561390257600080fd5b60005b8481101561148b57815184529282019290820190600101613905565b80516001600160e01b0319811681146106cd57600080fd5b600082601f830112613949578081fd5b81356139576136fc82614f82565b915080825283602082850101111561396e57600080fd5b8060208401602084013760009082016020015292915050565b600082601f830112613997578081fd5b81516139a56136fc82614f82565b91508082528360208285010111156139bc57600080fd5b611490816020840160208601614fa6565b8051600581106106cd57600080fd5b60006101c08083850312156139ef578182fd5b6139f881614f3b565b915050613a0583836136c8565b8152613a1483602084016136c8565b6020820152613a2683604084016136c8565b6040820152613a3883606084016136c8565b60608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e08201526101008083013581830152506101208083013581830152506101408083013567ffffffffffffffff80821115613a9a57600080fd5b613aa686838701613939565b83850152610160925082850135915080821115613ac257600080fd5b613ace86838701613939565b83850152610180925082850135915080821115613aea57600080fd5b613af686838701613939565b838501526101a0925082850135915080821115613b1257600080fd5b50613b1f85828601613939565b82840152505092915050565b60006101c0808385031215613b3e578182fd5b613b4781614f3b565b915050613b5483836136d3565b8152613b6383602084016136d3565b6020820152613b7583604084016136d3565b6040820152613b8783606084016136d3565b60608201526080820151608082015260a082015160a082015260c082015160c082015260e082015160e08201526101008083015181830152506101208083015181830152506101408083015167ffffffffffffffff80821115613be957600080fd5b613bf586838701613987565b83850152610160925082850151915080821115613c1157600080fd5b613c1d86838701613987565b83850152610180925082850151915080821115613c3957600080fd5b613c4586838701613987565b838501526101a0925082850151915080821115613c6157600080fd5b50613b1f85828601613987565b600060208284031215613c7f578081fd5b813561184a81614fd6565b60008060408385031215613c9c578081fd5b8235613ca781614fd6565b9150602083013567ffffffffffffffff811115613cc2578182fd5b613cce8582860161374a565b9150509250929050565b60008060008060808587031215613ced578182fd5b8435613cf881614fd6565b9350602085013567ffffffffffffffff80821115613d14578384fd5b613d2088838901613865565b94506040870135915080821115613d35578384fd5b613d4188838901613865565b93506060870135915080821115613d56578283fd5b50613d6387828801613939565b91505092959194509250565b60008060408385031215613d81578182fd5b8235613d8c81614fd6565b9150602083013567ffffffffffffffff811115613da7578182fd5b613cce85828601613939565b600080600060608486031215613dc7578081fd5b8335613dd281614fd6565b9250602084013567ffffffffffffffff811115613ded578182fd5b613df986828701613939565b925050604084013590509250925092565b60008060408385031215613e1c578182fd5b8235613e2781614fd6565b946020939093013593505050565b600060208284031215613e46578081fd5b813567ffffffffffffffff811115613e5c578182fd5b610934848285016136de565b60006020808385031215613e7a578182fd5b825167ffffffffffffffff811115613e90578283fd5b80840185601f820112613ea1578384fd5b80519150613eb16136fc83614f62565b8281528381019082850185850284018601891015613ecd578687fd5b8693505b84841015613ef757613ee389826139cd565b835260019390930192918501918501613ed1565b50979650505050505050565b600080600060608486031215613f17578081fd5b833567ffffffffffffffff80821115613f2e578283fd5b613f3a8783880161380a565b94506020860135915080821115613f4f578283fd5b613f5b878388016136de565b93506040860135915080821115613f70578283fd5b50613f7d86828701613865565b9150509250925092565b60008060408385031215613f99578182fd5b823567ffffffffffffffff80821115613fb0578384fd5b613fbc8683870161380a565b93506020850135915080821115613fd1578283fd5b50613cce8582860161374a565b60008060408385031215613ff0578182fd5b823567ffffffffffffffff80821115614007578384fd5b613fbc86838701613865565b600060208284031215614024578081fd5b8151801515811461184a578182fd5b600060208284031215614044578081fd5b61184a8383613921565b60008060408385031215614060578182fd5b61406a8484613921565b9150602083015161407a81614fd6565b809150509250929050565b6000806000806080858703121561409a578182fd5b84516140a581614feb565b60208601519094506140b681614fd6565b60408601519093506140c781614fd6565b606086015190925067ffffffffffffffff8111156140e3578182fd5b613d6387828801613987565b600080600080600060a08688031215614106578283fd5b6141108787613921565b9450602086015161412081614fd6565b604087015190945067ffffffffffffffff8082111561413d578485fd5b61414989838a016138c3565b9450606088015191508082111561415e578283fd5b61416a89838a016138c3565b9350608088015191508082111561417f578283fd5b5061418c88828901613987565b9150509295509295909350565b600080600080608085870312156141ae578182fd5b6141b88686613921565b935060208501516141c881614fd6565b604086015190935067ffffffffffffffff8111156141e4578283fd5b6141f087828801613987565b606096909601519497939650505050565b600080600060608486031215614215578081fd5b61421f8585613921565b9250602084015161422f81614fd6565b80925050604084015190509250925092565b600080600060608486031215614255578081fd5b835161426081614feb565b602085015190935067ffffffffffffffff8082111561427d578283fd5b614289878388016138c3565b9350604086015191508082111561429e578283fd5b50613f7d868287016137af565b6000602082840312156142bc578081fd5b813567ffffffffffffffff8111156142d2578182fd5b61093484828501613939565b6000602082840312156142ef578081fd5b815167ffffffffffffffff811115614305578182fd5b61093484828501613987565b600060208284031215614322578081fd5b815161184a81614fd6565b60006020828403121561433e578081fd5b81516005811061184a578182fd5b60008060008060808587031215614361578182fd5b845167ffffffffffffffff80821115614378578384fd5b61438488838901613987565b955060209150818701518181111561439a578485fd5b80880189601f8201126143ab578586fd5b805191506143bb6136fc83614f62565b82815284810190828601885b858110156143f0576143de8e898451880101613b2b565b845292870192908701906001016143c7565b505060408b015190985094505050508082111561440b578384fd5b614417888389016138c3565b9350606087015191508082111561442c578283fd5b50613d63878288016137af565b60006060828403121561444a578081fd5b6144546060614f3b565b825160078110614462578283fd5b8152602083810151908201526040928301519281019290925250919050565b600080600060608486031215614495578081fd5b833567ffffffffffffffff8111156144ab578182fd5b6144b7868287016139dc565b93505060208401356144c881614fd6565b929592945050506040919091013590565b600080604083850312156144eb578182fd5b823567ffffffffffffffff80821115614502578384fd5b61450e868387016139dc565b93506020850135915080821115614523578283fd5b50613cce85828601613939565b600080600060608486031215614544578081fd5b833567ffffffffffffffff81111561455a578182fd5b614566868287016139dc565b93505060208401359150604084013561457e81614fd6565b809150509250925092565b60008060006060848603121561459d578081fd5b833567ffffffffffffffff808211156145b4578283fd5b81860160a081890312156145c6578384fd5b6145d060a0614f3b565b92508035835260208101356020840152604081013560408401526145f788606083016136c8565b606084015260808101358281111561460d578485fd5b61461989828401613939565b60808501525091945050506020840135915061463885604086016136c8565b90509250925092565b600060208284031215614652578081fd5b5051919050565b6001600160a01b0316815260200190565b60006146768383614748565b505060600190565b6001600160a01b03169052565b60008282518085526020808601955080818302840101818601855b848110156146d457601f198684030189526146c283835161471c565b988401989250908301906001016146a6565b5090979650505050505050565b6000815180845260208401935060208301825b828110156147125781518652602095860195909101906001016146f4565b5093949350505050565b60008151808452614734816020860160208601614fa6565b601f01601f19169290920160200192915050565b80516007811061475457fe5b825260208181015190830152604090810151910152565b60006101c061477b84845161467e565b602083015161478d602086018261467e565b5060408301516147a0604086018261467e565b5060608301516147b3606086018261467e565b506080830151608085015260a083015160a085015260c083015160c085015260e083015160e085015261010080840151818601525061012080840151818601525061014080840151828287015261480c8387018261471c565b91505061016091508184015185820383870152614829828261471c565b925050506101808084015185830382870152614845838261471c565b9150506101a091508184015185820383870152614862828261471c565b9695505050505050565b6000825161487e818460208701614fa6565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b0393841681529183166020830152909116604082015260600190565b6000608082016001600160a01b038716835260206080818501528187516149008185614c01565b91508193508281028201838a01865b8381101561493957868303855261492783835161476b565b9486019492509085019060010161490f565b50508681036040880152809450885192506149548382614c01565b94505050818701845b8281101561497e57614970858351614659565b94509083019060010161495d565b50505050828103606084015261499481856146e1565b979650505050505050565b60006001600160a01b0386168252608060208301526149c160808301866146e1565b82810360408401526149d381866146e1565b83810360608501526149e5818661471c565b98975050505050505050565b60006001600160a01b038516825260606020830152614a13606083018561471c565b9050826040830152949350505050565b60006001600160a01b03808716835260806020840152614a46608084018761476b565b94166040830152506060015292915050565b6001600160a01b03929092168252602082015260400190565b602080825282518282018190526000918401906040840190835b81811015614ab357835160058110614a9f57fe5b835260209384019390920191600101614a8b565b509095945050505050565b60006060820160608352808651614ad58184614c01565b915060209250828801845b82811015614b0157614af384835161466a565b935090840190600101614ae0565b50505083810382850152614b1581876146e1565b84810360408601528551808252908301915082860190845b81811015614b4b578251151584529284019291840191600101614b2d565b509198975050505050505050565b60006020825261184a60208301846146e1565b600060408252614b7f60408301856146e1565b602083820381850152818551808452828401915082838202850101838801865b83811015614bcd57601f19878403018552614bbb83835161471c565b94860194925090850190600101614b9f565b50909998505050505050505050565b600060408252614bef60408301856146e1565b828103602084015261190d81856146e1565b90815260200190565b6001600160e01b031991909116815260200190565b6001600160e01b03199290921682526001600160a01b0316602082015260400190565b60006001600160e01b0319861682526001600160a01b03808616602084015280851660408401525060806060830152614862608083018461471c565b60006001600160e01b0319871682526001600160a01b038616602083015260a06040830152614cb060a08301866146e1565b8281036060840152614cc281866146e1565b8381036080850152614cd4818661471c565b9998505050505050505050565b60006001600160e01b0319861682526001600160a01b038516602083015260806040830152614d13608083018561471c565b905082606083015295945050505050565b6001600160e01b03199390931683526001600160a01b03919091166020830152604082015260600190565b60006001600160e01b03198516825260606020830152614d7260608301856146e1565b8281036040840152614862818561468b565b60006020825261184a602083018461471c565b600060808252614daa608083018761471c565b6001600160a01b03958616602084015293909416604082015260ff9190911660609091015292915050565b6060810160048510614de357fe5b938152602081019290925260409091015290565b6060810160088510614de357fe5b6020810160058310614e1357fe5b91905290565b600060808252614e2c608083018761471c565b602083820381850152818751808452828401915082838202850101838a01865b83811015614e7a57601f19878403018552614e6883835161476b565b94860194925090850190600101614e4c565b50508681036040880152614e8e818a6146e1565b9450505050508281036060840152614994818561468b565b60a08101614eb48286614748565b8360608301528215156080830152949350505050565b60006020825261184a602083018461476b565b600060408252614ef0604083018561476b565b90506001600160a01b03831660208301529392505050565b600060408252614f1b604083018561476b565b828103602084015261190d818561471c565b918252602082015260400190565b60405181810167ffffffffffffffff81118282101715614f5a57600080fd5b604052919050565b600067ffffffffffffffff821115614f78578081fd5b5060209081020190565b600067ffffffffffffffff821115614f98578081fd5b50601f01601f191660200190565b60005b83811015614fc1578181015183820152602001614fa9565b83811115614fd0576000848401525b50505050565b6001600160a01b038116811461075457600080fd5b6001600160e01b03198116811461075457600080fdfea365627a7a7231582035e812e328807b8502bbdb23eb0d94c3493497753f571da44447373be9944d316c6578706572696d656e74616cf564736f6c63430005110040'; public static contractName = 'DevUtils'; private readonly _methodABIIndex: { [name: string]: number } = {}; public static async deployFrom0xArtifactAsync( diff --git a/packages/contract-wrappers/src/generated-wrappers/i_zero_ex.ts b/packages/contract-wrappers/src/generated-wrappers/i_zero_ex.ts index caf08d2335..638a2864ac 100644 --- a/packages/contract-wrappers/src/generated-wrappers/i_zero_ex.ts +++ b/packages/contract-wrappers/src/generated-wrappers/i_zero_ex.ts @@ -36,24 +36,50 @@ import * as ethers from 'ethers'; // tslint:enable:no-unused-variable export type IZeroExEventArgs = + | IZeroExLimitOrderFilledEventArgs | IZeroExMetaTransactionExecutedEventArgs | IZeroExMigratedEventArgs + | IZeroExOrderCancelledEventArgs | IZeroExOwnershipTransferredEventArgs + | IZeroExPairCancelledLimitOrdersEventArgs + | IZeroExPairCancelledRfqOrdersEventArgs | IZeroExProxyFunctionUpdatedEventArgs | IZeroExQuoteSignerUpdatedEventArgs + | IZeroExRfqOrderFilledEventArgs + | IZeroExRfqOrderOriginsAllowedEventArgs | IZeroExTransformedERC20EventArgs | IZeroExTransformerDeployerUpdatedEventArgs; export enum IZeroExEvents { + LimitOrderFilled = 'LimitOrderFilled', MetaTransactionExecuted = 'MetaTransactionExecuted', Migrated = 'Migrated', + OrderCancelled = 'OrderCancelled', OwnershipTransferred = 'OwnershipTransferred', + PairCancelledLimitOrders = 'PairCancelledLimitOrders', + PairCancelledRfqOrders = 'PairCancelledRfqOrders', ProxyFunctionUpdated = 'ProxyFunctionUpdated', QuoteSignerUpdated = 'QuoteSignerUpdated', + RfqOrderFilled = 'RfqOrderFilled', + RfqOrderOriginsAllowed = 'RfqOrderOriginsAllowed', TransformedERC20 = 'TransformedERC20', TransformerDeployerUpdated = 'TransformerDeployerUpdated', } +export interface IZeroExLimitOrderFilledEventArgs extends DecodedLogArgs { + orderHash: string; + maker: string; + taker: string; + feeRecipient: string; + makerToken: string; + takerToken: string; + takerTokenFilledAmount: BigNumber; + makerTokenFilledAmount: BigNumber; + takerTokenFeeFilledAmount: BigNumber; + protocolFeePaid: BigNumber; + pool: string; +} + export interface IZeroExMetaTransactionExecutedEventArgs extends DecodedLogArgs { hash: string; selector: string; @@ -67,11 +93,30 @@ export interface IZeroExMigratedEventArgs extends DecodedLogArgs { newOwner: string; } +export interface IZeroExOrderCancelledEventArgs extends DecodedLogArgs { + orderHash: string; + maker: string; +} + export interface IZeroExOwnershipTransferredEventArgs extends DecodedLogArgs { previousOwner: string; newOwner: string; } +export interface IZeroExPairCancelledLimitOrdersEventArgs extends DecodedLogArgs { + maker: string; + makerToken: string; + takerToken: string; + minValidSalt: BigNumber; +} + +export interface IZeroExPairCancelledRfqOrdersEventArgs extends DecodedLogArgs { + maker: string; + makerToken: string; + takerToken: string; + minValidSalt: BigNumber; +} + export interface IZeroExProxyFunctionUpdatedEventArgs extends DecodedLogArgs { selector: string; oldImpl: string; @@ -82,6 +127,23 @@ export interface IZeroExQuoteSignerUpdatedEventArgs extends DecodedLogArgs { quoteSigner: string; } +export interface IZeroExRfqOrderFilledEventArgs extends DecodedLogArgs { + orderHash: string; + maker: string; + taker: string; + makerToken: string; + takerToken: string; + takerTokenFilledAmount: BigNumber; + makerTokenFilledAmount: BigNumber; + pool: string; +} + +export interface IZeroExRfqOrderOriginsAllowedEventArgs extends DecodedLogArgs { + origin: string; + addrs: string[]; + allowed: boolean; +} + export interface IZeroExTransformedERC20EventArgs extends DecodedLogArgs { taker: string; inputToken: string; @@ -211,6 +273,69 @@ export class IZeroExContract extends BaseContract { */ public static ABI(): ContractAbi { const abi = [ + { + anonymous: false, + inputs: [ + { + name: 'orderHash', + type: 'bytes32', + indexed: false, + }, + { + name: 'maker', + type: 'address', + indexed: false, + }, + { + name: 'taker', + type: 'address', + indexed: false, + }, + { + name: 'feeRecipient', + type: 'address', + indexed: false, + }, + { + name: 'makerToken', + type: 'address', + indexed: false, + }, + { + name: 'takerToken', + type: 'address', + indexed: false, + }, + { + name: 'takerTokenFilledAmount', + type: 'uint128', + indexed: false, + }, + { + name: 'makerTokenFilledAmount', + type: 'uint128', + indexed: false, + }, + { + name: 'takerTokenFeeFilledAmount', + type: 'uint128', + indexed: false, + }, + { + name: 'protocolFeePaid', + type: 'uint256', + indexed: false, + }, + { + name: 'pool', + type: 'bytes32', + indexed: false, + }, + ], + name: 'LimitOrderFilled', + outputs: [], + type: 'event', + }, { anonymous: false, inputs: [ @@ -262,6 +387,24 @@ export class IZeroExContract extends BaseContract { outputs: [], type: 'event', }, + { + anonymous: false, + inputs: [ + { + name: 'orderHash', + type: 'bytes32', + indexed: false, + }, + { + name: 'maker', + type: 'address', + indexed: false, + }, + ], + name: 'OrderCancelled', + outputs: [], + type: 'event', + }, { anonymous: false, inputs: [ @@ -280,6 +423,62 @@ export class IZeroExContract extends BaseContract { outputs: [], type: 'event', }, + { + anonymous: false, + inputs: [ + { + name: 'maker', + type: 'address', + indexed: false, + }, + { + name: 'makerToken', + type: 'address', + indexed: false, + }, + { + name: 'takerToken', + type: 'address', + indexed: false, + }, + { + name: 'minValidSalt', + type: 'uint256', + indexed: false, + }, + ], + name: 'PairCancelledLimitOrders', + outputs: [], + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + name: 'maker', + type: 'address', + indexed: false, + }, + { + name: 'makerToken', + type: 'address', + indexed: false, + }, + { + name: 'takerToken', + type: 'address', + indexed: false, + }, + { + name: 'minValidSalt', + type: 'uint256', + indexed: false, + }, + ], + name: 'PairCancelledRfqOrders', + outputs: [], + type: 'event', + }, { anonymous: false, inputs: [ @@ -316,6 +515,77 @@ export class IZeroExContract extends BaseContract { outputs: [], type: 'event', }, + { + anonymous: false, + inputs: [ + { + name: 'orderHash', + type: 'bytes32', + indexed: false, + }, + { + name: 'maker', + type: 'address', + indexed: false, + }, + { + name: 'taker', + type: 'address', + indexed: false, + }, + { + name: 'makerToken', + type: 'address', + indexed: false, + }, + { + name: 'takerToken', + type: 'address', + indexed: false, + }, + { + name: 'takerTokenFilledAmount', + type: 'uint128', + indexed: false, + }, + { + name: 'makerTokenFilledAmount', + type: 'uint128', + indexed: false, + }, + { + name: 'pool', + type: 'bytes32', + indexed: false, + }, + ], + name: 'RfqOrderFilled', + outputs: [], + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + name: 'origin', + type: 'address', + indexed: false, + }, + { + name: 'addrs', + type: 'address[]', + indexed: false, + }, + { + name: 'allowed', + type: 'bool', + indexed: false, + }, + ], + name: 'RfqOrderOriginsAllowed', + outputs: [], + type: 'event', + }, { anonymous: false, inputs: [ @@ -416,7 +686,25 @@ export class IZeroExContract extends BaseContract { }, { name: 'signature', - type: 'bytes', + type: 'tuple', + components: [ + { + name: 'signatureType', + type: 'uint8', + }, + { + name: 'v', + type: 'uint8', + }, + { + name: 'r', + type: 'bytes32', + }, + { + name: 's', + type: 'bytes32', + }, + ], }, ], name: '_executeMetaTransaction', @@ -429,6 +717,204 @@ export class IZeroExContract extends BaseContract { stateMutability: 'payable', type: 'function', }, + { + inputs: [ + { + name: 'order', + type: 'tuple', + components: [ + { + name: 'makerToken', + type: 'address', + }, + { + name: 'takerToken', + type: 'address', + }, + { + name: 'makerAmount', + type: 'uint128', + }, + { + name: 'takerAmount', + type: 'uint128', + }, + { + name: 'takerTokenFeeAmount', + type: 'uint128', + }, + { + name: 'maker', + type: 'address', + }, + { + name: 'taker', + type: 'address', + }, + { + name: 'sender', + type: 'address', + }, + { + name: 'feeRecipient', + type: 'address', + }, + { + name: 'pool', + type: 'bytes32', + }, + { + name: 'expiry', + type: 'uint64', + }, + { + name: 'salt', + type: 'uint256', + }, + ], + }, + { + name: 'signature', + type: 'tuple', + components: [ + { + name: 'signatureType', + type: 'uint8', + }, + { + name: 'v', + type: 'uint8', + }, + { + name: 'r', + type: 'bytes32', + }, + { + name: 's', + type: 'bytes32', + }, + ], + }, + { + name: 'takerTokenFillAmount', + type: 'uint128', + }, + { + name: 'taker', + type: 'address', + }, + { + name: 'sender', + type: 'address', + }, + ], + name: '_fillLimitOrder', + outputs: [ + { + name: 'takerTokenFilledAmount', + type: 'uint128', + }, + { + name: 'makerTokenFilledAmount', + type: 'uint128', + }, + ], + stateMutability: 'payable', + type: 'function', + }, + { + inputs: [ + { + name: 'order', + type: 'tuple', + components: [ + { + name: 'makerToken', + type: 'address', + }, + { + name: 'takerToken', + type: 'address', + }, + { + name: 'makerAmount', + type: 'uint128', + }, + { + name: 'takerAmount', + type: 'uint128', + }, + { + name: 'maker', + type: 'address', + }, + { + name: 'taker', + type: 'address', + }, + { + name: 'txOrigin', + type: 'address', + }, + { + name: 'pool', + type: 'bytes32', + }, + { + name: 'expiry', + type: 'uint64', + }, + { + name: 'salt', + type: 'uint256', + }, + ], + }, + { + name: 'signature', + type: 'tuple', + components: [ + { + name: 'signatureType', + type: 'uint8', + }, + { + name: 'v', + type: 'uint8', + }, + { + name: 'r', + type: 'bytes32', + }, + { + name: 's', + type: 'bytes32', + }, + ], + }, + { + name: 'takerTokenFillAmount', + type: 'uint128', + }, + { + name: 'taker', + type: 'address', + }, + ], + name: '_fillRfqOrder', + outputs: [ + { + name: 'takerTokenFilledAmount', + type: 'uint128', + }, + { + name: 'makerTokenFilledAmount', + type: 'uint128', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, { inputs: [ { @@ -493,14 +979,6 @@ export class IZeroExContract extends BaseContract { }, ], }, - { - name: 'callDataHash', - type: 'bytes32', - }, - { - name: 'callDataSignature', - type: 'bytes', - }, ], }, ], @@ -514,6 +992,162 @@ export class IZeroExContract extends BaseContract { stateMutability: 'payable', type: 'function', }, + { + inputs: [ + { + name: 'orders', + type: 'tuple[]', + components: [ + { + name: 'makerToken', + type: 'address', + }, + { + name: 'takerToken', + type: 'address', + }, + { + name: 'makerAmount', + type: 'uint128', + }, + { + name: 'takerAmount', + type: 'uint128', + }, + { + name: 'takerTokenFeeAmount', + type: 'uint128', + }, + { + name: 'maker', + type: 'address', + }, + { + name: 'taker', + type: 'address', + }, + { + name: 'sender', + type: 'address', + }, + { + name: 'feeRecipient', + type: 'address', + }, + { + name: 'pool', + type: 'bytes32', + }, + { + name: 'expiry', + type: 'uint64', + }, + { + name: 'salt', + type: 'uint256', + }, + ], + }, + ], + name: 'batchCancelLimitOrders', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + name: 'makerTokens', + type: 'address[]', + }, + { + name: 'takerTokens', + type: 'address[]', + }, + { + name: 'minValidSalts', + type: 'uint256[]', + }, + ], + name: 'batchCancelPairLimitOrders', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + name: 'makerTokens', + type: 'address[]', + }, + { + name: 'takerTokens', + type: 'address[]', + }, + { + name: 'minValidSalts', + type: 'uint256[]', + }, + ], + name: 'batchCancelPairRfqOrders', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + name: 'orders', + type: 'tuple[]', + components: [ + { + name: 'makerToken', + type: 'address', + }, + { + name: 'takerToken', + type: 'address', + }, + { + name: 'makerAmount', + type: 'uint128', + }, + { + name: 'takerAmount', + type: 'uint128', + }, + { + name: 'maker', + type: 'address', + }, + { + name: 'taker', + type: 'address', + }, + { + name: 'txOrigin', + type: 'address', + }, + { + name: 'pool', + type: 'bytes32', + }, + { + name: 'expiry', + type: 'uint64', + }, + { + name: 'salt', + type: 'uint256', + }, + ], + }, + ], + name: 'batchCancelRfqOrders', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, { inputs: [ { @@ -564,7 +1198,25 @@ export class IZeroExContract extends BaseContract { }, { name: 'signatures', - type: 'bytes[]', + type: 'tuple[]', + components: [ + { + name: 'signatureType', + type: 'uint8', + }, + { + name: 'v', + type: 'uint8', + }, + { + name: 'r', + type: 'bytes32', + }, + { + name: 's', + type: 'bytes32', + }, + ], }, ], name: 'batchExecuteMetaTransactions', @@ -577,6 +1229,162 @@ export class IZeroExContract extends BaseContract { stateMutability: 'payable', type: 'function', }, + { + inputs: [ + { + name: 'order', + type: 'tuple', + components: [ + { + name: 'makerToken', + type: 'address', + }, + { + name: 'takerToken', + type: 'address', + }, + { + name: 'makerAmount', + type: 'uint128', + }, + { + name: 'takerAmount', + type: 'uint128', + }, + { + name: 'takerTokenFeeAmount', + type: 'uint128', + }, + { + name: 'maker', + type: 'address', + }, + { + name: 'taker', + type: 'address', + }, + { + name: 'sender', + type: 'address', + }, + { + name: 'feeRecipient', + type: 'address', + }, + { + name: 'pool', + type: 'bytes32', + }, + { + name: 'expiry', + type: 'uint64', + }, + { + name: 'salt', + type: 'uint256', + }, + ], + }, + ], + name: 'cancelLimitOrder', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + name: 'makerToken', + type: 'address', + }, + { + name: 'takerToken', + type: 'address', + }, + { + name: 'minValidSalt', + type: 'uint256', + }, + ], + name: 'cancelPairLimitOrders', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + name: 'makerToken', + type: 'address', + }, + { + name: 'takerToken', + type: 'address', + }, + { + name: 'minValidSalt', + type: 'uint256', + }, + ], + name: 'cancelPairRfqOrders', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + name: 'order', + type: 'tuple', + components: [ + { + name: 'makerToken', + type: 'address', + }, + { + name: 'takerToken', + type: 'address', + }, + { + name: 'makerAmount', + type: 'uint128', + }, + { + name: 'takerAmount', + type: 'uint128', + }, + { + name: 'maker', + type: 'address', + }, + { + name: 'taker', + type: 'address', + }, + { + name: 'txOrigin', + type: 'address', + }, + { + name: 'pool', + type: 'bytes32', + }, + { + name: 'expiry', + type: 'uint64', + }, + { + name: 'salt', + type: 'uint256', + }, + ], + }, + ], + name: 'cancelRfqOrder', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, { inputs: [], name: 'createTransformWallet', @@ -639,7 +1447,25 @@ export class IZeroExContract extends BaseContract { }, { name: 'signature', - type: 'bytes', + type: 'tuple', + components: [ + { + name: 'signatureType', + type: 'uint8', + }, + { + name: 'v', + type: 'uint8', + }, + { + name: 'r', + type: 'bytes32', + }, + { + name: 's', + type: 'bytes32', + }, + ], }, ], name: 'executeMetaTransaction', @@ -668,6 +1494,370 @@ export class IZeroExContract extends BaseContract { stateMutability: 'nonpayable', type: 'function', }, + { + inputs: [ + { + name: 'order', + type: 'tuple', + components: [ + { + name: 'makerToken', + type: 'address', + }, + { + name: 'takerToken', + type: 'address', + }, + { + name: 'makerAmount', + type: 'uint128', + }, + { + name: 'takerAmount', + type: 'uint128', + }, + { + name: 'takerTokenFeeAmount', + type: 'uint128', + }, + { + name: 'maker', + type: 'address', + }, + { + name: 'taker', + type: 'address', + }, + { + name: 'sender', + type: 'address', + }, + { + name: 'feeRecipient', + type: 'address', + }, + { + name: 'pool', + type: 'bytes32', + }, + { + name: 'expiry', + type: 'uint64', + }, + { + name: 'salt', + type: 'uint256', + }, + ], + }, + { + name: 'signature', + type: 'tuple', + components: [ + { + name: 'signatureType', + type: 'uint8', + }, + { + name: 'v', + type: 'uint8', + }, + { + name: 'r', + type: 'bytes32', + }, + { + name: 's', + type: 'bytes32', + }, + ], + }, + { + name: 'takerTokenFillAmount', + type: 'uint128', + }, + ], + name: 'fillLimitOrder', + outputs: [ + { + name: 'takerTokenFilledAmount', + type: 'uint128', + }, + { + name: 'makerTokenFilledAmount', + type: 'uint128', + }, + ], + stateMutability: 'payable', + type: 'function', + }, + { + inputs: [ + { + name: 'order', + type: 'tuple', + components: [ + { + name: 'makerToken', + type: 'address', + }, + { + name: 'takerToken', + type: 'address', + }, + { + name: 'makerAmount', + type: 'uint128', + }, + { + name: 'takerAmount', + type: 'uint128', + }, + { + name: 'takerTokenFeeAmount', + type: 'uint128', + }, + { + name: 'maker', + type: 'address', + }, + { + name: 'taker', + type: 'address', + }, + { + name: 'sender', + type: 'address', + }, + { + name: 'feeRecipient', + type: 'address', + }, + { + name: 'pool', + type: 'bytes32', + }, + { + name: 'expiry', + type: 'uint64', + }, + { + name: 'salt', + type: 'uint256', + }, + ], + }, + { + name: 'signature', + type: 'tuple', + components: [ + { + name: 'signatureType', + type: 'uint8', + }, + { + name: 'v', + type: 'uint8', + }, + { + name: 'r', + type: 'bytes32', + }, + { + name: 's', + type: 'bytes32', + }, + ], + }, + { + name: 'takerTokenFillAmount', + type: 'uint128', + }, + ], + name: 'fillOrKillLimitOrder', + outputs: [ + { + name: 'makerTokenFilledAmount', + type: 'uint128', + }, + ], + stateMutability: 'payable', + type: 'function', + }, + { + inputs: [ + { + name: 'order', + type: 'tuple', + components: [ + { + name: 'makerToken', + type: 'address', + }, + { + name: 'takerToken', + type: 'address', + }, + { + name: 'makerAmount', + type: 'uint128', + }, + { + name: 'takerAmount', + type: 'uint128', + }, + { + name: 'maker', + type: 'address', + }, + { + name: 'taker', + type: 'address', + }, + { + name: 'txOrigin', + type: 'address', + }, + { + name: 'pool', + type: 'bytes32', + }, + { + name: 'expiry', + type: 'uint64', + }, + { + name: 'salt', + type: 'uint256', + }, + ], + }, + { + name: 'signature', + type: 'tuple', + components: [ + { + name: 'signatureType', + type: 'uint8', + }, + { + name: 'v', + type: 'uint8', + }, + { + name: 'r', + type: 'bytes32', + }, + { + name: 's', + type: 'bytes32', + }, + ], + }, + { + name: 'takerTokenFillAmount', + type: 'uint128', + }, + ], + name: 'fillOrKillRfqOrder', + outputs: [ + { + name: 'makerTokenFilledAmount', + type: 'uint128', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + name: 'order', + type: 'tuple', + components: [ + { + name: 'makerToken', + type: 'address', + }, + { + name: 'takerToken', + type: 'address', + }, + { + name: 'makerAmount', + type: 'uint128', + }, + { + name: 'takerAmount', + type: 'uint128', + }, + { + name: 'maker', + type: 'address', + }, + { + name: 'taker', + type: 'address', + }, + { + name: 'txOrigin', + type: 'address', + }, + { + name: 'pool', + type: 'bytes32', + }, + { + name: 'expiry', + type: 'uint64', + }, + { + name: 'salt', + type: 'uint256', + }, + ], + }, + { + name: 'signature', + type: 'tuple', + components: [ + { + name: 'signatureType', + type: 'uint8', + }, + { + name: 'v', + type: 'uint8', + }, + { + name: 'r', + type: 'bytes32', + }, + { + name: 's', + type: 'bytes32', + }, + ], + }, + { + name: 'takerTokenFillAmount', + type: 'uint128', + }, + ], + name: 'fillRfqOrder', + outputs: [ + { + name: 'takerTokenFilledAmount', + type: 'uint128', + }, + { + name: 'makerTokenFilledAmount', + type: 'uint128', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, { inputs: [], name: 'getAllowanceTarget', @@ -683,15 +1873,146 @@ export class IZeroExContract extends BaseContract { { inputs: [ { - name: 'selector', - type: 'bytes4', + name: 'order', + type: 'tuple', + components: [ + { + name: 'makerToken', + type: 'address', + }, + { + name: 'takerToken', + type: 'address', + }, + { + name: 'makerAmount', + type: 'uint128', + }, + { + name: 'takerAmount', + type: 'uint128', + }, + { + name: 'takerTokenFeeAmount', + type: 'uint128', + }, + { + name: 'maker', + type: 'address', + }, + { + name: 'taker', + type: 'address', + }, + { + name: 'sender', + type: 'address', + }, + { + name: 'feeRecipient', + type: 'address', + }, + { + name: 'pool', + type: 'bytes32', + }, + { + name: 'expiry', + type: 'uint64', + }, + { + name: 'salt', + type: 'uint256', + }, + ], }, ], - name: 'getFunctionImplementation', + name: 'getLimitOrderHash', outputs: [ { - name: 'impl', - type: 'address', + name: 'orderHash', + type: 'bytes32', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + name: 'order', + type: 'tuple', + components: [ + { + name: 'makerToken', + type: 'address', + }, + { + name: 'takerToken', + type: 'address', + }, + { + name: 'makerAmount', + type: 'uint128', + }, + { + name: 'takerAmount', + type: 'uint128', + }, + { + name: 'takerTokenFeeAmount', + type: 'uint128', + }, + { + name: 'maker', + type: 'address', + }, + { + name: 'taker', + type: 'address', + }, + { + name: 'sender', + type: 'address', + }, + { + name: 'feeRecipient', + type: 'address', + }, + { + name: 'pool', + type: 'bytes32', + }, + { + name: 'expiry', + type: 'uint64', + }, + { + name: 'salt', + type: 'uint256', + }, + ], + }, + ], + name: 'getLimitOrderInfo', + outputs: [ + { + name: 'orderInfo', + type: 'tuple', + components: [ + { + name: 'orderHash', + type: 'bytes32', + }, + { + name: 'status', + type: 'uint8', + }, + { + name: 'takerTokenFilledAmount', + type: 'uint128', + }, + ], }, ], stateMutability: 'view', @@ -832,6 +2153,18 @@ export class IZeroExContract extends BaseContract { stateMutability: 'view', type: 'function', }, + { + inputs: [], + name: 'getProtocolFeeMultiplier', + outputs: [ + { + name: 'multiplier', + type: 'uint32', + }, + ], + stateMutability: 'view', + type: 'function', + }, { inputs: [], name: 'getQuoteSigner', @@ -844,6 +2177,138 @@ export class IZeroExContract extends BaseContract { stateMutability: 'view', type: 'function', }, + { + inputs: [ + { + name: 'order', + type: 'tuple', + components: [ + { + name: 'makerToken', + type: 'address', + }, + { + name: 'takerToken', + type: 'address', + }, + { + name: 'makerAmount', + type: 'uint128', + }, + { + name: 'takerAmount', + type: 'uint128', + }, + { + name: 'maker', + type: 'address', + }, + { + name: 'taker', + type: 'address', + }, + { + name: 'txOrigin', + type: 'address', + }, + { + name: 'pool', + type: 'bytes32', + }, + { + name: 'expiry', + type: 'uint64', + }, + { + name: 'salt', + type: 'uint256', + }, + ], + }, + ], + name: 'getRfqOrderHash', + outputs: [ + { + name: 'orderHash', + type: 'bytes32', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + name: 'order', + type: 'tuple', + components: [ + { + name: 'makerToken', + type: 'address', + }, + { + name: 'takerToken', + type: 'address', + }, + { + name: 'makerAmount', + type: 'uint128', + }, + { + name: 'takerAmount', + type: 'uint128', + }, + { + name: 'maker', + type: 'address', + }, + { + name: 'taker', + type: 'address', + }, + { + name: 'txOrigin', + type: 'address', + }, + { + name: 'pool', + type: 'bytes32', + }, + { + name: 'expiry', + type: 'uint64', + }, + { + name: 'salt', + type: 'uint256', + }, + ], + }, + ], + name: 'getRfqOrderInfo', + outputs: [ + { + name: 'orderInfo', + type: 'tuple', + components: [ + { + name: 'orderHash', + type: 'bytes32', + }, + { + name: 'status', + type: 'uint8', + }, + { + name: 'takerTokenFilledAmount', + type: 'uint128', + }, + ], + }, + ], + stateMutability: 'view', + type: 'function', + }, { inputs: [ { @@ -984,6 +2449,22 @@ export class IZeroExContract extends BaseContract { stateMutability: 'view', type: 'function', }, + { + inputs: [ + { + name: 'origins', + type: 'address[]', + }, + { + name: 'allowed', + type: 'bool', + }, + ], + name: 'registerAllowedRfqOrigins', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, { inputs: [ { @@ -1003,15 +2484,15 @@ export class IZeroExContract extends BaseContract { { inputs: [ { - name: 'makerToken', + name: 'inputToken', type: 'address', }, { - name: 'takerToken', + name: 'outputToken', type: 'address', }, { - name: 'target', + name: 'provider', type: 'address', }, { @@ -1106,6 +2587,18 @@ export class IZeroExContract extends BaseContract { stateMutability: 'nonpayable', type: 'function', }, + { + inputs: [ + { + name: 'poolIds', + type: 'bytes32[]', + }, + ], + name: 'transferProtocolFeesForPools', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, { inputs: [ { @@ -1251,7 +2744,7 @@ export class IZeroExContract extends BaseContract { /** * Execute a meta-transaction via `sender`. Privileged variant. * Only callable from within. - * @param sender Who is executing the meta-transaction.. + * @param sender Who is executing the meta-transaction. * @param mtx The meta-transaction. * @param signature The signature by `mtx.signer`. */ @@ -1269,14 +2762,13 @@ export class IZeroExContract extends BaseContract { feeToken: string; feeAmount: BigNumber; }, - signature: string, + signature: { signatureType: number | BigNumber; v: number | BigNumber; r: string; s: string }, ): ContractTxFunctionObj { const self = (this as any) as IZeroExContract; assert.isString('sender', sender); - assert.isString('signature', signature); const functionSignature = - '_executeMetaTransaction(address,(address,address,uint256,uint256,uint256,uint256,bytes,uint256,address,uint256),bytes)'; + '_executeMetaTransaction(address,(address,address,uint256,uint256,uint256,uint256,bytes,uint256,address,uint256),(uint8,uint8,bytes32,bytes32))'; return { async sendTransactionAsync( @@ -1320,6 +2812,176 @@ export class IZeroExContract extends BaseContract { }, }; } + /** + * Fill a limit order. Internal variant. ETH protocol fees can be + * attached to this call. Any unspent ETH will be refunded to + * `msg.sender` (not `sender`). + * @param order The limit order. + * @param signature The order signature. + * @param takerTokenFillAmount Maximum taker token to fill this order with. + * @param taker The order taker. + * @param sender The order sender. + */ + public _fillLimitOrder( + order: { + makerToken: string; + takerToken: string; + makerAmount: BigNumber; + takerAmount: BigNumber; + takerTokenFeeAmount: BigNumber; + maker: string; + taker: string; + sender: string; + feeRecipient: string; + pool: string; + expiry: BigNumber; + salt: BigNumber; + }, + signature: { signatureType: number | BigNumber; v: number | BigNumber; r: string; s: string }, + takerTokenFillAmount: BigNumber, + taker: string, + sender: string, + ): ContractTxFunctionObj<[BigNumber, BigNumber]> { + const self = (this as any) as IZeroExContract; + + assert.isBigNumber('takerTokenFillAmount', takerTokenFillAmount); + assert.isString('taker', taker); + assert.isString('sender', sender); + const functionSignature = + '_fillLimitOrder((address,address,uint128,uint128,uint128,address,address,address,address,bytes32,uint64,uint256),(uint8,uint8,bytes32,bytes32),uint128,address,address)'; + + return { + async sendTransactionAsync( + txData?: Partial | undefined, + opts: SendTransactionOpts = { shouldValidate: true }, + ): Promise { + const txDataWithDefaults = await self._applyDefaultsToTxDataAsync( + { data: this.getABIEncodedTransactionData(), ...txData }, + this.estimateGasAsync.bind(this), + ); + if (opts.shouldValidate !== false) { + await this.callAsync(txDataWithDefaults); + } + return self._web3Wrapper.sendTransactionAsync(txDataWithDefaults); + }, + awaitTransactionSuccessAsync( + txData?: Partial, + opts: AwaitTransactionSuccessOpts = { shouldValidate: true }, + ): PromiseWithTransactionHash { + return self._promiseWithTransactionHash(this.sendTransactionAsync(txData, opts), opts); + }, + async estimateGasAsync(txData?: Partial | undefined): Promise { + const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({ + data: this.getABIEncodedTransactionData(), + ...txData, + }); + return self._web3Wrapper.estimateGasAsync(txDataWithDefaults); + }, + async callAsync( + callData: Partial = {}, + defaultBlock?: BlockParam, + ): Promise<[BigNumber, BigNumber]> { + BaseContract._assertCallParams(callData, defaultBlock); + const rawCallResult = await self._performCallAsync( + { data: this.getABIEncodedTransactionData(), ...callData }, + defaultBlock, + ); + const abiEncoder = self._lookupAbiEncoder(functionSignature); + BaseContract._throwIfUnexpectedEmptyCallResult(rawCallResult, abiEncoder); + return abiEncoder.strictDecodeReturnValue<[BigNumber, BigNumber]>(rawCallResult); + }, + getABIEncodedTransactionData(): string { + return self._strictEncodeArguments(functionSignature, [ + order, + signature, + takerTokenFillAmount, + taker.toLowerCase(), + sender.toLowerCase(), + ]); + }, + }; + } + /** + * Fill an RFQ order. Internal variant. + * @param order The RFQ order. + * @param signature The order signature. + * @param takerTokenFillAmount Maximum taker token to fill this order with. + * @param taker The order taker. + */ + public _fillRfqOrder( + order: { + makerToken: string; + takerToken: string; + makerAmount: BigNumber; + takerAmount: BigNumber; + maker: string; + taker: string; + txOrigin: string; + pool: string; + expiry: BigNumber; + salt: BigNumber; + }, + signature: { signatureType: number | BigNumber; v: number | BigNumber; r: string; s: string }, + takerTokenFillAmount: BigNumber, + taker: string, + ): ContractTxFunctionObj<[BigNumber, BigNumber]> { + const self = (this as any) as IZeroExContract; + + assert.isBigNumber('takerTokenFillAmount', takerTokenFillAmount); + assert.isString('taker', taker); + const functionSignature = + '_fillRfqOrder((address,address,uint128,uint128,address,address,address,bytes32,uint64,uint256),(uint8,uint8,bytes32,bytes32),uint128,address)'; + + return { + async sendTransactionAsync( + txData?: Partial | undefined, + opts: SendTransactionOpts = { shouldValidate: true }, + ): Promise { + const txDataWithDefaults = await self._applyDefaultsToTxDataAsync( + { data: this.getABIEncodedTransactionData(), ...txData }, + this.estimateGasAsync.bind(this), + ); + if (opts.shouldValidate !== false) { + await this.callAsync(txDataWithDefaults); + } + return self._web3Wrapper.sendTransactionAsync(txDataWithDefaults); + }, + awaitTransactionSuccessAsync( + txData?: Partial, + opts: AwaitTransactionSuccessOpts = { shouldValidate: true }, + ): PromiseWithTransactionHash { + return self._promiseWithTransactionHash(this.sendTransactionAsync(txData, opts), opts); + }, + async estimateGasAsync(txData?: Partial | undefined): Promise { + const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({ + data: this.getABIEncodedTransactionData(), + ...txData, + }); + return self._web3Wrapper.estimateGasAsync(txDataWithDefaults); + }, + async callAsync( + callData: Partial = {}, + defaultBlock?: BlockParam, + ): Promise<[BigNumber, BigNumber]> { + BaseContract._assertCallParams(callData, defaultBlock); + const rawCallResult = await self._performCallAsync( + { data: this.getABIEncodedTransactionData(), ...callData }, + defaultBlock, + ); + const abiEncoder = self._lookupAbiEncoder(functionSignature); + BaseContract._throwIfUnexpectedEmptyCallResult(rawCallResult, abiEncoder); + return abiEncoder.strictDecodeReturnValue<[BigNumber, BigNumber]>(rawCallResult); + }, + getABIEncodedTransactionData(): string { + return self._strictEncodeArguments(functionSignature, [ + order, + signature, + takerTokenFillAmount, + taker.toLowerCase(), + ]); + }, + }; + } /** * Transfers ERC20 tokens from `owner` to `to`. * Only callable from within. @@ -1394,13 +3056,10 @@ export class IZeroExContract extends BaseContract { inputTokenAmount: BigNumber; minOutputTokenAmount: BigNumber; transformations: Array<{ deploymentNonce: number | BigNumber; data: string }>; - callDataHash: string; - callDataSignature: string; }): ContractTxFunctionObj { const self = (this as any) as IZeroExContract; - const functionSignature = - '_transformERC20((address,address,address,uint256,uint256,(uint32,bytes)[],bytes32,bytes))'; + const functionSignature = '_transformERC20((address,address,address,uint256,uint256,(uint32,bytes)[]))'; return { async sendTransactionAsync( @@ -1444,6 +3103,264 @@ export class IZeroExContract extends BaseContract { }, }; } + /** + * Cancel multiple limit orders. The caller must be the maker. + * Silently succeeds if the order has already been cancelled. + * @param orders The limit orders. + */ + public batchCancelLimitOrders( + orders: Array<{ + makerToken: string; + takerToken: string; + makerAmount: BigNumber; + takerAmount: BigNumber; + takerTokenFeeAmount: BigNumber; + maker: string; + taker: string; + sender: string; + feeRecipient: string; + pool: string; + expiry: BigNumber; + salt: BigNumber; + }>, + ): ContractTxFunctionObj { + const self = (this as any) as IZeroExContract; + assert.isArray('orders', orders); + const functionSignature = + 'batchCancelLimitOrders((address,address,uint128,uint128,uint128,address,address,address,address,bytes32,uint64,uint256)[])'; + + return { + async sendTransactionAsync( + txData?: Partial | undefined, + opts: SendTransactionOpts = { shouldValidate: true }, + ): Promise { + const txDataWithDefaults = await self._applyDefaultsToTxDataAsync( + { data: this.getABIEncodedTransactionData(), ...txData }, + this.estimateGasAsync.bind(this), + ); + if (opts.shouldValidate !== false) { + await this.callAsync(txDataWithDefaults); + } + return self._web3Wrapper.sendTransactionAsync(txDataWithDefaults); + }, + awaitTransactionSuccessAsync( + txData?: Partial, + opts: AwaitTransactionSuccessOpts = { shouldValidate: true }, + ): PromiseWithTransactionHash { + return self._promiseWithTransactionHash(this.sendTransactionAsync(txData, opts), opts); + }, + async estimateGasAsync(txData?: Partial | undefined): Promise { + const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({ + data: this.getABIEncodedTransactionData(), + ...txData, + }); + return self._web3Wrapper.estimateGasAsync(txDataWithDefaults); + }, + async callAsync(callData: Partial = {}, defaultBlock?: BlockParam): Promise { + BaseContract._assertCallParams(callData, defaultBlock); + const rawCallResult = await self._performCallAsync( + { data: this.getABIEncodedTransactionData(), ...callData }, + defaultBlock, + ); + const abiEncoder = self._lookupAbiEncoder(functionSignature); + BaseContract._throwIfUnexpectedEmptyCallResult(rawCallResult, abiEncoder); + return abiEncoder.strictDecodeReturnValue(rawCallResult); + }, + getABIEncodedTransactionData(): string { + return self._strictEncodeArguments(functionSignature, [orders]); + }, + }; + } + /** + * Cancel all limit orders for a given maker and pair with a salt less + * than the value provided. The caller must be the maker. Subsequent + * calls to this function with the same caller and pair require the + * new salt to be >= the old salt. + * @param makerTokens The maker tokens. + * @param takerTokens The taker tokens. + * @param minValidSalts The new minimum valid salts. + */ + public batchCancelPairLimitOrders( + makerTokens: string[], + takerTokens: string[], + minValidSalts: BigNumber[], + ): ContractTxFunctionObj { + const self = (this as any) as IZeroExContract; + assert.isArray('makerTokens', makerTokens); + assert.isArray('takerTokens', takerTokens); + assert.isArray('minValidSalts', minValidSalts); + const functionSignature = 'batchCancelPairLimitOrders(address[],address[],uint256[])'; + + return { + async sendTransactionAsync( + txData?: Partial | undefined, + opts: SendTransactionOpts = { shouldValidate: true }, + ): Promise { + const txDataWithDefaults = await self._applyDefaultsToTxDataAsync( + { data: this.getABIEncodedTransactionData(), ...txData }, + this.estimateGasAsync.bind(this), + ); + if (opts.shouldValidate !== false) { + await this.callAsync(txDataWithDefaults); + } + return self._web3Wrapper.sendTransactionAsync(txDataWithDefaults); + }, + awaitTransactionSuccessAsync( + txData?: Partial, + opts: AwaitTransactionSuccessOpts = { shouldValidate: true }, + ): PromiseWithTransactionHash { + return self._promiseWithTransactionHash(this.sendTransactionAsync(txData, opts), opts); + }, + async estimateGasAsync(txData?: Partial | undefined): Promise { + const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({ + data: this.getABIEncodedTransactionData(), + ...txData, + }); + return self._web3Wrapper.estimateGasAsync(txDataWithDefaults); + }, + async callAsync(callData: Partial = {}, defaultBlock?: BlockParam): Promise { + BaseContract._assertCallParams(callData, defaultBlock); + const rawCallResult = await self._performCallAsync( + { data: this.getABIEncodedTransactionData(), ...callData }, + defaultBlock, + ); + const abiEncoder = self._lookupAbiEncoder(functionSignature); + BaseContract._throwIfUnexpectedEmptyCallResult(rawCallResult, abiEncoder); + return abiEncoder.strictDecodeReturnValue(rawCallResult); + }, + getABIEncodedTransactionData(): string { + return self._strictEncodeArguments(functionSignature, [makerTokens, takerTokens, minValidSalts]); + }, + }; + } + /** + * Cancel all RFQ orders for a given maker and pair with a salt less + * than the value provided. The caller must be the maker. Subsequent + * calls to this function with the same caller and pair require the + * new salt to be >= the old salt. + * @param makerTokens The maker tokens. + * @param takerTokens The taker tokens. + * @param minValidSalts The new minimum valid salts. + */ + public batchCancelPairRfqOrders( + makerTokens: string[], + takerTokens: string[], + minValidSalts: BigNumber[], + ): ContractTxFunctionObj { + const self = (this as any) as IZeroExContract; + assert.isArray('makerTokens', makerTokens); + assert.isArray('takerTokens', takerTokens); + assert.isArray('minValidSalts', minValidSalts); + const functionSignature = 'batchCancelPairRfqOrders(address[],address[],uint256[])'; + + return { + async sendTransactionAsync( + txData?: Partial | undefined, + opts: SendTransactionOpts = { shouldValidate: true }, + ): Promise { + const txDataWithDefaults = await self._applyDefaultsToTxDataAsync( + { data: this.getABIEncodedTransactionData(), ...txData }, + this.estimateGasAsync.bind(this), + ); + if (opts.shouldValidate !== false) { + await this.callAsync(txDataWithDefaults); + } + return self._web3Wrapper.sendTransactionAsync(txDataWithDefaults); + }, + awaitTransactionSuccessAsync( + txData?: Partial, + opts: AwaitTransactionSuccessOpts = { shouldValidate: true }, + ): PromiseWithTransactionHash { + return self._promiseWithTransactionHash(this.sendTransactionAsync(txData, opts), opts); + }, + async estimateGasAsync(txData?: Partial | undefined): Promise { + const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({ + data: this.getABIEncodedTransactionData(), + ...txData, + }); + return self._web3Wrapper.estimateGasAsync(txDataWithDefaults); + }, + async callAsync(callData: Partial = {}, defaultBlock?: BlockParam): Promise { + BaseContract._assertCallParams(callData, defaultBlock); + const rawCallResult = await self._performCallAsync( + { data: this.getABIEncodedTransactionData(), ...callData }, + defaultBlock, + ); + const abiEncoder = self._lookupAbiEncoder(functionSignature); + BaseContract._throwIfUnexpectedEmptyCallResult(rawCallResult, abiEncoder); + return abiEncoder.strictDecodeReturnValue(rawCallResult); + }, + getABIEncodedTransactionData(): string { + return self._strictEncodeArguments(functionSignature, [makerTokens, takerTokens, minValidSalts]); + }, + }; + } + /** + * Cancel multiple RFQ orders. The caller must be the maker. + * Silently succeeds if the order has already been cancelled. + * @param orders The RFQ orders. + */ + public batchCancelRfqOrders( + orders: Array<{ + makerToken: string; + takerToken: string; + makerAmount: BigNumber; + takerAmount: BigNumber; + maker: string; + taker: string; + txOrigin: string; + pool: string; + expiry: BigNumber; + salt: BigNumber; + }>, + ): ContractTxFunctionObj { + const self = (this as any) as IZeroExContract; + assert.isArray('orders', orders); + const functionSignature = + 'batchCancelRfqOrders((address,address,uint128,uint128,address,address,address,bytes32,uint64,uint256)[])'; + + return { + async sendTransactionAsync( + txData?: Partial | undefined, + opts: SendTransactionOpts = { shouldValidate: true }, + ): Promise { + const txDataWithDefaults = await self._applyDefaultsToTxDataAsync( + { data: this.getABIEncodedTransactionData(), ...txData }, + this.estimateGasAsync.bind(this), + ); + if (opts.shouldValidate !== false) { + await this.callAsync(txDataWithDefaults); + } + return self._web3Wrapper.sendTransactionAsync(txDataWithDefaults); + }, + awaitTransactionSuccessAsync( + txData?: Partial, + opts: AwaitTransactionSuccessOpts = { shouldValidate: true }, + ): PromiseWithTransactionHash { + return self._promiseWithTransactionHash(this.sendTransactionAsync(txData, opts), opts); + }, + async estimateGasAsync(txData?: Partial | undefined): Promise { + const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({ + data: this.getABIEncodedTransactionData(), + ...txData, + }); + return self._web3Wrapper.estimateGasAsync(txDataWithDefaults); + }, + async callAsync(callData: Partial = {}, defaultBlock?: BlockParam): Promise { + BaseContract._assertCallParams(callData, defaultBlock); + const rawCallResult = await self._performCallAsync( + { data: this.getABIEncodedTransactionData(), ...callData }, + defaultBlock, + ); + const abiEncoder = self._lookupAbiEncoder(functionSignature); + BaseContract._throwIfUnexpectedEmptyCallResult(rawCallResult, abiEncoder); + return abiEncoder.strictDecodeReturnValue(rawCallResult); + }, + getABIEncodedTransactionData(): string { + return self._strictEncodeArguments(functionSignature, [orders]); + }, + }; + } /** * Execute multiple meta-transactions. * @param mtxs The meta-transactions. @@ -1462,13 +3379,13 @@ export class IZeroExContract extends BaseContract { feeToken: string; feeAmount: BigNumber; }>, - signatures: string[], + signatures: Array<{ signatureType: number | BigNumber; v: number | BigNumber; r: string; s: string }>, ): ContractTxFunctionObj { const self = (this as any) as IZeroExContract; assert.isArray('mtxs', mtxs); assert.isArray('signatures', signatures); const functionSignature = - 'batchExecuteMetaTransactions((address,address,uint256,uint256,uint256,uint256,bytes,uint256,address,uint256)[],bytes[])'; + 'batchExecuteMetaTransactions((address,address,uint256,uint256,uint256,uint256,bytes,uint256,address,uint256)[],(uint8,uint8,bytes32,bytes32)[])'; return { async sendTransactionAsync( @@ -1512,6 +3429,268 @@ export class IZeroExContract extends BaseContract { }, }; } + /** + * Cancel a single limit order. The caller must be the maker. + * Silently succeeds if the order has already been cancelled. + * @param order The limit order. + */ + public cancelLimitOrder(order: { + makerToken: string; + takerToken: string; + makerAmount: BigNumber; + takerAmount: BigNumber; + takerTokenFeeAmount: BigNumber; + maker: string; + taker: string; + sender: string; + feeRecipient: string; + pool: string; + expiry: BigNumber; + salt: BigNumber; + }): ContractTxFunctionObj { + const self = (this as any) as IZeroExContract; + + const functionSignature = + 'cancelLimitOrder((address,address,uint128,uint128,uint128,address,address,address,address,bytes32,uint64,uint256))'; + + return { + async sendTransactionAsync( + txData?: Partial | undefined, + opts: SendTransactionOpts = { shouldValidate: true }, + ): Promise { + const txDataWithDefaults = await self._applyDefaultsToTxDataAsync( + { data: this.getABIEncodedTransactionData(), ...txData }, + this.estimateGasAsync.bind(this), + ); + if (opts.shouldValidate !== false) { + await this.callAsync(txDataWithDefaults); + } + return self._web3Wrapper.sendTransactionAsync(txDataWithDefaults); + }, + awaitTransactionSuccessAsync( + txData?: Partial, + opts: AwaitTransactionSuccessOpts = { shouldValidate: true }, + ): PromiseWithTransactionHash { + return self._promiseWithTransactionHash(this.sendTransactionAsync(txData, opts), opts); + }, + async estimateGasAsync(txData?: Partial | undefined): Promise { + const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({ + data: this.getABIEncodedTransactionData(), + ...txData, + }); + return self._web3Wrapper.estimateGasAsync(txDataWithDefaults); + }, + async callAsync(callData: Partial = {}, defaultBlock?: BlockParam): Promise { + BaseContract._assertCallParams(callData, defaultBlock); + const rawCallResult = await self._performCallAsync( + { data: this.getABIEncodedTransactionData(), ...callData }, + defaultBlock, + ); + const abiEncoder = self._lookupAbiEncoder(functionSignature); + BaseContract._throwIfUnexpectedEmptyCallResult(rawCallResult, abiEncoder); + return abiEncoder.strictDecodeReturnValue(rawCallResult); + }, + getABIEncodedTransactionData(): string { + return self._strictEncodeArguments(functionSignature, [order]); + }, + }; + } + /** + * Cancel all limit orders for a given maker and pair with a salt less + * than the value provided. The caller must be the maker. Subsequent + * calls to this function with the same caller and pair require the + * new salt to be >= the old salt. + * @param makerToken The maker token. + * @param takerToken The taker token. + * @param minValidSalt The new minimum valid salt. + */ + public cancelPairLimitOrders( + makerToken: string, + takerToken: string, + minValidSalt: BigNumber, + ): ContractTxFunctionObj { + const self = (this as any) as IZeroExContract; + assert.isString('makerToken', makerToken); + assert.isString('takerToken', takerToken); + assert.isBigNumber('minValidSalt', minValidSalt); + const functionSignature = 'cancelPairLimitOrders(address,address,uint256)'; + + return { + async sendTransactionAsync( + txData?: Partial | undefined, + opts: SendTransactionOpts = { shouldValidate: true }, + ): Promise { + const txDataWithDefaults = await self._applyDefaultsToTxDataAsync( + { data: this.getABIEncodedTransactionData(), ...txData }, + this.estimateGasAsync.bind(this), + ); + if (opts.shouldValidate !== false) { + await this.callAsync(txDataWithDefaults); + } + return self._web3Wrapper.sendTransactionAsync(txDataWithDefaults); + }, + awaitTransactionSuccessAsync( + txData?: Partial, + opts: AwaitTransactionSuccessOpts = { shouldValidate: true }, + ): PromiseWithTransactionHash { + return self._promiseWithTransactionHash(this.sendTransactionAsync(txData, opts), opts); + }, + async estimateGasAsync(txData?: Partial | undefined): Promise { + const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({ + data: this.getABIEncodedTransactionData(), + ...txData, + }); + return self._web3Wrapper.estimateGasAsync(txDataWithDefaults); + }, + async callAsync(callData: Partial = {}, defaultBlock?: BlockParam): Promise { + BaseContract._assertCallParams(callData, defaultBlock); + const rawCallResult = await self._performCallAsync( + { data: this.getABIEncodedTransactionData(), ...callData }, + defaultBlock, + ); + const abiEncoder = self._lookupAbiEncoder(functionSignature); + BaseContract._throwIfUnexpectedEmptyCallResult(rawCallResult, abiEncoder); + return abiEncoder.strictDecodeReturnValue(rawCallResult); + }, + getABIEncodedTransactionData(): string { + return self._strictEncodeArguments(functionSignature, [ + makerToken.toLowerCase(), + takerToken.toLowerCase(), + minValidSalt, + ]); + }, + }; + } + /** + * Cancel all RFQ orders for a given maker and pair with a salt less + * than the value provided. The caller must be the maker. Subsequent + * calls to this function with the same caller and pair require the + * new salt to be >= the old salt. + * @param makerToken The maker token. + * @param takerToken The taker token. + * @param minValidSalt The new minimum valid salt. + */ + public cancelPairRfqOrders( + makerToken: string, + takerToken: string, + minValidSalt: BigNumber, + ): ContractTxFunctionObj { + const self = (this as any) as IZeroExContract; + assert.isString('makerToken', makerToken); + assert.isString('takerToken', takerToken); + assert.isBigNumber('minValidSalt', minValidSalt); + const functionSignature = 'cancelPairRfqOrders(address,address,uint256)'; + + return { + async sendTransactionAsync( + txData?: Partial | undefined, + opts: SendTransactionOpts = { shouldValidate: true }, + ): Promise { + const txDataWithDefaults = await self._applyDefaultsToTxDataAsync( + { data: this.getABIEncodedTransactionData(), ...txData }, + this.estimateGasAsync.bind(this), + ); + if (opts.shouldValidate !== false) { + await this.callAsync(txDataWithDefaults); + } + return self._web3Wrapper.sendTransactionAsync(txDataWithDefaults); + }, + awaitTransactionSuccessAsync( + txData?: Partial, + opts: AwaitTransactionSuccessOpts = { shouldValidate: true }, + ): PromiseWithTransactionHash { + return self._promiseWithTransactionHash(this.sendTransactionAsync(txData, opts), opts); + }, + async estimateGasAsync(txData?: Partial | undefined): Promise { + const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({ + data: this.getABIEncodedTransactionData(), + ...txData, + }); + return self._web3Wrapper.estimateGasAsync(txDataWithDefaults); + }, + async callAsync(callData: Partial = {}, defaultBlock?: BlockParam): Promise { + BaseContract._assertCallParams(callData, defaultBlock); + const rawCallResult = await self._performCallAsync( + { data: this.getABIEncodedTransactionData(), ...callData }, + defaultBlock, + ); + const abiEncoder = self._lookupAbiEncoder(functionSignature); + BaseContract._throwIfUnexpectedEmptyCallResult(rawCallResult, abiEncoder); + return abiEncoder.strictDecodeReturnValue(rawCallResult); + }, + getABIEncodedTransactionData(): string { + return self._strictEncodeArguments(functionSignature, [ + makerToken.toLowerCase(), + takerToken.toLowerCase(), + minValidSalt, + ]); + }, + }; + } + /** + * Cancel a single RFQ order. The caller must be the maker. + * Silently succeeds if the order has already been cancelled. + * @param order The RFQ order. + */ + public cancelRfqOrder(order: { + makerToken: string; + takerToken: string; + makerAmount: BigNumber; + takerAmount: BigNumber; + maker: string; + taker: string; + txOrigin: string; + pool: string; + expiry: BigNumber; + salt: BigNumber; + }): ContractTxFunctionObj { + const self = (this as any) as IZeroExContract; + + const functionSignature = + 'cancelRfqOrder((address,address,uint128,uint128,address,address,address,bytes32,uint64,uint256))'; + + return { + async sendTransactionAsync( + txData?: Partial | undefined, + opts: SendTransactionOpts = { shouldValidate: true }, + ): Promise { + const txDataWithDefaults = await self._applyDefaultsToTxDataAsync( + { data: this.getABIEncodedTransactionData(), ...txData }, + this.estimateGasAsync.bind(this), + ); + if (opts.shouldValidate !== false) { + await this.callAsync(txDataWithDefaults); + } + return self._web3Wrapper.sendTransactionAsync(txDataWithDefaults); + }, + awaitTransactionSuccessAsync( + txData?: Partial, + opts: AwaitTransactionSuccessOpts = { shouldValidate: true }, + ): PromiseWithTransactionHash { + return self._promiseWithTransactionHash(this.sendTransactionAsync(txData, opts), opts); + }, + async estimateGasAsync(txData?: Partial | undefined): Promise { + const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({ + data: this.getABIEncodedTransactionData(), + ...txData, + }); + return self._web3Wrapper.estimateGasAsync(txDataWithDefaults); + }, + async callAsync(callData: Partial = {}, defaultBlock?: BlockParam): Promise { + BaseContract._assertCallParams(callData, defaultBlock); + const rawCallResult = await self._performCallAsync( + { data: this.getABIEncodedTransactionData(), ...callData }, + defaultBlock, + ); + const abiEncoder = self._lookupAbiEncoder(functionSignature); + BaseContract._throwIfUnexpectedEmptyCallResult(rawCallResult, abiEncoder); + return abiEncoder.strictDecodeReturnValue(rawCallResult); + }, + getABIEncodedTransactionData(): string { + return self._strictEncodeArguments(functionSignature, [order]); + }, + }; + } /** * Deploy a new flash wallet instance and replace the current one with it. * Useful if we somehow break the current wallet instance. @@ -1581,13 +3760,12 @@ export class IZeroExContract extends BaseContract { feeToken: string; feeAmount: BigNumber; }, - signature: string, + signature: { signatureType: number | BigNumber; v: number | BigNumber; r: string; s: string }, ): ContractTxFunctionObj { const self = (this as any) as IZeroExContract; - assert.isString('signature', signature); const functionSignature = - 'executeMetaTransaction((address,address,uint256,uint256,uint256,uint256,bytes,uint256,address,uint256),bytes)'; + 'executeMetaTransaction((address,address,uint256,uint256,uint256,uint256,bytes,uint256,address,uint256),(uint8,uint8,bytes32,bytes32))'; return { async sendTransactionAsync( @@ -1684,6 +3862,304 @@ export class IZeroExContract extends BaseContract { }, }; } + /** + * Fill a limit order. The taker and sender will be the caller. + * @param order The limit order. ETH protocol fees can be attached to this + * call. Any unspent ETH will be refunded to the caller. + * @param signature The order signature. + * @param takerTokenFillAmount Maximum taker token amount to fill this order + * with. + */ + public fillLimitOrder( + order: { + makerToken: string; + takerToken: string; + makerAmount: BigNumber; + takerAmount: BigNumber; + takerTokenFeeAmount: BigNumber; + maker: string; + taker: string; + sender: string; + feeRecipient: string; + pool: string; + expiry: BigNumber; + salt: BigNumber; + }, + signature: { signatureType: number | BigNumber; v: number | BigNumber; r: string; s: string }, + takerTokenFillAmount: BigNumber, + ): ContractTxFunctionObj<[BigNumber, BigNumber]> { + const self = (this as any) as IZeroExContract; + + assert.isBigNumber('takerTokenFillAmount', takerTokenFillAmount); + const functionSignature = + 'fillLimitOrder((address,address,uint128,uint128,uint128,address,address,address,address,bytes32,uint64,uint256),(uint8,uint8,bytes32,bytes32),uint128)'; + + return { + async sendTransactionAsync( + txData?: Partial | undefined, + opts: SendTransactionOpts = { shouldValidate: true }, + ): Promise { + const txDataWithDefaults = await self._applyDefaultsToTxDataAsync( + { data: this.getABIEncodedTransactionData(), ...txData }, + this.estimateGasAsync.bind(this), + ); + if (opts.shouldValidate !== false) { + await this.callAsync(txDataWithDefaults); + } + return self._web3Wrapper.sendTransactionAsync(txDataWithDefaults); + }, + awaitTransactionSuccessAsync( + txData?: Partial, + opts: AwaitTransactionSuccessOpts = { shouldValidate: true }, + ): PromiseWithTransactionHash { + return self._promiseWithTransactionHash(this.sendTransactionAsync(txData, opts), opts); + }, + async estimateGasAsync(txData?: Partial | undefined): Promise { + const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({ + data: this.getABIEncodedTransactionData(), + ...txData, + }); + return self._web3Wrapper.estimateGasAsync(txDataWithDefaults); + }, + async callAsync( + callData: Partial = {}, + defaultBlock?: BlockParam, + ): Promise<[BigNumber, BigNumber]> { + BaseContract._assertCallParams(callData, defaultBlock); + const rawCallResult = await self._performCallAsync( + { data: this.getABIEncodedTransactionData(), ...callData }, + defaultBlock, + ); + const abiEncoder = self._lookupAbiEncoder(functionSignature); + BaseContract._throwIfUnexpectedEmptyCallResult(rawCallResult, abiEncoder); + return abiEncoder.strictDecodeReturnValue<[BigNumber, BigNumber]>(rawCallResult); + }, + getABIEncodedTransactionData(): string { + return self._strictEncodeArguments(functionSignature, [order, signature, takerTokenFillAmount]); + }, + }; + } + /** + * Fill an RFQ order for exactly `takerTokenFillAmount` taker tokens. + * The taker will be the caller. ETH protocol fees can be + * attached to this call. Any unspent ETH will be refunded to + * the caller. + * @param order The limit order. + * @param signature The order signature. + * @param takerTokenFillAmount How much taker token to fill this order with. + */ + public fillOrKillLimitOrder( + order: { + makerToken: string; + takerToken: string; + makerAmount: BigNumber; + takerAmount: BigNumber; + takerTokenFeeAmount: BigNumber; + maker: string; + taker: string; + sender: string; + feeRecipient: string; + pool: string; + expiry: BigNumber; + salt: BigNumber; + }, + signature: { signatureType: number | BigNumber; v: number | BigNumber; r: string; s: string }, + takerTokenFillAmount: BigNumber, + ): ContractTxFunctionObj { + const self = (this as any) as IZeroExContract; + + assert.isBigNumber('takerTokenFillAmount', takerTokenFillAmount); + const functionSignature = + 'fillOrKillLimitOrder((address,address,uint128,uint128,uint128,address,address,address,address,bytes32,uint64,uint256),(uint8,uint8,bytes32,bytes32),uint128)'; + + return { + async sendTransactionAsync( + txData?: Partial | undefined, + opts: SendTransactionOpts = { shouldValidate: true }, + ): Promise { + const txDataWithDefaults = await self._applyDefaultsToTxDataAsync( + { data: this.getABIEncodedTransactionData(), ...txData }, + this.estimateGasAsync.bind(this), + ); + if (opts.shouldValidate !== false) { + await this.callAsync(txDataWithDefaults); + } + return self._web3Wrapper.sendTransactionAsync(txDataWithDefaults); + }, + awaitTransactionSuccessAsync( + txData?: Partial, + opts: AwaitTransactionSuccessOpts = { shouldValidate: true }, + ): PromiseWithTransactionHash { + return self._promiseWithTransactionHash(this.sendTransactionAsync(txData, opts), opts); + }, + async estimateGasAsync(txData?: Partial | undefined): Promise { + const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({ + data: this.getABIEncodedTransactionData(), + ...txData, + }); + return self._web3Wrapper.estimateGasAsync(txDataWithDefaults); + }, + async callAsync(callData: Partial = {}, defaultBlock?: BlockParam): Promise { + BaseContract._assertCallParams(callData, defaultBlock); + const rawCallResult = await self._performCallAsync( + { data: this.getABIEncodedTransactionData(), ...callData }, + defaultBlock, + ); + const abiEncoder = self._lookupAbiEncoder(functionSignature); + BaseContract._throwIfUnexpectedEmptyCallResult(rawCallResult, abiEncoder); + return abiEncoder.strictDecodeReturnValue(rawCallResult); + }, + getABIEncodedTransactionData(): string { + return self._strictEncodeArguments(functionSignature, [order, signature, takerTokenFillAmount]); + }, + }; + } + /** + * Fill an RFQ order for exactly `takerTokenFillAmount` taker tokens. + * The taker will be the caller. + * @param order The RFQ order. + * @param signature The order signature. + * @param takerTokenFillAmount How much taker token to fill this order with. + */ + public fillOrKillRfqOrder( + order: { + makerToken: string; + takerToken: string; + makerAmount: BigNumber; + takerAmount: BigNumber; + maker: string; + taker: string; + txOrigin: string; + pool: string; + expiry: BigNumber; + salt: BigNumber; + }, + signature: { signatureType: number | BigNumber; v: number | BigNumber; r: string; s: string }, + takerTokenFillAmount: BigNumber, + ): ContractTxFunctionObj { + const self = (this as any) as IZeroExContract; + + assert.isBigNumber('takerTokenFillAmount', takerTokenFillAmount); + const functionSignature = + 'fillOrKillRfqOrder((address,address,uint128,uint128,address,address,address,bytes32,uint64,uint256),(uint8,uint8,bytes32,bytes32),uint128)'; + + return { + async sendTransactionAsync( + txData?: Partial | undefined, + opts: SendTransactionOpts = { shouldValidate: true }, + ): Promise { + const txDataWithDefaults = await self._applyDefaultsToTxDataAsync( + { data: this.getABIEncodedTransactionData(), ...txData }, + this.estimateGasAsync.bind(this), + ); + if (opts.shouldValidate !== false) { + await this.callAsync(txDataWithDefaults); + } + return self._web3Wrapper.sendTransactionAsync(txDataWithDefaults); + }, + awaitTransactionSuccessAsync( + txData?: Partial, + opts: AwaitTransactionSuccessOpts = { shouldValidate: true }, + ): PromiseWithTransactionHash { + return self._promiseWithTransactionHash(this.sendTransactionAsync(txData, opts), opts); + }, + async estimateGasAsync(txData?: Partial | undefined): Promise { + const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({ + data: this.getABIEncodedTransactionData(), + ...txData, + }); + return self._web3Wrapper.estimateGasAsync(txDataWithDefaults); + }, + async callAsync(callData: Partial = {}, defaultBlock?: BlockParam): Promise { + BaseContract._assertCallParams(callData, defaultBlock); + const rawCallResult = await self._performCallAsync( + { data: this.getABIEncodedTransactionData(), ...callData }, + defaultBlock, + ); + const abiEncoder = self._lookupAbiEncoder(functionSignature); + BaseContract._throwIfUnexpectedEmptyCallResult(rawCallResult, abiEncoder); + return abiEncoder.strictDecodeReturnValue(rawCallResult); + }, + getABIEncodedTransactionData(): string { + return self._strictEncodeArguments(functionSignature, [order, signature, takerTokenFillAmount]); + }, + }; + } + /** + * Fill an RFQ order for up to `takerTokenFillAmount` taker tokens. + * The taker will be the caller. + * @param order The RFQ order. + * @param signature The order signature. + * @param takerTokenFillAmount Maximum taker token amount to fill this order + * with. + */ + public fillRfqOrder( + order: { + makerToken: string; + takerToken: string; + makerAmount: BigNumber; + takerAmount: BigNumber; + maker: string; + taker: string; + txOrigin: string; + pool: string; + expiry: BigNumber; + salt: BigNumber; + }, + signature: { signatureType: number | BigNumber; v: number | BigNumber; r: string; s: string }, + takerTokenFillAmount: BigNumber, + ): ContractTxFunctionObj<[BigNumber, BigNumber]> { + const self = (this as any) as IZeroExContract; + + assert.isBigNumber('takerTokenFillAmount', takerTokenFillAmount); + const functionSignature = + 'fillRfqOrder((address,address,uint128,uint128,address,address,address,bytes32,uint64,uint256),(uint8,uint8,bytes32,bytes32),uint128)'; + + return { + async sendTransactionAsync( + txData?: Partial | undefined, + opts: SendTransactionOpts = { shouldValidate: true }, + ): Promise { + const txDataWithDefaults = await self._applyDefaultsToTxDataAsync( + { data: this.getABIEncodedTransactionData(), ...txData }, + this.estimateGasAsync.bind(this), + ); + if (opts.shouldValidate !== false) { + await this.callAsync(txDataWithDefaults); + } + return self._web3Wrapper.sendTransactionAsync(txDataWithDefaults); + }, + awaitTransactionSuccessAsync( + txData?: Partial, + opts: AwaitTransactionSuccessOpts = { shouldValidate: true }, + ): PromiseWithTransactionHash { + return self._promiseWithTransactionHash(this.sendTransactionAsync(txData, opts), opts); + }, + async estimateGasAsync(txData?: Partial | undefined): Promise { + const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({ + data: this.getABIEncodedTransactionData(), + ...txData, + }); + return self._web3Wrapper.estimateGasAsync(txDataWithDefaults); + }, + async callAsync( + callData: Partial = {}, + defaultBlock?: BlockParam, + ): Promise<[BigNumber, BigNumber]> { + BaseContract._assertCallParams(callData, defaultBlock); + const rawCallResult = await self._performCallAsync( + { data: this.getABIEncodedTransactionData(), ...callData }, + defaultBlock, + ); + const abiEncoder = self._lookupAbiEncoder(functionSignature); + BaseContract._throwIfUnexpectedEmptyCallResult(rawCallResult, abiEncoder); + return abiEncoder.strictDecodeReturnValue<[BigNumber, BigNumber]>(rawCallResult); + }, + getABIEncodedTransactionData(): string { + return self._strictEncodeArguments(functionSignature, [order, signature, takerTokenFillAmount]); + }, + }; + } /** * Get the address of the allowance target. */ @@ -1734,13 +4210,27 @@ export class IZeroExContract extends BaseContract { }; } /** - * Get the implementation contract of a registered function. - * @param selector The function selector. + * Get the canonical hash of a limit order. + * @param order The limit order. */ - public getFunctionImplementation(selector: string): ContractTxFunctionObj { + public getLimitOrderHash(order: { + makerToken: string; + takerToken: string; + makerAmount: BigNumber; + takerAmount: BigNumber; + takerTokenFeeAmount: BigNumber; + maker: string; + taker: string; + sender: string; + feeRecipient: string; + pool: string; + expiry: BigNumber; + salt: BigNumber; + }): ContractTxFunctionObj { const self = (this as any) as IZeroExContract; - assert.isString('selector', selector); - const functionSignature = 'getFunctionImplementation(bytes4)'; + + const functionSignature = + 'getLimitOrderHash((address,address,uint128,uint128,uint128,address,address,address,address,bytes32,uint64,uint256))'; return { async sendTransactionAsync( @@ -1780,7 +4270,79 @@ export class IZeroExContract extends BaseContract { return abiEncoder.strictDecodeReturnValue(rawCallResult); }, getABIEncodedTransactionData(): string { - return self._strictEncodeArguments(functionSignature, [selector]); + return self._strictEncodeArguments(functionSignature, [order]); + }, + }; + } + /** + * Get the order info for a limit order. + * @param order The limit order. + */ + public getLimitOrderInfo(order: { + makerToken: string; + takerToken: string; + makerAmount: BigNumber; + takerAmount: BigNumber; + takerTokenFeeAmount: BigNumber; + maker: string; + taker: string; + sender: string; + feeRecipient: string; + pool: string; + expiry: BigNumber; + salt: BigNumber; + }): ContractTxFunctionObj<{ orderHash: string; status: number; takerTokenFilledAmount: BigNumber }> { + const self = (this as any) as IZeroExContract; + + const functionSignature = + 'getLimitOrderInfo((address,address,uint128,uint128,uint128,address,address,address,address,bytes32,uint64,uint256))'; + + return { + async sendTransactionAsync( + txData?: Partial | undefined, + opts: SendTransactionOpts = { shouldValidate: true }, + ): Promise { + const txDataWithDefaults = await self._applyDefaultsToTxDataAsync( + { data: this.getABIEncodedTransactionData(), ...txData }, + this.estimateGasAsync.bind(this), + ); + if (opts.shouldValidate !== false) { + await this.callAsync(txDataWithDefaults); + } + return self._web3Wrapper.sendTransactionAsync(txDataWithDefaults); + }, + awaitTransactionSuccessAsync( + txData?: Partial, + opts: AwaitTransactionSuccessOpts = { shouldValidate: true }, + ): PromiseWithTransactionHash { + return self._promiseWithTransactionHash(this.sendTransactionAsync(txData, opts), opts); + }, + async estimateGasAsync(txData?: Partial | undefined): Promise { + const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({ + data: this.getABIEncodedTransactionData(), + ...txData, + }); + return self._web3Wrapper.estimateGasAsync(txDataWithDefaults); + }, + async callAsync( + callData: Partial = {}, + defaultBlock?: BlockParam, + ): Promise<{ orderHash: string; status: number; takerTokenFilledAmount: BigNumber }> { + BaseContract._assertCallParams(callData, defaultBlock); + const rawCallResult = await self._performCallAsync( + { data: this.getABIEncodedTransactionData(), ...callData }, + defaultBlock, + ); + const abiEncoder = self._lookupAbiEncoder(functionSignature); + BaseContract._throwIfUnexpectedEmptyCallResult(rawCallResult, abiEncoder); + return abiEncoder.strictDecodeReturnValue<{ + orderHash: string; + status: number; + takerTokenFilledAmount: BigNumber; + }>(rawCallResult); + }, + getABIEncodedTransactionData(): string { + return self._strictEncodeArguments(functionSignature, [order]); }, }; } @@ -1961,6 +4523,56 @@ export class IZeroExContract extends BaseContract { }, }; } + /** + * Get the protocol fee multiplier. This should be multiplied by the + * gas price to arrive at the required protocol fee to fill a native order. + */ + public getProtocolFeeMultiplier(): ContractTxFunctionObj { + const self = (this as any) as IZeroExContract; + const functionSignature = 'getProtocolFeeMultiplier()'; + + return { + async sendTransactionAsync( + txData?: Partial | undefined, + opts: SendTransactionOpts = { shouldValidate: true }, + ): Promise { + const txDataWithDefaults = await self._applyDefaultsToTxDataAsync( + { data: this.getABIEncodedTransactionData(), ...txData }, + this.estimateGasAsync.bind(this), + ); + if (opts.shouldValidate !== false) { + await this.callAsync(txDataWithDefaults); + } + return self._web3Wrapper.sendTransactionAsync(txDataWithDefaults); + }, + awaitTransactionSuccessAsync( + txData?: Partial, + opts: AwaitTransactionSuccessOpts = { shouldValidate: true }, + ): PromiseWithTransactionHash { + return self._promiseWithTransactionHash(this.sendTransactionAsync(txData, opts), opts); + }, + async estimateGasAsync(txData?: Partial | undefined): Promise { + const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({ + data: this.getABIEncodedTransactionData(), + ...txData, + }); + return self._web3Wrapper.estimateGasAsync(txDataWithDefaults); + }, + async callAsync(callData: Partial = {}, defaultBlock?: BlockParam): Promise { + BaseContract._assertCallParams(callData, defaultBlock); + const rawCallResult = await self._performCallAsync( + { data: this.getABIEncodedTransactionData(), ...callData }, + defaultBlock, + ); + const abiEncoder = self._lookupAbiEncoder(functionSignature); + BaseContract._throwIfUnexpectedEmptyCallResult(rawCallResult, abiEncoder); + return abiEncoder.strictDecodeReturnValue(rawCallResult); + }, + getABIEncodedTransactionData(): string { + return self._strictEncodeArguments(functionSignature, []); + }, + }; + } /** * Return the optional signer for `transformERC20()` calldata. */ @@ -2010,6 +4622,139 @@ export class IZeroExContract extends BaseContract { }, }; } + /** + * Get the canonical hash of an RFQ order. + * @param order The RFQ order. + */ + public getRfqOrderHash(order: { + makerToken: string; + takerToken: string; + makerAmount: BigNumber; + takerAmount: BigNumber; + maker: string; + taker: string; + txOrigin: string; + pool: string; + expiry: BigNumber; + salt: BigNumber; + }): ContractTxFunctionObj { + const self = (this as any) as IZeroExContract; + + const functionSignature = + 'getRfqOrderHash((address,address,uint128,uint128,address,address,address,bytes32,uint64,uint256))'; + + return { + async sendTransactionAsync( + txData?: Partial | undefined, + opts: SendTransactionOpts = { shouldValidate: true }, + ): Promise { + const txDataWithDefaults = await self._applyDefaultsToTxDataAsync( + { data: this.getABIEncodedTransactionData(), ...txData }, + this.estimateGasAsync.bind(this), + ); + if (opts.shouldValidate !== false) { + await this.callAsync(txDataWithDefaults); + } + return self._web3Wrapper.sendTransactionAsync(txDataWithDefaults); + }, + awaitTransactionSuccessAsync( + txData?: Partial, + opts: AwaitTransactionSuccessOpts = { shouldValidate: true }, + ): PromiseWithTransactionHash { + return self._promiseWithTransactionHash(this.sendTransactionAsync(txData, opts), opts); + }, + async estimateGasAsync(txData?: Partial | undefined): Promise { + const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({ + data: this.getABIEncodedTransactionData(), + ...txData, + }); + return self._web3Wrapper.estimateGasAsync(txDataWithDefaults); + }, + async callAsync(callData: Partial = {}, defaultBlock?: BlockParam): Promise { + BaseContract._assertCallParams(callData, defaultBlock); + const rawCallResult = await self._performCallAsync( + { data: this.getABIEncodedTransactionData(), ...callData }, + defaultBlock, + ); + const abiEncoder = self._lookupAbiEncoder(functionSignature); + BaseContract._throwIfUnexpectedEmptyCallResult(rawCallResult, abiEncoder); + return abiEncoder.strictDecodeReturnValue(rawCallResult); + }, + getABIEncodedTransactionData(): string { + return self._strictEncodeArguments(functionSignature, [order]); + }, + }; + } + /** + * Get the order info for an RFQ order. + * @param order The RFQ order. + */ + public getRfqOrderInfo(order: { + makerToken: string; + takerToken: string; + makerAmount: BigNumber; + takerAmount: BigNumber; + maker: string; + taker: string; + txOrigin: string; + pool: string; + expiry: BigNumber; + salt: BigNumber; + }): ContractTxFunctionObj<{ orderHash: string; status: number; takerTokenFilledAmount: BigNumber }> { + const self = (this as any) as IZeroExContract; + + const functionSignature = + 'getRfqOrderInfo((address,address,uint128,uint128,address,address,address,bytes32,uint64,uint256))'; + + return { + async sendTransactionAsync( + txData?: Partial | undefined, + opts: SendTransactionOpts = { shouldValidate: true }, + ): Promise { + const txDataWithDefaults = await self._applyDefaultsToTxDataAsync( + { data: this.getABIEncodedTransactionData(), ...txData }, + this.estimateGasAsync.bind(this), + ); + if (opts.shouldValidate !== false) { + await this.callAsync(txDataWithDefaults); + } + return self._web3Wrapper.sendTransactionAsync(txDataWithDefaults); + }, + awaitTransactionSuccessAsync( + txData?: Partial, + opts: AwaitTransactionSuccessOpts = { shouldValidate: true }, + ): PromiseWithTransactionHash { + return self._promiseWithTransactionHash(this.sendTransactionAsync(txData, opts), opts); + }, + async estimateGasAsync(txData?: Partial | undefined): Promise { + const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({ + data: this.getABIEncodedTransactionData(), + ...txData, + }); + return self._web3Wrapper.estimateGasAsync(txDataWithDefaults); + }, + async callAsync( + callData: Partial = {}, + defaultBlock?: BlockParam, + ): Promise<{ orderHash: string; status: number; takerTokenFilledAmount: BigNumber }> { + BaseContract._assertCallParams(callData, defaultBlock); + const rawCallResult = await self._performCallAsync( + { data: this.getABIEncodedTransactionData(), ...callData }, + defaultBlock, + ); + const abiEncoder = self._lookupAbiEncoder(functionSignature); + BaseContract._throwIfUnexpectedEmptyCallResult(rawCallResult, abiEncoder); + return abiEncoder.strictDecodeReturnValue<{ + orderHash: string; + status: number; + takerTokenFilledAmount: BigNumber; + }>(rawCallResult); + }, + getABIEncodedTransactionData(): string { + return self._strictEncodeArguments(functionSignature, [order]); + }, + }; + } /** * Retrieve an entry in the rollback history for a function. * @param selector The function selector. @@ -2435,6 +5180,60 @@ export class IZeroExContract extends BaseContract { }, }; } + /** + * Mark what tx.origin addresses are allowed to fill an order that + * specifies the message sender as its txOrigin. + * @param origins An array of origin addresses to update. + * @param allowed True to register, false to unregister. + */ + public registerAllowedRfqOrigins(origins: string[], allowed: boolean): ContractTxFunctionObj { + const self = (this as any) as IZeroExContract; + assert.isArray('origins', origins); + assert.isBoolean('allowed', allowed); + const functionSignature = 'registerAllowedRfqOrigins(address[],bool)'; + + return { + async sendTransactionAsync( + txData?: Partial | undefined, + opts: SendTransactionOpts = { shouldValidate: true }, + ): Promise { + const txDataWithDefaults = await self._applyDefaultsToTxDataAsync( + { data: this.getABIEncodedTransactionData(), ...txData }, + this.estimateGasAsync.bind(this), + ); + if (opts.shouldValidate !== false) { + await this.callAsync(txDataWithDefaults); + } + return self._web3Wrapper.sendTransactionAsync(txDataWithDefaults); + }, + awaitTransactionSuccessAsync( + txData?: Partial, + opts: AwaitTransactionSuccessOpts = { shouldValidate: true }, + ): PromiseWithTransactionHash { + return self._promiseWithTransactionHash(this.sendTransactionAsync(txData, opts), opts); + }, + async estimateGasAsync(txData?: Partial | undefined): Promise { + const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({ + data: this.getABIEncodedTransactionData(), + ...txData, + }); + return self._web3Wrapper.estimateGasAsync(txDataWithDefaults); + }, + async callAsync(callData: Partial = {}, defaultBlock?: BlockParam): Promise { + BaseContract._assertCallParams(callData, defaultBlock); + const rawCallResult = await self._performCallAsync( + { data: this.getABIEncodedTransactionData(), ...callData }, + defaultBlock, + ); + const abiEncoder = self._lookupAbiEncoder(functionSignature); + BaseContract._throwIfUnexpectedEmptyCallResult(rawCallResult, abiEncoder); + return abiEncoder.strictDecodeReturnValue(rawCallResult); + }, + getABIEncodedTransactionData(): string { + return self._strictEncodeArguments(functionSignature, [origins, allowed]); + }, + }; + } /** * Roll back to a prior implementation of a function. * @param selector The function selector. @@ -2489,32 +5288,32 @@ export class IZeroExContract extends BaseContract { }; } /** - * Sells `sellAmount` of `takerToken` to the liquidity provider - * at the given `target`. - * @param makerToken The token being bought. - * @param takerToken The token being sold. - * @param target The address of the on-chain liquidity provider to trade - * with. + * Sells `sellAmount` of `inputToken` to the liquidity provider + * at the given `provider` address. + * @param inputToken The token being sold. + * @param outputToken The token being bought. + * @param provider The address of the on-chain liquidity provider to + * trade with. * @param recipient The recipient of the bought tokens. If equal to * address(0), `msg.sender` is assumed to be the recipient. - * @param sellAmount The amount of `takerToken` to sell. - * @param minBuyAmount The minimum acceptable amount of `makerToken` to + * @param sellAmount The amount of `inputToken` to sell. + * @param minBuyAmount The minimum acceptable amount of `outputToken` to * buy. Reverts if this amount is not satisfied. - * @param auxiliaryData Auxiliary data supplied to the `target` contract. + * @param auxiliaryData Auxiliary data supplied to the `provider` contract. */ public sellToLiquidityProvider( - makerToken: string, - takerToken: string, - target: string, + inputToken: string, + outputToken: string, + provider: string, recipient: string, sellAmount: BigNumber, minBuyAmount: BigNumber, auxiliaryData: string, ): ContractTxFunctionObj { const self = (this as any) as IZeroExContract; - assert.isString('makerToken', makerToken); - assert.isString('takerToken', takerToken); - assert.isString('target', target); + assert.isString('inputToken', inputToken); + assert.isString('outputToken', outputToken); + assert.isString('provider', provider); assert.isString('recipient', recipient); assert.isBigNumber('sellAmount', sellAmount); assert.isBigNumber('minBuyAmount', minBuyAmount); @@ -2560,9 +5359,9 @@ export class IZeroExContract extends BaseContract { }, getABIEncodedTransactionData(): string { return self._strictEncodeArguments(functionSignature, [ - makerToken.toLowerCase(), - takerToken.toLowerCase(), - target.toLowerCase(), + inputToken.toLowerCase(), + outputToken.toLowerCase(), + provider.toLowerCase(), recipient.toLowerCase(), sellAmount, minBuyAmount, @@ -2789,6 +5588,58 @@ export class IZeroExContract extends BaseContract { }, }; } + /** + * Transfers protocol fees from the `FeeCollector` pools into + * the staking contract. + * @param poolIds Staking pool IDs + */ + public transferProtocolFeesForPools(poolIds: string[]): ContractTxFunctionObj { + const self = (this as any) as IZeroExContract; + assert.isArray('poolIds', poolIds); + const functionSignature = 'transferProtocolFeesForPools(bytes32[])'; + + return { + async sendTransactionAsync( + txData?: Partial | undefined, + opts: SendTransactionOpts = { shouldValidate: true }, + ): Promise { + const txDataWithDefaults = await self._applyDefaultsToTxDataAsync( + { data: this.getABIEncodedTransactionData(), ...txData }, + this.estimateGasAsync.bind(this), + ); + if (opts.shouldValidate !== false) { + await this.callAsync(txDataWithDefaults); + } + return self._web3Wrapper.sendTransactionAsync(txDataWithDefaults); + }, + awaitTransactionSuccessAsync( + txData?: Partial, + opts: AwaitTransactionSuccessOpts = { shouldValidate: true }, + ): PromiseWithTransactionHash { + return self._promiseWithTransactionHash(this.sendTransactionAsync(txData, opts), opts); + }, + async estimateGasAsync(txData?: Partial | undefined): Promise { + const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({ + data: this.getABIEncodedTransactionData(), + ...txData, + }); + return self._web3Wrapper.estimateGasAsync(txDataWithDefaults); + }, + async callAsync(callData: Partial = {}, defaultBlock?: BlockParam): Promise { + BaseContract._assertCallParams(callData, defaultBlock); + const rawCallResult = await self._performCallAsync( + { data: this.getABIEncodedTransactionData(), ...callData }, + defaultBlock, + ); + const abiEncoder = self._lookupAbiEncoder(functionSignature); + BaseContract._throwIfUnexpectedEmptyCallResult(rawCallResult, abiEncoder); + return abiEncoder.strictDecodeReturnValue(rawCallResult); + }, + getABIEncodedTransactionData(): string { + return self._strictEncodeArguments(functionSignature, [poolIds]); + }, + }; + } /** * Executes a series of transformations to convert an ERC20 `inputToken` * to an ERC20 `outputToken`. diff --git a/packages/contract-wrappers/src/index.ts b/packages/contract-wrappers/src/index.ts index f4025e4d01..c1f7411ec7 100644 --- a/packages/contract-wrappers/src/index.ts +++ b/packages/contract-wrappers/src/index.ts @@ -132,6 +132,12 @@ export { IZeroExQuoteSignerUpdatedEventArgs, IZeroExTransformedERC20EventArgs, IZeroExTransformerDeployerUpdatedEventArgs, + IZeroExLimitOrderFilledEventArgs, + IZeroExOrderCancelledEventArgs, + IZeroExPairCancelledLimitOrdersEventArgs, + IZeroExPairCancelledRfqOrdersEventArgs, + IZeroExRfqOrderFilledEventArgs, + IZeroExRfqOrderOriginsAllowedEventArgs, } from './generated-wrappers/i_zero_ex'; export { StakingAuthorizedAddressAddedEventArgs, diff --git a/packages/migrations/package.json b/packages/migrations/package.json index 80578f574a..ff244df8cf 100644 --- a/packages/migrations/package.json +++ b/packages/migrations/package.json @@ -48,7 +48,7 @@ "registry": "git@github.com:0xProject/gitpkg-registry.git" }, "devDependencies": { - "@0x/dev-utils": "^4.1.2", + "@0x/dev-utils": "^4.1.3", "@0x/ts-doc-gen": "^0.0.28", "@0x/tslint-config": "^4.1.3", "@0x/types": "^3.3.1", @@ -67,7 +67,7 @@ "yargs": "^10.0.3" }, "dependencies": { - "@0x/base-contract": "^6.2.13", + "@0x/base-contract": "^6.2.14", "@0x/contract-addresses": "^5.6.0", "@0x/contracts-asset-proxy": "^3.6.8", "@0x/contracts-coordinator": "^3.1.17", @@ -82,11 +82,11 @@ "@0x/contracts-staking": "^2.0.24", "@0x/contracts-utils": "^4.6.2", "@0x/contracts-zero-ex": "^0.11.1", - "@0x/sol-compiler": "^4.4.0", - "@0x/subproviders": "^6.2.2", + "@0x/sol-compiler": "^4.4.1", + "@0x/subproviders": "^6.2.3", "@0x/typescript-typings": "^5.1.6", "@0x/utils": "^6.1.1", - "@0x/web3-wrapper": "^7.2.10", + "@0x/web3-wrapper": "^7.3.0", "@ledgerhq/hw-app-eth": "^4.3.0", "@types/web3-provider-engine": "^14.0.0", "ethereum-types": "^3.4.0", diff --git a/packages/order-utils/package.json b/packages/order-utils/package.json index 0d2ee1a4fc..6a8f482399 100644 --- a/packages/order-utils/package.json +++ b/packages/order-utils/package.json @@ -43,8 +43,8 @@ }, "homepage": "https://github.com/0xProject/protocol/tree/main/packages/order-utils", "devDependencies": { - "@0x/dev-utils": "^4.1.2", - "@0x/subproviders": "^6.2.2", + "@0x/dev-utils": "^4.1.3", + "@0x/subproviders": "^6.2.3", "@0x/ts-doc-gen": "^0.0.28", "@0x/tslint-config": "^4.1.3", "@0x/types": "^3.3.1", @@ -73,7 +73,7 @@ "@0x/contract-wrappers": "^13.10.3", "@0x/json-schemas": "^5.3.4", "@0x/utils": "^6.1.1", - "@0x/web3-wrapper": "^7.2.10", + "@0x/web3-wrapper": "^7.3.0", "ethereumjs-util": "^5.1.1", "ethers": "~4.0.4", "lodash": "^4.17.11" diff --git a/packages/protocol-utils/.npmignore b/packages/protocol-utils/.npmignore new file mode 100644 index 0000000000..ea588d4859 --- /dev/null +++ b/packages/protocol-utils/.npmignore @@ -0,0 +1,9 @@ +# Blacklist all files +.* +* +# Whitelist lib +!lib/**/* +# Blacklist tests and publish scripts +/lib/test/* +/lib/monorepo_scripts/ +# Package specific ignore diff --git a/packages/protocol-utils/CHANGELOG.json b/packages/protocol-utils/CHANGELOG.json new file mode 100644 index 0000000000..af9a809166 --- /dev/null +++ b/packages/protocol-utils/CHANGELOG.json @@ -0,0 +1,11 @@ +[ + { + "version": "1.0.0", + "changes": [ + { + "note": "Package created", + "pr": 76 + } + ] + } +] diff --git a/packages/protocol-utils/CHANGELOG.md b/packages/protocol-utils/CHANGELOG.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/protocol-utils/README.md b/packages/protocol-utils/README.md new file mode 100644 index 0000000000..291bea5f54 --- /dev/null +++ b/packages/protocol-utils/README.md @@ -0,0 +1,71 @@ +## @0x/protocol-utils + +0x protocol-related utilities for the V4/Exchange Proxy constellation of contracts, with tooling related to: + +- Limit orders +- Rfq orders +- Transformers +- Signatures +- EIP712 hashing + +### Read the [Documentation](https://0x.org/docs/protocol/protocol-utils). + +## Installation + +```bash +yarn add @0x/protocol-utils +``` + +If your project is in [TypeScript](https://www.typescriptlang.org/), add the following to your `tsconfig.json`: + +```json +"compilerOptions": { + "typeRoots": ["node_modules/@0x/typescript-typings/types", "node_modules/@types"], +} +``` + +## Contributing + +We welcome improvements and fixes from the wider community! To report bugs within this package, please create an issue in this repository. + +Please read our [contribution guidelines](../../CONTRIBUTING.md) before getting started. + +### Install dependencies + +If you don't have yarn workspaces enabled (Yarn < v1.0) - enable them: + +```bash +yarn config set workspaces-experimental true +``` + +Then install dependencies + +```bash +yarn install +``` + +### Build + +To build this package and all other monorepo packages that it depends on, run the following from the monorepo root directory: + +```bash +PKG=@0x/protocol-utils yarn build +``` + +Or continuously rebuild on change: + +```bash +PKG=@0x/protocol-utils yarn watch +``` + +### Clean + +```bash +yarn clean +``` + +### Lint + +```bash +yarn lint +``` diff --git a/packages/protocol-utils/docs/.gitkeep b/packages/protocol-utils/docs/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/protocol-utils/package.json b/packages/protocol-utils/package.json new file mode 100644 index 0000000000..0b5527e4d9 --- /dev/null +++ b/packages/protocol-utils/package.json @@ -0,0 +1,80 @@ +{ + "name": "@0x/protocol-utils", + "version": "1.0.0", + "engines": { + "node": ">=6.12" + }, + "description": "0x protocol utils", + "main": "lib/src/index.js", + "types": "lib/src/index.d.ts", + "scripts": { + "build": "yarn tsc -b", + "build:ci": "yarn build", + "publish:private": "yarn clean && yarn build && gitpkg publish", + "test": "yarn run_mocha", + "rebuild_and_test": "run-s build test", + "test:circleci": "yarn test:coverage", + "run_mocha": "mocha --require source-map-support/register --require make-promises-safe lib/test/**/*_test.js --timeout 10000 --bail --exit", + "test:coverage": "mkdir -p ./coverage && nyc npm run test --all && yarn coverage:report:lcov", + "coverage:report:lcov": "nyc report --reporter=text-lcov > coverage/lcov.info", + "clean": "shx rm -rf lib generated_docs", + "lint": "tslint --format stylish --project .", + "fix": "tslint --fix --format stylish --project .", + "diff_docs": "git diff --exit-code ./docs", + "s3:sync_md_docs": "aws s3 sync ./docs s3://docs-markdown/${npm_package_name}/v${npm_package_version} --profile 0xproject --region us-east-1 --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers", + "docs:md": "ts-doc-gen --sourceDir='$PROJECT_FILES' --output=$MD_FILE_DIR --fileExtension=mdx --tsconfig=./typedoc-tsconfig.json", + "docs:json": "typedoc --excludePrivate --excludeExternals --excludeProtected --ignoreCompilerErrors --target ES5 --tsconfig typedoc-tsconfig.json --json $JSON_FILE_PATH $PROJECT_FILES" + }, + "config": { + "postpublish": { + "assets": [] + } + }, + "license": "Apache-2.0", + "repository": { + "type": "git", + "url": "https://github.com/0xProject/protocol.git" + }, + "bugs": { + "url": "https://github.com/0xProject/protocol/issues" + }, + "homepage": "https://github.com/0xProject/protocol/tree/main/packages/protocol-utils", + "devDependencies": { + "@0x/dev-utils": "^4.1.3", + "@0x/ts-doc-gen": "^0.0.28", + "@0x/tslint-config": "^4.1.3", + "@0x/types": "^3.3.1", + "@0x/typescript-typings": "^5.1.6", + "@types/bn.js": "^4.11.0", + "@types/lodash": "4.14.104", + "@types/mocha": "^5.2.7", + "@types/node": "12.12.54", + "@types/web3-provider-engine": "^14.0.0", + "ethereum-types": "^3.4.0", + "mocha": "^6.2.0", + "npm-run-all": "^4.1.2", + "shx": "^0.2.2", + "sinon": "^4.0.0", + "tslint": "5.11.0", + "typedoc": "~0.16.11", + "typescript": "3.0.1", + "web3-provider-engine": "14.0.6" + }, + "dependencies": { + "@0x/assert": "^3.0.19", + "@0x/contract-addresses": "^5.6.0", + "@0x/contract-wrappers": "^13.10.3", + "@0x/json-schemas": "^5.3.4", + "@0x/subproviders": "^6.2.3", + "@0x/utils": "^6.1.1", + "@0x/web3-wrapper": "^7.3.0", + "chai": "^4.0.1", + "ethereumjs-util": "^5.1.1", + "ethers": "~4.0.4", + "lodash": "^4.17.11" + }, + "publishConfig": { + "access": "public" + }, + "gitHead": "4f91bfd907996b2f4dd383778b50c479c2602b56" +} diff --git a/packages/protocol-utils/src/constants.ts b/packages/protocol-utils/src/constants.ts new file mode 100644 index 0000000000..5e17e10027 --- /dev/null +++ b/packages/protocol-utils/src/constants.ts @@ -0,0 +1 @@ +export const ETH_TOKEN_ADDRESS = '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee'; diff --git a/contracts/zero-ex/src/eip712_utils.ts b/packages/protocol-utils/src/eip712_utils.ts similarity index 100% rename from contracts/zero-ex/src/eip712_utils.ts rename to packages/protocol-utils/src/eip712_utils.ts diff --git a/packages/protocol-utils/src/index.ts b/packages/protocol-utils/src/index.ts new file mode 100644 index 0000000000..dd9b7f7714 --- /dev/null +++ b/packages/protocol-utils/src/index.ts @@ -0,0 +1,9 @@ +import * as _RevertErrors from './revert-errors'; +export const RevertErrors = _RevertErrors; +export const RevertError = _RevertErrors.RevertError; + +export * from './eip712_utils'; +export * from './orders'; +export * from './signature_utils'; +export * from './transformer_utils'; +export * from './constants'; diff --git a/contracts/zero-ex/src/orders.ts b/packages/protocol-utils/src/orders.ts similarity index 99% rename from contracts/zero-ex/src/orders.ts rename to packages/protocol-utils/src/orders.ts index 76531248eb..6a53506f03 100644 --- a/contracts/zero-ex/src/orders.ts +++ b/packages/protocol-utils/src/orders.ts @@ -1,4 +1,3 @@ -// tslint:disable: max-classes-per-file import { SupportedProvider } from '@0x/subproviders'; import { EIP712TypedData } from '@0x/types'; import { BigNumber, hexUtils, NULL_ADDRESS } from '@0x/utils'; diff --git a/packages/protocol-utils/src/revert-errors/index.ts b/packages/protocol-utils/src/revert-errors/index.ts new file mode 100644 index 0000000000..3ba103aa02 --- /dev/null +++ b/packages/protocol-utils/src/revert-errors/index.ts @@ -0,0 +1,31 @@ +export { RevertError } from '@0x/utils'; + +import { + Common, + LiquidityProvider, + MetaTransactions, + Ownable, + Proxy, + SignatureValidator, + SimpleFunctionRegistry, + Spender, + TransformERC20, + Wallet, +} from './inherited'; +import * as NativeOrders from './native_orders'; +import * as Signatures from './signatures'; + +export { + Common, + Proxy, + SimpleFunctionRegistry, + Ownable, + Spender, + TransformERC20, + Wallet, + MetaTransactions, + SignatureValidator, + LiquidityProvider, + NativeOrders, + Signatures, +}; diff --git a/packages/protocol-utils/src/revert-errors/inherited.ts b/packages/protocol-utils/src/revert-errors/inherited.ts new file mode 100644 index 0000000000..13c844dbbc --- /dev/null +++ b/packages/protocol-utils/src/revert-errors/inherited.ts @@ -0,0 +1,14 @@ +import { ZeroExRevertErrors } from '@0x/utils'; + +export const { + Common, + Proxy, + SimpleFunctionRegistry, + Ownable, + Spender, + TransformERC20, + Wallet, + MetaTransactions, + SignatureValidator, + LiquidityProvider, +} = ZeroExRevertErrors; diff --git a/contracts/zero-ex/src/revert_errors.ts b/packages/protocol-utils/src/revert-errors/native_orders.ts similarity index 85% rename from contracts/zero-ex/src/revert_errors.ts rename to packages/protocol-utils/src/revert-errors/native_orders.ts index 72ec23afbb..33e66a5d1e 100644 --- a/contracts/zero-ex/src/revert_errors.ts +++ b/packages/protocol-utils/src/revert-errors/native_orders.ts @@ -1,27 +1,7 @@ -// TODO(dorothy-zbornak): Move these into `@0x/protocol-utils` whenever that -// becomes a thing. -// tslint:disable:max-classes-per-file +// tslint:disable: max-classes-per-file import { Numberish, RevertError } from '@0x/utils'; -import { OrderStatus } from './orders'; - -export enum SignatureValidationErrorCodes { - AlwaysInvalid = 0, - InvalidLength = 1, - Unsupported = 2, - Illegal = 3, - WrongSigner = 4, - BadSignatureData = 5, -} - -export class SignatureValidationError extends RevertError { - constructor(code?: SignatureValidationErrorCodes, hash?: string) { - super('SignatureValidationError', 'SignatureValidationError(uint8 code, bytes32 hash)', { - code, - hash, - }); - } -} +import { OrderStatus } from '../orders'; export class ProtocolFeeRefundFailed extends RevertError { constructor(receiver?: string, refundAmount?: Numberish) { @@ -131,7 +111,6 @@ export class OnlyOrderMakerAllowed extends RevertError { } const types = [ - SignatureValidationError, ProtocolFeeRefundFailed, OrderNotFillableByOriginError, OrderNotFillableError, diff --git a/packages/protocol-utils/src/revert-errors/signatures.ts b/packages/protocol-utils/src/revert-errors/signatures.ts new file mode 100644 index 0000000000..314b719b87 --- /dev/null +++ b/packages/protocol-utils/src/revert-errors/signatures.ts @@ -0,0 +1,26 @@ +import { RevertError } from '@0x/utils'; + +export enum SignatureValidationErrorCodes { + AlwaysInvalid = 0, + InvalidLength = 1, + Unsupported = 2, + Illegal = 3, + WrongSigner = 4, + BadSignatureData = 5, +} + +export class SignatureValidationError extends RevertError { + constructor(code?: SignatureValidationErrorCodes, hash?: string) { + super('SignatureValidationError', 'SignatureValidationError(uint8 code, bytes32 hash)', { + code, + hash, + }); + } +} + +const types = [SignatureValidationError]; + +// Register the types we've defined. +for (const type of types) { + RevertError.registerType(type); +} diff --git a/contracts/zero-ex/src/signature_utils.ts b/packages/protocol-utils/src/signature_utils.ts similarity index 98% rename from contracts/zero-ex/src/signature_utils.ts rename to packages/protocol-utils/src/signature_utils.ts index 879f54fa06..82864d586e 100644 --- a/contracts/zero-ex/src/signature_utils.ts +++ b/packages/protocol-utils/src/signature_utils.ts @@ -68,7 +68,7 @@ export async function eip712SignTypedDataWithProviderAsync( provider: SupportedProvider, ): Promise { const w3w = new Web3Wrapper(providerUtils.standardizeOrThrow(provider)); - const rpcSig = await w3w.signTypedDataAsync(signer, data); + const rpcSig = await w3w.signTypedDataV4Async(signer, data); return { ...parseRpcSignature(rpcSig), signatureType: SignatureType.EIP712, diff --git a/packages/protocol-utils/src/transformer_utils.ts b/packages/protocol-utils/src/transformer_utils.ts new file mode 100644 index 0000000000..be16535171 --- /dev/null +++ b/packages/protocol-utils/src/transformer_utils.ts @@ -0,0 +1,225 @@ +import { Order } from '@0x/types'; +import { AbiEncoder, BigNumber, NULL_ADDRESS } from '@0x/utils'; +import * as ethjs from 'ethereumjs-util'; + +const ORDER_ABI_COMPONENTS = [ + { name: 'makerAddress', type: 'address' }, + { name: 'takerAddress', type: 'address' }, + { name: 'feeRecipientAddress', type: 'address' }, + { name: 'senderAddress', type: 'address' }, + { name: 'makerAssetAmount', type: 'uint256' }, + { name: 'takerAssetAmount', type: 'uint256' }, + { name: 'makerFee', type: 'uint256' }, + { name: 'takerFee', type: 'uint256' }, + { name: 'expirationTimeSeconds', type: 'uint256' }, + { name: 'salt', type: 'uint256' }, + { name: 'makerAssetData', type: 'bytes' }, + { name: 'takerAssetData', type: 'bytes' }, + { name: 'makerFeeAssetData', type: 'bytes' }, + { name: 'takerFeeAssetData', type: 'bytes' }, +]; + +/** + * ABI encoder for `FillQuoteTransformer.TransformData` + */ +export const fillQuoteTransformerDataEncoder = AbiEncoder.create([ + { + name: 'data', + type: 'tuple', + components: [ + { name: 'side', type: 'uint8' }, + { name: 'sellToken', type: 'address' }, + { name: 'buyToken', type: 'address' }, + { + name: 'orders', + type: 'tuple[]', + components: ORDER_ABI_COMPONENTS, + }, + { name: 'signatures', type: 'bytes[]' }, + { name: 'maxOrderFillAmounts', type: 'uint256[]' }, + { name: 'fillAmount', type: 'uint256' }, + { name: 'refundReceiver', type: 'address' }, + { name: 'rfqtTakerAddress', type: 'address' }, + ], + }, +]); + +/** + * Market operation for `FillQuoteTransformerData`. + */ +export enum FillQuoteTransformerSide { + Sell, + Buy, +} + +/** + * `FillQuoteTransformer.TransformData` + */ +export interface FillQuoteTransformerData { + side: FillQuoteTransformerSide; + sellToken: string; + buyToken: string; + orders: Array>; + signatures: string[]; + maxOrderFillAmounts: BigNumber[]; + fillAmount: BigNumber; + refundReceiver: string; + rfqtTakerAddress: string; +} + +/** + * ABI-encode a `FillQuoteTransformer.TransformData` type. + */ +export function encodeFillQuoteTransformerData(data: FillQuoteTransformerData): string { + return fillQuoteTransformerDataEncoder.encode([data]); +} + +/** + * ABI-decode a `FillQuoteTransformer.TransformData` type. + */ +export function decodeFillQuoteTransformerData(encoded: string): FillQuoteTransformerData { + return fillQuoteTransformerDataEncoder.decode(encoded).data; +} + +/** + * ABI encoder for `WethTransformer.TransformData` + */ +export const wethTransformerDataEncoder = AbiEncoder.create([ + { + name: 'data', + type: 'tuple', + components: [{ name: 'token', type: 'address' }, { name: 'amount', type: 'uint256' }], + }, +]); + +/** + * `WethTransformer.TransformData` + */ +export interface WethTransformerData { + token: string; + amount: BigNumber; +} + +/** + * ABI-encode a `WethTransformer.TransformData` type. + */ +export function encodeWethTransformerData(data: WethTransformerData): string { + return wethTransformerDataEncoder.encode([data]); +} + +/** + * ABI-decode a `WethTransformer.TransformData` type. + */ +export function decodeWethTransformerData(encoded: string): WethTransformerData { + return wethTransformerDataEncoder.decode(encoded).data; +} + +/** + * ABI encoder for `PayTakerTransformer.TransformData` + */ +export const payTakerTransformerDataEncoder = AbiEncoder.create([ + { + name: 'data', + type: 'tuple', + components: [{ name: 'tokens', type: 'address[]' }, { name: 'amounts', type: 'uint256[]' }], + }, +]); + +/** + * `PayTakerTransformer.TransformData` + */ +export interface PayTakerTransformerData { + tokens: string[]; + amounts: BigNumber[]; +} + +/** + * ABI-encode a `PayTakerTransformer.TransformData` type. + */ +export function encodePayTakerTransformerData(data: PayTakerTransformerData): string { + return payTakerTransformerDataEncoder.encode([data]); +} + +/** + * ABI-decode a `PayTakerTransformer.TransformData` type. + */ +export function decodePayTakerTransformerData(encoded: string): PayTakerTransformerData { + return payTakerTransformerDataEncoder.decode(encoded).data; +} + +/** + * ABI encoder for `PayTakerTransformer.TransformData` + */ +export const affiliateFeeTransformerDataEncoder = AbiEncoder.create({ + name: 'data', + type: 'tuple', + components: [ + { + name: 'fees', + type: 'tuple[]', + components: [ + { name: 'token', type: 'address' }, + { name: 'amount', type: 'uint256' }, + { name: 'recipient', type: 'address' }, + ], + }, + ], +}); + +/** + * `AffiliateFeeTransformer.TransformData` + */ +export interface AffiliateFeeTransformerData { + fees: Array<{ + token: string; + amount: BigNumber; + recipient: string; + }>; +} + +/** + * ABI-encode a `AffiliateFeeTransformer.TransformData` type. + */ +export function encodeAffiliateFeeTransformerData(data: AffiliateFeeTransformerData): string { + return affiliateFeeTransformerDataEncoder.encode(data); +} + +/** + * ABI-decode a `AffiliateFeeTransformer.TransformData` type. + */ +export function decodeAffiliateFeeTransformerData(encoded: string): AffiliateFeeTransformerData { + return affiliateFeeTransformerDataEncoder.decode(encoded); +} + +/** + * Find the nonce for a transformer given its deployer. + * If `deployer` is the null address, zero will always be returned. + */ +export function findTransformerNonce( + transformer: string, + deployer: string = NULL_ADDRESS, + maxGuesses: number = 1024, +): number { + if (deployer === NULL_ADDRESS) { + return 0; + } + const lowercaseTransformer = transformer.toLowerCase(); + // Try to guess the nonce. + for (let nonce = 0; nonce < maxGuesses; ++nonce) { + const deployedAddress = getTransformerAddress(deployer, nonce); + if (deployedAddress === lowercaseTransformer) { + return nonce; + } + } + throw new Error(`${deployer} did not deploy ${transformer}!`); +} + +/** + * Compute the deployed address for a transformer given a deployer and nonce. + */ +export function getTransformerAddress(deployer: string, nonce: number): string { + return ethjs.bufferToHex( + // tslint:disable-next-line: custom-no-magic-numbers + ethjs.rlphash([deployer, nonce] as any).slice(12), + ); +} diff --git a/packages/protocol-utils/test/eip712_utils_test.ts b/packages/protocol-utils/test/eip712_utils_test.ts new file mode 100644 index 0000000000..944d7460c0 --- /dev/null +++ b/packages/protocol-utils/test/eip712_utils_test.ts @@ -0,0 +1,42 @@ +import { chaiSetup } from '@0x/dev-utils'; +import { expect } from 'chai'; + +import { getExchangeProxyEIP712DomainHash, getExchangeProxyEIP712Hash } from '../src/eip712_utils'; + +chaiSetup.configure(); + +describe('eip712_utils', () => { + describe('getExchangeProxyEIP712DomainHash()', () => { + it('computes the correct default hash', () => { + const actual = getExchangeProxyEIP712DomainHash(); + const expected = '0xc92fa40dbe33b59738624b1b4ec40b30ff52e4da223f68018a7e0667ffc0e798'; + expect(actual).to.eq(expected); + }); + + it('computes the correct hash with parameters', () => { + const chainId = 1337; + const verifyingContract = '0xfe20c9f78898cf8a3e7c5c2ed36568a3d2ad02b9'; + const actual = getExchangeProxyEIP712DomainHash(chainId, verifyingContract); + const expected = '0x3f2ee54842d00d7e811297005788367c60110c261f9f94d7f4f46a17e382bdf3'; + expect(actual).to.eq(expected); + }); + }); + + describe('getExchangeProxyEIP712Hash()', () => { + const structHash = '0x3ada2b9bef7def77259eca388e1074fd09013e2942cf9b594a9c6a1b2d215d1f'; + + it('computes the correct hash', () => { + const actual = getExchangeProxyEIP712Hash(structHash); + const expected = '0x619a48532e5e0a633191af930dacfd5538b74078793d09e8408ab9124f7b9bf3'; + expect(actual).to.eq(expected); + }); + + it('computes the correct hash with parameters', () => { + const chainId = 1337; + const verifyingContract = '0xfe20c9f78898cf8a3e7c5c2ed36568a3d2ad02b9'; + const actual = getExchangeProxyEIP712Hash(structHash, chainId, verifyingContract); + const expected = '0xc051b4f9f305b095768427eb29d9461c473d2e96aa30a5914a7081feae979d1d'; + expect(actual).to.eq(expected); + }); + }); +}); diff --git a/packages/protocol-utils/test/orders_test.ts b/packages/protocol-utils/test/orders_test.ts new file mode 100644 index 0000000000..c4112beded --- /dev/null +++ b/packages/protocol-utils/test/orders_test.ts @@ -0,0 +1,148 @@ +import { chaiSetup, web3Factory, Web3Wrapper } from '@0x/dev-utils'; +import { Web3ProviderEngine } from '@0x/subproviders'; +import { BigNumber } from '@0x/utils'; +import { expect } from 'chai'; +import * as ethjs from 'ethereumjs-util'; + +import { LimitOrder, RfqOrder } from '../src/orders'; +import { SignatureType } from '../src/signature_utils'; + +chaiSetup.configure(); + +describe('orders', () => { + let provider: Web3ProviderEngine; + let providerMaker: string; + const key = '0xee094b79aa0315914955f2f09be9abe541dcdc51f0aae5bec5453e9f73a471a6'; + const keyMaker = ethjs.bufferToHex(ethjs.privateToAddress(ethjs.toBuffer(key))); + + before(async () => { + provider = web3Factory.getRpcProvider({ shouldUseInProcessGanache: true }); + [providerMaker] = await new Web3Wrapper(provider).getAvailableAddressesAsync(); + }); + + describe('LimitOrder', () => { + const order = new LimitOrder({ + makerToken: '0x349e8d89e8b37214d9ce3949fc5754152c525bc3', + takerToken: '0x83c62b2e67dea0df2a27be0def7a22bd7102642c', + makerAmount: new BigNumber(1234), + takerAmount: new BigNumber(5678), + takerTokenFeeAmount: new BigNumber(9101112), + maker: '0x8d5e5b5b5d187bdce2e0143eb6b3cc44eef3c0cb', + taker: '0x615312fb74c31303eab07dea520019bb23f4c6c2', + sender: '0x70f2d6c7acd257a6700d745b76c602ceefeb8e20', + feeRecipient: '0xcc3c7ea403427154ec908203ba6c418bd699f7ce', + pool: '0x0bbff69b85a87da39511aefc3211cb9aff00e1a1779dc35b8f3635d8b5ea2680', + expiry: new BigNumber(1001), + salt: new BigNumber(2001), + chainId: 8008, + verifyingContract: '0x6701704d2421c64ee9aa93ec7f96ede81c4be77d', + }); + + it('can get the struct hash', () => { + const actual = order.getStructHash(); + const expected = '0x05a78607ce1eafbbe994f04f8f0ae718d971bf420f089163ed8e7a022e95e468'; + expect(actual).to.eq(expected); + }); + + it('can get the EIP712 hash', () => { + const actual = order.getHash(); + const expected = '0x8bb1f6e880b3b4f91a901897c4b914ec606dc3b8b59f64983e1638a45bdf3116'; + expect(actual).to.deep.eq(expected); + }); + + it('can get an EthSign signature with a provider', async () => { + const actual = await order.clone({ maker: providerMaker }).getSignatureWithProviderAsync(provider); + const expected = { + signatureType: SignatureType.EthSign, + r: '0xbd5bb603cc48c5f777f0d34c2012aa779942ac48c355d30d85acc108819e8a8f', + s: '0x576e17adc9482fb5eda95cd4543e5ed4978990d2caab4c6f92e09e2fa6157d7b', + v: 27, + }; + expect(actual).to.deep.eq(expected); + }); + + it('can get an EthSign signature with a private key', () => { + const actual = order.clone({ maker: keyMaker }).getSignatureWithKey(key); + const expected = { + signatureType: SignatureType.EthSign, + r: '0x5d4fe9b4c8f94efc46ef9e7e3f996c238f9c930fd5c03014ec6db6d4d18a34e5', + s: '0x0949269d29524aec1ba5b19236c392a3d1866ca39bb8c7b6345e90a3fbf404fc', + v: 28, + }; + expect(actual).to.deep.eq(expected); + }); + + it('can get an EIP712 signature with a private key', () => { + const actual = order.clone({ maker: keyMaker }).getSignatureWithKey(key, SignatureType.EIP712); + const expected = { + signatureType: SignatureType.EIP712, + r: '0x030e27e0a261dda1139154d9ba7e814932bd6b8d15231a8c2cd78d634ff22c2b', + s: '0x50af45e0d6e81b721905bd35748168f1f348be34fe03073d7a2f2b053cbdca2d', + v: 27, + }; + expect(actual).to.deep.eq(expected); + }); + }); + + describe('RfqOrder', () => { + const order = new RfqOrder({ + makerToken: '0x349e8d89e8b37214d9ce3949fc5754152c525bc3', + takerToken: '0x83c62b2e67dea0df2a27be0def7a22bd7102642c', + makerAmount: new BigNumber(1234), + takerAmount: new BigNumber(5678), + maker: '0x8d5e5b5b5d187bdce2e0143eb6b3cc44eef3c0cb', + taker: '0x615312fb74c31303eab07dea520019bb23f4c6c2', + txOrigin: '0x70f2d6c7acd257a6700d745b76c602ceefeb8e20', + pool: '0x0bbff69b85a87da39511aefc3211cb9aff00e1a1779dc35b8f3635d8b5ea2680', + expiry: new BigNumber(1001), + salt: new BigNumber(2001), + chainId: 8008, + verifyingContract: '0x6701704d2421c64ee9aa93ec7f96ede81c4be77d', + }); + + it('can get the struct hash', () => { + const actual = order.getStructHash(); + const expected = '0x995b6261fa93cd5acd5121f404305f8e9f9c388723f3e53fb05bd5eb534b4899'; + expect(actual).to.eq(expected); + }); + + it('can get the EIP712 hash', () => { + const actual = order.getHash(); + const expected = '0xb4c40524740dcc4030a62b6d9afe740f6ca24508e59ef0c5bd99d5649a430885'; + expect(actual).to.deep.eq(expected); + }); + + it('can get an EthSign signature with a provider', async () => { + const actual = await order.clone({ maker: providerMaker }).getSignatureWithProviderAsync(provider); + const expected = { + signatureType: SignatureType.EthSign, + r: '0xed555259efe38e2d679f7bc18385e51ce158576ced6c11630f67ba37b3e59a29', + s: '0x769211cf3e86b254e3755e1dcf459f5b362ca1c42ec3cf08841d90cb44f2a8e4', + v: 27, + }; + expect(actual).to.deep.eq(expected); + }); + + it('can get an EthSign signature with a private key', () => { + const actual = order.clone({ maker: keyMaker }).getSignatureWithKey(key); + const expected = { + signatureType: SignatureType.EthSign, + r: '0xba231f67168d6d1fd2b83e0a3a6b1663ec493b98a8dbe34689c8e8171972522f', + s: '0x47023a5f73b5f638e9a138de26b35e59847680bee78af0c8251de532e7c39d8b', + v: 28, + }; + expect(actual).to.deep.eq(expected); + }); + + it('can get an EIP712 signature with a private key', () => { + const actual = order.clone({ maker: keyMaker }).getSignatureWithKey(key, SignatureType.EIP712); + const expected = { + signatureType: SignatureType.EIP712, + r: '0x824d70ae7cccea382ddd51f773f9745abb928dadbccebbd090ca371d7b8fb741', + s: '0x7557a009f7cfa207d19a8fd42950458340de718a7b35522051cde6f75ad42cba', + v: 27, + }; + expect(actual).to.deep.eq(expected); + }); + }); +}); diff --git a/packages/protocol-utils/test/signature_utils_test.ts b/packages/protocol-utils/test/signature_utils_test.ts new file mode 100644 index 0000000000..58b62f6f6e --- /dev/null +++ b/packages/protocol-utils/test/signature_utils_test.ts @@ -0,0 +1,76 @@ +import { chaiSetup, web3Factory, Web3Wrapper } from '@0x/dev-utils'; +import { Web3ProviderEngine } from '@0x/subproviders'; +import { expect } from 'chai'; + +import { + ecSignHashWithKey, + eip712SignHashWithKey, + ethSignHashWithKey, + ethSignHashWithProviderAsync, + SignatureType, +} from '../src/signature_utils'; + +chaiSetup.configure(); + +describe('signature_utils', () => { + let provider: Web3ProviderEngine; + let signer: string; + const hash = '0x38a8da1ec749de4220312ce7fa62aaf01a6e8c1342cbce81278ae7c8885c2475'; + const key = '0xee094b79aa0315914955f2f09be9abe541dcdc51f0aae5bec5453e9f73a471a6'; + + before(async () => { + provider = web3Factory.getRpcProvider({ shouldUseInProcessGanache: true }); + [signer] = await new Web3Wrapper(provider).getAvailableAddressesAsync(); + }); + + describe('ethSignHashWithProviderAsync()', () => { + it('can sign a hash', async () => { + const actual = await ethSignHashWithProviderAsync(hash, signer, provider); + const expected = { + signatureType: SignatureType.EthSign, + r: '0xc1ea77c46d7aabf3f68f29870bc61eb583f9acb25af5a953ce2bff341b4c456a', + s: '0x66133126ef3058ec52081f9e3dd77103980483f3ab20d0529b14e4b194e7d12d', + v: 27, + }; + expect(actual).to.deep.eq(expected); + }); + }); + + describe('ethSignHashWithKey()', () => { + it('can sign a hash', async () => { + const actual = ethSignHashWithKey(hash, key); + const expected = { + signatureType: SignatureType.EthSign, + r: '0xb88b49ba6418464f9b1e703ea0fbba5f9d72576a4d9819e45d4ede7a34afbe73', + s: '0x6c81693f439942eb8c6ac943fab6b9fcc4b48615fcedcede93298f6dc3087ead', + v: 28, + }; + expect(actual).to.deep.eq(expected); + }); + }); + + describe('eip712SignHashWithKey()', () => { + it('can sign a hash', async () => { + const actual = eip712SignHashWithKey(hash, key); + const expected = { + signatureType: SignatureType.EIP712, + r: '0x1a01dba0f97d151f696f689e618a8ef6c4e7610a71c2607e18b0d96c741b3e8d', + s: '0x28fd463b90fd20cf17f16ab6831d712e9bce29619db1bef6e7802318d1de09ed', + v: 27, + }; + expect(actual).to.deep.eq(expected); + }); + }); + + describe('ecSignHashWithKey()', () => { + it('can sign a hash', async () => { + const actual = ecSignHashWithKey(hash, key); + const expected = { + r: '0x1a01dba0f97d151f696f689e618a8ef6c4e7610a71c2607e18b0d96c741b3e8d', + s: '0x28fd463b90fd20cf17f16ab6831d712e9bce29619db1bef6e7802318d1de09ed', + v: 27, + }; + expect(actual).to.deep.eq(expected); + }); + }); +}); diff --git a/packages/protocol-utils/tsconfig.json b/packages/protocol-utils/tsconfig.json new file mode 100644 index 0000000000..718e623c74 --- /dev/null +++ b/packages/protocol-utils/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "../../tsconfig", + "compilerOptions": { + "outDir": "lib", + "rootDir": "." + }, + "include": ["src/**/*", "test/**/*"] +} diff --git a/packages/protocol-utils/tslint.json b/packages/protocol-utils/tslint.json new file mode 100644 index 0000000000..91a016f2b2 --- /dev/null +++ b/packages/protocol-utils/tslint.json @@ -0,0 +1,7 @@ +{ + "extends": ["@0x/tslint-config"], + "rules": { + "custom-no-magic-numbers": false, + "max-classes-per-file": false + } +} diff --git a/packages/protocol-utils/typedoc-tsconfig.json b/packages/protocol-utils/typedoc-tsconfig.json new file mode 100644 index 0000000000..b9c6b36f30 --- /dev/null +++ b/packages/protocol-utils/typedoc-tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../../typedoc-tsconfig", + "compilerOptions": { + "outDir": "lib" + }, + "include": ["src/**/*", "test/**/*"] +} diff --git a/yarn.lock b/yarn.lock index dabeb0caf9..e7e25036b3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -643,10 +643,10 @@ npmlog "^4.1.2" write-file-atomic "^2.3.0" -"@0x/abi-gen@^5.4.12": - version "5.4.12" - resolved "https://registry.yarnpkg.com/@0x/abi-gen/-/abi-gen-5.4.12.tgz#ac5940867e15bd9cba360b2f29f704a01035a6cb" - integrity sha512-YHs8FD0RY/OJaCYQjz4KXm4OCW34EHvFjK0ZNE+aFGoN7TDwQF3bG/ZmRPRPLCRVNuYZahygY8R5LEXog+hI2Q== +"@0x/abi-gen@^5.4.13": + version "5.4.13" + resolved "https://registry.yarnpkg.com/@0x/abi-gen/-/abi-gen-5.4.13.tgz#fd7101d6937faffee1f95b6cf7bf4f589b6485cc" + integrity sha512-dZCDa9DuIjBBnhO5m3P2EclGXYeTGZowOgLX3QWkpgKnmFBGntAF7OiwzSqtaqEJgJQkJaK/YRsfO4wg5ZnzQg== dependencies: "@0x/types" "^3.3.1" "@0x/typescript-typings" "^5.1.6" @@ -699,15 +699,15 @@ lodash "^4.17.11" valid-url "^1.0.9" -"@0x/base-contract@^6.2.13": - version "6.2.13" - resolved "https://registry.yarnpkg.com/@0x/base-contract/-/base-contract-6.2.13.tgz#4b10ef021aeeae8782fe9fcc3fe4cdbc32ac702d" - integrity sha512-aqzHznPaOty9izU5kuDbFZwxu0W6fkWHkz9S7iDNmsF6cHJC8lyYUKwup5ym1JFe6uCTenbgVmjfRw5lu79Ojw== +"@0x/base-contract@^6.2.14": + version "6.2.14" + resolved "https://registry.yarnpkg.com/@0x/base-contract/-/base-contract-6.2.14.tgz#a4a8dfc91a7d33dbfd010841ed843a077531c9c6" + integrity sha512-jOOVpZWSz6oDITdWA4PpUshLKLAAe+Pdul8QUhtYNatTAnUvAa7xcVQpeNVSjawPEgP0WUmbVuMh9hY0xe+lAA== dependencies: "@0x/assert" "^3.0.19" "@0x/json-schemas" "^5.3.4" "@0x/utils" "^6.1.1" - "@0x/web3-wrapper" "^7.2.10" + "@0x/web3-wrapper" "^7.3.0" "@types/node" "12.12.54" ethereumjs-account "^3.0.0" ethereumjs-blockstream "^7.0.0" @@ -736,12 +736,12 @@ version "4.12.0" resolved "https://registry.yarnpkg.com/@0x/contract-addresses/-/contract-addresses-4.12.0.tgz#2adb0bcde763ad13437f782adf25c403107ff428" -"@0x/contracts-gen@^2.0.23": - version "2.0.23" - resolved "https://registry.yarnpkg.com/@0x/contracts-gen/-/contracts-gen-2.0.23.tgz#0be65fc1d6656166bdab5b2f7d60a62fe97da23a" - integrity sha512-fm+AQY/27yGEuA0J5brMJgKxnHMVw3mrXyeSvfEHysPDZORSx7gIX18AQV/itMm9vpouOrfoSceuo3gNvFjfNA== +"@0x/contracts-gen@^2.0.24": + version "2.0.24" + resolved "https://registry.yarnpkg.com/@0x/contracts-gen/-/contracts-gen-2.0.24.tgz#494c0867bab7681ebd1de56fe435b7366c1ef39b" + integrity sha512-KIkRc8wIC5HGVjbLtmCYfqGWIZnnUXxcwfZLp8wxQXnyrp5rPNwfgEKQmjnAhejy8numHxR8Grk8Ltx4shGrxg== dependencies: - "@0x/sol-compiler" "^4.4.0" + "@0x/sol-compiler" "^4.4.1" "@0x/sol-resolver" "^3.1.6" "@0x/types" "^3.3.1" "@0x/typescript-typings" "^5.1.6" @@ -780,16 +780,16 @@ typeorm "0.2.7" websocket "^1.0.25" -"@0x/dev-utils@^4.1.2": - version "4.1.2" - resolved "https://registry.yarnpkg.com/@0x/dev-utils/-/dev-utils-4.1.2.tgz#273465916e6cce31454091379356170dd93c241d" - integrity sha512-oSieKAQE4kEkn6FXm9NLgrXPLQUctJyA/m6/nxZIAtPMaM04Gx2FEdx2ICWocqaawDEHODPco5z0VMjFAw37og== +"@0x/dev-utils@^4.1.3": + version "4.1.3" + resolved "https://registry.yarnpkg.com/@0x/dev-utils/-/dev-utils-4.1.3.tgz#85eb7fa13b1d71f0b7c881f35944944d1be56ac9" + integrity sha512-/93iF2ZNz5zBpZCo/XhmZURC+CJV5vRykJbhcmFFAXrcmZhRvkSinw6QhBNHv2UJxMO3GwbiGklLWNMhA/LmMQ== dependencies: - "@0x/subproviders" "^6.2.2" + "@0x/subproviders" "^6.2.3" "@0x/types" "^3.3.1" "@0x/typescript-typings" "^5.1.6" "@0x/utils" "^6.1.1" - "@0x/web3-wrapper" "^7.2.10" + "@0x/web3-wrapper" "^7.3.0" "@types/node" "12.12.54" "@types/web3-provider-engine" "^14.0.0" chai "^4.0.1" @@ -904,10 +904,10 @@ express-async-handler "^1.1.4" http-status-codes "^1.4.0" -"@0x/sol-compiler@^4.4.0": - version "4.4.0" - resolved "https://registry.yarnpkg.com/@0x/sol-compiler/-/sol-compiler-4.4.0.tgz#e6f87038eabac177bafd8ee69151bc1e5b0c320d" - integrity sha512-4BDqT2FAtted6sgrNz7g35hs8WiqoUjVOVatxb0SqLDlV+wQhNkL51It9yGuV6uYB4Zkodcn7uCnXkM+Lk8GUA== +"@0x/sol-compiler@^4.4.1": + version "4.4.1" + resolved "https://registry.yarnpkg.com/@0x/sol-compiler/-/sol-compiler-4.4.1.tgz#c10a207bb7e1ab41587df1542e143b88e40b01f7" + integrity sha512-AQIgWHTQHpaoza7rLx+tQIoWJzCBkPTJPX8cAvV5Uv6Ed5ChjAzcqmSlD3tWuJaauUyEgmguqYSGk0y4at5Y6Q== dependencies: "@0x/assert" "^3.0.19" "@0x/json-schemas" "^5.3.4" @@ -915,7 +915,7 @@ "@0x/types" "^3.3.1" "@0x/typescript-typings" "^5.1.6" "@0x/utils" "^6.1.1" - "@0x/web3-wrapper" "^7.2.10" + "@0x/web3-wrapper" "^7.3.0" "@types/node" "12.12.54" "@types/yargs" "^11.0.0" chalk "^2.3.0" @@ -932,13 +932,13 @@ web3-eth-abi "^1.0.0-beta.24" yargs "^10.0.3" -"@0x/sol-coverage@^4.0.23": - version "4.0.23" - resolved "https://registry.yarnpkg.com/@0x/sol-coverage/-/sol-coverage-4.0.23.tgz#9ee660300244d7fb811b352a2faa3f5cb325834b" - integrity sha512-O9LBD4T5pftWP759OhVBBLKx2NZdRaKUobpwoThY2FBvwra05g/w6UnQWFH6f5dI1UTVXvtaYpbB5K48iYpYug== +"@0x/sol-coverage@^4.0.24": + version "4.0.24" + resolved "https://registry.yarnpkg.com/@0x/sol-coverage/-/sol-coverage-4.0.24.tgz#fd4d470e8c2808a668793b5c73bfa75aab4ea7d0" + integrity sha512-ewPLJuDDSd7R8o0iFghdDEfvzhz5nBKxCXgFEI/bY43aI6gmEDyNhXSaHu/clX2Ot7b23+qNQmcbLkpisGgXNA== dependencies: - "@0x/sol-tracing-utils" "^7.1.13" - "@0x/subproviders" "^6.2.2" + "@0x/sol-tracing-utils" "^7.1.14" + "@0x/subproviders" "^6.2.3" "@0x/typescript-typings" "^5.1.6" "@types/minimatch" "^3.0.3" "@types/node" "12.12.54" @@ -947,13 +947,13 @@ minimatch "^3.0.4" web3-provider-engine "14.0.6" -"@0x/sol-profiler@^4.1.13": - version "4.1.13" - resolved "https://registry.yarnpkg.com/@0x/sol-profiler/-/sol-profiler-4.1.13.tgz#05c852916644bb3201be9e73193d3b403117e087" - integrity sha512-SeRQzXnqE+cSt/hf05sWFwQ+VkOy4ENeMEhVRajdXOjVjAxZAJHNyFMU8GoWn0s8NJhJ5qXPM5xCj1N5gEDUoA== +"@0x/sol-profiler@^4.1.14": + version "4.1.14" + resolved "https://registry.yarnpkg.com/@0x/sol-profiler/-/sol-profiler-4.1.14.tgz#bc10c47bbc9bbe7f8b120f8543286355127c39d8" + integrity sha512-1z7C/eFWi2GZQIQQt8IG7dkNQaqDmOSLf3EJEtdqyPmc9rLyOogClLFs0CFPI0AGJFIt0BAVxv62dLupyWnW7A== dependencies: - "@0x/sol-tracing-utils" "^7.1.13" - "@0x/subproviders" "^6.2.2" + "@0x/sol-tracing-utils" "^7.1.14" + "@0x/subproviders" "^6.2.3" "@0x/typescript-typings" "^5.1.6" "@0x/utils" "^6.1.1" "@types/node" "12.12.54" @@ -972,13 +972,13 @@ "@types/node" "12.12.54" lodash "^4.17.11" -"@0x/sol-trace@^3.0.23": - version "3.0.23" - resolved "https://registry.yarnpkg.com/@0x/sol-trace/-/sol-trace-3.0.23.tgz#378056e2bc67893c6fa28741013a7cd6242a3091" - integrity sha512-5Lx+k8sB5Bgtl03Xus+d+PiRRUdf0TjI1p5qkryRyVdvyn2wNNgQU+HE+1sA6p1+vK4d6e5FTC0dSVZc3ZQIKw== +"@0x/sol-trace@^3.0.24": + version "3.0.24" + resolved "https://registry.yarnpkg.com/@0x/sol-trace/-/sol-trace-3.0.24.tgz#0219b6a32e4cad6ad44342ae49ddd11df22593f6" + integrity sha512-REU/HCrHu+VmrA8kjRXhrdTQK4EiNuNla83szd+Dqzr3VVoadO6Ua5XowbAP0jn2HgyHlwo1mnLyH8xb+ZKScQ== dependencies: - "@0x/sol-tracing-utils" "^7.1.13" - "@0x/subproviders" "^6.2.2" + "@0x/sol-tracing-utils" "^7.1.14" + "@0x/subproviders" "^6.2.3" "@0x/typescript-typings" "^5.1.6" "@types/node" "12.12.54" chalk "^2.3.0" @@ -988,18 +988,18 @@ loglevel "^1.6.1" web3-provider-engine "14.0.6" -"@0x/sol-tracing-utils@^7.1.13": - version "7.1.13" - resolved "https://registry.yarnpkg.com/@0x/sol-tracing-utils/-/sol-tracing-utils-7.1.13.tgz#90ec58b80ee828654bcb685364dde1c2b08d373b" - integrity sha512-Wl+QD+z17sdXC4qidualZ5mcjyaoUUfJ0736PGZAsGcmFVwo29mKGVU/7CWLKqQGbrmxGl6bv1MF3X2lOsyCug== +"@0x/sol-tracing-utils@^7.1.14": + version "7.1.14" + resolved "https://registry.yarnpkg.com/@0x/sol-tracing-utils/-/sol-tracing-utils-7.1.14.tgz#0cc7ac67682dbae0dacbd748488425b70e7494a2" + integrity sha512-VzfTDjuTEXpzTpPR5UZh03ei4bwzc9Tif65oHh/+LejuyB9qijF5NofIYSOmviOAl+UJgUpfEAoYJ8R7v8lptg== dependencies: - "@0x/dev-utils" "^4.1.2" - "@0x/sol-compiler" "^4.4.0" + "@0x/dev-utils" "^4.1.3" + "@0x/sol-compiler" "^4.4.1" "@0x/sol-resolver" "^3.1.6" - "@0x/subproviders" "^6.2.2" + "@0x/subproviders" "^6.2.3" "@0x/typescript-typings" "^5.1.6" "@0x/utils" "^6.1.1" - "@0x/web3-wrapper" "^7.2.10" + "@0x/web3-wrapper" "^7.3.0" "@types/node" "12.12.54" "@types/solidity-parser-antlr" "^0.2.3" chalk "^2.3.0" @@ -1044,16 +1044,16 @@ optionalDependencies: "@ledgerhq/hw-transport-node-hid" "^4.3.0" -"@0x/subproviders@^6.2.2": - version "6.2.2" - resolved "https://registry.yarnpkg.com/@0x/subproviders/-/subproviders-6.2.2.tgz#69ee741c052bc8c80ea16692e1359a064258a133" - integrity sha512-Amd4BEPFPLU1pYp3onvAWhb/dYgToQhe7qG56KU0zfmv1VsDRRcnOg4SDSUfTybijRSBgNDoa+KU76pBJg7QvQ== +"@0x/subproviders@^6.2.3": + version "6.2.3" + resolved "https://registry.yarnpkg.com/@0x/subproviders/-/subproviders-6.2.3.tgz#632ed8b73b65bc6b6d5944eee3e95dda02475629" + integrity sha512-lebZFCaatGvnUo2W+rYbKza+1sQgrhMfxFuuugrPqX8pQnbM1VqrCr2wJL103SPVXJ34MPwONm/m2MMx34V+hw== dependencies: "@0x/assert" "^3.0.19" "@0x/types" "^3.3.1" "@0x/typescript-typings" "^5.1.6" "@0x/utils" "^6.1.1" - "@0x/web3-wrapper" "^7.2.10" + "@0x/web3-wrapper" "^7.3.0" "@ledgerhq/hw-app-eth" "^4.3.0" "@ledgerhq/hw-transport-u2f" "4.24.0" "@types/hdkey" "^0.7.0" @@ -1252,21 +1252,6 @@ websocket "^1.0.28" xhr2-cookies "1.1.0" -"@0x/web3-wrapper@^7.2.10": - version "7.2.10" - resolved "https://registry.yarnpkg.com/@0x/web3-wrapper/-/web3-wrapper-7.2.10.tgz#8d24771917e3d408a13283eca081fe2c0289b9b7" - integrity sha512-RKq8XiFDbtX89nsZcivVi1OWyyL50wHaou1UHq6/f0b61hqNVNIoBxx5lFP2d9fsDB+cBqNcU+oKxMMObFcruQ== - dependencies: - "@0x/assert" "^3.0.19" - "@0x/json-schemas" "^5.3.4" - "@0x/typescript-typings" "^5.1.6" - "@0x/utils" "^6.1.1" - "@types/node" "12.12.54" - ethereum-types "^3.4.0" - ethereumjs-util "^5.1.1" - ethers "~4.0.4" - lodash "^4.17.11" - "@0x/web3-wrapper@^7.2.8": version "7.2.8" resolved "https://registry.yarnpkg.com/@0x/web3-wrapper/-/web3-wrapper-7.2.8.tgz#7df4c52e358594338f8dbe76b1490a5c4c423633" @@ -1281,6 +1266,21 @@ ethers "~4.0.4" lodash "^4.17.11" +"@0x/web3-wrapper@^7.3.0": + version "7.3.0" + resolved "https://registry.yarnpkg.com/@0x/web3-wrapper/-/web3-wrapper-7.3.0.tgz#7e6c7a27768f9c596d6809a8a10e1c6c0856a286" + integrity sha512-NTYD6Uo+fifLjM5nJqr1qGdbTEIJQBrHGvgItuKV3b4noH4MlqoRGvFaY3kMFl/37oV1Bal7UFGcDF8Xf285bQ== + dependencies: + "@0x/assert" "^3.0.19" + "@0x/json-schemas" "^5.3.4" + "@0x/typescript-typings" "^5.1.6" + "@0x/utils" "^6.1.1" + "@types/node" "12.12.54" + ethereum-types "^3.4.0" + ethereumjs-util "^5.1.1" + ethers "~4.0.4" + lodash "^4.17.11" + "@0xproject/npm-cli-login@^0.0.11": version "0.0.11" resolved "https://registry.yarnpkg.com/@0xproject/npm-cli-login/-/npm-cli-login-0.0.11.tgz#3f1ec06112ce62aad300ff0575358f68aeecde2e"