[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "POOL_SIZE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "baseUri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "code", "type": "uint256" } ], "name": "changeCodeMode", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "code", "type": "uint256" } ], "name": "clearCodeRouter", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "code", "type": "uint256" } ], "name": "clearCodeSipDomain", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "defaultSipDomain", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getAvailableForMintCodes", "outputs": [ { "internalType": "bool[1000]", "name": "", "type": "bool[1000]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getBlockedCodes", "outputs": [ { "internalType": "bool[1000]", "name": "", "type": "bool[1000]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "code", "type": "uint256" } ], "name": "getCodeData", "outputs": [ { "components": [ { "internalType": "bool", "name": "isBlocked", "type": "bool" }, { "internalType": "bool", "name": "hasSipDomain", "type": "bool" }, { "internalType": "bool", "name": "hasRouter", "type": "bool" }, { "internalType": "uint256", "name": "subscriptionEndTime", "type": "uint256" }, { "internalType": "enum RootRouter.CodeMode", "name": "mode", "type": "uint8" }, { "internalType": "string", "name": "sipDomain", "type": "string" }, { "components": [ { "internalType": "string", "name": "chainId", "type": "string" }, { "internalType": "string", "name": "adr", "type": "string" }, { "internalType": "string", "name": "poolCodeLength", "type": "string" } ], "internalType": "struct RootRouter.Router", "name": "router", "type": "tuple" } ], "internalType": "struct RootRouter.Code", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "code", "type": "uint256" } ], "name": "getCodeStatus", "outputs": [ { "components": [ { "internalType": "bool", "name": "isBlocked", "type": "bool" }, { "internalType": "bool", "name": "hasOwner", "type": "bool" }, { "internalType": "bool", "name": "isHeld", "type": "bool" }, { "internalType": "bool", "name": "isAvailableForMint", "type": "bool" }, { "internalType": "uint256", "name": "subscriptionEndTime", "type": "uint256" }, { "internalType": "uint256", "name": "holdEndTime", "type": "uint256" } ], "internalType": "struct RootRouter.CodeStatus", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getHeldCodes", "outputs": [ { "internalType": "bool[1000]", "name": "", "type": "bool[1000]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "code", "type": "uint256" } ], "name": "getMode", "outputs": [ { "internalType": "enum RootRouter.CodeMode", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "code", "type": "uint256" } ], "name": "getNextNode", "outputs": [ { "internalType": "string[5]", "name": "", "type": "string[5]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "adr", "type": "address" } ], "name": "getOwnerCodes", "outputs": [ { "internalType": "bool[1000]", "name": "", "type": "bool[1000]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getPoolCodes", "outputs": [ { "internalType": "bool[1000]", "name": "", "type": "bool[1000]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "code", "type": "uint256" } ], "name": "hasOwner", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "holdingDuration", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "code", "type": "uint256" } ], "name": "isAvailableForMint", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "code", "type": "uint256" } ], "name": "isBlocked", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "code", "type": "uint256" } ], "name": "isHeld", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "code", "type": "uint256" } ], "name": "isNumberMode", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "code", "type": "uint256" } ], "name": "isPoolMode", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "code", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "mintPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "modeChangePrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "code", "type": "uint256" } ], "name": "renewSubscription", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "code", "type": "uint256" } ], "name": "renounceOwnershipOfCode", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "newBaseUri", "type": "string" } ], "name": "setBaseUri", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "code", "type": "uint256" }, { "internalType": "bool", "name": "newBlockedStatus", "type": "bool" } ], "name": "setCodeBlockedStatus", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "code", "type": "uint256" }, { "internalType": "uint256", "name": "newChainId", "type": "uint256" }, { "internalType": "string", "name": "newAddress", "type": "string" }, { "internalType": "uint256", "name": "newPoolCodeLength", "type": "uint256" } ], "name": "setCodeRouter", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "code", "type": "uint256" }, { "internalType": "string", "name": "newSipDomain", "type": "string" } ], "name": "setCodeSipDomain", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "code", "type": "uint256" }, { "internalType": "uint256", "name": "newSubscriptionEndTime", "type": "uint256" } ], "name": "setCodeSubscriptionEndTime", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "newDefaultSipDomain", "type": "string" } ], "name": "setDefaultSipDomain", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newHoldingDuration", "type": "uint256" } ], "name": "setHoldingDuration", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newMintPrice", "type": "uint256" } ], "name": "setMintPrice", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newModeChangePrice", "type": "uint256" } ], "name": "setModeChangePrice", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newSubscriptionDuration", "type": "uint256" } ], "name": "setSubscriptionDuration", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newSubscriptionPrice", "type": "uint256" } ], "name": "setSubscriptionPrice", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newTtl", "type": "uint256" } ], "name": "setTtl", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "subscriptionDuration", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "subscriptionPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "code", "type": "uint256" }, { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnershipOfCode", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "ttl", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
678ac7230489e80000600755676124fee993bc0000600855674563918244f400006009556312cc0300600a5562278d00600b55620d2f00600c5560c0604052601960809081527f68747470733a2f2f6d7674732d6d657461646174612e696f2f0000000000000060a052600d90620000789082620002bd565b5060408051808201909152600c81526b7369702e717569632e70726f60a01b6020820152600e90620000ab9082620002bd565b50348015620000b957600080fd5b506040518060400160405280601981526020017f4d65746156657273652054656c65636f6d205365727669636500000000000000815250604051806040016040528060048152602001634d56545360e01b81525081600090816200011e9190620002bd565b5060016200012d8282620002bd565b5050506200014a62000144620001ab60201b60201c565b620001af565b60005b6064811015620001a4576001600f826103e8811062000170576200017062000389565b60070201805460ff19169115159190911790556200019c81600162000201602090811b6200289a17901c565b90506200014d565b50620003c1565b3390565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006200020f82846200039f565b90505b92915050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200024357607f821691505b6020821081036200026457634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002b857600081815260208120601f850160051c81016020861015620002935750805b601f850160051c820191505b81811015620002b4578281556001016200029f565b5050505b505050565b81516001600160401b03811115620002d957620002d962000218565b620002f181620002ea84546200022e565b846200026a565b602080601f831160018114620003295760008415620003105750858301515b600019600386901b1c1916600185901b178555620002b4565b600085815260208120601f198616915b828110156200035a5788860151825594840194600190910190840162000339565b5085821015620003795787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b808201808211156200021257634e487b7160e01b600052601160045260246000fd5b61415380620003d16000396000f3fe6080604052600436106103975760003560e01c806378ba287a116101dc578063adf0b0e911610102578063d71bb37b116100a0578063f2fde38b1161006f578063f2fde38b14610a3d578063f48d60ca14610a5d578063f4a0a52814610a7d578063fae2201314610a9d57600080fd5b8063d71bb37b146109ca578063e03b53e0146109dd578063e985e9c5146109fd578063ecf4424c14610a1d57600080fd5b8063bdc8e54c116100dc578063bdc8e54c1461095e578063c87b56dd14610974578063c8c1b94e14610994578063cac3c4d2146109aa57600080fd5b8063adf0b0e914610909578063b0aa98c71461091e578063b88d4fde1461093e57600080fd5b80638da5cb5b1161017a578063a0712d6811610149578063a0712d6814610896578063a0bcfc7f146108a9578063a22cb465146108c9578063a9969c29146108e957600080fd5b80638da5cb5b1461083957806395d89b411461085757806399b70e711461086c5780639abc83201461088157600080fd5b80637d724e9e116101b65780637d724e9e146107ac5780637e7313b8146107cc57806383ba6f5b146107f95780638a6020eb1461081957600080fd5b806378ba287a146107565780637a94a633146107765780637c2f810b1461078c57600080fd5b80634e8b1dd5116102c15780636352211e1161025f5780636d902bfb1161022e5780636d902bfb146106de57806370a082311461070b578063715018a61461072b5780637548c21f1461074057600080fd5b80636352211e146106685780636817c76c146106885780636b39743b1461069e5780636c90299f146106be57600080fd5b806353664c561161029b57806353664c561461060057806355d87bd21461061357806359a3c7431461063357806363514e871461064857600080fd5b80634e8b1dd5146105a65780634f9daac6146105ca578063502d88c8146105e057600080fd5b80631a5ee779116103395780633a721a96116103085780633a721a961461052f5780633ccfd60b1461055c57806342842e0e1461057157806348876d761461059157600080fd5b80631a5ee779146104af5780631be432ba146104cf57806323b872dd146104ef57806328f034de1461050f57600080fd5b8063081812fc11610375578063081812fc14610415578063095ea7b31461044d5780630df464941461046d57806313566d991461048f57600080fd5b806301ffc9a71461039c5780630239cafd146103d157806306fdde03146103f3575b600080fd5b3480156103a857600080fd5b506103bc6103b7366004613759565b610b11565b60405190151581526020015b60405180910390f35b3480156103dd57600080fd5b506103f16103ec366004613776565b610b63565b005b3480156103ff57600080fd5b50610408610b70565b6040516103c891906137df565b34801561042157600080fd5b50610435610430366004613776565b610c02565b6040516001600160a01b0390911681526020016103c8565b34801561045957600080fd5b506103f1610468366004613809565b610c29565b34801561047957600080fd5b50610482610d43565b6040516103c89190613833565b34801561049b57600080fd5b506103bc6104aa366004613776565b610d9e565b3480156104bb57600080fd5b506103f16104ca366004613776565b610e26565b3480156104db57600080fd5b506103f16104ea366004613868565b610e33565b3480156104fb57600080fd5b506103f161050a366004613894565b610ebb565b34801561051b57600080fd5b506103f161052a366004613776565b610eec565b34801561053b57600080fd5b5061054f61054a366004613776565b610fb4565b6040516103c89190613908565b34801561056857600080fd5b506103f1611027565b34801561057d57600080fd5b506103f161058c366004613894565b61107b565b34801561059d57600080fd5b50610482611096565b3480156105b257600080fd5b506105bc600c5481565b6040519081526020016103c8565b3480156105d657600080fd5b506105bc6103e881565b3480156105ec57600080fd5b506103bc6105fb366004613776565b6110eb565b6103f161060e366004613776565b611140565b34801561061f57600080fd5b506103f161062e366004613776565b61127f565b34801561063f57600080fd5b5061048261128c565b34801561065457600080fd5b506103f16106633660046139c2565b6112e1565b34801561067457600080fd5b50610435610683366004613776565b6112f5565b34801561069457600080fd5b506105bc60075481565b3480156106aa57600080fd5b506103f16106b93660046139f7565b611355565b3480156106ca57600080fd5b506103f16106d9366004613a3e565b61141b565b3480156106ea57600080fd5b506106fe6106f9366004613776565b611516565b6040516103c89190613a96565b34801561071757600080fd5b506105bc610726366004613ae3565b611a8b565b34801561073757600080fd5b506103f1611b11565b34801561074c57600080fd5b506105bc600b5481565b34801561076257600080fd5b50610482610771366004613ae3565b611b25565b34801561078257600080fd5b506105bc600a5481565b34801561079857600080fd5b506103f16107a7366004613b0e565b611b82565b3480156107b857600080fd5b506103f16107c7366004613b31565b611bdd565b3480156107d857600080fd5b506107ec6107e7366004613776565b611c30565b6040516103c89190613ba4565b34801561080557600080fd5b506103bc610814366004613776565b611f78565b34801561082557600080fd5b506103bc610834366004613776565b611fc2565b34801561084557600080fd5b506006546001600160a01b0316610435565b34801561086357600080fd5b5061040861201f565b34801561087857600080fd5b5061040861202e565b34801561088d57600080fd5b506104086120bc565b6103f16108a4366004613776565b6120c9565b3480156108b557600080fd5b506103f16108c43660046139c2565b612232565b3480156108d557600080fd5b506103f16108e4366004613c1f565b612246565b3480156108f557600080fd5b506103f1610904366004613776565b612251565b34801561091557600080fd5b50610482612316565b34801561092a57600080fd5b506103bc610939366004613776565b6123a7565b34801561094a57600080fd5b506103f1610959366004613c49565b6123f2565b34801561096a57600080fd5b506105bc60085481565b34801561098057600080fd5b5061040861098f366004613776565b61242a565b3480156109a057600080fd5b506105bc60095481565b3480156109b657600080fd5b506103f16109c5366004613776565b612491565b6103f16109d8366004613776565b61249e565b3480156109e957600080fd5b506103f16109f8366004613776565b612567565b348015610a0957600080fd5b506103bc610a18366004613cc5565b612574565b348015610a2957600080fd5b506103f1610a38366004613776565b6125a2565b348015610a4957600080fd5b506103f1610a58366004613ae3565b61268c565b348015610a6957600080fd5b506103bc610a78366004613776565b612702565b348015610a8957600080fd5b506103f1610a98366004613776565b61275d565b348015610aa957600080fd5b50610abd610ab8366004613776565b61276a565b6040516103c89190600060c0820190508251151582526020830151151560208301526040830151151560408301526060830151151560608301526080830151608083015260a083015160a083015292915050565b60006001600160e01b031982166380ac58cd60e01b1480610b4257506001600160e01b03198216635b5e139f60e01b145b80610b5d57506301ffc9a760e01b6001600160e01b03198316145b92915050565b610b6b6128a6565b600b55565b606060008054610b7f90613cef565b80601f0160208091040260200160405190810160405280929190818152602001828054610bab90613cef565b8015610bf85780601f10610bcd57610100808354040283529160200191610bf8565b820191906000526020600020905b815481529060010190602001808311610bdb57829003601f168201915b5050505050905090565b6000610c0d82612900565b506000908152600460205260409020546001600160a01b031690565b6000610c34826112f5565b9050806001600160a01b0316836001600160a01b031603610ca65760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610cc25750610cc28133612574565b610d345760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610c9d565b610d3e8383612950565b505050565b610d4b613650565b610d53613650565b60005b6103e8811015610d9857610d69816123a7565b82826103e88110610d7c57610d7c613d23565b91151560209092020152610d9181600161289a565b9050610d56565b50919050565b6000610dab826103e81190565b610dc75760405162461bcd60e51b8152600401610c9d90613d39565b610dd082612702565b610dec5760405162461bcd60e51b8152600401610c9d90613d60565b60005b600f836103e88110610e0357610e03613d23565b600702016002015460ff166001811115610e1f57610e1f6138d0565b1492915050565b610e2e6128a6565b600855565b610e3e826103e81190565b610e5a5760405162461bcd60e51b8152600401610c9d90613d39565b610e6433836129be565b80610e8857506006546001600160a01b031633148015610e885750610e8882612702565b610ea45760405162461bcd60e51b8152600401610c9d90613d8a565b610eb7610eb0836112f5565b8284612a04565b5050565b610ec533826129be565b610ee15760405162461bcd60e51b8152600401610c9d90613db8565b610d3e838383612a04565b610ef7816103e81190565b610f135760405162461bcd60e51b8152600401610c9d90613d39565b610f1d33826129be565b80610f4157506006546001600160a01b031633148015610f415750610f4181612702565b610f5d5760405162461bcd60e51b8152600401610c9d90613d8a565b610f66816123a7565b15610f835760405162461bcd60e51b8152600401610c9d90613e05565b610f8c816110eb565b610fa85760405162461bcd60e51b8152600401610c9d90613e2c565b610fb181612b75565b50565b6000610fc1826103e81190565b610fdd5760405162461bcd60e51b8152600401610c9d90613d39565b610fe682612702565b6110025760405162461bcd60e51b8152600401610c9d90613d60565b600f826103e8811061101657611016613d23565b600702016002015460ff1692915050565b61102f6128a6565b60006110436006546001600160a01b031690565b6040519091506001600160a01b038216904780156108fc02916000818181858888f19350505050158015610eb7573d6000803e3d6000fd5b610d3e838383604051806020016040528060008152506123f2565b61109e613650565b6110a6613650565b60005b6103e8811015610d98576110bc81611f78565b82826103e881106110cf576110cf613d23565b911515602090920201526110e481600161289a565b90506110a9565b60006110f8826103e81190565b6111145760405162461bcd60e51b8152600401610c9d90613d39565b61111d82612702565b6111395760405162461bcd60e51b8152600401610c9d90613d60565b6001610def565b61114b816103e81190565b6111675760405162461bcd60e51b8152600401610c9d90613d39565b61117133826129be565b8061119557506006546001600160a01b031633148015611195575061119581612702565b6111b15760405162461bcd60e51b8152600401610c9d90613d8a565b6111bd60095434612bf4565b6111d95760405162461bcd60e51b8152600401610c9d90613e58565b6111e281610d9e565b15611233576001600f826103e881106111fd576111fd613d23565b6007020160020160006101000a81548160ff02191690836001811115611225576112256138d0565b0217905550610fb181612c15565b6000600f826103e8811061124957611249613d23565b6007020160020160006101000a81548160ff02191690836001811115611271576112716138d0565b0217905550610fb181612b75565b6112876128a6565b600c55565b611294613650565b61129c613650565b60005b6103e8811015610d98576112b281611fc2565b82826103e881106112c5576112c5613d23565b911515602090920201526112da81600161289a565b905061129f565b6112e96128a6565b600e610eb78282613ed3565b6000818152600260205260408120546001600160a01b031680610b5d5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610c9d565b611360826103e81190565b61137c5760405162461bcd60e51b8152600401610c9d90613d39565b61138633836129be565b806113aa57506006546001600160a01b0316331480156113aa57506113aa82612702565b6113c65760405162461bcd60e51b8152600401610c9d90613d8a565b6113cf826123a7565b156113ec5760405162461bcd60e51b8152600401610c9d90613e05565b6113f582610d9e565b6114115760405162461bcd60e51b8152600401610c9d90613e2c565b610eb78282612c6f565b611426846103e81190565b6114425760405162461bcd60e51b8152600401610c9d90613d39565b61144c33856129be565b8061147057506006546001600160a01b031633148015611470575061147084612702565b61148c5760405162461bcd60e51b8152600401610c9d90613d8a565b611495846123a7565b156114b25760405162461bcd60e51b8152600401610c9d90613e05565b6114bb846110eb565b6114d75760405162461bcd60e51b8152600401610c9d90613e2c565b600060405180606001604052806114ed86612ccc565b815260200184815260200161150184612ccc565b9052905061150f8582612d5f565b5050505050565b61151e613670565b611529826103e81190565b6115ab576040518060a001604052806040518060400160405280600381526020016203430360ec1b81525081526020016040518060200160405280600081525081526020016040518060200160405280600081525081526020016040518060200160405280600081525081526020016115a3600c54612ccc565b905292915050565b6115b4826123a7565b1561162f576040518060a001604052806040518060400160405280600381526020016203430360ec1b81525081526020016040518060200160405280600081525081526020016040518060200160405280600081525081526020016040518060200160405280600081525081526020016115a3600c54612ccc565b61163882612702565b6116b2576040518060a001604052806040518060400160405280600381526020016203430360ec1b81525081526020016040518060200160405280600081525081526020016040518060200160405280600081525081526020016040518060200160405280600081525081526020016115a3600c54612ccc565b6116bb82611fc2565b15611736576040518060a001604052806040518060400160405280600381526020016203430360ec1b81525081526020016040518060200160405280600081525081526020016040518060200160405280600081525081526020016040518060200160405280600081525081526020016115a3600c54612ccc565b61173f82610d9e565b15611891576040805160e081018252600360a082019081526203230360ec1b60c083015281528151808301835260018152600360fc1b6020828101919091528201529081016117ab6117a6856000908152600260205260409020546001600160a01b031690565b612df4565b8152602001600f846103e881106117c4576117c4613d23565b6007020154610100900460ff166117dc57600e6117f8565b600f846103e881106117f0576117f0613d23565b600702016003015b805461180390613cef565b80601f016020809104026020016040519081016040528092919081815260200182805461182f90613cef565b801561187c5780601f106118515761010080835404028352916020019161187c565b820191906000526020600020905b81548152906001019060200180831161185f57829003601f168201915b505050505081526020016115a3600c54612ccc565b6040518060a00160405280600f846103e881106118b0576118b0613d23565b600702015462010000900460ff166118e3576040518060400160405280600381526020016203430360ec1b815250611900565b6040518060400160405280600381526020016203230360ec1b8152505b8152602001600f846103e8811061191957611919613d23565b60070201600401600201805461192e90613cef565b80601f016020809104026020016040519081016040528092919081815260200182805461195a90613cef565b80156119a75780601f1061197c576101008083540402835291602001916119a7565b820191906000526020600020905b81548152906001019060200180831161198a57829003601f168201915b50505050508152602001600f846103e881106119c5576119c5613d23565b6007020160040160000180546119da90613cef565b80601f0160208091040260200160405190810160405280929190818152602001828054611a0690613cef565b8015611a535780601f10611a2857610100808354040283529160200191611a53565b820191906000526020600020905b815481529060010190602001808311611a3657829003601f168201915b50505050508152602001600f846103e88110611a7157611a71613d23565b60070201600401600101805461180390613cef565b919050565b60006001600160a01b038216611af55760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610c9d565b506001600160a01b031660009081526003602052604090205490565b611b196128a6565b611b236000612e0a565b565b611b2d613650565b611b35613650565b60005b6103e8811015611b7b57611b4c84826129be565b82826103e88110611b5f57611b5f613d23565b91151560209092020152611b7481600161289a565b9050611b38565b5092915050565b611b8a6128a6565b611b95826103e81190565b611bb15760405162461bcd60e51b8152600401610c9d90613d39565b80600f836103e88110611bc657611bc6613d23565b60070201805460ff19169115159190911790555050565b611be56128a6565b611bf0826103e81190565b611c0c5760405162461bcd60e51b8152600401610c9d90613d39565b80600f836103e88110611c2157611c21613d23565b60070201600101819055505050565b611c38613697565b611c43826103e81190565b611c5f5760405162461bcd60e51b8152600401610c9d90613d39565b611c6882612702565b611c845760405162461bcd60e51b8152600401610c9d90613d60565b600f826103e88110611c9857611c98613d23565b6040805160e08101825260079290920292909201805460ff808216151584526101008204811615156020850152620100009091048116151593830193909352600180820154606084015260028201549293919260808501921690811115611d0157611d016138d0565b6001811115611d1257611d126138d0565b8152602001600382018054611d2690613cef565b80601f0160208091040260200160405190810160405280929190818152602001828054611d5290613cef565b8015611d9f5780601f10611d7457610100808354040283529160200191611d9f565b820191906000526020600020905b815481529060010190602001808311611d8257829003601f168201915b5050505050815260200160048201604051806060016040529081600082018054611dc890613cef565b80601f0160208091040260200160405190810160405280929190818152602001828054611df490613cef565b8015611e415780601f10611e1657610100808354040283529160200191611e41565b820191906000526020600020905b815481529060010190602001808311611e2457829003601f168201915b50505050508152602001600182018054611e5a90613cef565b80601f0160208091040260200160405190810160405280929190818152602001828054611e8690613cef565b8015611ed35780601f10611ea857610100808354040283529160200191611ed3565b820191906000526020600020905b815481529060010190602001808311611eb657829003601f168201915b50505050508152602001600282018054611eec90613cef565b80601f0160208091040260200160405190810160405280929190818152602001828054611f1890613cef565b8015611f655780601f10611f3a57610100808354040283529160200191611f65565b820191906000526020600020905b815481529060010190602001808311611f4857829003601f168201915b5050509190925250505090525092915050565b6000611f85826103e81190565b611fa15760405162461bcd60e51b8152600401610c9d90613d39565b611faa82612702565b158015610b5d5750611fbb826123a7565b1592915050565b6000611fcf826103e81190565b611feb5760405162461bcd60e51b8152600401610c9d90613d39565b611ff482612702565b8015610b5d5750600f826103e8811061200f5761200f613d23565b6007020160010154421192915050565b606060018054610b7f90613cef565b600e805461203b90613cef565b80601f016020809104026020016040519081016040528092919081815260200182805461206790613cef565b80156120b45780601f10612089576101008083540402835291602001916120b4565b820191906000526020600020905b81548152906001019060200180831161209757829003601f168201915b505050505081565b600d805461203b90613cef565b6120d4816103e81190565b6120f05760405162461bcd60e51b8152600401610c9d90613d39565b6120f981611f78565b6121455760405162461bcd60e51b815260206004820152601a60248201527f4e6f7420617661696c61626c6520666f72206d696e74696e67210000000000006044820152606401610c9d565b61215160075434612bf4565b61216d5760405162461bcd60e51b8152600401610c9d90613e58565b61217681612e5c565b156121845761218481612e79565b61218e3382612f1c565b600f816103e881106121a2576121a2613d23565b60070201805462ffffff1916815560006001820181905560028201805460ff191690556121d260038301826136f5565b6004820160006121e282826136f5565b6121f06001830160006136f5565b6121fe6002830160006136f5565b5050600a54612210925042915061289a565b600f826103e8811061222457612224613d23565b600702016001018190555050565b61223a6128a6565b600d610eb78282613ed3565b610eb7338383612f36565b61225c816103e81190565b6122785760405162461bcd60e51b8152600401610c9d90613d39565b61228233826129be565b806122a657506006546001600160a01b0316331480156122a657506122a681612702565b6122c25760405162461bcd60e51b8152600401610c9d90613d8a565b6122cb816123a7565b156122e85760405162461bcd60e51b8152600401610c9d90613e05565b6122f181610d9e565b61230d5760405162461bcd60e51b8152600401610c9d90613e2c565b610fb181612c15565b61231e613650565b612326613650565b60005b6103e8811015610d985761233c81611f78565b15801561237857506001600f826103e8811061235a5761235a613d23565b600702016002015460ff166001811115612376576123766138d0565b145b82826103e8811061238b5761238b613d23565b911515602090920201526123a081600161289a565b9050612329565b60006123b4826103e81190565b6123d05760405162461bcd60e51b8152600401610c9d90613d39565b600f826103e881106123e4576123e4613d23565b600702015460ff1692915050565b6123fc33836129be565b6124185760405162461bcd60e51b8152600401610c9d90613db8565b61242484848484613004565b50505050565b606061243582612900565b600061243f613037565b9050600081511161245f576040518060200160405280600081525061248a565b8061246984612ccc565b60405160200161247a929190613f93565b6040516020818303038152906040525b9392505050565b6124996128a6565b600a55565b6124a9816103e81190565b6124c55760405162461bcd60e51b8152600401610c9d90613d39565b6124cf33826129be565b806124f357506006546001600160a01b0316331480156124f357506124f381612702565b61250f5760405162461bcd60e51b8152600401610c9d90613d8a565b61251b60085434612bf4565b6125375760405162461bcd60e51b8152600401610c9d90613e58565b612210600a54600f836103e8811061255157612551613d23565b600702016001015461289a90919063ffffffff16565b61256f6128a6565b600955565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6125ad816103e81190565b6125c95760405162461bcd60e51b8152600401610c9d90613d39565b6125d333826129be565b806125f757506006546001600160a01b0316331480156125f757506125f781612702565b6126135760405162461bcd60e51b8152600401610c9d90613d8a565b61261c81612e79565b600f816103e8811061263057612630613d23565b60070201805462ffffff1916815560006001820181905560028201805460ff1916905561266060038301826136f5565b60048201600061267082826136f5565b61267e6001830160006136f5565b61150f6002830160006136f5565b6126946128a6565b6001600160a01b0381166126f95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c9d565b610fb181612e0a565b600061270f826103e81190565b61272b5760405162461bcd60e51b8152600401610c9d90613d39565b61273482612e5c565b8015610b5d5750612755600b54600f846103e8811061255157612551613d23565b421092915050565b6127656128a6565b600755565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a08101919091526127a7826103e81190565b6127c35760405162461bcd60e51b8152600401610c9d90613d39565b6127cc82612702565b1561284e576040518060c001604052806127e5846123a7565b15158152600160208201526040016127fc84611fc2565b1515815260200161280c84611f78565b15158152602001600f846103e8811061282757612827613d23565b600702016001015481526020016115a3600b54600f866103e8811061255157612551613d23565b6040518060c00160405280612862846123a7565b15158152600060208201819052604082015260600161288084611f78565b151581526020016000815260200160008152509050919050565b600061248a8284613fd8565b6006546001600160a01b03163314611b235760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c9d565b61290981612e5c565b610fb15760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610c9d565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190612985826112f5565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006129c982612e5c565b80156129da57506129da8383613046565b801561248a57506129fb600b54600f846103e8811061255157612551613d23565b42109392505050565b826001600160a01b0316612a17826112f5565b6001600160a01b031614612a3d5760405162461bcd60e51b8152600401610c9d90613feb565b6001600160a01b038216612a9f5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610c9d565b612aac83838360016130a5565b826001600160a01b0316612abf826112f5565b6001600160a01b031614612ae55760405162461bcd60e51b8152600401610c9d90613feb565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600f816103e88110612b8957612b89613d23565b6007020160040160008082016000612ba191906136f5565b612baf6001830160006136f5565b612bbd6002830160006136f5565b50506000600f826103e88110612bd557612bd5613d23565b600702018054911515620100000262ff00001990921691909117905550565b6000828210158061248a5750506006546001600160a01b0316331492915050565b600f816103e88110612c2957612c29613d23565b600702016003016000612c3c91906136f5565b6000600f826103e88110612c5257612c52613d23565b6007020180549115156101000261ff001990921691909117905550565b80600f836103e88110612c8457612c84613d23565b600702016003019081612c979190613ed3565b506001600f836103e88110612cae57612cae613d23565b6007020180549115156101000261ff00199092169190911790555050565b60606000612cd98361312d565b600101905060008167ffffffffffffffff811115612cf957612cf9613916565b6040519080825280601f01601f191660200182016040528015612d23576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084612d2d57509392505050565b80600f836103e88110612d7457612d74613d23565b600702016004016000820151816000019081612d909190613ed3565b5060208201516001820190612da59082613ed3565b5060408201516002820190612dba9082613ed3565b509050506001600f836103e88110612dd457612dd4613d23565b600702018054911515620100000262ff0000199092169190911790555050565b6060610b5d6001600160a01b0383166014613205565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000908152600260205260409020546001600160a01b0316151590565b6000612e84826112f5565b9050612e948160008460016130a5565b612e9d826112f5565b600083815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526003845282852080546000190190558785526002909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b610eb78282604051806020016040528060008152506133a1565b816001600160a01b0316836001600160a01b031603612f975760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610c9d565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61300f848484612a04565b61301b848484846133d4565b6124245760405162461bcd60e51b8152600401610c9d90614030565b6060600d8054610b7f90613cef565b600080613052836112f5565b9050806001600160a01b0316846001600160a01b0316148061307957506130798185612574565b8061309d5750836001600160a01b031661309284610c02565b6001600160a01b0316145b949350505050565b6001811115612424576001600160a01b038416156130eb576001600160a01b038416600090815260036020526040812080548392906130e5908490614082565b90915550505b6001600160a01b03831615612424576001600160a01b03831660009081526003602052604081208054839290613122908490613fd8565b909155505050505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b831061316c5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310613198576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106131b657662386f26fc10000830492506010015b6305f5e10083106131ce576305f5e100830492506008015b61271083106131e257612710830492506004015b606483106131f4576064830492506002015b600a8310610b5d5760010192915050565b60606000613214836002614095565b61321f906002613fd8565b67ffffffffffffffff81111561323757613237613916565b6040519080825280601f01601f191660200182016040528015613261576020820181803683370190505b509050600360fc1b8160008151811061327c5761327c613d23565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106132ab576132ab613d23565b60200101906001600160f81b031916908160001a90535060006132cf846002614095565b6132da906001613fd8565b90505b6001811115613352576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061330e5761330e613d23565b1a60f81b82828151811061332457613324613d23565b60200101906001600160f81b031916908160001a90535060049490941c9361334b816140ac565b90506132dd565b50831561248a5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610c9d565b6133ab83836134d5565b6133b860008484846133d4565b610d3e5760405162461bcd60e51b8152600401610c9d90614030565b60006001600160a01b0384163b156134ca57604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906134189033908990889088906004016140c3565b6020604051808303816000875af1925050508015613453575060408051601f3d908101601f1916820190925261345091810190614100565b60015b6134b0573d808015613481576040519150601f19603f3d011682016040523d82523d6000602084013e613486565b606091505b5080516000036134a85760405162461bcd60e51b8152600401610c9d90614030565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061309d565b506001949350505050565b6001600160a01b03821661352b5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610c9d565b61353481612e5c565b156135815760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610c9d565b61358f6000838360016130a5565b61359881612e5c565b156135e55760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610c9d565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60405180617d0001604052806103e8906020820280368337509192915050565b6040518060a001604052806005905b606081526020019060019003908161367f5790505090565b6040805160e081018252600080825260208201819052918101829052606081018290529060808201908152602001606081526020016136f060405180606001604052806060815260200160608152602001606081525090565b905290565b50805461370190613cef565b6000825580601f10613711575050565b601f016020900490600052602060002090810190610fb191905b8082111561373f576000815560010161372b565b5090565b6001600160e01b031981168114610fb157600080fd5b60006020828403121561376b57600080fd5b813561248a81613743565b60006020828403121561378857600080fd5b5035919050565b60005b838110156137aa578181015183820152602001613792565b50506000910152565b600081518084526137cb81602086016020860161378f565b601f01601f19169290920160200192915050565b60208152600061248a60208301846137b3565b80356001600160a01b0381168114611a8657600080fd5b6000806040838503121561381c57600080fd5b613825836137f2565b946020939093013593505050565b617d008101818360005b6103e881101561385f578151151583526020928301929091019060010161383d565b50505092915050565b6000806040838503121561387b57600080fd5b8235915061388b602084016137f2565b90509250929050565b6000806000606084860312156138a957600080fd5b6138b2846137f2565b92506138c0602085016137f2565b9150604084013590509250925092565b634e487b7160e01b600052602160045260246000fd5b6002811061390457634e487b7160e01b600052602160045260246000fd5b9052565b60208101610b5d82846138e6565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff8084111561394757613947613916565b604051601f8501601f19908116603f0116810190828211818310171561396f5761396f613916565b8160405280935085815286868601111561398857600080fd5b858560208301376000602087830101525050509392505050565b600082601f8301126139b357600080fd5b61248a8383356020850161392c565b6000602082840312156139d457600080fd5b813567ffffffffffffffff8111156139eb57600080fd5b61309d848285016139a2565b60008060408385031215613a0a57600080fd5b82359150602083013567ffffffffffffffff811115613a2857600080fd5b613a34858286016139a2565b9150509250929050565b60008060008060808587031215613a5457600080fd5b8435935060208501359250604085013567ffffffffffffffff811115613a7957600080fd5b613a85878288016139a2565b949793965093946060013593505050565b602080825260009060c0830183820185845b6005811015613ad757601f19878503018352613ac58483516137b3565b93509184019190840190600101613aa8565b50919695505050505050565b600060208284031215613af557600080fd5b61248a826137f2565b80358015158114611a8657600080fd5b60008060408385031215613b2157600080fd5b8235915061388b60208401613afe565b60008060408385031215613b4457600080fd5b50508035926020909101359150565b6000815160608452613b6860608501826137b3565b905060208301518482036020860152613b8182826137b3565b91505060408301518482036040860152613b9b82826137b3565b95945050505050565b602081528151151560208201526020820151151560408201526040820151151560608201526060820151608082015260006080830151613be760a08401826138e6565b5060a083015160e060c0840152613c026101008401826137b3565b905060c0840151601f198483030160e0850152613b9b8282613b53565b60008060408385031215613c3257600080fd5b613c3b836137f2565b915061388b60208401613afe565b60008060008060808587031215613c5f57600080fd5b613c68856137f2565b9350613c76602086016137f2565b925060408501359150606085013567ffffffffffffffff811115613c9957600080fd5b8501601f81018713613caa57600080fd5b613cb98782356020840161392c565b91505092959194509250565b60008060408385031215613cd857600080fd5b613ce1836137f2565b915061388b602084016137f2565b600181811c90821680613d0357607f821691505b602082108103610d9857634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6020808252600d908201526c496e76616c696420636f64652160981b604082015260600190565b60208082526010908201526f436f6465206e6f7420696e207573652160801b604082015260600190565b602080825260149082015273496e73756666696369656e74207269676874732160601b604082015260600190565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b6020808252600d908201526c436f646520626c6f636b65642160981b604082015260600190565b602080825260129082015271496e76616c696420636f6465206d6f64652160701b604082015260600190565b602080825260139082015272496e73756666696369656e742066756e64732160681b604082015260600190565b601f821115610d3e57600081815260208120601f850160051c81016020861015613eac5750805b601f850160051c820191505b81811015613ecb57828155600101613eb8565b505050505050565b815167ffffffffffffffff811115613eed57613eed613916565b613f0181613efb8454613cef565b84613e85565b602080601f831160018114613f365760008415613f1e5750858301515b600019600386901b1c1916600185901b178555613ecb565b600085815260208120601f198616915b82811015613f6557888601518255948401946001909101908401613f46565b5085821015613f835787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008351613fa581846020880161378f565b835190830190613fb981836020880161378f565b01949350505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610b5d57610b5d613fc2565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b81810381811115610b5d57610b5d613fc2565b8082028115828204841417610b5d57610b5d613fc2565b6000816140bb576140bb613fc2565b506000190190565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906140f6908301846137b3565b9695505050505050565b60006020828403121561411257600080fd5b815161248a8161374356fea26469706673582212204c20df3d37de7c9302d32d43fc3ed7b13627e08d50195862217ebb400d2ef50464736f6c63430008110033