{
  "_format": "hh-sol-artifact-1",
  "contractName": "ArtistCreator",
  "sourceName": "contracts/ArtistCreator.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "previousAdmin",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newAdmin",
          "type": "address"
        }
      ],
      "name": "AdminChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "beacon",
          "type": "address"
        }
      ],
      "name": "BeaconUpgraded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "artistId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "name",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "symbol",
          "type": "string"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "artistAddress",
          "type": "address"
        }
      ],
      "name": "CreatedArtist",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "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": "implementation",
          "type": "address"
        }
      ],
      "name": "Upgraded",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "DOMAIN_SEPARATOR",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MINTER_TYPEHASH",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "admin",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "artistContracts",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "beaconAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "signature",
          "type": "bytes"
        },
        {
          "internalType": "string",
          "name": "_name",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "_symbol",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "_baseURI",
          "type": "string"
        }
      ],
      "name": "createArtist",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "signature",
          "type": "bytes"
        }
      ],
      "name": "getSigner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "proxiableUUID",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_newAdmin",
          "type": "address"
        }
      ],
      "name": "setAdmin",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newImplementation",
          "type": "address"
        }
      ],
      "name": "upgradeTo",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newImplementation",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "upgradeToAndCall",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    }
  ],
  "bytecode": "0x60a06040523060805234801561001457600080fd5b506080516151d361004c600039600081816104f401528181610537015281816105df0152818161062201526106be01526151d36000f3fe608060405260043610620000fb5760003560e01c80637e2ec6d01162000095578063e6adabfd1162000060578063e6adabfd146200027b578063f2fde38b14620002a0578063f851a44014620002c5578063fa4d280c14620002e757600080fd5b80637e2ec6d014620001fc5780638129fc1c146200021e5780638da5cb5b1462000236578063b16a43f0146200025657600080fd5b80634f1ef28611620000d65780634f1ef286146200019057806352d1902d14620001a7578063704b6c0214620001bf578063715018a614620001e457600080fd5b8063233654eb14620001005780633644e51514620001425780633659cfe61462000169575b600080fd5b3480156200010d57600080fd5b50620001256200011f36600462001612565b6200031d565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156200014f57600080fd5b506200015a60cb5481565b60405190815260200162000139565b3480156200017657600080fd5b506200018e62000188366004620016ef565b620004ea565b005b6200018e620001a13660046200170d565b620005d5565b348015620001b457600080fd5b506200015a620006b1565b348015620001cc57600080fd5b506200018e620001de366004620016ef565b62000767565b348015620001f157600080fd5b506200018e620007f3565b3480156200020957600080fd5b5060cc5462000125906001600160a01b031681565b3480156200022b57600080fd5b506200018e6200080b565b3480156200024357600080fd5b506097546001600160a01b031662000125565b3480156200026357600080fd5b50620001256200027536600462001776565b62000a7a565b3480156200028857600080fd5b50620001256200029a36600462001790565b62000aa5565b348015620002ad57600080fd5b506200018e620002bf366004620016ef565b62000bdb565b348015620002d257600080fd5b5060ca5462000125906001600160a01b031681565b348015620002f457600080fd5b506200015a7f5925e35aebbeb7738ae3e97ad24e3b4cc09001c8668d81f3365213a0ec1e85b281565b60ca546000906001600160a01b031662000338878762000aa5565b6001600160a01b031614620003945760405162461bcd60e51b815260206004820152601f60248201527f696e76616c696420617574686f72697a6174696f6e207369676e61747572650060448201526064015b60405180910390fd5b60cc546000906001600160a01b031663055fe41d60e51b33620003b660c95490565b888888604051602401620003cf95949392919062001833565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516200040e90620014ed565b6200041b92919062001892565b604051809103906000f08015801562000438573d6000803e3d6000fd5b5060cd80546001810182556000919091527f83978b4c69c48dd978ab43fe30f077615294f938fb7f936d9eb340e51ea7db2e0180546001600160a01b0383166001600160a01b031990911681179091559091507f23748b43b77f98380e738976c6324996908ffc1989994dd3c68631c87a65a7c0620004b660c95490565b8787604051620004c993929190620018c0565b60405180910390a2620004e060c980546001019055565b9695505050505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003620005355760405162461bcd60e51b81526004016200038b90620018ef565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166200058060008051602062005157833981519152546001600160a01b031690565b6001600160a01b031614620005a95760405162461bcd60e51b81526004016200038b906200193b565b620005b48162000c57565b60408051600080825260208201909252620005d29183919062000c61565b50565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003620006205760405162461bcd60e51b81526004016200038b90620018ef565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166200066b60008051602062005157833981519152546001600160a01b031690565b6001600160a01b031614620006945760405162461bcd60e51b81526004016200038b906200193b565b6200069f8262000c57565b620006ad8282600162000c61565b5050565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614620007535760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016200038b565b506000805160206200515783398151915290565b6097546001600160a01b03163314806200078b575060ca546001600160a01b031633145b620007d15760405162461bcd60e51b815260206004820152601560248201527434b73b30b634b21030baba3437b934bd30ba34b7b760591b60448201526064016200038b565b60ca80546001600160a01b0319166001600160a01b0392909216919091179055565b620007fd62000dde565b62000809600062000e3a565b565b600054610100900460ff16158080156200082c5750600054600160ff909116105b80620008485750303b15801562000848575060005460ff166001145b620008ad5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016200038b565b6000805460ff191660011790558015620008d1576000805461ff0019166101001790555b620008db62000e8c565b60ca80546001600160a01b031916331790556040516200092a907fc49a8e302e3e5d6753b2bb3dbc3c28deba5e16e2572a92aef568063c963e3465904690602001918252602082015260400190565b60408051601f1981840301815290829052805160209091012060cb556000906200095490620014fb565b604051809103906000f08015801562000971573d6000803e3d6000fd5b50604051620009809062001509565b6001600160a01b039091168152602001604051809103906000f080158015620009ad573d6000803e3d6000fd5b5060405163f2fde38b60e01b81523360048201529091506001600160a01b0382169063f2fde38b90602401600060405180830381600087803b158015620009f357600080fd5b505af115801562000a08573d6000803e3d6000fd5b505060cc80546001600160a01b0319166001600160a01b038516179055505060c980546001019055508015620005d2576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b60cd818154811062000a8b57600080fd5b6000918252602090912001546001600160a01b0316905081565b60ca546000906001600160a01b031662000afa5760405162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081b9bdd08195b98589b1959605a1b60448201526064016200038b565b60cb54604080517f5925e35aebbeb7738ae3e97ad24e3b4cc09001c8668d81f3365213a0ec1e85b260208201523391810191909152600091906060016040516020818303038152906040528051906020012060405160200162000b7492919061190160f01b81526002810192909252602282015260420190565b604051602081830303815290604052805190602001209050600062000bd285858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250869392505062000f049050565b95945050505050565b62000be562000dde565b6001600160a01b03811662000c4c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016200038b565b620005d28162000e3a565b620005d262000dde565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161562000c9c5762000c978362000f2c565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801562000cf9575060408051601f3d908101601f1916820190925262000cf69181019062001987565b60015b62000d5e5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016200038b565b60008051602062005157833981519152811462000dd05760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016200038b565b5062000c9783838362000fcb565b6097546001600160a01b03163314620008095760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016200038b565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff1662000ef95760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016200038b565b620008093362000e3a565b600080600062000f15858562000ffc565b9150915062000f248162001072565b509392505050565b6001600160a01b0381163b62000f9b5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016200038b565b6000805160206200515783398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b62000fd68362001240565b60008251118062000fe45750805b1562000c975762000ff6838362001282565b50505050565b6000808251604103620010365760208301516040840151606085015160001a620010298782858562001376565b945094505050506200106b565b8251604003620010635760208301516040840151620010578683836200146b565b9350935050506200106b565b506000905060025b9250929050565b6000816004811115620010895762001089620019a1565b03620010925750565b6001816004811115620010a957620010a9620019a1565b03620010f85760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016200038b565b60028160048111156200110f576200110f620019a1565b036200115e5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016200038b565b6003816004811115620011755762001175620019a1565b03620011cf5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016200038b565b6004816004811115620011e657620011e6620019a1565b03620005d25760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016200038b565b6200124b8162000f2c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b620012ec5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016200038b565b600080846001600160a01b031684604051620013099190620019b7565b600060405180830381855af49150503d806000811462001346576040519150601f19603f3d011682016040523d82523d6000602084013e6200134b565b606091505b509150915062000bd282826040518060600160405280602781526020016200517760279139620014a8565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115620013af575060009050600362001462565b8460ff16601b14158015620013c857508460ff16601c14155b15620013db575060009050600462001462565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801562001430573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166200145b5760006001925092505062001462565b9150600090505b94509492505050565b6000806001600160ff1b038316816200148a60ff86901c601b620019d5565b90506200149a8782888562001376565b935093505050935093915050565b60608315620014b9575081620014e6565b825115620014ca5782518084602001fd5b8160405162461bcd60e51b81526004016200038b9190620019fc565b9392505050565b6108fa8062001a1283390190565b612967806200230c83390190565b6104e48062004c7383390190565b60008083601f8401126200152a57600080fd5b50813567ffffffffffffffff8111156200154357600080fd5b6020830191508360208285010111156200106b57600080fd5b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156200159057620015906200155c565b604051601f8501601f19908116603f01168101908282118183101715620015bb57620015bb6200155c565b81604052809350858152868686011115620015d557600080fd5b858560208301376000602087830101525050509392505050565b600082601f8301126200160157600080fd5b620014e68383356020850162001572565b6000806000806000608086880312156200162b57600080fd5b853567ffffffffffffffff808211156200164457600080fd5b6200165289838a0162001517565b909750955060208801359150808211156200166c57600080fd5b6200167a89838a01620015ef565b945060408801359150808211156200169157600080fd5b6200169f89838a01620015ef565b93506060880135915080821115620016b657600080fd5b50620016c588828901620015ef565b9150509295509295909350565b80356001600160a01b0381168114620016ea57600080fd5b919050565b6000602082840312156200170257600080fd5b620014e682620016d2565b600080604083850312156200172157600080fd5b6200172c83620016d2565b9150602083013567ffffffffffffffff8111156200174957600080fd5b8301601f810185136200175b57600080fd5b6200176c8582356020840162001572565b9150509250929050565b6000602082840312156200178957600080fd5b5035919050565b60008060208385031215620017a457600080fd5b823567ffffffffffffffff811115620017bc57600080fd5b620017ca8582860162001517565b90969095509350505050565b60005b83811015620017f3578181015183820152602001620017d9565b8381111562000ff65750506000910152565b600081518084526200181f816020860160208601620017d6565b601f01601f19169290920160200192915050565b60018060a01b038616815284602082015260a0604082015260006200185c60a083018662001805565b828103606084015262001870818662001805565b9050828103608084015262001886818562001805565b98975050505050505050565b6001600160a01b0383168152604060208201819052600090620018b89083018462001805565b949350505050565b838152606060208201526000620018db606083018562001805565b8281036040840152620004e0818562001805565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6000602082840312156200199a57600080fd5b5051919050565b634e487b7160e01b600052602160045260246000fd5b60008251620019cb818460208701620017d6565b9190910192915050565b60008219821115620019f757634e487b7160e01b600052601160045260246000fd5b500190565b602081526000620014e660208301846200180556fe60806040526040516108fa3803806108fa83398101604081905261002291610456565b61002e82826000610035565b5050610580565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610516565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610516565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108d3602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b60606001600160a01b0384163b6103495760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610169565b600080856001600160a01b0316856040516103649190610531565b600060405180830381855af49150503d806000811461039f576040519150601f19603f3d011682016040523d82523d6000602084013e6103a4565b606091505b5090925090506103b58282866103bf565b9695505050505050565b606083156103ce5750816102c8565b8251156103de5782518084602001fd5b8160405162461bcd60e51b8152600401610169919061054d565b80516001600160a01b038116811461040f57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044557818101518382015260200161042d565b838111156100f95750506000910152565b6000806040838503121561046957600080fd5b610472836103f8565b60208401519092506001600160401b038082111561048f57600080fd5b818501915085601f8301126104a357600080fd5b8151818111156104b5576104b5610414565b604051601f8201601f19908116603f011681019083821181831017156104dd576104dd610414565b816040528281528860208487010111156104f657600080fd5b61050783602083016020880161042a565b80955050505050509250929050565b60006020828403121561052857600080fd5b6102c8826103f8565b6000825161054381846020870161042a565b9190910192915050565b602081526000825180602084015261056c81604085016020870161042a565b601f01601f19169190910160400192915050565b6103448061058f6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102e860279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb919061023f565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b60606001600160a01b0384163b6101915760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b0316856040516101ac9190610298565b600060405180830381855af49150503d80600081146101e7576040519150601f19603f3d011682016040523d82523d6000602084013e6101ec565b606091505b50915091506101fc828286610206565b9695505050505050565b6060831561021557508161004e565b8251156102255782518084602001fd5b8160405162461bcd60e51b815260040161018891906102b4565b60006020828403121561025157600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028357818101518382015260200161026b565b83811115610292576000848401525b50505050565b600082516102aa818460208701610268565b9190910192915050565b60208152600082518060208401526102d3816040850160208701610268565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212209edd394a164f4df235ebb5c07889d2d9b73cdcabc3f96db3749d3815d01ead7964736f6c634300080e0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564608060405234801561001057600080fd5b50612947806100206000396000f3fe6080604052600436106101d85760003560e01c8063715018a611610102578063bd8616ec11610095578063e8a3d48511610064578063e8a3d4851461064f578063e985e9c514610664578063f2fde38b146106ad578063fbab9e04146106cd57600080fd5b8063bd8616ec146105c2578063c87b56dd146105d5578063d3bb0528146105f5578063e1a3d5731461062257600080fd5b8063a22cb465116100d1578063a22cb46514610542578063abfc83a014610562578063b88d4fde14610582578063bb314ca1146105a257600080fd5b8063715018a6146104cd57806374e79189146104e25780638da5cb5b1461050f57806395d89b411461052d57600080fd5b806323b872dd1161017a57806342842e0e1161014957806342842e0e14610440578063602787ed146104605780636352211e1461048d57806370a08231146104ad57600080fd5b806323b872dd146102fe578063279c806e1461031e5780632a55205a146103e15780633fafef291461042057600080fd5b8063095ea7b3116101b6578063095ea7b31461026c57806313dd29601461028e578063155dd5ee146102bb57806318160ddd146102db57600080fd5b806301ffc9a7146101dd57806306fdde0314610212578063081812fc14610234575b600080fd5b3480156101e957600080fd5b506101fd6101f836600461207f565b6106ed565b60405190151581526020015b60405180910390f35b34801561021e57600080fd5b50610227610718565b60405161020991906120fb565b34801561024057600080fd5b5061025461024f36600461210e565b6107aa565b6040516001600160a01b039091168152602001610209565b34801561027857600080fd5b5061028c61028736600461213c565b6107d1565b005b34801561029a57600080fd5b506102ae6102a936600461210e565b6108eb565b6040516102099190612168565b3480156102c757600080fd5b5061028c6102d636600461210e565b6109cc565b3480156102e757600080fd5b506102f0610a2c565b604051908152602001610209565b34801561030a57600080fd5b5061028c6103193660046121b5565b610a48565b34801561032a57600080fd5b5061039561033936600461210e565b60cc602052600090815260409020805460018201546002909201546001600160a01b03909116919063ffffffff808216916401000000008104821691600160401b8204811691600160601b8104821691600160801b9091041687565b604080516001600160a01b039098168852602088019690965263ffffffff94851695870195909552918316606086015282166080850152811660a08401521660c082015260e001610209565b3480156103ed57600080fd5b506104016103fc3660046121f6565b610a79565b604080516001600160a01b039093168352602083019190915201610209565b34801561042c57600080fd5b5061028c61043b366004612231565b610b42565b34801561044c57600080fd5b5061028c61045b3660046121b5565b610d0e565b34801561046c57600080fd5b506102f061047b36600461210e565b60cd6020526000908152604090205481565b34801561049957600080fd5b506102546104a836600461210e565b610d29565b3480156104b957600080fd5b506102f06104c83660046122a0565b610d89565b3480156104d957600080fd5b5061028c610e0f565b3480156104ee57600080fd5b506105026104fd36600461210e565b610e23565b60405161020991906122bd565b34801561051b57600080fd5b506097546001600160a01b0316610254565b34801561053957600080fd5b50610227610ee6565b34801561054e57600080fd5b5061028c61055d3660046122f5565b610ef5565b34801561056e57600080fd5b5061028c61057d3660046123df565b610f00565b34801561058e57600080fd5b5061028c61059d366004612484565b611084565b3480156105ae57600080fd5b5061028c6105bd366004612504565b6110bc565b61028c6105d036600461210e565b6110fa565b3480156105e157600080fd5b506102276105f036600461210e565b611415565b34801561060157600080fd5b506102f061061036600461210e565b60cf6020526000908152604090205481565b34801561062e57600080fd5b506102f061063d36600461210e565b60ce6020526000908152604090205481565b34801561065b57600080fd5b506102276114e0565b34801561067057600080fd5b506101fd61067f366004612530565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b3480156106b957600080fd5b5061028c6106c83660046122a0565b611508565b3480156106d957600080fd5b5061028c6106e8366004612504565b61157e565b600063152a902d60e11b6001600160e01b0319831614806107125750610712826115bc565b92915050565b6060606580546107279061255e565b80601f01602080910402602001604051908101604052809291908181526020018280546107539061255e565b80156107a05780601f10610775576101008083540402835291602001916107a0565b820191906000526020600020905b81548152906001019060200180831161078357829003601f168201915b5050505050905090565b60006107b58261160c565b506000908152606960205260409020546001600160a01b031690565b60006107dc82610d29565b9050806001600160a01b0316836001600160a01b03160361084e5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b038216148061086a575061086a813361067f565b6108dc5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c00006064820152608401610845565b6108e6838361166b565b505050565b600081815260cc60205260408120600201546060919063ffffffff1667ffffffffffffffff81111561091f5761091f612333565b604051908082528060200260200182016040528015610948578160200160208202803683370190505b509050600060015b60ca548110156109c357600081815260cd60205260409020548590036109b15761097981610d29565b83838151811061098b5761098b612598565b6001600160a01b0390921660209283029190910190910152816109ad816125c4565b9250505b806109bb816125c4565b915050610950565b50909392505050565b600081815260cf602090815260408083205460ce9092528220546109f091906125dd565b600083815260ce602090815260408083205460cf83528184205560cc909152902054909150610a28906001600160a01b0316826116d9565b5050565b60006001610a3960ca5490565b610a4391906125dd565b905090565b610a5233826117e6565b610a6e5760405162461bcd60e51b8152600401610845906125f4565b6108e6838383611865565b600082815260cc60209081526040808320815160e08101835281546001600160a01b031680825260018301549482019490945260029091015463ffffffff80821693830193909352640100000000810483166060830152600160401b810483166080830152600160601b8104831660a0830152600160801b900490911660c08201528291610b0d5751915060009050610b3b565b6080810151815163ffffffff90911690612710610b2a8388612642565b610b349190612677565b9350935050505b9250929050565b610b4a611a01565b6040518060e00160405280876001600160a01b03168152602001868152602001600063ffffffff1681526020018563ffffffff1681526020018463ffffffff1681526020018363ffffffff1681526020018263ffffffff1681525060cc6000610bb260cb5490565b81526020808201929092526040908101600020835181546001600160a01b039091166001600160a01b0319909116178155918301516001830155820151600290910180546060840151608085015160a086015160c09096015163ffffffff908116600160801b0263ffffffff60801b19978216600160601b0263ffffffff60601b19938316600160401b02939093166fffffffffffffffff0000000000000000199483166401000000000267ffffffffffffffff1990961692909716919091179390931791909116939093179290921792909216179055610c9260cb5490565b604080516001600160a01b03891681526020810188905263ffffffff8781168284015286811660608301528581166080830152841660a082015290517fb3131d7d301f8caeb40981cffc627b1fdf324b5e4a23845b61c1a6ad2a25f3859181900360c00190a2610d0660cb80546001019055565b505050505050565b6108e683838360405180602001604052806000815250611084565b6000818152606760205260408120546001600160a01b0316806107125760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610845565b60006001600160a01b038216610df35760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610845565b506001600160a01b031660009081526068602052604090205490565b610e17611a01565b610e216000611a5b565b565b600081815260cc60205260408120600201546060919063ffffffff1667ffffffffffffffff811115610e5757610e57612333565b604051908082528060200260200182016040528015610e80578160200160208202803683370190505b509050600060015b60ca548110156109c357600081815260cd6020526040902054859003610ed45780838381518110610ebb57610ebb612598565b602090810291909101015281610ed0816125c4565b9250505b80610ede816125c4565b915050610e88565b6060606680546107279061255e565b610a28338383611aad565b600054610100900460ff1615808015610f205750600054600160ff909116105b80610f3a5750303b158015610f3a575060005460ff166001145b610f9d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610845565b6000805460ff191660011790558015610fc0576000805461ff0019166101001790555b610fca8484611b7b565b610fd2611bac565b610fdb86611508565b81610fe586611bdb565b604051602001610ff692919061268b565b60405160208183030381529060405260c9908051906020019061101a929190611fd0565b5061102960ca80546001019055565b61103760cb80546001019055565b8015610d06576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050505050565b61108e33836117e6565b6110aa5760405162461bcd60e51b8152600401610845906125f4565b6110b684848484611cdc565b50505050565b6110c4611a01565b600091825260cc6020526040909120600201805463ffffffff909216600160801b0263ffffffff60801b19909216919091179055565b600081815260cc6020526040902060020154640100000000900463ffffffff1661115f5760405162461bcd60e51b815260206004820152601660248201527511591a5d1a5bdb88191bd95cc81b9bdd08195e1a5cdd60521b6044820152606401610845565b600081815260cc602052604090206002015463ffffffff640100000000820481169116106111d95760405162461bcd60e51b815260206004820152602160248201527f546869732065646974696f6e20697320616c726561647920736f6c64206f75746044820152601760f91b6064820152608401610845565b600081815260cc602052604090206001015434101561124c5760405162461bcd60e51b815260206004820152602960248201527f4d7573742073656e6420656e6f75676820746f207075726368617365207468656044820152681032b234ba34b7b71760b91b6064820152608401610845565b600081815260cc602052604090206002015442600160601b90910463ffffffff16106112b35760405162461bcd60e51b8152602060048201526016602482015275105d58dd1a5bdb881a185cdb89dd081cdd185c9d195960521b6044820152606401610845565b600081815260cc602052604090206002015442600160801b90910463ffffffff16116113155760405162461bcd60e51b8152602060048201526011602482015270105d58dd1a5bdb881a185cc8195b991959607a1b6044820152606401610845565b6113273361132260ca5490565b611d0f565b600081815260ce6020526040812080543492906113459084906126c6565b9091555050600081815260cc60205260408120600201805463ffffffff169161136d836126de565b91906101000a81548163ffffffff021916908363ffffffff160217905550508060cd600061139a60ca5490565b8152602081019190915260400160002055336113b560ca5490565b600083815260cc602090815260409182902060020154915163ffffffff909216825284917fe38cb07a52e5d88a83de7c9d29c2841118103e462d20f8c526b35872f9977785910160405180910390a461141260ca80546001019055565b50565b6000818152606760205260409020546060906001600160a01b03166114945760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610845565b600082815260cd602052604090205460c9906114af90611bdb565b6114b884611bdb565b6040516020016114ca9392919061279a565b6040516020818303038152906040529050919050565b606060c96040516020016114f491906127e0565b604051602081830303815290604052905090565b611510611a01565b6001600160a01b0381166115755760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610845565b61141281611a5b565b611586611a01565b600091825260cc6020526040909120600201805463ffffffff909216600160601b0263ffffffff60601b19909216919091179055565b60006001600160e01b031982166380ac58cd60e01b14806115ed57506001600160e01b03198216635b5e139f60e01b145b8061071257506301ffc9a760e01b6001600160e01b0319831614610712565b6000818152606760205260409020546001600160a01b03166114125760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610845565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906116a082610d29565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b804710156117295760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e742062616c616e636520666f722073656e640000006044820152606401610845565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611776576040519150601f19603f3d011682016040523d82523d6000602084013e61177b565b606091505b50509050806108e65760405162461bcd60e51b815260206004820152603160248201527f556e61626c6520746f2073656e642076616c75653a20726563697069656e74206044820152701b585e481a185d99481c995d995c9d1959607a1b6064820152608401610845565b6000806117f283610d29565b9050806001600160a01b0316846001600160a01b0316148061183957506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b8061185d5750836001600160a01b0316611852846107aa565b6001600160a01b0316145b949350505050565b826001600160a01b031661187882610d29565b6001600160a01b0316146118dc5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610845565b6001600160a01b03821661193e5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610845565b61194960008261166b565b6001600160a01b03831660009081526068602052604081208054600192906119729084906125dd565b90915550506001600160a01b03821660009081526068602052604081208054600192906119a09084906126c6565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6097546001600160a01b03163314610e215760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610845565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603611b0e5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610845565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600054610100900460ff16611ba25760405162461bcd60e51b815260040161084590612806565b610a288282611e51565b600054610100900460ff16611bd35760405162461bcd60e51b815260040161084590612806565b610e21611e9f565b606081600003611c025750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611c2c5780611c16816125c4565b9150611c259050600a83612677565b9150611c06565b60008167ffffffffffffffff811115611c4757611c47612333565b6040519080825280601f01601f191660200182016040528015611c71576020820181803683370190505b5090505b841561185d57611c866001836125dd565b9150611c93600a86612851565b611c9e9060306126c6565b60f81b818381518110611cb357611cb3612598565b60200101906001600160f81b031916908160001a905350611cd5600a86612677565b9450611c75565b611ce7848484611865565b611cf384848484611ecf565b6110b65760405162461bcd60e51b815260040161084590612865565b6001600160a01b038216611d655760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610845565b6000818152606760205260409020546001600160a01b031615611dca5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610845565b6001600160a01b0382166000908152606860205260408120805460019290611df39084906126c6565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600054610100900460ff16611e785760405162461bcd60e51b815260040161084590612806565b8151611e8b906065906020850190611fd0565b5080516108e6906066906020840190611fd0565b600054610100900460ff16611ec65760405162461bcd60e51b815260040161084590612806565b610e2133611a5b565b60006001600160a01b0384163b15611fc557604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611f139033908990889088906004016128b7565b6020604051808303816000875af1925050508015611f4e575060408051601f3d908101601f19168201909252611f4b918101906128f4565b60015b611fab573d808015611f7c576040519150601f19603f3d011682016040523d82523d6000602084013e611f81565b606091505b508051600003611fa35760405162461bcd60e51b815260040161084590612865565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061185d565b506001949350505050565b828054611fdc9061255e565b90600052602060002090601f016020900481019282611ffe5760008555612044565b82601f1061201757805160ff1916838001178555612044565b82800160010185558215612044579182015b82811115612044578251825591602001919060010190612029565b50612050929150612054565b5090565b5b808211156120505760008155600101612055565b6001600160e01b03198116811461141257600080fd5b60006020828403121561209157600080fd5b813561209c81612069565b9392505050565b60005b838110156120be5781810151838201526020016120a6565b838111156110b65750506000910152565b600081518084526120e78160208601602086016120a3565b601f01601f19169290920160200192915050565b60208152600061209c60208301846120cf565b60006020828403121561212057600080fd5b5035919050565b6001600160a01b038116811461141257600080fd5b6000806040838503121561214f57600080fd5b823561215a81612127565b946020939093013593505050565b6020808252825182820181905260009190848201906040850190845b818110156121a95783516001600160a01b031683529284019291840191600101612184565b50909695505050505050565b6000806000606084860312156121ca57600080fd5b83356121d581612127565b925060208401356121e581612127565b929592945050506040919091013590565b6000806040838503121561220957600080fd5b50508035926020909101359150565b803563ffffffff8116811461222c57600080fd5b919050565b60008060008060008060c0878903121561224a57600080fd5b863561225581612127565b95506020870135945061226a60408801612218565b935061227860608801612218565b925061228660808801612218565b915061229460a08801612218565b90509295509295509295565b6000602082840312156122b257600080fd5b813561209c81612127565b6020808252825182820181905260009190848201906040850190845b818110156121a9578351835292840192918401916001016122d9565b6000806040838503121561230857600080fd5b823561231381612127565b91506020830135801515811461232857600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff8084111561236457612364612333565b604051601f8501601f19908116603f0116810190828211818310171561238c5761238c612333565b816040528093508581528686860111156123a557600080fd5b858560208301376000602087830101525050509392505050565b600082601f8301126123d057600080fd5b61209c83833560208501612349565b600080600080600060a086880312156123f757600080fd5b853561240281612127565b945060208601359350604086013567ffffffffffffffff8082111561242657600080fd5b61243289838a016123bf565b9450606088013591508082111561244857600080fd5b61245489838a016123bf565b9350608088013591508082111561246a57600080fd5b50612477888289016123bf565b9150509295509295909350565b6000806000806080858703121561249a57600080fd5b84356124a581612127565b935060208501356124b581612127565b925060408501359150606085013567ffffffffffffffff8111156124d857600080fd5b8501601f810187136124e957600080fd5b6124f887823560208401612349565b91505092959194509250565b6000806040838503121561251757600080fd5b8235915061252760208401612218565b90509250929050565b6000806040838503121561254357600080fd5b823561254e81612127565b9150602083013561232881612127565b600181811c9082168061257257607f821691505b60208210810361259257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016125d6576125d66125ae565b5060010190565b6000828210156125ef576125ef6125ae565b500390565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b600081600019048311821515161561265c5761265c6125ae565b500290565b634e487b7160e01b600052601260045260246000fd5b60008261268657612686612661565b500490565b6000835161269d8184602088016120a3565b8351908301906126b18183602088016120a3565b602f60f81b9101908152600101949350505050565b600082198211156126d9576126d96125ae565b500190565b600063ffffffff8083168181036126f7576126f76125ae565b6001019392505050565b8054600090600181811c908083168061271b57607f831692505b6020808410820361273c57634e487b7160e01b600052602260045260246000fd5b81801561275057600181146127615761278e565b60ff1986168952848901965061278e565b60008881526020902060005b868110156127865781548b82015290850190830161276d565b505084890196505b50505050505092915050565b60006127a68286612701565b84516127b68183602089016120a3565b602f60f81b910190815283516127d38160018401602088016120a3565b0160010195945050505050565b60006127ec8284612701565b691cdd1bdc99599c9bdb9d60b21b8152600a019392505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008261286057612860612661565b500690565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906128ea908301846120cf565b9695505050505050565b60006020828403121561290657600080fd5b815161209c8161206956fea264697066735822122024e460b7ef6f039786f77f92a66849ce602649c95f52edb798ce37fb077da5ff64736f6c634300080e0033608060405234801561001057600080fd5b506040516104e43803806104e483398101604081905261002f91610151565b61003833610047565b61004181610097565b50610181565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6100aa8161014260201b6101a01760201c565b6101205760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03163b151590565b60006020828403121561016357600080fd5b81516001600160a01b038116811461017a57600080fd5b9392505050565b610354806101906000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102ee565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102ee565b610122565b6100ce6101af565b6100d781610209565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101af565b610120600061029e565b565b61012a6101af565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161029e565b50565b6001600160a01b03163b151590565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61027c5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561030057600080fd5b81356001600160a01b038116811461031757600080fd5b939250505056fea26469706673582212200161857cda49eef0ab7ffbf7c954ad8941a4d6737ea56fbe0bccb90fd0c5769a64736f6c634300080e0033360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220b6235d87ecd225dd61ef3be564a9f4f0c63d4640a663e7e89c1d926d730367c064736f6c634300080e0033",
  "deployedBytecode": "0x608060405260043610620000fb5760003560e01c80637e2ec6d01162000095578063e6adabfd1162000060578063e6adabfd146200027b578063f2fde38b14620002a0578063f851a44014620002c5578063fa4d280c14620002e757600080fd5b80637e2ec6d014620001fc5780638129fc1c146200021e5780638da5cb5b1462000236578063b16a43f0146200025657600080fd5b80634f1ef28611620000d65780634f1ef286146200019057806352d1902d14620001a7578063704b6c0214620001bf578063715018a614620001e457600080fd5b8063233654eb14620001005780633644e51514620001425780633659cfe61462000169575b600080fd5b3480156200010d57600080fd5b50620001256200011f36600462001612565b6200031d565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156200014f57600080fd5b506200015a60cb5481565b60405190815260200162000139565b3480156200017657600080fd5b506200018e62000188366004620016ef565b620004ea565b005b6200018e620001a13660046200170d565b620005d5565b348015620001b457600080fd5b506200015a620006b1565b348015620001cc57600080fd5b506200018e620001de366004620016ef565b62000767565b348015620001f157600080fd5b506200018e620007f3565b3480156200020957600080fd5b5060cc5462000125906001600160a01b031681565b3480156200022b57600080fd5b506200018e6200080b565b3480156200024357600080fd5b506097546001600160a01b031662000125565b3480156200026357600080fd5b50620001256200027536600462001776565b62000a7a565b3480156200028857600080fd5b50620001256200029a36600462001790565b62000aa5565b348015620002ad57600080fd5b506200018e620002bf366004620016ef565b62000bdb565b348015620002d257600080fd5b5060ca5462000125906001600160a01b031681565b348015620002f457600080fd5b506200015a7f5925e35aebbeb7738ae3e97ad24e3b4cc09001c8668d81f3365213a0ec1e85b281565b60ca546000906001600160a01b031662000338878762000aa5565b6001600160a01b031614620003945760405162461bcd60e51b815260206004820152601f60248201527f696e76616c696420617574686f72697a6174696f6e207369676e61747572650060448201526064015b60405180910390fd5b60cc546000906001600160a01b031663055fe41d60e51b33620003b660c95490565b888888604051602401620003cf95949392919062001833565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516200040e90620014ed565b6200041b92919062001892565b604051809103906000f08015801562000438573d6000803e3d6000fd5b5060cd80546001810182556000919091527f83978b4c69c48dd978ab43fe30f077615294f938fb7f936d9eb340e51ea7db2e0180546001600160a01b0383166001600160a01b031990911681179091559091507f23748b43b77f98380e738976c6324996908ffc1989994dd3c68631c87a65a7c0620004b660c95490565b8787604051620004c993929190620018c0565b60405180910390a2620004e060c980546001019055565b9695505050505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003620005355760405162461bcd60e51b81526004016200038b90620018ef565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166200058060008051602062005157833981519152546001600160a01b031690565b6001600160a01b031614620005a95760405162461bcd60e51b81526004016200038b906200193b565b620005b48162000c57565b60408051600080825260208201909252620005d29183919062000c61565b50565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003620006205760405162461bcd60e51b81526004016200038b90620018ef565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166200066b60008051602062005157833981519152546001600160a01b031690565b6001600160a01b031614620006945760405162461bcd60e51b81526004016200038b906200193b565b6200069f8262000c57565b620006ad8282600162000c61565b5050565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614620007535760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016200038b565b506000805160206200515783398151915290565b6097546001600160a01b03163314806200078b575060ca546001600160a01b031633145b620007d15760405162461bcd60e51b815260206004820152601560248201527434b73b30b634b21030baba3437b934bd30ba34b7b760591b60448201526064016200038b565b60ca80546001600160a01b0319166001600160a01b0392909216919091179055565b620007fd62000dde565b62000809600062000e3a565b565b600054610100900460ff16158080156200082c5750600054600160ff909116105b80620008485750303b15801562000848575060005460ff166001145b620008ad5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016200038b565b6000805460ff191660011790558015620008d1576000805461ff0019166101001790555b620008db62000e8c565b60ca80546001600160a01b031916331790556040516200092a907fc49a8e302e3e5d6753b2bb3dbc3c28deba5e16e2572a92aef568063c963e3465904690602001918252602082015260400190565b60408051601f1981840301815290829052805160209091012060cb556000906200095490620014fb565b604051809103906000f08015801562000971573d6000803e3d6000fd5b50604051620009809062001509565b6001600160a01b039091168152602001604051809103906000f080158015620009ad573d6000803e3d6000fd5b5060405163f2fde38b60e01b81523360048201529091506001600160a01b0382169063f2fde38b90602401600060405180830381600087803b158015620009f357600080fd5b505af115801562000a08573d6000803e3d6000fd5b505060cc80546001600160a01b0319166001600160a01b038516179055505060c980546001019055508015620005d2576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b60cd818154811062000a8b57600080fd5b6000918252602090912001546001600160a01b0316905081565b60ca546000906001600160a01b031662000afa5760405162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081b9bdd08195b98589b1959605a1b60448201526064016200038b565b60cb54604080517f5925e35aebbeb7738ae3e97ad24e3b4cc09001c8668d81f3365213a0ec1e85b260208201523391810191909152600091906060016040516020818303038152906040528051906020012060405160200162000b7492919061190160f01b81526002810192909252602282015260420190565b604051602081830303815290604052805190602001209050600062000bd285858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250869392505062000f049050565b95945050505050565b62000be562000dde565b6001600160a01b03811662000c4c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016200038b565b620005d28162000e3a565b620005d262000dde565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161562000c9c5762000c978362000f2c565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801562000cf9575060408051601f3d908101601f1916820190925262000cf69181019062001987565b60015b62000d5e5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016200038b565b60008051602062005157833981519152811462000dd05760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016200038b565b5062000c9783838362000fcb565b6097546001600160a01b03163314620008095760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016200038b565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff1662000ef95760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016200038b565b620008093362000e3a565b600080600062000f15858562000ffc565b9150915062000f248162001072565b509392505050565b6001600160a01b0381163b62000f9b5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016200038b565b6000805160206200515783398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b62000fd68362001240565b60008251118062000fe45750805b1562000c975762000ff6838362001282565b50505050565b6000808251604103620010365760208301516040840151606085015160001a620010298782858562001376565b945094505050506200106b565b8251604003620010635760208301516040840151620010578683836200146b565b9350935050506200106b565b506000905060025b9250929050565b6000816004811115620010895762001089620019a1565b03620010925750565b6001816004811115620010a957620010a9620019a1565b03620010f85760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016200038b565b60028160048111156200110f576200110f620019a1565b036200115e5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016200038b565b6003816004811115620011755762001175620019a1565b03620011cf5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016200038b565b6004816004811115620011e657620011e6620019a1565b03620005d25760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016200038b565b6200124b8162000f2c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b620012ec5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016200038b565b600080846001600160a01b031684604051620013099190620019b7565b600060405180830381855af49150503d806000811462001346576040519150601f19603f3d011682016040523d82523d6000602084013e6200134b565b606091505b509150915062000bd282826040518060600160405280602781526020016200517760279139620014a8565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115620013af575060009050600362001462565b8460ff16601b14158015620013c857508460ff16601c14155b15620013db575060009050600462001462565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801562001430573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166200145b5760006001925092505062001462565b9150600090505b94509492505050565b6000806001600160ff1b038316816200148a60ff86901c601b620019d5565b90506200149a8782888562001376565b935093505050935093915050565b60608315620014b9575081620014e6565b825115620014ca5782518084602001fd5b8160405162461bcd60e51b81526004016200038b9190620019fc565b9392505050565b6108fa8062001a1283390190565b612967806200230c83390190565b6104e48062004c7383390190565b60008083601f8401126200152a57600080fd5b50813567ffffffffffffffff8111156200154357600080fd5b6020830191508360208285010111156200106b57600080fd5b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156200159057620015906200155c565b604051601f8501601f19908116603f01168101908282118183101715620015bb57620015bb6200155c565b81604052809350858152868686011115620015d557600080fd5b858560208301376000602087830101525050509392505050565b600082601f8301126200160157600080fd5b620014e68383356020850162001572565b6000806000806000608086880312156200162b57600080fd5b853567ffffffffffffffff808211156200164457600080fd5b6200165289838a0162001517565b909750955060208801359150808211156200166c57600080fd5b6200167a89838a01620015ef565b945060408801359150808211156200169157600080fd5b6200169f89838a01620015ef565b93506060880135915080821115620016b657600080fd5b50620016c588828901620015ef565b9150509295509295909350565b80356001600160a01b0381168114620016ea57600080fd5b919050565b6000602082840312156200170257600080fd5b620014e682620016d2565b600080604083850312156200172157600080fd5b6200172c83620016d2565b9150602083013567ffffffffffffffff8111156200174957600080fd5b8301601f810185136200175b57600080fd5b6200176c8582356020840162001572565b9150509250929050565b6000602082840312156200178957600080fd5b5035919050565b60008060208385031215620017a457600080fd5b823567ffffffffffffffff811115620017bc57600080fd5b620017ca8582860162001517565b90969095509350505050565b60005b83811015620017f3578181015183820152602001620017d9565b8381111562000ff65750506000910152565b600081518084526200181f816020860160208601620017d6565b601f01601f19169290920160200192915050565b60018060a01b038616815284602082015260a0604082015260006200185c60a083018662001805565b828103606084015262001870818662001805565b9050828103608084015262001886818562001805565b98975050505050505050565b6001600160a01b0383168152604060208201819052600090620018b89083018462001805565b949350505050565b838152606060208201526000620018db606083018562001805565b8281036040840152620004e0818562001805565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6000602082840312156200199a57600080fd5b5051919050565b634e487b7160e01b600052602160045260246000fd5b60008251620019cb818460208701620017d6565b9190910192915050565b60008219821115620019f757634e487b7160e01b600052601160045260246000fd5b500190565b602081526000620014e660208301846200180556fe60806040526040516108fa3803806108fa83398101604081905261002291610456565b61002e82826000610035565b5050610580565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610516565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610516565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108d3602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b60606001600160a01b0384163b6103495760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610169565b600080856001600160a01b0316856040516103649190610531565b600060405180830381855af49150503d806000811461039f576040519150601f19603f3d011682016040523d82523d6000602084013e6103a4565b606091505b5090925090506103b58282866103bf565b9695505050505050565b606083156103ce5750816102c8565b8251156103de5782518084602001fd5b8160405162461bcd60e51b8152600401610169919061054d565b80516001600160a01b038116811461040f57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044557818101518382015260200161042d565b838111156100f95750506000910152565b6000806040838503121561046957600080fd5b610472836103f8565b60208401519092506001600160401b038082111561048f57600080fd5b818501915085601f8301126104a357600080fd5b8151818111156104b5576104b5610414565b604051601f8201601f19908116603f011681019083821181831017156104dd576104dd610414565b816040528281528860208487010111156104f657600080fd5b61050783602083016020880161042a565b80955050505050509250929050565b60006020828403121561052857600080fd5b6102c8826103f8565b6000825161054381846020870161042a565b9190910192915050565b602081526000825180602084015261056c81604085016020870161042a565b601f01601f19169190910160400192915050565b6103448061058f6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102e860279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb919061023f565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b60606001600160a01b0384163b6101915760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b0316856040516101ac9190610298565b600060405180830381855af49150503d80600081146101e7576040519150601f19603f3d011682016040523d82523d6000602084013e6101ec565b606091505b50915091506101fc828286610206565b9695505050505050565b6060831561021557508161004e565b8251156102255782518084602001fd5b8160405162461bcd60e51b815260040161018891906102b4565b60006020828403121561025157600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028357818101518382015260200161026b565b83811115610292576000848401525b50505050565b600082516102aa818460208701610268565b9190910192915050565b60208152600082518060208401526102d3816040850160208701610268565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212209edd394a164f4df235ebb5c07889d2d9b73cdcabc3f96db3749d3815d01ead7964736f6c634300080e0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564608060405234801561001057600080fd5b50612947806100206000396000f3fe6080604052600436106101d85760003560e01c8063715018a611610102578063bd8616ec11610095578063e8a3d48511610064578063e8a3d4851461064f578063e985e9c514610664578063f2fde38b146106ad578063fbab9e04146106cd57600080fd5b8063bd8616ec146105c2578063c87b56dd146105d5578063d3bb0528146105f5578063e1a3d5731461062257600080fd5b8063a22cb465116100d1578063a22cb46514610542578063abfc83a014610562578063b88d4fde14610582578063bb314ca1146105a257600080fd5b8063715018a6146104cd57806374e79189146104e25780638da5cb5b1461050f57806395d89b411461052d57600080fd5b806323b872dd1161017a57806342842e0e1161014957806342842e0e14610440578063602787ed146104605780636352211e1461048d57806370a08231146104ad57600080fd5b806323b872dd146102fe578063279c806e1461031e5780632a55205a146103e15780633fafef291461042057600080fd5b8063095ea7b3116101b6578063095ea7b31461026c57806313dd29601461028e578063155dd5ee146102bb57806318160ddd146102db57600080fd5b806301ffc9a7146101dd57806306fdde0314610212578063081812fc14610234575b600080fd5b3480156101e957600080fd5b506101fd6101f836600461207f565b6106ed565b60405190151581526020015b60405180910390f35b34801561021e57600080fd5b50610227610718565b60405161020991906120fb565b34801561024057600080fd5b5061025461024f36600461210e565b6107aa565b6040516001600160a01b039091168152602001610209565b34801561027857600080fd5b5061028c61028736600461213c565b6107d1565b005b34801561029a57600080fd5b506102ae6102a936600461210e565b6108eb565b6040516102099190612168565b3480156102c757600080fd5b5061028c6102d636600461210e565b6109cc565b3480156102e757600080fd5b506102f0610a2c565b604051908152602001610209565b34801561030a57600080fd5b5061028c6103193660046121b5565b610a48565b34801561032a57600080fd5b5061039561033936600461210e565b60cc602052600090815260409020805460018201546002909201546001600160a01b03909116919063ffffffff808216916401000000008104821691600160401b8204811691600160601b8104821691600160801b9091041687565b604080516001600160a01b039098168852602088019690965263ffffffff94851695870195909552918316606086015282166080850152811660a08401521660c082015260e001610209565b3480156103ed57600080fd5b506104016103fc3660046121f6565b610a79565b604080516001600160a01b039093168352602083019190915201610209565b34801561042c57600080fd5b5061028c61043b366004612231565b610b42565b34801561044c57600080fd5b5061028c61045b3660046121b5565b610d0e565b34801561046c57600080fd5b506102f061047b36600461210e565b60cd6020526000908152604090205481565b34801561049957600080fd5b506102546104a836600461210e565b610d29565b3480156104b957600080fd5b506102f06104c83660046122a0565b610d89565b3480156104d957600080fd5b5061028c610e0f565b3480156104ee57600080fd5b506105026104fd36600461210e565b610e23565b60405161020991906122bd565b34801561051b57600080fd5b506097546001600160a01b0316610254565b34801561053957600080fd5b50610227610ee6565b34801561054e57600080fd5b5061028c61055d3660046122f5565b610ef5565b34801561056e57600080fd5b5061028c61057d3660046123df565b610f00565b34801561058e57600080fd5b5061028c61059d366004612484565b611084565b3480156105ae57600080fd5b5061028c6105bd366004612504565b6110bc565b61028c6105d036600461210e565b6110fa565b3480156105e157600080fd5b506102276105f036600461210e565b611415565b34801561060157600080fd5b506102f061061036600461210e565b60cf6020526000908152604090205481565b34801561062e57600080fd5b506102f061063d36600461210e565b60ce6020526000908152604090205481565b34801561065b57600080fd5b506102276114e0565b34801561067057600080fd5b506101fd61067f366004612530565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b3480156106b957600080fd5b5061028c6106c83660046122a0565b611508565b3480156106d957600080fd5b5061028c6106e8366004612504565b61157e565b600063152a902d60e11b6001600160e01b0319831614806107125750610712826115bc565b92915050565b6060606580546107279061255e565b80601f01602080910402602001604051908101604052809291908181526020018280546107539061255e565b80156107a05780601f10610775576101008083540402835291602001916107a0565b820191906000526020600020905b81548152906001019060200180831161078357829003601f168201915b5050505050905090565b60006107b58261160c565b506000908152606960205260409020546001600160a01b031690565b60006107dc82610d29565b9050806001600160a01b0316836001600160a01b03160361084e5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b038216148061086a575061086a813361067f565b6108dc5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c00006064820152608401610845565b6108e6838361166b565b505050565b600081815260cc60205260408120600201546060919063ffffffff1667ffffffffffffffff81111561091f5761091f612333565b604051908082528060200260200182016040528015610948578160200160208202803683370190505b509050600060015b60ca548110156109c357600081815260cd60205260409020548590036109b15761097981610d29565b83838151811061098b5761098b612598565b6001600160a01b0390921660209283029190910190910152816109ad816125c4565b9250505b806109bb816125c4565b915050610950565b50909392505050565b600081815260cf602090815260408083205460ce9092528220546109f091906125dd565b600083815260ce602090815260408083205460cf83528184205560cc909152902054909150610a28906001600160a01b0316826116d9565b5050565b60006001610a3960ca5490565b610a4391906125dd565b905090565b610a5233826117e6565b610a6e5760405162461bcd60e51b8152600401610845906125f4565b6108e6838383611865565b600082815260cc60209081526040808320815160e08101835281546001600160a01b031680825260018301549482019490945260029091015463ffffffff80821693830193909352640100000000810483166060830152600160401b810483166080830152600160601b8104831660a0830152600160801b900490911660c08201528291610b0d5751915060009050610b3b565b6080810151815163ffffffff90911690612710610b2a8388612642565b610b349190612677565b9350935050505b9250929050565b610b4a611a01565b6040518060e00160405280876001600160a01b03168152602001868152602001600063ffffffff1681526020018563ffffffff1681526020018463ffffffff1681526020018363ffffffff1681526020018263ffffffff1681525060cc6000610bb260cb5490565b81526020808201929092526040908101600020835181546001600160a01b039091166001600160a01b0319909116178155918301516001830155820151600290910180546060840151608085015160a086015160c09096015163ffffffff908116600160801b0263ffffffff60801b19978216600160601b0263ffffffff60601b19938316600160401b02939093166fffffffffffffffff0000000000000000199483166401000000000267ffffffffffffffff1990961692909716919091179390931791909116939093179290921792909216179055610c9260cb5490565b604080516001600160a01b03891681526020810188905263ffffffff8781168284015286811660608301528581166080830152841660a082015290517fb3131d7d301f8caeb40981cffc627b1fdf324b5e4a23845b61c1a6ad2a25f3859181900360c00190a2610d0660cb80546001019055565b505050505050565b6108e683838360405180602001604052806000815250611084565b6000818152606760205260408120546001600160a01b0316806107125760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610845565b60006001600160a01b038216610df35760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610845565b506001600160a01b031660009081526068602052604090205490565b610e17611a01565b610e216000611a5b565b565b600081815260cc60205260408120600201546060919063ffffffff1667ffffffffffffffff811115610e5757610e57612333565b604051908082528060200260200182016040528015610e80578160200160208202803683370190505b509050600060015b60ca548110156109c357600081815260cd6020526040902054859003610ed45780838381518110610ebb57610ebb612598565b602090810291909101015281610ed0816125c4565b9250505b80610ede816125c4565b915050610e88565b6060606680546107279061255e565b610a28338383611aad565b600054610100900460ff1615808015610f205750600054600160ff909116105b80610f3a5750303b158015610f3a575060005460ff166001145b610f9d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610845565b6000805460ff191660011790558015610fc0576000805461ff0019166101001790555b610fca8484611b7b565b610fd2611bac565b610fdb86611508565b81610fe586611bdb565b604051602001610ff692919061268b565b60405160208183030381529060405260c9908051906020019061101a929190611fd0565b5061102960ca80546001019055565b61103760cb80546001019055565b8015610d06576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050505050565b61108e33836117e6565b6110aa5760405162461bcd60e51b8152600401610845906125f4565b6110b684848484611cdc565b50505050565b6110c4611a01565b600091825260cc6020526040909120600201805463ffffffff909216600160801b0263ffffffff60801b19909216919091179055565b600081815260cc6020526040902060020154640100000000900463ffffffff1661115f5760405162461bcd60e51b815260206004820152601660248201527511591a5d1a5bdb88191bd95cc81b9bdd08195e1a5cdd60521b6044820152606401610845565b600081815260cc602052604090206002015463ffffffff640100000000820481169116106111d95760405162461bcd60e51b815260206004820152602160248201527f546869732065646974696f6e20697320616c726561647920736f6c64206f75746044820152601760f91b6064820152608401610845565b600081815260cc602052604090206001015434101561124c5760405162461bcd60e51b815260206004820152602960248201527f4d7573742073656e6420656e6f75676820746f207075726368617365207468656044820152681032b234ba34b7b71760b91b6064820152608401610845565b600081815260cc602052604090206002015442600160601b90910463ffffffff16106112b35760405162461bcd60e51b8152602060048201526016602482015275105d58dd1a5bdb881a185cdb89dd081cdd185c9d195960521b6044820152606401610845565b600081815260cc602052604090206002015442600160801b90910463ffffffff16116113155760405162461bcd60e51b8152602060048201526011602482015270105d58dd1a5bdb881a185cc8195b991959607a1b6044820152606401610845565b6113273361132260ca5490565b611d0f565b600081815260ce6020526040812080543492906113459084906126c6565b9091555050600081815260cc60205260408120600201805463ffffffff169161136d836126de565b91906101000a81548163ffffffff021916908363ffffffff160217905550508060cd600061139a60ca5490565b8152602081019190915260400160002055336113b560ca5490565b600083815260cc602090815260409182902060020154915163ffffffff909216825284917fe38cb07a52e5d88a83de7c9d29c2841118103e462d20f8c526b35872f9977785910160405180910390a461141260ca80546001019055565b50565b6000818152606760205260409020546060906001600160a01b03166114945760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610845565b600082815260cd602052604090205460c9906114af90611bdb565b6114b884611bdb565b6040516020016114ca9392919061279a565b6040516020818303038152906040529050919050565b606060c96040516020016114f491906127e0565b604051602081830303815290604052905090565b611510611a01565b6001600160a01b0381166115755760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610845565b61141281611a5b565b611586611a01565b600091825260cc6020526040909120600201805463ffffffff909216600160601b0263ffffffff60601b19909216919091179055565b60006001600160e01b031982166380ac58cd60e01b14806115ed57506001600160e01b03198216635b5e139f60e01b145b8061071257506301ffc9a760e01b6001600160e01b0319831614610712565b6000818152606760205260409020546001600160a01b03166114125760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610845565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906116a082610d29565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b804710156117295760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e742062616c616e636520666f722073656e640000006044820152606401610845565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611776576040519150601f19603f3d011682016040523d82523d6000602084013e61177b565b606091505b50509050806108e65760405162461bcd60e51b815260206004820152603160248201527f556e61626c6520746f2073656e642076616c75653a20726563697069656e74206044820152701b585e481a185d99481c995d995c9d1959607a1b6064820152608401610845565b6000806117f283610d29565b9050806001600160a01b0316846001600160a01b0316148061183957506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b8061185d5750836001600160a01b0316611852846107aa565b6001600160a01b0316145b949350505050565b826001600160a01b031661187882610d29565b6001600160a01b0316146118dc5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610845565b6001600160a01b03821661193e5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610845565b61194960008261166b565b6001600160a01b03831660009081526068602052604081208054600192906119729084906125dd565b90915550506001600160a01b03821660009081526068602052604081208054600192906119a09084906126c6565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6097546001600160a01b03163314610e215760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610845565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603611b0e5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610845565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600054610100900460ff16611ba25760405162461bcd60e51b815260040161084590612806565b610a288282611e51565b600054610100900460ff16611bd35760405162461bcd60e51b815260040161084590612806565b610e21611e9f565b606081600003611c025750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611c2c5780611c16816125c4565b9150611c259050600a83612677565b9150611c06565b60008167ffffffffffffffff811115611c4757611c47612333565b6040519080825280601f01601f191660200182016040528015611c71576020820181803683370190505b5090505b841561185d57611c866001836125dd565b9150611c93600a86612851565b611c9e9060306126c6565b60f81b818381518110611cb357611cb3612598565b60200101906001600160f81b031916908160001a905350611cd5600a86612677565b9450611c75565b611ce7848484611865565b611cf384848484611ecf565b6110b65760405162461bcd60e51b815260040161084590612865565b6001600160a01b038216611d655760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610845565b6000818152606760205260409020546001600160a01b031615611dca5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610845565b6001600160a01b0382166000908152606860205260408120805460019290611df39084906126c6565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600054610100900460ff16611e785760405162461bcd60e51b815260040161084590612806565b8151611e8b906065906020850190611fd0565b5080516108e6906066906020840190611fd0565b600054610100900460ff16611ec65760405162461bcd60e51b815260040161084590612806565b610e2133611a5b565b60006001600160a01b0384163b15611fc557604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611f139033908990889088906004016128b7565b6020604051808303816000875af1925050508015611f4e575060408051601f3d908101601f19168201909252611f4b918101906128f4565b60015b611fab573d808015611f7c576040519150601f19603f3d011682016040523d82523d6000602084013e611f81565b606091505b508051600003611fa35760405162461bcd60e51b815260040161084590612865565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061185d565b506001949350505050565b828054611fdc9061255e565b90600052602060002090601f016020900481019282611ffe5760008555612044565b82601f1061201757805160ff1916838001178555612044565b82800160010185558215612044579182015b82811115612044578251825591602001919060010190612029565b50612050929150612054565b5090565b5b808211156120505760008155600101612055565b6001600160e01b03198116811461141257600080fd5b60006020828403121561209157600080fd5b813561209c81612069565b9392505050565b60005b838110156120be5781810151838201526020016120a6565b838111156110b65750506000910152565b600081518084526120e78160208601602086016120a3565b601f01601f19169290920160200192915050565b60208152600061209c60208301846120cf565b60006020828403121561212057600080fd5b5035919050565b6001600160a01b038116811461141257600080fd5b6000806040838503121561214f57600080fd5b823561215a81612127565b946020939093013593505050565b6020808252825182820181905260009190848201906040850190845b818110156121a95783516001600160a01b031683529284019291840191600101612184565b50909695505050505050565b6000806000606084860312156121ca57600080fd5b83356121d581612127565b925060208401356121e581612127565b929592945050506040919091013590565b6000806040838503121561220957600080fd5b50508035926020909101359150565b803563ffffffff8116811461222c57600080fd5b919050565b60008060008060008060c0878903121561224a57600080fd5b863561225581612127565b95506020870135945061226a60408801612218565b935061227860608801612218565b925061228660808801612218565b915061229460a08801612218565b90509295509295509295565b6000602082840312156122b257600080fd5b813561209c81612127565b6020808252825182820181905260009190848201906040850190845b818110156121a9578351835292840192918401916001016122d9565b6000806040838503121561230857600080fd5b823561231381612127565b91506020830135801515811461232857600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff8084111561236457612364612333565b604051601f8501601f19908116603f0116810190828211818310171561238c5761238c612333565b816040528093508581528686860111156123a557600080fd5b858560208301376000602087830101525050509392505050565b600082601f8301126123d057600080fd5b61209c83833560208501612349565b600080600080600060a086880312156123f757600080fd5b853561240281612127565b945060208601359350604086013567ffffffffffffffff8082111561242657600080fd5b61243289838a016123bf565b9450606088013591508082111561244857600080fd5b61245489838a016123bf565b9350608088013591508082111561246a57600080fd5b50612477888289016123bf565b9150509295509295909350565b6000806000806080858703121561249a57600080fd5b84356124a581612127565b935060208501356124b581612127565b925060408501359150606085013567ffffffffffffffff8111156124d857600080fd5b8501601f810187136124e957600080fd5b6124f887823560208401612349565b91505092959194509250565b6000806040838503121561251757600080fd5b8235915061252760208401612218565b90509250929050565b6000806040838503121561254357600080fd5b823561254e81612127565b9150602083013561232881612127565b600181811c9082168061257257607f821691505b60208210810361259257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016125d6576125d66125ae565b5060010190565b6000828210156125ef576125ef6125ae565b500390565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b600081600019048311821515161561265c5761265c6125ae565b500290565b634e487b7160e01b600052601260045260246000fd5b60008261268657612686612661565b500490565b6000835161269d8184602088016120a3565b8351908301906126b18183602088016120a3565b602f60f81b9101908152600101949350505050565b600082198211156126d9576126d96125ae565b500190565b600063ffffffff8083168181036126f7576126f76125ae565b6001019392505050565b8054600090600181811c908083168061271b57607f831692505b6020808410820361273c57634e487b7160e01b600052602260045260246000fd5b81801561275057600181146127615761278e565b60ff1986168952848901965061278e565b60008881526020902060005b868110156127865781548b82015290850190830161276d565b505084890196505b50505050505092915050565b60006127a68286612701565b84516127b68183602089016120a3565b602f60f81b910190815283516127d38160018401602088016120a3565b0160010195945050505050565b60006127ec8284612701565b691cdd1bdc99599c9bdb9d60b21b8152600a019392505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008261286057612860612661565b500690565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906128ea908301846120cf565b9695505050505050565b60006020828403121561290657600080fd5b815161209c8161206956fea264697066735822122024e460b7ef6f039786f77f92a66849ce602649c95f52edb798ce37fb077da5ff64736f6c634300080e0033608060405234801561001057600080fd5b506040516104e43803806104e483398101604081905261002f91610151565b61003833610047565b61004181610097565b50610181565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6100aa8161014260201b6101a01760201c565b6101205760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03163b151590565b60006020828403121561016357600080fd5b81516001600160a01b038116811461017a57600080fd5b9392505050565b610354806101906000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102ee565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102ee565b610122565b6100ce6101af565b6100d781610209565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101af565b610120600061029e565b565b61012a6101af565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161029e565b50565b6001600160a01b03163b151590565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61027c5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561030057600080fd5b81356001600160a01b038116811461031757600080fd5b939250505056fea26469706673582212200161857cda49eef0ab7ffbf7c954ad8941a4d6737ea56fbe0bccb90fd0c5769a64736f6c634300080e0033360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220b6235d87ecd225dd61ef3be564a9f4f0c63d4640a663e7e89c1d926d730367c064736f6c634300080e0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
