{
  "_format": "hh-sol-artifact-1",
  "contractName": "PriceFeedTester",
  "sourceName": "contracts/TestContracts/PriceFeedTester.sol",
  "abi": [
    {
      "inputs": [],
      "name": "AddressZero",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidAsset",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidPrice",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "previousPriceMantissa",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newPriceMantissa",
          "type": "uint256"
        }
      ],
      "name": "EmergencyPriceReset",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "previousPriceMantissa",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newPriceMantissa",
          "type": "uint256"
        }
      ],
      "name": "PricePosted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "feed",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "maxStalePeriod",
          "type": "uint256"
        }
      ],
      "name": "TokenConfigAdded",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "MAX_DIRECT_PRICE_DEVIATION_ADDRESS",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "NATIVE_ASSET",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "directPrices",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "price",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "price",
          "type": "uint256"
        }
      ],
      "name": "emergencySetDirectPrice",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "asset",
          "type": "address"
        }
      ],
      "name": "fetchPrice",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "price",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner_",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "price",
          "type": "uint256"
        }
      ],
      "name": "setDirectPrice",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_mockPrice",
          "type": "uint256"
        }
      ],
      "name": "setMockPrice",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "asset",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "feed",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "maxStalePeriod",
              "type": "uint256"
            }
          ],
          "internalType": "struct PriceFeedChainlink.TokenConfig",
          "name": "tokenConfig",
          "type": "tuple"
        }
      ],
      "name": "setTokenConfig",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "asset",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "feed",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "maxStalePeriod",
              "type": "uint256"
            }
          ],
          "internalType": "struct PriceFeedChainlink.TokenConfig[]",
          "name": "tokenConfigs_",
          "type": "tuple[]"
        }
      ],
      "name": "setTokenConfigs",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "tokenConfigs",
      "outputs": [
        {
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "feed",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "maxStalePeriod",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b5061001961001e565b6100dd565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100db576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b611346806100ec6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063ace1798e1161008c578063cfb4d88511610066578063cfb4d88514610220578063f2fde38b14610233578063f32d08f814610246578063f7c993571461028257600080fd5b8063ace1798e146101d1578063bf53253b146101f2578063c4d66de81461020d57600080fd5b8063392787d2116100c8578063392787d21461017e578063715018a6146101915780637cd33ca9146101995780638da5cb5b146101ac57600080fd5b80630431710e146100ef57806309a8acb0146101045780631b69dc5f14610117575b600080fd5b6101026100fd36600461100a565b61028a565b005b6101026101123660046110ba565b610324565b6101536101253660046110e4565b6066602052600090815260409020805460018201546002909201546001600160a01b03918216929091169083565b604080516001600160a01b039485168152939092166020840152908201526060015b60405180910390f35b61010261018c3660046110ff565b6104c1565b6101026104d5565b6101026101a73660046110ba565b6104e9565b6033546001600160a01b03165b6040516001600160a01b039091168152602001610175565b6101e46101df3660046110e4565b610606565b604051908152602001610175565b6101b973eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee81565b61010261021b3660046110e4565b610651565b61010261022e3660046110ba565b61077b565b6101026102413660046110e4565b610807565b61026d6102543660046110e4565b6065602052600090815260409020805460019091015482565b60408051928352602083019190915201610175565b6101e4603281565b610292610894565b80516000036102e85760405162461bcd60e51b815260206004820152601160248201527f6c656e6774682063616e2774206265203000000000000000000000000000000060448201526064015b60405180910390fd5b805160005b8181101561031f5761031783828151811061030a5761030a61111b565b60200260200101516108ee565b6001016102ed565b505050565b61032c610894565b6001600160a01b0380831660009081526066602052604090205483911661036657604051636448d6e960e11b815260040160405180910390fd5b816103835760405162bfc92160e01b815260040160405180910390fd5b6001600160a01b0383166000908152606560205260409020548015610449576000818411156103d357816103b78186611147565b6103c290606461115a565b6103cc9190611171565b90506103f6565b816103de8582611147565b6103e990606461115a565b6103f39190611171565b90505b60328111156104475760405162461bcd60e51b815260206004820152601860248201527f507269636520646576696174696f6e20746f6f2068696768000000000000000060448201526064016102df565b505b6040805180820182528481524260208083019182526001600160a01b0388166000818152606583528590209351845591516001909301929092558251848152918201869052917fa0844d44570b5ec5ac55e9e7d1e7fc8149b4f33b4b61f3c8fc08bacce058faee91015b60405180910390a250505050565b6104c9610894565b6104d2816108ee565b50565b6104dd610894565b6104e76000610a34565b565b6104f1610894565b6001600160a01b0380831660009081526066602052604090205483911661052b57604051636448d6e960e11b815260040160405180910390fd5b816105485760405162bfc92160e01b815260040160405180910390fd5b6001600160a01b0383166000818152606560208181526040808420805482518084018452898152428186019081529688905294845293518155935160019094019390935582518281529081018690529092917fa0844d44570b5ec5ac55e9e7d1e7fc8149b4f33b4b61f3c8fc08bacce058faee910160405180910390a260408051828152602081018590526001600160a01b038616917f7bdbfac2409e6b99c0579d49bd5f6cc16e70fbf225234591255882c198f57e7891016104b3565b60008061061283610a93565b905080156106225780915061062e565b61062b83610b25565b91505b8161064b5760405162bfc92160e01b815260040160405180910390fd5b50919050565b600054610100900460ff16158080156106715750600054600160ff909116105b8061068b5750303b15801561068b575060005460ff166001145b6106fd5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016102df565b6000805460ff191660011790558015610720576000805461ff0019166101001790555b610728610c48565b61073182610a34565b8015610777576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6001600160a01b03828116600090815260666020526040902054166107cd57604080516060810182526001600160a01b03841681526001602082015262015180918101919091526107cb816108ee565b505b6040805180820182529182524260208084019182526001600160a01b03909416600090815260659094529220905181559051600190910155565b61080f610894565b6001600160a01b03811661088b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016102df565b6104d281610a34565b6033546001600160a01b031633146104e75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102df565b80516001600160a01b03811661091757604051639fabe1c160e01b815260040160405180910390fd5b60208201516001600160a01b03811661094357604051639fabe1c160e01b815260040160405180910390fd5b82604001516000036109975760405162461bcd60e51b815260206004820152601a60248201527f7374616c6520706572696f642063616e2774206265207a65726f00000000000060448201526064016102df565b82516001600160a01b039081166000908152606660209081526040918290208651815490851673ffffffffffffffffffffffffffffffffffffffff19918216811783558389015160018401805491909716921682179095558388015160029092018290558351908152918201527f3cc8d9cb9370a23a8b9ffa75efa24cecb65c4693980e58260841adc474983c5f910160405180910390a2505050565b603380546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0380821660008181526066602090815260408083208151606081018352815487168152600180830154909716818501526002909101548183015293835260658252808320815180830190925280548252909401549084018190529092908390610b039042611147565b90508260400151811115610b1c57506000949350505050565b50519392505050565b6001600160a01b038082166000908152606660205260408120549091839116610b6157604051636448d6e960e11b815260040160405180910390fd5b6001600160a01b03808416600090815260666020908152604080832081516060810183528154861681526001820154909516928501839052600201549084015290610bab82610cbb565b9050610bbb818460400151610de1565b15610bcc576000945050505061064b565b610c3e8160200151836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c369190611193565b60ff16610e6f565b9695505050505050565b600054610100900460ff16610cb35760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102df565b6104e7610ed0565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610d40575060408051601f3d908101601f19168201909252610d3d91810190611193565b60015b610d4957919050565b60ff166080820152816001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa925050508015610dab575060408051601f3d908101601f19168201909252610da8918101906111d0565b60015b610db457919050565b5069ffffffffffffffffffff9093168452506020830152604082015260016060820152919050565b919050565b60008260600151610df457506001610e69565b825169ffffffffffffffffffff16600003610e1157506001610e69565b60408301511580610e255750428360400151115b15610e3257506001610e69565b6000836020015113610e4657506001610e69565b81836040015142610e579190611147565b1115610e6557506001610e69565b5060005b92915050565b816012821115610ea057610e84601283611147565b610e8f90600a611304565b610e999084611171565b9050610e69565b6012821015610e6957610eb4826012611147565b610ebf90600a611304565b610ec9908461115a565b9392505050565b600054610100900460ff16610f3b5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102df565b6104e733610a34565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610f8357610f83610f44565b604052919050565b80356001600160a01b0381168114610ddc57600080fd5b600060608284031215610fb457600080fd5b6040516060810181811067ffffffffffffffff82111715610fd757610fd7610f44565b604052905080610fe683610f8b565b8152610ff460208401610f8b565b6020820152604083013560408201525092915050565b6000602080838503121561101d57600080fd5b823567ffffffffffffffff8082111561103557600080fd5b818501915085601f83011261104957600080fd5b81358181111561105b5761105b610f44565b611069848260051b01610f5a565b8181528481019250606091820284018501918883111561108857600080fd5b938501935b828510156110ae5761109f8986610fa2565b8452938401939285019261108d565b50979650505050505050565b600080604083850312156110cd57600080fd5b6110d683610f8b565b946020939093013593505050565b6000602082840312156110f657600080fd5b610ec982610f8b565b60006060828403121561111157600080fd5b610ec98383610fa2565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115610e6957610e69611131565b8082028115828204841417610e6957610e69611131565b60008261118e57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156111a557600080fd5b815160ff81168114610ec957600080fd5b805169ffffffffffffffffffff81168114610ddc57600080fd5b600080600080600060a086880312156111e857600080fd5b6111f1866111b6565b9450602086015193506040860151925060608601519150611214608087016111b6565b90509295509295909350565b600181815b8085111561125b57816000190482111561124157611241611131565b8085161561124e57918102915b93841c9390800290611225565b509250929050565b60008261127257506001610e69565b8161127f57506000610e69565b8160018114611295576002811461129f576112bb565b6001915050610e69565b60ff8411156112b0576112b0611131565b50506001821b610e69565b5060208310610133831016604e8410600b84101617156112de575081810a610e69565b6112e88383611220565b80600019048211156112fc576112fc611131565b029392505050565b6000610ec9838361126356fea2646970667358221220bee1c123dfed989369f43b9a91a1ecbf24c02dd72ae50f92c697acc51e1966f764736f6c63430008130033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063ace1798e1161008c578063cfb4d88511610066578063cfb4d88514610220578063f2fde38b14610233578063f32d08f814610246578063f7c993571461028257600080fd5b8063ace1798e146101d1578063bf53253b146101f2578063c4d66de81461020d57600080fd5b8063392787d2116100c8578063392787d21461017e578063715018a6146101915780637cd33ca9146101995780638da5cb5b146101ac57600080fd5b80630431710e146100ef57806309a8acb0146101045780631b69dc5f14610117575b600080fd5b6101026100fd36600461100a565b61028a565b005b6101026101123660046110ba565b610324565b6101536101253660046110e4565b6066602052600090815260409020805460018201546002909201546001600160a01b03918216929091169083565b604080516001600160a01b039485168152939092166020840152908201526060015b60405180910390f35b61010261018c3660046110ff565b6104c1565b6101026104d5565b6101026101a73660046110ba565b6104e9565b6033546001600160a01b03165b6040516001600160a01b039091168152602001610175565b6101e46101df3660046110e4565b610606565b604051908152602001610175565b6101b973eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee81565b61010261021b3660046110e4565b610651565b61010261022e3660046110ba565b61077b565b6101026102413660046110e4565b610807565b61026d6102543660046110e4565b6065602052600090815260409020805460019091015482565b60408051928352602083019190915201610175565b6101e4603281565b610292610894565b80516000036102e85760405162461bcd60e51b815260206004820152601160248201527f6c656e6774682063616e2774206265203000000000000000000000000000000060448201526064015b60405180910390fd5b805160005b8181101561031f5761031783828151811061030a5761030a61111b565b60200260200101516108ee565b6001016102ed565b505050565b61032c610894565b6001600160a01b0380831660009081526066602052604090205483911661036657604051636448d6e960e11b815260040160405180910390fd5b816103835760405162bfc92160e01b815260040160405180910390fd5b6001600160a01b0383166000908152606560205260409020548015610449576000818411156103d357816103b78186611147565b6103c290606461115a565b6103cc9190611171565b90506103f6565b816103de8582611147565b6103e990606461115a565b6103f39190611171565b90505b60328111156104475760405162461bcd60e51b815260206004820152601860248201527f507269636520646576696174696f6e20746f6f2068696768000000000000000060448201526064016102df565b505b6040805180820182528481524260208083019182526001600160a01b0388166000818152606583528590209351845591516001909301929092558251848152918201869052917fa0844d44570b5ec5ac55e9e7d1e7fc8149b4f33b4b61f3c8fc08bacce058faee91015b60405180910390a250505050565b6104c9610894565b6104d2816108ee565b50565b6104dd610894565b6104e76000610a34565b565b6104f1610894565b6001600160a01b0380831660009081526066602052604090205483911661052b57604051636448d6e960e11b815260040160405180910390fd5b816105485760405162bfc92160e01b815260040160405180910390fd5b6001600160a01b0383166000818152606560208181526040808420805482518084018452898152428186019081529688905294845293518155935160019094019390935582518281529081018690529092917fa0844d44570b5ec5ac55e9e7d1e7fc8149b4f33b4b61f3c8fc08bacce058faee910160405180910390a260408051828152602081018590526001600160a01b038616917f7bdbfac2409e6b99c0579d49bd5f6cc16e70fbf225234591255882c198f57e7891016104b3565b60008061061283610a93565b905080156106225780915061062e565b61062b83610b25565b91505b8161064b5760405162bfc92160e01b815260040160405180910390fd5b50919050565b600054610100900460ff16158080156106715750600054600160ff909116105b8061068b5750303b15801561068b575060005460ff166001145b6106fd5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016102df565b6000805460ff191660011790558015610720576000805461ff0019166101001790555b610728610c48565b61073182610a34565b8015610777576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6001600160a01b03828116600090815260666020526040902054166107cd57604080516060810182526001600160a01b03841681526001602082015262015180918101919091526107cb816108ee565b505b6040805180820182529182524260208084019182526001600160a01b03909416600090815260659094529220905181559051600190910155565b61080f610894565b6001600160a01b03811661088b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016102df565b6104d281610a34565b6033546001600160a01b031633146104e75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102df565b80516001600160a01b03811661091757604051639fabe1c160e01b815260040160405180910390fd5b60208201516001600160a01b03811661094357604051639fabe1c160e01b815260040160405180910390fd5b82604001516000036109975760405162461bcd60e51b815260206004820152601a60248201527f7374616c6520706572696f642063616e2774206265207a65726f00000000000060448201526064016102df565b82516001600160a01b039081166000908152606660209081526040918290208651815490851673ffffffffffffffffffffffffffffffffffffffff19918216811783558389015160018401805491909716921682179095558388015160029092018290558351908152918201527f3cc8d9cb9370a23a8b9ffa75efa24cecb65c4693980e58260841adc474983c5f910160405180910390a2505050565b603380546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0380821660008181526066602090815260408083208151606081018352815487168152600180830154909716818501526002909101548183015293835260658252808320815180830190925280548252909401549084018190529092908390610b039042611147565b90508260400151811115610b1c57506000949350505050565b50519392505050565b6001600160a01b038082166000908152606660205260408120549091839116610b6157604051636448d6e960e11b815260040160405180910390fd5b6001600160a01b03808416600090815260666020908152604080832081516060810183528154861681526001820154909516928501839052600201549084015290610bab82610cbb565b9050610bbb818460400151610de1565b15610bcc576000945050505061064b565b610c3e8160200151836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c369190611193565b60ff16610e6f565b9695505050505050565b600054610100900460ff16610cb35760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102df565b6104e7610ed0565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610d40575060408051601f3d908101601f19168201909252610d3d91810190611193565b60015b610d4957919050565b60ff166080820152816001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa925050508015610dab575060408051601f3d908101601f19168201909252610da8918101906111d0565b60015b610db457919050565b5069ffffffffffffffffffff9093168452506020830152604082015260016060820152919050565b919050565b60008260600151610df457506001610e69565b825169ffffffffffffffffffff16600003610e1157506001610e69565b60408301511580610e255750428360400151115b15610e3257506001610e69565b6000836020015113610e4657506001610e69565b81836040015142610e579190611147565b1115610e6557506001610e69565b5060005b92915050565b816012821115610ea057610e84601283611147565b610e8f90600a611304565b610e999084611171565b9050610e69565b6012821015610e6957610eb4826012611147565b610ebf90600a611304565b610ec9908461115a565b9392505050565b600054610100900460ff16610f3b5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102df565b6104e733610a34565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610f8357610f83610f44565b604052919050565b80356001600160a01b0381168114610ddc57600080fd5b600060608284031215610fb457600080fd5b6040516060810181811067ffffffffffffffff82111715610fd757610fd7610f44565b604052905080610fe683610f8b565b8152610ff460208401610f8b565b6020820152604083013560408201525092915050565b6000602080838503121561101d57600080fd5b823567ffffffffffffffff8082111561103557600080fd5b818501915085601f83011261104957600080fd5b81358181111561105b5761105b610f44565b611069848260051b01610f5a565b8181528481019250606091820284018501918883111561108857600080fd5b938501935b828510156110ae5761109f8986610fa2565b8452938401939285019261108d565b50979650505050505050565b600080604083850312156110cd57600080fd5b6110d683610f8b565b946020939093013593505050565b6000602082840312156110f657600080fd5b610ec982610f8b565b60006060828403121561111157600080fd5b610ec98383610fa2565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115610e6957610e69611131565b8082028115828204841417610e6957610e69611131565b60008261118e57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156111a557600080fd5b815160ff81168114610ec957600080fd5b805169ffffffffffffffffffff81168114610ddc57600080fd5b600080600080600060a086880312156111e857600080fd5b6111f1866111b6565b9450602086015193506040860151925060608601519150611214608087016111b6565b90509295509295909350565b600181815b8085111561125b57816000190482111561124157611241611131565b8085161561124e57918102915b93841c9390800290611225565b509250929050565b60008261127257506001610e69565b8161127f57506000610e69565b8160018114611295576002811461129f576112bb565b6001915050610e69565b60ff8411156112b0576112b0611131565b50506001821b610e69565b5060208310610133831016604e8410600b84101617156112de575081810a610e69565b6112e88383611220565b80600019048211156112fc576112fc611131565b029392505050565b6000610ec9838361126356fea2646970667358221220bee1c123dfed989369f43b9a91a1ecbf24c02dd72ae50f92c697acc51e1966f764736f6c63430008130033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
