{
  "_format": "hh-sol-artifact-1",
  "contractName": "NiftyswapFactory",
  "sourceName": "contracts/exchange/NiftyswapFactory.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "currency",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "currencyID",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "exchange",
          "type": "address"
        }
      ],
      "name": "NewExchange",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_currency",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_currencyID",
          "type": "uint256"
        }
      ],
      "name": "createExchange",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "tokensToExchange",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50615875806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80631427474c1461003b5780638359289c146100a7575b600080fd5b61007e6004803603606081101561005157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356100ec565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100ea600480360360608110156100bd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610124565b005b6000602081815293815260408082208552928152828120909352825290205473ffffffffffffffffffffffffffffffffffffffff1681565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152602081815260408083208685168452825280832085845290915290205416156101b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260398152602001806158076039913960400191505060405180910390fd5b60008383836040516101c6906102cd565b808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051809103906000f080158015610226573d6000803e3d6000fd5b5073ffffffffffffffffffffffffffffffffffffffff85811660008181526020818152604080832089861680855290835281842089855283529281902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169587169586179055805194855251949550869491937f23658fa6d505b3e3034045b3937d4239cbdaa345bfb0c4a2d6637ade8b85457c929081900390910190a450505050565b61552c806102db8339019056fe60806040523480156200001157600080fd5b506040516200552c3803806200552c83398101604081905262000034916200011f565b6000805460ff191660011790556001600160a01b038316158015906200006257506001600160a01b03821615155b6200008a5760405162461bcd60e51b815260040162000081906200015f565b60405180910390fd5b600580546001600160a01b03199081163317909155600380546001600160a01b03868116918416821790925560048054928616929093168217909255600683905514620000d9576000620000dc565b60015b60048054911515600160a01b0260ff60a01b1990921691909117905550620001aa915050565b80516001600160a01b03811681146200011a57600080fd5b919050565b60008060006060848603121562000134578283fd5b6200013f8462000102565b92506200014f6020850162000102565b9150604084015190509250925092565b6020808252602b908201527f4e696674797377617045786368616e676523636f6e7374727563746f723a494e60408201526a159053125117d25394155560aa1b606082015260800190565b61537280620001ba6000396000f3fe608060405234801561001057600080fd5b50600436106101355760003560e01c8063863ed300116100b2578063be57146811610081578063f23a6e6111610066578063f23a6e61146102c6578063f242432a146102d9578063fca16c3b146102ec57610135565b8063be571468146102a0578063e985e9c5146102b357610135565b8063863ed30014610252578063a22cb46514610265578063a9c2e36c14610278578063bc197c811461028057610135565b80632bef5e381161010957806346adf5ca116100ee57806346adf5ca146102165780634e1273f41461022c5780636ee8e1341461023f57610135565b80632bef5e38146101ee5780632eb2c2d61461020157610135565b8062fdd58e1461017057806301ffc9a71461019957806310fe9ae8146101b9578063209b96c5146101ce575b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614bd0565b60405180910390fd5b61018361017e366004613da5565b6102ff565b60405161019091906150b0565b60405180910390f35b6101ac6101a7366004613f77565b610337565b6040516101909190614540565b6101c161041e565b60405161019091906142ed565b6101e16101dc366004613e93565b61043a565b60405161019091906144f4565b6101e16101fc366004613e93565b6104db565b61021461020f366004613c63565b610573565b005b61021e61067e565b604051610190929190614461565b6101e161023a366004613dd0565b61069f565b61018361024d366004614288565b6107ec565b6101e1610260366004613ed3565b610880565b610214610273366004613d74565b6109e3565b6101c1610a7c565b61029361028e366004613c63565b610a98565b604051610190919061454b565b6101e16102ae366004613ed3565b61110f565b6101ac6102c1366004613c2b565b611267565b6102936102d4366004613d0d565b6112a2565b6102146102e7366004613d0d565b6113d3565b6101836102fa366004614288565b6114d7565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602090815260408083208484529091529020545b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a70000000000000000000000000000000000000000000000000000000014806103ca57507fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a2600000000000000000000000000000000000000000000000000000000145b8061041657507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b90505b919050565b60035473ffffffffffffffffffffffffffffffffffffffff1690565b606081818167ffffffffffffffff8111801561045557600080fd5b5060405190808252806020026020018201604052801561047f578160200160208202803683370190505b50905060005b828110156104d2576008600087878481811061049d57fe5b905060200201358152602001908152602001600020548282815181106104bf57fe5b6020908102919091010152600101610485565b50949350505050565b606081818167ffffffffffffffff811180156104f657600080fd5b50604051908082528060200260200182016040528015610520578160200160208202803683370190505b50905060005b828110156104d2576007600087878481811061053e57fe5b9050602002013581526020019081526020016000205482828151811061056057fe5b6020908102919091010152600101610526565b3373ffffffffffffffffffffffffffffffffffffffff8616148061059c575061059c8533611267565b6105f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180615265602f913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841661065d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806151d96030913960400191505060405180910390fd5b61066985858585611556565b610677858585855a86611880565b5050505050565b60045460065473ffffffffffffffffffffffffffffffffffffffff90911691565b606081518351146106fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180615239602c913960400191505060405180910390fd5b6060835167ffffffffffffffff8111801561071557600080fd5b5060405190808252806020026020018201604052801561073f578160200160208202803683370190505b50905060005b84518110156107e4576001600086838151811061075e57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008583815181106107ae57fe5b60200260200101518152602001908152602001600020548282815181106107d157fe5b6020908102919091010152600101610745565b509392505050565b600080831180156107fd5750600082115b610833576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614f73565b6000610841856103e3611af7565b9050600061084f8285611af7565b9050600061086983610863886103e8611af7565b90611b87565b905080828161087457fe5b04979650505050505050565b606083818167ffffffffffffffff8111801561089b57600080fd5b506040519080825280602002602001820160405280156108c5578160200160208202803683370190505b50905060005b828110156109d85760035460009073ffffffffffffffffffffffffffffffffffffffff1662fdd58e308b8b8681811061090057fe5b905060200201356040518363ffffffff1660e01b8152600401610924929190614461565b60206040518083038186803b15801561093c57600080fd5b505afa158015610950573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109749190614270565b90506109b887878481811061098557fe5b9050602002013582600860008d8d8881811061099d57fe5b905060200201358152602001908152602001600020546107ec565b8383815181106109c457fe5b6020908102919091010152506001016108cb565b509695505050505050565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b60055473ffffffffffffffffffffffffffffffffffffffff1690565b60008082806020019051810190610aaf9190613f93565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167fb2d81047000000000000000000000000000000000000000000000000000000001415610ccb5760045473ffffffffffffffffffffffffffffffffffffffff163314610b4c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101679061502d565b8451600114610b87576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101679061476f565b60065485600081518110610b9757fe5b602002602001015114610bd6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101679061468f565b610bde6139dd565b83806020019051810190610bf29190614048565b80519092506000915073ffffffffffffffffffffffffffffffffffffffff1615610c1d578151610c1f565b875b90506060610c508360200151846040015189600081518110610c3d57fe5b6020026020010151866060015186611bfb565b90508173ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fd38bc77e62e239476b3e25620d73f29a4a188e808aad79f4a81aaf44871a7a308560200151866040015185604051610cbb93929190614507565b60405180910390a35050506110e3565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fdb08ec97000000000000000000000000000000000000000000000000000000001415610e2b5760035473ffffffffffffffffffffffffffffffffffffffff163314610d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610167906149b3565b610d6e613a1b565b83806020019051810190610d8291906141d1565b80519092506000915073ffffffffffffffffffffffffffffffffffffffff1615610dad578151610daf565b875b90506060610dc888888560200151866040015186611fbf565b90508173ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167f89e4dbdd48f69e7920342e9ad9691b9a7150f254e6a0af177ccfd2556aab8bcd8a8a85604051610cbb93929190614507565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f82da2b73000000000000000000000000000000000000000000000000000000001415610f035760035473ffffffffffffffffffffffffffffffffffffffff163314610ec6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610167906146ec565b610ece613a52565b83806020019051810190610ee29190613faf565b905080915050610efd878787846000015185602001516122c9565b506110e3565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f5c0bf259000000000000000000000000000000000000000000000000000000001415610fc257333014610f86576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614af0565b610f8e613a6c565b83806020019051810190610fa29190614115565b905080915050610efd87878784600001518560200151866040015161293e565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fc8c323f90000000000000000000000000000000000000000000000000000000014156110b15760045473ffffffffffffffffffffffffffffffffffffffff16331461105d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610167906147f2565b6006548560008151811061106d57fe5b6020026020010151146110ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101679061468f565b6110e3565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614fd0565b507fbc197c81000000000000000000000000000000000000000000000000000000009695505050505050565b606083818167ffffffffffffffff8111801561112a57600080fd5b50604051908082528060200260200182016040528015611154578160200160208202803683370190505b50905060005b828110156109d85760035460009073ffffffffffffffffffffffffffffffffffffffff1662fdd58e308b8b8681811061118f57fe5b905060200201356040518363ffffffff1660e01b81526004016111b3929190614461565b60206040518083038186803b1580156111cb57600080fd5b505afa1580156111df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112039190614270565b905061124787878481811061121457fe5b90506020020135600860008c8c8781811061122b57fe5b90506020020135815260200190815260200160002054836114d7565b83838151811061125357fe5b60209081029190910101525060010161115a565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205460ff1690565b6040805160018082528183019092526000916060919060208083019080368337505060408051600180825281830190925292935060609291506020808301908036833701905050905085826000815181106112f957fe5b602002602001018181525050848160008151811061131357fe5b60200260200101818152505061132c8888848488610a98565b7fffffffff00000000000000000000000000000000000000000000000000000000167fbc197c8100000000000000000000000000000000000000000000000000000000146113a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614c2d565b507ff23a6e6100000000000000000000000000000000000000000000000000000000979650505050505050565b3373ffffffffffffffffffffffffffffffffffffffff861614806113fc57506113fc8533611267565b611451576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061517a602a913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff84166114bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b81526020018061514f602b913960400191505060405180910390fd5b6114c985858585612ea7565b610677858585855a86612faf565b600080831180156114e85750600082115b61151e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614f16565b60006115366103e86115308688611af7565b90611af7565b9050600061154a6103e361153086896131a0565b90506109d88282613217565b80518251146115b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001806151a46035913960400191505060405180910390fd5b815160005b81811015611778576116468382815181106115cc57fe5b6020026020010151600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087858151811061162157fe5b60200260200101518152602001908152602001600020546131a090919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff87166000908152600160205260408120865190919087908590811061167c57fe5b602002602001015181526020019081526020016000208190555061171f8382815181106116a557fe5b6020026020010151600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008785815181106116fa57fe5b6020026020010151815260200190815260200160002054611b8790919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff86166000908152600160205260408120865190919087908590811061175557fe5b6020908102919091018101518252810191909152604001600020556001016115b5565b508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561182557818101518382015260200161180d565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561186457818101518382015260200161184c565b5050505090500194505050505060405180910390a45050505050565b61189f8573ffffffffffffffffffffffffffffffffffffffff1661325e565b15611aef5760008573ffffffffffffffffffffffffffffffffffffffff1663bc197c8184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b8381101561195757818101518382015260200161193f565b50505050905001848103835286818151815260200191508051906020019060200280838360005b8381101561199657818101518382015260200161197e565b50505050905001848103825285818151815260200191508051906020019080838360005b838110156119d25781810151838201526020016119ba565b50505050905090810190601f1680156119ff5780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600088803b158015611a2457600080fd5b5087f1158015611a38573d6000803e3d6000fd5b50505050506040513d6020811015611a4f57600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c810000000000000000000000000000000000000000000000000000000014611aed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603f8152602001806152c4603f913960400191505060405180910390fd5b505b505050505050565b600082611b0657506000610331565b82820282848281611b1357fe5b0414611b8057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f536166654d617468236d756c3a204f564552464c4f5700000000000000000000604482015290519081900360640190fd5b9392505050565b600082820183811015611b8057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f536166654d617468236164643a204f564552464c4f5700000000000000000000604482015290519081900360640190fd5b60005460609060ff16611c6f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905542831015611cd1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614632565b8551848167ffffffffffffffff81118015611ceb57600080fd5b50604051908082528060200260200182016040528015611d15578160200160208202803683370190505b50925060608267ffffffffffffffff81118015611d3157600080fd5b50604051908082528060200260200182016040528015611d5b578160200160208202803683370190505b509050611d6789613295565b905060005b83811015611e645760008a8281518110611d8257fe5b6020026020010151905060008a8381518110611d9a57fe5b602002602001015190506000848481518110611db257fe5b6020026020010151905060008211611df6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614ce8565b60008381526008602052604081205490611e118483856114d7565b9050611e1d88826131a0565b9750808a8781518110611e2c57fe5b6020908102919091010152611e418282611b87565b60009586526008602052604090952094909455505060019092019150611d6c9050565b508115611efa57600480546006546040517ff242432a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169263f242432a92611ec79230928b9289910161441c565b600060405180830381600087803b158015611ee157600080fd5b505af1158015611ef5573d6000803e3d6000fd5b505050505b6003546040517f2eb2c2d600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690632eb2c2d690611f5690309089908e908e9060040161430e565b600060405180830381600087803b158015611f7057600080fd5b505af1158015611f84573d6000803e3d6000fd5b50505050505050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905595945050505050565b60005460609060ff1661203357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055855142841015612097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614875565b60008167ffffffffffffffff811180156120b057600080fd5b506040519080825280602002602001820160405280156120da578160200160208202803683370190505b50925060608267ffffffffffffffff811180156120f657600080fd5b50604051908082528060200260200182016040528015612120578160200160208202803683370190505b50905061212c89613295565b905060005b838110156122325760008a828151811061214757fe5b6020026020010151905060008a838151811061215f57fe5b60200260200101519050600084848151811061217757fe5b60200260200101519050600082116121bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614eb9565b600083815260086020526040812054906121df846121d985826131a0565b846107ec565b90506121eb8882611b87565b97506121f782826131a0565b600086815260086020526040902055895181908b908890811061221657fe5b6020908102919091010152505060019093019250612131915050565b508682101561226d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610167906148d2565b600480546006546040517ff242432a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169263f242432a92611f569230928b9289910161441c565b60005460ff1661233a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690554281101561239c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614d45565b8351600060608267ffffffffffffffff811180156123b957600080fd5b506040519080825280602002602001820160405280156123e3578160200160208202803683370190505b50905060608367ffffffffffffffff811180156123ff57600080fd5b50604051908082528060200260200182016040528015612429578160200160208202803683370190505b50905060608467ffffffffffffffff8111801561244557600080fd5b5060405190808252806020026020018201604052801561246f578160200160208202803683370190505b50905061247b89613295565b905060005b858110156127db5760008a828151811061249657fe5b6020026020010151905060008a83815181106124ae57fe5b6020026020010151905060008a84815181106124c657fe5b602002602001015111612505576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614578565b6000811161253f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614e5c565b60045474010000000000000000000000000000000000000000900460ff161561259e5760065482141561259e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614da2565b60008281526007602052604090205480156127145760008381526008602052604081205486519091908790879081106125d357fe5b602002602001015190506000806126056125f68588611af790919063ffffffff16565b61260085896131a0565b613217565b91509150818f898151811061261657fe5b60200260200101511015612656576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614a93565b6126608483611b87565b6000888152600860205260409020556126798c83611b87565b9b508361269c866115308461268f576000612692565b60015b869060ff166131a0565b816126a357fe5b048b89815181106126b057fe5b602002602001018181525050818a89815181106126c957fe5b6020026020010181815250506126fb8b89815181106126e457fe5b602002602001015186611b8790919063ffffffff16565b600088815260076020526040902055506127d092505050565b60008b858151811061272257fe5b60200260200101519050633b9aca0081101561276a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614a36565b60008481526008602052604090208190556127858982611b87565b6000858152600760205260409020829055885190995081908990879081106127a957fe5b602002602001018181525050808786815181106127c257fe5b602002602001018181525050505b505050600101612480565b506127f78a8a856040518060200160405280600081525061357d565b60045460065460405173ffffffffffffffffffffffffffffffffffffffff9092169163f242432a918d913091908990612854907fc8c323f9000000000000000000000000000000000000000000000000000000009060200161454b565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401612883959493929190614373565b600060405180830381600087803b15801561289d57600080fd5b505af11580156128b1573d6000803e3d6000fd5b505050508973ffffffffffffffffffffffffffffffffffffffff167f403f9dc4582dae52d3eeb4a22d37540ffb13c32d964c92ec5ac0d3d5628da3168a8a856040516128ff93929190614507565b60405180910390a25050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555050505050505050565b60005460ff166129af57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055428111612a10576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614b73565b8451600060608267ffffffffffffffff81118015612a2d57600080fd5b50604051908082528060200260200182016040528015612a57578160200160208202803683370190505b50905060608367ffffffffffffffff81118015612a7357600080fd5b50604051908082528060200260200182016040528015612a9d578160200160208202803683370190505b50905060608467ffffffffffffffff81118015612ab957600080fd5b50604051908082528060200260200182016040528015612ae3578160200160208202803683370190505b509050612aef8a613295565b905060005b85811015612cee5760008b8281518110612b0a57fe5b6020026020010151905060008b8381518110612b2257fe5b602002602001015190506000848481518110612b3a57fe5b6020026020010151905060006007600085815260200190815260200160002054905060008111612b96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610167906145d5565b6000848152600860205260408120549082612bb18684611af7565b81612bb857fe5b049050600083612bc88787611af7565b81612bcf57fe5b0490508f8881518110612bde57fe5b6020026020010151821015612c1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614c8a565b8e8881518110612c2b57fe5b6020026020010151811015612c6c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614dff565b612c7684876131a0565b600088815260076020526040902055612c8f83836131a0565b600088815260086020526040902055612ca88c83611b87565b9b50808b8981518110612cb757fe5b602002602001018181525050818a8981518110612cd057fe5b6020908102919091010152505060019095019450612af49350505050565b50612cfa308b8b6137b2565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f242432a308d600654886040518563ffffffff1660e01b8152600401612d5d949392919061441c565b600060405180830381600087803b158015612d7757600080fd5b505af1158015612d8b573d6000803e3d6000fd5b50506003546040517f2eb2c2d600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169250632eb2c2d69150612deb9030908f908f90899060040161430e565b600060405180830381600087803b158015612e0557600080fd5b505af1158015612e19573d6000803e3d6000fd5b505050508a73ffffffffffffffffffffffffffffffffffffffff167f711e9bcb94b4cf7bc99c1cb938edc75ac7e85a136838e90abf6ee1f5adebd4238b8585604051612e6793929190614507565b60405180910390a25050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600160209081526040808320858452909152902054612ee290826131a0565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600160208181526040808420888552825280842095909555928716825282528281208582529091522054612f339082611b87565b73ffffffffffffffffffffffffffffffffffffffff8085166000818152600160209081526040808320888452825291829020949094558051868152938401859052805191939288169233927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62929181900390910190a450505050565b612fce8573ffffffffffffffffffffffffffffffffffffffff1661325e565b15611aef5760008573ffffffffffffffffffffffffffffffffffffffff1663f23a6e6184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561308757818101518382015260200161306f565b50505050905090810190601f1680156130b45780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600088803b1580156130d757600080fd5b5087f11580156130eb573d6000803e3d6000fd5b50505050506040513d602081101561310257600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e610000000000000000000000000000000000000000000000000000000014611aed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180615303603a913960400191505060405180910390fd5b60008282111561321157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f536166654d617468237375623a20554e444552464c4f57000000000000000000604482015290519081900360640190fd5b50900390565b60008082848161322357fe5b06156132455761323e600184868161323757fe5b0490611b87565b6001613252565b82848161324e57fe5b0460005b915091505b9250929050565b6000813f8015801590611b8057507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470141592915050565b8051606090600181141561338957604080516001808252818301909252606091602080830190803683375050600354865192935073ffffffffffffffffffffffffffffffffffffffff169162fdd58e9150309087906000906132f357fe5b60200260200101516040518363ffffffff1660e01b8152600401613318929190614461565b60206040518083038186803b15801561333057600080fd5b505afa158015613344573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133689190614270565b8160008151811061337557fe5b602090810291909101015291506104199050565b60608167ffffffffffffffff811180156133a257600080fd5b506040519080825280602002602001820160405280156133cc578160200160208202803683370190505b50905030816000815181106133dd57fe5b73ffffffffffffffffffffffffffffffffffffffff9092166020928302919091019091015260015b828110156134a95784818151811061341957fe5b602002602001015185600183038151811061343057fe5b60200260200101511061346f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614930565b3082828151811061347c57fe5b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910190910152600101613405565b506003546040517f4e1273f400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690634e1273f4906135029084908890600401614487565b60006040518083038186803b15801561351a57600080fd5b505afa15801561352e573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526135749190810190613f3c565b92505050610419565b81518351146135d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806152946030913960400191505060405180910390fd5b825160005b818110156136a1576136488482815181106135f357fe5b6020026020010151600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008885815181106116fa57fe5b73ffffffffffffffffffffffffffffffffffffffff87166000908152600160205260408120875190919088908590811061367e57fe5b6020908102919091018101518252810191909152604001600020556001016135dc565b508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561374f578181015183820152602001613737565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561378e578181015183820152602001613776565b5050505090500194505050505060405180910390a461067760008686865a87611880565b81518151811461380d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806152096030913960400191505060405180910390fd5b60005b818110156138d55761387c83828151811061382757fe5b6020026020010151600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087858151811061162157fe5b73ffffffffffffffffffffffffffffffffffffffff8616600090815260016020526040812086519091908790859081106138b257fe5b602090810291909101810151825281019190915260400160002055600101613810565b50600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561398357818101518382015260200161396b565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156139c25781810151838201526020016139aa565b5050505090500194505050505060405180910390a450505050565b6040518060800160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016060815260200160608152602001600081525090565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b604051806040016040528060608152602001600081525090565b60405180606001604052806060815260200160608152602001600081525090565b8051610419816150fb565b60008083601f840112613aa9578081fd5b50813567ffffffffffffffff811115613ac0578182fd5b602083019150836020808302850101111561325757600080fd5b600082601f830112613aea578081fd5b8135613afd613af8826150dd565b6150b9565b818152915060208083019084810181840286018201871015613b1e57600080fd5b60005b84811015613b3d57813584529282019290820190600101613b21565b505050505092915050565b600082601f830112613b58578081fd5b8151613b66613af8826150dd565b818152915060208083019084810181840286018201871015613b8757600080fd5b60005b84811015613b3d57815184529282019290820190600101613b8a565b600082601f830112613bb6578081fd5b813567ffffffffffffffff811115613bca57fe5b613bfb60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016150b9565b9150808252836020828501011115613c1257600080fd5b8060208401602084013760009082016020015292915050565b60008060408385031215613c3d578182fd5b8235613c48816150fb565b91506020830135613c58816150fb565b809150509250929050565b600080600080600060a08688031215613c7a578081fd5b8535613c85816150fb565b94506020860135613c95816150fb565b9350604086013567ffffffffffffffff80821115613cb1578283fd5b613cbd89838a01613ada565b94506060880135915080821115613cd2578283fd5b613cde89838a01613ada565b93506080880135915080821115613cf3578283fd5b50613d0088828901613ba6565b9150509295509295909350565b600080600080600060a08688031215613d24578081fd5b8535613d2f816150fb565b94506020860135613d3f816150fb565b93506040860135925060608601359150608086013567ffffffffffffffff811115613d68578182fd5b613d0088828901613ba6565b60008060408385031215613d86578182fd5b8235613d91816150fb565b915060208301358015158114613c58578182fd5b60008060408385031215613db7578182fd5b8235613dc2816150fb565b946020939093013593505050565b60008060408385031215613de2578182fd5b823567ffffffffffffffff80821115613df9578384fd5b818501915085601f830112613e0c578384fd5b8135613e1a613af8826150dd565b80828252602080830192508086018a828387028901011115613e3a578889fd5b8896505b84871015613e65578035613e51816150fb565b845260019690960195928101928101613e3e565b509096508701359350505080821115613e7c578283fd5b50613e8985828601613ada565b9150509250929050565b60008060208385031215613ea5578182fd5b823567ffffffffffffffff811115613ebb578283fd5b613ec785828601613a98565b90969095509350505050565b60008060008060408587031215613ee8578182fd5b843567ffffffffffffffff80821115613eff578384fd5b613f0b88838901613a98565b90965094506020870135915080821115613f23578384fd5b50613f3087828801613a98565b95989497509550505050565b600060208284031215613f4d578081fd5b815167ffffffffffffffff811115613f63578182fd5b613f6f84828501613b48565b949350505050565b600060208284031215613f88578081fd5b8135611b8081615120565b600060208284031215613fa4578081fd5b8151611b8081615120565b60008060408385031215613fc1578182fd5b8251613fcc81615120565b602084015190925067ffffffffffffffff80821115613fe9578283fd5b9084019060408287031215613ffc578283fd5b60405160408101818110838211171561401157fe5b604052825182811115614022578485fd5b61402e88828601613b48565b825250602083015160208201528093505050509250929050565b6000806040838503121561405a578182fd5b825161406581615120565b602084015190925067ffffffffffffffff80821115614082578283fd5b9084019060808287031215614095578283fd5b6040516080810181811083821117156140aa57fe5b6040526140b683613a8d565b81526020830151828111156140c9578485fd5b6140d588828601613b48565b6020830152506040830151828111156140ec578485fd5b6140f888828601613b48565b604083015250606083015160608201528093505050509250929050565b60008060408385031215614127578182fd5b825161413281615120565b602084015190925067ffffffffffffffff8082111561414f578283fd5b9084019060608287031215614162578283fd5b60405160608101818110838211171561417757fe5b604052825182811115614188578485fd5b61419488828601613b48565b8252506020830151828111156141a8578485fd5b6141b488828601613b48565b602083015250604083015160408201528093505050509250929050565b60008082840360808112156141e4578283fd5b83516141ef81615120565b925060607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082011215614220578182fd5b506040516060810181811067ffffffffffffffff8211171561423e57fe5b604052602084015161424f816150fb565b81526040848101516020830152606090940151938101939093525092909150565b600060208284031215614281578081fd5b5051919050565b60008060006060848603121561429c578081fd5b505081359360208301359350604090920135919050565b6000815180845260208085019450808401835b838110156142e2578151875295820195908201906001016142c6565b509495945050505050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525060a0604083015261434760a08301856142b3565b828103606084015261435981856142b3565b838103608090940193909352508152602001949350505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835260208188168185015286604085015285606085015260a06080850152845191508160a0850152825b828110156143d35785810182015185820160c0015281016143b7565b828111156143e4578360c084870101525b5050601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160c0019695505050505050565b73ffffffffffffffffffffffffffffffffffffffff94851681529290931660208301526040820152606081019190915260a06080820181905260009082015260c00190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b604080825283519082018190526000906020906060840190828701845b828110156144d657815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016144a4565b505050838103828501526144ea81866142b3565b9695505050505050565b600060208252611b8060208301846142b3565b60006060825261451a60608301866142b3565b828103602084015261452c81866142b3565b905082810360408401526144ea81856142b3565b901515815260200190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b60208082526032908201527f4e696674797377617045786368616e6765235f6164644c69717569646974793a60408201527f204e554c4c5f4d41585f43555252454e43590000000000000000000000000000606082015260800190565b60208082526038908201527f4e696674797377617045786368616e6765235f72656d6f76654c69717569646960408201527f74793a204e554c4c5f544f54414c5f4c49515549444954590000000000000000606082015260800190565b60208082526035908201527f4e696674797377617045786368616e6765235f63757272656e6379546f546f6b60408201527f656e3a20444541444c494e455f45584345454445440000000000000000000000606082015260800190565b6020808252603d908201527f4e696674797377617045786368616e6765236f6e45524331313535426174636860408201527f52656365697665643a20494e56414c49445f43555252454e43595f4944000000606082015260800190565b60208082526043908201527f4e696674797377617045786368616e6765236f6e45524331313535426174636860408201527f52656365697665643a20494e56414c49445f544f4b454e5f5452414e5346455260608201527f5245440000000000000000000000000000000000000000000000000000000000608082015260a00190565b60208082526045908201527f4e696674797377617045786368616e6765236f6e45524331313535426174636860408201527f52656365697665643a20494e56414c49445f43555252454e43595f4944535f4160608201527f4d4f554e54000000000000000000000000000000000000000000000000000000608082015260a00190565b60208082526042908201527f4e696674797377617045786368616e6765236f6e45524331313535426174636860408201527f52656365697665643a20494e56414c49445f544f4b454e535f4445504f53495460608201527f4544000000000000000000000000000000000000000000000000000000000000608082015260a00190565b60208082526035908201527f4e696674797377617045786368616e6765235f746f6b656e546f43757272656e60408201527f63793a20444541444c494e455f45584345454445440000000000000000000000606082015260800190565b602080825260409082018190527f4e696674797377617045786368616e6765235f746f6b656e546f43757272656e908201527f63793a20494e53554646494349454e545f43555252454e43595f414d4f554e54606082015260800190565b60208082526044908201527f4e696674797377617045786368616e6765235f676574546f6b656e526573657260408201527f7665733a20554e534f525445445f4f525f4455504c49434154455f544f4b454e60608201527f5f49445300000000000000000000000000000000000000000000000000000000608082015260a00190565b60208082526044908201527f4e696674797377617045786368616e6765236f6e45524331313535426174636860408201527f52656365697665643a20494e56414c49445f544f4b454e535f5452414e53464560608201527f5252454400000000000000000000000000000000000000000000000000000000608082015260a00190565b60208082526038908201527f4e696674797377617045786368616e6765235f6164644c69717569646974793a60408201527f20494e56414c49445f43555252454e43595f414d4f554e540000000000000000606082015260800190565b6020808252603d908201527f4e696674797377617045786368616e6765235f6164644c69717569646974793a60408201527f204d41585f43555252454e43595f414d4f554e545f4558434545444544000000606082015260800190565b6020808252604a908201527f4e696674797377617045786368616e6765236f6e45524331313535426174636860408201527f52656365697665643a20494e56414c49445f4e494654595f544f4b454e535f5460608201527f52414e5346455252454400000000000000000000000000000000000000000000608082015260a00190565b60208082526035908201527f4e696674797377617045786368616e6765235f72656d6f76654c69717569646960408201527f74793a20444541444c494e455f45584345454445440000000000000000000000606082015260800190565b60208082526024908201527f4e696674797377617045786368616e67653a554e535550504f525445445f4d4560408201527f54484f4400000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252603f908201527f4e696674797377617045786368616e6765236f6e45524331313535526563656960408201527f7665643a20494e56414c49445f4f4e52454345495645445f4d45535341474500606082015260800190565b602080825260409082018190527f4e696674797377617045786368616e6765235f72656d6f76654c697175696469908201527f74793a20494e53554646494349454e545f43555252454e43595f414d4f554e54606082015260800190565b60208082526036908201527f4e696674797377617045786368616e6765235f63757272656e6379546f546f6b60408201527f656e3a204e554c4c5f544f4b454e535f424f5547485400000000000000000000606082015260800190565b60208082526032908201527f4e696674797377617045786368616e6765235f6164644c69717569646974793a60408201527f20444541444c494e455f45584345454445440000000000000000000000000000606082015260800190565b60208082526038908201527f4e696674797377617045786368616e6765235f6164644c69717569646974793a60408201527f2043555252454e43595f504f4f4c5f464f5242494444454e0000000000000000606082015260800190565b60208082526037908201527f4e696674797377617045786368616e6765235f72656d6f76654c69717569646960408201527f74793a20494e53554646494349454e545f544f4b454e53000000000000000000606082015260800190565b60208082526033908201527f4e696674797377617045786368616e6765235f6164644c69717569646974793a60408201527f204e554c4c5f544f4b454e535f414d4f554e5400000000000000000000000000606082015260800190565b60208082526034908201527f4e696674797377617045786368616e6765235f746f6b656e546f43757272656e60408201527f63793a204e554c4c5f544f4b454e535f534f4c44000000000000000000000000606082015260800190565b6020808252602c908201527f4e696674797377617045786368616e67652367657442757950726963653a204560408201527f4d5054595f524553455256450000000000000000000000000000000000000000606082015260800190565b6020808252602d908201527f4e696674797377617045786368616e67652367657453656c6c50726963653a2060408201527f454d5054595f5245534552564500000000000000000000000000000000000000606082015260800190565b60208082526038908201527f4e696674797377617045786368616e6765236f6e45524331313535426174636860408201527f52656365697665643a20494e56414c49445f4d4554484f440000000000000000606082015260800190565b60208082526046908201527f4e696674797377617045786368616e6765236f6e45524331313535426174636860408201527f52656365697665643a20494e56414c49445f43555252454e43595f5452414e5360608201527f4645525245440000000000000000000000000000000000000000000000000000608082015260a00190565b90815260200190565b60405181810167ffffffffffffffff811182821017156150d557fe5b604052919050565b600067ffffffffffffffff8211156150f157fe5b5060209081020190565b73ffffffffffffffffffffffffffffffffffffffff8116811461511d57600080fd5b50565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461511d57600080fdfe4552433131353523736166655472616e7366657246726f6d3a20494e56414c49445f524543495049454e544552433131353523736166655472616e7366657246726f6d3a20494e56414c49445f4f50455241544f5245524331313535235f7361666542617463685472616e7366657246726f6d3a20494e56414c49445f4152524159535f4c454e47544845524331313535237361666542617463685472616e7366657246726f6d3a20494e56414c49445f524543495049454e54455243313135354d696e744275726e2362617463684275726e3a20494e56414c49445f4152524159535f4c454e475448455243313135352362616c616e63654f6642617463683a20494e56414c49445f41525241595f4c454e47544845524331313535237361666542617463685472616e7366657246726f6d3a20494e56414c49445f4f50455241544f52455243313135354d696e744275726e2362617463684d696e743a20494e56414c49445f4152524159535f4c454e47544845524331313535235f63616c6c6f6e45524331313535426174636852656365697665643a20494e56414c49445f4f4e5f524543454956455f4d45535341474545524331313535235f63616c6c6f6e4552433131353552656365697665643a20494e56414c49445f4f4e5f524543454956455f4d455353414745a26469706673582212200de16fc0245d81d028816ad311c89dbbc3d6e964494193026135bf9ad24f1ca264736f6c634300070400334e6966747973776170466163746f72792363726561746545786368616e67653a2045584348414e47455f414c52454144595f43524541544544a26469706673582212204efa1c0526327dd61bbeca928a86759c98b1f1180adeed153dbab24c7082a29b64736f6c63430007040033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c80631427474c1461003b5780638359289c146100a7575b600080fd5b61007e6004803603606081101561005157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356100ec565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100ea600480360360608110156100bd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610124565b005b6000602081815293815260408082208552928152828120909352825290205473ffffffffffffffffffffffffffffffffffffffff1681565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152602081815260408083208685168452825280832085845290915290205416156101b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260398152602001806158076039913960400191505060405180910390fd5b60008383836040516101c6906102cd565b808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051809103906000f080158015610226573d6000803e3d6000fd5b5073ffffffffffffffffffffffffffffffffffffffff85811660008181526020818152604080832089861680855290835281842089855283529281902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169587169586179055805194855251949550869491937f23658fa6d505b3e3034045b3937d4239cbdaa345bfb0c4a2d6637ade8b85457c929081900390910190a450505050565b61552c806102db8339019056fe60806040523480156200001157600080fd5b506040516200552c3803806200552c83398101604081905262000034916200011f565b6000805460ff191660011790556001600160a01b038316158015906200006257506001600160a01b03821615155b6200008a5760405162461bcd60e51b815260040162000081906200015f565b60405180910390fd5b600580546001600160a01b03199081163317909155600380546001600160a01b03868116918416821790925560048054928616929093168217909255600683905514620000d9576000620000dc565b60015b60048054911515600160a01b0260ff60a01b1990921691909117905550620001aa915050565b80516001600160a01b03811681146200011a57600080fd5b919050565b60008060006060848603121562000134578283fd5b6200013f8462000102565b92506200014f6020850162000102565b9150604084015190509250925092565b6020808252602b908201527f4e696674797377617045786368616e676523636f6e7374727563746f723a494e60408201526a159053125117d25394155560aa1b606082015260800190565b61537280620001ba6000396000f3fe608060405234801561001057600080fd5b50600436106101355760003560e01c8063863ed300116100b2578063be57146811610081578063f23a6e6111610066578063f23a6e61146102c6578063f242432a146102d9578063fca16c3b146102ec57610135565b8063be571468146102a0578063e985e9c5146102b357610135565b8063863ed30014610252578063a22cb46514610265578063a9c2e36c14610278578063bc197c811461028057610135565b80632bef5e381161010957806346adf5ca116100ee57806346adf5ca146102165780634e1273f41461022c5780636ee8e1341461023f57610135565b80632bef5e38146101ee5780632eb2c2d61461020157610135565b8062fdd58e1461017057806301ffc9a71461019957806310fe9ae8146101b9578063209b96c5146101ce575b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614bd0565b60405180910390fd5b61018361017e366004613da5565b6102ff565b60405161019091906150b0565b60405180910390f35b6101ac6101a7366004613f77565b610337565b6040516101909190614540565b6101c161041e565b60405161019091906142ed565b6101e16101dc366004613e93565b61043a565b60405161019091906144f4565b6101e16101fc366004613e93565b6104db565b61021461020f366004613c63565b610573565b005b61021e61067e565b604051610190929190614461565b6101e161023a366004613dd0565b61069f565b61018361024d366004614288565b6107ec565b6101e1610260366004613ed3565b610880565b610214610273366004613d74565b6109e3565b6101c1610a7c565b61029361028e366004613c63565b610a98565b604051610190919061454b565b6101e16102ae366004613ed3565b61110f565b6101ac6102c1366004613c2b565b611267565b6102936102d4366004613d0d565b6112a2565b6102146102e7366004613d0d565b6113d3565b6101836102fa366004614288565b6114d7565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602090815260408083208484529091529020545b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a70000000000000000000000000000000000000000000000000000000014806103ca57507fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a2600000000000000000000000000000000000000000000000000000000145b8061041657507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b90505b919050565b60035473ffffffffffffffffffffffffffffffffffffffff1690565b606081818167ffffffffffffffff8111801561045557600080fd5b5060405190808252806020026020018201604052801561047f578160200160208202803683370190505b50905060005b828110156104d2576008600087878481811061049d57fe5b905060200201358152602001908152602001600020548282815181106104bf57fe5b6020908102919091010152600101610485565b50949350505050565b606081818167ffffffffffffffff811180156104f657600080fd5b50604051908082528060200260200182016040528015610520578160200160208202803683370190505b50905060005b828110156104d2576007600087878481811061053e57fe5b9050602002013581526020019081526020016000205482828151811061056057fe5b6020908102919091010152600101610526565b3373ffffffffffffffffffffffffffffffffffffffff8616148061059c575061059c8533611267565b6105f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180615265602f913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841661065d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806151d96030913960400191505060405180910390fd5b61066985858585611556565b610677858585855a86611880565b5050505050565b60045460065473ffffffffffffffffffffffffffffffffffffffff90911691565b606081518351146106fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180615239602c913960400191505060405180910390fd5b6060835167ffffffffffffffff8111801561071557600080fd5b5060405190808252806020026020018201604052801561073f578160200160208202803683370190505b50905060005b84518110156107e4576001600086838151811061075e57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008583815181106107ae57fe5b60200260200101518152602001908152602001600020548282815181106107d157fe5b6020908102919091010152600101610745565b509392505050565b600080831180156107fd5750600082115b610833576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614f73565b6000610841856103e3611af7565b9050600061084f8285611af7565b9050600061086983610863886103e8611af7565b90611b87565b905080828161087457fe5b04979650505050505050565b606083818167ffffffffffffffff8111801561089b57600080fd5b506040519080825280602002602001820160405280156108c5578160200160208202803683370190505b50905060005b828110156109d85760035460009073ffffffffffffffffffffffffffffffffffffffff1662fdd58e308b8b8681811061090057fe5b905060200201356040518363ffffffff1660e01b8152600401610924929190614461565b60206040518083038186803b15801561093c57600080fd5b505afa158015610950573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109749190614270565b90506109b887878481811061098557fe5b9050602002013582600860008d8d8881811061099d57fe5b905060200201358152602001908152602001600020546107ec565b8383815181106109c457fe5b6020908102919091010152506001016108cb565b509695505050505050565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b60055473ffffffffffffffffffffffffffffffffffffffff1690565b60008082806020019051810190610aaf9190613f93565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167fb2d81047000000000000000000000000000000000000000000000000000000001415610ccb5760045473ffffffffffffffffffffffffffffffffffffffff163314610b4c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101679061502d565b8451600114610b87576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101679061476f565b60065485600081518110610b9757fe5b602002602001015114610bd6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101679061468f565b610bde6139dd565b83806020019051810190610bf29190614048565b80519092506000915073ffffffffffffffffffffffffffffffffffffffff1615610c1d578151610c1f565b875b90506060610c508360200151846040015189600081518110610c3d57fe5b6020026020010151866060015186611bfb565b90508173ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fd38bc77e62e239476b3e25620d73f29a4a188e808aad79f4a81aaf44871a7a308560200151866040015185604051610cbb93929190614507565b60405180910390a35050506110e3565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fdb08ec97000000000000000000000000000000000000000000000000000000001415610e2b5760035473ffffffffffffffffffffffffffffffffffffffff163314610d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610167906149b3565b610d6e613a1b565b83806020019051810190610d8291906141d1565b80519092506000915073ffffffffffffffffffffffffffffffffffffffff1615610dad578151610daf565b875b90506060610dc888888560200151866040015186611fbf565b90508173ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167f89e4dbdd48f69e7920342e9ad9691b9a7150f254e6a0af177ccfd2556aab8bcd8a8a85604051610cbb93929190614507565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f82da2b73000000000000000000000000000000000000000000000000000000001415610f035760035473ffffffffffffffffffffffffffffffffffffffff163314610ec6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610167906146ec565b610ece613a52565b83806020019051810190610ee29190613faf565b905080915050610efd878787846000015185602001516122c9565b506110e3565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f5c0bf259000000000000000000000000000000000000000000000000000000001415610fc257333014610f86576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614af0565b610f8e613a6c565b83806020019051810190610fa29190614115565b905080915050610efd87878784600001518560200151866040015161293e565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fc8c323f90000000000000000000000000000000000000000000000000000000014156110b15760045473ffffffffffffffffffffffffffffffffffffffff16331461105d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610167906147f2565b6006548560008151811061106d57fe5b6020026020010151146110ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101679061468f565b6110e3565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614fd0565b507fbc197c81000000000000000000000000000000000000000000000000000000009695505050505050565b606083818167ffffffffffffffff8111801561112a57600080fd5b50604051908082528060200260200182016040528015611154578160200160208202803683370190505b50905060005b828110156109d85760035460009073ffffffffffffffffffffffffffffffffffffffff1662fdd58e308b8b8681811061118f57fe5b905060200201356040518363ffffffff1660e01b81526004016111b3929190614461565b60206040518083038186803b1580156111cb57600080fd5b505afa1580156111df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112039190614270565b905061124787878481811061121457fe5b90506020020135600860008c8c8781811061122b57fe5b90506020020135815260200190815260200160002054836114d7565b83838151811061125357fe5b60209081029190910101525060010161115a565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205460ff1690565b6040805160018082528183019092526000916060919060208083019080368337505060408051600180825281830190925292935060609291506020808301908036833701905050905085826000815181106112f957fe5b602002602001018181525050848160008151811061131357fe5b60200260200101818152505061132c8888848488610a98565b7fffffffff00000000000000000000000000000000000000000000000000000000167fbc197c8100000000000000000000000000000000000000000000000000000000146113a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614c2d565b507ff23a6e6100000000000000000000000000000000000000000000000000000000979650505050505050565b3373ffffffffffffffffffffffffffffffffffffffff861614806113fc57506113fc8533611267565b611451576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061517a602a913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff84166114bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b81526020018061514f602b913960400191505060405180910390fd5b6114c985858585612ea7565b610677858585855a86612faf565b600080831180156114e85750600082115b61151e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614f16565b60006115366103e86115308688611af7565b90611af7565b9050600061154a6103e361153086896131a0565b90506109d88282613217565b80518251146115b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001806151a46035913960400191505060405180910390fd5b815160005b81811015611778576116468382815181106115cc57fe5b6020026020010151600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087858151811061162157fe5b60200260200101518152602001908152602001600020546131a090919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff87166000908152600160205260408120865190919087908590811061167c57fe5b602002602001015181526020019081526020016000208190555061171f8382815181106116a557fe5b6020026020010151600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008785815181106116fa57fe5b6020026020010151815260200190815260200160002054611b8790919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff86166000908152600160205260408120865190919087908590811061175557fe5b6020908102919091018101518252810191909152604001600020556001016115b5565b508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561182557818101518382015260200161180d565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561186457818101518382015260200161184c565b5050505090500194505050505060405180910390a45050505050565b61189f8573ffffffffffffffffffffffffffffffffffffffff1661325e565b15611aef5760008573ffffffffffffffffffffffffffffffffffffffff1663bc197c8184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b8381101561195757818101518382015260200161193f565b50505050905001848103835286818151815260200191508051906020019060200280838360005b8381101561199657818101518382015260200161197e565b50505050905001848103825285818151815260200191508051906020019080838360005b838110156119d25781810151838201526020016119ba565b50505050905090810190601f1680156119ff5780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600088803b158015611a2457600080fd5b5087f1158015611a38573d6000803e3d6000fd5b50505050506040513d6020811015611a4f57600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c810000000000000000000000000000000000000000000000000000000014611aed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603f8152602001806152c4603f913960400191505060405180910390fd5b505b505050505050565b600082611b0657506000610331565b82820282848281611b1357fe5b0414611b8057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f536166654d617468236d756c3a204f564552464c4f5700000000000000000000604482015290519081900360640190fd5b9392505050565b600082820183811015611b8057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f536166654d617468236164643a204f564552464c4f5700000000000000000000604482015290519081900360640190fd5b60005460609060ff16611c6f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905542831015611cd1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614632565b8551848167ffffffffffffffff81118015611ceb57600080fd5b50604051908082528060200260200182016040528015611d15578160200160208202803683370190505b50925060608267ffffffffffffffff81118015611d3157600080fd5b50604051908082528060200260200182016040528015611d5b578160200160208202803683370190505b509050611d6789613295565b905060005b83811015611e645760008a8281518110611d8257fe5b6020026020010151905060008a8381518110611d9a57fe5b602002602001015190506000848481518110611db257fe5b6020026020010151905060008211611df6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614ce8565b60008381526008602052604081205490611e118483856114d7565b9050611e1d88826131a0565b9750808a8781518110611e2c57fe5b6020908102919091010152611e418282611b87565b60009586526008602052604090952094909455505060019092019150611d6c9050565b508115611efa57600480546006546040517ff242432a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169263f242432a92611ec79230928b9289910161441c565b600060405180830381600087803b158015611ee157600080fd5b505af1158015611ef5573d6000803e3d6000fd5b505050505b6003546040517f2eb2c2d600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690632eb2c2d690611f5690309089908e908e9060040161430e565b600060405180830381600087803b158015611f7057600080fd5b505af1158015611f84573d6000803e3d6000fd5b50505050505050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905595945050505050565b60005460609060ff1661203357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055855142841015612097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614875565b60008167ffffffffffffffff811180156120b057600080fd5b506040519080825280602002602001820160405280156120da578160200160208202803683370190505b50925060608267ffffffffffffffff811180156120f657600080fd5b50604051908082528060200260200182016040528015612120578160200160208202803683370190505b50905061212c89613295565b905060005b838110156122325760008a828151811061214757fe5b6020026020010151905060008a838151811061215f57fe5b60200260200101519050600084848151811061217757fe5b60200260200101519050600082116121bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614eb9565b600083815260086020526040812054906121df846121d985826131a0565b846107ec565b90506121eb8882611b87565b97506121f782826131a0565b600086815260086020526040902055895181908b908890811061221657fe5b6020908102919091010152505060019093019250612131915050565b508682101561226d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610167906148d2565b600480546006546040517ff242432a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169263f242432a92611f569230928b9289910161441c565b60005460ff1661233a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690554281101561239c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614d45565b8351600060608267ffffffffffffffff811180156123b957600080fd5b506040519080825280602002602001820160405280156123e3578160200160208202803683370190505b50905060608367ffffffffffffffff811180156123ff57600080fd5b50604051908082528060200260200182016040528015612429578160200160208202803683370190505b50905060608467ffffffffffffffff8111801561244557600080fd5b5060405190808252806020026020018201604052801561246f578160200160208202803683370190505b50905061247b89613295565b905060005b858110156127db5760008a828151811061249657fe5b6020026020010151905060008a83815181106124ae57fe5b6020026020010151905060008a84815181106124c657fe5b602002602001015111612505576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614578565b6000811161253f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614e5c565b60045474010000000000000000000000000000000000000000900460ff161561259e5760065482141561259e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614da2565b60008281526007602052604090205480156127145760008381526008602052604081205486519091908790879081106125d357fe5b602002602001015190506000806126056125f68588611af790919063ffffffff16565b61260085896131a0565b613217565b91509150818f898151811061261657fe5b60200260200101511015612656576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614a93565b6126608483611b87565b6000888152600860205260409020556126798c83611b87565b9b508361269c866115308461268f576000612692565b60015b869060ff166131a0565b816126a357fe5b048b89815181106126b057fe5b602002602001018181525050818a89815181106126c957fe5b6020026020010181815250506126fb8b89815181106126e457fe5b602002602001015186611b8790919063ffffffff16565b600088815260076020526040902055506127d092505050565b60008b858151811061272257fe5b60200260200101519050633b9aca0081101561276a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614a36565b60008481526008602052604090208190556127858982611b87565b6000858152600760205260409020829055885190995081908990879081106127a957fe5b602002602001018181525050808786815181106127c257fe5b602002602001018181525050505b505050600101612480565b506127f78a8a856040518060200160405280600081525061357d565b60045460065460405173ffffffffffffffffffffffffffffffffffffffff9092169163f242432a918d913091908990612854907fc8c323f9000000000000000000000000000000000000000000000000000000009060200161454b565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401612883959493929190614373565b600060405180830381600087803b15801561289d57600080fd5b505af11580156128b1573d6000803e3d6000fd5b505050508973ffffffffffffffffffffffffffffffffffffffff167f403f9dc4582dae52d3eeb4a22d37540ffb13c32d964c92ec5ac0d3d5628da3168a8a856040516128ff93929190614507565b60405180910390a25050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555050505050505050565b60005460ff166129af57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055428111612a10576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614b73565b8451600060608267ffffffffffffffff81118015612a2d57600080fd5b50604051908082528060200260200182016040528015612a57578160200160208202803683370190505b50905060608367ffffffffffffffff81118015612a7357600080fd5b50604051908082528060200260200182016040528015612a9d578160200160208202803683370190505b50905060608467ffffffffffffffff81118015612ab957600080fd5b50604051908082528060200260200182016040528015612ae3578160200160208202803683370190505b509050612aef8a613295565b905060005b85811015612cee5760008b8281518110612b0a57fe5b6020026020010151905060008b8381518110612b2257fe5b602002602001015190506000848481518110612b3a57fe5b6020026020010151905060006007600085815260200190815260200160002054905060008111612b96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610167906145d5565b6000848152600860205260408120549082612bb18684611af7565b81612bb857fe5b049050600083612bc88787611af7565b81612bcf57fe5b0490508f8881518110612bde57fe5b6020026020010151821015612c1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614c8a565b8e8881518110612c2b57fe5b6020026020010151811015612c6c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614dff565b612c7684876131a0565b600088815260076020526040902055612c8f83836131a0565b600088815260086020526040902055612ca88c83611b87565b9b50808b8981518110612cb757fe5b602002602001018181525050818a8981518110612cd057fe5b6020908102919091010152505060019095019450612af49350505050565b50612cfa308b8b6137b2565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f242432a308d600654886040518563ffffffff1660e01b8152600401612d5d949392919061441c565b600060405180830381600087803b158015612d7757600080fd5b505af1158015612d8b573d6000803e3d6000fd5b50506003546040517f2eb2c2d600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169250632eb2c2d69150612deb9030908f908f90899060040161430e565b600060405180830381600087803b158015612e0557600080fd5b505af1158015612e19573d6000803e3d6000fd5b505050508a73ffffffffffffffffffffffffffffffffffffffff167f711e9bcb94b4cf7bc99c1cb938edc75ac7e85a136838e90abf6ee1f5adebd4238b8585604051612e6793929190614507565b60405180910390a25050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600160209081526040808320858452909152902054612ee290826131a0565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600160208181526040808420888552825280842095909555928716825282528281208582529091522054612f339082611b87565b73ffffffffffffffffffffffffffffffffffffffff8085166000818152600160209081526040808320888452825291829020949094558051868152938401859052805191939288169233927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62929181900390910190a450505050565b612fce8573ffffffffffffffffffffffffffffffffffffffff1661325e565b15611aef5760008573ffffffffffffffffffffffffffffffffffffffff1663f23a6e6184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561308757818101518382015260200161306f565b50505050905090810190601f1680156130b45780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600088803b1580156130d757600080fd5b5087f11580156130eb573d6000803e3d6000fd5b50505050506040513d602081101561310257600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e610000000000000000000000000000000000000000000000000000000014611aed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180615303603a913960400191505060405180910390fd5b60008282111561321157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f536166654d617468237375623a20554e444552464c4f57000000000000000000604482015290519081900360640190fd5b50900390565b60008082848161322357fe5b06156132455761323e600184868161323757fe5b0490611b87565b6001613252565b82848161324e57fe5b0460005b915091505b9250929050565b6000813f8015801590611b8057507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470141592915050565b8051606090600181141561338957604080516001808252818301909252606091602080830190803683375050600354865192935073ffffffffffffffffffffffffffffffffffffffff169162fdd58e9150309087906000906132f357fe5b60200260200101516040518363ffffffff1660e01b8152600401613318929190614461565b60206040518083038186803b15801561333057600080fd5b505afa158015613344573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133689190614270565b8160008151811061337557fe5b602090810291909101015291506104199050565b60608167ffffffffffffffff811180156133a257600080fd5b506040519080825280602002602001820160405280156133cc578160200160208202803683370190505b50905030816000815181106133dd57fe5b73ffffffffffffffffffffffffffffffffffffffff9092166020928302919091019091015260015b828110156134a95784818151811061341957fe5b602002602001015185600183038151811061343057fe5b60200260200101511061346f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614930565b3082828151811061347c57fe5b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910190910152600101613405565b506003546040517f4e1273f400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690634e1273f4906135029084908890600401614487565b60006040518083038186803b15801561351a57600080fd5b505afa15801561352e573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526135749190810190613f3c565b92505050610419565b81518351146135d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806152946030913960400191505060405180910390fd5b825160005b818110156136a1576136488482815181106135f357fe5b6020026020010151600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008885815181106116fa57fe5b73ffffffffffffffffffffffffffffffffffffffff87166000908152600160205260408120875190919088908590811061367e57fe5b6020908102919091018101518252810191909152604001600020556001016135dc565b508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561374f578181015183820152602001613737565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561378e578181015183820152602001613776565b5050505090500194505050505060405180910390a461067760008686865a87611880565b81518151811461380d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806152096030913960400191505060405180910390fd5b60005b818110156138d55761387c83828151811061382757fe5b6020026020010151600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087858151811061162157fe5b73ffffffffffffffffffffffffffffffffffffffff8616600090815260016020526040812086519091908790859081106138b257fe5b602090810291909101810151825281019190915260400160002055600101613810565b50600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561398357818101518382015260200161396b565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156139c25781810151838201526020016139aa565b5050505090500194505050505060405180910390a450505050565b6040518060800160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016060815260200160608152602001600081525090565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b604051806040016040528060608152602001600081525090565b60405180606001604052806060815260200160608152602001600081525090565b8051610419816150fb565b60008083601f840112613aa9578081fd5b50813567ffffffffffffffff811115613ac0578182fd5b602083019150836020808302850101111561325757600080fd5b600082601f830112613aea578081fd5b8135613afd613af8826150dd565b6150b9565b818152915060208083019084810181840286018201871015613b1e57600080fd5b60005b84811015613b3d57813584529282019290820190600101613b21565b505050505092915050565b600082601f830112613b58578081fd5b8151613b66613af8826150dd565b818152915060208083019084810181840286018201871015613b8757600080fd5b60005b84811015613b3d57815184529282019290820190600101613b8a565b600082601f830112613bb6578081fd5b813567ffffffffffffffff811115613bca57fe5b613bfb60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016150b9565b9150808252836020828501011115613c1257600080fd5b8060208401602084013760009082016020015292915050565b60008060408385031215613c3d578182fd5b8235613c48816150fb565b91506020830135613c58816150fb565b809150509250929050565b600080600080600060a08688031215613c7a578081fd5b8535613c85816150fb565b94506020860135613c95816150fb565b9350604086013567ffffffffffffffff80821115613cb1578283fd5b613cbd89838a01613ada565b94506060880135915080821115613cd2578283fd5b613cde89838a01613ada565b93506080880135915080821115613cf3578283fd5b50613d0088828901613ba6565b9150509295509295909350565b600080600080600060a08688031215613d24578081fd5b8535613d2f816150fb565b94506020860135613d3f816150fb565b93506040860135925060608601359150608086013567ffffffffffffffff811115613d68578182fd5b613d0088828901613ba6565b60008060408385031215613d86578182fd5b8235613d91816150fb565b915060208301358015158114613c58578182fd5b60008060408385031215613db7578182fd5b8235613dc2816150fb565b946020939093013593505050565b60008060408385031215613de2578182fd5b823567ffffffffffffffff80821115613df9578384fd5b818501915085601f830112613e0c578384fd5b8135613e1a613af8826150dd565b80828252602080830192508086018a828387028901011115613e3a578889fd5b8896505b84871015613e65578035613e51816150fb565b845260019690960195928101928101613e3e565b509096508701359350505080821115613e7c578283fd5b50613e8985828601613ada565b9150509250929050565b60008060208385031215613ea5578182fd5b823567ffffffffffffffff811115613ebb578283fd5b613ec785828601613a98565b90969095509350505050565b60008060008060408587031215613ee8578182fd5b843567ffffffffffffffff80821115613eff578384fd5b613f0b88838901613a98565b90965094506020870135915080821115613f23578384fd5b50613f3087828801613a98565b95989497509550505050565b600060208284031215613f4d578081fd5b815167ffffffffffffffff811115613f63578182fd5b613f6f84828501613b48565b949350505050565b600060208284031215613f88578081fd5b8135611b8081615120565b600060208284031215613fa4578081fd5b8151611b8081615120565b60008060408385031215613fc1578182fd5b8251613fcc81615120565b602084015190925067ffffffffffffffff80821115613fe9578283fd5b9084019060408287031215613ffc578283fd5b60405160408101818110838211171561401157fe5b604052825182811115614022578485fd5b61402e88828601613b48565b825250602083015160208201528093505050509250929050565b6000806040838503121561405a578182fd5b825161406581615120565b602084015190925067ffffffffffffffff80821115614082578283fd5b9084019060808287031215614095578283fd5b6040516080810181811083821117156140aa57fe5b6040526140b683613a8d565b81526020830151828111156140c9578485fd5b6140d588828601613b48565b6020830152506040830151828111156140ec578485fd5b6140f888828601613b48565b604083015250606083015160608201528093505050509250929050565b60008060408385031215614127578182fd5b825161413281615120565b602084015190925067ffffffffffffffff8082111561414f578283fd5b9084019060608287031215614162578283fd5b60405160608101818110838211171561417757fe5b604052825182811115614188578485fd5b61419488828601613b48565b8252506020830151828111156141a8578485fd5b6141b488828601613b48565b602083015250604083015160408201528093505050509250929050565b60008082840360808112156141e4578283fd5b83516141ef81615120565b925060607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082011215614220578182fd5b506040516060810181811067ffffffffffffffff8211171561423e57fe5b604052602084015161424f816150fb565b81526040848101516020830152606090940151938101939093525092909150565b600060208284031215614281578081fd5b5051919050565b60008060006060848603121561429c578081fd5b505081359360208301359350604090920135919050565b6000815180845260208085019450808401835b838110156142e2578151875295820195908201906001016142c6565b509495945050505050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525060a0604083015261434760a08301856142b3565b828103606084015261435981856142b3565b838103608090940193909352508152602001949350505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835260208188168185015286604085015285606085015260a06080850152845191508160a0850152825b828110156143d35785810182015185820160c0015281016143b7565b828111156143e4578360c084870101525b5050601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160c0019695505050505050565b73ffffffffffffffffffffffffffffffffffffffff94851681529290931660208301526040820152606081019190915260a06080820181905260009082015260c00190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b604080825283519082018190526000906020906060840190828701845b828110156144d657815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016144a4565b505050838103828501526144ea81866142b3565b9695505050505050565b600060208252611b8060208301846142b3565b60006060825261451a60608301866142b3565b828103602084015261452c81866142b3565b905082810360408401526144ea81856142b3565b901515815260200190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b60208082526032908201527f4e696674797377617045786368616e6765235f6164644c69717569646974793a60408201527f204e554c4c5f4d41585f43555252454e43590000000000000000000000000000606082015260800190565b60208082526038908201527f4e696674797377617045786368616e6765235f72656d6f76654c69717569646960408201527f74793a204e554c4c5f544f54414c5f4c49515549444954590000000000000000606082015260800190565b60208082526035908201527f4e696674797377617045786368616e6765235f63757272656e6379546f546f6b60408201527f656e3a20444541444c494e455f45584345454445440000000000000000000000606082015260800190565b6020808252603d908201527f4e696674797377617045786368616e6765236f6e45524331313535426174636860408201527f52656365697665643a20494e56414c49445f43555252454e43595f4944000000606082015260800190565b60208082526043908201527f4e696674797377617045786368616e6765236f6e45524331313535426174636860408201527f52656365697665643a20494e56414c49445f544f4b454e5f5452414e5346455260608201527f5245440000000000000000000000000000000000000000000000000000000000608082015260a00190565b60208082526045908201527f4e696674797377617045786368616e6765236f6e45524331313535426174636860408201527f52656365697665643a20494e56414c49445f43555252454e43595f4944535f4160608201527f4d4f554e54000000000000000000000000000000000000000000000000000000608082015260a00190565b60208082526042908201527f4e696674797377617045786368616e6765236f6e45524331313535426174636860408201527f52656365697665643a20494e56414c49445f544f4b454e535f4445504f53495460608201527f4544000000000000000000000000000000000000000000000000000000000000608082015260a00190565b60208082526035908201527f4e696674797377617045786368616e6765235f746f6b656e546f43757272656e60408201527f63793a20444541444c494e455f45584345454445440000000000000000000000606082015260800190565b602080825260409082018190527f4e696674797377617045786368616e6765235f746f6b656e546f43757272656e908201527f63793a20494e53554646494349454e545f43555252454e43595f414d4f554e54606082015260800190565b60208082526044908201527f4e696674797377617045786368616e6765235f676574546f6b656e526573657260408201527f7665733a20554e534f525445445f4f525f4455504c49434154455f544f4b454e60608201527f5f49445300000000000000000000000000000000000000000000000000000000608082015260a00190565b60208082526044908201527f4e696674797377617045786368616e6765236f6e45524331313535426174636860408201527f52656365697665643a20494e56414c49445f544f4b454e535f5452414e53464560608201527f5252454400000000000000000000000000000000000000000000000000000000608082015260a00190565b60208082526038908201527f4e696674797377617045786368616e6765235f6164644c69717569646974793a60408201527f20494e56414c49445f43555252454e43595f414d4f554e540000000000000000606082015260800190565b6020808252603d908201527f4e696674797377617045786368616e6765235f6164644c69717569646974793a60408201527f204d41585f43555252454e43595f414d4f554e545f4558434545444544000000606082015260800190565b6020808252604a908201527f4e696674797377617045786368616e6765236f6e45524331313535426174636860408201527f52656365697665643a20494e56414c49445f4e494654595f544f4b454e535f5460608201527f52414e5346455252454400000000000000000000000000000000000000000000608082015260a00190565b60208082526035908201527f4e696674797377617045786368616e6765235f72656d6f76654c69717569646960408201527f74793a20444541444c494e455f45584345454445440000000000000000000000606082015260800190565b60208082526024908201527f4e696674797377617045786368616e67653a554e535550504f525445445f4d4560408201527f54484f4400000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252603f908201527f4e696674797377617045786368616e6765236f6e45524331313535526563656960408201527f7665643a20494e56414c49445f4f4e52454345495645445f4d45535341474500606082015260800190565b602080825260409082018190527f4e696674797377617045786368616e6765235f72656d6f76654c697175696469908201527f74793a20494e53554646494349454e545f43555252454e43595f414d4f554e54606082015260800190565b60208082526036908201527f4e696674797377617045786368616e6765235f63757272656e6379546f546f6b60408201527f656e3a204e554c4c5f544f4b454e535f424f5547485400000000000000000000606082015260800190565b60208082526032908201527f4e696674797377617045786368616e6765235f6164644c69717569646974793a60408201527f20444541444c494e455f45584345454445440000000000000000000000000000606082015260800190565b60208082526038908201527f4e696674797377617045786368616e6765235f6164644c69717569646974793a60408201527f2043555252454e43595f504f4f4c5f464f5242494444454e0000000000000000606082015260800190565b60208082526037908201527f4e696674797377617045786368616e6765235f72656d6f76654c69717569646960408201527f74793a20494e53554646494349454e545f544f4b454e53000000000000000000606082015260800190565b60208082526033908201527f4e696674797377617045786368616e6765235f6164644c69717569646974793a60408201527f204e554c4c5f544f4b454e535f414d4f554e5400000000000000000000000000606082015260800190565b60208082526034908201527f4e696674797377617045786368616e6765235f746f6b656e546f43757272656e60408201527f63793a204e554c4c5f544f4b454e535f534f4c44000000000000000000000000606082015260800190565b6020808252602c908201527f4e696674797377617045786368616e67652367657442757950726963653a204560408201527f4d5054595f524553455256450000000000000000000000000000000000000000606082015260800190565b6020808252602d908201527f4e696674797377617045786368616e67652367657453656c6c50726963653a2060408201527f454d5054595f5245534552564500000000000000000000000000000000000000606082015260800190565b60208082526038908201527f4e696674797377617045786368616e6765236f6e45524331313535426174636860408201527f52656365697665643a20494e56414c49445f4d4554484f440000000000000000606082015260800190565b60208082526046908201527f4e696674797377617045786368616e6765236f6e45524331313535426174636860408201527f52656365697665643a20494e56414c49445f43555252454e43595f5452414e5360608201527f4645525245440000000000000000000000000000000000000000000000000000608082015260a00190565b90815260200190565b60405181810167ffffffffffffffff811182821017156150d557fe5b604052919050565b600067ffffffffffffffff8211156150f157fe5b5060209081020190565b73ffffffffffffffffffffffffffffffffffffffff8116811461511d57600080fd5b50565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461511d57600080fdfe4552433131353523736166655472616e7366657246726f6d3a20494e56414c49445f524543495049454e544552433131353523736166655472616e7366657246726f6d3a20494e56414c49445f4f50455241544f5245524331313535235f7361666542617463685472616e7366657246726f6d3a20494e56414c49445f4152524159535f4c454e47544845524331313535237361666542617463685472616e7366657246726f6d3a20494e56414c49445f524543495049454e54455243313135354d696e744275726e2362617463684275726e3a20494e56414c49445f4152524159535f4c454e475448455243313135352362616c616e63654f6642617463683a20494e56414c49445f41525241595f4c454e47544845524331313535237361666542617463685472616e7366657246726f6d3a20494e56414c49445f4f50455241544f52455243313135354d696e744275726e2362617463684d696e743a20494e56414c49445f4152524159535f4c454e47544845524331313535235f63616c6c6f6e45524331313535426174636852656365697665643a20494e56414c49445f4f4e5f524543454956455f4d45535341474545524331313535235f63616c6c6f6e4552433131353552656365697665643a20494e56414c49445f4f4e5f524543454956455f4d455353414745a26469706673582212200de16fc0245d81d028816ad311c89dbbc3d6e964494193026135bf9ad24f1ca264736f6c634300070400334e6966747973776170466163746f72792363726561746545786368616e67653a2045584348414e47455f414c52454144595f43524541544544a26469706673582212204efa1c0526327dd61bbeca928a86759c98b1f1180adeed153dbab24c7082a29b64736f6c63430007040033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
