UNPKG

@animoca/ethereum-contracts-sale

Version:
602 lines 61.7 kB
{
  "_format": "hh-sol-artifact-1",
  "contractName": "UniswapOracleSale",
  "sourceName": "contracts/sale/UniswapOracleSale.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address payable",
          "name": "payoutWallet_",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "skusCapacity",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "tokensPerSkuCapacity",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "referenceToken",
          "type": "address"
        },
        {
          "internalType": "contract IUniswapV2Router",
          "name": "uniswapV2Router",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32[]",
          "name": "names",
          "type": "bytes32[]"
        },
        {
          "indexed": false,
          "internalType": "bytes32[]",
          "name": "values",
          "type": "bytes32[]"
        }
      ],
      "name": "MagicValues",
      "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": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "Paused",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "payoutWallet_",
          "type": "address"
        }
      ],
      "name": "PayoutWalletSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "purchaser",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "sku",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "quantity",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "userData",
          "type": "bytes"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "totalPrice",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "extData",
          "type": "bytes"
        }
      ],
      "name": "Purchase",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "sku",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "totalSupply",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "maxQuantityPerPurchase",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "notificationsReceiver",
          "type": "address"
        }
      ],
      "name": "SkuCreation",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "sku",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address[]",
          "name": "tokens",
          "type": "address[]"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "prices",
          "type": "uint256[]"
        }
      ],
      "name": "SkuPricingUpdate",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "Started",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "contract IUniswapV2Router",
          "name": "uniswapV2Router",
          "type": "address"
        }
      ],
      "name": "UniswapV2RouterSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "Unpaused",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "PRICE_CONVERT_VIA_ORACLE",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "SUPPLY_UNLIMITED",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "TOKEN_ETH",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "tokens",
          "type": "address[]"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "conversionRates",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "rates",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address payable",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "sku",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "quantity",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "userData",
          "type": "bytes"
        }
      ],
      "name": "estimatePurchase",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "totalPrice",
          "type": "uint256"
        },
        {
          "internalType": "bytes32[]",
          "name": "pricingData",
          "type": "bytes32[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "sku",
          "type": "bytes32"
        }
      ],
      "name": "getSkuInfo",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "totalSupply",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "remainingSupply",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "maxQuantityPerPurchase",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "notificationsReceiver",
          "type": "address"
        },
        {
          "internalType": "address[]",
          "name": "tokens",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "prices",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getSkus",
      "outputs": [
        {
          "internalType": "bytes32[]",
          "name": "skus",
          "type": "bytes32[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pause",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "paused",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "payoutWallet",
      "outputs": [
        {
          "internalType": "address payable",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address payable",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "sku",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "quantity",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "userData",
          "type": "bytes"
        }
      ],
      "name": "purchaseFor",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "referenceToken",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address payable",
          "name": "payoutWallet_",
          "type": "address"
        }
      ],
      "name": "setPayoutWallet",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "start",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "startedAt",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "uniswapV2Router",
      "outputs": [
        {
          "internalType": "contract IUniswapV2Router",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "unpause",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "sku",
          "type": "bytes32"
        },
        {
          "internalType": "address[]",
          "name": "tokens",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "prices",
          "type": "uint256[]"
        }
      ],
      "name": "updateSkuPricing",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60c06040523480156200001157600080fd5b506040516200325138038062003251833981810160405260a08110156200003757600080fd5b50805160208201516040808401516060850151608090950151600080546001600160a01b031916339081178255935195969495929493919283928892889288928892869286928692859285928592600192869183918291907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160a01b03811662000111576040805162461bcd60e51b815260206004820152601460248201527f5061796f75743a207a65726f2061646472657373000000000000000000000000604482015290519081900360640190fd5b600180546001600160a01b0383166001600160a01b0319909116811790915560408051918252517fdd880d24a789958a6398c99c2e54ce31bc10a638cbc42f7dd34285479ae0f8559181900360200190a150506003805460ff1916911515919091179055608082905260a081905260408051600280825260608201835260009260208301908036833750506040805160028082526060820183529394506000939092509060208301908036833750508351919250680a89e968a9cbe8aa8960bb1b9173eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee91508490600090620001f657fe5b60200260200101836000815181106200020b57fe5b602002602001018281525082815250505060001960001b6f14d55414131657d5539312535255115160821b90836001815181106200024557fe5b60200260200101836001815181106200025a57fe5b6020026020010182815250828152505050600080516020620032318339815191528282604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015620002c3578181015183820152602001620002a9565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101562000304578181015183820152602001620002ea565b5050505090500194505050505060405180910390a15050600780546001600160a01b0319166001600160a01b0389161790555060009450600193508492506200034b915050565b5060405190808252806020026020018201604052801562000376578160200160208202803683370190505b50604080516001808252818301909252919250600091906020808301908036833701905050905060001960001b7f50524943455f434f4e564552545f5649415f4f5241434c4500000000000000009083600081518110620003d357fe5b6020026020010183600081518110620003e857fe5b6020026020010182815250828152505050600080516020620032318339815191528282604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156200045157818101518382015260200162000437565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156200049257818101518382015260200162000478565b5050505090500194505050505060405180910390a1505050505050620004be81620004ca60201b60201c565b5050505050506200051e565b600880546001600160a01b0383166001600160a01b0319909116811790915560408051918252517ffe70995e26c62b71bbd53a5b9e09215c42e2006fad72ba845051faa8de1510ba9181900360200190a150565b60805160a051612cf46200053d60003980611bb4525050612cf46000f3fe60806040526004361061015f5760003560e01c80638456cb59116100c0578063a963b25711610074578063c7b778db11610059578063c7b778db146106c7578063f21f537d14610796578063f2fde38b146107ab5761015f565b8063a963b2571461061d578063be9a6555146106b25761015f565b80638da5cb5b116100a55780638da5cb5b146105e15780639865bcc8146105f65780639e049545146105f65761015f565b80638456cb59146105b75780638488bb4e146105cc5761015f565b80635c4fafc7116101175780635e6e9f70116100fc5780635e6e9f70146103e457806361bd38511461051f5780636b8f9c43146105845761015f565b80635c4fafc7146103a65780635c975abb146103bb5761015f565b80631694505e116101485780631694505e146102925780632a8a45bc146102a75780633f4ba83a1461038f5761015f565b80631265b651146101645780631323b06614610195575b600080fd5b34801561017057600080fd5b506101796107de565b604080516001600160a01b039092168252519081900360200190f35b3480156101a157600080fd5b50610237600480360360a08110156101b857600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a0810160808201356401000000008111156101f857600080fd5b82018360208201111561020a57600080fd5b8035906020019184600183028401116401000000008311171561022c57600080fd5b5090925090506107ed565b6040518083815260200180602001828103825283818151815260200191508051906020019060200280838360005b8381101561027d578181015183820152602001610265565b50505050905001935050505060405180910390f35b34801561029e57600080fd5b506101796108e2565b3480156102b357600080fd5b506102d1600480360360208110156102ca57600080fd5b50356108f1565b60405180878152602001868152602001858152602001846001600160a01b031681526020018060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561033657818101518382015260200161031e565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561037557818101518382015260200161035d565b505050509050019850505050505050505060405180910390f35b34801561039b57600080fd5b506103a4610a96565b005b3480156103b257600080fd5b50610179610b04565b3480156103c757600080fd5b506103d0610b1c565b604080519115158252519081900360200190f35b3480156103f057600080fd5b506103a46004803603606081101561040757600080fd5b8135919081019060408101602082013564010000000081111561042957600080fd5b82018360208201111561043b57600080fd5b8035906020019184602083028401116401000000008311171561045d57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092959493602081019350359150506401000000008111156104ad57600080fd5b8201836020820111156104bf57600080fd5b803590602001918460208302840111640100000000831117156104e157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610b25945050505050565b34801561052b57600080fd5b50610534610d02565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610570578181015183820152602001610558565b505050509050019250505060405180910390f35b34801561059057600080fd5b506103a4600480360360208110156105a757600080fd5b50356001600160a01b0316610d5d565b3480156105c357600080fd5b506103a4610e35565b3480156105d857600080fd5b50610179610e9c565b3480156105ed57600080fd5b50610179610eab565b34801561060257600080fd5b5061060b610eba565b60408051918252519081900360200190f35b6103a4600480360360a081101561063357600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a08101608082013564010000000081111561067357600080fd5b82018360208201111561068557600080fd5b803590602001918460018302840111640100000000831117156106a757600080fd5b509092509050610ec0565b3480156106be57600080fd5b506103a4610fa6565b3480156106d357600080fd5b50610534600480360360408110156106ea57600080fd5b81019060208101813564010000000081111561070557600080fd5b82018360208201111561071757600080fd5b8035906020019184602083028401116401000000008311171561073957600080fd5b91939092909160208101903564010000000081111561075757600080fd5b82018360208201111561076957600080fd5b8035906020019184600183028401116401000000008311171561078b57600080fd5b509092509050610fb9565b3480156107a257600080fd5b5061060b6110a5565b3480156107b757600080fd5b506103a4600480360360208110156107ce57600080fd5b50356001600160a01b03166110ab565b6007546001600160a01b031681565b6000606060025460001415610849576040805162461bcd60e51b815260206004820152601660248201527f537461727461626c653a206e6f74207374617274656400000000000000000000604482015290519081900360640190fd5b61085161111c565b610859612c2c565b610861611174565b6001600160a01b03908116825289811660208084019190915290891660408084019190915260608301899052608083018890528051601f870183900483028101830190915285815290869086908190840183828082843760009201919091525050505060a08201526108d281611178565b9250925050965096945050505050565b6008546001600160a01b031681565b60008181526006602052604081208190819081906060908190836109176004830161119f565b8254985090508761096f576040805162461bcd60e51b815260206004820152601660248201527f53616c653a206e6f6e2d6578697374656e7420736b7500000000000000000000604482015290519081900360640190fd5b60018201546002830154600384015491985096506001600160a01b031694508067ffffffffffffffff811180156109a557600080fd5b506040519080825280602002602001820160405280156109cf578160200160208202803683370190505b5093508067ffffffffffffffff811180156109e957600080fd5b50604051908082528060200260200182016040528015610a13578160200160208202803683370190505b50925060005b81811015610a8a57600080610a3160048601846111a3565b915091508160001c878481518110610a4557fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508060001c868481518110610a7557fe5b60209081029190910101525050600101610a19565b50505091939550919395565b600254610aea576040805162461bcd60e51b815260206004820152601660248201527f537461727461626c653a206e6f74207374617274656400000000000000000000604482015290519081900360640190fd5b610afa610af5611174565b611235565b610b026112fc565b565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee81565b60035460ff1681565b610b30610af5611174565b815181518114610b87576040805162461bcd60e51b815260206004820152601960248201527f53616c653a20696e636f6e73697374656e742061727261797300000000000000604482015290519081900360640190fd5b60008481526006602052604090208054610be8576040805162461bcd60e51b815260206004820152601660248201527f53616c653a206e6f6e2d6578697374656e7420736b7500000000000000000000604482015290519081900360640190fd5b6004810182610c33576000610bfc8261119f565b905060005b81811015610c2c576000610c1584826111a3565b509050610c228482611354565b5050600101610c01565b5050610c3e565b610c3e818686611434565b857fcb3fe5489e0cd43d0f4a33d1e09a4a0463a03d0d38f56165530854e5540db1438686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015610ca6578181015183820152602001610c8e565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610ce5578181015183820152602001610ccd565b5050505090500194505050505060405180910390a2505050505050565b60606004600001805480602002602001604051908101604052809291908181526020018280548015610d5357602002820191906000526020600020905b815481526020019060010190808311610d3f575b5050505050905090565b610d68610af5611174565b6001600160a01b038116610dc3576040805162461bcd60e51b815260206004820152601460248201527f5061796f75743a207a65726f2061646472657373000000000000000000000000604482015290519081900360640190fd5b600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03838116919091179182905560408051929091168252517fdd880d24a789958a6398c99c2e54ce31bc10a638cbc42f7dd34285479ae0f855916020908290030190a150565b600254610e89576040805162461bcd60e51b815260206004820152601660248201527f537461727461626c653a206e6f74207374617274656400000000000000000000604482015290519081900360640190fd5b610e94610af5611174565b610b026114bc565b6001546001600160a01b031681565b6000546001600160a01b031690565b60001981565b600254610f14576040805162461bcd60e51b815260206004820152601660248201527f537461727461626c653a206e6f74207374617274656400000000000000000000604482015290519081900360640190fd5b610f1c61111c565b610f24612c2c565b610f2c611174565b6001600160a01b03908116825287811660208084019190915290871660408084019190915260608301879052608083018690528051601f850183900483028101830190915283815290849084908190840183828082843760009201919091525050505060a0820152610f9d816114fa565b50505050505050565b610fb1610af5611174565b610afa611527565b6060838067ffffffffffffffff81118015610fd357600080fd5b50604051908082528060200260200182016040528015610ffd578160200160208202803683370190505b50915060005b8181101561109b5761107c87878381811061101a57fe5b905060200201356001600160a01b0316600760009054906101000a90046001600160a01b031687878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506115a992505050565b83828151811061108857fe5b6020908102919091010152600101611003565b5050949350505050565b60025490565b6110b6610af5611174565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383811691821780845560405192939116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60035460ff1615610b02576040805162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b3390565b6000606061118583611727565b61118e836119d1565b505060c081015160e0909101519091565b5490565b8154600090819083106111fd576040805162461bcd60e51b815260206004820152601c60248201527f456e756d4d61703a20696e646578206f7574206f6620626f756e647300000000604482015290519081900360640190fd5b600084600001848154811061120e57fe5b906000526020600020906002020190508060000154816001015492509250505b9250929050565b306001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561126e57600080fd5b505afa158015611282573d6000803e3d6000fd5b505050506040513d602081101561129857600080fd5b50516001600160a01b038281169116146112f9576040805162461bcd60e51b815260206004820152601660248201527f4f776e61626c653a206e6f7420746865206f776e657200000000000000000000604482015290519081900360640190fd5b50565b611304611a74565b6003805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa611337611174565b604080516001600160a01b039092168252519081900360200190a1565b60008181526001830160205260408120548015611428578354600019808301919081019060009087908390811061138757fe5b90600052602060002090600202019050808760000184815481106113a757fe5b6000918252602080832084546002909302019182556001938401549184019190915583548252898301905260409020908401905586548790806113e657fe5b600082815260208082206002600019909401938402018281556001908101839055929093558881528982019092526040822091909155945061142e9350505050565b60009150505b92915050565b61143f838383611acb565b6114488361119f565b158061146657506007546114669084906001600160a01b0316611c2f565b6114b7576040805162461bcd60e51b815260206004820152601860248201527f53616c653a206e6f207265666572656e636520746f6b656e0000000000000000604482015290519081900360640190fd5b505050565b6114c461111c565b6003805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611337611174565b61150381611727565b61150c816119d1565b61151581611c47565b61151e81611d96565b6112f981611de2565b6002541561157c576040805162461bcd60e51b815260206004820152601260248201527f537461727461626c653a20737461727465640000000000000000000000000000604482015290519081900360640190fd5b426002557f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f9417611337611174565b60006001600160a01b03841673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee141561164d57600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561161e57600080fd5b505afa158015611632573d6000803e3d6000fd5b505050506040513d602081101561164857600080fd5b505193505b6001600160a01b03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156116ef57600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156116c057600080fd5b505afa1580156116d4573d6000803e3d6000fd5b505050506040513d60208110156116ea57600080fd5b505192505b6000806116fc86866122c7565b909250905061171d8261171783670de0b6b3a7640000612393565b906123f3565b9695505050505050565b60208101516001600160a01b0316611786576040805162461bcd60e51b815260206004820152601c60248201527f53616c653a207a65726f206164647265737320726563697069656e7400000000604482015290519081900360640190fd5b60408101516001600160a01b03166117e5576040805162461bcd60e51b815260206004820152601860248201527f53616c653a207a65726f206164647265737320746f6b656e0000000000000000604482015290519081900360640190fd5b608081015161183b576040805162461bcd60e51b815260206004820152601c60248201527f53616c653a207a65726f207175616e7469747920707572636861736500000000604482015290519081900360640190fd5b6060810151600090815260066020526040902080546118a1576040805162461bcd60e51b815260206004820152601660248201527f53616c653a206e6f6e2d6578697374656e7420736b7500000000000000000000604482015290519081900360640190fd5b8160800151816002015410156118fe576040805162461bcd60e51b815260206004820152601860248201527f53616c653a2061626f7665206d6178207175616e746974790000000000000000604482015290519081900360640190fd5b80546000191461196557816080015181600101541015611965576040805162461bcd60e51b815260206004820152601960248201527f53616c653a20696e73756666696369656e7420737570706c7900000000000000604482015290519081900360640190fd5b60408201516001600160a01b03166119806004830182611c2f565b6114b7576040805162461bcd60e51b815260206004820152601c60248201527f53616c653a206e6f6e2d6578697374656e7420736b7520746f6b656e00000000604482015290519081900360640190fd5b606081015160009081526006602052604090208054611a37576040805162461bcd60e51b815260206004820152601560248201527f53616c653a20756e737570706f7274656420534b550000000000000000000000604482015290519081900360640190fd5b600481016000611a47848361245a565b9050611a548483836124ca565b611a6e576080840151611a68908290612393565b60c08501525b50505050565b60035460ff16610b02576040805162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f7420706175736564000000000000000000000000604482015290519081900360640190fd5b60005b8251811015611bb1576000838281518110611ae557fe5b6020026020010151905060006001600160a01b0316816001600160a01b03161415611b57576040805162461bcd60e51b815260206004820152601860248201527f53616c653a207a65726f206164647265737320746f6b656e0000000000000000604482015290519081900360640190fd5b6000838381518110611b6557fe5b602002602001015190508060001415611b9157611b8b866001600160a01b038416611354565b50611ba7565b611ba5866001600160a01b038416836125c2565b505b5050600101611ace565b507f0000000000000000000000000000000000000000000000000000000000000000611bdc8461119f565b11156114b7576040805162461bcd60e51b815260206004820152601560248201527f53616c653a20746f6f206d616e7920746f6b656e730000000000000000000000604482015290519081900360640190fd5b60009081526001919091016020526040902054151590565b60408101516001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415611d6a578060c00151341015611cc9576040805162461bcd60e51b815260206004820152601660248201527f53616c653a20696e73756666696369656e742045544800000000000000000000604482015290519081900360640190fd5b60015460c08201516040516001600160a01b039092169181156108fc0291906000818181858888f19350505050158015611d07573d6000803e3d6000fd5b506000611d218260c001513461265990919063ffffffff16565b90508015611d645781516040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611d62573d6000803e3d6000fd5b505b506112f9565b6112f9611d75611174565b60015460c084015160408501516001600160a01b03908116939216906126b6565b60608101516000908152600660205260409020805460001914611dde5760808201516001820154611dc691612659565b60608301516000908152600660205260409020600101555b5050565b806060015181604001516001600160a01b031682600001516001600160a01b03167f29f844483ca6b10b5c0611d039afc15ce8f6380e905307b381c3a8ee4e90e11e846020015185608001518660a001518760c001518860e001518961010001518a610120015160405160200180848051906020019060200280838360005b83811015611e79578181015183820152602001611e61565b50505050905001838051906020019060200280838360005b83811015611ea9578181015183820152602001611e91565b50505050905001828051906020019060200280838360005b83811015611ed9578181015183820152602001611ec1565b50505050905001935050505060405160208183030381529060405260405180866001600160a01b031681526020018581526020018060200184815260200180602001838103835286818151815260200191508051906020019080838360005b83811015611f50578181015183820152602001611f38565b50505050905090810190601f168015611f7d5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611fb0578181015183820152602001611f98565b50505050905090810190601f168015611fdd5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a460608101516000908152600660205260409020600301546001600160a01b03168015611dde576361eceae860e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916816001600160a01b03166361eceae8846000015185602001518660400151876060015188608001518960a001518a60c001518b60e001518c61010001518d61012001516040518b63ffffffff1660e01b8152600401808b6001600160a01b031681526020018a6001600160a01b03168152602001896001600160a01b031681526020018881526020018781526020018060200186815260200180602001806020018060200185810385528a818151815260200191508051906020019080838360005b838110156121165781810151838201526020016120fe565b50505050905090810190601f1680156121435780820380516001836020036101000a031916815260200191505b508581038452885181528851602091820191808b01910280838360005b83811015612178578181015183820152602001612160565b50505050905001858103835287818151815260200191508051906020019060200280838360005b838110156121b757818101518382015260200161219f565b50505050905001858103825286818151815260200191508051906020019060200280838360005b838110156121f65781810151838201526020016121de565b505050509050019e505050505050505050505050505050602060405180830381600087803b15801561222757600080fd5b505af115801561223b573d6000803e3d6000fd5b505050506040513d602081101561225157600080fd5b50517fffffffff000000000000000000000000000000000000000000000000000000001614611dde576040805162461bcd60e51b815260206004820152601a60248201527f53616c653a206e6f74696669636174696f6e2072656675736564000000000000604482015290519081900360640190fd5b60008060006122d6858561273e565b5090506000806122e6878761282b565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561231e57600080fd5b505afa158015612332573d6000803e3d6000fd5b505050506040513d606081101561234857600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690506001600160a01b0387811690841614612382578082612385565b81815b909890975095505050505050565b6000826123a25750600061142e565b828202828482816123af57fe5b04146123ec5760405162461bcd60e51b8152600401808060200182810382526021815260200180612c9e6021913960400191505060405180910390fd5b9392505050565b6000808211612449576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b81838161245257fe5b049392505050565b60408201516000906124769083906001600160a01b031661298e565b90508061142e576040805162461bcd60e51b815260206004820152601f60248201527f53616c653a20756e737570706f72746564207061796d656e7420746f6b656e00604482015290519081900360640190fd5b600060001982146124dd575060006123ec565b6007546000906124f79085906001600160a01b031661298e565b604086015160075460a088015192935060009261251e92916001600160a01b0316906115a9565b9050600061254f876080015161254984611717670de0b6b3a76400008861239390919063ffffffff16565b90612393565b604080516002808252606082018352929350919060208301908036833750505060e08801819052805186919060009061258457fe5b6020026020010181815250508160001b8760e001516001815181106125a557fe5b602090810291909101015260c08701525060019150509392505050565b6000828152600184016020526040812054806126275750506040805180820182528381526020808201848152865460018181018955600089815284812095516002909302909501918255915190820155865486845281880190925292909120556123ec565b8285600001600183038154811061263a57fe5b90600052602060002090600202016001018190555060009150506123ec565b6000828211156126b0576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052611a6e908590612a1e565b600080826001600160a01b0316846001600160a01b031614156127a8576040805162461bcd60e51b815260206004820152601960248201527f556e697377617056323a2073616d652061646472657373657300000000000000604482015290519081900360640190fd5b826001600160a01b0316846001600160a01b0316106127c85782846127cb565b83835b90925090506001600160a01b03821661122e576040805162461bcd60e51b815260206004820152601760248201527f556e697377617056323a207a65726f2061646472657373000000000000000000604482015290519081900360640190fd5b600080600061283a858561273e565b91509150600860009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561288c57600080fd5b505afa1580156128a0573d6000803e3d6000fd5b505050506040513d60208110156128b657600080fd5b5051604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606095861b811660208381019190915294861b81166034830152825160288184030181526048830184528051908601207fff0000000000000000000000000000000000000000000000000000000000000060688401529390951b9094166069850152607d8401919091527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f609d808501919091528151808503909101815260bd909301905281519101209392505050565b6000818152600183016020526040812054806129f1576040805162461bcd60e51b815260206004820152601860248201527f456e756d4d61703a206e6f6e6578697374656e74206b65790000000000000000604482015290519081900360640190fd5b836000016001820381548110612a0357fe5b90600052602060002090600202016001015491505092915050565b81612a316001600160a01b038216612c26565b612a82576040805162461bcd60e51b815260206004820152601a60248201527f4552433230577261707065723a206e6f6e2d636f6e7472616374000000000000604482015290519081900360640190fd5b600080826001600160a01b0316846040518082805190602001908083835b60208310612add57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101612aa0565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612b3f576040519150601f19603f3d011682016040523d82523d6000602084013e612b44565b606091505b50915091508115612bc357805115612bbe57808060200190516020811015612b6b57600080fd5b5051612bbe576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b612c1f565b8051612c16576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b80518082602001fd5b5050505050565b3b151590565b60405180610140016040528060006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160008019168152602001600081526020016060815260200160008152602001606081526020016060815260200160608152509056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220d7bfe72990982df55cd5ca67efed556bd04518d4d15e801f5b2d15ba4957913964736f6c63430007060033abb92614f53337043b55dc996a83ebb09adce78ec336ca188ea02180b61d1c14",
  "deployedBytecode": "0x60806040526004361061015f5760003560e01c80638456cb59116100c0578063a963b25711610074578063c7b778db11610059578063c7b778db146106c7578063f21f537d14610796578063f2fde38b146107ab5761015f565b8063a963b2571461061d578063be9a6555146106b25761015f565b80638da5cb5b116100a55780638da5cb5b146105e15780639865bcc8146105f65780639e049545146105f65761015f565b80638456cb59146105b75780638488bb4e146105cc5761015f565b80635c4fafc7116101175780635e6e9f70116100fc5780635e6e9f70146103e457806361bd38511461051f5780636b8f9c43146105845761015f565b80635c4fafc7146103a65780635c975abb146103bb5761015f565b80631694505e116101485780631694505e146102925780632a8a45bc146102a75780633f4ba83a1461038f5761015f565b80631265b651146101645780631323b06614610195575b600080fd5b34801561017057600080fd5b506101796107de565b604080516001600160a01b039092168252519081900360200190f35b3480156101a157600080fd5b50610237600480360360a08110156101b857600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a0810160808201356401000000008111156101f857600080fd5b82018360208201111561020a57600080fd5b8035906020019184600183028401116401000000008311171561022c57600080fd5b5090925090506107ed565b6040518083815260200180602001828103825283818151815260200191508051906020019060200280838360005b8381101561027d578181015183820152602001610265565b50505050905001935050505060405180910390f35b34801561029e57600080fd5b506101796108e2565b3480156102b357600080fd5b506102d1600480360360208110156102ca57600080fd5b50356108f1565b60405180878152602001868152602001858152602001846001600160a01b031681526020018060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561033657818101518382015260200161031e565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561037557818101518382015260200161035d565b505050509050019850505050505050505060405180910390f35b34801561039b57600080fd5b506103a4610a96565b005b3480156103b257600080fd5b50610179610b04565b3480156103c757600080fd5b506103d0610b1c565b604080519115158252519081900360200190f35b3480156103f057600080fd5b506103a46004803603606081101561040757600080fd5b8135919081019060408101602082013564010000000081111561042957600080fd5b82018360208201111561043b57600080fd5b8035906020019184602083028401116401000000008311171561045d57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092959493602081019350359150506401000000008111156104ad57600080fd5b8201836020820111156104bf57600080fd5b803590602001918460208302840111640100000000831117156104e157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610b25945050505050565b34801561052b57600080fd5b50610534610d02565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610570578181015183820152602001610558565b505050509050019250505060405180910390f35b34801561059057600080fd5b506103a4600480360360208110156105a757600080fd5b50356001600160a01b0316610d5d565b3480156105c357600080fd5b506103a4610e35565b3480156105d857600080fd5b50610179610e9c565b3480156105ed57600080fd5b50610179610eab565b34801561060257600080fd5b5061060b610eba565b60408051918252519081900360200190f35b6103a4600480360360a081101561063357600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a08101608082013564010000000081111561067357600080fd5b82018360208201111561068557600080fd5b803590602001918460018302840111640100000000831117156106a757600080fd5b509092509050610ec0565b3480156106be57600080fd5b506103a4610fa6565b3480156106d357600080fd5b50610534600480360360408110156106ea57600080fd5b81019060208101813564010000000081111561070557600080fd5b82018360208201111561071757600080fd5b8035906020019184602083028401116401000000008311171561073957600080fd5b91939092909160208101903564010000000081111561075757600080fd5b82018360208201111561076957600080fd5b8035906020019184600183028401116401000000008311171561078b57600080fd5b509092509050610fb9565b3480156107a257600080fd5b5061060b6110a5565b3480156107b757600080fd5b506103a4600480360360208110156107ce57600080fd5b50356001600160a01b03166110ab565b6007546001600160a01b031681565b6000606060025460001415610849576040805162461bcd60e51b815260206004820152601660248201527f537461727461626c653a206e6f74207374617274656400000000000000000000604482015290519081900360640190fd5b61085161111c565b610859612c2c565b610861611174565b6001600160a01b03908116825289811660208084019190915290891660408084019190915260608301899052608083018890528051601f870183900483028101830190915285815290869086908190840183828082843760009201919091525050505060a08201526108d281611178565b9250925050965096945050505050565b6008546001600160a01b031681565b60008181526006602052604081208190819081906060908190836109176004830161119f565b8254985090508761096f576040805162461bcd60e51b815260206004820152601660248201527f53616c653a206e6f6e2d6578697374656e7420736b7500000000000000000000604482015290519081900360640190fd5b60018201546002830154600384015491985096506001600160a01b031694508067ffffffffffffffff811180156109a557600080fd5b506040519080825280602002602001820160405280156109cf578160200160208202803683370190505b5093508067ffffffffffffffff811180156109e957600080fd5b50604051908082528060200260200182016040528015610a13578160200160208202803683370190505b50925060005b81811015610a8a57600080610a3160048601846111a3565b915091508160001c878481518110610a4557fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508060001c868481518110610a7557fe5b60209081029190910101525050600101610a19565b50505091939550919395565b600254610aea576040805162461bcd60e51b815260206004820152601660248201527f537461727461626c653a206e6f74207374617274656400000000000000000000604482015290519081900360640190fd5b610afa610af5611174565b611235565b610b026112fc565b565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee81565b60035460ff1681565b610b30610af5611174565b815181518114610b87576040805162461bcd60e51b815260206004820152601960248201527f53616c653a20696e636f6e73697374656e742061727261797300000000000000604482015290519081900360640190fd5b60008481526006602052604090208054610be8576040805162461bcd60e51b815260206004820152601660248201527f53616c653a206e6f6e2d6578697374656e7420736b7500000000000000000000604482015290519081900360640190fd5b6004810182610c33576000610bfc8261119f565b905060005b81811015610c2c576000610c1584826111a3565b509050610c228482611354565b5050600101610c01565b5050610c3e565b610c3e818686611434565b857fcb3fe5489e0cd43d0f4a33d1e09a4a0463a03d0d38f56165530854e5540db1438686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015610ca6578181015183820152602001610c8e565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610ce5578181015183820152602001610ccd565b5050505090500194505050505060405180910390a2505050505050565b60606004600001805480602002602001604051908101604052809291908181526020018280548015610d5357602002820191906000526020600020905b815481526020019060010190808311610d3f575b5050505050905090565b610d68610af5611174565b6001600160a01b038116610dc3576040805162461bcd60e51b815260206004820152601460248201527f5061796f75743a207a65726f2061646472657373000000000000000000000000604482015290519081900360640190fd5b600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03838116919091179182905560408051929091168252517fdd880d24a789958a6398c99c2e54ce31bc10a638cbc42f7dd34285479ae0f855916020908290030190a150565b600254610e89576040805162461bcd60e51b815260206004820152601660248201527f537461727461626c653a206e6f74207374617274656400000000000000000000604482015290519081900360640190fd5b610e94610af5611174565b610b026114bc565b6001546001600160a01b031681565b6000546001600160a01b031690565b60001981565b600254610f14576040805162461bcd60e51b815260206004820152601660248201527f537461727461626c653a206e6f74207374617274656400000000000000000000604482015290519081900360640190fd5b610f1c61111c565b610f24612c2c565b610f2c611174565b6001600160a01b03908116825287811660208084019190915290871660408084019190915260608301879052608083018690528051601f850183900483028101830190915283815290849084908190840183828082843760009201919091525050505060a0820152610f9d816114fa565b50505050505050565b610fb1610af5611174565b610afa611527565b6060838067ffffffffffffffff81118015610fd357600080fd5b50604051908082528060200260200182016040528015610ffd578160200160208202803683370190505b50915060005b8181101561109b5761107c87878381811061101a57fe5b905060200201356001600160a01b0316600760009054906101000a90046001600160a01b031687878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506115a992505050565b83828151811061108857fe5b6020908102919091010152600101611003565b5050949350505050565b60025490565b6110b6610af5611174565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383811691821780845560405192939116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60035460ff1615610b02576040805162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b3390565b6000606061118583611727565b61118e836119d1565b505060c081015160e0909101519091565b5490565b8154600090819083106111fd576040805162461bcd60e51b815260206004820152601c60248201527f456e756d4d61703a20696e646578206f7574206f6620626f756e647300000000604482015290519081900360640190fd5b600084600001848154811061120e57fe5b906000526020600020906002020190508060000154816001015492509250505b9250929050565b306001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561126e57600080fd5b505afa158015611282573d6000803e3d6000fd5b505050506040513d602081101561129857600080fd5b50516001600160a01b038281169116146112f9576040805162461bcd60e51b815260206004820152601660248201527f4f776e61626c653a206e6f7420746865206f776e657200000000000000000000604482015290519081900360640190fd5b50565b611304611a74565b6003805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa611337611174565b604080516001600160a01b039092168252519081900360200190a1565b60008181526001830160205260408120548015611428578354600019808301919081019060009087908390811061138757fe5b90600052602060002090600202019050808760000184815481106113a757fe5b6000918252602080832084546002909302019182556001938401549184019190915583548252898301905260409020908401905586548790806113e657fe5b600082815260208082206002600019909401938402018281556001908101839055929093558881528982019092526040822091909155945061142e9350505050565b60009150505b92915050565b61143f838383611acb565b6114488361119f565b158061146657506007546114669084906001600160a01b0316611c2f565b6114b7576040805162461bcd60e51b815260206004820152601860248201527f53616c653a206e6f207265666572656e636520746f6b656e0000000000000000604482015290519081900360640190fd5b505050565b6114c461111c565b6003805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611337611174565b61150381611727565b61150c816119d1565b61151581611c47565b61151e81611d96565b6112f981611de2565b6002541561157c576040805162461bcd60e51b815260206004820152601260248201527f537461727461626c653a20737461727465640000000000000000000000000000604482015290519081900360640190fd5b426002557f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f9417611337611174565b60006001600160a01b03841673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee141561164d57600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561161e57600080fd5b505afa158015611632573d6000803e3d6000fd5b505050506040513d602081101561164857600080fd5b505193505b6001600160a01b03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156116ef57600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156116c057600080fd5b505afa1580156116d4573d6000803e3d6000fd5b505050506040513d60208110156116ea57600080fd5b505192505b6000806116fc86866122c7565b909250905061171d8261171783670de0b6b3a7640000612393565b906123f3565b9695505050505050565b60208101516001600160a01b0316611786576040805162461bcd60e51b815260206004820152601c60248201527f53616c653a207a65726f206164647265737320726563697069656e7400000000604482015290519081900360640190fd5b60408101516001600160a01b03166117e5576040805162461bcd60e51b815260206004820152601860248201527f53616c653a207a65726f206164647265737320746f6b656e0000000000000000604482015290519081900360640190fd5b608081015161183b576040805162461bcd60e51b815260206004820152601c60248201527f53616c653a207a65726f207175616e7469747920707572636861736500000000604482015290519081900360640190fd5b6060810151600090815260066020526040902080546118a1576040805162461bcd60e51b815260206004820152601660248201527f53616c653a206e6f6e2d6578697374656e7420736b7500000000000000000000604482015290519081900360640190fd5b8160800151816002015410156118fe576040805162461bcd60e51b815260206004820152601860248201527f53616c653a2061626f7665206d6178207175616e746974790000000000000000604482015290519081900360640190fd5b80546000191461196557816080015181600101541015611965576040805162461bcd60e51b815260206004820152601960248201527f53616c653a20696e73756666696369656e7420737570706c7900000000000000604482015290519081900360640190fd5b60408201516001600160a01b03166119806004830182611c2f565b6114b7576040805162461bcd60e51b815260206004820152601c60248201527f53616c653a206e6f6e2d6578697374656e7420736b7520746f6b656e00000000604482015290519081900360640190fd5b606081015160009081526006602052604090208054611a37576040805162461bcd60e51b815260206004820152601560248201527f53616c653a20756e737570706f7274656420534b550000000000000000000000604482015290519081900360640190fd5b600481016000611a47848361245a565b9050611a548483836124ca565b611a6e576080840151611a68908290612393565b60c08501525b50505050565b60035460ff16610b02576040805162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f7420706175736564000000000000000000000000604482015290519081900360640190fd5b60005b8251811015611bb1576000838281518110611ae557fe5b6020026020010151905060006001600160a01b0316816001600160a01b03161415611b57576040805162461bcd60e51b815260206004820152601860248201527f53616c653a207a65726f206164647265737320746f6b656e0000000000000000604482015290519081900360640190fd5b6000838381518110611b6557fe5b602002602001015190508060001415611b9157611b8b866001600160a01b038416611354565b50611ba7565b611ba5866001600160a01b038416836125c2565b505b5050600101611ace565b507f0000000000000000000000000000000000000000000000000000000000000000611bdc8461119f565b11156114b7576040805162461bcd60e51b815260206004820152601560248201527f53616c653a20746f6f206d616e7920746f6b656e730000000000000000000000604482015290519081900360640190fd5b60009081526001919091016020526040902054151590565b60408101516001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415611d6a578060c00151341015611cc9576040805162461bcd60e51b815260206004820152601660248201527f53616c653a20696e73756666696369656e742045544800000000000000000000604482015290519081900360640190fd5b60015460c08201516040516001600160a01b039092169181156108fc0291906000818181858888f19350505050158015611d07573d6000803e3d6000fd5b506000611d218260c001513461265990919063ffffffff16565b90508015611d645781516040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611d62573d6000803e3d6000fd5b505b506112f9565b6112f9611d75611174565b60015460c084015160408501516001600160a01b03908116939216906126b6565b60608101516000908152600660205260409020805460001914611dde5760808201516001820154611dc691612659565b60608301516000908152600660205260409020600101555b5050565b806060015181604001516001600160a01b031682600001516001600160a01b03167f29f844483ca6b10b5c0611d039afc15ce8f6380e905307b381c3a8ee4e90e11e846020015185608001518660a001518760c001518860e001518961010001518a610120015160405160200180848051906020019060200280838360005b83811015611e79578181015183820152602001611e61565b50505050905001838051906020019060200280838360005b83811015611ea9578181015183820152602001611e91565b50505050905001828051906020019060200280838360005b83811015611ed9578181015183820152602001611ec1565b50505050905001935050505060405160208183030381529060405260405180866001600160a01b031681526020018581526020018060200184815260200180602001838103835286818151815260200191508051906020019080838360005b83811015611f50578181015183820152602001611f38565b50505050905090810190601f168015611f7d5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611fb0578181015183820152602001611f98565b50505050905090810190601f168015611fdd5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a460608101516000908152600660205260409020600301546001600160a01b03168015611dde576361eceae860e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916816001600160a01b03166361eceae8846000015185602001518660400151876060015188608001518960a001518a60c001518b60e001518c61010001518d61012001516040518b63ffffffff1660e01b8152600401808b6001600160a01b031681526020018a6001600160a01b03168152602001896001600160a01b031681526020018881526020018781526020018060200186815260200180602001806020018060200185810385528a818151815260200191508051906020019080838360005b838110156121165781810151838201526020016120fe565b50505050905090810190601f1680156121435780820380516001836020036101000a031916815260200191505b508581038452885181528851602091820191808b01910280838360005b83811015612178578181015183820152602001612160565b50505050905001858103835287818151815260200191508051906020019060200280838360005b838110156121b757818101518382015260200161219f565b50505050905001858103825286818151815260200191508051906020019060200280838360005b838110156121f65781810151838201526020016121de565b505050509050019e505050505050505050505050505050602060405180830381600087803b15801561222757600080fd5b505af115801561223b573d6000803e3d6000fd5b505050506040513d602081101561225157600080fd5b50517fffffffff000000000000000000000000000000000000000000000000000000001614611dde576040805162461bcd60e51b815260206004820152601a60248201527f53616c653a206e6f74696669636174696f6e2072656675736564000000000000604482015290519081900360640190fd5b60008060006122d6858561273e565b5090506000806122e6878761282b565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561231e57600080fd5b505afa158015612332573d6000803e3d6000fd5b505050506040513d606081101561234857600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690506001600160a01b0387811690841614612382578082612385565b81815b909890975095505050505050565b6000826123a25750600061142e565b828202828482816123af57fe5b04146123ec5760405162461bcd60e51b8152600401808060200182810382526021815260200180612c9e6021913960400191505060405180910390fd5b9392505050565b6000808211612449576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b81838161245257fe5b049392505050565b60408201516000906124769083906001600160a01b031661298e565b90508061142e576040805162461bcd60e51b815260206004820152601f60248201527f53616c653a20756e737570706f72746564207061796d656e7420746f6b656e00604482015290519081900360640190fd5b600060001982146124dd575060006123ec565b6007546000906124f79085906001600160a01b031661298e565b604086015160075460a088015192935060009261251e92916001600160a01b0316906115a9565b9050600061254f876080015161254984611717670de0b6b3a76400008861239390919063ffffffff16565b90612393565b604080516002808252606082018352929350919060208301908036833750505060e08801819052805186919060009061258457fe5b6020026020010181815250508160001b8760e001516001815181106125a557fe5b602090810291909101015260c08701525060019150509392505050565b6000828152600184016020526040812054806126275750506040805180820182528381526020808201848152865460018181018955600089815284812095516002909302909501918255915190820155865486845281880190925292909120556123ec565b8285600001600183038154811061263a57fe5b90600052602060002090600202016001018190555060009150506123ec565b6000828211156126b0576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052611a6e908590612a1e565b600080826001600160a01b0316846001600160a01b031614156127a8576040805162461bcd60e51b815260206004820152601960248201527f556e697377617056323a2073616d652061646472657373657300000000000000604482015290519081900360640190fd5b826001600160a01b0316846001600160a01b0316106127c85782846127cb565b83835b90925090506001600160a01b03821661122e576040805162461bcd60e51b815260206004820152601760248201527f556e697377617056323a207a65726f2061646472657373000000000000000000604482015290519081900360640190fd5b600080600061283a858561273e565b91509150600860009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561288c57600080fd5b505afa1580156128a0573d6000803e3d6000fd5b505050506040513d60208110156128b657600080fd5b5051604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606095861b811660208381019190915294861b81166034830152825160288184030181526048830184528051908601207fff0000000000000000000000000000000000000000000000000000000000000060688401529390951b9094166069850152607d8401919091527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f609d808501919091528151808503909101815260bd909301905281519101209392505050565b6000818152600183016020526040812054806129f1576040805162461bcd60e51b815260206004820152601860248201527f456e756d4d61703a206e6f6e6578697374656e74206b65790000000000000000604482015290519081900360640190fd5b836000016001820381548110612a0357fe5b90600052602060002090600202016001015491505092915050565b81612a316001600160a01b038216612c26565b612a82576040805162461bcd60e51b815260206004820152601a60248201527f4552433230577261707065723a206e6f6e2d636f6e7472616374000000000000604482015290519081900360640190fd5b600080826001600160a01b0316846040518082805190602001908083835b60208310612add57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101612aa0565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612b3f576040519150601f19603f3d011682016040523d82523d6000602084013e612b44565b606091505b50915091508115612bc357805115612bbe57808060200190516020811015612b6b57600080fd5b5051612bbe576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b612c1f565b8051612c16576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b80518082602001fd5b5050505050565b3b151590565b60405180610140016040528060006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160008019168152602001600081526020016060815260200160008152602001606081526020016060815260200160608152509056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220d7bfe72990982df55cd5ca67efed556bd04518d4d15e801f5b2d15ba4957913964736f6c63430007060033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}