[ { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "impl", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "alive", "type": "bool" } ], "name": "SetAliveImplementation", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes4", "name": "selector", "type": "bytes4" }, { "indexed": true, "internalType": "address", "name": "impl", "type": "address" } ], "name": "SetSelectorImplementation", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "implementation", "type": "address" } ], "name": "Upgraded", "type": "event" }, { "stateMutability": "payable", "type": "fallback" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MINTER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "OPERATOR_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "REFACTOR_BOUNDARY", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "REFACTOR_DIVIDER", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "_allowances", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "accountBalanceIds", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "accountBalanceSnapshots", "outputs": [ { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "refactoredCount", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "addAdmin", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "addMinter", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "addOperator", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "aliveImplementation", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "factorSnapshotIds", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "factorSnapshots", "outputs": [ { "internalType": "uint256", "name": "factor", "type": "uint256" }, { "internalType": "uint256", "name": "refactorCount", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "_selector", "type": "bytes4" } ], "name": "getSelectorImplementation2", "outputs": [ { "internalType": "address", "name": "impl", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "implementation", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_index", "type": "uint256" } ], "name": "implementation2", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "isAdmin", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "isMinter", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "isOperator", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "isOwner", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "lastSnapshotId", "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": "pauseProxy", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "proxyImplementation", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "removeAdmin", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "removeMinter", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "removeOperator", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceMinter", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOperator", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeMinter", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeOperator", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "seigManager", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "", "type": "bytes4" } ], "name": "selectorImplementation", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newImplementation", "type": "address" }, { "internalType": "bool", "name": "_alive", "type": "bool" } ], "name": "setAliveImplementation2", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newImplementation", "type": "address" }, { "internalType": "uint256", "name": "_index", "type": "uint256" }, { "internalType": "bool", "name": "_alive", "type": "bool" } ], "name": "setImplementation2", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_pause", "type": "bool" } ], "name": "setProxyPause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4[]", "name": "_selectors", "type": "bytes4[]" }, { "internalType": "address", "name": "_imp", "type": "address" } ], "name": "setSelectorImplementations2", "outputs": [], "stateMutability": "nonpayable", "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": "", "type": "uint256" } ], "name": "totalSupplySnapshotIds", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "totalSupplySnapshots", "outputs": [ { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "refactoredCount", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newAdmin", "type": "address" } ], "name": "transferAdmin", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newAdmin", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "impl", "type": "address" } ], "name": "upgradeTo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60806040523480156200001157600080fd5b506200001f6000336200007f565b6200004c7ff0887ba65ee2024ea881d91b74c2450ef19e1557f03bed3ea9f16b037cbe2dc960006200008f565b620000797f523a704056dcd17bcf83bed8b68c59416dac1119be77755efe3bde0a64e46e0c60006200008f565b6200017e565b6200008b8282620000da565b5050565b600082815260056020526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b60008281526005602090815260408083206001600160a01b038516845290915290205460ff166200008b5760008281526005602090815260408083206001600160a01b03851684529091529020805460ff191660011790556200013a3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b612042806200018e6000396000f3fe6080604052600436106103375760003560e01c806370480275116101b05780639870d7fe116100ec578063b911135f11610095578063d547741f1161006f578063d547741f14610aa2578063f2fde38b14610ac2578063f5b541a614610ae2578063fad8b32a14610b1657610389565b8063b911135f14610a18578063cfbd488514610a4e578063d539139314610a6e57610389565b8063ac8a584a116100c6578063ac8a584a146109a4578063b7c246d7146109c4578063b7d78b1a146109e457610389565b80639870d7fe1461094f578063a217fddf1461096f578063aa271e1a1461098457610389565b80638b8f4a651161015957806391d148541161013357806391d14854146108bf57806395d89b4114610905578063983b2d561461091a578063986502751461093a57610389565b80638b8f4a651461083b5780638d4fdb401461085b5780638f32d59b1461087b57610389565b80637cb00d251161018a5780637cb00d25146107e55780637cd5f66314610805578063837afbc01461082557610389565b80637048027514610790578063715018a6146107b057806375829def146107c557610389565b80633659cfe61161027f5780635cc797d81161022857806363a8fd891161020257806363a8fd891461071657806369f499b1146107305780636d70f7ae146107505780636fb7f5581461077057610389565b80635cc797d8146106a25780635deaecec146106c2578063614db8b2146106f657610389565b8063550d01a311610259578063550d01a31461060c57806356fabf681461063c5780635c60da1b1461065c57610389565b80633659cfe61461057e5780634a5df50f1461059e57806350d2a276146105be57610389565b8063248a9ca3116102e15780632f2ff15d116102bb5780632f2ff15d1461051e5780633092afd51461053e57806336568abe1461055e57610389565b8063248a9ca3146104b957806324d7806c146104e95780632ab6f8db1461050957610389565b80630461fdc5116103125780630461fdc51461042357806306fdde03146104775780631785f53c1461049957610389565b8062d87a9c1461039357806301ffc9a7146103bb578063024c2ddd146103eb57610389565b366103895760405162461bcd60e51b815260206004820152601460248201527f63616e6e6f74207265636569766520457468657200000000000000000000000060448201526064015b60405180910390fd5b610391610b36565b005b34801561039f57600080fd5b506103a8600281565b6040519081526020015b60405180910390f35b3480156103c757600080fd5b506103db6103d6366004611c3e565b610bdf565b60405190151581526020016103b2565b3480156103f757600080fd5b506103a8610406366004611c84565b600960209081526000928352604080842090915290825290205481565b34801561042f57600080fd5b5061046261043e366004611cb7565b600f6020908152600092835260408084209091529082529020805460019091015482565b604080519283526020830191909152016103b2565b34801561048357600080fd5b5061048c610bf0565b6040516103b29190611d05565b3480156104a557600080fd5b506103916104b4366004611d38565b610c7e565b3480156104c557600080fd5b506103a86104d4366004611d53565b60009081526005602052604090206001015490565b3480156104f557600080fd5b506103db610504366004611d38565b610cb1565b34801561051557600080fd5b50610391610cf1565b34801561052a57600080fd5b50610391610539366004611d6c565b610d1d565b34801561054a57600080fd5b50610391610559366004611d38565b610d42565b34801561056a57600080fd5b50610391610579366004611d6c565b610d8d565b34801561058a57600080fd5b50610391610599366004611d38565b610e19565b3480156105aa57600080fd5b506103916105b9366004611d8f565b610f49565b3480156105ca57600080fd5b506105f46105d9366004611c3e565b6003602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016103b2565b34801561061857600080fd5b506103db610627366004611d38565b60026020526000908152604090205460ff1681565b34801561064857600080fd5b506103a8610657366004611d53565b6111cd565b34801561066857600080fd5b506000805260016020527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49546001600160a01b03166105f4565b3480156106ae57600080fd5b506103916106bd366004611e23565b6111ee565b3480156106ce57600080fd5b506104626106dd366004611d53565b600d602052600090815260409020805460019091015482565b34801561070257600080fd5b506103a8610711366004611d53565b61121d565b34801561072257600080fd5b506000546103db9060ff1681565b34801561073c57600080fd5b506103a861074b366004611cb7565b61122d565b34801561075c57600080fd5b506103db61076b366004611d38565b61125e565b34801561077c57600080fd5b506006546105f4906001600160a01b031681565b34801561079c57600080fd5b506103916107ab366004611d38565b61129e565b3480156107bc57600080fd5b506103916112ce565b3480156107d157600080fd5b506103916107e0366004611d38565b6112fe565b3480156107f157600080fd5b50610391610800366004611e4d565b6113e7565b34801561081157600080fd5b50610391610820366004611e68565b61141f565b34801561083157600080fd5b506103a860105481565b34801561084757600080fd5b506105f4610856366004611d53565b61144f565b34801561086757600080fd5b506105f4610876366004611c3e565b61146c565b34801561088757600080fd5b503360009081527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc602052604090205460ff166103db565b3480156108cb57600080fd5b506103db6108da366004611d6c565b60009182526005602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561091157600080fd5b5061048c61152f565b34801561092657600080fd5b50610391610935366004611d38565b61153c565b34801561094657600080fd5b5061039161158b565b34801561095b57600080fd5b5061039161096a366004611d38565b6115b5565b34801561097b57600080fd5b506103a8600081565b34801561099057600080fd5b506103db61099f366004611d38565b611604565b3480156109b057600080fd5b506103916109bf366004611d38565b611644565b3480156109d057600080fd5b506103a86b204fce5e3e2502611000000081565b3480156109f057600080fd5b506104626109ff366004611d53565b600b602052600090815260409020805460019091015482565b348015610a2457600080fd5b506105f4610a33366004611d53565b6001602052600090815260409020546001600160a01b031681565b348015610a5a57600080fd5b50610391610a69366004611d38565b611693565b348015610a7a57600080fd5b506103a87ff0887ba65ee2024ea881d91b74c2450ef19e1557f03bed3ea9f16b037cbe2dc981565b348015610aae57600080fd5b50610391610abd366004611d6c565b6116de565b348015610ace57600080fd5b50610391610add366004611d38565b611703565b348015610aee57600080fd5b506103a87f523a704056dcd17bcf83bed8b68c59416dac1119be77755efe3bde0a64e46e0c81565b348015610b2257600080fd5b50610391610b31366004611d38565b611731565b6000610b4d6000356001600160e01b03191661146c565b90506001600160a01b03811615801590610b6a575060005460ff16155b610bb65760405162461bcd60e51b815260206004820152601d60248201527f50726f78793a20696d706c204f522070726f78792069732066616c73650000006044820152606401610380565b3660008037600080366000845af43d6000803e808015610bd5573d6000f35b3d6000fd5b505050565b6000610bea82611780565b92915050565b60078054610bfd90611e9b565b80601f0160208091040260200160405190810160405280929190818152602001828054610c2990611e9b565b8015610c765780601f10610c4b57610100808354040283529160200191610c76565b820191906000526020600020905b815481529060010190602001808311610c5957829003601f168201915b505050505081565b610c8733610cb1565b610ca35760405162461bcd60e51b815260040161038090611ed5565b610cae600082610d8d565b50565b6001600160a01b03811660009081527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc602052604081205460ff16610bea565b610d1b7f523a704056dcd17bcf83bed8b68c59416dac1119be77755efe3bde0a64e46e0c33610d8d565b565b600082815260056020526040902060010154610d38816117a5565b610bda83836117af565b610d4b33610cb1565b610d675760405162461bcd60e51b815260040161038090611ed5565b610cae7ff0887ba65ee2024ea881d91b74c2450ef19e1557f03bed3ea9f16b037cbe2dc9825b6001600160a01b0381163314610e0b5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c6600000000000000000000000000000000006064820152608401610380565b610e158282611851565b5050565b610e2233610cb1565b610e3e5760405162461bcd60e51b815260040161038090611ed5565b6001600160a01b038116610e945760405162461bcd60e51b815260206004820152600d60248201527f696e707574206973207a65726f000000000000000000000000000000000000006044820152606401610380565b6000805260016020527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49546001600160a01b03828116911603610f055760405162461bcd60e51b815260206004820152600960248201526839b0b6b29030b2323960b91b6044820152606401610380565b610f1281600060016118d4565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b610f5233610cb1565b610f6e5760405162461bcd60e51b815260040161038090611ed5565b81610fbb5760405162461bcd60e51b815260206004820181905260248201527f50726f78793a205f73656c6563746f727327732073697a65206973207a65726f6044820152606401610380565b6001600160a01b03811660009081526002602052604090205460ff166110235760405162461bcd60e51b815260206004820152601860248201527f50726f78793a205f696d70206973206e6f7420616c69766500000000000000006044820152606401610380565b60005b828110156111c757816001600160a01b03166003600086868581811061104e5761104e611f18565b90506020020160208101906110639190611c3e565b6001600160e01b03191681526020810191909152604001600020546001600160a01b0316036110d45760405162461bcd60e51b815260206004820152601d60248201527f4c69717569646974795661756c7450726f78793a2073616d6520696d700000006044820152606401610380565b81600360008686858181106110eb576110eb611f18565b90506020020160208101906111009190611c3e565b6001600160e01b03191681526020810191909152604001600020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03928316179055821684848381811061115557611155611f18565b905060200201602081019061116a9190611c3e565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f14ebc1c32aa68f4d766e89f3e546cee249f7df25183fc10ab1568d91c2ce9b7b60405160405180910390a3806111bf81611f44565b915050611026565b50505050565b600c81815481106111dd57600080fd5b600091825260209091200154905081565b6111f733610cb1565b6112135760405162461bcd60e51b815260040161038090611ed5565b610e15828261196c565b600a81815481106111dd57600080fd5b600e602052816000526040600020818154811061124957600080fd5b90600052602060002001600091509150505481565b6001600160a01b03811660009081527f02634a7c777b8129955fe1824eee49ef19dfa96f2f4cb63212492c3d84eb58e6602052604081205460ff16610bea565b6112a733610cb1565b6112c35760405162461bcd60e51b815260040161038090611ed5565b610cae600082610d1d565b6112d733610cb1565b6112f35760405162461bcd60e51b815260040161038090611ed5565b610d1b600033610d8d565b61130733610cb1565b6113235760405162461bcd60e51b815260040161038090611ed5565b6001600160a01b0381166113795760405162461bcd60e51b815260206004820152601860248201527f41636365737369626c653a207a65726f206164647265737300000000000000006044820152606401610380565b6001600160a01b03811633036113d15760405162461bcd60e51b815260206004820152601660248201527f41636365737369626c653a2073616d652061646d696e000000000000000000006044820152606401610380565b6113dc600082610d1d565b610cae600033610d8d565b6113f033610cb1565b61140c5760405162461bcd60e51b815260040161038090611ed5565b6000805460ff1916911515919091179055565b61142833610cb1565b6114445760405162461bcd60e51b815260040161038090611ed5565b610bda8383836118d4565b6000818152600160205260408120546001600160a01b0316610bea565b6001600160e01b031981166000908152600360205260408120546001600160a01b0316806114ce575050600080525060016020527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49546001600160a01b031690565b6001600160a01b03811660009081526002602052604090205460ff16156114f55792915050565b5050600080525060016020527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49546001600160a01b031690565b60088054610bfd90611e9b565b61154533610cb1565b6115615760405162461bcd60e51b815260040161038090611ed5565b610cae7ff0887ba65ee2024ea881d91b74c2450ef19e1557f03bed3ea9f16b037cbe2dc982610d1d565b610d1b7ff0887ba65ee2024ea881d91b74c2450ef19e1557f03bed3ea9f16b037cbe2dc933610d8d565b6115be33610cb1565b6115da5760405162461bcd60e51b815260040161038090611ed5565b610cae7f523a704056dcd17bcf83bed8b68c59416dac1119be77755efe3bde0a64e46e0c82610d1d565b6001600160a01b03811660009081527fca0a2f641ec05ca23127d994cf03ffc453db616acae0b86cb56bb95304d06854602052604081205460ff16610bea565b61164d33610cb1565b6116695760405162461bcd60e51b815260040161038090611ed5565b610cae7f523a704056dcd17bcf83bed8b68c59416dac1119be77755efe3bde0a64e46e0c82610d8d565b61169c33610cb1565b6116b85760405162461bcd60e51b815260040161038090611ed5565b610cae7ff0887ba65ee2024ea881d91b74c2450ef19e1557f03bed3ea9f16b037cbe2dc9825b6000828152600560205260409020600101546116f9816117a5565b610bda8383611851565b61170c33610cb1565b6117285760405162461bcd60e51b815260040161038090611ed5565b610cae816112fe565b61173a33610cb1565b6117565760405162461bcd60e51b815260040161038090611ed5565b610cae7f523a704056dcd17bcf83bed8b68c59416dac1119be77755efe3bde0a64e46e0c826116de565b60006001600160e01b03198216637965db0b60e01b1480610bea5750610bea826119cb565b610cae8133611a07565b60008281526005602090815260408083206001600160a01b038516845290915290205460ff16610e155760008281526005602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561180d3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008281526005602090815260408083206001600160a01b038516845290915290205460ff1615610e155760008281526005602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6001600160a01b0383163b61192b5760405162461bcd60e51b815260206004820152601b60248201527f50726f78793a206e6f7420636f6e7472616374206164647265737300000000006044820152606401610380565b8015611966576000828152600160205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0385161790555b610bda83825b6001600160a01b038216600081815260026020908152604091829020805460ff191685151590811790915591519182527f72558d9bfba4210f9ef095c782589484151f6d90f7a81bb3cb9b33efc695d324910160405180910390a25050565b60006301ffc9a760e01b6001600160e01b031983161480610bea5750506001600160e01b03191660009081526004602052604090205460ff1690565b60008281526005602090815260408083206001600160a01b038516845290915290205460ff16610e1557611a3a81611a7c565b611a45836020611a8e565b604051602001611a56929190611f5d565b60408051601f198184030181529082905262461bcd60e51b825261038091600401611d05565b6060610bea6001600160a01b03831660145b60606000611a9d836002611fde565b611aa8906002611ff5565b67ffffffffffffffff811115611ac057611ac0612008565b6040519080825280601f01601f191660200182016040528015611aea576020820181803683370190505b509050600360fc1b81600081518110611b0557611b05611f18565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611b3457611b34611f18565b60200101906001600160f81b031916908160001a9053506000611b58846002611fde565b611b63906001611ff5565b90505b6001811115611be8577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110611ba457611ba4611f18565b1a60f81b828281518110611bba57611bba611f18565b60200101906001600160f81b031916908160001a90535060049490941c93611be18161201e565b9050611b66565b508315611c375760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610380565b9392505050565b600060208284031215611c5057600080fd5b81356001600160e01b031981168114611c3757600080fd5b80356001600160a01b0381168114611c7f57600080fd5b919050565b60008060408385031215611c9757600080fd5b611ca083611c68565b9150611cae60208401611c68565b90509250929050565b60008060408385031215611cca57600080fd5b611cd383611c68565b946020939093013593505050565b60005b83811015611cfc578181015183820152602001611ce4565b50506000910152565b6020815260008251806020840152611d24816040850160208701611ce1565b601f01601f19169190910160400192915050565b600060208284031215611d4a57600080fd5b611c3782611c68565b600060208284031215611d6557600080fd5b5035919050565b60008060408385031215611d7f57600080fd5b82359150611cae60208401611c68565b600080600060408486031215611da457600080fd5b833567ffffffffffffffff80821115611dbc57600080fd5b818601915086601f830112611dd057600080fd5b813581811115611ddf57600080fd5b8760208260051b8501011115611df457600080fd5b602092830195509350611e0a9186019050611c68565b90509250925092565b80358015158114611c7f57600080fd5b60008060408385031215611e3657600080fd5b611e3f83611c68565b9150611cae60208401611e13565b600060208284031215611e5f57600080fd5b611c3782611e13565b600080600060608486031215611e7d57600080fd5b611e8684611c68565b925060208401359150611e0a60408501611e13565b600181811c90821680611eaf57607f821691505b602082108103611ecf57634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526023908201527f41757468436f6e74726f6c3a2043616c6c6572206973206e6f7420616e20616460408201526236b4b760e91b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611f5657611f56611f2e565b5060010190565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351611f95816017850160208801611ce1565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351611fd2816028840160208801611ce1565b01602801949350505050565b8082028115828204841417610bea57610bea611f2e565b80820180821115610bea57610bea611f2e565b634e487b7160e01b600052604160045260246000fd5b60008161202d5761202d611f2e565b50600019019056fea164736f6c6343000813000a