From 76a76af0b457bafc41333bae7c7a471519542ca5 Mon Sep 17 00:00:00 2001 From: Eric Zhong Date: Wed, 7 Aug 2024 15:57:20 -0400 Subject: [PATCH] fix(uniswapx-sdk): add latest abi and fix cosignature hash (#71) --- sdks/uniswapx-sdk/abis/PriorityOrderReactor.json | 2 +- .../contracts/factories/PriorityOrderReactor__factory.ts | 7 ++++++- sdks/uniswapx-sdk/src/order/PriorityOrder.ts | 3 ++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/sdks/uniswapx-sdk/abis/PriorityOrderReactor.json b/sdks/uniswapx-sdk/abis/PriorityOrderReactor.json index 3c56185f1..90e763e81 100644 --- a/sdks/uniswapx-sdk/abis/PriorityOrderReactor.json +++ b/sdks/uniswapx-sdk/abis/PriorityOrderReactor.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"_permit2","type":"address","internalType":"contract IPermit2"},{"name":"_protocolFeeOwner","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"execute","inputs":[{"name":"order","type":"tuple","internalType":"struct SignedOrder","components":[{"name":"order","type":"bytes","internalType":"bytes"},{"name":"sig","type":"bytes","internalType":"bytes"}]}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"executeBatch","inputs":[{"name":"orders","type":"tuple[]","internalType":"struct SignedOrder[]","components":[{"name":"order","type":"bytes","internalType":"bytes"},{"name":"sig","type":"bytes","internalType":"bytes"}]}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"executeBatchWithCallback","inputs":[{"name":"orders","type":"tuple[]","internalType":"struct SignedOrder[]","components":[{"name":"order","type":"bytes","internalType":"bytes"},{"name":"sig","type":"bytes","internalType":"bytes"}]},{"name":"callbackData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"executeWithCallback","inputs":[{"name":"order","type":"tuple","internalType":"struct SignedOrder","components":[{"name":"order","type":"bytes","internalType":"bytes"},{"name":"sig","type":"bytes","internalType":"bytes"}]},{"name":"callbackData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"feeController","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IProtocolFeeController"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"permit2","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPermit2"}],"stateMutability":"view"},{"type":"function","name":"setProtocolFeeController","inputs":[{"name":"_newFeeController","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Fill","inputs":[{"name":"orderHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"filler","type":"address","indexed":true,"internalType":"address"},{"name":"swapper","type":"address","indexed":true,"internalType":"address"},{"name":"nonce","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"user","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ProtocolFeeControllerSet","inputs":[{"name":"oldFeeController","type":"address","indexed":false,"internalType":"address"},{"name":"newFeeController","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"error","name":"DuplicateFeeOutput","inputs":[{"name":"duplicateToken","type":"address","internalType":"address"}]},{"type":"error","name":"FeeTooLarge","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"recipient","type":"address","internalType":"address"}]},{"type":"error","name":"InputAndOutputFees","inputs":[]},{"type":"error","name":"InputOutputScaling","inputs":[]},{"type":"error","name":"InvalidCosignature","inputs":[]},{"type":"error","name":"InvalidDeadline","inputs":[]},{"type":"error","name":"InvalidFeeToken","inputs":[{"name":"feeToken","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidGasPrice","inputs":[]},{"type":"error","name":"InvalidReactor","inputs":[]},{"type":"error","name":"NativeTransferFailed","inputs":[]},{"type":"error","name":"OrderNotFillable","inputs":[]}],"bytecode":{"object":"0x60a06040523480156200001157600080fd5b506040516200331e3803806200331e8339810160408190526200003491620000b8565b600080546001600160a01b0319166001600160a01b03831690811782556040518492849283928392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600255506001600160a01b031660805250620000f79050565b6001600160a01b0381168114620000b557600080fd5b50565b60008060408385031215620000cc57600080fd5b8251620000d9816200009f565b6020840151909250620000ec816200009f565b809150509250929050565b608051613205620001196000396000818160e001526118c101526132056000f3fe60806040526004361061009a5760003560e01c80632d771389116100695780636999b3771161004e5780636999b377146101715780638da5cb5b1461019e578063f2fde38b146101cb57600080fd5b80632d7713891461013e5780633f62192e1461015e57600080fd5b80630d335884146100a65780630d7a16c3146100bb57806312261ee7146100ce57806313fb72c71461012b57600080fd5b366100a157005b600080fd5b6100b96100b4366004612302565b6101eb565b005b6100b96100c93660046123b0565b610364565b3480156100da57600080fd5b506101027f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b96101393660046123f2565b6104c5565b34801561014a57600080fd5b506100b961015936600461248b565b610683565b6100b961016c3660046124af565b61078f565b34801561017d57600080fd5b506001546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101aa57600080fd5b506000546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d757600080fd5b506100b96101e636600461248b565b610894565b6101f3610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161020a5790505090506102b2846109f6565b816000815181106102c5576102c561251b565b60200260200101819052506102d981610b49565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da628906103199084908790879060040161271e565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b5050505061035481610b9a565b5061035f6001600255565b505050565b61036c610985565b8060008167ffffffffffffffff811115610388576103886124ec565b60405190808252806020026020018201604052801561044357816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103a65790505b50905060005b828110156104a25761047d8585838181106104665761046661251b565b905060200281019061047891906127e4565b6109f6565b82828151811061048f5761048f61251b565b6020908102919091010152600101610449565b506104ac81610b49565b6104b581610b9a565b50506104c16001600255565b5050565b6104cd610985565b8260008167ffffffffffffffff8111156104e9576104e96124ec565b6040519080825280602002602001820160405280156105a457816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105075790505b50905060005b828110156105ec576105c78787838181106104665761046661251b565b8282815181106105d9576105d961251b565b60209081029190910101526001016105aa565b506105f681610b49565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da628906106369084908890889060040161271e565b600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b5050505061067181610b9a565b505061067d6001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610797610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107ae579050509050610856826109f6565b816000815181106108695761086961251b565b602002602001018190525061087d81610b49565b61088681610b9a565b506108916001600255565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610700565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610700565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a6f8380612822565b810190610a7c9190612bee565b90506000610a8982610ced565b9050610a958183610f3b565b6000610aa4836060015161109d565b90506040518060a0016040528084600001518152602001610ad28386608001516110f290919063ffffffff16565b8152602001610aee838660a001516111e990919063ffffffff16565b8152602001868060200190610b039190612822565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525060200192909252509392505050565b805160005b8181101561035f576000838281518110610b6a57610b6a61251b565b60200260200101519050610b7d816112ce565b610b8781336117be565b610b9181336118bf565b50600101610b4e565b805160005b81811015610cdc576000838281518110610bbb57610bbb61251b565b602002602001015190506000816040015151905060005b81811015610c3c57600083604001518281518110610bf257610bf261251b565b60200260200101519050610c3381604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff16611bf99092919063ffffffff16565b50600101610bd2565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610c8557610c8561251b565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610cca91815260200190565b60405180910390a45050600101610b9f565b5047156104c1576104c13347611c40565b6040517f5072696f726974794f726465722800000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602e8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603d8201527f75696e743235362061756374696f6e5374617274426c6f636b2c000000000000604e8201527f75696e7432353620626173656c696e655072696f726974794665655765692c0060688201527f5072696f72697479496e70757420696e7075742c00000000000000000000000060878201527f5072696f726974794f75747075745b5d206f7574707574732900000000000000609b82015260009060b401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260c08301909152608d8083529091906130e86020830139604051806080016040528060488152602001613072604891396040518060800160405280605b8152602001613175605b9139604051602001610e879493929190612cef565b60405160208183030381529060405280519060200120610eaa8360000151611cda565b836020015184604001518560600151610ec68760800151611d74565b610ed38860a00151611ddb565b60408051602081019890985287019590955273ffffffffffffffffffffffffffffffffffffffff9093166060860152608085019190915260a084015260c083015260e0820152610100015b604051602081830303815290604052805190602001209050919050565b805160600151421115610f7a576040517f769d11e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040810151602082015173ffffffffffffffffffffffffffffffffffffffff1615801590610fa757508043105b8015610fb7575060c08201515181115b15610fe1576020820151610fd990610fcf8486611e79565b8460e00151611eee565b5060c0810151515b8043101561101b576040517fc603552000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6080820151604001511561035f5760005b8260a001515181101561067d5760008360a0015182815181106110515761105161251b565b6020026020010151604001511115611095576040517fa6b844f500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60010161102c565b6000483a10156110d9576040517ff3eb44e500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50483a03818111156110e9570390565b5060005b919050565b61112c6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b600083604001518361113e9190612d75565b905062989680811061118c576040518060600160405280856000015173ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200185602001518152509150506111e3565b6040805160608101909152845173ffffffffffffffffffffffffffffffffffffffff168152602081016111d46111c58462989680612d8c565b60208801519062989680612016565b81526020868101519101529150505b92915050565b81516060908067ffffffffffffffff811115611207576112076124ec565b60405190808252806020026020018201604052801561127057816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816112255790505b50915060005b818110156112c6576112a18582815181106112935761129361251b565b602002602001015185612052565b8382815181106112b3576112b361251b565b6020908102919091010152600101611276565b505092915050565b60015473ffffffffffffffffffffffffffffffffffffffff166112ee5750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf0390611345908590600401612d9f565b600060405180830381865afa158015611362573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526113a89190810190612db2565b60408301515181519192509060006113c08284612e82565b67ffffffffffffffff8111156113d8576113d86124ec565b60405190808252806020026020018201604052801561144157816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816113f65790505b50905060005b8381101561149257856040015181815181106114655761146561251b565b602002602001015182828151811061147f5761147f61251b565b6020908102919091010152600101611447565b5060008060005b848110156117ad5760008782815181106114b5576114b561251b565b6020026020010151905060005b82811015611573578881815181106114dc576114dc61251b565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff160361156b5781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b6001016114c2565b506000805b888110156116345760008b6040015182815181106115985761159861251b565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff160361162b578515611615576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516116249084612e82565b9250600196505b50600101611578565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff9182169116036116ad578415611694576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516116a69082612e82565b9050600193505b806000036117025781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b611710816005612710612016565b82602001511115611783578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610700565b8186848a01815181106117985761179861251b565b60209081029190910101525050600101611499565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff16301461180f576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104c1578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b9061188b9084908690600401612e95565b60006040518083038186803b1580156118a357600080fd5b505afa1580156118b7573d6000803e3d6000fd5b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe61197f846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff86168252808701518101519082015285600001516020015186608001516040518060c00160405280608d81526020016130e8608d913960405180608001604052806048815260200161307260489139604080517f5072696f726974794f726465722800000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602e8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603d8201527f75696e743235362061756374696f6e5374617274426c6f636b2c000000000000604e8201527f75696e7432353620626173656c696e655072696f726974794665655765692c0060688201527f5072696f72697479496e70757420696e7075742c00000000000000000000000060878201527f5072696f726974794f75747075745b5d206f7574707574732900000000000000609b820152815160948183030181526101348201909252605b60b48201818152916131759060d401396040518060600160405280602e81526020016130ba602e9139604051602001611b5e959493929190612ec4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611bcb9695949392600401612f5f565b600060405180830381600087803b158015611be557600080fd5b505af11580156118b7573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff8316611c1e5761035f8282611c40565b61035f73ffffffffffffffffffffffffffffffffffffffff84163384846120f4565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611c9a576040519150601f19603f3d011682016040523d82523d6000602084013e611c9f565b606091505b505090508061035f576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060c00160405280608d81526020016130e8608d913980516020918201208351848301516040808701516060880151608089015160a08a01518051908901209351610f1e98939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b60006040518060800160405280604881526020016130726048913980516020918201208351848301516040808701519051610f1e950193845273ffffffffffffffffffffffffffffffffffffffff9290921660208401526040830152606082015260800190565b600080825160200267ffffffffffffffff811115611dfb57611dfb6124ec565b6040519080825280601f01601f191660200182016040528015611e25576020820181803683370190505b50905060005b8351811015611e6a576000611e58858381518110611e4b57611e4b61251b565b60200260200101516121e6565b60208381028501015250600101611e2b565b50805160209091012092915050565b6000818360c00151604051602001611e949151815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611ed09291602001613027565b60405160208183030381529060405280519060200120905092915050565b60008082806020019051810190611f05919061304d565b91509150600083604081518110611f1e57611f1e61251b565b0160209081015160408051600080825293810180835289905260f89290921c9082018190526060820186905260808201859052925060019060a0016020604051602081039080840390855afa158015611f7b573d6000803e3d6000fd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141580611fd6575073ffffffffffffffffffffffffffffffffffffffff8116155b1561200d576040517fd7815be100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048411830215820261204b57600080fd5b5091020490565b60408051606081018252600080825260208201819052918101919091526040518060600160405280846000015173ffffffffffffffffffffffffffffffffffffffff1681526020016120c98560400151856120ad9190612d75565b6120ba9062989680612e82565b6020870151906298968061225d565b8152602001846060015173ffffffffffffffffffffffffffffffffffffffff16815250905092915050565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d11600160005114161716915050806121df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610700565b5050505050565b60006040518060800160405280605b8152602001613175605b9139805160209182012083518483015160408087015160608801519151610f1e969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048411830215820261229257600080fd5b50910281810615159190040190565b6000604082840312156122b357600080fd5b50919050565b60008083601f8401126122cb57600080fd5b50813567ffffffffffffffff8111156122e357600080fd5b6020830191508360208285010111156122fb57600080fd5b9250929050565b60008060006040848603121561231757600080fd5b833567ffffffffffffffff8082111561232f57600080fd5b61233b878388016122a1565b9450602086013591508082111561235157600080fd5b5061235e868287016122b9565b9497909650939450505050565b60008083601f84011261237d57600080fd5b50813567ffffffffffffffff81111561239557600080fd5b6020830191508360208260051b85010111156122fb57600080fd5b600080602083850312156123c357600080fd5b823567ffffffffffffffff8111156123da57600080fd5b6123e68582860161236b565b90969095509350505050565b6000806000806040858703121561240857600080fd5b843567ffffffffffffffff8082111561242057600080fd5b61242c8883890161236b565b9096509450602087013591508082111561244557600080fd5b50612452878288016122b9565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089157600080fd5b80356110ed8161245e565b60006020828403121561249d57600080fd5b81356124a88161245e565b9392505050565b6000602082840312156124c157600080fd5b813567ffffffffffffffff8111156124d857600080fd5b6124e4848285016122a1565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b8381101561256557818101518382015260200161254d565b50506000910152565b6000815180845261258681602086016020860161254a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b83811015612618578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a01526040918201511690880152606090960195908201906001016125cd565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526126976101a085018261256e565b905060208301516126d56020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b50604083015184820360808601526126ed82826125b8565b915050606083015184820360a0860152612707828261256e565b915050608083015160c08501528091505092915050565b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b83811015612793577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018552612781868351612623565b95509382019390820190600101612747565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261281857600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261285757600080fd5b83018035915067ffffffffffffffff82111561287257600080fd5b6020019150368190038213156122fb57600080fd5b6040516060810167ffffffffffffffff811182821017156128aa576128aa6124ec565b60405290565b6040516080810167ffffffffffffffff811182821017156128aa576128aa6124ec565b604051610100810167ffffffffffffffff811182821017156128aa576128aa6124ec565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561293e5761293e6124ec565b604052919050565b600082601f83011261295757600080fd5b813567ffffffffffffffff811115612971576129716124ec565b6129a260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016128f7565b8181528460208386010111156129b757600080fd5b816020850160208301376000918101602001919091529392505050565b600060c082840312156129e657600080fd5b60405160c0810167ffffffffffffffff8282108183111715612a0a57612a0a6124ec565b8160405282935084359150612a1e8261245e565b908252602084013590612a308261245e565b816020840152604085013560408401526060850135606084015260808501359150612a5a8261245e565b81608084015260a0850135915080821115612a7457600080fd5b50612a8185828601612946565b60a0830152505092915050565b600060608284031215612aa057600080fd5b612aa8612887565b90508135612ab58161245e565b80825250602082013560208201526040820135604082015292915050565b600067ffffffffffffffff821115612aed57612aed6124ec565b5060051b60200190565b600082601f830112612b0857600080fd5b81356020612b1d612b1883612ad3565b6128f7565b82815260079290921b84018101918181019086841115612b3c57600080fd5b8286015b84811015612ba15760808189031215612b595760008081fd5b612b616128b0565b8135612b6c8161245e565b8152818501358582015260408083013590820152606080830135612b8f8161245e565b90820152835291830191608001612b40565b509695505050505050565b600060208284031215612bbe57600080fd5b6040516020810181811067ffffffffffffffff82111715612be157612be16124ec565b6040529135825250919050565b600060208284031215612c0057600080fd5b813567ffffffffffffffff80821115612c1857600080fd5b908301906101408286031215612c2d57600080fd5b612c356128d3565b823582811115612c4457600080fd5b612c50878286016129d4565b825250612c5f60208401612480565b60208201526040830135604082015260608301356060820152612c858660808501612a8e565b608082015260e083013582811115612c9c57600080fd5b612ca887828601612af7565b60a083015250612cbc866101008501612bac565b60c082015261012083013582811115612cd457600080fd5b612ce087828601612946565b60e08301525095945050505050565b60008551612d01818460208a0161254a565b855190830190612d15818360208a0161254a565b8551910190612d2881836020890161254a565b8451910190612d3b81836020880161254a565b019695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176111e3576111e3612d46565b818103818111156111e3576111e3612d46565b6020815260006124a86020830184612623565b60006020808385031215612dc557600080fd5b825167ffffffffffffffff811115612ddc57600080fd5b8301601f81018513612ded57600080fd5b8051612dfb612b1882612ad3565b81815260609182028301840191848201919088841115612e1a57600080fd5b938501935b83851015612e765780858a031215612e375760008081fd5b612e3f612887565b8551612e4a8161245e565b81528587015187820152604080870151612e638161245e565b9082015283529384019391850191612e1f565b50979650505050505050565b808201808211156111e3576111e3612d46565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006124e46040830184612623565b7f5072696f726974794f72646572207769746e65737329000000000000000000008152600060168751612efd8183860160208c0161254a565b875190840190612f138184840160208c0161254a565b8751910190612f288184840160208b0161254a565b8651910190612f3d8184840160208a0161254a565b8551910190612f52818484016020890161254a565b0101979650505050505050565b6000610140612f8f838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b6020890151604084015260408901516060840152612fd06080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e0840152806101008401526130058184018661256e565b905082810361012084015261301a818561256e565b9998505050505050505050565b8281526000825161303f81602085016020870161254a565b919091016020019392505050565b6000806040838503121561306057600080fd5b50508051602090910151909290915056fe5072696f72697479496e707574286164647265737320746f6b656e2c75696e7432353620616d6f756e742c75696e74323536206d70735065725072696f7269747946656557656929546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e44617461295072696f726974794f7574707574286164647265737320746f6b656e2c75696e7432353620616d6f756e742c75696e74323536206d70735065725072696f726974794665655765692c6164647265737320726563697069656e7429a2646970667358221220358d7a71c93a2892c688558b4c23afeeb6f299d0931a1e20b502e160ae8617e064736f6c63430008180033","sourceMap":"637:4203:74:-:0;;;1277:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1045:5:41;:14;;-1:-1:-1;;;;;;1045:14:41;-1:-1:-1;;;;;1045:14:41;;;;;;;1075:40;;1347:8:74;;1045:14:41;;;;;;:5;1075:40;;1045:5;;1075:40;-1:-1:-1;;1716:1:27;1821:7;:22;-1:-1:-1;;;;;;1352:18:70::1;;::::0;-1:-1:-1;637:4203:74;;-1:-1:-1;637:4203:74;14:141:118;-1:-1:-1;;;;;99:31:118;;89:42;;79:70;;145:1;142;135:12;79:70;14:141;:::o;160:423::-;257:6;265;318:2;306:9;297:7;293:23;289:32;286:52;;;334:1;331;324:12;286:52;366:9;360:16;385:41;420:5;385:41;:::i;:::-;495:2;480:18;;474:25;445:5;;-1:-1:-1;508:43:118;474:25;508:43;:::i;:::-;570:7;560:17;;;160:423;;;;;:::o;:::-;637:4203:74;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361061009a5760003560e01c80632d771389116100695780636999b3771161004e5780636999b377146101715780638da5cb5b1461019e578063f2fde38b146101cb57600080fd5b80632d7713891461013e5780633f62192e1461015e57600080fd5b80630d335884146100a65780630d7a16c3146100bb57806312261ee7146100ce57806313fb72c71461012b57600080fd5b366100a157005b600080fd5b6100b96100b4366004612302565b6101eb565b005b6100b96100c93660046123b0565b610364565b3480156100da57600080fd5b506101027f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b96101393660046123f2565b6104c5565b34801561014a57600080fd5b506100b961015936600461248b565b610683565b6100b961016c3660046124af565b61078f565b34801561017d57600080fd5b506001546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101aa57600080fd5b506000546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d757600080fd5b506100b96101e636600461248b565b610894565b6101f3610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161020a5790505090506102b2846109f6565b816000815181106102c5576102c561251b565b60200260200101819052506102d981610b49565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da628906103199084908790879060040161271e565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b5050505061035481610b9a565b5061035f6001600255565b505050565b61036c610985565b8060008167ffffffffffffffff811115610388576103886124ec565b60405190808252806020026020018201604052801561044357816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103a65790505b50905060005b828110156104a25761047d8585838181106104665761046661251b565b905060200281019061047891906127e4565b6109f6565b82828151811061048f5761048f61251b565b6020908102919091010152600101610449565b506104ac81610b49565b6104b581610b9a565b50506104c16001600255565b5050565b6104cd610985565b8260008167ffffffffffffffff8111156104e9576104e96124ec565b6040519080825280602002602001820160405280156105a457816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105075790505b50905060005b828110156105ec576105c78787838181106104665761046661251b565b8282815181106105d9576105d961251b565b60209081029190910101526001016105aa565b506105f681610b49565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da628906106369084908890889060040161271e565b600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b5050505061067181610b9a565b505061067d6001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610797610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107ae579050509050610856826109f6565b816000815181106108695761086961251b565b602002602001018190525061087d81610b49565b61088681610b9a565b506108916001600255565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610700565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610700565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a6f8380612822565b810190610a7c9190612bee565b90506000610a8982610ced565b9050610a958183610f3b565b6000610aa4836060015161109d565b90506040518060a0016040528084600001518152602001610ad28386608001516110f290919063ffffffff16565b8152602001610aee838660a001516111e990919063ffffffff16565b8152602001868060200190610b039190612822565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525060200192909252509392505050565b805160005b8181101561035f576000838281518110610b6a57610b6a61251b565b60200260200101519050610b7d816112ce565b610b8781336117be565b610b9181336118bf565b50600101610b4e565b805160005b81811015610cdc576000838281518110610bbb57610bbb61251b565b602002602001015190506000816040015151905060005b81811015610c3c57600083604001518281518110610bf257610bf261251b565b60200260200101519050610c3381604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff16611bf99092919063ffffffff16565b50600101610bd2565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610c8557610c8561251b565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610cca91815260200190565b60405180910390a45050600101610b9f565b5047156104c1576104c13347611c40565b6040517f5072696f726974794f726465722800000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602e8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603d8201527f75696e743235362061756374696f6e5374617274426c6f636b2c000000000000604e8201527f75696e7432353620626173656c696e655072696f726974794665655765692c0060688201527f5072696f72697479496e70757420696e7075742c00000000000000000000000060878201527f5072696f726974794f75747075745b5d206f7574707574732900000000000000609b82015260009060b401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260c08301909152608d8083529091906130e86020830139604051806080016040528060488152602001613072604891396040518060800160405280605b8152602001613175605b9139604051602001610e879493929190612cef565b60405160208183030381529060405280519060200120610eaa8360000151611cda565b836020015184604001518560600151610ec68760800151611d74565b610ed38860a00151611ddb565b60408051602081019890985287019590955273ffffffffffffffffffffffffffffffffffffffff9093166060860152608085019190915260a084015260c083015260e0820152610100015b604051602081830303815290604052805190602001209050919050565b805160600151421115610f7a576040517f769d11e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040810151602082015173ffffffffffffffffffffffffffffffffffffffff1615801590610fa757508043105b8015610fb7575060c08201515181115b15610fe1576020820151610fd990610fcf8486611e79565b8460e00151611eee565b5060c0810151515b8043101561101b576040517fc603552000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6080820151604001511561035f5760005b8260a001515181101561067d5760008360a0015182815181106110515761105161251b565b6020026020010151604001511115611095576040517fa6b844f500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60010161102c565b6000483a10156110d9576040517ff3eb44e500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50483a03818111156110e9570390565b5060005b919050565b61112c6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b600083604001518361113e9190612d75565b905062989680811061118c576040518060600160405280856000015173ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200185602001518152509150506111e3565b6040805160608101909152845173ffffffffffffffffffffffffffffffffffffffff168152602081016111d46111c58462989680612d8c565b60208801519062989680612016565b81526020868101519101529150505b92915050565b81516060908067ffffffffffffffff811115611207576112076124ec565b60405190808252806020026020018201604052801561127057816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816112255790505b50915060005b818110156112c6576112a18582815181106112935761129361251b565b602002602001015185612052565b8382815181106112b3576112b361251b565b6020908102919091010152600101611276565b505092915050565b60015473ffffffffffffffffffffffffffffffffffffffff166112ee5750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf0390611345908590600401612d9f565b600060405180830381865afa158015611362573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526113a89190810190612db2565b60408301515181519192509060006113c08284612e82565b67ffffffffffffffff8111156113d8576113d86124ec565b60405190808252806020026020018201604052801561144157816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816113f65790505b50905060005b8381101561149257856040015181815181106114655761146561251b565b602002602001015182828151811061147f5761147f61251b565b6020908102919091010152600101611447565b5060008060005b848110156117ad5760008782815181106114b5576114b561251b565b6020026020010151905060005b82811015611573578881815181106114dc576114dc61251b565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff160361156b5781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b6001016114c2565b506000805b888110156116345760008b6040015182815181106115985761159861251b565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff160361162b578515611615576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516116249084612e82565b9250600196505b50600101611578565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff9182169116036116ad578415611694576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516116a69082612e82565b9050600193505b806000036117025781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b611710816005612710612016565b82602001511115611783578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610700565b8186848a01815181106117985761179861251b565b60209081029190910101525050600101611499565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff16301461180f576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104c1578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b9061188b9084908690600401612e95565b60006040518083038186803b1580156118a357600080fd5b505afa1580156118b7573d6000803e3d6000fd5b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe61197f846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff86168252808701518101519082015285600001516020015186608001516040518060c00160405280608d81526020016130e8608d913960405180608001604052806048815260200161307260489139604080517f5072696f726974794f726465722800000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602e8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603d8201527f75696e743235362061756374696f6e5374617274426c6f636b2c000000000000604e8201527f75696e7432353620626173656c696e655072696f726974794665655765692c0060688201527f5072696f72697479496e70757420696e7075742c00000000000000000000000060878201527f5072696f726974794f75747075745b5d206f7574707574732900000000000000609b820152815160948183030181526101348201909252605b60b48201818152916131759060d401396040518060600160405280602e81526020016130ba602e9139604051602001611b5e959493929190612ec4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611bcb9695949392600401612f5f565b600060405180830381600087803b158015611be557600080fd5b505af11580156118b7573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff8316611c1e5761035f8282611c40565b61035f73ffffffffffffffffffffffffffffffffffffffff84163384846120f4565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611c9a576040519150601f19603f3d011682016040523d82523d6000602084013e611c9f565b606091505b505090508061035f576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060c00160405280608d81526020016130e8608d913980516020918201208351848301516040808701516060880151608089015160a08a01518051908901209351610f1e98939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b60006040518060800160405280604881526020016130726048913980516020918201208351848301516040808701519051610f1e950193845273ffffffffffffffffffffffffffffffffffffffff9290921660208401526040830152606082015260800190565b600080825160200267ffffffffffffffff811115611dfb57611dfb6124ec565b6040519080825280601f01601f191660200182016040528015611e25576020820181803683370190505b50905060005b8351811015611e6a576000611e58858381518110611e4b57611e4b61251b565b60200260200101516121e6565b60208381028501015250600101611e2b565b50805160209091012092915050565b6000818360c00151604051602001611e949151815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611ed09291602001613027565b60405160208183030381529060405280519060200120905092915050565b60008082806020019051810190611f05919061304d565b91509150600083604081518110611f1e57611f1e61251b565b0160209081015160408051600080825293810180835289905260f89290921c9082018190526060820186905260808201859052925060019060a0016020604051602081039080840390855afa158015611f7b573d6000803e3d6000fd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141580611fd6575073ffffffffffffffffffffffffffffffffffffffff8116155b1561200d576040517fd7815be100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048411830215820261204b57600080fd5b5091020490565b60408051606081018252600080825260208201819052918101919091526040518060600160405280846000015173ffffffffffffffffffffffffffffffffffffffff1681526020016120c98560400151856120ad9190612d75565b6120ba9062989680612e82565b6020870151906298968061225d565b8152602001846060015173ffffffffffffffffffffffffffffffffffffffff16815250905092915050565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d11600160005114161716915050806121df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610700565b5050505050565b60006040518060800160405280605b8152602001613175605b9139805160209182012083518483015160408087015160608801519151610f1e969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048411830215820261229257600080fd5b50910281810615159190040190565b6000604082840312156122b357600080fd5b50919050565b60008083601f8401126122cb57600080fd5b50813567ffffffffffffffff8111156122e357600080fd5b6020830191508360208285010111156122fb57600080fd5b9250929050565b60008060006040848603121561231757600080fd5b833567ffffffffffffffff8082111561232f57600080fd5b61233b878388016122a1565b9450602086013591508082111561235157600080fd5b5061235e868287016122b9565b9497909650939450505050565b60008083601f84011261237d57600080fd5b50813567ffffffffffffffff81111561239557600080fd5b6020830191508360208260051b85010111156122fb57600080fd5b600080602083850312156123c357600080fd5b823567ffffffffffffffff8111156123da57600080fd5b6123e68582860161236b565b90969095509350505050565b6000806000806040858703121561240857600080fd5b843567ffffffffffffffff8082111561242057600080fd5b61242c8883890161236b565b9096509450602087013591508082111561244557600080fd5b50612452878288016122b9565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089157600080fd5b80356110ed8161245e565b60006020828403121561249d57600080fd5b81356124a88161245e565b9392505050565b6000602082840312156124c157600080fd5b813567ffffffffffffffff8111156124d857600080fd5b6124e4848285016122a1565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b8381101561256557818101518382015260200161254d565b50506000910152565b6000815180845261258681602086016020860161254a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b83811015612618578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a01526040918201511690880152606090960195908201906001016125cd565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526126976101a085018261256e565b905060208301516126d56020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b50604083015184820360808601526126ed82826125b8565b915050606083015184820360a0860152612707828261256e565b915050608083015160c08501528091505092915050565b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b83811015612793577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018552612781868351612623565b95509382019390820190600101612747565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261281857600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261285757600080fd5b83018035915067ffffffffffffffff82111561287257600080fd5b6020019150368190038213156122fb57600080fd5b6040516060810167ffffffffffffffff811182821017156128aa576128aa6124ec565b60405290565b6040516080810167ffffffffffffffff811182821017156128aa576128aa6124ec565b604051610100810167ffffffffffffffff811182821017156128aa576128aa6124ec565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561293e5761293e6124ec565b604052919050565b600082601f83011261295757600080fd5b813567ffffffffffffffff811115612971576129716124ec565b6129a260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016128f7565b8181528460208386010111156129b757600080fd5b816020850160208301376000918101602001919091529392505050565b600060c082840312156129e657600080fd5b60405160c0810167ffffffffffffffff8282108183111715612a0a57612a0a6124ec565b8160405282935084359150612a1e8261245e565b908252602084013590612a308261245e565b816020840152604085013560408401526060850135606084015260808501359150612a5a8261245e565b81608084015260a0850135915080821115612a7457600080fd5b50612a8185828601612946565b60a0830152505092915050565b600060608284031215612aa057600080fd5b612aa8612887565b90508135612ab58161245e565b80825250602082013560208201526040820135604082015292915050565b600067ffffffffffffffff821115612aed57612aed6124ec565b5060051b60200190565b600082601f830112612b0857600080fd5b81356020612b1d612b1883612ad3565b6128f7565b82815260079290921b84018101918181019086841115612b3c57600080fd5b8286015b84811015612ba15760808189031215612b595760008081fd5b612b616128b0565b8135612b6c8161245e565b8152818501358582015260408083013590820152606080830135612b8f8161245e565b90820152835291830191608001612b40565b509695505050505050565b600060208284031215612bbe57600080fd5b6040516020810181811067ffffffffffffffff82111715612be157612be16124ec565b6040529135825250919050565b600060208284031215612c0057600080fd5b813567ffffffffffffffff80821115612c1857600080fd5b908301906101408286031215612c2d57600080fd5b612c356128d3565b823582811115612c4457600080fd5b612c50878286016129d4565b825250612c5f60208401612480565b60208201526040830135604082015260608301356060820152612c858660808501612a8e565b608082015260e083013582811115612c9c57600080fd5b612ca887828601612af7565b60a083015250612cbc866101008501612bac565b60c082015261012083013582811115612cd457600080fd5b612ce087828601612946565b60e08301525095945050505050565b60008551612d01818460208a0161254a565b855190830190612d15818360208a0161254a565b8551910190612d2881836020890161254a565b8451910190612d3b81836020880161254a565b019695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176111e3576111e3612d46565b818103818111156111e3576111e3612d46565b6020815260006124a86020830184612623565b60006020808385031215612dc557600080fd5b825167ffffffffffffffff811115612ddc57600080fd5b8301601f81018513612ded57600080fd5b8051612dfb612b1882612ad3565b81815260609182028301840191848201919088841115612e1a57600080fd5b938501935b83851015612e765780858a031215612e375760008081fd5b612e3f612887565b8551612e4a8161245e565b81528587015187820152604080870151612e638161245e565b9082015283529384019391850191612e1f565b50979650505050505050565b808201808211156111e3576111e3612d46565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006124e46040830184612623565b7f5072696f726974794f72646572207769746e65737329000000000000000000008152600060168751612efd8183860160208c0161254a565b875190840190612f138184840160208c0161254a565b8751910190612f288184840160208b0161254a565b8651910190612f3d8184840160208a0161254a565b8551910190612f52818484016020890161254a565b0101979650505050505050565b6000610140612f8f838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b6020890151604084015260408901516060840152612fd06080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e0840152806101008401526130058184018661256e565b905082810361012084015261301a818561256e565b9998505050505050505050565b8281526000825161303f81602085016020870161254a565b919091016020019392505050565b6000806040838503121561306057600080fd5b50508051602090910151909290915056fe5072696f72697479496e707574286164647265737320746f6b656e2c75696e7432353620616d6f756e742c75696e74323536206d70735065725072696f7269747946656557656929546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e44617461295072696f726974794f7574707574286164647265737320746f6b656e2c75696e7432353620616d6f756e742c75696e74323536206d70735065725072696f726974794665655765692c6164647265737320726563697069656e7429a2646970667358221220358d7a71c93a2892c688558b4c23afeeb6f299d0931a1e20b502e160ae8617e064736f6c63430008180033","sourceMap":"637:4203:74:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1721:435:70;;;;;;:::i;:::-;;:::i;:::-;;2191:453;;;;;;:::i;:::-;;:::i;1212:33::-;;;;;;;;;;;;;;;;;;2288:42:118;2276:55;;;2258:74;;2246:2;2231:18;1212:33:70;;;;;;;2679:614;;;;;;:::i;:::-;;:::i;4161:289:48:-;;;;;;;;;;-1:-1:-1;4161:289:48;;;;;:::i;:::-;;:::i;1412:274:70:-;;;;;;:::i;:::-;;:::i;1479:43:48:-;;;;;;;;;;-1:-1:-1;1479:43:48;;;;;;;;690:20:41;;;;;;;;;;-1:-1:-1;690:20:41;;;;;;;;1312:161;;;;;;;;;;-1:-1:-1;1312:161:41;;;;;:::i;:::-;;:::i;1721:435:70:-;2261:21:27;:19;:21::i;:::-;1932:22:70::1;::::0;;1952:1:::1;1932:22:::0;;;;;::::1;::::0;;;1892:37:::1;::::0;1932:22:::1;;;;-1:-1:-1::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1932:22:70;;;;;;;::::1;::::0;::::1;;;;;1892:62;;1984:15;1993:5;1984:8;:15::i;:::-;1964:14;1979:1;1964:17;;;;;;;;:::i;:::-;;;;;;:35;;;;2010:24;2019:14;2010:8;:24::i;:::-;2044:74;::::0;;;;2061:10:::1;::::0;2044:44:::1;::::0;:74:::1;::::0;2089:14;;2105:12;;;;2044:74:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;2128:21;2134:14;2128:5;:21::i;:::-;1882:274;2303:20:27::0;1716:1;2809:7;:22;2629:209;2303:20;1721:435:70;;;:::o;2191:453::-;2261:21:27;:19;:21::i;:::-;2316:6:70;2293:20:::1;2316:6:::0;2379:33:::1;::::0;::::1;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2379:33:70;;;;;;;::::1;::::0;::::1;;;;;;2339:73;;2452:9;2447:115;2471:12;2467:1;:16;2447:115;;;2528:19;2537:6;;2544:1;2537:9;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;2528:8;:19::i;:::-;2508:14;2523:1;2508:17;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;:39;2485:3:::1;;2447:115;;;;2582:24;2591:14;2582:8;:24::i;:::-;2616:21;2622:14;2616:5;:21::i;:::-;2283:361;;2303:20:27::0;1716:1;2809:7;:22;2629:209;2303:20;2191:453:70;;:::o;2679:614::-;2261:21:27;:19;:21::i;:::-;2881:6:70;2858:20:::1;2881:6:::0;2944:33:::1;::::0;::::1;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2944:33:70;;;;;;;::::1;::::0;::::1;;;;;;2904:73;;3017:9;3012:115;3036:12;3032:1;:16;3012:115;;;3093:19;3102:6;;3109:1;3102:9;;;;;;;:::i;3093:19::-;3073:14;3088:1;3073:17;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;:39;3050:3:::1;;3012:115;;;;3147:24;3156:14;3147:8;:24::i;:::-;3181:74;::::0;;;;3198:10:::1;::::0;3181:44:::1;::::0;:74:::1;::::0;3226:14;;3242:12;;;;3181:74:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;3265:21;3271:14;3265:5;:21::i;:::-;2848:445;;2303:20:27::0;1716:1;2809:7;:22;2629:209;2303:20;2679:614:70;;;;:::o;4161:289:48:-;778:5:41;;;;764:10;:19;756:44;;;;;;;9611:2:118;756:44:41;;;9593:21:118;9650:2;9630:18;;;9623:30;9689:14;9669:18;;;9662:42;9721:18;;756:44:41;;;;;;;;;4286:13:48::1;::::0;;::::1;4310:57:::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;4382:61:::1;::::0;;4286:13;;;::::1;9985:34:118::0;;;10050:2;10035:18;;10028:43;;;;4382:61:48::1;::::0;9897:18:118;4382:61:48::1;;;;;;;4241:209;4161:289:::0;:::o;1412:274:70:-;2261:21:27;:19;:21::i;:::-;1546:22:70::1;::::0;;1566:1:::1;1546:22:::0;;;;;::::1;::::0;;;1506:37:::1;::::0;1546:22:::1;;;;-1:-1:-1::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1546:22:70;;;;;;;::::1;::::0;::::1;;;;;1506:62;;1598:15;1607:5;1598:8;:15::i;:::-;1578:14;1593:1;1578:17;;;;;;;;:::i;:::-;;;;;;:35;;;;1624:24;1633:14;1624:8;:24::i;:::-;1658:21;1664:14;1658:5;:21::i;:::-;1496:190;2303:20:27::0;1716:1;2809:7;:22;2629:209;2303:20;1412:274:70;:::o;1312:161:41:-;778:5;;;;764:10;:19;756:44;;;;;;;9611:2:118;756:44:41;;;9593:21:118;9650:2;9630:18;;;9623:30;9689:14;9669:18;;;9662:42;9721:18;;756:44:41;9409:336:118;756:44:41;1392:5:::1;:16:::0;;;::::1;;::::0;::::1;::::0;;::::1;::::0;;1424:42:::1;::::0;1392:16;;1445:10:::1;::::0;1424:42:::1;::::0;1392:5;1424:42:::1;1312:161:::0;:::o;2336:287:27:-;1759:1;2468:7;;:19;2460:63;;;;;;;10284:2:118;2460:63:27;;;10266:21:118;10323:2;10303:18;;;10296:30;10362:33;10342:18;;;10335:61;10413:18;;2460:63:27;10082:355:118;2460:63:27;1759:1;2598:18;;2336:287::o;1416:662:74:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1622:17:74;:11;;:17;:::i;:::-;1611:46;;;;;;;:::i;:::-;1582:75;;1667:17;1687:12;:5;:10;:12::i;:::-;1667:32;;1710;1725:9;1736:5;1710:14;:32::i;:::-;1753:19;1775:45;1791:5;:28;;;1775:15;:45::i;:::-;1753:67;;1847:224;;;;;;;;1881:5;:10;;;1847:224;;;;1912:30;1930:11;1912:5;:11;;;:17;;:30;;;;:::i;:::-;1847:224;;;;1965:32;1985:11;1965:5;:13;;;:19;;:32;;;;:::i;:::-;1847:224;;;;2016:11;:15;;;;;;;;:::i;:::-;1847:224;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1847:224:74;;;-1:-1:-1;1847:224:74;;;;;;-1:-1:-1;1831:240:74;1416:662;-1:-1:-1;;;1416:662:74:o;3441:405:70:-;3532:13;;3509:20;3579:251;3603:12;3599:1;:16;3579:251;;;3640:26;3669:6;3676:1;3669:9;;;;;;;;:::i;:::-;;;;;;;3640:38;;3696:18;3708:5;3696:11;:18::i;:::-;3732:26;:5;3747:10;3732:14;:26::i;:::-;3776:39;3797:5;3804:10;3776:20;:39::i;:::-;-1:-1:-1;3617:3:70;;3579:251;;3968:1267;4056:13;;4033:20;4236:536;4260:12;4256:1;:16;4236:536;;;4297:34;4334:6;4341:1;4334:9;;;;;;;;:::i;:::-;;;;;;;4297:46;;4361:21;4385:13;:21;;;:28;4361:52;;4436:9;4431:217;4455:13;4451:1;:17;4431:217;;;4497:25;4525:13;:21;;;4547:1;4525:24;;;;;;;;:::i;:::-;;;;;;;4497:52;;4571:58;4597:6;:16;;;4615:6;:13;;;4571:6;:12;;;:25;;;;:58;;;;;:::i;:::-;-1:-1:-1;4470:3:70;;4431:217;;;;4704:13;:18;;;:26;;;4671:86;;4692:10;4671:86;;4676:6;4683:1;4676:9;;;;;;;;:::i;:::-;;;;;;;:14;;;4671:86;4732:13;:18;;;:24;;;4671:86;;;;17718:25:118;;17706:2;17691:18;;17572:177;4671:86:70;;;;;;;;-1:-1:-1;;4274:3:70;;4236:536;;;-1:-1:-1;5112:21:70;:25;5108:121;;5153:65;5184:10;5196:21;5153:30;:65::i;5180:414:67:-;3102:254;;18574:16:118;3102:254:67;;;18562:29:118;18621:17;18607:12;;;18600:39;18669:19;18655:12;;;18648:41;18719:28;18705:12;;;18698:50;18778:33;18764:12;;;18757:55;18843:22;18828:13;;;18821:45;18897:27;18882:13;;;18875:50;5245:7:67;;18941:13:118;;3102:254:67;;;;;;;;;;3603:28;;;;;;;;;;3102:254;;;3603:28;3102:254;3603:28;;;3641:42;;;;;;;;;;;;;;;;;3693:43;;;;;;;;;;;;;;;;;3522:220;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3792:21;;;;;;5355:17;:5;:10;;;:15;:17::i;:::-;5390:5;:14;;;5422:5;:23;;;5463:5;:28;;;5509:17;5514:5;:11;;;5509:4;:17::i;:::-;5544:19;5549:5;:13;;;5544:4;:19::i;:::-;5294:283;;;;;;20187:25:118;;;;20228:18;;20221:34;;;;20303:42;20291:55;;;20271:18;;;20264:83;20363:18;;;20356:34;;;;20406:19;;;20399:35;20450:19;;;20443:35;20494:19;;;20487:35;20159:19;;5294:283:67;;;;;;;;;;;;;5271:316;;;;;;5264:323;;5180:414;;;:::o;2734:1351:74:-;2833:10;;:19;;;2855:15;-1:-1:-1;2829:92:74;;;2893:17;;;;;;;;;;;;;;2829:92;2959:23;;;;3302:14;;;;:28;;;;;;:64;;;3349:17;3334:12;:32;3302:64;:141;;;;-1:-1:-1;3386:18:74;;;;:37;:57;-1:-1:-1;3302:141:74;3285:352;;;3487:14;;;;3468:86;;3503:31;3487:5;3524:9;3503:20;:31::i;:::-;3536:5;:17;;;3468:18;:86::i;:::-;-1:-1:-1;3589:18:74;;;;:37;3285:352;3736:17;3721:12;:32;3717:88;;;3776:18;;;;;;;;;;;;;;3717:88;3819:11;;;;:32;;;:36;3815:264;;3876:9;3871:198;3895:5;:13;;;:20;3891:1;:24;3871:198;;;3984:1;3944:5;:13;;;3958:1;3944:16;;;;;;;;:::i;:::-;;;;;;;:37;;;:41;3940:115;;;4016:20;;;;;;;;;;;;;;3940:115;3917:3;;3871:198;;4399:439;4479:19;4528:13;4514:11;:27;4510:57;;;4550:17;;;;;;;;;;;;;;4510:57;-1:-1:-1;4629:13:74;4615:11;:27;4660:36;;;4656:166;;;4716:37;;4399:439::o;4656:166::-;-1:-1:-1;4806:1:74;4656:166;4399:439;;;:::o;1023:503:66:-;1110:17;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;1110:17:66;1139:21;1177:5;:26;;;1163:11;:40;;;;:::i;:::-;1139:64;;542:3;1217:13;:20;1213:126;;1260:68;;;;;;;;1279:5;:11;;;1260:68;;;;;;1300:1;1260:68;;;;1314:5;:12;;;1260:68;;;1253:75;;;;;1213:126;1355:164;;;;;;;;;1387:11;;1355:164;;;;;;;1420:51;1445:19;1451:13;542:3;1445:19;:::i;:::-;1420:12;;;;;542:3;1420:23;:51::i;:::-;1355:164;;;1496:12;;;;1355:164;;;1348:171;-1:-1:-1;;1023:503:66;;;;;:::o;2248:372::-;2430:14;;2364:27;;2430:14;2463:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;2463:31:66;;;;;;;;;;;;;;;2454:40;;2509:9;2504:110;2528:12;2524:1;:16;2504:110;;;2573:30;2579:7;2587:1;2579:10;;;;;;;;:::i;:::-;;;;;;;2591:11;2573:5;:30::i;:::-;2561:6;2568:1;2561:9;;;;;;;;:::i;:::-;;;;;;;;;;:42;2542:3;;2504:110;;;;2397:223;2248:372;;;;:::o;1825:2185:48:-;1910:13;;1902:36;1910:13;1898:73;;1825:2185;:::o;1898:73::-;2015:13;;:34;;;;;1981:31;;2015:13;;;:27;;:34;;2043:5;;2015:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2083:13;;;;:20;2140:17;;1981:68;;-1:-1:-1;2083:20:48;2059:21;2294:32;2140:17;2083:20;2294:32;:::i;:::-;2276:51;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;2276:51:48;;;;;;;;;;;;;;;2242:85;;2343:9;2338:101;2362:13;2358:1;:17;2338:101;;;2412:5;:13;;;2426:1;2412:16;;;;;;;;:::i;:::-;;;;;;;2396:10;2407:1;2396:13;;;;;;;;:::i;:::-;;;;;;;;;;:32;2377:3;;2338:101;;;;2449:19;2486:18;2527:9;2522:1445;2546:16;2542:1;:20;2522:1445;;;2583:28;2614:10;2625:1;2614:13;;;;;;;;:::i;:::-;;;;;;;2583:44;;2682:9;2677:191;2701:1;2697;:5;2677:191;;;2750:10;2761:1;2750:13;;;;;;;;:::i;:::-;;;;;;;:19;;;2731:38;;:9;:15;;;:38;;;2727:127;;2819:15;;2800:35;;;;;2288:42:118;2276:55;;;2800:35:48;;;2258:74:118;2231:18;;2800:35:48;2094:244:118;2727:127:48;2704:3;;2677:191;;;-1:-1:-1;2933:18:48;;2965:354;2989:13;2985:1;:17;2965:354;;;3027:25;3055:5;:13;;;3069:1;3055:16;;;;;;;;:::i;:::-;;;;;;;3027:44;;3109:9;:15;;;3093:31;;:6;:12;;;:31;;;3089:216;;3152:13;3148:46;;;3174:20;;;;;;;;;;;;;;3148:46;3230:13;;;;3216:27;;;;:::i;:::-;;;3282:4;3265:21;;3089:216;-1:-1:-1;3004:3:48;;2965:354;;;-1:-1:-1;3415:15:48;;3393:11;;;;:17;3385:45;;;;;;;3381:219;;3454:14;3450:47;;;3477:20;;;;;;;;;;;;;;3450:47;3529:11;;;;;:18;;3515:32;;;;:::i;:::-;;;3581:4;3565:20;;3381:219;3618:10;3632:1;3618:15;3614:60;;3658:15;;3642:32;;;;;2288:42:118;2276:55;;;3642:32:48;;;2258:74:118;2231:18;;3642:32:48;2094:244:118;3614:60:48;3712:39;:10;1424:1;1373:6;3712:21;:39::i;:::-;3693:9;:16;;;:58;3689:171;;;3790:15;;3807:16;;;;3825:19;;;;;3778:67;;;;;23118:42:118;23187:15;;;3778:67:48;;;23169:34:118;23219:18;;;23212:34;;;;23282:15;;;;23262:18;;;23255:43;23081:18;;3778:67:48;22906:398:118;3689:171:48;3933:9;3901:10;3928:1;3912:13;:17;3901:29;;;;;;;;:::i;:::-;;;;;;;;;;:41;-1:-1:-1;;2564:3:48;;2522:1445;;;-1:-1:-1;;;3977:13:48;;;;:26;;;;-1:-1:-1;;;1825:2185:48:o;429:396:68:-;552:18;;:26;527:52;;535:4;527:52;523:106;;602:16;;;;;;;;;;;;;;523:106;651:18;;:47;;;643:70;;;639:180;;729:18;;:47;;;:79;;;;;:56;;;;;;;:79;;786:6;;729:13;;:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;429:396;;:::o;2116:345:74:-;2214:7;:33;;;2261:16;:5;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;509:303:65;;;572:149;;;;;641:11;;;;;;:17;572:149;;509:303;;;;572:149;;;685:11;;:21;;;572:149;;;;509:303;;742:10;;:16;;;509:303;;;;;;;782:10;;:19;;;;509:303;;;;;349:470;2261:16:74;-1:-1:-1;;;;;;;;;;;;;;;;;1071:90:65;;;;;;;;;;;;;1141:11;;;;:18;;;1071:90;;;;2330:5:74;:10;;;:18;;;2362:5;:10;;;2788:28:67;;;;;;;;;;;;;;;;;2830:42;;;;;;;;;;;;;;;;;3102:254;;;18574:16:118;3102:254:67;;;18562:29:118;18621:17;18607:12;;;18600:39;18669:19;18655:12;;;18648:41;18719:28;18705:12;;;18698:50;18778:33;18764:12;;;18757:55;18843:22;18828:13;;;18821:45;18897:27;18882:13;;;18875:50;3102:254:67;;;;;;;;;2945:43;;;;;;;18941:13:118;;;2945:43:67;;;18941:13:118;2945:43:67;;;;;3002:22;;;;;;;;;;;;;;;;;2720:314;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;2435:9:74;;;;2214:240;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1478:434:58;2501:18;;;1572:334;;1695:33;1710:9;1721:6;1695:14;:33::i;1572:334::-;1832:63;:32;;;1865:10;1877:9;1888:6;1832:32;:63::i;2084:189::-;2163:12;2180:9;:14;;2202:6;2180:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2162:51;;;2228:7;2223:43;;2244:22;;;;;;;;;;;;;;574:416:64;634:7;461:15;;;;;;;;;;;;;;;;;451:26;;;;;;;749:12;;779;;;;809:10;;;;;837:13;;;;868:33;;;;929:29;;;;919:40;;;;;;683:290;;;;809:10;;837:13;;868:33;;919:40;683:290;26888:25:118;;;26932:42;27010:15;;;27005:2;26990:18;;26983:43;27062:15;;;27057:2;27042:18;;27035:43;27109:2;27094:18;;27087:34;;;;27152:3;27137:19;;27130:35;27202:15;;;27196:3;27181:19;;27174:44;27249:3;27234:19;;27227:35;26875:3;26860:19;;26526:742;3878:217:67;3942:7;1859:25;;;;;;;;;;;;;;;;;1849:36;;;;;;;4033:11;;4046:12;;;;4060:26;;;;;3990:97;;;;;27519:25:118;;;27592:42;27580:55;;;;27575:2;27560:18;;27553:83;27667:2;27652:18;;27645:34;27710:2;27695:18;;27688:34;27506:3;27491:19;;27273:455;4570:489:67;4639:7;4682:25;4725:7;:14;4720:2;:19;4710:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4710:30:67;;4682:58;;4760:9;4755:243;4779:7;:14;4775:1;:18;4755:243;;;4818:18;4839:16;4844:7;4852:1;4844:10;;;;;;;;:::i;:::-;;;;;;;4839:4;:16::i;:::-;4947:4;4940:12;;;4911:42;;;4904:62;-1:-1:-1;4795:3:67;;4755:243;;;-1:-1:-1;5019:23:67;;;;;;;;4570:489;-1:-1:-1;;4570:489:67:o;5738:197::-;5832:7;5885:9;5907:5;:18;;;5896:30;;;;;;27975:13:118;27957:32;;27945:2;27930:18;;27733:262;5896:30:67;;;;;;;;;;;;;;;5868:59;;;5896:30;5868:59;;:::i;:::-;;;;;;;;;;;;;5858:70;;;;;;5851:77;;5738:197;;;;:::o;532:351:57:-;631:9;642;666:11;655:43;;;;;;;;;;;;:::i;:::-;630:68;;;;708:7;724:11;736:2;724:15;;;;;;;;:::i;:::-;;;;;;;767:24;;;750:14;767:24;;;;;;;;;28841:25:118;;;724:15:57;;;;;28882:18:118;;;28875:45;;;28936:18;;;28929:34;;;28979:18;;;28972:34;;;724:15:57;-1:-1:-1;767:24:57;;28813:19:118;;767:24:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;750:41;;817:6;805:18;;:8;:18;;;;:42;;;-1:-1:-1;827:20:57;;;;805:42;801:75;;;856:20;;;;;;;;;;;;;;801:75;620:263;;;;532:351;;;:::o;1564:526:44:-;1680:9;1928:1;1915:11;1911:19;1908:1;1905:26;1902:1;1898:34;1891:42;1878:11;1874:60;1864:116;;1964:1;1961;1954:12;1864:116;-1:-1:-1;2051:9:44;;2047:27;;1564:526::o;1815:332:66:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;1941:199:66;;;;;;;;1974:6;:12;;;1941:199;;;;;;2008:80;2053:6;:27;;;2039:11;:41;;;;:::i;:::-;2032:49;;542:3;2032:49;:::i;:::-;2008:13;;;;;542:3;2008:22;:80::i;:::-;1941:199;;;;2113:6;:16;;;1941:199;;;;;1934:206;;1815:332;;;;:::o;1328:1782:45:-;1466:12;1636:4;1630:11;1778:66;1759:17;1752:93;1902:42;1896:4;1892:53;1888:1;1869:17;1865:25;1858:88;2042:42;2038:2;2034:51;2029:2;2010:17;2006:26;1999:87;2172:6;2167:2;2148:17;2144:26;2137:42;3026:2;3023:1;3018:3;2999:17;2996:1;2989:5;2982;2977:52;2545:16;2538:24;2532:2;2514:16;2511:24;2507:1;2503;2497:8;2494:15;2490:46;2487:76;2287:756;2276:767;;;3071:7;3063:40;;;;;;;29219:2:118;3063:40:45;;;29201:21:118;29258:2;29238:18;;;29231:30;29297:22;29277:18;;;29270:50;29337:18;;3063:40:45;29017:344:118;3063:40:45;1456:1654;1328:1782;;;;:::o;4160:345:67:-;4226:7;2123:26;;;;;;;;;;;;;;;;;2113:37;;;;;;;4352:12;;4382:13;;;;4413:27;;;;;4458:16;;;;4275:213;;;;4413:27;;4458:16;4275:213;29625:25:118;;;29669:42;29747:15;;;29742:2;29727:18;;29720:43;29794:2;29779:18;;29772:34;;;;29837:2;29822:18;;29815:34;29886:15;29880:3;29865:19;;29858:44;29612:3;29597:19;;29366:542;2096:672:44;2210:9;2458:1;2445:11;2441:19;2438:1;2435:26;2432:1;2428:34;2421:42;2408:11;2404:60;2394:116;;2494:1;2491;2484:12;2394:116;-1:-1:-1;2728:9:44;;2691:27;;;2688:34;;2724:27;;;2684:68;;2096:672::o;14:159:118:-;78:5;123:2;114:6;109:3;105:16;101:25;98:45;;;139:1;136;129:12;98:45;-1:-1:-1;161:6:118;14:159;-1:-1:-1;14:159:118:o;178:347::-;229:8;239:6;293:3;286:4;278:6;274:17;270:27;260:55;;311:1;308;301:12;260:55;-1:-1:-1;334:20:118;;377:18;366:30;;363:50;;;409:1;406;399:12;363:50;446:4;438:6;434:17;422:29;;498:3;491:4;482:6;474;470:19;466:30;463:39;460:59;;;515:1;512;505:12;460:59;178:347;;;;;:::o;530:673::-;641:6;649;657;710:2;698:9;689:7;685:23;681:32;678:52;;;726:1;723;716:12;678:52;766:9;753:23;795:18;836:2;828:6;825:14;822:34;;;852:1;849;842:12;822:34;875:71;938:7;929:6;918:9;914:22;875:71;:::i;:::-;865:81;;999:2;988:9;984:18;971:32;955:48;;1028:2;1018:8;1015:16;1012:36;;;1044:1;1041;1034:12;1012:36;;1083:60;1135:7;1124:8;1113:9;1109:24;1083:60;:::i;:::-;530:673;;1162:8;;-1:-1:-1;1057:86:118;;-1:-1:-1;;;;530:673:118:o;1208:387::-;1291:8;1301:6;1355:3;1348:4;1340:6;1336:17;1332:27;1322:55;;1373:1;1370;1363:12;1322:55;-1:-1:-1;1396:20:118;;1439:18;1428:30;;1425:50;;;1471:1;1468;1461:12;1425:50;1508:4;1500:6;1496:17;1484:29;;1568:3;1561:4;1551:6;1548:1;1544:14;1536:6;1532:27;1528:38;1525:47;1522:67;;;1585:1;1582;1575:12;1600:489;1718:6;1726;1779:2;1767:9;1758:7;1754:23;1750:32;1747:52;;;1795:1;1792;1785:12;1747:52;1835:9;1822:23;1868:18;1860:6;1857:30;1854:50;;;1900:1;1897;1890:12;1854:50;1939:90;2021:7;2012:6;2001:9;1997:22;1939:90;:::i;:::-;2048:8;;1913:116;;-1:-1:-1;1600:489:118;-1:-1:-1;;;;1600:489:118:o;2343:797::-;2481:6;2489;2497;2505;2558:2;2546:9;2537:7;2533:23;2529:32;2526:52;;;2574:1;2571;2564:12;2526:52;2614:9;2601:23;2643:18;2684:2;2676:6;2673:14;2670:34;;;2700:1;2697;2690:12;2670:34;2739:90;2821:7;2812:6;2801:9;2797:22;2739:90;:::i;:::-;2848:8;;-1:-1:-1;2713:116:118;-1:-1:-1;2936:2:118;2921:18;;2908:32;;-1:-1:-1;2952:16:118;;;2949:36;;;2981:1;2978;2971:12;2949:36;;3020:60;3072:7;3061:8;3050:9;3046:24;3020:60;:::i;:::-;2343:797;;;;-1:-1:-1;3099:8:118;-1:-1:-1;;;;2343:797:118:o;3145:154::-;3231:42;3224:5;3220:54;3213:5;3210:65;3200:93;;3289:1;3286;3279:12;3304:134;3372:20;;3401:31;3372:20;3401:31;:::i;3443:247::-;3502:6;3555:2;3543:9;3534:7;3530:23;3526:32;3523:52;;;3571:1;3568;3561:12;3523:52;3610:9;3597:23;3629:31;3654:5;3629:31;:::i;:::-;3679:5;3443:247;-1:-1:-1;;;3443:247:118:o;3695:365::-;3786:6;3839:2;3827:9;3818:7;3814:23;3810:32;3807:52;;;3855:1;3852;3845:12;3807:52;3895:9;3882:23;3928:18;3920:6;3917:30;3914:50;;;3960:1;3957;3950:12;3914:50;3983:71;4046:7;4037:6;4026:9;4022:22;3983:71;:::i;:::-;3973:81;3695:365;-1:-1:-1;;;;3695:365:118:o;4559:184::-;4611:77;4608:1;4601:88;4708:4;4705:1;4698:15;4732:4;4729:1;4722:15;4748:184;4800:77;4797:1;4790:88;4897:4;4894:1;4887:15;4921:4;4918:1;4911:15;4937:250;5022:1;5032:113;5046:6;5043:1;5040:13;5032:113;;;5122:11;;;5116:18;5103:11;;;5096:39;5068:2;5061:10;5032:113;;;-1:-1:-1;;5179:1:118;5161:16;;5154:27;4937:250::o;5192:329::-;5233:3;5271:5;5265:12;5298:6;5293:3;5286:19;5314:76;5383:6;5376:4;5371:3;5367:14;5360:4;5353:5;5349:16;5314:76;:::i;:::-;5435:2;5423:15;5440:66;5419:88;5410:98;;;;5510:4;5406:109;;5192:329;-1:-1:-1;;5192:329:118:o;5787:700::-;5851:3;5889:5;5883:12;5916:6;5911:3;5904:19;5942:4;5971;5966:3;5962:14;5955:21;;6010:4;6003:5;5999:16;6033:1;6043:419;6057:6;6054:1;6051:13;6043:419;;;6116:13;;6223:9;;6152:42;6219:18;;;6207:31;;6278:11;;;6272:18;6258:12;;;6251:40;6314:4;6362:11;;;6356:18;6352:27;6338:12;;;6331:49;6409:4;6400:14;;;;6437:15;;;;6079:1;6072:9;6043:419;;;-1:-1:-1;6478:3:118;;5787:700;-1:-1:-1;;;;;5787:700:118:o;6492:1240::-;6548:3;6592:5;6586:12;6619:4;6614:3;6607:17;6643:42;6742:2;6727:12;6721:19;6717:28;6710:4;6705:3;6701:14;6694:52;6813:2;6805:4;6791:12;6787:23;6781:30;6777:39;6771:3;6766;6762:13;6755:62;6872:4;6858:12;6854:23;6848:30;6842:3;6837;6833:13;6826:53;6934:4;6920:12;6916:23;6910:30;6904:3;6899;6895:13;6888:53;7008:2;7000:4;6986:12;6982:23;6976:30;6972:39;6966:3;6961;6957:13;6950:62;;7067:4;7053:12;7049:23;7043:30;7021:52;;7104:4;7098:3;7093;7089:13;7082:27;7131:47;7173:3;7168;7164:13;7148:14;7131:47;:::i;:::-;7118:60;;7226:4;7219:5;7215:16;7209:23;7241:60;7295:4;7290:3;7286:14;7270;5606:12;;5620:42;5602:61;5590:74;;5713:4;5702:16;;;5696:23;5680:14;;;5673:47;5769:4;5758:16;;;5752:23;5736:14;;5729:47;5526:256;7241:60;;7349:4;7342:5;7338:16;7332:23;7398:3;7391:5;7387:15;7380:4;7375:3;7371:14;7364:39;7424:62;7480:5;7464:14;7424:62;:::i;:::-;7412:74;;;7534:4;7527:5;7523:16;7517:23;7582:3;7576:4;7572:14;7565:4;7560:3;7556:14;7549:38;7610;7643:4;7627:14;7610:38;:::i;:::-;7596:52;;;7697:4;7690:5;7686:16;7680:23;7673:4;7668:3;7664:14;7657:47;7720:6;7713:13;;;6492:1240;;;;:::o;7737:1274::-;7999:4;8047:2;8036:9;8032:18;8077:2;8066:9;8059:21;8100:6;8135;8129:13;8166:6;8158;8151:22;8204:2;8193:9;8189:18;8182:25;;8266:2;8256:6;8253:1;8249:14;8238:9;8234:30;8230:39;8216:53;;8288:4;8327:2;8319:6;8315:15;8348:1;8358:328;8372:6;8369:1;8366:13;8358:328;;;8461:66;8449:9;8441:6;8437:22;8433:95;8428:3;8421:108;8552:54;8599:6;8590;8584:13;8552:54;:::i;:::-;8542:64;-1:-1:-1;8664:12:118;;;;8629:15;;;;8394:1;8387:9;8358:328;;;8362:3;;8734:9;8726:6;8722:22;8717:2;8706:9;8702:18;8695:50;8769:6;8761;8754:22;8823:6;8815;8810:2;8802:6;8798:15;8785:45;8876:1;8850:19;;;8846:28;;8839:39;8927:2;8915:15;;;8932:66;8911:88;8899:101;;;8895:110;;;;7737:1274;-1:-1:-1;;;;;;7737:1274:118:o;9016:388::-;9114:4;9172:11;9159:25;9262:66;9251:8;9235:14;9231:29;9227:102;9207:18;9203:127;9193:155;;9344:1;9341;9334:12;9193:155;9365:33;;;;;9016:388;-1:-1:-1;;9016:388:118:o;10442:580::-;10519:4;10525:6;10585:11;10572:25;10675:66;10664:8;10648:14;10644:29;10640:102;10620:18;10616:127;10606:155;;10757:1;10754;10747:12;10606:155;10784:33;;10836:20;;;-1:-1:-1;10879:18:118;10868:30;;10865:50;;;10911:1;10908;10901:12;10865:50;10944:4;10932:17;;-1:-1:-1;10975:14:118;10971:27;;;10961:38;;10958:58;;;11012:1;11009;11002:12;11027:253;11099:2;11093:9;11141:4;11129:17;;11176:18;11161:34;;11197:22;;;11158:62;11155:88;;;11223:18;;:::i;:::-;11259:2;11252:22;11027:253;:::o;11285:::-;11357:2;11351:9;11399:4;11387:17;;11434:18;11419:34;;11455:22;;;11416:62;11413:88;;;11481:18;;:::i;11543:255::-;11615:2;11609:9;11657:6;11645:19;;11694:18;11679:34;;11715:22;;;11676:62;11673:88;;;11741:18;;:::i;11803:334::-;11874:2;11868:9;11930:2;11920:13;;11935:66;11916:86;11904:99;;12033:18;12018:34;;12054:22;;;12015:62;12012:88;;;12080:18;;:::i;:::-;12116:2;12109:22;11803:334;;-1:-1:-1;11803:334:118:o;12142:589::-;12184:5;12237:3;12230:4;12222:6;12218:17;12214:27;12204:55;;12255:1;12252;12245:12;12204:55;12291:6;12278:20;12317:18;12313:2;12310:26;12307:52;;;12339:18;;:::i;:::-;12383:114;12491:4;12422:66;12415:4;12411:2;12407:13;12403:86;12399:97;12383:114;:::i;:::-;12522:2;12513:7;12506:19;12568:3;12561:4;12556:2;12548:6;12544:15;12540:26;12537:35;12534:55;;;12585:1;12582;12575:12;12534:55;12650:2;12643:4;12635:6;12631:17;12624:4;12615:7;12611:18;12598:55;12698:1;12673:16;;;12691:4;12669:27;12662:38;;;;12677:7;12142:589;-1:-1:-1;;;12142:589:118:o;12736:1093::-;12792:5;12840:4;12828:9;12823:3;12819:19;12815:30;12812:50;;;12858:1;12855;12848:12;12812:50;12891:2;12885:9;12933:4;12925:6;12921:17;12957:18;13025:6;13013:10;13010:22;13005:2;12993:10;12990:18;12987:46;12984:72;;;13036:18;;:::i;:::-;13076:10;13072:2;13065:22;13105:6;13096:15;;13148:9;13135:23;13120:38;;13167:33;13192:7;13167:33;:::i;:::-;13209:23;;;13284:2;13269:18;;13256:32;;13297:33;13256:32;13297:33;:::i;:::-;13363:7;13358:2;13350:6;13346:15;13339:32;13432:2;13421:9;13417:18;13404:32;13399:2;13391:6;13387:15;13380:57;13498:2;13487:9;13483:18;13470:32;13465:2;13457:6;13453:15;13446:57;13555:3;13544:9;13540:19;13527:33;13512:48;;13569:33;13594:7;13569:33;:::i;:::-;13636:7;13630:3;13622:6;13618:16;13611:33;13695:3;13684:9;13680:19;13667:33;13653:47;;13723:2;13715:6;13712:14;13709:34;;;13739:1;13736;13729:12;13709:34;;13777:45;13818:3;13809:6;13798:9;13794:22;13777:45;:::i;:::-;13771:3;13763:6;13759:16;13752:71;;;12736:1093;;;;:::o;13834:426::-;13894:5;13942:4;13930:9;13925:3;13921:19;13917:30;13914:50;;;13960:1;13957;13950:12;13914:50;13982:22;;:::i;:::-;13973:31;;14041:9;14028:23;14060:33;14085:7;14060:33;:::i;:::-;14116:7;14109:5;14102:22;;14184:2;14173:9;14169:18;14156:32;14151:2;14144:5;14140:14;14133:56;14249:2;14238:9;14234:18;14221:32;14216:2;14209:5;14205:14;14198:56;13834:426;;;;:::o;14265:197::-;14339:4;14372:18;14364:6;14361:30;14358:56;;;14394:18;;:::i;:::-;-1:-1:-1;14439:1:118;14435:14;14451:4;14431:25;;14265:197::o;14467:1301::-;14535:5;14588:3;14581:4;14573:6;14569:17;14565:27;14555:55;;14606:1;14603;14596:12;14555:55;14642:6;14629:20;14668:4;14692:74;14708:57;14762:2;14708:57;:::i;:::-;14692:74;:::i;:::-;14800:15;;;14886:1;14882:10;;;;14870:23;;14866:32;;;14831:12;;;;14910:15;;;14907:35;;;14938:1;14935;14928:12;14907:35;14974:2;14966:6;14962:15;14986:753;15002:6;14997:3;14994:15;14986:753;;;15080:4;15074:3;15069;15065:13;15061:24;15058:114;;;15126:1;15155:2;15151;15144:14;15058:114;15198:22;;:::i;:::-;15261:3;15248:17;15278:33;15303:7;15278:33;:::i;:::-;15324:22;;15395:12;;;15382:26;15366:14;;;15359:50;15432:2;15483:12;;;15470:26;15454:14;;;15447:50;15520:2;15563:12;;;15550:26;15589:33;15550:26;15589:33;:::i;:::-;15642:14;;;15635:31;15679:18;;15717:12;;;;15028:4;15019:14;14986:753;;;-1:-1:-1;15757:5:118;14467:1301;-1:-1:-1;;;;;;14467:1301:118:o;15773:419::-;15840:5;15888:4;15876:9;15871:3;15867:19;15863:30;15860:50;;;15906:1;15903;15896:12;15860:50;15939:2;15933:9;15981:4;15973:6;15969:17;16052:6;16040:10;16037:22;16016:18;16004:10;16001:34;15998:62;15995:88;;;16063:18;;:::i;:::-;16099:2;16092:22;16162:23;;16147:39;;-1:-1:-1;16132:6:118;15773:419;-1:-1:-1;15773:419:118:o;16197:1370::-;16288:6;16341:2;16329:9;16320:7;16316:23;16312:32;16309:52;;;16357:1;16354;16347:12;16309:52;16397:9;16384:23;16426:18;16467:2;16459:6;16456:14;16453:34;;;16483:1;16480;16473:12;16453:34;16506:22;;;;16562:6;16544:16;;;16540:29;16537:49;;;16582:1;16579;16572:12;16537:49;16608:22;;:::i;:::-;16668:2;16655:16;16696:2;16686:8;16683:16;16680:36;;;16712:1;16709;16702:12;16680:36;16739:55;16786:7;16775:8;16771:2;16767:17;16739:55;:::i;:::-;16732:5;16725:70;;16827:31;16854:2;16850;16846:11;16827:31;:::i;:::-;16822:2;16815:5;16811:14;16804:55;16912:2;16908;16904:11;16891:25;16886:2;16879:5;16875:14;16868:49;16970:2;16966;16962:11;16949:25;16944:2;16937:5;16933:14;16926:49;17008:54;17054:7;17048:3;17044:2;17040:12;17008:54;:::i;:::-;17002:3;16995:5;16991:15;16984:79;17109:3;17105:2;17101:12;17088:26;17139:2;17129:8;17126:16;17123:36;;;17155:1;17152;17145:12;17123:36;17193:70;17255:7;17244:8;17240:2;17236:17;17193:70;:::i;:::-;17186:4;17179:5;17175:16;17168:96;;17298:64;17354:7;17345:6;17341:2;17337:15;17298:64;:::i;:::-;17291:4;17284:5;17280:16;17273:90;17409:3;17405:2;17401:12;17388:26;17439:2;17429:8;17426:16;17423:36;;;17455:1;17452;17445:12;17423:36;17492:44;17528:7;17517:8;17513:2;17509:17;17492:44;:::i;:::-;17486:3;17475:15;;17468:69;-1:-1:-1;17479:5:118;16197:1370;-1:-1:-1;;;;;16197:1370:118:o;18965:902::-;19232:3;19270:6;19264:13;19286:66;19345:6;19340:3;19333:4;19325:6;19321:17;19286:66;:::i;:::-;19415:13;;19374:16;;;;19437:70;19415:13;19374:16;19484:4;19472:17;;19437:70;:::i;:::-;19574:13;;19529:20;;;19596:70;19574:13;19529:20;19643:4;19631:17;;19596:70;:::i;:::-;19733:13;;19688:20;;;19755:70;19733:13;19688:20;19802:4;19790:17;;19755:70;:::i;:::-;19841:20;;18965:902;-1:-1:-1;;;;;;18965:902:118:o;20533:184::-;20585:77;20582:1;20575:88;20682:4;20679:1;20672:15;20706:4;20703:1;20696:15;20722:168;20795:9;;;20826;;20843:15;;;20837:22;;20823:37;20813:71;;20864:18;;:::i;20895:128::-;20962:9;;;20983:11;;;20980:37;;;20997:18;;:::i;21028:278::-;21221:2;21210:9;21203:21;21184:4;21241:59;21296:2;21285:9;21281:18;21273:6;21241:59;:::i;21311:1460::-;21436:6;21467:2;21510;21498:9;21489:7;21485:23;21481:32;21478:52;;;21526:1;21523;21516:12;21478:52;21559:9;21553:16;21592:18;21584:6;21581:30;21578:50;;;21624:1;21621;21614:12;21578:50;21647:22;;21700:4;21692:13;;21688:27;-1:-1:-1;21678:55:118;;21729:1;21726;21719:12;21678:55;21758:2;21752:9;21781:74;21797:57;21851:2;21797:57;:::i;21781:74::-;21889:15;;;21951:4;21990:13;;;21982:22;;21978:31;;;21920:12;;;;21877:3;22021:19;;;22018:39;;;22053:1;22050;22043:12;22018:39;22077:11;;;;22097:644;22113:6;22108:3;22105:15;22097:644;;;22193:2;22187:3;22178:7;22174:17;22170:26;22167:116;;;22237:1;22266:2;22262;22255:14;22167:116;22309:22;;:::i;:::-;22365:3;22359:10;22382:33;22407:7;22382:33;:::i;:::-;22428:22;;22492:12;;;22486:19;22470:14;;;22463:43;22529:2;22565:12;;;22559:19;22591:33;22559:19;22591:33;:::i;:::-;22644:14;;;22637:31;22681:18;;22130:12;;;;22719;;;;22097:644;;;-1:-1:-1;22760:5:118;21311:1460;-1:-1:-1;;;;;;;21311:1460:118:o;22776:125::-;22841:9;;;22862:10;;;22859:36;;;22875:18;;:::i;23309:398::-;23542:42;23534:6;23530:55;23519:9;23512:74;23622:2;23617;23606:9;23602:18;23595:30;23493:4;23642:59;23697:2;23686:9;23682:18;23674:6;23642:59;:::i;23712:1295::-;24158:24;24153:3;24146:37;24128:3;24202:2;24233:6;24227:13;24249:75;24317:6;24312:2;24307:3;24303:12;24296:4;24288:6;24284:17;24249:75;:::i;:::-;24384:13;;24343:16;;;;24406:76;24384:13;24460:11;;;24453:4;24441:17;;24406:76;:::i;:::-;24543:13;;24501:17;;;24565:76;24543:13;24619:11;;;24612:4;24600:17;;24565:76;:::i;:::-;24702:13;;24660:17;;;24724:76;24702:13;24778:11;;;24771:4;24759:17;;24724:76;:::i;:::-;24861:13;;24819:17;;;24883:76;24861:13;24937:11;;;24930:4;24918:17;;24883:76;:::i;:::-;24979:17;24975:26;;23712:1295;-1:-1:-1;;;;;;;23712:1295:118:o;25223:1088::-;25653:4;25682:3;25694:60;25744:9;25735:6;25729:13;25098:12;;25112:42;25094:61;25082:74;;25205:4;25194:16;;;25188:23;25172:14;;25165:47;25012:206;25694:60;25810:4;25802:6;25798:17;25792:24;25785:4;25774:9;25770:20;25763:54;25873:4;25865:6;25861:17;25855:24;25848:4;25837:9;25833:20;25826:54;25889:63;25947:3;25936:9;25932:19;25924:6;25098:12;;25112:42;25094:61;25082:74;;25205:4;25194:16;;;25188:23;25172:14;;25165:47;25012:206;25889:63;26001:42;25993:6;25989:55;25983:3;25972:9;25968:19;25961:84;26082:6;26076:3;26065:9;26061:19;26054:35;26126:2;26120:3;26109:9;26105:19;26098:31;26152:44;26192:2;26181:9;26177:18;26169:6;26152:44;:::i;:::-;26138:58;;26245:9;26237:6;26233:22;26227:3;26216:9;26212:19;26205:51;26273:32;26298:6;26290;26273:32;:::i;:::-;26265:40;25223:1088;-1:-1:-1;;;;;;;;;25223:1088:118:o;28000:359::-;28187:6;28182:3;28175:19;28157:3;28223:6;28217:13;28239:73;28305:6;28300:2;28295:3;28291:12;28286:2;28278:6;28274:15;28239:73;:::i;:::-;28332:16;;;;28350:2;28328:25;;28000:359;-1:-1:-1;;;28000:359:118:o;28364:245::-;28443:6;28451;28504:2;28492:9;28483:7;28479:23;28475:32;28472:52;;;28520:1;28517;28510:12;28472:52;-1:-1:-1;;28543:16:118;;28599:2;28584:18;;;28578:25;28543:16;;28578:25;;-1:-1:-1;28364:245:118:o","linkReferences":{},"immutableReferences":{"55025":[{"start":224,"length":32},{"start":6337,"length":32}]}},"methodIdentifiers":{"execute((bytes,bytes))":"3f62192e","executeBatch((bytes,bytes)[])":"0d7a16c3","executeBatchWithCallback((bytes,bytes)[],bytes)":"13fb72c7","executeWithCallback((bytes,bytes),bytes)":"0d335884","feeController()":"6999b377","owner()":"8da5cb5b","permit2()":"12261ee7","setProtocolFeeController(address)":"2d771389","transferOwnership(address)":"f2fde38b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IPermit2\",\"name\":\"_permit2\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_protocolFeeOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"duplicateToken\",\"type\":\"address\"}],\"name\":\"DuplicateFeeOutput\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"FeeTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputAndOutputFees\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputOutputScaling\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCosignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDeadline\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"feeToken\",\"type\":\"address\"}],\"name\":\"InvalidFeeToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidGasPrice\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidReactor\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NativeTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OrderNotFillable\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"filler\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"swapper\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"Fill\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldFeeController\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newFeeController\",\"type\":\"address\"}],\"name\":\"ProtocolFeeControllerSet\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"order\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"sig\",\"type\":\"bytes\"}],\"internalType\":\"struct SignedOrder\",\"name\":\"order\",\"type\":\"tuple\"}],\"name\":\"execute\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"order\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"sig\",\"type\":\"bytes\"}],\"internalType\":\"struct SignedOrder[]\",\"name\":\"orders\",\"type\":\"tuple[]\"}],\"name\":\"executeBatch\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"order\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"sig\",\"type\":\"bytes\"}],\"internalType\":\"struct SignedOrder[]\",\"name\":\"orders\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"callbackData\",\"type\":\"bytes\"}],\"name\":\"executeBatchWithCallback\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"order\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"sig\",\"type\":\"bytes\"}],\"internalType\":\"struct SignedOrder\",\"name\":\"order\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"callbackData\",\"type\":\"bytes\"}],\"name\":\"executeWithCallback\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeController\",\"outputs\":[{\"internalType\":\"contract IProtocolFeeController\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"permit2\",\"outputs\":[{\"internalType\":\"contract IPermit2\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newFeeController\",\"type\":\"address\"}],\"name\":\"setProtocolFeeController\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"only supported on chains which use priority fee transaction ordering\",\"events\":{\"Fill(bytes32,address,address,uint256)\":{\"params\":{\"filler\":\"The address which executed the fill\",\"nonce\":\"The nonce of the filled order\",\"orderHash\":\"The hash of the order that was filled\",\"swapper\":\"The swapper of the filled order\"}}},\"kind\":\"dev\",\"methods\":{\"execute((bytes,bytes))\":{\"params\":{\"order\":\"The order definition and valid signature to execute\"}},\"executeBatch((bytes,bytes)[])\":{\"params\":{\"orders\":\"The order definitions and valid signatures to execute\"}},\"executeBatchWithCallback((bytes,bytes)[],bytes)\":{\"params\":{\"callbackData\":\"The callbackData to pass to the callback\",\"orders\":\"The order definitions and valid signatures to execute\"}},\"executeWithCallback((bytes,bytes),bytes)\":{\"params\":{\"callbackData\":\"The callbackData to pass to the callback\",\"order\":\"The order definition and valid signature to execute\"}},\"setProtocolFeeController(address)\":{\"details\":\"only callable by the owner\",\"params\":{\"_newFeeController\":\"the new fee controller\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"DuplicateFeeOutput(address)\":[{\"notice\":\"thrown if two fee outputs have the same token\"}],\"FeeTooLarge(address,uint256,address)\":[{\"notice\":\"thrown if a given fee output is greater than MAX_FEE_BPS of the order outputs\"}],\"InputAndOutputFees()\":[{\"notice\":\"thrown if fees are taken on both inputs and outputs\"}],\"InputOutputScaling()\":[{\"notice\":\"thrown when an order's input and outputs both scale with priority fee\"}],\"InvalidCosignature()\":[{\"notice\":\"thrown when an order's cosignature does not match the expected cosigner\"}],\"InvalidDeadline()\":[{\"notice\":\"thrown when an order's deadline is in the past\"}],\"InvalidFeeToken(address)\":[{\"notice\":\"thrown if a fee output token does not have a corresponding non-fee output\"}],\"InvalidGasPrice()\":[{\"notice\":\"thrown when tx gasprice is less than block.basefee\"}],\"InvalidReactor()\":[{\"notice\":\"thrown when the order targets a different reactor\"}],\"NativeTransferFailed()\":[{\"notice\":\"Thrown when a native transfer fails\"}],\"OrderNotFillable()\":[{\"notice\":\"thrown when an order's auctionStartBlock is in the future\"}]},\"events\":{\"Fill(bytes32,address,address,uint256)\":{\"notice\":\"emitted when an order is filled\"}},\"kind\":\"user\",\"methods\":{\"execute((bytes,bytes))\":{\"notice\":\"Execute a single order\"},\"executeBatch((bytes,bytes)[])\":{\"notice\":\"Execute the given orders at once\"},\"executeBatchWithCallback((bytes,bytes)[],bytes)\":{\"notice\":\"Execute the given orders at once using a callback with the given callback data\"},\"executeWithCallback((bytes,bytes),bytes)\":{\"notice\":\"Execute a single order using the given callback data\"},\"permit2()\":{\"notice\":\"permit2 address used for token transfers and signature verification\"},\"setProtocolFeeController(address)\":{\"notice\":\"sets the protocol fee controller\"}},\"notice\":\"Reactor for priority orders\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/reactors/PriorityOrderReactor.sol\":\"PriorityOrderReactor\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-gas-snapshot/=lib/forge-gas-snapshot/src/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":permit2/=lib/permit2/\",\":solarray/=lib/solarray/src/\",\":solmate/=lib/solmate/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/security/ReentrancyGuard.sol\":{\"keccak256\":\"0xa535a5df777d44e945dd24aa43a11e44b024140fc340ad0dfe42acf4002aade1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://41319e7f621f2dc3733511332c4fd032f8e32ad2aa7fd6f665c19741d9941a34\",\"dweb:/ipfs/QmcYR3bd862GD1Bc7jwrU9bGxrhUu5na1oP964bDCu2id1\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278\",\"dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH\"]},\"lib/permit2/src/interfaces/IAllowanceTransfer.sol\":{\"keccak256\":\"0x78931704a7f1d89ef24244b155863abb751cc3b3818f64303ccb47a396d48dcb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b8d6e198ee29d809564f1c1d7caa11a2c329bb5d051f61210548e546493444d2\",\"dweb:/ipfs/QmVxWftbgETjudymgLdwF77S54DWrp6qB5ooauKXW81cm7\"]},\"lib/permit2/src/interfaces/IEIP712.sol\":{\"keccak256\":\"0xea70db68ce450ad38dfbd490058595441144808eb95272ae9b89e3fbe6456954\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e8fad9ff319665acdc2f1295bb82db3e5b4d52babc0b58f147dbdbb9f322c6e5\",\"dweb:/ipfs/QmTbYJPcux8eJ3qGVYQh6TiwCA2FPu6HXTUg6QFTnX91Ks\"]},\"lib/permit2/src/interfaces/IPermit2.sol\":{\"keccak256\":\"0xaa631cc9f53e699301d94233007110a345e6779011def484e8dd97b8fe0af771\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc0502cf19c9c18f320a3001201e89e350393b75837f6b7971de18b2de06f30d\",\"dweb:/ipfs/QmT9SfhdJ7VJNNrf94g4H5usyi7ShqWGx7Cqsz9jZTjX96\"]},\"lib/permit2/src/interfaces/ISignatureTransfer.sol\":{\"keccak256\":\"0x6805563eaad92471fa1b3591a71d7020a93e59f1a4ac95398daf74927f5bd033\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://48cd13806cb8e82dcc38eb93423a372fbdd3b05364ecebb8bfd9cd29078dd90c\",\"dweb:/ipfs/QmeLyFVrzKRHcm6aaFFBCG5mFESCqWLp1KYT41H8XhzMCp\"]},\"lib/solmate/src/auth/Owned.sol\":{\"keccak256\":\"0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4\",\"dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx\"]},\"lib/solmate/src/tokens/ERC20.sol\":{\"keccak256\":\"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35\",\"dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97\"]},\"lib/solmate/src/utils/FixedPointMathLib.sol\":{\"keccak256\":\"0x1b62af9baf5b8e991ed7531bc87f45550ba9d61e8dbff5caf237ccaf3a3fd843\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://b7b38b977c5305b18ceefbeed4c9ceaaaefa419b520de62de6604ea661f8c0a9\",\"dweb:/ipfs/QmecMRzgfMyDVa2pvBqMMDLYBappaj7Aa3qcMoQYEQrhWi\"]},\"lib/solmate/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0x6ab948013c2c7ca6351e593600425b0ec6df9035320280c678e735bce16e996b\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://2ab977d0eeb2bf458f9798250215c646d2f3b1f90b5a7e2b506fdf3335c0f060\",\"dweb:/ipfs/QmYPRoPhNtBAmCSq7imN1scMVpKNQvMTpoqab3tXUx5Tnv\"]},\"src/base/ProtocolFees.sol\":{\"keccak256\":\"0x1152eee4ac698694bcdbf90b016411112d679812ca0abc1cacd7e6b465e6729a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c1be6b94c6268b68362111e728598e7c1517b20998fdf6752d08e32d55c210f8\",\"dweb:/ipfs/QmStQC274cQqnQSo3QDBcT5BdqEkpwZwFaWwxaYXMZidvw\"]},\"src/base/ReactorEvents.sol\":{\"keccak256\":\"0x61df7aa3ef970f1305c5a6d8c68b0d7ab8bebb9b7518e191c8d2fda532859f61\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://93db11be28b3394485b57a7b120ca224fdb93b471db8468738406f77ebaa13fc\",\"dweb:/ipfs/Qmci4TSUH81C3WDV7TMv56VmiUFZ9MDxZcGTRKhhEPS6gC\"]},\"src/base/ReactorStructs.sol\":{\"keccak256\":\"0x78e6db322ca69aaf552e59d5e74a00fd465a802388c2d03f9bf4b711f5704588\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://12d8fc82c3543bfe0d2cd44cdbc524bed1f074abafe086f7e58573cbaff2a74e\",\"dweb:/ipfs/QmREbamTn3nz89nEjv2uWHNHKSF6Yga2gQ688Cde89xcNT\"]},\"src/interfaces/IProtocolFeeController.sol\":{\"keccak256\":\"0x21a895ff5b778abf95753001a20b4004adfadd1bba622eaec18eb81836ede86c\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://67f9eae1da9f238f6630247882e382458dcc0135c0a4837b99a44a2360a3845c\",\"dweb:/ipfs/QmdJyKhVyD6nAtgdTofaU2xaoWrPGM1Q6Sd7FiN2LxXZQx\"]},\"src/interfaces/IReactor.sol\":{\"keccak256\":\"0x23714e546bbeeaa7fe35665d7241319c964421a9fe6d81aead4b85027cabf1e1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://3b94402a2e90f75d6238d4460c0b1125bf67b98523803156b104ce57cafdd05b\",\"dweb:/ipfs/QmbY3Mr44MPEMAe9bh9tUSqpPg3AAKfkVfydwJCEzFA14a\"]},\"src/interfaces/IReactorCallback.sol\":{\"keccak256\":\"0xf3ee1fe09545fc5be000c33bb6779e897b4e5013bd9de3e7c3107bf466b4dfa1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://12d7fd1ac3dca76614796f0d012ea4de79bf09cf124cc74efffdf25a56756344\",\"dweb:/ipfs/QmXyeSrG7caihgzUZdPdPbbRj6v1w65gBnfn9a7HhbVJX9\"]},\"src/interfaces/IValidationCallback.sol\":{\"keccak256\":\"0xc31e3a60e210e9a4089f48ba4fae06dec6f4d33da4fbe415cfb8cdc202003bae\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ee145d5fc0e0806dc9db57825142d5d7c3eafc248a27ee301ffd13592f2cda34\",\"dweb:/ipfs/QmQr2HBHZKiUu88a3M1Hs4QSjFemsZmPEd115QG6GKjsC1\"]},\"src/lib/CosignerLib.sol\":{\"keccak256\":\"0x59681b68b61d78f47c91de5405464916ad44de721a5cedbbd4fe9691264cda63\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f5dc4fbd2ab2820f649fb2c2c8d6393671950143b2a5a4f35095fab1919f6deb\",\"dweb:/ipfs/QmPVT2St7twYfUiVocsvTNCCaq24MBBtPwrB4TtCcXgywo\"]},\"src/lib/CurrencyLibrary.sol\":{\"keccak256\":\"0x73688c07cd36b5040e0deca3dd1f21a8b19585d6cdfefb816fae98af92a545ea\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://750375d6f0e59f7977b9cfc2cf05fef7b356cea7875fbb71b0ca359d091b8479\",\"dweb:/ipfs/QmZbdTSS1BxWqAHjmtwoJsggbRVkwnxynJuaxzKkkakm4Y\"]},\"src/lib/OrderInfoLib.sol\":{\"keccak256\":\"0x38672b528e63dc53f36ed82d0037110a9f5893ad0a3957e24f19fa3fdbd80015\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://147172dbebf4bb579bc392f25666645719264c0b47378f7fc4f3a95c79bdf5a4\",\"dweb:/ipfs/Qmd5wVnQ8rKHHQgUQzEDcAPiqrVzmNr9t2D7d1SqUg9hTo\"]},\"src/lib/Permit2Lib.sol\":{\"keccak256\":\"0xcb5e1e204f4ac6ea3fa164b8be1b1d31cbad0dff981072ea2c33abd720369e78\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://cfa162286525ef8684112639c7b981c0472b06ce799f2440c626a70c273bb533\",\"dweb:/ipfs/QmV1Uy4oodhg4SbCajv9xhiWFuwtU1YcTTvca1cDYCkND9\"]},\"src/lib/PriorityFeeLib.sol\":{\"keccak256\":\"0xeb10a0ad27cf0f0131bdd205b0d7614423eedebd9f745e0c02be6ccef7e44742\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://706633e79e0967cd3ebd5faf733634053b0eb4b51c293d1549af4654856f3459\",\"dweb:/ipfs/QmfTuDHUm5cyTW9grpb1N8xyGYmpUq2ANbh4P3DWJoLzwm\"]},\"src/lib/PriorityOrderLib.sol\":{\"keccak256\":\"0x5bcaf6944f4fdb5b1da156777fc37a9f89ddf1f1f0c556380013c0d5ea38111e\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a1fb561dd7d5afa9feda78b2075112e32f3fa49d156727163bb53ebb967d1f97\",\"dweb:/ipfs/QmRLVrjDxoMviWh4HSQgRff5TqdMQKCKmGv1DtWHU4sfuZ\"]},\"src/lib/ResolvedOrderLib.sol\":{\"keccak256\":\"0xc56a31e72001e3e6ee0baf193423a7563cc61ba4869133e1cae5cf998bfe4d96\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4bddef26f26939f48923b11674495515d792cffbb2dc04f092212ff0b9971636\",\"dweb:/ipfs/QmS1YAzhYLCi9oDtZN33mwBf5iExdwMhPNcnzh5nA8fPKX\"]},\"src/reactors/BaseReactor.sol\":{\"keccak256\":\"0xd31b25dd7209a704fb17865e8112bc83a72e1816bc1d636c89366b2f1e3c4210\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f10c83e80f01d728f48aa06905e272eef776159ea83b53885c182da15597e3ca\",\"dweb:/ipfs/Qmf2nx9abWsTMCVBV1At66HS3FVTXHreUVCpwVDKjkYadY\"]},\"src/reactors/PriorityOrderReactor.sol\":{\"keccak256\":\"0x4be85126fcd87b4c67411ba3fda98b763a46cfbd005df2a3fa38c2b89718bd89\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2b7910753dd8380893556047e3bd0771768e6c5cc53e105e1800ee58a65eac19\",\"dweb:/ipfs/QmbRXPeCM8gno5B9DnuSZuixTyyQn3wZvCZX5YVhGf6qKm\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract IPermit2","name":"_permit2","type":"address"},{"internalType":"address","name":"_protocolFeeOwner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"duplicateToken","type":"address"}],"type":"error","name":"DuplicateFeeOutput"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"type":"error","name":"FeeTooLarge"},{"inputs":[],"type":"error","name":"InputAndOutputFees"},{"inputs":[],"type":"error","name":"InputOutputScaling"},{"inputs":[],"type":"error","name":"InvalidCosignature"},{"inputs":[],"type":"error","name":"InvalidDeadline"},{"inputs":[{"internalType":"address","name":"feeToken","type":"address"}],"type":"error","name":"InvalidFeeToken"},{"inputs":[],"type":"error","name":"InvalidGasPrice"},{"inputs":[],"type":"error","name":"InvalidReactor"},{"inputs":[],"type":"error","name":"NativeTransferFailed"},{"inputs":[],"type":"error","name":"OrderNotFillable"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32","indexed":true},{"internalType":"address","name":"filler","type":"address","indexed":true},{"internalType":"address","name":"swapper","type":"address","indexed":true},{"internalType":"uint256","name":"nonce","type":"uint256","indexed":false}],"type":"event","name":"Fill","anonymous":false},{"inputs":[{"internalType":"address","name":"user","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"oldFeeController","type":"address","indexed":false},{"internalType":"address","name":"newFeeController","type":"address","indexed":false}],"type":"event","name":"ProtocolFeeControllerSet","anonymous":false},{"inputs":[{"internalType":"struct SignedOrder","name":"order","type":"tuple","components":[{"internalType":"bytes","name":"order","type":"bytes"},{"internalType":"bytes","name":"sig","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"execute"},{"inputs":[{"internalType":"struct SignedOrder[]","name":"orders","type":"tuple[]","components":[{"internalType":"bytes","name":"order","type":"bytes"},{"internalType":"bytes","name":"sig","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"executeBatch"},{"inputs":[{"internalType":"struct SignedOrder[]","name":"orders","type":"tuple[]","components":[{"internalType":"bytes","name":"order","type":"bytes"},{"internalType":"bytes","name":"sig","type":"bytes"}]},{"internalType":"bytes","name":"callbackData","type":"bytes"}],"stateMutability":"payable","type":"function","name":"executeBatchWithCallback"},{"inputs":[{"internalType":"struct SignedOrder","name":"order","type":"tuple","components":[{"internalType":"bytes","name":"order","type":"bytes"},{"internalType":"bytes","name":"sig","type":"bytes"}]},{"internalType":"bytes","name":"callbackData","type":"bytes"}],"stateMutability":"payable","type":"function","name":"executeWithCallback"},{"inputs":[],"stateMutability":"view","type":"function","name":"feeController","outputs":[{"internalType":"contract IProtocolFeeController","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"permit2","outputs":[{"internalType":"contract IPermit2","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_newFeeController","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setProtocolFeeController"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"execute((bytes,bytes))":{"params":{"order":"The order definition and valid signature to execute"}},"executeBatch((bytes,bytes)[])":{"params":{"orders":"The order definitions and valid signatures to execute"}},"executeBatchWithCallback((bytes,bytes)[],bytes)":{"params":{"callbackData":"The callbackData to pass to the callback","orders":"The order definitions and valid signatures to execute"}},"executeWithCallback((bytes,bytes),bytes)":{"params":{"callbackData":"The callbackData to pass to the callback","order":"The order definition and valid signature to execute"}},"setProtocolFeeController(address)":{"details":"only callable by the owner","params":{"_newFeeController":"the new fee controller"}}},"version":1},"userdoc":{"kind":"user","methods":{"execute((bytes,bytes))":{"notice":"Execute a single order"},"executeBatch((bytes,bytes)[])":{"notice":"Execute the given orders at once"},"executeBatchWithCallback((bytes,bytes)[],bytes)":{"notice":"Execute the given orders at once using a callback with the given callback data"},"executeWithCallback((bytes,bytes),bytes)":{"notice":"Execute a single order using the given callback data"},"permit2()":{"notice":"permit2 address used for token transfers and signature verification"},"setProtocolFeeController(address)":{"notice":"sets the protocol fee controller"}},"version":1}},"settings":{"remappings":["ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-gas-snapshot/=lib/forge-gas-snapshot/src/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","permit2/=lib/permit2/","solarray/=lib/solarray/src/","solmate/=lib/solmate/"],"optimizer":{"enabled":true,"runs":1000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/reactors/PriorityOrderReactor.sol":"PriorityOrderReactor"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/security/ReentrancyGuard.sol":{"keccak256":"0xa535a5df777d44e945dd24aa43a11e44b024140fc340ad0dfe42acf4002aade1","urls":["bzz-raw://41319e7f621f2dc3733511332c4fd032f8e32ad2aa7fd6f665c19741d9941a34","dweb:/ipfs/QmcYR3bd862GD1Bc7jwrU9bGxrhUu5na1oP964bDCu2id1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad","urls":["bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278","dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH"],"license":"MIT"},"lib/permit2/src/interfaces/IAllowanceTransfer.sol":{"keccak256":"0x78931704a7f1d89ef24244b155863abb751cc3b3818f64303ccb47a396d48dcb","urls":["bzz-raw://b8d6e198ee29d809564f1c1d7caa11a2c329bb5d051f61210548e546493444d2","dweb:/ipfs/QmVxWftbgETjudymgLdwF77S54DWrp6qB5ooauKXW81cm7"],"license":"MIT"},"lib/permit2/src/interfaces/IEIP712.sol":{"keccak256":"0xea70db68ce450ad38dfbd490058595441144808eb95272ae9b89e3fbe6456954","urls":["bzz-raw://e8fad9ff319665acdc2f1295bb82db3e5b4d52babc0b58f147dbdbb9f322c6e5","dweb:/ipfs/QmTbYJPcux8eJ3qGVYQh6TiwCA2FPu6HXTUg6QFTnX91Ks"],"license":"MIT"},"lib/permit2/src/interfaces/IPermit2.sol":{"keccak256":"0xaa631cc9f53e699301d94233007110a345e6779011def484e8dd97b8fe0af771","urls":["bzz-raw://fc0502cf19c9c18f320a3001201e89e350393b75837f6b7971de18b2de06f30d","dweb:/ipfs/QmT9SfhdJ7VJNNrf94g4H5usyi7ShqWGx7Cqsz9jZTjX96"],"license":"MIT"},"lib/permit2/src/interfaces/ISignatureTransfer.sol":{"keccak256":"0x6805563eaad92471fa1b3591a71d7020a93e59f1a4ac95398daf74927f5bd033","urls":["bzz-raw://48cd13806cb8e82dcc38eb93423a372fbdd3b05364ecebb8bfd9cd29078dd90c","dweb:/ipfs/QmeLyFVrzKRHcm6aaFFBCG5mFESCqWLp1KYT41H8XhzMCp"],"license":"MIT"},"lib/solmate/src/auth/Owned.sol":{"keccak256":"0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea","urls":["bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4","dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx"],"license":"AGPL-3.0-only"},"lib/solmate/src/tokens/ERC20.sol":{"keccak256":"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10","urls":["bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35","dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97"],"license":"AGPL-3.0-only"},"lib/solmate/src/utils/FixedPointMathLib.sol":{"keccak256":"0x1b62af9baf5b8e991ed7531bc87f45550ba9d61e8dbff5caf237ccaf3a3fd843","urls":["bzz-raw://b7b38b977c5305b18ceefbeed4c9ceaaaefa419b520de62de6604ea661f8c0a9","dweb:/ipfs/QmecMRzgfMyDVa2pvBqMMDLYBappaj7Aa3qcMoQYEQrhWi"],"license":"AGPL-3.0-only"},"lib/solmate/src/utils/SafeTransferLib.sol":{"keccak256":"0x6ab948013c2c7ca6351e593600425b0ec6df9035320280c678e735bce16e996b","urls":["bzz-raw://2ab977d0eeb2bf458f9798250215c646d2f3b1f90b5a7e2b506fdf3335c0f060","dweb:/ipfs/QmYPRoPhNtBAmCSq7imN1scMVpKNQvMTpoqab3tXUx5Tnv"],"license":"AGPL-3.0-only"},"src/base/ProtocolFees.sol":{"keccak256":"0x1152eee4ac698694bcdbf90b016411112d679812ca0abc1cacd7e6b465e6729a","urls":["bzz-raw://c1be6b94c6268b68362111e728598e7c1517b20998fdf6752d08e32d55c210f8","dweb:/ipfs/QmStQC274cQqnQSo3QDBcT5BdqEkpwZwFaWwxaYXMZidvw"],"license":"GPL-2.0-or-later"},"src/base/ReactorEvents.sol":{"keccak256":"0x61df7aa3ef970f1305c5a6d8c68b0d7ab8bebb9b7518e191c8d2fda532859f61","urls":["bzz-raw://93db11be28b3394485b57a7b120ca224fdb93b471db8468738406f77ebaa13fc","dweb:/ipfs/Qmci4TSUH81C3WDV7TMv56VmiUFZ9MDxZcGTRKhhEPS6gC"],"license":"GPL-2.0-or-later"},"src/base/ReactorStructs.sol":{"keccak256":"0x78e6db322ca69aaf552e59d5e74a00fd465a802388c2d03f9bf4b711f5704588","urls":["bzz-raw://12d8fc82c3543bfe0d2cd44cdbc524bed1f074abafe086f7e58573cbaff2a74e","dweb:/ipfs/QmREbamTn3nz89nEjv2uWHNHKSF6Yga2gQ688Cde89xcNT"],"license":"GPL-2.0-or-later"},"src/interfaces/IProtocolFeeController.sol":{"keccak256":"0x21a895ff5b778abf95753001a20b4004adfadd1bba622eaec18eb81836ede86c","urls":["bzz-raw://67f9eae1da9f238f6630247882e382458dcc0135c0a4837b99a44a2360a3845c","dweb:/ipfs/QmdJyKhVyD6nAtgdTofaU2xaoWrPGM1Q6Sd7FiN2LxXZQx"],"license":"GPL-2.0-or-later"},"src/interfaces/IReactor.sol":{"keccak256":"0x23714e546bbeeaa7fe35665d7241319c964421a9fe6d81aead4b85027cabf1e1","urls":["bzz-raw://3b94402a2e90f75d6238d4460c0b1125bf67b98523803156b104ce57cafdd05b","dweb:/ipfs/QmbY3Mr44MPEMAe9bh9tUSqpPg3AAKfkVfydwJCEzFA14a"],"license":"GPL-2.0-or-later"},"src/interfaces/IReactorCallback.sol":{"keccak256":"0xf3ee1fe09545fc5be000c33bb6779e897b4e5013bd9de3e7c3107bf466b4dfa1","urls":["bzz-raw://12d7fd1ac3dca76614796f0d012ea4de79bf09cf124cc74efffdf25a56756344","dweb:/ipfs/QmXyeSrG7caihgzUZdPdPbbRj6v1w65gBnfn9a7HhbVJX9"],"license":"GPL-2.0-or-later"},"src/interfaces/IValidationCallback.sol":{"keccak256":"0xc31e3a60e210e9a4089f48ba4fae06dec6f4d33da4fbe415cfb8cdc202003bae","urls":["bzz-raw://ee145d5fc0e0806dc9db57825142d5d7c3eafc248a27ee301ffd13592f2cda34","dweb:/ipfs/QmQr2HBHZKiUu88a3M1Hs4QSjFemsZmPEd115QG6GKjsC1"],"license":"GPL-2.0-or-later"},"src/lib/CosignerLib.sol":{"keccak256":"0x59681b68b61d78f47c91de5405464916ad44de721a5cedbbd4fe9691264cda63","urls":["bzz-raw://f5dc4fbd2ab2820f649fb2c2c8d6393671950143b2a5a4f35095fab1919f6deb","dweb:/ipfs/QmPVT2St7twYfUiVocsvTNCCaq24MBBtPwrB4TtCcXgywo"],"license":"GPL-2.0-or-later"},"src/lib/CurrencyLibrary.sol":{"keccak256":"0x73688c07cd36b5040e0deca3dd1f21a8b19585d6cdfefb816fae98af92a545ea","urls":["bzz-raw://750375d6f0e59f7977b9cfc2cf05fef7b356cea7875fbb71b0ca359d091b8479","dweb:/ipfs/QmZbdTSS1BxWqAHjmtwoJsggbRVkwnxynJuaxzKkkakm4Y"],"license":"GPL-2.0-or-later"},"src/lib/OrderInfoLib.sol":{"keccak256":"0x38672b528e63dc53f36ed82d0037110a9f5893ad0a3957e24f19fa3fdbd80015","urls":["bzz-raw://147172dbebf4bb579bc392f25666645719264c0b47378f7fc4f3a95c79bdf5a4","dweb:/ipfs/Qmd5wVnQ8rKHHQgUQzEDcAPiqrVzmNr9t2D7d1SqUg9hTo"],"license":"GPL-2.0-or-later"},"src/lib/Permit2Lib.sol":{"keccak256":"0xcb5e1e204f4ac6ea3fa164b8be1b1d31cbad0dff981072ea2c33abd720369e78","urls":["bzz-raw://cfa162286525ef8684112639c7b981c0472b06ce799f2440c626a70c273bb533","dweb:/ipfs/QmV1Uy4oodhg4SbCajv9xhiWFuwtU1YcTTvca1cDYCkND9"],"license":"GPL-2.0-or-later"},"src/lib/PriorityFeeLib.sol":{"keccak256":"0xeb10a0ad27cf0f0131bdd205b0d7614423eedebd9f745e0c02be6ccef7e44742","urls":["bzz-raw://706633e79e0967cd3ebd5faf733634053b0eb4b51c293d1549af4654856f3459","dweb:/ipfs/QmfTuDHUm5cyTW9grpb1N8xyGYmpUq2ANbh4P3DWJoLzwm"],"license":"GPL-2.0-or-later"},"src/lib/PriorityOrderLib.sol":{"keccak256":"0x5bcaf6944f4fdb5b1da156777fc37a9f89ddf1f1f0c556380013c0d5ea38111e","urls":["bzz-raw://a1fb561dd7d5afa9feda78b2075112e32f3fa49d156727163bb53ebb967d1f97","dweb:/ipfs/QmRLVrjDxoMviWh4HSQgRff5TqdMQKCKmGv1DtWHU4sfuZ"],"license":"GPL-2.0-or-later"},"src/lib/ResolvedOrderLib.sol":{"keccak256":"0xc56a31e72001e3e6ee0baf193423a7563cc61ba4869133e1cae5cf998bfe4d96","urls":["bzz-raw://4bddef26f26939f48923b11674495515d792cffbb2dc04f092212ff0b9971636","dweb:/ipfs/QmS1YAzhYLCi9oDtZN33mwBf5iExdwMhPNcnzh5nA8fPKX"],"license":"GPL-2.0-or-later"},"src/reactors/BaseReactor.sol":{"keccak256":"0xd31b25dd7209a704fb17865e8112bc83a72e1816bc1d636c89366b2f1e3c4210","urls":["bzz-raw://f10c83e80f01d728f48aa06905e272eef776159ea83b53885c182da15597e3ca","dweb:/ipfs/Qmf2nx9abWsTMCVBV1At66HS3FVTXHreUVCpwVDKjkYadY"],"license":"GPL-2.0-or-later"},"src/reactors/PriorityOrderReactor.sol":{"keccak256":"0x4be85126fcd87b4c67411ba3fda98b763a46cfbd005df2a3fa38c2b89718bd89","urls":["bzz-raw://2b7910753dd8380893556047e3bd0771768e6c5cc53e105e1800ee58a65eac19","dweb:/ipfs/QmbRXPeCM8gno5B9DnuSZuixTyyQn3wZvCZX5YVhGf6qKm"],"license":"GPL-2.0-or-later"}},"version":1},"id":74} +{"abi":[{"type":"constructor","inputs":[{"name":"_permit2","type":"address","internalType":"contract IPermit2"},{"name":"_protocolFeeOwner","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"execute","inputs":[{"name":"order","type":"tuple","internalType":"struct SignedOrder","components":[{"name":"order","type":"bytes","internalType":"bytes"},{"name":"sig","type":"bytes","internalType":"bytes"}]}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"executeBatch","inputs":[{"name":"orders","type":"tuple[]","internalType":"struct SignedOrder[]","components":[{"name":"order","type":"bytes","internalType":"bytes"},{"name":"sig","type":"bytes","internalType":"bytes"}]}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"executeBatchWithCallback","inputs":[{"name":"orders","type":"tuple[]","internalType":"struct SignedOrder[]","components":[{"name":"order","type":"bytes","internalType":"bytes"},{"name":"sig","type":"bytes","internalType":"bytes"}]},{"name":"callbackData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"executeWithCallback","inputs":[{"name":"order","type":"tuple","internalType":"struct SignedOrder","components":[{"name":"order","type":"bytes","internalType":"bytes"},{"name":"sig","type":"bytes","internalType":"bytes"}]},{"name":"callbackData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"feeController","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IProtocolFeeController"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"permit2","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPermit2"}],"stateMutability":"view"},{"type":"function","name":"setProtocolFeeController","inputs":[{"name":"_newFeeController","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Fill","inputs":[{"name":"orderHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"filler","type":"address","indexed":true,"internalType":"address"},{"name":"swapper","type":"address","indexed":true,"internalType":"address"},{"name":"nonce","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"user","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ProtocolFeeControllerSet","inputs":[{"name":"oldFeeController","type":"address","indexed":false,"internalType":"address"},{"name":"newFeeController","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"error","name":"DuplicateFeeOutput","inputs":[{"name":"duplicateToken","type":"address","internalType":"address"}]},{"type":"error","name":"FeeTooLarge","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"recipient","type":"address","internalType":"address"}]},{"type":"error","name":"InputAndOutputFees","inputs":[]},{"type":"error","name":"InputOutputScaling","inputs":[]},{"type":"error","name":"InvalidCosignature","inputs":[]},{"type":"error","name":"InvalidDeadline","inputs":[]},{"type":"error","name":"InvalidFeeToken","inputs":[{"name":"feeToken","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidGasPrice","inputs":[]},{"type":"error","name":"InvalidReactor","inputs":[]},{"type":"error","name":"NativeTransferFailed","inputs":[]},{"type":"error","name":"OrderAlreadyFilled","inputs":[]},{"type":"error","name":"OrderNotFillable","inputs":[]}],"bytecode":{"object":"0x60a06040523480156200001157600080fd5b5060405162003470380380620034708339810160408190526200003491620000b8565b600080546001600160a01b0319166001600160a01b03831690811782556040518492849283928392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600255506001600160a01b031660805250620000f79050565b6001600160a01b0381168114620000b557600080fd5b50565b60008060408385031215620000cc57600080fd5b8251620000d9816200009f565b6020840151909250620000ec816200009f565b809150509250929050565b608051613350620001206000396000818160e001528181610d6101526119eb01526133506000f3fe60806040526004361061009a5760003560e01c80632d771389116100695780636999b3771161004e5780636999b377146101715780638da5cb5b1461019e578063f2fde38b146101cb57600080fd5b80632d7713891461013e5780633f62192e1461015e57600080fd5b80630d335884146100a65780630d7a16c3146100bb57806312261ee7146100ce57806313fb72c71461012b57600080fd5b366100a157005b600080fd5b6100b96100b4366004612440565b6101eb565b005b6100b96100c93660046124ee565b610364565b3480156100da57600080fd5b506101027f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b9610139366004612530565b6104c5565b34801561014a57600080fd5b506100b96101593660046125c9565b610683565b6100b961016c3660046125ed565b61078f565b34801561017d57600080fd5b506001546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101aa57600080fd5b506000546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d757600080fd5b506100b96101e63660046125c9565b610894565b6101f3610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161020a5790505090506102b2846109f6565b816000815181106102c5576102c5612659565b60200260200101819052506102d981610b60565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da628906103199084908790879060040161285c565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b5050505061035481610bb1565b5061035f6001600255565b505050565b61036c610985565b8060008167ffffffffffffffff8111156103885761038861262a565b60405190808252806020026020018201604052801561044357816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103a65790505b50905060005b828110156104a25761047d85858381811061046657610466612659565b90506020028101906104789190612922565b6109f6565b82828151811061048f5761048f612659565b6020908102919091010152600101610449565b506104ac81610b60565b6104b581610bb1565b50506104c16001600255565b5050565b6104cd610985565b8260008167ffffffffffffffff8111156104e9576104e961262a565b6040519080825280602002602001820160405280156105a457816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105075790505b50905060005b828110156105ec576105c787878381811061046657610466612659565b8282815181106105d9576105d9612659565b60209081029190910101526001016105aa565b506105f681610b60565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da628906106369084908890889060040161285c565b600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b5050505061067181610bb1565b505061067d6001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610797610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107ae579050509050610856826109f6565b8160008151811061086957610869612659565b602002602001018190525061087d81610b60565b61088681610bb1565b506108916001600255565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610700565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610700565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a6f8380612960565b810190610a7c9190612d2c565b80516020810151604090910151919250610a9591610d04565b6000610aa082610e17565b9050610aac8183611065565b6000610abb83606001516111c7565b90506040518060a0016040528084600001518152602001610ae983866080015161121c90919063ffffffff16565b8152602001610b05838660a0015161131b90919063ffffffff16565b8152602001868060200190610b1a9190612960565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525060200192909252509392505050565b805160005b8181101561035f576000838281518110610b8157610b81612659565b60200260200101519050610b9481611400565b610b9e81336118f0565b610ba881336119e9565b50600101610b65565b805160005b81811015610cf3576000838281518110610bd257610bd2612659565b602002602001015190506000816040015151905060005b81811015610c5357600083604001518281518110610c0957610c09612659565b60200260200101519050610c4a81604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff16611d239092919063ffffffff16565b50600101610be9565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610c9c57610c9c612659565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610ce191815260200190565b60405180910390a45050600101610bb6565b5047156104c1576104c13347611d6a565b6040517f4fe02b4400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152600883901c6024830181905291600160ff85161b916000917f000000000000000000000000000000000000000000000000000000000000000090911690634fe02b4490604401602060405180830381865afa158015610daa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dce9190612e2d565b9050818118808316600003610e0f576040517fee3b3d4b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050565b6040517f5072696f726974794f726465722800000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602e8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603d8201527f75696e743235362061756374696f6e5374617274426c6f636b2c000000000000604e8201527f75696e7432353620626173656c696e655072696f726974794665655765692c0060688201527f5072696f72697479496e70757420696e7075742c00000000000000000000000060878201527f5072696f726974794f75747075745b5d206f7574707574732900000000000000609b82015260009060b401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260c08301909152608d80835290919061323360208301396040518060800160405280604881526020016131bd604891396040518060800160405280605b81526020016132c0605b9139604051602001610fb19493929190612e46565b60405160208183030381529060405280519060200120610fd48360000151611e04565b836020015184604001518560600151610ff08760800151611e9e565b610ffd8860a00151611f05565b60408051602081019890985287019590955273ffffffffffffffffffffffffffffffffffffffff9093166060860152608085019190915260a084015260c083015260e0820152610100015b604051602081830303815290604052805190602001209050919050565b8051606001514211156110a4576040517f769d11e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040810151602082015173ffffffffffffffffffffffffffffffffffffffff16158015906110d157508043105b80156110e1575060c08201515181115b1561110b576020820151611103906110f98486611fa3565b8460e0015161201a565b5060c0810151515b80431015611145576040517fc603552000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6080820151604001511561035f5760005b8260a001515181101561067d5760008360a00151828151811061117b5761117b612659565b60200260200101516040015111156111bf576040517fa6b844f500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600101611156565b6000483a1015611203576040517ff3eb44e500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50483a0381811115611213570390565b5060005b919050565b6112566040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b60008360400151836112689190612ecc565b90506298968081106112b6576040518060600160405280856000015173ffffffffffffffffffffffffffffffffffffffff168152602001600081526020018560200151815250915050611315565b6040805160608101909152845173ffffffffffffffffffffffffffffffffffffffff1681526020810182156113005760208601516112fb906298968085810390612142565b611306565b85602001515b81526020868101519101529150505b92915050565b81516060908067ffffffffffffffff8111156113395761133961262a565b6040519080825280602002602001820160405280156113a257816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816113575790505b50915060005b818110156113f8576113d38582815181106113c5576113c5612659565b60200260200101518561217e565b8382815181106113e5576113e5612659565b60209081029190910101526001016113a8565b505092915050565b60015473ffffffffffffffffffffffffffffffffffffffff166114205750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf0390611477908590600401612ee3565b600060405180830381865afa158015611494573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526114da9190810190612ef6565b60408301515181519192509060006114f28284612fc6565b67ffffffffffffffff81111561150a5761150a61262a565b60405190808252806020026020018201604052801561157357816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816115285790505b50905060005b838110156115c4578560400151818151811061159757611597612659565b60200260200101518282815181106115b1576115b1612659565b6020908102919091010152600101611579565b5060008060005b848110156118df5760008782815181106115e7576115e7612659565b6020026020010151905060005b828110156116a55788818151811061160e5761160e612659565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff160361169d5781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b6001016115f4565b506000805b888110156117665760008b6040015182815181106116ca576116ca612659565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff160361175d578515611747576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516117569084612fc6565b9250600196505b506001016116aa565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff9182169116036117df5784156117c6576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516117d89082612fc6565b9050600193505b806000036118345781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b611842816005612710612142565b826020015111156118b5578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610700565b8186848a01815181106118ca576118ca612659565b602090810291909101015250506001016115cb565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff163014611941576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104c1578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b906119bd9084908690600401612fd9565b60006040518083038186803b1580156119d557600080fd5b505afa158015610e0f573d6000803e3d6000fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe611aa9846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff86168252808701518101519082015285600001516020015186608001516040518060c00160405280608d8152602001613233608d91396040518060800160405280604881526020016131bd60489139604080517f5072696f726974794f726465722800000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602e8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603d8201527f75696e743235362061756374696f6e5374617274426c6f636b2c000000000000604e8201527f75696e7432353620626173656c696e655072696f726974794665655765692c0060688201527f5072696f72697479496e70757420696e7075742c00000000000000000000000060878201527f5072696f726974794f75747075745b5d206f7574707574732900000000000000609b820152815160948183030181526101348201909252605b60b48201818152916132c09060d401396040518060600160405280602e8152602001613205602e9139604051602001611c88959493929190613008565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611cf596959493926004016130a3565b600060405180830381600087803b158015611d0f57600080fd5b505af1158015610e0f573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff8316611d485761035f8282611d6a565b61035f73ffffffffffffffffffffffffffffffffffffffff8416338484612232565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611dc4576040519150601f19603f3d011682016040523d82523d6000602084013e611dc9565b606091505b505090508061035f576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060c00160405280608d8152602001613233608d913980516020918201208351848301516040808701516060880151608089015160a08a0151805190890120935161104898939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b60006040518060800160405280604881526020016131bd6048913980516020918201208351848301516040808701519051611048950193845273ffffffffffffffffffffffffffffffffffffffff9290921660208401526040830152606082015260800190565b600080825160200267ffffffffffffffff811115611f2557611f2561262a565b6040519080825280601f01601f191660200182016040528015611f4f576020820181803683370190505b50905060005b8351811015611f94576000611f82858381518110611f7557611f75612659565b6020026020010151612324565b60208381028501015250600101611f55565b50805160209091012092915050565b600081468460c00151604051602001611fbf9151815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611ffc93929160200161316b565b60405160208183030381529060405280519060200120905092915050565b600080828060200190518101906120319190613198565b9150915060008360408151811061204a5761204a612659565b0160209081015160408051600080825293810180835289905260f89290921c9082018190526060820186905260808201859052925060019060a0016020604051602081039080840390855afa1580156120a7573d6000803e3d6000fd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141580612102575073ffffffffffffffffffffffffffffffffffffffff8116155b15612139576040517fd7815be100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048411830215820261217757600080fd5b5091020490565b604080516060810182526000808252602082018190529181019190915260408051606081018252845173ffffffffffffffffffffffffffffffffffffffff16815290840151602082019015612201576121fc8560400151856121e09190612ecc565b6121ed9062989680612fc6565b6020870151906298968061239b565b612207565b84602001515b8152602001846060015173ffffffffffffffffffffffffffffffffffffffff16815250905092915050565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d116001600051141617169150508061231d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610700565b5050505050565b60006040518060800160405280605b81526020016132c0605b9139805160209182012083518483015160408087015160608801519151611048969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04841183021582026123d057600080fd5b50910281810615159190040190565b6000604082840312156123f157600080fd5b50919050565b60008083601f84011261240957600080fd5b50813567ffffffffffffffff81111561242157600080fd5b60208301915083602082850101111561243957600080fd5b9250929050565b60008060006040848603121561245557600080fd5b833567ffffffffffffffff8082111561246d57600080fd5b612479878388016123df565b9450602086013591508082111561248f57600080fd5b5061249c868287016123f7565b9497909650939450505050565b60008083601f8401126124bb57600080fd5b50813567ffffffffffffffff8111156124d357600080fd5b6020830191508360208260051b850101111561243957600080fd5b6000806020838503121561250157600080fd5b823567ffffffffffffffff81111561251857600080fd5b612524858286016124a9565b90969095509350505050565b6000806000806040858703121561254657600080fd5b843567ffffffffffffffff8082111561255e57600080fd5b61256a888389016124a9565b9096509450602087013591508082111561258357600080fd5b50612590878288016123f7565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089157600080fd5b80356112178161259c565b6000602082840312156125db57600080fd5b81356125e68161259c565b9392505050565b6000602082840312156125ff57600080fd5b813567ffffffffffffffff81111561261657600080fd5b612622848285016123df565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b838110156126a357818101518382015260200161268b565b50506000910152565b600081518084526126c4816020860160208601612688565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b83811015612756578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a015260409182015116908801526060909601959082019060010161270b565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526127d56101a08501826126ac565b905060208301516128136020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b506040830151848203608086015261282b82826126f6565b915050606083015184820360a086015261284582826126ac565b915050608083015160c08501528091505092915050565b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b838110156128d1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526128bf868351612761565b95509382019390820190600101612885565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261295657600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261299557600080fd5b83018035915067ffffffffffffffff8211156129b057600080fd5b60200191503681900382131561243957600080fd5b6040516060810167ffffffffffffffff811182821017156129e8576129e861262a565b60405290565b6040516080810167ffffffffffffffff811182821017156129e8576129e861262a565b604051610100810167ffffffffffffffff811182821017156129e8576129e861262a565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612a7c57612a7c61262a565b604052919050565b600082601f830112612a9557600080fd5b813567ffffffffffffffff811115612aaf57612aaf61262a565b612ae060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612a35565b818152846020838601011115612af557600080fd5b816020850160208301376000918101602001919091529392505050565b600060c08284031215612b2457600080fd5b60405160c0810167ffffffffffffffff8282108183111715612b4857612b4861262a565b8160405282935084359150612b5c8261259c565b908252602084013590612b6e8261259c565b816020840152604085013560408401526060850135606084015260808501359150612b988261259c565b81608084015260a0850135915080821115612bb257600080fd5b50612bbf85828601612a84565b60a0830152505092915050565b600060608284031215612bde57600080fd5b612be66129c5565b90508135612bf38161259c565b80825250602082013560208201526040820135604082015292915050565b600067ffffffffffffffff821115612c2b57612c2b61262a565b5060051b60200190565b600082601f830112612c4657600080fd5b81356020612c5b612c5683612c11565b612a35565b82815260079290921b84018101918181019086841115612c7a57600080fd5b8286015b84811015612cdf5760808189031215612c975760008081fd5b612c9f6129ee565b8135612caa8161259c565b8152818501358582015260408083013590820152606080830135612ccd8161259c565b90820152835291830191608001612c7e565b509695505050505050565b600060208284031215612cfc57600080fd5b6040516020810181811067ffffffffffffffff82111715612d1f57612d1f61262a565b6040529135825250919050565b600060208284031215612d3e57600080fd5b813567ffffffffffffffff80821115612d5657600080fd5b908301906101408286031215612d6b57600080fd5b612d73612a11565b823582811115612d8257600080fd5b612d8e87828601612b12565b825250612d9d602084016125be565b60208201526040830135604082015260608301356060820152612dc38660808501612bcc565b608082015260e083013582811115612dda57600080fd5b612de687828601612c35565b60a083015250612dfa866101008501612cea565b60c082015261012083013582811115612e1257600080fd5b612e1e87828601612a84565b60e08301525095945050505050565b600060208284031215612e3f57600080fd5b5051919050565b60008551612e58818460208a01612688565b855190830190612e6c818360208a01612688565b8551910190612e7f818360208901612688565b8451910190612e92818360208801612688565b019695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808202811582820484141761131557611315612e9d565b6020815260006125e66020830184612761565b60006020808385031215612f0957600080fd5b825167ffffffffffffffff811115612f2057600080fd5b8301601f81018513612f3157600080fd5b8051612f3f612c5682612c11565b81815260609182028301840191848201919088841115612f5e57600080fd5b938501935b83851015612fba5780858a031215612f7b5760008081fd5b612f836129c5565b8551612f8e8161259c565b81528587015187820152604080870151612fa78161259c565b9082015283529384019391850191612f63565b50979650505050505050565b8082018082111561131557611315612e9d565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006126226040830184612761565b7f5072696f726974794f72646572207769746e657373290000000000000000000081526000601687516130418183860160208c01612688565b8751908401906130578184840160208c01612688565b875191019061306c8184840160208b01612688565b86519101906130818184840160208a01612688565b85519101906130968184840160208901612688565b0101979650505050505050565b60006101406130d3838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b60208901516040840152604089015160608401526131146080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e084015280610100840152613149818401866126ac565b905082810361012084015261315e81856126ac565b9998505050505050505050565b83815282602082015260008251613189816040850160208701612688565b91909101604001949350505050565b600080604083850312156131ab57600080fd5b50508051602090910151909290915056fe5072696f72697479496e707574286164647265737320746f6b656e2c75696e7432353620616d6f756e742c75696e74323536206d70735065725072696f7269747946656557656929546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e44617461295072696f726974794f7574707574286164647265737320746f6b656e2c75696e7432353620616d6f756e742c75696e74323536206d70735065725072696f726974794665655765692c6164647265737320726563697069656e7429a2646970667358221220353e4a9c8af32ce67b5de33aaecb5fae198f4618ed76c7f0ec66d08df440265b64736f6c63430008180033","sourceMap":"637:5038:65:-:0;;;1376:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1045:5:40;:14;;-1:-1:-1;;;;;;1045:14:40;-1:-1:-1;;;;;1045:14:40;;;;;;;1075:40;;1446:8:65;;1045:14:40;;;;;;:5;1075:40;;1045:5;;1075:40;-1:-1:-1;;1716:1:27;1821:7;:22;-1:-1:-1;;;;;;1352:18:63::1;;::::0;-1:-1:-1;637:5038:65;;-1:-1:-1;637:5038:65;14:141:79;-1:-1:-1;;;;;99:31:79;;89:42;;79:70;;145:1;142;135:12;79:70;14:141;:::o;160:423::-;257:6;265;318:2;306:9;297:7;293:23;289:32;286:52;;;334:1;331;324:12;286:52;366:9;360:16;385:41;420:5;385:41;:::i;:::-;495:2;480:18;;474:25;445:5;;-1:-1:-1;508:43:79;474:25;508:43;:::i;:::-;570:7;560:17;;;160:423;;;;;:::o;:::-;637:5038:65;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361061009a5760003560e01c80632d771389116100695780636999b3771161004e5780636999b377146101715780638da5cb5b1461019e578063f2fde38b146101cb57600080fd5b80632d7713891461013e5780633f62192e1461015e57600080fd5b80630d335884146100a65780630d7a16c3146100bb57806312261ee7146100ce57806313fb72c71461012b57600080fd5b366100a157005b600080fd5b6100b96100b4366004612440565b6101eb565b005b6100b96100c93660046124ee565b610364565b3480156100da57600080fd5b506101027f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b9610139366004612530565b6104c5565b34801561014a57600080fd5b506100b96101593660046125c9565b610683565b6100b961016c3660046125ed565b61078f565b34801561017d57600080fd5b506001546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101aa57600080fd5b506000546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d757600080fd5b506100b96101e63660046125c9565b610894565b6101f3610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161020a5790505090506102b2846109f6565b816000815181106102c5576102c5612659565b60200260200101819052506102d981610b60565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da628906103199084908790879060040161285c565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b5050505061035481610bb1565b5061035f6001600255565b505050565b61036c610985565b8060008167ffffffffffffffff8111156103885761038861262a565b60405190808252806020026020018201604052801561044357816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103a65790505b50905060005b828110156104a25761047d85858381811061046657610466612659565b90506020028101906104789190612922565b6109f6565b82828151811061048f5761048f612659565b6020908102919091010152600101610449565b506104ac81610b60565b6104b581610bb1565b50506104c16001600255565b5050565b6104cd610985565b8260008167ffffffffffffffff8111156104e9576104e961262a565b6040519080825280602002602001820160405280156105a457816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105075790505b50905060005b828110156105ec576105c787878381811061046657610466612659565b8282815181106105d9576105d9612659565b60209081029190910101526001016105aa565b506105f681610b60565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da628906106369084908890889060040161285c565b600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b5050505061067181610bb1565b505061067d6001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610797610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107ae579050509050610856826109f6565b8160008151811061086957610869612659565b602002602001018190525061087d81610b60565b61088681610bb1565b506108916001600255565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610700565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610700565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a6f8380612960565b810190610a7c9190612d2c565b80516020810151604090910151919250610a9591610d04565b6000610aa082610e17565b9050610aac8183611065565b6000610abb83606001516111c7565b90506040518060a0016040528084600001518152602001610ae983866080015161121c90919063ffffffff16565b8152602001610b05838660a0015161131b90919063ffffffff16565b8152602001868060200190610b1a9190612960565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525060200192909252509392505050565b805160005b8181101561035f576000838281518110610b8157610b81612659565b60200260200101519050610b9481611400565b610b9e81336118f0565b610ba881336119e9565b50600101610b65565b805160005b81811015610cf3576000838281518110610bd257610bd2612659565b602002602001015190506000816040015151905060005b81811015610c5357600083604001518281518110610c0957610c09612659565b60200260200101519050610c4a81604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff16611d239092919063ffffffff16565b50600101610be9565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610c9c57610c9c612659565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610ce191815260200190565b60405180910390a45050600101610bb6565b5047156104c1576104c13347611d6a565b6040517f4fe02b4400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152600883901c6024830181905291600160ff85161b916000917f000000000000000000000000000000000000000000000000000000000000000090911690634fe02b4490604401602060405180830381865afa158015610daa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dce9190612e2d565b9050818118808316600003610e0f576040517fee3b3d4b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050565b6040517f5072696f726974794f726465722800000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602e8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603d8201527f75696e743235362061756374696f6e5374617274426c6f636b2c000000000000604e8201527f75696e7432353620626173656c696e655072696f726974794665655765692c0060688201527f5072696f72697479496e70757420696e7075742c00000000000000000000000060878201527f5072696f726974794f75747075745b5d206f7574707574732900000000000000609b82015260009060b401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260c08301909152608d80835290919061323360208301396040518060800160405280604881526020016131bd604891396040518060800160405280605b81526020016132c0605b9139604051602001610fb19493929190612e46565b60405160208183030381529060405280519060200120610fd48360000151611e04565b836020015184604001518560600151610ff08760800151611e9e565b610ffd8860a00151611f05565b60408051602081019890985287019590955273ffffffffffffffffffffffffffffffffffffffff9093166060860152608085019190915260a084015260c083015260e0820152610100015b604051602081830303815290604052805190602001209050919050565b8051606001514211156110a4576040517f769d11e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040810151602082015173ffffffffffffffffffffffffffffffffffffffff16158015906110d157508043105b80156110e1575060c08201515181115b1561110b576020820151611103906110f98486611fa3565b8460e0015161201a565b5060c0810151515b80431015611145576040517fc603552000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6080820151604001511561035f5760005b8260a001515181101561067d5760008360a00151828151811061117b5761117b612659565b60200260200101516040015111156111bf576040517fa6b844f500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600101611156565b6000483a1015611203576040517ff3eb44e500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50483a0381811115611213570390565b5060005b919050565b6112566040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b60008360400151836112689190612ecc565b90506298968081106112b6576040518060600160405280856000015173ffffffffffffffffffffffffffffffffffffffff168152602001600081526020018560200151815250915050611315565b6040805160608101909152845173ffffffffffffffffffffffffffffffffffffffff1681526020810182156113005760208601516112fb906298968085810390612142565b611306565b85602001515b81526020868101519101529150505b92915050565b81516060908067ffffffffffffffff8111156113395761133961262a565b6040519080825280602002602001820160405280156113a257816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816113575790505b50915060005b818110156113f8576113d38582815181106113c5576113c5612659565b60200260200101518561217e565b8382815181106113e5576113e5612659565b60209081029190910101526001016113a8565b505092915050565b60015473ffffffffffffffffffffffffffffffffffffffff166114205750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf0390611477908590600401612ee3565b600060405180830381865afa158015611494573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526114da9190810190612ef6565b60408301515181519192509060006114f28284612fc6565b67ffffffffffffffff81111561150a5761150a61262a565b60405190808252806020026020018201604052801561157357816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816115285790505b50905060005b838110156115c4578560400151818151811061159757611597612659565b60200260200101518282815181106115b1576115b1612659565b6020908102919091010152600101611579565b5060008060005b848110156118df5760008782815181106115e7576115e7612659565b6020026020010151905060005b828110156116a55788818151811061160e5761160e612659565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff160361169d5781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b6001016115f4565b506000805b888110156117665760008b6040015182815181106116ca576116ca612659565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff160361175d578515611747576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516117569084612fc6565b9250600196505b506001016116aa565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff9182169116036117df5784156117c6576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516117d89082612fc6565b9050600193505b806000036118345781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b611842816005612710612142565b826020015111156118b5578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610700565b8186848a01815181106118ca576118ca612659565b602090810291909101015250506001016115cb565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff163014611941576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104c1578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b906119bd9084908690600401612fd9565b60006040518083038186803b1580156119d557600080fd5b505afa158015610e0f573d6000803e3d6000fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe611aa9846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff86168252808701518101519082015285600001516020015186608001516040518060c00160405280608d8152602001613233608d91396040518060800160405280604881526020016131bd60489139604080517f5072696f726974794f726465722800000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602e8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603d8201527f75696e743235362061756374696f6e5374617274426c6f636b2c000000000000604e8201527f75696e7432353620626173656c696e655072696f726974794665655765692c0060688201527f5072696f72697479496e70757420696e7075742c00000000000000000000000060878201527f5072696f726974794f75747075745b5d206f7574707574732900000000000000609b820152815160948183030181526101348201909252605b60b48201818152916132c09060d401396040518060600160405280602e8152602001613205602e9139604051602001611c88959493929190613008565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611cf596959493926004016130a3565b600060405180830381600087803b158015611d0f57600080fd5b505af1158015610e0f573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff8316611d485761035f8282611d6a565b61035f73ffffffffffffffffffffffffffffffffffffffff8416338484612232565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611dc4576040519150601f19603f3d011682016040523d82523d6000602084013e611dc9565b606091505b505090508061035f576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060c00160405280608d8152602001613233608d913980516020918201208351848301516040808701516060880151608089015160a08a0151805190890120935161104898939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b60006040518060800160405280604881526020016131bd6048913980516020918201208351848301516040808701519051611048950193845273ffffffffffffffffffffffffffffffffffffffff9290921660208401526040830152606082015260800190565b600080825160200267ffffffffffffffff811115611f2557611f2561262a565b6040519080825280601f01601f191660200182016040528015611f4f576020820181803683370190505b50905060005b8351811015611f94576000611f82858381518110611f7557611f75612659565b6020026020010151612324565b60208381028501015250600101611f55565b50805160209091012092915050565b600081468460c00151604051602001611fbf9151815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611ffc93929160200161316b565b60405160208183030381529060405280519060200120905092915050565b600080828060200190518101906120319190613198565b9150915060008360408151811061204a5761204a612659565b0160209081015160408051600080825293810180835289905260f89290921c9082018190526060820186905260808201859052925060019060a0016020604051602081039080840390855afa1580156120a7573d6000803e3d6000fd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141580612102575073ffffffffffffffffffffffffffffffffffffffff8116155b15612139576040517fd7815be100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048411830215820261217757600080fd5b5091020490565b604080516060810182526000808252602082018190529181019190915260408051606081018252845173ffffffffffffffffffffffffffffffffffffffff16815290840151602082019015612201576121fc8560400151856121e09190612ecc565b6121ed9062989680612fc6565b6020870151906298968061239b565b612207565b84602001515b8152602001846060015173ffffffffffffffffffffffffffffffffffffffff16815250905092915050565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d116001600051141617169150508061231d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610700565b5050505050565b60006040518060800160405280605b81526020016132c0605b9139805160209182012083518483015160408087015160608801519151611048969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04841183021582026123d057600080fd5b50910281810615159190040190565b6000604082840312156123f157600080fd5b50919050565b60008083601f84011261240957600080fd5b50813567ffffffffffffffff81111561242157600080fd5b60208301915083602082850101111561243957600080fd5b9250929050565b60008060006040848603121561245557600080fd5b833567ffffffffffffffff8082111561246d57600080fd5b612479878388016123df565b9450602086013591508082111561248f57600080fd5b5061249c868287016123f7565b9497909650939450505050565b60008083601f8401126124bb57600080fd5b50813567ffffffffffffffff8111156124d357600080fd5b6020830191508360208260051b850101111561243957600080fd5b6000806020838503121561250157600080fd5b823567ffffffffffffffff81111561251857600080fd5b612524858286016124a9565b90969095509350505050565b6000806000806040858703121561254657600080fd5b843567ffffffffffffffff8082111561255e57600080fd5b61256a888389016124a9565b9096509450602087013591508082111561258357600080fd5b50612590878288016123f7565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089157600080fd5b80356112178161259c565b6000602082840312156125db57600080fd5b81356125e68161259c565b9392505050565b6000602082840312156125ff57600080fd5b813567ffffffffffffffff81111561261657600080fd5b612622848285016123df565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b838110156126a357818101518382015260200161268b565b50506000910152565b600081518084526126c4816020860160208601612688565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b83811015612756578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a015260409182015116908801526060909601959082019060010161270b565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526127d56101a08501826126ac565b905060208301516128136020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b506040830151848203608086015261282b82826126f6565b915050606083015184820360a086015261284582826126ac565b915050608083015160c08501528091505092915050565b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b838110156128d1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526128bf868351612761565b95509382019390820190600101612885565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261295657600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261299557600080fd5b83018035915067ffffffffffffffff8211156129b057600080fd5b60200191503681900382131561243957600080fd5b6040516060810167ffffffffffffffff811182821017156129e8576129e861262a565b60405290565b6040516080810167ffffffffffffffff811182821017156129e8576129e861262a565b604051610100810167ffffffffffffffff811182821017156129e8576129e861262a565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612a7c57612a7c61262a565b604052919050565b600082601f830112612a9557600080fd5b813567ffffffffffffffff811115612aaf57612aaf61262a565b612ae060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612a35565b818152846020838601011115612af557600080fd5b816020850160208301376000918101602001919091529392505050565b600060c08284031215612b2457600080fd5b60405160c0810167ffffffffffffffff8282108183111715612b4857612b4861262a565b8160405282935084359150612b5c8261259c565b908252602084013590612b6e8261259c565b816020840152604085013560408401526060850135606084015260808501359150612b988261259c565b81608084015260a0850135915080821115612bb257600080fd5b50612bbf85828601612a84565b60a0830152505092915050565b600060608284031215612bde57600080fd5b612be66129c5565b90508135612bf38161259c565b80825250602082013560208201526040820135604082015292915050565b600067ffffffffffffffff821115612c2b57612c2b61262a565b5060051b60200190565b600082601f830112612c4657600080fd5b81356020612c5b612c5683612c11565b612a35565b82815260079290921b84018101918181019086841115612c7a57600080fd5b8286015b84811015612cdf5760808189031215612c975760008081fd5b612c9f6129ee565b8135612caa8161259c565b8152818501358582015260408083013590820152606080830135612ccd8161259c565b90820152835291830191608001612c7e565b509695505050505050565b600060208284031215612cfc57600080fd5b6040516020810181811067ffffffffffffffff82111715612d1f57612d1f61262a565b6040529135825250919050565b600060208284031215612d3e57600080fd5b813567ffffffffffffffff80821115612d5657600080fd5b908301906101408286031215612d6b57600080fd5b612d73612a11565b823582811115612d8257600080fd5b612d8e87828601612b12565b825250612d9d602084016125be565b60208201526040830135604082015260608301356060820152612dc38660808501612bcc565b608082015260e083013582811115612dda57600080fd5b612de687828601612c35565b60a083015250612dfa866101008501612cea565b60c082015261012083013582811115612e1257600080fd5b612e1e87828601612a84565b60e08301525095945050505050565b600060208284031215612e3f57600080fd5b5051919050565b60008551612e58818460208a01612688565b855190830190612e6c818360208a01612688565b8551910190612e7f818360208901612688565b8451910190612e92818360208801612688565b019695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808202811582820484141761131557611315612e9d565b6020815260006125e66020830184612761565b60006020808385031215612f0957600080fd5b825167ffffffffffffffff811115612f2057600080fd5b8301601f81018513612f3157600080fd5b8051612f3f612c5682612c11565b81815260609182028301840191848201919088841115612f5e57600080fd5b938501935b83851015612fba5780858a031215612f7b5760008081fd5b612f836129c5565b8551612f8e8161259c565b81528587015187820152604080870151612fa78161259c565b9082015283529384019391850191612f63565b50979650505050505050565b8082018082111561131557611315612e9d565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006126226040830184612761565b7f5072696f726974794f72646572207769746e657373290000000000000000000081526000601687516130418183860160208c01612688565b8751908401906130578184840160208c01612688565b875191019061306c8184840160208b01612688565b86519101906130818184840160208a01612688565b85519101906130968184840160208901612688565b0101979650505050505050565b60006101406130d3838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b60208901516040840152604089015160608401526131146080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e084015280610100840152613149818401866126ac565b905082810361012084015261315e81856126ac565b9998505050505050505050565b83815282602082015260008251613189816040850160208701612688565b91909101604001949350505050565b600080604083850312156131ab57600080fd5b50508051602090910151909290915056fe5072696f72697479496e707574286164647265737320746f6b656e2c75696e7432353620616d6f756e742c75696e74323536206d70735065725072696f7269747946656557656929546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e44617461295072696f726974794f7574707574286164647265737320746f6b656e2c75696e7432353620616d6f756e742c75696e74323536206d70735065725072696f726974794665655765692c6164647265737320726563697069656e7429a2646970667358221220353e4a9c8af32ce67b5de33aaecb5fae198f4618ed76c7f0ec66d08df440265b64736f6c63430008180033","sourceMap":"637:5038:65:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1721:435:63;;;;;;:::i;:::-;;:::i;:::-;;2191:453;;;;;;:::i;:::-;;:::i;1212:33::-;;;;;;;;;;;;;;;;;;2288:42:79;2276:55;;;2258:74;;2246:2;2231:18;1212:33:63;;;;;;;2679:614;;;;;;:::i;:::-;;:::i;4161:289:44:-;;;;;;;;;;-1:-1:-1;4161:289:44;;;;;:::i;:::-;;:::i;1412:274:63:-;;;;;;:::i;:::-;;:::i;1479:43:44:-;;;;;;;;;;-1:-1:-1;1479:43:44;;;;;;;;690:20:40;;;;;;;;;;-1:-1:-1;690:20:40;;;;;;;;1312:161;;;;;;;;;;-1:-1:-1;1312:161:40;;;;;:::i;:::-;;:::i;1721:435:63:-;2261:21:27;:19;:21::i;:::-;1932:22:63::1;::::0;;1952:1:::1;1932:22:::0;;;;;::::1;::::0;;;1892:37:::1;::::0;1932:22:::1;;;;-1:-1:-1::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1932:22:63;;;;;;;::::1;::::0;::::1;;;;;1892:62;;1984:15;1993:5;1984:8;:15::i;:::-;1964:14;1979:1;1964:17;;;;;;;;:::i;:::-;;;;;;:35;;;;2010:24;2019:14;2010:8;:24::i;:::-;2044:74;::::0;;;;2061:10:::1;::::0;2044:44:::1;::::0;:74:::1;::::0;2089:14;;2105:12;;;;2044:74:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;2128:21;2134:14;2128:5;:21::i;:::-;1882:274;2303:20:27::0;1716:1;2809:7;:22;2629:209;2303:20;1721:435:63;;;:::o;2191:453::-;2261:21:27;:19;:21::i;:::-;2316:6:63;2293:20:::1;2316:6:::0;2379:33:::1;::::0;::::1;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2379:33:63;;;;;;;::::1;::::0;::::1;;;;;;2339:73;;2452:9;2447:115;2471:12;2467:1;:16;2447:115;;;2528:19;2537:6;;2544:1;2537:9;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;2528:8;:19::i;:::-;2508:14;2523:1;2508:17;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;:39;2485:3:::1;;2447:115;;;;2582:24;2591:14;2582:8;:24::i;:::-;2616:21;2622:14;2616:5;:21::i;:::-;2283:361;;2303:20:27::0;1716:1;2809:7;:22;2629:209;2303:20;2191:453:63;;:::o;2679:614::-;2261:21:27;:19;:21::i;:::-;2881:6:63;2858:20:::1;2881:6:::0;2944:33:::1;::::0;::::1;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2944:33:63;;;;;;;::::1;::::0;::::1;;;;;;2904:73;;3017:9;3012:115;3036:12;3032:1;:16;3012:115;;;3093:19;3102:6;;3109:1;3102:9;;;;;;;:::i;3093:19::-;3073:14;3088:1;3073:17;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;:39;3050:3:::1;;3012:115;;;;3147:24;3156:14;3147:8;:24::i;:::-;3181:74;::::0;;;;3198:10:::1;::::0;3181:44:::1;::::0;:74:::1;::::0;3226:14;;3242:12;;;;3181:74:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;3265:21;3271:14;3265:5;:21::i;:::-;2848:445;;2303:20:27::0;1716:1;2809:7;:22;2629:209;2303:20;2679:614:63;;;;:::o;4161:289:44:-;778:5:40;;;;764:10;:19;756:44;;;;;;;9611:2:79;756:44:40;;;9593:21:79;9650:2;9630:18;;;9623:30;9689:14;9669:18;;;9662:42;9721:18;;756:44:40;;;;;;;;;4286:13:44::1;::::0;;::::1;4310:57:::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;4382:61:::1;::::0;;4286:13;;;::::1;9985:34:79::0;;;10050:2;10035:18;;10028:43;;;;4382:61:44::1;::::0;9897:18:79;4382:61:44::1;;;;;;;4241:209;4161:289:::0;:::o;1412:274:63:-;2261:21:27;:19;:21::i;:::-;1546:22:63::1;::::0;;1566:1:::1;1546:22:::0;;;;;::::1;::::0;;;1506:37:::1;::::0;1546:22:::1;;;;-1:-1:-1::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1546:22:63;;;;;;;::::1;::::0;::::1;;;;;1506:62;;1598:15;1607:5;1598:8;:15::i;:::-;1578:14;1593:1;1578:17;;;;;;;;:::i;:::-;;;;;;:35;;;;1624:24;1633:14;1624:8;:24::i;:::-;1658:21;1664:14;1658:5;:21::i;:::-;1496:190;2303:20:27::0;1716:1;2809:7;:22;2629:209;2303:20;1412:274:63;:::o;1312:161:40:-;778:5;;;;764:10;:19;756:44;;;;;;;9611:2:79;756:44:40;;;9593:21:79;9650:2;9630:18;;;9623:30;9689:14;9669:18;;;9662:42;9721:18;;756:44:40;9409:336:79;756:44:40;1392:5:::1;:16:::0;;;::::1;;::::0;::::1;::::0;;::::1;::::0;;1424:42:::1;::::0;1392:16;;1445:10:::1;::::0;1424:42:::1;::::0;1392:5;1424:42:::1;1312:161:::0;:::o;2336:287:27:-;1759:1;2468:7;;:19;2460:63;;;;;;;10284:2:79;2460:63:27;;;10266:21:79;10323:2;10303:18;;;10296:30;10362:33;10342:18;;;10335:61;10413:18;;2460:63:27;10082:355:79;2460:63:27;1759:1;2598:18;;2336:287::o;1515:730:65:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1721:17:65;:11;;:17;:::i;:::-;1710:46;;;;;;;:::i;:::-;1786:10;;:18;;;;1806:16;;;;;1681:75;;-1:-1:-1;1767:56:65;;:18;:56::i;:::-;1834:17;1854:12;:5;:10;:12::i;:::-;1834:32;;1877;1892:9;1903:5;1877:14;:32::i;:::-;1920:19;1942:45;1958:5;:28;;;1942:15;:45::i;:::-;1920:67;;2014:224;;;;;;;;2048:5;:10;;;2014:224;;;;2079:30;2097:11;2079:5;:11;;;:17;;:30;;;;:::i;:::-;2014:224;;;;2132:32;2152:11;2132:5;:13;;;:19;;:32;;;;:::i;:::-;2014:224;;;;2183:11;:15;;;;;;;;:::i;:::-;2014:224;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2014:224:65;;;-1:-1:-1;2014:224:65;;;;;;-1:-1:-1;1998:240:65;1515:730;-1:-1:-1;;;1515:730:65:o;3441:405:63:-;3532:13;;3509:20;3579:251;3603:12;3599:1;:16;3579:251;;;3640:26;3669:6;3676:1;3669:9;;;;;;;;:::i;:::-;;;;;;;3640:38;;3696:18;3708:5;3696:11;:18::i;:::-;3732:26;:5;3747:10;3732:14;:26::i;:::-;3776:39;3797:5;3804:10;3776:20;:39::i;:::-;-1:-1:-1;3617:3:63;;3579:251;;3968:1267;4056:13;;4033:20;4236:536;4260:12;4256:1;:16;4236:536;;;4297:34;4334:6;4341:1;4334:9;;;;;;;;:::i;:::-;;;;;;;4297:46;;4361:21;4385:13;:21;;;:28;4361:52;;4436:9;4431:217;4455:13;4451:1;:17;4431:217;;;4497:25;4525:13;:21;;;4547:1;4525:24;;;;;;;;:::i;:::-;;;;;;;4497:52;;4571:58;4597:6;:16;;;4615:6;:13;;;4571:6;:12;;;:25;;;;:58;;;;;:::i;:::-;-1:-1:-1;4470:3:63;;4431:217;;;;4704:13;:18;;;:26;;;4671:86;;4692:10;4671:86;;4676:6;4683:1;4676:9;;;;;;;;:::i;:::-;;;;;;;:14;;;4671:86;4732:13;:18;;;:24;;;4671:86;;;;17718:25:79;;17706:2;17691:18;;17572:177;4671:86:63;;;;;;;;-1:-1:-1;;4274:3:63;;4236:536;;;-1:-1:-1;5112:21:63;:25;5108:121;;5153:65;5184:10;5196:21;5153:30;:65::i;5328:345:65:-;5527:37;;;;;:19;17946:55:79;;;5527:37:65;;;17928:74:79;5447:1:65;5438:10;;;18018:18:79;;;18011:34;;;5438:10:65;5473:1;:17;;;;;5412:15;;5527:7;:19;;;;;;17901:18:79;;5527:37:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5510:54;-1:-1:-1;5592:12:65;;;5619:13;;;5574:15;5619:18;5615:51;;5646:20;;;;;;;;;;;;;;5615:51;5402:271;;;;5328:345;;:::o;5078:414:60:-;3051:254;;19065:16:79;3051:254:60;;;19053:29:79;19112:17;19098:12;;;19091:39;19160:19;19146:12;;;19139:41;19210:28;19196:12;;;19189:50;19269:33;19255:12;;;19248:55;19334:22;19319:13;;;19312:45;19388:27;19373:13;;;19366:50;5143:7:60;;19432:13:79;;3051:254:60;;;;;;;;;;3535:28;;;;;;;;;;3051:254;;;3535:28;3051:254;3535:28;;;3573:25;;;;;;;;;;;;;;;;;3608:26;;;;;;;;;;;;;;;;;3471:169;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3690:21;;;;;;5253:17;:5;:10;;;:15;:17::i;:::-;5288:5;:14;;;5320:5;:23;;;5361:5;:28;;;5407:17;5412:5;:11;;;5407:4;:17::i;:::-;5442:19;5447:5;:13;;;5442:4;:19::i;:::-;5192:283;;;;;;20678:25:79;;;;20719:18;;20712:34;;;;20794:42;20782:55;;;20762:18;;;20755:83;20854:18;;;20847:34;;;;20897:19;;;20890:35;20941:19;;;20934:35;20985:19;;;20978:35;20650:19;;5192:283:60;;;;;;;;;;;;;5169:316;;;;;;5162:323;;5078:414;;;:::o;2901:1351:65:-;3000:10;;:19;;;3022:15;-1:-1:-1;2996:92:65;;;3060:17;;;;;;;;;;;;;;2996:92;3126:23;;;;3469:14;;;;:28;;;;;;:64;;;3516:17;3501:12;:32;3469:64;:141;;;;-1:-1:-1;3553:18:65;;;;:37;:57;-1:-1:-1;3469:141:65;3452:352;;;3654:14;;;;3635:86;;3670:31;3654:5;3691:9;3670:20;:31::i;:::-;3703:5;:17;;;3635:18;:86::i;:::-;-1:-1:-1;3756:18:65;;;;:37;3452:352;3903:17;3888:12;:32;3884:88;;;3943:18;;;;;;;;;;;;;;3884:88;3986:11;;;;:32;;;:36;3982:264;;4043:9;4038:198;4062:5;:13;;;:20;4058:1;:24;4038:198;;;4151:1;4111:5;:13;;;4125:1;4111:16;;;;;;;;:::i;:::-;;;;;;;:37;;;:41;4107:115;;;4183:20;;;;;;;;;;;;;;4107:115;4084:3;;4038:198;;4566:439;4646:19;4695:13;4681:11;:27;4677:57;;;4717:17;;;;;;;;;;;;;;4677:57;-1:-1:-1;4796:13:65;4782:11;:27;4827:36;;;4823:166;;;4883:37;;4566:439::o;4823:166::-;-1:-1:-1;4973:1:65;4823:166;4566:439;;;:::o;1023:589:59:-;1110:17;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;1110:17:59;1139:21;1177:5;:26;;;1163:11;:40;;;;:::i;:::-;1139:64;;542:3;1217:13;:20;1213:126;;1260:68;;;;;;;;1279:5;:11;;;1260:68;;;;;;1300:1;1260:68;;;;1314:5;:12;;;1260:68;;;1253:75;;;;;1213:126;1379:216;;;;;;;;;1415:11;;1379:216;;;;;;;1452:18;;:87;;1488:12;;;;:51;;542:3;1513:19;;;;1488:23;:51::i;:::-;1452:87;;;1473:5;:12;;;1452:87;1379:216;;;1568:12;;;;1379:216;;;1372:223;-1:-1:-1;;1023:589:59;;;;;:::o;2417:372::-;2599:14;;2533:27;;2599:14;2632:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;2632:31:59;;;;;;;;;;;;;;;2623:40;;2678:9;2673:110;2697:12;2693:1;:16;2673:110;;;2742:30;2748:7;2756:1;2748:10;;;;;;;;:::i;:::-;;;;;;;2760:11;2742:5;:30::i;:::-;2730:6;2737:1;2730:9;;;;;;;;:::i;:::-;;;;;;;;;;:42;2711:3;;2673:110;;;;2566:223;2417:372;;;;:::o;1825:2185:44:-;1910:13;;1902:36;1910:13;1898:73;;1825:2185;:::o;1898:73::-;2015:13;;:34;;;;;1981:31;;2015:13;;;:27;;:34;;2043:5;;2015:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2083:13;;;;:20;2140:17;;1981:68;;-1:-1:-1;2083:20:44;2059:21;2294:32;2140:17;2083:20;2294:32;:::i;:::-;2276:51;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;2276:51:44;;;;;;;;;;;;;;;2242:85;;2343:9;2338:101;2362:13;2358:1;:17;2338:101;;;2412:5;:13;;;2426:1;2412:16;;;;;;;;:::i;:::-;;;;;;;2396:10;2407:1;2396:13;;;;;;;;:::i;:::-;;;;;;;;;;:32;2377:3;;2338:101;;;;2449:19;2486:18;2527:9;2522:1445;2546:16;2542:1;:20;2522:1445;;;2583:28;2614:10;2625:1;2614:13;;;;;;;;:::i;:::-;;;;;;;2583:44;;2682:9;2677:191;2701:1;2697;:5;2677:191;;;2750:10;2761:1;2750:13;;;;;;;;:::i;:::-;;;;;;;:19;;;2731:38;;:9;:15;;;:38;;;2727:127;;2819:15;;2800:35;;;;;2288:42:79;2276:55;;;2800:35:44;;;2258:74:79;2231:18;;2800:35:44;2094:244:79;2727:127:44;2704:3;;2677:191;;;-1:-1:-1;2933:18:44;;2965:354;2989:13;2985:1;:17;2965:354;;;3027:25;3055:5;:13;;;3069:1;3055:16;;;;;;;;:::i;:::-;;;;;;;3027:44;;3109:9;:15;;;3093:31;;:6;:12;;;:31;;;3089:216;;3152:13;3148:46;;;3174:20;;;;;;;;;;;;;;3148:46;3230:13;;;;3216:27;;;;:::i;:::-;;;3282:4;3265:21;;3089:216;-1:-1:-1;3004:3:44;;2965:354;;;-1:-1:-1;3415:15:44;;3393:11;;;;:17;3385:45;;;;;;;3381:219;;3454:14;3450:47;;;3477:20;;;;;;;;;;;;;;3450:47;3529:11;;;;;:18;;3515:32;;;;:::i;:::-;;;3581:4;3565:20;;3381:219;3618:10;3632:1;3618:15;3614:60;;3658:15;;3642:32;;;;;2288:42:79;2276:55;;;3642:32:44;;;2258:74:79;2231:18;;3642:32:44;2094:244:79;3614:60:44;3712:39;:10;1424:1;1373:6;3712:21;:39::i;:::-;3693:9;:16;;;:58;3689:171;;;3790:15;;3807:16;;;;3825:19;;;;;3778:67;;;;;23476:42:79;23545:15;;;3778:67:44;;;23527:34:79;23577:18;;;23570:34;;;;23640:15;;;;23620:18;;;23613:43;23439:18;;3778:67:44;23264:398:79;3689:171:44;3933:9;3901:10;3928:1;3912:13;:17;3901:29;;;;;;;;:::i;:::-;;;;;;;;;;:41;-1:-1:-1;;2564:3:44;;2522:1445;;;-1:-1:-1;;;3977:13:44;;;;:26;;;;-1:-1:-1;;;1825:2185:44:o;429:396:61:-;552:18;;:26;527:52;;535:4;527:52;523:106;;602:16;;;;;;;;;;;;;;523:106;651:18;;:47;;;643:70;;;639:180;;729:18;;:47;;;:79;;;;;:56;;;;;;;:79;;786:6;;729:13;;:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2283:345:65;2381:7;:33;;;2428:16;:5;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;509:303:58;;;572:149;;;;;641:11;;;;;;:17;572:149;;509:303;;;;572:149;;;685:11;;:21;;;572:149;;;;509:303;;742:10;;:16;;;509:303;;;;;;;782:10;;:19;;;;509:303;;;;;349:470;2428:16:65;-1:-1:-1;;;;;;;;;;;;;;;;;1071:90:58;;;;;;;;;;;;;1141:11;;;;:18;;;1071:90;;;;2497:5:65;:10;;;:18;;;2529:5;:10;;;2788:28:60;;;;;;;;;;;;;;;;;2830:25;;;;;;;;;;;;;;;;;3051:254;;;19065:16:79;3051:254:60;;;19053:29:79;19112:17;19098:12;;;19091:39;19160:19;19146:12;;;19139:41;19210:28;19196:12;;;19189:50;19269:33;19255:12;;;19248:55;19334:22;19319:13;;;19312:45;19388:27;19373:13;;;19366:50;3051:254:60;;;;;;;;;2911:26;;;;;;;19432:13:79;;;2911:26:60;;;19432:13:79;2911:26:60;;;;;2951:22;;;;;;;;;;;;;;;;;2720:263;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;2602:9:65;;;;2381:240;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1478:434:52;2501:18;;;1572:334;;1695:33;1710:9;1721:6;1695:14;:33::i;1572:334::-;1832:63;:32;;;1865:10;1877:9;1888:6;1832:32;:63::i;2084:189::-;2163:12;2180:9;:14;;2202:6;2180:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2162:51;;;2228:7;2223:43;;2244:22;;;;;;;;;;;;;;574:416:57;634:7;461:15;;;;;;;;;;;;;;;;;451:26;;;;;;;749:12;;779;;;;809:10;;;;;837:13;;;;868:33;;;;929:29;;;;919:40;;;;;;683:290;;;;809:10;;837:13;;868:33;;919:40;683:290;27246:25:79;;;27290:42;27368:15;;;27363:2;27348:18;;27341:43;27420:15;;;27415:2;27400:18;;27393:43;27467:2;27452:18;;27445:34;;;;27510:3;27495:19;;27488:35;27560:15;;;27554:3;27539:19;;27532:44;27607:3;27592:19;;27585:35;27233:3;27218:19;;26884:742;3776:217:60;3840:7;1859:25;;;;;;;;;;;;;;;;;1849:36;;;;;;;3931:11;;3944:12;;;;3958:26;;;;;3888:97;;;;;27877:25:79;;;27950:42;27938:55;;;;27933:2;27918:18;;27911:83;28025:2;28010:18;;28003:34;28068:2;28053:18;;28046:34;27864:3;27849:19;;27631:455;4468:489:60;4537:7;4580:25;4623:7;:14;4618:2;:19;4608:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4608:30:60;;4580:58;;4658:9;4653:243;4677:7;:14;4673:1;:18;4653:243;;;4716:18;4737:16;4742:7;4750:1;4742:10;;;;;;;;:::i;:::-;;;;;;;4737:4;:16::i;:::-;4845:4;4838:12;;;4809:42;;;4802:62;-1:-1:-1;4693:3:60;;4653:243;;;-1:-1:-1;4917:23:60;;;;;;;;4468:489;-1:-1:-1;;4468:489:60:o;5636:212::-;5730:7;5783:9;5794:13;5820:5;:18;;;5809:30;;;;;;28333:13:79;28315:32;;28303:2;28288:18;;28091:262;5809:30:60;;;;;;;;;;;;;;;5766:74;;;;5809:30;5766:74;;:::i;:::-;;;;;;;;;;;;;5756:85;;;;;;5749:92;;5636:212;;;;:::o;532:351:51:-;631:9;642;666:11;655:43;;;;;;;;;;;;:::i;:::-;630:68;;;;708:7;724:11;736:2;724:15;;;;;;;;:::i;:::-;;;;;;;767:24;;;750:14;767:24;;;;;;;;;29264:25:79;;;724:15:51;;;;;29305:18:79;;;29298:45;;;29359:18;;;29352:34;;;29402:18;;;29395:34;;;724:15:51;-1:-1:-1;767:24:51;;29236:19:79;;767:24:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;750:41;;817:6;805:18;;:8;:18;;;;:42;;;-1:-1:-1;827:20:51;;;;805:42;801:75;;;856:20;;;;;;;;;;;;;;801:75;620:263;;;;532:351;;;:::o;1564:526:42:-;1680:9;1928:1;1915:11;1911:19;1908:1;1905:26;1902:1;1898:34;1891:42;1878:11;1874:60;1864:116;;1964:1;1961;1954:12;1864:116;-1:-1:-1;2051:9:42;;2047:27;;1564:526::o;1901:415:59:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;2027:282:59;;;;;;;;2060:12;;2027:282;;;;2094:27;;;;2027:282;;;;2094:32;:163;;2177:80;2222:6;:27;;;2208:11;:41;;;;:::i;:::-;2201:49;;542:3;2201:49;:::i;:::-;2177:13;;;;;542:3;2177:22;:80::i;:::-;2094:163;;;2145:6;:13;;;2094:163;2027:282;;;;2282:6;:16;;;2027:282;;;;;2020:289;;1901:415;;;;:::o;1328:1782:43:-;1466:12;1636:4;1630:11;1778:66;1759:17;1752:93;1902:42;1896:4;1892:53;1888:1;1869:17;1865:25;1858:88;2042:42;2038:2;2034:51;2029:2;2010:17;2006:26;1999:87;2172:6;2167:2;2148:17;2144:26;2137:42;3026:2;3023:1;3018:3;2999:17;2996:1;2989:5;2982;2977:52;2545:16;2538:24;2532:2;2514:16;2511:24;2507:1;2503;2497:8;2494:15;2490:46;2487:76;2287:756;2276:767;;;3071:7;3063:40;;;;;;;29642:2:79;3063:40:43;;;29624:21:79;29681:2;29661:18;;;29654:30;29720:22;29700:18;;;29693:50;29760:18;;3063:40:43;29440:344:79;3063:40:43;1456:1654;1328:1782;;;;:::o;4058:345:60:-;4124:7;2123:26;;;;;;;;;;;;;;;;;2113:37;;;;;;;4250:12;;4280:13;;;;4311:27;;;;;4356:16;;;;4173:213;;;;4311:27;;4356:16;4173:213;30048:25:79;;;30092:42;30170:15;;;30165:2;30150:18;;30143:43;30217:2;30202:18;;30195:34;;;;30260:2;30245:18;;30238:34;30309:15;30303:3;30288:19;;30281:44;30035:3;30020:19;;29789:542;2096:672:42;2210:9;2458:1;2445:11;2441:19;2438:1;2435:26;2432:1;2428:34;2421:42;2408:11;2404:60;2394:116;;2494:1;2491;2484:12;2394:116;-1:-1:-1;2728:9:42;;2691:27;;;2688:34;;2724:27;;;2684:68;;2096:672::o;14:159:79:-;78:5;123:2;114:6;109:3;105:16;101:25;98:45;;;139:1;136;129:12;98:45;-1:-1:-1;161:6:79;14:159;-1:-1:-1;14:159:79:o;178:347::-;229:8;239:6;293:3;286:4;278:6;274:17;270:27;260:55;;311:1;308;301:12;260:55;-1:-1:-1;334:20:79;;377:18;366:30;;363:50;;;409:1;406;399:12;363:50;446:4;438:6;434:17;422:29;;498:3;491:4;482:6;474;470:19;466:30;463:39;460:59;;;515:1;512;505:12;460:59;178:347;;;;;:::o;530:673::-;641:6;649;657;710:2;698:9;689:7;685:23;681:32;678:52;;;726:1;723;716:12;678:52;766:9;753:23;795:18;836:2;828:6;825:14;822:34;;;852:1;849;842:12;822:34;875:71;938:7;929:6;918:9;914:22;875:71;:::i;:::-;865:81;;999:2;988:9;984:18;971:32;955:48;;1028:2;1018:8;1015:16;1012:36;;;1044:1;1041;1034:12;1012:36;;1083:60;1135:7;1124:8;1113:9;1109:24;1083:60;:::i;:::-;530:673;;1162:8;;-1:-1:-1;1057:86:79;;-1:-1:-1;;;;530:673:79:o;1208:387::-;1291:8;1301:6;1355:3;1348:4;1340:6;1336:17;1332:27;1322:55;;1373:1;1370;1363:12;1322:55;-1:-1:-1;1396:20:79;;1439:18;1428:30;;1425:50;;;1471:1;1468;1461:12;1425:50;1508:4;1500:6;1496:17;1484:29;;1568:3;1561:4;1551:6;1548:1;1544:14;1536:6;1532:27;1528:38;1525:47;1522:67;;;1585:1;1582;1575:12;1600:489;1718:6;1726;1779:2;1767:9;1758:7;1754:23;1750:32;1747:52;;;1795:1;1792;1785:12;1747:52;1835:9;1822:23;1868:18;1860:6;1857:30;1854:50;;;1900:1;1897;1890:12;1854:50;1939:90;2021:7;2012:6;2001:9;1997:22;1939:90;:::i;:::-;2048:8;;1913:116;;-1:-1:-1;1600:489:79;-1:-1:-1;;;;1600:489:79:o;2343:797::-;2481:6;2489;2497;2505;2558:2;2546:9;2537:7;2533:23;2529:32;2526:52;;;2574:1;2571;2564:12;2526:52;2614:9;2601:23;2643:18;2684:2;2676:6;2673:14;2670:34;;;2700:1;2697;2690:12;2670:34;2739:90;2821:7;2812:6;2801:9;2797:22;2739:90;:::i;:::-;2848:8;;-1:-1:-1;2713:116:79;-1:-1:-1;2936:2:79;2921:18;;2908:32;;-1:-1:-1;2952:16:79;;;2949:36;;;2981:1;2978;2971:12;2949:36;;3020:60;3072:7;3061:8;3050:9;3046:24;3020:60;:::i;:::-;2343:797;;;;-1:-1:-1;3099:8:79;-1:-1:-1;;;;2343:797:79:o;3145:154::-;3231:42;3224:5;3220:54;3213:5;3210:65;3200:93;;3289:1;3286;3279:12;3304:134;3372:20;;3401:31;3372:20;3401:31;:::i;3443:247::-;3502:6;3555:2;3543:9;3534:7;3530:23;3526:32;3523:52;;;3571:1;3568;3561:12;3523:52;3610:9;3597:23;3629:31;3654:5;3629:31;:::i;:::-;3679:5;3443:247;-1:-1:-1;;;3443:247:79:o;3695:365::-;3786:6;3839:2;3827:9;3818:7;3814:23;3810:32;3807:52;;;3855:1;3852;3845:12;3807:52;3895:9;3882:23;3928:18;3920:6;3917:30;3914:50;;;3960:1;3957;3950:12;3914:50;3983:71;4046:7;4037:6;4026:9;4022:22;3983:71;:::i;:::-;3973:81;3695:365;-1:-1:-1;;;;3695:365:79:o;4559:184::-;4611:77;4608:1;4601:88;4708:4;4705:1;4698:15;4732:4;4729:1;4722:15;4748:184;4800:77;4797:1;4790:88;4897:4;4894:1;4887:15;4921:4;4918:1;4911:15;4937:250;5022:1;5032:113;5046:6;5043:1;5040:13;5032:113;;;5122:11;;;5116:18;5103:11;;;5096:39;5068:2;5061:10;5032:113;;;-1:-1:-1;;5179:1:79;5161:16;;5154:27;4937:250::o;5192:329::-;5233:3;5271:5;5265:12;5298:6;5293:3;5286:19;5314:76;5383:6;5376:4;5371:3;5367:14;5360:4;5353:5;5349:16;5314:76;:::i;:::-;5435:2;5423:15;5440:66;5419:88;5410:98;;;;5510:4;5406:109;;5192:329;-1:-1:-1;;5192:329:79:o;5787:700::-;5851:3;5889:5;5883:12;5916:6;5911:3;5904:19;5942:4;5971;5966:3;5962:14;5955:21;;6010:4;6003:5;5999:16;6033:1;6043:419;6057:6;6054:1;6051:13;6043:419;;;6116:13;;6223:9;;6152:42;6219:18;;;6207:31;;6278:11;;;6272:18;6258:12;;;6251:40;6314:4;6362:11;;;6356:18;6352:27;6338:12;;;6331:49;6409:4;6400:14;;;;6437:15;;;;6079:1;6072:9;6043:419;;;-1:-1:-1;6478:3:79;;5787:700;-1:-1:-1;;;;;5787:700:79:o;6492:1240::-;6548:3;6592:5;6586:12;6619:4;6614:3;6607:17;6643:42;6742:2;6727:12;6721:19;6717:28;6710:4;6705:3;6701:14;6694:52;6813:2;6805:4;6791:12;6787:23;6781:30;6777:39;6771:3;6766;6762:13;6755:62;6872:4;6858:12;6854:23;6848:30;6842:3;6837;6833:13;6826:53;6934:4;6920:12;6916:23;6910:30;6904:3;6899;6895:13;6888:53;7008:2;7000:4;6986:12;6982:23;6976:30;6972:39;6966:3;6961;6957:13;6950:62;;7067:4;7053:12;7049:23;7043:30;7021:52;;7104:4;7098:3;7093;7089:13;7082:27;7131:47;7173:3;7168;7164:13;7148:14;7131:47;:::i;:::-;7118:60;;7226:4;7219:5;7215:16;7209:23;7241:60;7295:4;7290:3;7286:14;7270;5606:12;;5620:42;5602:61;5590:74;;5713:4;5702:16;;;5696:23;5680:14;;;5673:47;5769:4;5758:16;;;5752:23;5736:14;;5729:47;5526:256;7241:60;;7349:4;7342:5;7338:16;7332:23;7398:3;7391:5;7387:15;7380:4;7375:3;7371:14;7364:39;7424:62;7480:5;7464:14;7424:62;:::i;:::-;7412:74;;;7534:4;7527:5;7523:16;7517:23;7582:3;7576:4;7572:14;7565:4;7560:3;7556:14;7549:38;7610;7643:4;7627:14;7610:38;:::i;:::-;7596:52;;;7697:4;7690:5;7686:16;7680:23;7673:4;7668:3;7664:14;7657:47;7720:6;7713:13;;;6492:1240;;;;:::o;7737:1274::-;7999:4;8047:2;8036:9;8032:18;8077:2;8066:9;8059:21;8100:6;8135;8129:13;8166:6;8158;8151:22;8204:2;8193:9;8189:18;8182:25;;8266:2;8256:6;8253:1;8249:14;8238:9;8234:30;8230:39;8216:53;;8288:4;8327:2;8319:6;8315:15;8348:1;8358:328;8372:6;8369:1;8366:13;8358:328;;;8461:66;8449:9;8441:6;8437:22;8433:95;8428:3;8421:108;8552:54;8599:6;8590;8584:13;8552:54;:::i;:::-;8542:64;-1:-1:-1;8664:12:79;;;;8629:15;;;;8394:1;8387:9;8358:328;;;8362:3;;8734:9;8726:6;8722:22;8717:2;8706:9;8702:18;8695:50;8769:6;8761;8754:22;8823:6;8815;8810:2;8802:6;8798:15;8785:45;8876:1;8850:19;;;8846:28;;8839:39;8927:2;8915:15;;;8932:66;8911:88;8899:101;;;8895:110;;;;7737:1274;-1:-1:-1;;;;;;7737:1274:79:o;9016:388::-;9114:4;9172:11;9159:25;9262:66;9251:8;9235:14;9231:29;9227:102;9207:18;9203:127;9193:155;;9344:1;9341;9334:12;9193:155;9365:33;;;;;9016:388;-1:-1:-1;;9016:388:79:o;10442:580::-;10519:4;10525:6;10585:11;10572:25;10675:66;10664:8;10648:14;10644:29;10640:102;10620:18;10616:127;10606:155;;10757:1;10754;10747:12;10606:155;10784:33;;10836:20;;;-1:-1:-1;10879:18:79;10868:30;;10865:50;;;10911:1;10908;10901:12;10865:50;10944:4;10932:17;;-1:-1:-1;10975:14:79;10971:27;;;10961:38;;10958:58;;;11012:1;11009;11002:12;11027:253;11099:2;11093:9;11141:4;11129:17;;11176:18;11161:34;;11197:22;;;11158:62;11155:88;;;11223:18;;:::i;:::-;11259:2;11252:22;11027:253;:::o;11285:::-;11357:2;11351:9;11399:4;11387:17;;11434:18;11419:34;;11455:22;;;11416:62;11413:88;;;11481:18;;:::i;11543:255::-;11615:2;11609:9;11657:6;11645:19;;11694:18;11679:34;;11715:22;;;11676:62;11673:88;;;11741:18;;:::i;11803:334::-;11874:2;11868:9;11930:2;11920:13;;11935:66;11916:86;11904:99;;12033:18;12018:34;;12054:22;;;12015:62;12012:88;;;12080:18;;:::i;:::-;12116:2;12109:22;11803:334;;-1:-1:-1;11803:334:79:o;12142:589::-;12184:5;12237:3;12230:4;12222:6;12218:17;12214:27;12204:55;;12255:1;12252;12245:12;12204:55;12291:6;12278:20;12317:18;12313:2;12310:26;12307:52;;;12339:18;;:::i;:::-;12383:114;12491:4;12422:66;12415:4;12411:2;12407:13;12403:86;12399:97;12383:114;:::i;:::-;12522:2;12513:7;12506:19;12568:3;12561:4;12556:2;12548:6;12544:15;12540:26;12537:35;12534:55;;;12585:1;12582;12575:12;12534:55;12650:2;12643:4;12635:6;12631:17;12624:4;12615:7;12611:18;12598:55;12698:1;12673:16;;;12691:4;12669:27;12662:38;;;;12677:7;12142:589;-1:-1:-1;;;12142:589:79:o;12736:1093::-;12792:5;12840:4;12828:9;12823:3;12819:19;12815:30;12812:50;;;12858:1;12855;12848:12;12812:50;12891:2;12885:9;12933:4;12925:6;12921:17;12957:18;13025:6;13013:10;13010:22;13005:2;12993:10;12990:18;12987:46;12984:72;;;13036:18;;:::i;:::-;13076:10;13072:2;13065:22;13105:6;13096:15;;13148:9;13135:23;13120:38;;13167:33;13192:7;13167:33;:::i;:::-;13209:23;;;13284:2;13269:18;;13256:32;;13297:33;13256:32;13297:33;:::i;:::-;13363:7;13358:2;13350:6;13346:15;13339:32;13432:2;13421:9;13417:18;13404:32;13399:2;13391:6;13387:15;13380:57;13498:2;13487:9;13483:18;13470:32;13465:2;13457:6;13453:15;13446:57;13555:3;13544:9;13540:19;13527:33;13512:48;;13569:33;13594:7;13569:33;:::i;:::-;13636:7;13630:3;13622:6;13618:16;13611:33;13695:3;13684:9;13680:19;13667:33;13653:47;;13723:2;13715:6;13712:14;13709:34;;;13739:1;13736;13729:12;13709:34;;13777:45;13818:3;13809:6;13798:9;13794:22;13777:45;:::i;:::-;13771:3;13763:6;13759:16;13752:71;;;12736:1093;;;;:::o;13834:426::-;13894:5;13942:4;13930:9;13925:3;13921:19;13917:30;13914:50;;;13960:1;13957;13950:12;13914:50;13982:22;;:::i;:::-;13973:31;;14041:9;14028:23;14060:33;14085:7;14060:33;:::i;:::-;14116:7;14109:5;14102:22;;14184:2;14173:9;14169:18;14156:32;14151:2;14144:5;14140:14;14133:56;14249:2;14238:9;14234:18;14221:32;14216:2;14209:5;14205:14;14198:56;13834:426;;;;:::o;14265:197::-;14339:4;14372:18;14364:6;14361:30;14358:56;;;14394:18;;:::i;:::-;-1:-1:-1;14439:1:79;14435:14;14451:4;14431:25;;14265:197::o;14467:1301::-;14535:5;14588:3;14581:4;14573:6;14569:17;14565:27;14555:55;;14606:1;14603;14596:12;14555:55;14642:6;14629:20;14668:4;14692:74;14708:57;14762:2;14708:57;:::i;:::-;14692:74;:::i;:::-;14800:15;;;14886:1;14882:10;;;;14870:23;;14866:32;;;14831:12;;;;14910:15;;;14907:35;;;14938:1;14935;14928:12;14907:35;14974:2;14966:6;14962:15;14986:753;15002:6;14997:3;14994:15;14986:753;;;15080:4;15074:3;15069;15065:13;15061:24;15058:114;;;15126:1;15155:2;15151;15144:14;15058:114;15198:22;;:::i;:::-;15261:3;15248:17;15278:33;15303:7;15278:33;:::i;:::-;15324:22;;15395:12;;;15382:26;15366:14;;;15359:50;15432:2;15483:12;;;15470:26;15454:14;;;15447:50;15520:2;15563:12;;;15550:26;15589:33;15550:26;15589:33;:::i;:::-;15642:14;;;15635:31;15679:18;;15717:12;;;;15028:4;15019:14;14986:753;;;-1:-1:-1;15757:5:79;14467:1301;-1:-1:-1;;;;;;14467:1301:79:o;15773:419::-;15840:5;15888:4;15876:9;15871:3;15867:19;15863:30;15860:50;;;15906:1;15903;15896:12;15860:50;15939:2;15933:9;15981:4;15973:6;15969:17;16052:6;16040:10;16037:22;16016:18;16004:10;16001:34;15998:62;15995:88;;;16063:18;;:::i;:::-;16099:2;16092:22;16162:23;;16147:39;;-1:-1:-1;16132:6:79;15773:419;-1:-1:-1;15773:419:79:o;16197:1370::-;16288:6;16341:2;16329:9;16320:7;16316:23;16312:32;16309:52;;;16357:1;16354;16347:12;16309:52;16397:9;16384:23;16426:18;16467:2;16459:6;16456:14;16453:34;;;16483:1;16480;16473:12;16453:34;16506:22;;;;16562:6;16544:16;;;16540:29;16537:49;;;16582:1;16579;16572:12;16537:49;16608:22;;:::i;:::-;16668:2;16655:16;16696:2;16686:8;16683:16;16680:36;;;16712:1;16709;16702:12;16680:36;16739:55;16786:7;16775:8;16771:2;16767:17;16739:55;:::i;:::-;16732:5;16725:70;;16827:31;16854:2;16850;16846:11;16827:31;:::i;:::-;16822:2;16815:5;16811:14;16804:55;16912:2;16908;16904:11;16891:25;16886:2;16879:5;16875:14;16868:49;16970:2;16966;16962:11;16949:25;16944:2;16937:5;16933:14;16926:49;17008:54;17054:7;17048:3;17044:2;17040:12;17008:54;:::i;:::-;17002:3;16995:5;16991:15;16984:79;17109:3;17105:2;17101:12;17088:26;17139:2;17129:8;17126:16;17123:36;;;17155:1;17152;17145:12;17123:36;17193:70;17255:7;17244:8;17240:2;17236:17;17193:70;:::i;:::-;17186:4;17179:5;17175:16;17168:96;;17298:64;17354:7;17345:6;17341:2;17337:15;17298:64;:::i;:::-;17291:4;17284:5;17280:16;17273:90;17409:3;17405:2;17401:12;17388:26;17439:2;17429:8;17426:16;17423:36;;;17455:1;17452;17445:12;17423:36;17492:44;17528:7;17517:8;17513:2;17509:17;17492:44;:::i;:::-;17486:3;17475:15;;17468:69;-1:-1:-1;17479:5:79;16197:1370;-1:-1:-1;;;;;16197:1370:79:o;18056:184::-;18126:6;18179:2;18167:9;18158:7;18154:23;18150:32;18147:52;;;18195:1;18192;18185:12;18147:52;-1:-1:-1;18218:16:79;;18056:184;-1:-1:-1;18056:184:79:o;19456:902::-;19723:3;19761:6;19755:13;19777:66;19836:6;19831:3;19824:4;19816:6;19812:17;19777:66;:::i;:::-;19906:13;;19865:16;;;;19928:70;19906:13;19865:16;19975:4;19963:17;;19928:70;:::i;:::-;20065:13;;20020:20;;;20087:70;20065:13;20020:20;20134:4;20122:17;;20087:70;:::i;:::-;20224:13;;20179:20;;;20246:70;20224:13;20179:20;20293:4;20281:17;;20246:70;:::i;:::-;20332:20;;19456:902;-1:-1:-1;;;;;;19456:902:79:o;21024:184::-;21076:77;21073:1;21066:88;21173:4;21170:1;21163:15;21197:4;21194:1;21187:15;21213:168;21286:9;;;21317;;21334:15;;;21328:22;;21314:37;21304:71;;21355:18;;:::i;21386:278::-;21579:2;21568:9;21561:21;21542:4;21599:59;21654:2;21643:9;21639:18;21631:6;21599:59;:::i;21669:1460::-;21794:6;21825:2;21868;21856:9;21847:7;21843:23;21839:32;21836:52;;;21884:1;21881;21874:12;21836:52;21917:9;21911:16;21950:18;21942:6;21939:30;21936:50;;;21982:1;21979;21972:12;21936:50;22005:22;;22058:4;22050:13;;22046:27;-1:-1:-1;22036:55:79;;22087:1;22084;22077:12;22036:55;22116:2;22110:9;22139:74;22155:57;22209:2;22155:57;:::i;22139:74::-;22247:15;;;22309:4;22348:13;;;22340:22;;22336:31;;;22278:12;;;;22235:3;22379:19;;;22376:39;;;22411:1;22408;22401:12;22376:39;22435:11;;;;22455:644;22471:6;22466:3;22463:15;22455:644;;;22551:2;22545:3;22536:7;22532:17;22528:26;22525:116;;;22595:1;22624:2;22620;22613:14;22525:116;22667:22;;:::i;:::-;22723:3;22717:10;22740:33;22765:7;22740:33;:::i;:::-;22786:22;;22850:12;;;22844:19;22828:14;;;22821:43;22887:2;22923:12;;;22917:19;22949:33;22917:19;22949:33;:::i;:::-;23002:14;;;22995:31;23039:18;;22488:12;;;;23077;;;;22455:644;;;-1:-1:-1;23118:5:79;21669:1460;-1:-1:-1;;;;;;;21669:1460:79:o;23134:125::-;23199:9;;;23220:10;;;23217:36;;;23233:18;;:::i;23667:398::-;23900:42;23892:6;23888:55;23877:9;23870:74;23980:2;23975;23964:9;23960:18;23953:30;23851:4;24000:59;24055:2;24044:9;24040:18;24032:6;24000:59;:::i;24070:1295::-;24516:24;24511:3;24504:37;24486:3;24560:2;24591:6;24585:13;24607:75;24675:6;24670:2;24665:3;24661:12;24654:4;24646:6;24642:17;24607:75;:::i;:::-;24742:13;;24701:16;;;;24764:76;24742:13;24818:11;;;24811:4;24799:17;;24764:76;:::i;:::-;24901:13;;24859:17;;;24923:76;24901:13;24977:11;;;24970:4;24958:17;;24923:76;:::i;:::-;25060:13;;25018:17;;;25082:76;25060:13;25136:11;;;25129:4;25117:17;;25082:76;:::i;:::-;25219:13;;25177:17;;;25241:76;25219:13;25295:11;;;25288:4;25276:17;;25241:76;:::i;:::-;25337:17;25333:26;;24070:1295;-1:-1:-1;;;;;;;24070:1295:79:o;25581:1088::-;26011:4;26040:3;26052:60;26102:9;26093:6;26087:13;25456:12;;25470:42;25452:61;25440:74;;25563:4;25552:16;;;25546:23;25530:14;;25523:47;25370:206;26052:60;26168:4;26160:6;26156:17;26150:24;26143:4;26132:9;26128:20;26121:54;26231:4;26223:6;26219:17;26213:24;26206:4;26195:9;26191:20;26184:54;26247:63;26305:3;26294:9;26290:19;26282:6;25456:12;;25470:42;25452:61;25440:74;;25563:4;25552:16;;;25546:23;25530:14;;25523:47;25370:206;26247:63;26359:42;26351:6;26347:55;26341:3;26330:9;26326:19;26319:84;26440:6;26434:3;26423:9;26419:19;26412:35;26484:2;26478:3;26467:9;26463:19;26456:31;26510:44;26550:2;26539:9;26535:18;26527:6;26510:44;:::i;:::-;26496:58;;26603:9;26595:6;26591:22;26585:3;26574:9;26570:19;26563:51;26631:32;26656:6;26648;26631:32;:::i;:::-;26623:40;25581:1088;-1:-1:-1;;;;;;;;;25581:1088:79:o;28358:424::-;28573:6;28568:3;28561:19;28610:6;28605:2;28600:3;28596:12;28589:28;28543:3;28646:6;28640:13;28662:73;28728:6;28723:2;28718:3;28714:12;28709:2;28701:6;28697:15;28662:73;:::i;:::-;28755:16;;;;28773:2;28751:25;;28358:424;-1:-1:-1;;;;28358:424:79:o;28787:245::-;28866:6;28874;28927:2;28915:9;28906:7;28902:23;28898:32;28895:52;;;28943:1;28940;28933:12;28895:52;-1:-1:-1;;28966:16:79;;29022:2;29007:18;;;29001:25;28966:16;;29001:25;;-1:-1:-1;28787:245:79:o","linkReferences":{},"immutableReferences":{"46380":[{"start":224,"length":32},{"start":3425,"length":32},{"start":6635,"length":32}]}},"methodIdentifiers":{"execute((bytes,bytes))":"3f62192e","executeBatch((bytes,bytes)[])":"0d7a16c3","executeBatchWithCallback((bytes,bytes)[],bytes)":"13fb72c7","executeWithCallback((bytes,bytes),bytes)":"0d335884","feeController()":"6999b377","owner()":"8da5cb5b","permit2()":"12261ee7","setProtocolFeeController(address)":"2d771389","transferOwnership(address)":"f2fde38b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IPermit2\",\"name\":\"_permit2\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_protocolFeeOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"duplicateToken\",\"type\":\"address\"}],\"name\":\"DuplicateFeeOutput\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"FeeTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputAndOutputFees\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputOutputScaling\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCosignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDeadline\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"feeToken\",\"type\":\"address\"}],\"name\":\"InvalidFeeToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidGasPrice\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidReactor\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NativeTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OrderAlreadyFilled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OrderNotFillable\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"filler\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"swapper\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"Fill\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldFeeController\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newFeeController\",\"type\":\"address\"}],\"name\":\"ProtocolFeeControllerSet\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"order\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"sig\",\"type\":\"bytes\"}],\"internalType\":\"struct SignedOrder\",\"name\":\"order\",\"type\":\"tuple\"}],\"name\":\"execute\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"order\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"sig\",\"type\":\"bytes\"}],\"internalType\":\"struct SignedOrder[]\",\"name\":\"orders\",\"type\":\"tuple[]\"}],\"name\":\"executeBatch\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"order\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"sig\",\"type\":\"bytes\"}],\"internalType\":\"struct SignedOrder[]\",\"name\":\"orders\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"callbackData\",\"type\":\"bytes\"}],\"name\":\"executeBatchWithCallback\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"order\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"sig\",\"type\":\"bytes\"}],\"internalType\":\"struct SignedOrder\",\"name\":\"order\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"callbackData\",\"type\":\"bytes\"}],\"name\":\"executeWithCallback\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeController\",\"outputs\":[{\"internalType\":\"contract IProtocolFeeController\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"permit2\",\"outputs\":[{\"internalType\":\"contract IPermit2\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newFeeController\",\"type\":\"address\"}],\"name\":\"setProtocolFeeController\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"only supported on chains which use priority fee transaction ordering\",\"events\":{\"Fill(bytes32,address,address,uint256)\":{\"params\":{\"filler\":\"The address which executed the fill\",\"nonce\":\"The nonce of the filled order\",\"orderHash\":\"The hash of the order that was filled\",\"swapper\":\"The swapper of the filled order\"}}},\"kind\":\"dev\",\"methods\":{\"execute((bytes,bytes))\":{\"params\":{\"order\":\"The order definition and valid signature to execute\"}},\"executeBatch((bytes,bytes)[])\":{\"params\":{\"orders\":\"The order definitions and valid signatures to execute\"}},\"executeBatchWithCallback((bytes,bytes)[],bytes)\":{\"params\":{\"callbackData\":\"The callbackData to pass to the callback\",\"orders\":\"The order definitions and valid signatures to execute\"}},\"executeWithCallback((bytes,bytes),bytes)\":{\"params\":{\"callbackData\":\"The callbackData to pass to the callback\",\"order\":\"The order definition and valid signature to execute\"}},\"setProtocolFeeController(address)\":{\"details\":\"only callable by the owner\",\"params\":{\"_newFeeController\":\"the new fee controller\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"DuplicateFeeOutput(address)\":[{\"notice\":\"thrown if two fee outputs have the same token\"}],\"FeeTooLarge(address,uint256,address)\":[{\"notice\":\"thrown if a given fee output is greater than MAX_FEE_BPS of the order outputs\"}],\"InputAndOutputFees()\":[{\"notice\":\"thrown if fees are taken on both inputs and outputs\"}],\"InputOutputScaling()\":[{\"notice\":\"thrown when an order's input and outputs both scale with priority fee\"}],\"InvalidCosignature()\":[{\"notice\":\"thrown when an order's cosignature does not match the expected cosigner\"}],\"InvalidDeadline()\":[{\"notice\":\"thrown when an order's deadline is in the past\"}],\"InvalidFeeToken(address)\":[{\"notice\":\"thrown if a fee output token does not have a corresponding non-fee output\"}],\"InvalidGasPrice()\":[{\"notice\":\"thrown when tx gasprice is less than block.basefee\"}],\"InvalidReactor()\":[{\"notice\":\"thrown when the order targets a different reactor\"}],\"NativeTransferFailed()\":[{\"notice\":\"Thrown when a native transfer fails\"}],\"OrderAlreadyFilled()\":[{\"notice\":\"thrown when an order's nonce has already been used\"}],\"OrderNotFillable()\":[{\"notice\":\"thrown when an order's auctionStartBlock is in the future\"}]},\"events\":{\"Fill(bytes32,address,address,uint256)\":{\"notice\":\"emitted when an order is filled\"}},\"kind\":\"user\",\"methods\":{\"execute((bytes,bytes))\":{\"notice\":\"Execute a single order\"},\"executeBatch((bytes,bytes)[])\":{\"notice\":\"Execute the given orders at once\"},\"executeBatchWithCallback((bytes,bytes)[],bytes)\":{\"notice\":\"Execute the given orders at once using a callback with the given callback data\"},\"executeWithCallback((bytes,bytes),bytes)\":{\"notice\":\"Execute a single order using the given callback data\"},\"permit2()\":{\"notice\":\"permit2 address used for token transfers and signature verification\"},\"setProtocolFeeController(address)\":{\"notice\":\"sets the protocol fee controller\"}},\"notice\":\"Reactor for priority orders\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/reactors/PriorityOrderReactor.sol\":\"PriorityOrderReactor\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-gas-snapshot/=lib/forge-gas-snapshot/src/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":permit2/=lib/permit2/\",\":solarray/=lib/solarray/src/\",\":solmate/=lib/solmate/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/security/ReentrancyGuard.sol\":{\"keccak256\":\"0xa535a5df777d44e945dd24aa43a11e44b024140fc340ad0dfe42acf4002aade1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://41319e7f621f2dc3733511332c4fd032f8e32ad2aa7fd6f665c19741d9941a34\",\"dweb:/ipfs/QmcYR3bd862GD1Bc7jwrU9bGxrhUu5na1oP964bDCu2id1\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278\",\"dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH\"]},\"lib/permit2/src/interfaces/IAllowanceTransfer.sol\":{\"keccak256\":\"0x78931704a7f1d89ef24244b155863abb751cc3b3818f64303ccb47a396d48dcb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b8d6e198ee29d809564f1c1d7caa11a2c329bb5d051f61210548e546493444d2\",\"dweb:/ipfs/QmVxWftbgETjudymgLdwF77S54DWrp6qB5ooauKXW81cm7\"]},\"lib/permit2/src/interfaces/IEIP712.sol\":{\"keccak256\":\"0xea70db68ce450ad38dfbd490058595441144808eb95272ae9b89e3fbe6456954\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e8fad9ff319665acdc2f1295bb82db3e5b4d52babc0b58f147dbdbb9f322c6e5\",\"dweb:/ipfs/QmTbYJPcux8eJ3qGVYQh6TiwCA2FPu6HXTUg6QFTnX91Ks\"]},\"lib/permit2/src/interfaces/IPermit2.sol\":{\"keccak256\":\"0xaa631cc9f53e699301d94233007110a345e6779011def484e8dd97b8fe0af771\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc0502cf19c9c18f320a3001201e89e350393b75837f6b7971de18b2de06f30d\",\"dweb:/ipfs/QmT9SfhdJ7VJNNrf94g4H5usyi7ShqWGx7Cqsz9jZTjX96\"]},\"lib/permit2/src/interfaces/ISignatureTransfer.sol\":{\"keccak256\":\"0x6805563eaad92471fa1b3591a71d7020a93e59f1a4ac95398daf74927f5bd033\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://48cd13806cb8e82dcc38eb93423a372fbdd3b05364ecebb8bfd9cd29078dd90c\",\"dweb:/ipfs/QmeLyFVrzKRHcm6aaFFBCG5mFESCqWLp1KYT41H8XhzMCp\"]},\"lib/solmate/src/auth/Owned.sol\":{\"keccak256\":\"0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4\",\"dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx\"]},\"lib/solmate/src/tokens/ERC20.sol\":{\"keccak256\":\"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35\",\"dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97\"]},\"lib/solmate/src/utils/FixedPointMathLib.sol\":{\"keccak256\":\"0x1b62af9baf5b8e991ed7531bc87f45550ba9d61e8dbff5caf237ccaf3a3fd843\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://b7b38b977c5305b18ceefbeed4c9ceaaaefa419b520de62de6604ea661f8c0a9\",\"dweb:/ipfs/QmecMRzgfMyDVa2pvBqMMDLYBappaj7Aa3qcMoQYEQrhWi\"]},\"lib/solmate/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0x6ab948013c2c7ca6351e593600425b0ec6df9035320280c678e735bce16e996b\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://2ab977d0eeb2bf458f9798250215c646d2f3b1f90b5a7e2b506fdf3335c0f060\",\"dweb:/ipfs/QmYPRoPhNtBAmCSq7imN1scMVpKNQvMTpoqab3tXUx5Tnv\"]},\"src/base/ProtocolFees.sol\":{\"keccak256\":\"0x1152eee4ac698694bcdbf90b016411112d679812ca0abc1cacd7e6b465e6729a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c1be6b94c6268b68362111e728598e7c1517b20998fdf6752d08e32d55c210f8\",\"dweb:/ipfs/QmStQC274cQqnQSo3QDBcT5BdqEkpwZwFaWwxaYXMZidvw\"]},\"src/base/ReactorEvents.sol\":{\"keccak256\":\"0x61df7aa3ef970f1305c5a6d8c68b0d7ab8bebb9b7518e191c8d2fda532859f61\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://93db11be28b3394485b57a7b120ca224fdb93b471db8468738406f77ebaa13fc\",\"dweb:/ipfs/Qmci4TSUH81C3WDV7TMv56VmiUFZ9MDxZcGTRKhhEPS6gC\"]},\"src/base/ReactorStructs.sol\":{\"keccak256\":\"0x78e6db322ca69aaf552e59d5e74a00fd465a802388c2d03f9bf4b711f5704588\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://12d8fc82c3543bfe0d2cd44cdbc524bed1f074abafe086f7e58573cbaff2a74e\",\"dweb:/ipfs/QmREbamTn3nz89nEjv2uWHNHKSF6Yga2gQ688Cde89xcNT\"]},\"src/interfaces/IProtocolFeeController.sol\":{\"keccak256\":\"0x21a895ff5b778abf95753001a20b4004adfadd1bba622eaec18eb81836ede86c\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://67f9eae1da9f238f6630247882e382458dcc0135c0a4837b99a44a2360a3845c\",\"dweb:/ipfs/QmdJyKhVyD6nAtgdTofaU2xaoWrPGM1Q6Sd7FiN2LxXZQx\"]},\"src/interfaces/IReactor.sol\":{\"keccak256\":\"0x23714e546bbeeaa7fe35665d7241319c964421a9fe6d81aead4b85027cabf1e1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://3b94402a2e90f75d6238d4460c0b1125bf67b98523803156b104ce57cafdd05b\",\"dweb:/ipfs/QmbY3Mr44MPEMAe9bh9tUSqpPg3AAKfkVfydwJCEzFA14a\"]},\"src/interfaces/IReactorCallback.sol\":{\"keccak256\":\"0xf3ee1fe09545fc5be000c33bb6779e897b4e5013bd9de3e7c3107bf466b4dfa1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://12d7fd1ac3dca76614796f0d012ea4de79bf09cf124cc74efffdf25a56756344\",\"dweb:/ipfs/QmXyeSrG7caihgzUZdPdPbbRj6v1w65gBnfn9a7HhbVJX9\"]},\"src/interfaces/IValidationCallback.sol\":{\"keccak256\":\"0xc31e3a60e210e9a4089f48ba4fae06dec6f4d33da4fbe415cfb8cdc202003bae\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ee145d5fc0e0806dc9db57825142d5d7c3eafc248a27ee301ffd13592f2cda34\",\"dweb:/ipfs/QmQr2HBHZKiUu88a3M1Hs4QSjFemsZmPEd115QG6GKjsC1\"]},\"src/lib/CosignerLib.sol\":{\"keccak256\":\"0x59681b68b61d78f47c91de5405464916ad44de721a5cedbbd4fe9691264cda63\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f5dc4fbd2ab2820f649fb2c2c8d6393671950143b2a5a4f35095fab1919f6deb\",\"dweb:/ipfs/QmPVT2St7twYfUiVocsvTNCCaq24MBBtPwrB4TtCcXgywo\"]},\"src/lib/CurrencyLibrary.sol\":{\"keccak256\":\"0x73688c07cd36b5040e0deca3dd1f21a8b19585d6cdfefb816fae98af92a545ea\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://750375d6f0e59f7977b9cfc2cf05fef7b356cea7875fbb71b0ca359d091b8479\",\"dweb:/ipfs/QmZbdTSS1BxWqAHjmtwoJsggbRVkwnxynJuaxzKkkakm4Y\"]},\"src/lib/OrderInfoLib.sol\":{\"keccak256\":\"0x38672b528e63dc53f36ed82d0037110a9f5893ad0a3957e24f19fa3fdbd80015\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://147172dbebf4bb579bc392f25666645719264c0b47378f7fc4f3a95c79bdf5a4\",\"dweb:/ipfs/Qmd5wVnQ8rKHHQgUQzEDcAPiqrVzmNr9t2D7d1SqUg9hTo\"]},\"src/lib/Permit2Lib.sol\":{\"keccak256\":\"0xcb5e1e204f4ac6ea3fa164b8be1b1d31cbad0dff981072ea2c33abd720369e78\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://cfa162286525ef8684112639c7b981c0472b06ce799f2440c626a70c273bb533\",\"dweb:/ipfs/QmV1Uy4oodhg4SbCajv9xhiWFuwtU1YcTTvca1cDYCkND9\"]},\"src/lib/PriorityFeeLib.sol\":{\"keccak256\":\"0x28458143302acae4f07e946a652f4ee7cfe7a447f403113183eb7dd94eefc4ec\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1ed5b2d2287b46f20bb30b9a4bd599c06b1d34aa82324e6b4b24a6bbbd01b336\",\"dweb:/ipfs/QmSATSib8LegdTmzaU9tPqm7Dz4QyiRRBWTFdej6tYGUah\"]},\"src/lib/PriorityOrderLib.sol\":{\"keccak256\":\"0xcdc2bc20045c06578b20285c7d0e9960ac49eaf734ae80dc66dfdb7fc4d22329\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ae0bd9a9b4f96c66ed86e00f3ff1b94d4d00c1798a96e910609d9484fda0e095\",\"dweb:/ipfs/QmTB1184J52LYb3BgHz1nEYHEW7kxRrN4RBDYJBar7wvt7\"]},\"src/lib/ResolvedOrderLib.sol\":{\"keccak256\":\"0xc56a31e72001e3e6ee0baf193423a7563cc61ba4869133e1cae5cf998bfe4d96\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4bddef26f26939f48923b11674495515d792cffbb2dc04f092212ff0b9971636\",\"dweb:/ipfs/QmS1YAzhYLCi9oDtZN33mwBf5iExdwMhPNcnzh5nA8fPKX\"]},\"src/reactors/BaseReactor.sol\":{\"keccak256\":\"0xd31b25dd7209a704fb17865e8112bc83a72e1816bc1d636c89366b2f1e3c4210\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f10c83e80f01d728f48aa06905e272eef776159ea83b53885c182da15597e3ca\",\"dweb:/ipfs/Qmf2nx9abWsTMCVBV1At66HS3FVTXHreUVCpwVDKjkYadY\"]},\"src/reactors/PriorityOrderReactor.sol\":{\"keccak256\":\"0xae1774fd48717522b400e9f91facdafc7cc683474dc8b06e99b4c4b0694ebe76\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://95d16f8e292515097b18fa935b2cae2a0179bf9c4b8a70c271eb5e53f956a145\",\"dweb:/ipfs/QmfBAo4YDLof9snVVKt3fY1Urvy52HN4mUXKmkZ2x3areW\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract IPermit2","name":"_permit2","type":"address"},{"internalType":"address","name":"_protocolFeeOwner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"duplicateToken","type":"address"}],"type":"error","name":"DuplicateFeeOutput"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"type":"error","name":"FeeTooLarge"},{"inputs":[],"type":"error","name":"InputAndOutputFees"},{"inputs":[],"type":"error","name":"InputOutputScaling"},{"inputs":[],"type":"error","name":"InvalidCosignature"},{"inputs":[],"type":"error","name":"InvalidDeadline"},{"inputs":[{"internalType":"address","name":"feeToken","type":"address"}],"type":"error","name":"InvalidFeeToken"},{"inputs":[],"type":"error","name":"InvalidGasPrice"},{"inputs":[],"type":"error","name":"InvalidReactor"},{"inputs":[],"type":"error","name":"NativeTransferFailed"},{"inputs":[],"type":"error","name":"OrderAlreadyFilled"},{"inputs":[],"type":"error","name":"OrderNotFillable"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32","indexed":true},{"internalType":"address","name":"filler","type":"address","indexed":true},{"internalType":"address","name":"swapper","type":"address","indexed":true},{"internalType":"uint256","name":"nonce","type":"uint256","indexed":false}],"type":"event","name":"Fill","anonymous":false},{"inputs":[{"internalType":"address","name":"user","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"oldFeeController","type":"address","indexed":false},{"internalType":"address","name":"newFeeController","type":"address","indexed":false}],"type":"event","name":"ProtocolFeeControllerSet","anonymous":false},{"inputs":[{"internalType":"struct SignedOrder","name":"order","type":"tuple","components":[{"internalType":"bytes","name":"order","type":"bytes"},{"internalType":"bytes","name":"sig","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"execute"},{"inputs":[{"internalType":"struct SignedOrder[]","name":"orders","type":"tuple[]","components":[{"internalType":"bytes","name":"order","type":"bytes"},{"internalType":"bytes","name":"sig","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"executeBatch"},{"inputs":[{"internalType":"struct SignedOrder[]","name":"orders","type":"tuple[]","components":[{"internalType":"bytes","name":"order","type":"bytes"},{"internalType":"bytes","name":"sig","type":"bytes"}]},{"internalType":"bytes","name":"callbackData","type":"bytes"}],"stateMutability":"payable","type":"function","name":"executeBatchWithCallback"},{"inputs":[{"internalType":"struct SignedOrder","name":"order","type":"tuple","components":[{"internalType":"bytes","name":"order","type":"bytes"},{"internalType":"bytes","name":"sig","type":"bytes"}]},{"internalType":"bytes","name":"callbackData","type":"bytes"}],"stateMutability":"payable","type":"function","name":"executeWithCallback"},{"inputs":[],"stateMutability":"view","type":"function","name":"feeController","outputs":[{"internalType":"contract IProtocolFeeController","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"permit2","outputs":[{"internalType":"contract IPermit2","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_newFeeController","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setProtocolFeeController"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"execute((bytes,bytes))":{"params":{"order":"The order definition and valid signature to execute"}},"executeBatch((bytes,bytes)[])":{"params":{"orders":"The order definitions and valid signatures to execute"}},"executeBatchWithCallback((bytes,bytes)[],bytes)":{"params":{"callbackData":"The callbackData to pass to the callback","orders":"The order definitions and valid signatures to execute"}},"executeWithCallback((bytes,bytes),bytes)":{"params":{"callbackData":"The callbackData to pass to the callback","order":"The order definition and valid signature to execute"}},"setProtocolFeeController(address)":{"details":"only callable by the owner","params":{"_newFeeController":"the new fee controller"}}},"version":1},"userdoc":{"kind":"user","methods":{"execute((bytes,bytes))":{"notice":"Execute a single order"},"executeBatch((bytes,bytes)[])":{"notice":"Execute the given orders at once"},"executeBatchWithCallback((bytes,bytes)[],bytes)":{"notice":"Execute the given orders at once using a callback with the given callback data"},"executeWithCallback((bytes,bytes),bytes)":{"notice":"Execute a single order using the given callback data"},"permit2()":{"notice":"permit2 address used for token transfers and signature verification"},"setProtocolFeeController(address)":{"notice":"sets the protocol fee controller"}},"version":1}},"settings":{"remappings":["ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-gas-snapshot/=lib/forge-gas-snapshot/src/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","permit2/=lib/permit2/","solarray/=lib/solarray/src/","solmate/=lib/solmate/"],"optimizer":{"enabled":true,"runs":1000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/reactors/PriorityOrderReactor.sol":"PriorityOrderReactor"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/security/ReentrancyGuard.sol":{"keccak256":"0xa535a5df777d44e945dd24aa43a11e44b024140fc340ad0dfe42acf4002aade1","urls":["bzz-raw://41319e7f621f2dc3733511332c4fd032f8e32ad2aa7fd6f665c19741d9941a34","dweb:/ipfs/QmcYR3bd862GD1Bc7jwrU9bGxrhUu5na1oP964bDCu2id1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad","urls":["bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278","dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH"],"license":"MIT"},"lib/permit2/src/interfaces/IAllowanceTransfer.sol":{"keccak256":"0x78931704a7f1d89ef24244b155863abb751cc3b3818f64303ccb47a396d48dcb","urls":["bzz-raw://b8d6e198ee29d809564f1c1d7caa11a2c329bb5d051f61210548e546493444d2","dweb:/ipfs/QmVxWftbgETjudymgLdwF77S54DWrp6qB5ooauKXW81cm7"],"license":"MIT"},"lib/permit2/src/interfaces/IEIP712.sol":{"keccak256":"0xea70db68ce450ad38dfbd490058595441144808eb95272ae9b89e3fbe6456954","urls":["bzz-raw://e8fad9ff319665acdc2f1295bb82db3e5b4d52babc0b58f147dbdbb9f322c6e5","dweb:/ipfs/QmTbYJPcux8eJ3qGVYQh6TiwCA2FPu6HXTUg6QFTnX91Ks"],"license":"MIT"},"lib/permit2/src/interfaces/IPermit2.sol":{"keccak256":"0xaa631cc9f53e699301d94233007110a345e6779011def484e8dd97b8fe0af771","urls":["bzz-raw://fc0502cf19c9c18f320a3001201e89e350393b75837f6b7971de18b2de06f30d","dweb:/ipfs/QmT9SfhdJ7VJNNrf94g4H5usyi7ShqWGx7Cqsz9jZTjX96"],"license":"MIT"},"lib/permit2/src/interfaces/ISignatureTransfer.sol":{"keccak256":"0x6805563eaad92471fa1b3591a71d7020a93e59f1a4ac95398daf74927f5bd033","urls":["bzz-raw://48cd13806cb8e82dcc38eb93423a372fbdd3b05364ecebb8bfd9cd29078dd90c","dweb:/ipfs/QmeLyFVrzKRHcm6aaFFBCG5mFESCqWLp1KYT41H8XhzMCp"],"license":"MIT"},"lib/solmate/src/auth/Owned.sol":{"keccak256":"0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea","urls":["bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4","dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx"],"license":"AGPL-3.0-only"},"lib/solmate/src/tokens/ERC20.sol":{"keccak256":"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10","urls":["bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35","dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97"],"license":"AGPL-3.0-only"},"lib/solmate/src/utils/FixedPointMathLib.sol":{"keccak256":"0x1b62af9baf5b8e991ed7531bc87f45550ba9d61e8dbff5caf237ccaf3a3fd843","urls":["bzz-raw://b7b38b977c5305b18ceefbeed4c9ceaaaefa419b520de62de6604ea661f8c0a9","dweb:/ipfs/QmecMRzgfMyDVa2pvBqMMDLYBappaj7Aa3qcMoQYEQrhWi"],"license":"AGPL-3.0-only"},"lib/solmate/src/utils/SafeTransferLib.sol":{"keccak256":"0x6ab948013c2c7ca6351e593600425b0ec6df9035320280c678e735bce16e996b","urls":["bzz-raw://2ab977d0eeb2bf458f9798250215c646d2f3b1f90b5a7e2b506fdf3335c0f060","dweb:/ipfs/QmYPRoPhNtBAmCSq7imN1scMVpKNQvMTpoqab3tXUx5Tnv"],"license":"AGPL-3.0-only"},"src/base/ProtocolFees.sol":{"keccak256":"0x1152eee4ac698694bcdbf90b016411112d679812ca0abc1cacd7e6b465e6729a","urls":["bzz-raw://c1be6b94c6268b68362111e728598e7c1517b20998fdf6752d08e32d55c210f8","dweb:/ipfs/QmStQC274cQqnQSo3QDBcT5BdqEkpwZwFaWwxaYXMZidvw"],"license":"GPL-2.0-or-later"},"src/base/ReactorEvents.sol":{"keccak256":"0x61df7aa3ef970f1305c5a6d8c68b0d7ab8bebb9b7518e191c8d2fda532859f61","urls":["bzz-raw://93db11be28b3394485b57a7b120ca224fdb93b471db8468738406f77ebaa13fc","dweb:/ipfs/Qmci4TSUH81C3WDV7TMv56VmiUFZ9MDxZcGTRKhhEPS6gC"],"license":"GPL-2.0-or-later"},"src/base/ReactorStructs.sol":{"keccak256":"0x78e6db322ca69aaf552e59d5e74a00fd465a802388c2d03f9bf4b711f5704588","urls":["bzz-raw://12d8fc82c3543bfe0d2cd44cdbc524bed1f074abafe086f7e58573cbaff2a74e","dweb:/ipfs/QmREbamTn3nz89nEjv2uWHNHKSF6Yga2gQ688Cde89xcNT"],"license":"GPL-2.0-or-later"},"src/interfaces/IProtocolFeeController.sol":{"keccak256":"0x21a895ff5b778abf95753001a20b4004adfadd1bba622eaec18eb81836ede86c","urls":["bzz-raw://67f9eae1da9f238f6630247882e382458dcc0135c0a4837b99a44a2360a3845c","dweb:/ipfs/QmdJyKhVyD6nAtgdTofaU2xaoWrPGM1Q6Sd7FiN2LxXZQx"],"license":"GPL-2.0-or-later"},"src/interfaces/IReactor.sol":{"keccak256":"0x23714e546bbeeaa7fe35665d7241319c964421a9fe6d81aead4b85027cabf1e1","urls":["bzz-raw://3b94402a2e90f75d6238d4460c0b1125bf67b98523803156b104ce57cafdd05b","dweb:/ipfs/QmbY3Mr44MPEMAe9bh9tUSqpPg3AAKfkVfydwJCEzFA14a"],"license":"GPL-2.0-or-later"},"src/interfaces/IReactorCallback.sol":{"keccak256":"0xf3ee1fe09545fc5be000c33bb6779e897b4e5013bd9de3e7c3107bf466b4dfa1","urls":["bzz-raw://12d7fd1ac3dca76614796f0d012ea4de79bf09cf124cc74efffdf25a56756344","dweb:/ipfs/QmXyeSrG7caihgzUZdPdPbbRj6v1w65gBnfn9a7HhbVJX9"],"license":"GPL-2.0-or-later"},"src/interfaces/IValidationCallback.sol":{"keccak256":"0xc31e3a60e210e9a4089f48ba4fae06dec6f4d33da4fbe415cfb8cdc202003bae","urls":["bzz-raw://ee145d5fc0e0806dc9db57825142d5d7c3eafc248a27ee301ffd13592f2cda34","dweb:/ipfs/QmQr2HBHZKiUu88a3M1Hs4QSjFemsZmPEd115QG6GKjsC1"],"license":"GPL-2.0-or-later"},"src/lib/CosignerLib.sol":{"keccak256":"0x59681b68b61d78f47c91de5405464916ad44de721a5cedbbd4fe9691264cda63","urls":["bzz-raw://f5dc4fbd2ab2820f649fb2c2c8d6393671950143b2a5a4f35095fab1919f6deb","dweb:/ipfs/QmPVT2St7twYfUiVocsvTNCCaq24MBBtPwrB4TtCcXgywo"],"license":"GPL-2.0-or-later"},"src/lib/CurrencyLibrary.sol":{"keccak256":"0x73688c07cd36b5040e0deca3dd1f21a8b19585d6cdfefb816fae98af92a545ea","urls":["bzz-raw://750375d6f0e59f7977b9cfc2cf05fef7b356cea7875fbb71b0ca359d091b8479","dweb:/ipfs/QmZbdTSS1BxWqAHjmtwoJsggbRVkwnxynJuaxzKkkakm4Y"],"license":"GPL-2.0-or-later"},"src/lib/OrderInfoLib.sol":{"keccak256":"0x38672b528e63dc53f36ed82d0037110a9f5893ad0a3957e24f19fa3fdbd80015","urls":["bzz-raw://147172dbebf4bb579bc392f25666645719264c0b47378f7fc4f3a95c79bdf5a4","dweb:/ipfs/Qmd5wVnQ8rKHHQgUQzEDcAPiqrVzmNr9t2D7d1SqUg9hTo"],"license":"GPL-2.0-or-later"},"src/lib/Permit2Lib.sol":{"keccak256":"0xcb5e1e204f4ac6ea3fa164b8be1b1d31cbad0dff981072ea2c33abd720369e78","urls":["bzz-raw://cfa162286525ef8684112639c7b981c0472b06ce799f2440c626a70c273bb533","dweb:/ipfs/QmV1Uy4oodhg4SbCajv9xhiWFuwtU1YcTTvca1cDYCkND9"],"license":"GPL-2.0-or-later"},"src/lib/PriorityFeeLib.sol":{"keccak256":"0x28458143302acae4f07e946a652f4ee7cfe7a447f403113183eb7dd94eefc4ec","urls":["bzz-raw://1ed5b2d2287b46f20bb30b9a4bd599c06b1d34aa82324e6b4b24a6bbbd01b336","dweb:/ipfs/QmSATSib8LegdTmzaU9tPqm7Dz4QyiRRBWTFdej6tYGUah"],"license":"GPL-2.0-or-later"},"src/lib/PriorityOrderLib.sol":{"keccak256":"0xcdc2bc20045c06578b20285c7d0e9960ac49eaf734ae80dc66dfdb7fc4d22329","urls":["bzz-raw://ae0bd9a9b4f96c66ed86e00f3ff1b94d4d00c1798a96e910609d9484fda0e095","dweb:/ipfs/QmTB1184J52LYb3BgHz1nEYHEW7kxRrN4RBDYJBar7wvt7"],"license":"GPL-2.0-or-later"},"src/lib/ResolvedOrderLib.sol":{"keccak256":"0xc56a31e72001e3e6ee0baf193423a7563cc61ba4869133e1cae5cf998bfe4d96","urls":["bzz-raw://4bddef26f26939f48923b11674495515d792cffbb2dc04f092212ff0b9971636","dweb:/ipfs/QmS1YAzhYLCi9oDtZN33mwBf5iExdwMhPNcnzh5nA8fPKX"],"license":"GPL-2.0-or-later"},"src/reactors/BaseReactor.sol":{"keccak256":"0xd31b25dd7209a704fb17865e8112bc83a72e1816bc1d636c89366b2f1e3c4210","urls":["bzz-raw://f10c83e80f01d728f48aa06905e272eef776159ea83b53885c182da15597e3ca","dweb:/ipfs/Qmf2nx9abWsTMCVBV1At66HS3FVTXHreUVCpwVDKjkYadY"],"license":"GPL-2.0-or-later"},"src/reactors/PriorityOrderReactor.sol":{"keccak256":"0xae1774fd48717522b400e9f91facdafc7cc683474dc8b06e99b4c4b0694ebe76","urls":["bzz-raw://95d16f8e292515097b18fa935b2cae2a0179bf9c4b8a70c271eb5e53f956a145","dweb:/ipfs/QmfBAo4YDLof9snVVKt3fY1Urvy52HN4mUXKmkZ2x3areW"],"license":"GPL-2.0-or-later"}},"version":1},"id":65} diff --git a/sdks/uniswapx-sdk/src/contracts/factories/PriorityOrderReactor__factory.ts b/sdks/uniswapx-sdk/src/contracts/factories/PriorityOrderReactor__factory.ts index 3ff89f37c..c322c79c9 100644 --- a/sdks/uniswapx-sdk/src/contracts/factories/PriorityOrderReactor__factory.ts +++ b/sdks/uniswapx-sdk/src/contracts/factories/PriorityOrderReactor__factory.ts @@ -352,6 +352,11 @@ const _abi = [ name: "NativeTransferFailed", inputs: [], }, + { + type: "error", + name: "OrderAlreadyFilled", + inputs: [], + }, { type: "error", name: "OrderNotFillable", @@ -360,7 +365,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a06040523480156200001157600080fd5b506040516200331e3803806200331e8339810160408190526200003491620000b8565b600080546001600160a01b0319166001600160a01b03831690811782556040518492849283928392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600255506001600160a01b031660805250620000f79050565b6001600160a01b0381168114620000b557600080fd5b50565b60008060408385031215620000cc57600080fd5b8251620000d9816200009f565b6020840151909250620000ec816200009f565b809150509250929050565b608051613205620001196000396000818160e001526118c101526132056000f3fe60806040526004361061009a5760003560e01c80632d771389116100695780636999b3771161004e5780636999b377146101715780638da5cb5b1461019e578063f2fde38b146101cb57600080fd5b80632d7713891461013e5780633f62192e1461015e57600080fd5b80630d335884146100a65780630d7a16c3146100bb57806312261ee7146100ce57806313fb72c71461012b57600080fd5b366100a157005b600080fd5b6100b96100b4366004612302565b6101eb565b005b6100b96100c93660046123b0565b610364565b3480156100da57600080fd5b506101027f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b96101393660046123f2565b6104c5565b34801561014a57600080fd5b506100b961015936600461248b565b610683565b6100b961016c3660046124af565b61078f565b34801561017d57600080fd5b506001546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101aa57600080fd5b506000546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d757600080fd5b506100b96101e636600461248b565b610894565b6101f3610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161020a5790505090506102b2846109f6565b816000815181106102c5576102c561251b565b60200260200101819052506102d981610b49565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da628906103199084908790879060040161271e565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b5050505061035481610b9a565b5061035f6001600255565b505050565b61036c610985565b8060008167ffffffffffffffff811115610388576103886124ec565b60405190808252806020026020018201604052801561044357816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103a65790505b50905060005b828110156104a25761047d8585838181106104665761046661251b565b905060200281019061047891906127e4565b6109f6565b82828151811061048f5761048f61251b565b6020908102919091010152600101610449565b506104ac81610b49565b6104b581610b9a565b50506104c16001600255565b5050565b6104cd610985565b8260008167ffffffffffffffff8111156104e9576104e96124ec565b6040519080825280602002602001820160405280156105a457816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105075790505b50905060005b828110156105ec576105c78787838181106104665761046661251b565b8282815181106105d9576105d961251b565b60209081029190910101526001016105aa565b506105f681610b49565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da628906106369084908890889060040161271e565b600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b5050505061067181610b9a565b505061067d6001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610797610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107ae579050509050610856826109f6565b816000815181106108695761086961251b565b602002602001018190525061087d81610b49565b61088681610b9a565b506108916001600255565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610700565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610700565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a6f8380612822565b810190610a7c9190612bee565b90506000610a8982610ced565b9050610a958183610f3b565b6000610aa4836060015161109d565b90506040518060a0016040528084600001518152602001610ad28386608001516110f290919063ffffffff16565b8152602001610aee838660a001516111e990919063ffffffff16565b8152602001868060200190610b039190612822565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525060200192909252509392505050565b805160005b8181101561035f576000838281518110610b6a57610b6a61251b565b60200260200101519050610b7d816112ce565b610b8781336117be565b610b9181336118bf565b50600101610b4e565b805160005b81811015610cdc576000838281518110610bbb57610bbb61251b565b602002602001015190506000816040015151905060005b81811015610c3c57600083604001518281518110610bf257610bf261251b565b60200260200101519050610c3381604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff16611bf99092919063ffffffff16565b50600101610bd2565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610c8557610c8561251b565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610cca91815260200190565b60405180910390a45050600101610b9f565b5047156104c1576104c13347611c40565b6040517f5072696f726974794f726465722800000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602e8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603d8201527f75696e743235362061756374696f6e5374617274426c6f636b2c000000000000604e8201527f75696e7432353620626173656c696e655072696f726974794665655765692c0060688201527f5072696f72697479496e70757420696e7075742c00000000000000000000000060878201527f5072696f726974794f75747075745b5d206f7574707574732900000000000000609b82015260009060b401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260c08301909152608d8083529091906130e86020830139604051806080016040528060488152602001613072604891396040518060800160405280605b8152602001613175605b9139604051602001610e879493929190612cef565b60405160208183030381529060405280519060200120610eaa8360000151611cda565b836020015184604001518560600151610ec68760800151611d74565b610ed38860a00151611ddb565b60408051602081019890985287019590955273ffffffffffffffffffffffffffffffffffffffff9093166060860152608085019190915260a084015260c083015260e0820152610100015b604051602081830303815290604052805190602001209050919050565b805160600151421115610f7a576040517f769d11e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040810151602082015173ffffffffffffffffffffffffffffffffffffffff1615801590610fa757508043105b8015610fb7575060c08201515181115b15610fe1576020820151610fd990610fcf8486611e79565b8460e00151611eee565b5060c0810151515b8043101561101b576040517fc603552000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6080820151604001511561035f5760005b8260a001515181101561067d5760008360a0015182815181106110515761105161251b565b6020026020010151604001511115611095576040517fa6b844f500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60010161102c565b6000483a10156110d9576040517ff3eb44e500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50483a03818111156110e9570390565b5060005b919050565b61112c6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b600083604001518361113e9190612d75565b905062989680811061118c576040518060600160405280856000015173ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200185602001518152509150506111e3565b6040805160608101909152845173ffffffffffffffffffffffffffffffffffffffff168152602081016111d46111c58462989680612d8c565b60208801519062989680612016565b81526020868101519101529150505b92915050565b81516060908067ffffffffffffffff811115611207576112076124ec565b60405190808252806020026020018201604052801561127057816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816112255790505b50915060005b818110156112c6576112a18582815181106112935761129361251b565b602002602001015185612052565b8382815181106112b3576112b361251b565b6020908102919091010152600101611276565b505092915050565b60015473ffffffffffffffffffffffffffffffffffffffff166112ee5750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf0390611345908590600401612d9f565b600060405180830381865afa158015611362573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526113a89190810190612db2565b60408301515181519192509060006113c08284612e82565b67ffffffffffffffff8111156113d8576113d86124ec565b60405190808252806020026020018201604052801561144157816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816113f65790505b50905060005b8381101561149257856040015181815181106114655761146561251b565b602002602001015182828151811061147f5761147f61251b565b6020908102919091010152600101611447565b5060008060005b848110156117ad5760008782815181106114b5576114b561251b565b6020026020010151905060005b82811015611573578881815181106114dc576114dc61251b565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff160361156b5781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b6001016114c2565b506000805b888110156116345760008b6040015182815181106115985761159861251b565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff160361162b578515611615576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516116249084612e82565b9250600196505b50600101611578565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff9182169116036116ad578415611694576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516116a69082612e82565b9050600193505b806000036117025781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b611710816005612710612016565b82602001511115611783578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610700565b8186848a01815181106117985761179861251b565b60209081029190910101525050600101611499565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff16301461180f576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104c1578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b9061188b9084908690600401612e95565b60006040518083038186803b1580156118a357600080fd5b505afa1580156118b7573d6000803e3d6000fd5b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe61197f846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff86168252808701518101519082015285600001516020015186608001516040518060c00160405280608d81526020016130e8608d913960405180608001604052806048815260200161307260489139604080517f5072696f726974794f726465722800000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602e8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603d8201527f75696e743235362061756374696f6e5374617274426c6f636b2c000000000000604e8201527f75696e7432353620626173656c696e655072696f726974794665655765692c0060688201527f5072696f72697479496e70757420696e7075742c00000000000000000000000060878201527f5072696f726974794f75747075745b5d206f7574707574732900000000000000609b820152815160948183030181526101348201909252605b60b48201818152916131759060d401396040518060600160405280602e81526020016130ba602e9139604051602001611b5e959493929190612ec4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611bcb9695949392600401612f5f565b600060405180830381600087803b158015611be557600080fd5b505af11580156118b7573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff8316611c1e5761035f8282611c40565b61035f73ffffffffffffffffffffffffffffffffffffffff84163384846120f4565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611c9a576040519150601f19603f3d011682016040523d82523d6000602084013e611c9f565b606091505b505090508061035f576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060c00160405280608d81526020016130e8608d913980516020918201208351848301516040808701516060880151608089015160a08a01518051908901209351610f1e98939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b60006040518060800160405280604881526020016130726048913980516020918201208351848301516040808701519051610f1e950193845273ffffffffffffffffffffffffffffffffffffffff9290921660208401526040830152606082015260800190565b600080825160200267ffffffffffffffff811115611dfb57611dfb6124ec565b6040519080825280601f01601f191660200182016040528015611e25576020820181803683370190505b50905060005b8351811015611e6a576000611e58858381518110611e4b57611e4b61251b565b60200260200101516121e6565b60208381028501015250600101611e2b565b50805160209091012092915050565b6000818360c00151604051602001611e949151815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611ed09291602001613027565b60405160208183030381529060405280519060200120905092915050565b60008082806020019051810190611f05919061304d565b91509150600083604081518110611f1e57611f1e61251b565b0160209081015160408051600080825293810180835289905260f89290921c9082018190526060820186905260808201859052925060019060a0016020604051602081039080840390855afa158015611f7b573d6000803e3d6000fd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141580611fd6575073ffffffffffffffffffffffffffffffffffffffff8116155b1561200d576040517fd7815be100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048411830215820261204b57600080fd5b5091020490565b60408051606081018252600080825260208201819052918101919091526040518060600160405280846000015173ffffffffffffffffffffffffffffffffffffffff1681526020016120c98560400151856120ad9190612d75565b6120ba9062989680612e82565b6020870151906298968061225d565b8152602001846060015173ffffffffffffffffffffffffffffffffffffffff16815250905092915050565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d11600160005114161716915050806121df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610700565b5050505050565b60006040518060800160405280605b8152602001613175605b9139805160209182012083518483015160408087015160608801519151610f1e969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048411830215820261229257600080fd5b50910281810615159190040190565b6000604082840312156122b357600080fd5b50919050565b60008083601f8401126122cb57600080fd5b50813567ffffffffffffffff8111156122e357600080fd5b6020830191508360208285010111156122fb57600080fd5b9250929050565b60008060006040848603121561231757600080fd5b833567ffffffffffffffff8082111561232f57600080fd5b61233b878388016122a1565b9450602086013591508082111561235157600080fd5b5061235e868287016122b9565b9497909650939450505050565b60008083601f84011261237d57600080fd5b50813567ffffffffffffffff81111561239557600080fd5b6020830191508360208260051b85010111156122fb57600080fd5b600080602083850312156123c357600080fd5b823567ffffffffffffffff8111156123da57600080fd5b6123e68582860161236b565b90969095509350505050565b6000806000806040858703121561240857600080fd5b843567ffffffffffffffff8082111561242057600080fd5b61242c8883890161236b565b9096509450602087013591508082111561244557600080fd5b50612452878288016122b9565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089157600080fd5b80356110ed8161245e565b60006020828403121561249d57600080fd5b81356124a88161245e565b9392505050565b6000602082840312156124c157600080fd5b813567ffffffffffffffff8111156124d857600080fd5b6124e4848285016122a1565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b8381101561256557818101518382015260200161254d565b50506000910152565b6000815180845261258681602086016020860161254a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b83811015612618578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a01526040918201511690880152606090960195908201906001016125cd565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526126976101a085018261256e565b905060208301516126d56020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b50604083015184820360808601526126ed82826125b8565b915050606083015184820360a0860152612707828261256e565b915050608083015160c08501528091505092915050565b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b83811015612793577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018552612781868351612623565b95509382019390820190600101612747565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261281857600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261285757600080fd5b83018035915067ffffffffffffffff82111561287257600080fd5b6020019150368190038213156122fb57600080fd5b6040516060810167ffffffffffffffff811182821017156128aa576128aa6124ec565b60405290565b6040516080810167ffffffffffffffff811182821017156128aa576128aa6124ec565b604051610100810167ffffffffffffffff811182821017156128aa576128aa6124ec565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561293e5761293e6124ec565b604052919050565b600082601f83011261295757600080fd5b813567ffffffffffffffff811115612971576129716124ec565b6129a260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016128f7565b8181528460208386010111156129b757600080fd5b816020850160208301376000918101602001919091529392505050565b600060c082840312156129e657600080fd5b60405160c0810167ffffffffffffffff8282108183111715612a0a57612a0a6124ec565b8160405282935084359150612a1e8261245e565b908252602084013590612a308261245e565b816020840152604085013560408401526060850135606084015260808501359150612a5a8261245e565b81608084015260a0850135915080821115612a7457600080fd5b50612a8185828601612946565b60a0830152505092915050565b600060608284031215612aa057600080fd5b612aa8612887565b90508135612ab58161245e565b80825250602082013560208201526040820135604082015292915050565b600067ffffffffffffffff821115612aed57612aed6124ec565b5060051b60200190565b600082601f830112612b0857600080fd5b81356020612b1d612b1883612ad3565b6128f7565b82815260079290921b84018101918181019086841115612b3c57600080fd5b8286015b84811015612ba15760808189031215612b595760008081fd5b612b616128b0565b8135612b6c8161245e565b8152818501358582015260408083013590820152606080830135612b8f8161245e565b90820152835291830191608001612b40565b509695505050505050565b600060208284031215612bbe57600080fd5b6040516020810181811067ffffffffffffffff82111715612be157612be16124ec565b6040529135825250919050565b600060208284031215612c0057600080fd5b813567ffffffffffffffff80821115612c1857600080fd5b908301906101408286031215612c2d57600080fd5b612c356128d3565b823582811115612c4457600080fd5b612c50878286016129d4565b825250612c5f60208401612480565b60208201526040830135604082015260608301356060820152612c858660808501612a8e565b608082015260e083013582811115612c9c57600080fd5b612ca887828601612af7565b60a083015250612cbc866101008501612bac565b60c082015261012083013582811115612cd457600080fd5b612ce087828601612946565b60e08301525095945050505050565b60008551612d01818460208a0161254a565b855190830190612d15818360208a0161254a565b8551910190612d2881836020890161254a565b8451910190612d3b81836020880161254a565b019695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176111e3576111e3612d46565b818103818111156111e3576111e3612d46565b6020815260006124a86020830184612623565b60006020808385031215612dc557600080fd5b825167ffffffffffffffff811115612ddc57600080fd5b8301601f81018513612ded57600080fd5b8051612dfb612b1882612ad3565b81815260609182028301840191848201919088841115612e1a57600080fd5b938501935b83851015612e765780858a031215612e375760008081fd5b612e3f612887565b8551612e4a8161245e565b81528587015187820152604080870151612e638161245e565b9082015283529384019391850191612e1f565b50979650505050505050565b808201808211156111e3576111e3612d46565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006124e46040830184612623565b7f5072696f726974794f72646572207769746e65737329000000000000000000008152600060168751612efd8183860160208c0161254a565b875190840190612f138184840160208c0161254a565b8751910190612f288184840160208b0161254a565b8651910190612f3d8184840160208a0161254a565b8551910190612f52818484016020890161254a565b0101979650505050505050565b6000610140612f8f838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b6020890151604084015260408901516060840152612fd06080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e0840152806101008401526130058184018661256e565b905082810361012084015261301a818561256e565b9998505050505050505050565b8281526000825161303f81602085016020870161254a565b919091016020019392505050565b6000806040838503121561306057600080fd5b50508051602090910151909290915056fe5072696f72697479496e707574286164647265737320746f6b656e2c75696e7432353620616d6f756e742c75696e74323536206d70735065725072696f7269747946656557656929546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e44617461295072696f726974794f7574707574286164647265737320746f6b656e2c75696e7432353620616d6f756e742c75696e74323536206d70735065725072696f726974794665655765692c6164647265737320726563697069656e7429a2646970667358221220358d7a71c93a2892c688558b4c23afeeb6f299d0931a1e20b502e160ae8617e064736f6c63430008180033"; + "0x60a06040523480156200001157600080fd5b5060405162003470380380620034708339810160408190526200003491620000b8565b600080546001600160a01b0319166001600160a01b03831690811782556040518492849283928392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600255506001600160a01b031660805250620000f79050565b6001600160a01b0381168114620000b557600080fd5b50565b60008060408385031215620000cc57600080fd5b8251620000d9816200009f565b6020840151909250620000ec816200009f565b809150509250929050565b608051613350620001206000396000818160e001528181610d6101526119eb01526133506000f3fe60806040526004361061009a5760003560e01c80632d771389116100695780636999b3771161004e5780636999b377146101715780638da5cb5b1461019e578063f2fde38b146101cb57600080fd5b80632d7713891461013e5780633f62192e1461015e57600080fd5b80630d335884146100a65780630d7a16c3146100bb57806312261ee7146100ce57806313fb72c71461012b57600080fd5b366100a157005b600080fd5b6100b96100b4366004612440565b6101eb565b005b6100b96100c93660046124ee565b610364565b3480156100da57600080fd5b506101027f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b9610139366004612530565b6104c5565b34801561014a57600080fd5b506100b96101593660046125c9565b610683565b6100b961016c3660046125ed565b61078f565b34801561017d57600080fd5b506001546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101aa57600080fd5b506000546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d757600080fd5b506100b96101e63660046125c9565b610894565b6101f3610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161020a5790505090506102b2846109f6565b816000815181106102c5576102c5612659565b60200260200101819052506102d981610b60565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da628906103199084908790879060040161285c565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b5050505061035481610bb1565b5061035f6001600255565b505050565b61036c610985565b8060008167ffffffffffffffff8111156103885761038861262a565b60405190808252806020026020018201604052801561044357816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103a65790505b50905060005b828110156104a25761047d85858381811061046657610466612659565b90506020028101906104789190612922565b6109f6565b82828151811061048f5761048f612659565b6020908102919091010152600101610449565b506104ac81610b60565b6104b581610bb1565b50506104c16001600255565b5050565b6104cd610985565b8260008167ffffffffffffffff8111156104e9576104e961262a565b6040519080825280602002602001820160405280156105a457816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105075790505b50905060005b828110156105ec576105c787878381811061046657610466612659565b8282815181106105d9576105d9612659565b60209081029190910101526001016105aa565b506105f681610b60565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da628906106369084908890889060040161285c565b600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b5050505061067181610bb1565b505061067d6001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610797610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107ae579050509050610856826109f6565b8160008151811061086957610869612659565b602002602001018190525061087d81610b60565b61088681610bb1565b506108916001600255565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610700565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610700565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a6f8380612960565b810190610a7c9190612d2c565b80516020810151604090910151919250610a9591610d04565b6000610aa082610e17565b9050610aac8183611065565b6000610abb83606001516111c7565b90506040518060a0016040528084600001518152602001610ae983866080015161121c90919063ffffffff16565b8152602001610b05838660a0015161131b90919063ffffffff16565b8152602001868060200190610b1a9190612960565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525060200192909252509392505050565b805160005b8181101561035f576000838281518110610b8157610b81612659565b60200260200101519050610b9481611400565b610b9e81336118f0565b610ba881336119e9565b50600101610b65565b805160005b81811015610cf3576000838281518110610bd257610bd2612659565b602002602001015190506000816040015151905060005b81811015610c5357600083604001518281518110610c0957610c09612659565b60200260200101519050610c4a81604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff16611d239092919063ffffffff16565b50600101610be9565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610c9c57610c9c612659565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610ce191815260200190565b60405180910390a45050600101610bb6565b5047156104c1576104c13347611d6a565b6040517f4fe02b4400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152600883901c6024830181905291600160ff85161b916000917f000000000000000000000000000000000000000000000000000000000000000090911690634fe02b4490604401602060405180830381865afa158015610daa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dce9190612e2d565b9050818118808316600003610e0f576040517fee3b3d4b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050565b6040517f5072696f726974794f726465722800000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602e8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603d8201527f75696e743235362061756374696f6e5374617274426c6f636b2c000000000000604e8201527f75696e7432353620626173656c696e655072696f726974794665655765692c0060688201527f5072696f72697479496e70757420696e7075742c00000000000000000000000060878201527f5072696f726974794f75747075745b5d206f7574707574732900000000000000609b82015260009060b401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260c08301909152608d80835290919061323360208301396040518060800160405280604881526020016131bd604891396040518060800160405280605b81526020016132c0605b9139604051602001610fb19493929190612e46565b60405160208183030381529060405280519060200120610fd48360000151611e04565b836020015184604001518560600151610ff08760800151611e9e565b610ffd8860a00151611f05565b60408051602081019890985287019590955273ffffffffffffffffffffffffffffffffffffffff9093166060860152608085019190915260a084015260c083015260e0820152610100015b604051602081830303815290604052805190602001209050919050565b8051606001514211156110a4576040517f769d11e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040810151602082015173ffffffffffffffffffffffffffffffffffffffff16158015906110d157508043105b80156110e1575060c08201515181115b1561110b576020820151611103906110f98486611fa3565b8460e0015161201a565b5060c0810151515b80431015611145576040517fc603552000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6080820151604001511561035f5760005b8260a001515181101561067d5760008360a00151828151811061117b5761117b612659565b60200260200101516040015111156111bf576040517fa6b844f500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600101611156565b6000483a1015611203576040517ff3eb44e500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50483a0381811115611213570390565b5060005b919050565b6112566040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b60008360400151836112689190612ecc565b90506298968081106112b6576040518060600160405280856000015173ffffffffffffffffffffffffffffffffffffffff168152602001600081526020018560200151815250915050611315565b6040805160608101909152845173ffffffffffffffffffffffffffffffffffffffff1681526020810182156113005760208601516112fb906298968085810390612142565b611306565b85602001515b81526020868101519101529150505b92915050565b81516060908067ffffffffffffffff8111156113395761133961262a565b6040519080825280602002602001820160405280156113a257816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816113575790505b50915060005b818110156113f8576113d38582815181106113c5576113c5612659565b60200260200101518561217e565b8382815181106113e5576113e5612659565b60209081029190910101526001016113a8565b505092915050565b60015473ffffffffffffffffffffffffffffffffffffffff166114205750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf0390611477908590600401612ee3565b600060405180830381865afa158015611494573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526114da9190810190612ef6565b60408301515181519192509060006114f28284612fc6565b67ffffffffffffffff81111561150a5761150a61262a565b60405190808252806020026020018201604052801561157357816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816115285790505b50905060005b838110156115c4578560400151818151811061159757611597612659565b60200260200101518282815181106115b1576115b1612659565b6020908102919091010152600101611579565b5060008060005b848110156118df5760008782815181106115e7576115e7612659565b6020026020010151905060005b828110156116a55788818151811061160e5761160e612659565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff160361169d5781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b6001016115f4565b506000805b888110156117665760008b6040015182815181106116ca576116ca612659565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff160361175d578515611747576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516117569084612fc6565b9250600196505b506001016116aa565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff9182169116036117df5784156117c6576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516117d89082612fc6565b9050600193505b806000036118345781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b611842816005612710612142565b826020015111156118b5578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610700565b8186848a01815181106118ca576118ca612659565b602090810291909101015250506001016115cb565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff163014611941576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104c1578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b906119bd9084908690600401612fd9565b60006040518083038186803b1580156119d557600080fd5b505afa158015610e0f573d6000803e3d6000fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe611aa9846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff86168252808701518101519082015285600001516020015186608001516040518060c00160405280608d8152602001613233608d91396040518060800160405280604881526020016131bd60489139604080517f5072696f726974794f726465722800000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602e8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603d8201527f75696e743235362061756374696f6e5374617274426c6f636b2c000000000000604e8201527f75696e7432353620626173656c696e655072696f726974794665655765692c0060688201527f5072696f72697479496e70757420696e7075742c00000000000000000000000060878201527f5072696f726974794f75747075745b5d206f7574707574732900000000000000609b820152815160948183030181526101348201909252605b60b48201818152916132c09060d401396040518060600160405280602e8152602001613205602e9139604051602001611c88959493929190613008565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611cf596959493926004016130a3565b600060405180830381600087803b158015611d0f57600080fd5b505af1158015610e0f573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff8316611d485761035f8282611d6a565b61035f73ffffffffffffffffffffffffffffffffffffffff8416338484612232565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611dc4576040519150601f19603f3d011682016040523d82523d6000602084013e611dc9565b606091505b505090508061035f576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060c00160405280608d8152602001613233608d913980516020918201208351848301516040808701516060880151608089015160a08a0151805190890120935161104898939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b60006040518060800160405280604881526020016131bd6048913980516020918201208351848301516040808701519051611048950193845273ffffffffffffffffffffffffffffffffffffffff9290921660208401526040830152606082015260800190565b600080825160200267ffffffffffffffff811115611f2557611f2561262a565b6040519080825280601f01601f191660200182016040528015611f4f576020820181803683370190505b50905060005b8351811015611f94576000611f82858381518110611f7557611f75612659565b6020026020010151612324565b60208381028501015250600101611f55565b50805160209091012092915050565b600081468460c00151604051602001611fbf9151815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611ffc93929160200161316b565b60405160208183030381529060405280519060200120905092915050565b600080828060200190518101906120319190613198565b9150915060008360408151811061204a5761204a612659565b0160209081015160408051600080825293810180835289905260f89290921c9082018190526060820186905260808201859052925060019060a0016020604051602081039080840390855afa1580156120a7573d6000803e3d6000fd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141580612102575073ffffffffffffffffffffffffffffffffffffffff8116155b15612139576040517fd7815be100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048411830215820261217757600080fd5b5091020490565b604080516060810182526000808252602082018190529181019190915260408051606081018252845173ffffffffffffffffffffffffffffffffffffffff16815290840151602082019015612201576121fc8560400151856121e09190612ecc565b6121ed9062989680612fc6565b6020870151906298968061239b565b612207565b84602001515b8152602001846060015173ffffffffffffffffffffffffffffffffffffffff16815250905092915050565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d116001600051141617169150508061231d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610700565b5050505050565b60006040518060800160405280605b81526020016132c0605b9139805160209182012083518483015160408087015160608801519151611048969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04841183021582026123d057600080fd5b50910281810615159190040190565b6000604082840312156123f157600080fd5b50919050565b60008083601f84011261240957600080fd5b50813567ffffffffffffffff81111561242157600080fd5b60208301915083602082850101111561243957600080fd5b9250929050565b60008060006040848603121561245557600080fd5b833567ffffffffffffffff8082111561246d57600080fd5b612479878388016123df565b9450602086013591508082111561248f57600080fd5b5061249c868287016123f7565b9497909650939450505050565b60008083601f8401126124bb57600080fd5b50813567ffffffffffffffff8111156124d357600080fd5b6020830191508360208260051b850101111561243957600080fd5b6000806020838503121561250157600080fd5b823567ffffffffffffffff81111561251857600080fd5b612524858286016124a9565b90969095509350505050565b6000806000806040858703121561254657600080fd5b843567ffffffffffffffff8082111561255e57600080fd5b61256a888389016124a9565b9096509450602087013591508082111561258357600080fd5b50612590878288016123f7565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089157600080fd5b80356112178161259c565b6000602082840312156125db57600080fd5b81356125e68161259c565b9392505050565b6000602082840312156125ff57600080fd5b813567ffffffffffffffff81111561261657600080fd5b612622848285016123df565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b838110156126a357818101518382015260200161268b565b50506000910152565b600081518084526126c4816020860160208601612688565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b83811015612756578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a015260409182015116908801526060909601959082019060010161270b565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526127d56101a08501826126ac565b905060208301516128136020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b506040830151848203608086015261282b82826126f6565b915050606083015184820360a086015261284582826126ac565b915050608083015160c08501528091505092915050565b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b838110156128d1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526128bf868351612761565b95509382019390820190600101612885565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261295657600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261299557600080fd5b83018035915067ffffffffffffffff8211156129b057600080fd5b60200191503681900382131561243957600080fd5b6040516060810167ffffffffffffffff811182821017156129e8576129e861262a565b60405290565b6040516080810167ffffffffffffffff811182821017156129e8576129e861262a565b604051610100810167ffffffffffffffff811182821017156129e8576129e861262a565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612a7c57612a7c61262a565b604052919050565b600082601f830112612a9557600080fd5b813567ffffffffffffffff811115612aaf57612aaf61262a565b612ae060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612a35565b818152846020838601011115612af557600080fd5b816020850160208301376000918101602001919091529392505050565b600060c08284031215612b2457600080fd5b60405160c0810167ffffffffffffffff8282108183111715612b4857612b4861262a565b8160405282935084359150612b5c8261259c565b908252602084013590612b6e8261259c565b816020840152604085013560408401526060850135606084015260808501359150612b988261259c565b81608084015260a0850135915080821115612bb257600080fd5b50612bbf85828601612a84565b60a0830152505092915050565b600060608284031215612bde57600080fd5b612be66129c5565b90508135612bf38161259c565b80825250602082013560208201526040820135604082015292915050565b600067ffffffffffffffff821115612c2b57612c2b61262a565b5060051b60200190565b600082601f830112612c4657600080fd5b81356020612c5b612c5683612c11565b612a35565b82815260079290921b84018101918181019086841115612c7a57600080fd5b8286015b84811015612cdf5760808189031215612c975760008081fd5b612c9f6129ee565b8135612caa8161259c565b8152818501358582015260408083013590820152606080830135612ccd8161259c565b90820152835291830191608001612c7e565b509695505050505050565b600060208284031215612cfc57600080fd5b6040516020810181811067ffffffffffffffff82111715612d1f57612d1f61262a565b6040529135825250919050565b600060208284031215612d3e57600080fd5b813567ffffffffffffffff80821115612d5657600080fd5b908301906101408286031215612d6b57600080fd5b612d73612a11565b823582811115612d8257600080fd5b612d8e87828601612b12565b825250612d9d602084016125be565b60208201526040830135604082015260608301356060820152612dc38660808501612bcc565b608082015260e083013582811115612dda57600080fd5b612de687828601612c35565b60a083015250612dfa866101008501612cea565b60c082015261012083013582811115612e1257600080fd5b612e1e87828601612a84565b60e08301525095945050505050565b600060208284031215612e3f57600080fd5b5051919050565b60008551612e58818460208a01612688565b855190830190612e6c818360208a01612688565b8551910190612e7f818360208901612688565b8451910190612e92818360208801612688565b019695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808202811582820484141761131557611315612e9d565b6020815260006125e66020830184612761565b60006020808385031215612f0957600080fd5b825167ffffffffffffffff811115612f2057600080fd5b8301601f81018513612f3157600080fd5b8051612f3f612c5682612c11565b81815260609182028301840191848201919088841115612f5e57600080fd5b938501935b83851015612fba5780858a031215612f7b5760008081fd5b612f836129c5565b8551612f8e8161259c565b81528587015187820152604080870151612fa78161259c565b9082015283529384019391850191612f63565b50979650505050505050565b8082018082111561131557611315612e9d565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006126226040830184612761565b7f5072696f726974794f72646572207769746e657373290000000000000000000081526000601687516130418183860160208c01612688565b8751908401906130578184840160208c01612688565b875191019061306c8184840160208b01612688565b86519101906130818184840160208a01612688565b85519101906130968184840160208901612688565b0101979650505050505050565b60006101406130d3838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b60208901516040840152604089015160608401526131146080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e084015280610100840152613149818401866126ac565b905082810361012084015261315e81856126ac565b9998505050505050505050565b83815282602082015260008251613189816040850160208701612688565b91909101604001949350505050565b600080604083850312156131ab57600080fd5b50508051602090910151909290915056fe5072696f72697479496e707574286164647265737320746f6b656e2c75696e7432353620616d6f756e742c75696e74323536206d70735065725072696f7269747946656557656929546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e44617461295072696f726974794f7574707574286164647265737320746f6b656e2c75696e7432353620616d6f756e742c75696e74323536206d70735065725072696f726974794665655765692c6164647265737320726563697069656e7429a2646970667358221220353e4a9c8af32ce67b5de33aaecb5fae198f4618ed76c7f0ec66d08df440265b64736f6c63430008180033"; type PriorityOrderReactorConstructorParams = | [signer?: Signer] diff --git a/sdks/uniswapx-sdk/src/order/PriorityOrder.ts b/sdks/uniswapx-sdk/src/order/PriorityOrder.ts index 037692f04..1549c54b8 100644 --- a/sdks/uniswapx-sdk/src/order/PriorityOrder.ts +++ b/sdks/uniswapx-sdk/src/order/PriorityOrder.ts @@ -341,9 +341,10 @@ export class UnsignedPriorityOrder implements OffChainOrder { const abiCoder = new ethers.utils.AbiCoder(); return ethers.utils.solidityKeccak256( - ["bytes32", "bytes"], + ["bytes32", "uint256", "bytes"], [ this.hash(), + this.chainId, abiCoder.encode( [PRIORITY_COSIGNER_DATA_TUPLE_ABI], [[cosignerData.auctionTargetBlock]]