3 txs
9 calls
constructor
constructor(address _erc20, address _trusted, address _pointsOperator)
functions
BLAST_POINTS_ADDRESS
viewfunction BLAST_POINTS_ADDRESS() view returns (address)
BLAST
viewfunction BLAST() view returns (address)
getCollateralBalanceAndIndex
viewfunction getCollateralBalanceAndIndex(address _wNFTAddress, uint256 _wNFTTokenId, uint8 _collateralType, address _erc, uint256 _tokenId) view returns (uint256, uint256)
getOriginalURI
viewfunction getOriginalURI(address _wNFTAddress, uint256 _wNFTTokenId) view returns (string uri_)
getWrappedToken
viewfunction getWrappedToken(address _wNFTAddress, uint256 _wNFTTokenId) view returns (tuple)
lastWNFTId
viewfunction lastWNFTId(uint8) view returns (address contractAddress, uint256 tokenId)
MAX_COLLATERAL_SLOTS
viewfunction MAX_COLLATERAL_SLOTS() view returns (uint256)
owner
viewfunction owner() view returns (address)
protocolTechToken
viewfunction protocolTechToken() view returns (address)
protocolWhiteList
viewfunction protocolWhiteList() view returns (address)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
trustedOperator
viewfunction trustedOperator(address) view returns (bool)
wnftTypes
viewfunction wnftTypes(address) view returns (uint8)
addCollateral
payablefunction addCollateral(address _wNFTAddress, uint256 _wNFTTokenId, tuple[] _collateral) payable
chargeFees
nonpayablefunction chargeFees(address _wNFTAddress, uint256 _wNFTTokenId, address _from, address _to, bytes1 _feeType) returns (bool charged)
onERC1155BatchReceived
nonpayablefunction onERC1155BatchReceived(address, address, uint256[], uint256[], bytes) returns (bytes4)
onERC1155Received
nonpayablefunction onERC1155Received(address, address, uint256, uint256, bytes) returns (bytes4)
onERC721Received
nonpayablefunction onERC721Received(address, address, uint256, bytes) returns (bytes4)
renounceOwnership
nonpayablefunction renounceOwnership()
setMaxCollateralSlots
nonpayablefunction setMaxCollateralSlots(uint256 _count)
setTrustedOperatorStatus
nonpayablefunction setTrustedOperatorStatus(address _operator, bool _status)
setWhiteList
nonpayablefunction setWhiteList(address _wlAddress)
setWNFTId
nonpayablefunction setWNFTId(uint8 _assetOutType, address _wnftContract, uint256 _tokenId)
transferIn
nonpayablefunction transferIn(tuple _assetItem, address _from) returns (uint256 _transferedValue)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unWrap
nonpayablefunction unWrap(address _wNFTAddress, uint256 _wNFTTokenId)
unWrap
nonpayablefunction unWrap(uint8 _wNFTType, address _wNFTAddress, uint256 _wNFTTokenId, bool _isEmergency)
unWrap
nonpayablefunction unWrap(uint8 _wNFTType, address _wNFTAddress, uint256 _wNFTTokenId)
wrap
payablefunction wrap(tuple _inData, tuple[] _collateral, address _wrappFor) payable returns (tuple)
wrapUnsafe
payablefunction wrapUnsafe(tuple _inData, tuple[] _collateral, address _wrappFor) payable returns (tuple)
events
CollateralAdded
event CollateralAdded(address indexed wrappedAddress, uint256 indexed wrappedId, uint8 assetType, address collateralAddress, uint256 collateralTokenId, uint256 collateralBalance)
EnvelopFee
event EnvelopFee(address indexed receiver, address indexed wNFTConatract, uint256 indexed wNFTTokenId, uint256 amount)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
PartialUnWrapp
event PartialUnWrapp(address indexed wrappedAddress, uint256 indexed wrappedId, uint256 lastCollateralIndex)
SuspiciousFail
event SuspiciousFail(address indexed wrappedAddress, uint256 indexed wrappedId, address indexed failedContractAddress)
UnWrappedV1
event UnWrappedV1(address indexed wrappedAddress, address indexed originalAddress, uint256 indexed wrappedId, uint256 originalTokenId, address beneficiary, uint256 nativeCollateralAmount, bytes2 rules)
WrappedV1
event WrappedV1(address indexed inAssetAddress, address indexed outAssetAddress, uint256 indexed inAssetTokenId, uint256 outTokenId, address wnftFirstOwner, uint256 nativeCollateralAmount, bytes2 rules)
errors
UnSupportedAsset
error UnSupportedAsset(((uint8 assetType, address contractAddress) asset, uint256 tokenId, uint256 amount) asset)
creation bytecode
0x608060405260196002553480156200001657600080fd5b506040516200618d3803806200618d833981016040819052620000399162000290565b6001600055808383816200004d3362000221565b6001600160a01b038116620000b45760405162461bcd60e51b8152602060048201526024808201527f50726f746f636f6c54656368546f6b656e2063616e74206265207a65726f2076604482015263616c756560e01b606482015260840160405180910390fd5b600380546001600160a01b0319166001600160a01b03831690811790915560408051632dceecbb60e21b8152905163b73bb2ec9160048082019260009290919082900301818387803b1580156200010a57600080fd5b505af11580156200011f573d6000803e3d6000fd5b505050506001600160a01b0391821660009081526008602052604090819020805460ff19166001179055516336b91f2b60e01b8152918416600483015250732536fe9ab3f511540f2f9e2ec2a805005c3dd80091506336b91f2b90602401600060405180830381600087803b1580156200019857600080fd5b505af1158015620001ad573d6000803e3d6000fd5b5050604051631d70c8d360e31b8152336004820152734300000000000000000000000000000000000002925063eb8646989150602401600060405180830381600087803b158015620001fe57600080fd5b505af115801562000213573d6000803e3d6000fd5b5050505050505050620002da565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b80516001600160a01b03811681146200028b57600080fd5b919050565b600080600060608486031215620002a657600080fd5b620002b18462000273565b9250620002c16020850162000273565b9150620002d16040850162000273565b90509250925092565b615ea380620002ea6000396000f3fe6080604052600436106101cd5760003560e01c80638da5cb5b116100f7578063a0c889f611610095578063f1551a9c11610064578063f1551a9c146105c0578063f23a6e61146105f5578063f2fde38b14610621578063faf7d7201461064157600080fd5b8063a0c889f614610533578063a504104014610553578063bc197c8114610573578063c424d4f71461059357600080fd5b806397da0ceb116100d157806397da0ceb146104af578063980550ca146104dd5780639a251c29146104f35780639a7b05091461050657600080fd5b80638da5cb5b1461046357806391ddb1461461048157806397d757761461049457600080fd5b806339e899ee1161016f57806362d444721161013e57806362d44472146103c957806366967cbb146103f1578063715018a61461042e5780637f6d4c931461044357600080fd5b806339e899ee1461033957806342fb01a8146103595780634d36d0851461037957806351b5deec1461039957600080fd5b80631fe438a2116101ab5780631fe438a214610278578063320a18dc1461029a578063331758e6146102ba5780633360aa3c146102da57600080fd5b806301ffc9a7146101d257806310118ebb14610207578063150b7a021461023f575b600080fd5b3480156101de57600080fd5b506101f26101ed366004614d37565b610661565b60405190151581526020015b60405180910390f35b34801561021357600080fd5b50600454610227906001600160a01b031681565b6040516001600160a01b0390911681526020016101fe565b34801561024b57600080fd5b5061025f61025a366004614e83565b610698565b6040516001600160e01b031990911681526020016101fe565b34801561028457600080fd5b50610298610293366004614efc565b6106a9565b005b3480156102a657600080fd5b506102986102b5366004614f42565b6106dc565b3480156102c657600080fd5b50600354610227906001600160a01b031681565b3480156102e657600080fd5b5061031a6102f5366004614f83565b600560205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b0390931683526020830191909152016101fe565b34801561034557600080fd5b50610298610354366004614fa0565b6107e4565b34801561036557600080fd5b50610298610374366004614fbd565b61080e565b61038c61038736600461505b565b610908565b6040516101fe9190615142565b3480156103a557600080fd5b506101f26103b4366004614fa0565b60086020526000908152604090205460ff1681565b3480156103d557600080fd5b50610227732536fe9ab3f511540f2f9e2ec2a805005c3dd80081565b3480156103fd57600080fd5b5061042161040c366004614fa0565b60066020526000908152604090205460ff1681565b6040516101fe9190615150565b34801561043a57600080fd5b50610298610f60565b34801561044f57600080fd5b506101f261045e366004615174565b610f74565b34801561046f57600080fd5b506001546001600160a01b0316610227565b61029861048f3660046151dc565b61102f565b3480156104a057600080fd5b506102276002604360981b0181565b3480156104bb57600080fd5b506104cf6104ca3660046152ab565b6110a6565b6040519081526020016101fe565b3480156104e957600080fd5b506104cf60025481565b61038c61050136600461505b565b61111b565b34801561051257600080fd5b506105266105213660046152d8565b611542565b6040516101fe9190615328565b34801561053f57600080fd5b5061029861054e36600461535b565b611665565b34801561055f57600080fd5b5061029861056e366004614f42565b611672565b34801561057f57600080fd5b5061025f61058e3660046153fd565b611684565b34801561059f57600080fd5b506105b36105ae3660046152d8565b611696565b6040516101fe91906155d5565b3480156105cc57600080fd5b506105e06105db3660046156a2565b611a07565b604080519283526020830191909152016101fe565b34801561060157600080fd5b5061025f6106103660046156fd565b63f23a6e6160e01b95945050505050565b34801561062d57600080fd5b5061029861063c366004614fa0565b611bde565b34801561064d57600080fd5b5061029861065c3660046152d8565b611c57565b60006001600160e01b03198216630271189760e51b148061069257506301ffc9a760e01b6001600160e01b03198316145b92915050565b630a85bd0160e11b5b949350505050565b6106b1611c87565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6106e4611c87565b6001600160a01b0382166107315760405162461bcd60e51b815260206004820152600f60248201526e4e6f207a65726f206164647265737360881b60448201526064015b60405180910390fd5b6040518060400160405280836001600160a01b031681526020018281525060056000856007811115610765576107656150d4565b6007811115610776576107766150d4565b815260208082019290925260409081016000908120845181546001600160a01b0319166001600160a01b03918216178255948401516001918201559386168152600690925290208054859260ff19909116908360078111156107da576107da6150d4565b0217905550505050565b6107ec611c87565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b60008061081c868686611ce1565b9150915061082a8585612000565b61083357600080fd5b61084485853330600360f81b612334565b50600061085686866001600080611a07565b509050610864868686612722565b61087057505050610902565b61087d8787858886612d66565b6001600160a01b0386811660008181526007602090815260408083208a84529091529081902080546001820154600483015460089093015493518b96610100909304831695947fabb50c1815800da62a4637d3272d1584df1ee8cbd963d90fb44eb55b63acfcb5946108f6941691899160f01b90615765565b60405180910390a45050505b50505050565b6040805160a081018252600060608201818152608083018290528252602082018190529181019190915261093a612e69565b6109448583612ec2565b6109825760405162461bcd60e51b815260206004820152600f60248201526e15dc985c0818da1958dac819985a5b608a1b6044820152606401610728565b60016109916020870187614f83565b60078111156109a2576109a26150d4565b141580156109ce575060006109ba6020870187614f83565b60078111156109cb576109cb6150d4565b14155b15610a3e576109ec6109e536879003870187615793565b3330613225565b6109f586613882565b14610a3e5760405162461bcd60e51b81526020600482015260196024820152780537573706963696f757320617373657420666f72207772617603c1b6044820152606401610728565b600160056000610a5661012089016101008a01614f83565b6007811115610a6757610a676150d4565b6007811115610a7857610a786150d4565b81526020019081526020016000206001016000828254610a9891906157c5565b90915550610b5e9050610ab361012087016101008801614f83565b60056000610ac96101208a016101008b01614f83565b6007811115610ada57610ada6150d4565b6007811115610aeb57610aeb6150d4565b815260208101919091526040016000908120546001600160a01b0316908590600590610b1f6101208c016101008d01614f83565b6007811115610b3057610b306150d4565b6007811115610b4157610b416150d4565b8152602001908152602001600020600101548961012001356138b9565b610c0560056000610b7761012089016101008a01614f83565b6007811115610b8857610b886150d4565b6007811115610b9957610b996150d4565b815260208101919091526040016000908120546001600160a01b031690600590610bcb6101208a016101008b01614f83565b6007811115610bdc57610bdc6150d4565b6007811115610bed57610bed6150d4565b815260200190815260200160002060010154876139ba565b610cad60056000610c1e61012089016101008a01614f83565b6007811115610c2f57610c2f6150d4565b6007811115610c4057610c406150d4565b815260208101919091526040016000908120546001600160a01b031690600590610c726101208a016101008b01614f83565b6007811115610c8357610c836150d4565b6007811115610c9457610c946150d4565b815260200190815260200160002060010154868661102f565b610d5a60056000610cc661012089016101008a01614f83565b6007811115610cd757610cd76150d4565b6007811115610ce857610ce86150d4565b815260208101919091526040016000908120546001600160a01b031690600590610d1a6101208a016101008b01614f83565b6007811115610d2b57610d2b6150d4565b6007811115610d3c57610d3c6150d4565b8152602001908152602001600020600101543330600260f81b612334565b50604085013560056000610d7661012089016101008a01614f83565b6007811115610d8757610d876150d4565b6007811115610d9857610d986150d4565b81526020808201929092526040908101600020546001600160a01b031691610dc4918901908901614fa0565b6001600160a01b03167fa90a3b8dae41ae10a708d32fec7bf12da5c90879c98b9c4cca3c8fba91ddf49360056000610e046101208c016101008d01614f83565b6007811115610e1557610e156150d4565b6007811115610e2657610e266150d4565b81526020810191909152604001600020600101548634610e4e6101608d016101408e016157d8565b604051610e5e9493929190615765565b60405180910390a46040805160a08101909152806060810180610e896101208a016101008b01614f83565b6007811115610e9a57610e9a6150d4565b815260200160056000610eb56101208c016101008d01614f83565b6007811115610ec657610ec66150d4565b6007811115610ed757610ed76150d4565b81526020808201929092526040016000908120546001600160a01b0316909252918352910190600590610f126101208a016101008b01614f83565b6007811115610f2357610f236150d4565b6007811115610f3457610f346150d4565b815260200190815260200160002060010154815260200186610120013581525090506106a16001600055565b610f68611c87565b610f726000613c45565b565b6000336001600160a01b0387161480610f8c57503330145b610fd85760405162461bcd60e51b815260206004820152601860248201527f4f6e6c7920666f7220774e4654206f72207772617070657200000000000000006044820152606401610728565b610fe58686868686612334565b6110235760405162461bcd60e51b815260206004820152600f60248201526e1199594818da185c99d94819985a5b608a1b6044820152606401610728565b50600195945050505050565b8015158061103d5750600034115b156109025761104e84848484613c97565b61109a5760405162461bcd60e51b815260206004820152601860248201527f466f7262696464656e2061646420636f6c6c61746572616c00000000000000006044820152606401610728565b61090284848484613e73565b3360009081526008602052604081205460ff166110fc5760405162461bcd60e51b81526020600482015260146024820152734f6e6c792074727573746564206164647265737360601b6044820152606401610728565b611104612e69565b61110f838330613225565b90506106926001600055565b6040805160a081018252600060608201818152608083018290528252602080830182905282840182905233825260089052919091205460ff166111975760405162461bcd60e51b81526020600482015260146024820152734f6e6c792074727573746564206164647265737360601b6044820152606401610728565b61119f612e69565b61126b6111b461012087016101008801614f83565b600560006111ca6101208a016101008b01614f83565b60078111156111db576111db6150d4565b60078111156111ec576111ec6150d4565b815260208101919091526040016000908120546001600160a01b03169085906005906112206101208c016101008d01614f83565b6007811115611231576112316150d4565b6007811115611242576112426150d4565b815260200190815260200160002060010154600161126091906157c5565b8961012001356138b9565b60016005600061128361012089016101008a01614f83565b6007811115611294576112946150d4565b60078111156112a5576112a56150d4565b815260200190815260200160002060010160008282546112c591906157c5565b909155506112e4905060056000610b7761012089016101008a01614f83565b60005b83811015610d5a576113bd600560006113086101208a016101008b01614f83565b6007811115611319576113196150d4565b600781111561132a5761132a6150d4565b815260208101919091526040016000908120546001600160a01b03169060059061135c6101208b016101008c01614f83565b600781111561136d5761136d6150d4565b600781111561137e5761137e6150d4565b8152602001908152602001600020600101548787858181106113a2576113a2615802565b9050608002018036038101906113b89190615793565b6141fd565b600560006113d361012089016101008a01614f83565b60078111156113e4576113e46150d4565b60078111156113f5576113f56150d4565b815260200190815260200160002060010154600560008861010001602081019061141f9190614f83565b6007811115611430576114306150d4565b6007811115611441576114416150d4565b81526020810191909152604001600020546001600160a01b03167ff3d1350815c4f9db2be36c35f840bfb002835a83ff1c3d8f3a217b1e6227d5aa87878581811061148e5761148e615802565b6114a49260206080909202019081019150614f83565b60078111156114b5576114b56150d4565b8888868181106114c7576114c7615802565b6114e09260406080909202019081019150602001614fa0565b8989878181106114f2576114f2615802565b905060800201604001358a8a8881811061150e5761150e615802565b905060800201606001356040516115289493929190615818565b60405180910390a38061153a81615841565b9150506112e7565b606060006115508484611696565b51905060038151516007811115611569576115696150d4565b036115f55780516020908101519082015160405163c87b56dd60e01b81526001600160a01b039092169163c87b56dd916115a99160040190815260200190565b600060405180830381865afa1580156115c6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115ee919081019061585a565b915061165e565b6004815151600781111561160b5761160b6150d4565b0361164b578051602090810151908201516040516303a24d0760e21b81526001600160a01b0390921691630e89341c916115a99160040190815260200190565b6040518060200160405280600081525091505b5092915050565b61166d611c87565b600255565b61167f838383600061080e565b505050565b63bc197c8160e01b5b95945050505050565b604080516101808101825260006101408201818152610160830182905260e083019081526101008301829052610120830182905282526060602083018190529282018190528282018390526080820183905260a082019290925260c08101919091526001600160a01b0383166000908152600760208181526040808420868552909152918290208251610180810190935280549091839160e0830191849183916101408601918491839160ff1690811115611753576117536150d4565b6007811115611764576117646150d4565b8152905461010090046001600160a01b031660209182015290825260018301548282015260029092015460409182015291835260038401805483518184028101840190945280845293820193909160009084015b8282101561184f576000848152602090206040805160a08101909152600384029091018054829060608201908390829060ff1660078111156117fc576117fc6150d4565b600781111561180d5761180d6150d4565b8152905461010090046001600160a01b0316602091820152908252600183810154838301526002909301546040909201919091529183529290920191016117b8565b5050509082525060048201546001600160a01b0316602080830191909152600583018054604080518285028101850182528281529401939260009084015b828210156118ef5760008481526020908190206040805160608101825260038602909201805460f81b6001600160f81b0319168352600180820154848601526002909101546001600160a01b031691830191909152908352909201910161188d565b50505050815260200160068201805480602002602001604051908101604052809291908181526020016000905b828210156119685760008481526020908190206040805180820190915260028502909101805460f81b6001600160f81b031916825260019081015482840152908352909201910161191c565b50505050815260200160078201805480602002602001604051908101604052809291908181526020016000905b828210156119df57600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b900461ffff1681830152825260019092019101611995565b505050908252506008919091015460f01b6001600160f01b0319166020909101529392505050565b60008060005b6001600160a01b03881660009081526007602090815260408083208a8452909152902060030154811015611bd2576001600160a01b0388811660009081526007602090815260408083208b8452909152902060030180549187169183908110611a7857611a78615802565b600091825260209091206003909102015461010090046001600160a01b0316148015611aee57506001600160a01b03881660009081526007602090815260408083208a84529091529020600301805485919083908110611ada57611ada615802565b906000526020600020906003020160010154145b8015611b665750856007811115611b0757611b076150d4565b6001600160a01b03891660009081526007602090815260408083208b84529091529020600301805483908110611b3f57611b3f615802565b600091825260209091206003909102015460ff166007811115611b6457611b646150d4565b145b15611bc0576001600160a01b03881660009081526007602090815260408083208a84529091529020600301805482908110611ba357611ba3615802565b906000526020600020906003020160020154819250925050611bd4565b80611bca81615841565b915050611a0d565b505b9550959350505050565b611be6611c87565b6001600160a01b038116611c4b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610728565b611c5481613c45565b50565b6001600160a01b038216600090815260066020526040812054611c839160ff909116908490849061080e565b5050565b6001546001600160a01b03163314610f725760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610728565b600080611d0e600160f01b611cf68686611696565b60c0015181166001600160f01b031990811691161490565b15611d5b5760405162461bcd60e51b815260206004820152601b60248201527f556e577261707020666f7262696464656e20627920617574686f7200000000006044820152606401610728565b6003856007811115611d6f57611d6f6150d4565b03611e3c576040516331a9108f60e11b8152600481018490526001600160a01b03851690636352211e90602401602060405180830381865afa158015611db9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ddd91906158c7565b91506001600160a01b0382163314611e375760405162461bcd60e51b815260206004820152601860248201527f4f6e6c79206f776e65722063616e20756e7772617020697400000000000000006044820152606401610728565b611ff8565b6004856007811115611e5057611e506150d4565b03611f995760405163bd85b03960e01b8152600481018490526001600160a01b0385169063bd85b03990602401602060405180830381865afa158015611e9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ebe91906158e4565b604051627eeac760e11b815233600482018190526024820186905293509091506001600160a01b0385169062fdd58e90604401602060405180830381865afa158015611f0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f3291906158e4565b8114611e375760405162461bcd60e51b815260206004820152603060248201527f45524331313520756e7772617020617661696c61626c65206f6e6c7920666f7260448201526f20616c6c20746f74616c537570706c7960801b6064820152608401610728565b6040805160a08101909152806060810180886007811115611fbc57611fbc6150d4565b8152602001876001600160a01b03168152508152602001848152602001600081525060405163391102fb60e01b81526004016107289190615142565b935093915050565b6000805b6001600160a01b038416600090815260076020908152604080832086845290915290206006015481101561232a576001600160a01b0384166000908152600760209081526040808320868452909152902060060180548290811061206a5761206a615802565b600091825260208220600291909102015460f81b6001600160f81b031916900361211a576001600160a01b038416600090815260076020908152604080832086845290915290206006018054429190839081106120c9576120c9615802565b906000526020600020906002020160010154111561211a5760405162461bcd60e51b815260206004820152600e60248201526d2a34b6b2a637b1b59032b93937b960911b6044820152606401610728565b6001600160a01b0384166000908152600760209081526040808320868452909152902060060180548290811061215257612152615802565b600091825260209091206002909102015460f81b6001600160f81b031916600160f81b036123185760005b6001600160a01b0385166000908152600760209081526040808320878452909152902060050154811015612316576001600160a01b038516600090815260076020908152604080832087845290915290206005018054829081106121e3576121e3615802565b600091825260208220600391909102015460f81b6001600160f81b0319169003612304576001600160a01b03851660009081526007602090815260408083208784529091528120600501805461226c91889188916002918790811061224a5761224a615802565b600091825260208220600260039092020101546001600160a01b031690611a07565b506001600160a01b0387166000908152600760209081526040808320898452909152902060060180549192508291859081106122aa576122aa615802565b90600052602060002090600202016001015411156123025760405162461bcd60e51b81526020600482015260156024820152742a3930b739b332b92332b2a637b1b59032b93937b960591b6044820152606401610728565b505b8061230e81615841565b91505061217d565b505b8061232281615841565b915050612004565b5060019392505050565b60006001600160f81b03198216810361168d5760005b6001600160a01b0387166000908152600760209081526040808320898452909152902060050154811015612715576001600160a01b038716600090815260076020908152604080832089845290915290206005018054829081106123b0576123b0615802565b600091825260208220600391909102015460f81b6001600160f81b0319169003612703576003546004546001600160a01b039182169116156124b6576004546001600160a01b0389811660009081526007602090815260408083208c84529091529020600501805491909216916373cf00f6918590811061243357612433615802565b600091825260209091206003909102016002015460405160e083901b6001600160e01b03191681526001600160a01b039091166004820152602401608060405180830381865afa15801561248b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124af91906158fd565b6060015190505b6000806000836001600160a01b031663ce244ce1600760008e6001600160a01b03166001600160a01b0316815260200190815260200160002060008d8152602001908152602001600020600501878154811061251457612514615802565b9060005260206000209060030201600760008f6001600160a01b03166001600160a01b0316815260200190815260200160002060008e81526020019081526020016000206007018c8c6040518563ffffffff1660e01b815260040161257c9493929190615981565b600060405180830381865afa158015612599573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526125c19190810190615a99565b919450925090506000805b82518110156126fc57306001600160a01b03168382815181106125f1576125f1615802565b60200260200101516001600160a01b03160361262b5761262b8d8d87848151811061261e5761261e615802565b60200260200101516141fd565b61268185828151811061264057612640615802565b602002602001015185838151811061265a5761265a615802565b602002602001015185848151811061267457612674615802565b6020026020010151613225565b91508b8d6001600160a01b03168483815181106126a0576126a0615802565b60200260200101516001600160a01b03167f2e7d475f6480b44a6b26e0a71fd4bf4fbf7842b803ad204a4d23042a02bd7335856040516126e291815260200190565b60405180910390a4806126f481615841565b9150506125cc565b5050505050505b8061270d81615841565b91505061234a565b5060019695505050505050565b6001600160a01b038381166000908152600760209081526040808320868452909152812060040154909182913391161561278157506001600160a01b038086166000908152600760209081526040808320888452909152902060040154165b60005b6001600160a01b0387166000908152600760209081526040808320898452909152902060030154811015612b8e576001600160a01b038716600090815260076020908152604080832089845290915281206003018054839081106127ea576127ea615802565b600091825260209091206003909102015460ff16600781111561280f5761280f6150d4565b14612ae45784156128e2576001600160a01b0387166000908152600760209081526040808320898452909152902060030180546128db91908390811061285757612857615802565b600091825260209091206040805160a081019091526003909202018054829060608201908390829060ff166007811115612893576128936150d4565b60078111156128a4576128a46150d4565b8152905461010090046001600160a01b0316602091820152908252600183015490820152600290910154604090910152308461444c565b92506129a6565b6001600160a01b0387166000908152600760209081526040808320898452909152902060030180546129a391908390811061291f5761291f615802565b600091825260209091206040805160a081019091526003909202018054829060608201908390829060ff16600781111561295b5761295b6150d4565b600781111561296c5761296c6150d4565b8152905461010090046001600160a01b03166020918201529082526001830154908201526002909101546040909101523084613225565b92505b6001600160a01b038716600090815260076020908152604080832089845290915290206003018054829081106129de576129de615802565b9060005260206000209060030201600201548314612a7c576001600160a01b03871660009081526007602090815260408083208984529091529020600301805482908110612a2e57612a2e615802565b600091825260208220600390910201546040516001600160a01b0361010090920482169289928b16917ffca203c3f6987c2a1dae80f773c277d67920e7bce0cea9c07cd0eb8142e985ca9190a45b6001600160a01b03871660009081526007602090815260408083208984529091528120600301805483908110612ab457612ab4615802565b60009182526020909120600390910201805460ff19166001836007811115612ade57612ade6150d4565b02179055505b6103e85a11158015612b2757506001600160a01b0387166000908152600760209081526040808320898452909152902060030154612b2490600190615be2565b81105b15612b7c5785876001600160a01b03167fd66d44264f9d44e254da71183ff08098f38da4675285592ee80cdbd3b6f5153e83604051612b6891815260200190565b60405180910390a360009350505050612d5f565b80612b8681615841565b915050612784565b5060016001600160a01b03871660009081526007602081815260408084208a85529091529091205460ff1690811115612bc957612bc96150d4565b14158015612c0c57506001600160a01b038616600090815260076020818152604080842089855290915282205460ff1690811115612c0957612c096150d4565b14155b15612d585783612cb9576001600160a01b038616600090815260076020818152604080842089855290915291829020825160a081019093528054612cb39392839160608301918491839160ff90911690811115612c6b57612c6b6150d4565b6007811115612c7c57612c7c6150d4565b8152905461010090046001600160a01b03166020918201529082526001830154908201526002909101546040909101523083613225565b50612d58565b6001600160a01b038616600090815260076020818152604080842089855290915291829020825160a081019093528054612d569392839160608301918491839160ff90911690811115612d0e57612d0e6150d4565b6007811115612d1f57612d1f6150d4565b8152905461010090046001600160a01b0316602091820152908252600183015490820152600290910154604090910152308361444c565b505b6001925050505b9392505050565b6003856007811115612d7a57612d7a6150d4565b03612ddf57604051630852cd8d60e31b8152600481018390526001600160a01b038516906342966c68906024015b600060405180830381600087803b158015612dc257600080fd5b505af1158015612dd6573d6000803e3d6000fd5b50505050612e62565b6004856007811115612df357612df36150d4565b03612e6257604051637a94c56560e11b81526001600160a01b038481166004830152602482018490526044820183905285169063f5298aca90606401600060405180830381600087803b158015612e4957600080fd5b505af1158015612e5d573d6000803e3d6000fd5b505050505b5050505050565b600260005403612ebb5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610728565b6002600055565b6000612ee9600160f11b611cf6612edf6040870160208801614fa0565b6040870135611696565b158015612eff57506001600160a01b0382163014155b6004549091506001600160a01b031615610692576004546001600160a01b0316638f8b138e612f346040860160208701614fa0565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015612f78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f9c9190615bf5565b15612fe95760405162461bcd60e51b815260206004820152601a60248201527f574c3a41737365742064697361626c656420666f7220777261700000000000006044820152606401610728565b6004546001600160a01b03166352cdc6a661300a6040860160208701614fa0565b61301c610160870161014088016157d8565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160f01b0319166024820152604401602060405180830381865afa15801561306f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130939190615bf5565b6130f15760405162461bcd60e51b815260206004820152602960248201527f574c3a536f6d652072756c6573206172652064697361626c656420666f7220746044820152681a1a5cc8185cdcd95d60ba1b6064820152608401610728565b60005b61310160a0850185615c12565b905081101561165e576004546001600160a01b031663b6e306ac61312860a0870187615c12565b8481811061313857613138615802565b90506060020160400160208101906131509190614fa0565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015613194573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131b89190615bf5565b6132135760405162461bcd60e51b815260206004820152602660248201527f574c3a536f6d652061737365747320617265206e6f7420656e61626c656420666044820152656f722066656560d01b6064820152608401610728565b8061321d81615841565b9150506130f4565b6000806001855151600781111561323e5761323e6150d4565b036132f8575060408085015190516001600160a01b0384168031926000928381818185875af1925050503d8060008114613294576040519150601f19603f3d011682016040523d82523d6000602084013e613299565b606091505b50509050806132dc5760405162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b6044820152606401610728565b6132f0826001600160a01b03861631615be2565b92505061387a565b6002855151600781111561330e5761330e6150d4565b03613464578451602001516040516370a0823160e01b81526001600160a01b038581166004830152909116906370a0823190602401602060405180830381865afa158015613360573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061338491906158e4565b9050306001600160a01b038516036133bd5760408501518551602001516133b8916001600160a01b0390911690859061481d565b6133e1565b60408501518551602001516133e1916001600160a01b039091169086908690614880565b8451602001516040516370a0823160e01b81526001600160a01b038581166004830152839216906370a08231906024015b602060405180830381865afa15801561342f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061345391906158e4565b61345d9190615be2565b915061387a565b6003855151600781111561347a5761347a6150d4565b14801561350657508451602090810151908601516040516331a9108f60e11b815260048101919091526001600160a01b03868116921690636352211e90602401602060405180830381865afa1580156134d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134fb91906158c7565b6001600160a01b0316145b15613710578451602001516040516370a0823160e01b81526001600160a01b038581166004830152909116906370a0823190602401602060405180830381865afa158015613558573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061357c91906158e4565b90508460000151602001516001600160a01b03166323b872dd858588602001516040518463ffffffff1660e01b81526004016135ba93929190615c5a565b600060405180830381600087803b1580156135d457600080fd5b505af11580156135e8573d6000803e3d6000fd5b50505050826001600160a01b03168560000151602001516001600160a01b0316636352211e87602001516040518263ffffffff1660e01b815260040161363091815260200190565b602060405180830381865afa15801561364d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061367191906158c7565b6001600160a01b031614801561370157508451602001516040516370a0823160e01b81526001600160a01b038581166004830152839216906370a0823190602401602060405180830381865afa1580156136cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136f391906158e4565b6136fd9190615be2565b6001145b1561370b57600191505b61387a565b60048551516007811115613726576137266150d4565b0361385f57845160209081015190860151604051627eeac760e11b81526001600160a01b038681166004830152602482019290925291169062fdd58e90604401602060405180830381865afa158015613783573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137a791906158e4565b90508460000151602001516001600160a01b031663f242432a8585886020015189604001516040518563ffffffff1660e01b81526004016137eb9493929190615c7e565b600060405180830381600087803b15801561380557600080fd5b505af1158015613819573d6000803e3d6000fd5b5050865160209081015190880151604051627eeac760e11b81526001600160a01b03888116600483015260248201929092528594509116915062fdd58e90604401613412565b8460405163391102fb60e01b81526004016107289190615142565b509392505050565b600060036138936020840184614f83565b60078111156138a4576138a46150d4565b036138b157506001919050565b506060013590565b60038560078111156138cd576138cd6150d4565b03613907576040516340c10f1960e01b81526001600160a01b038481166004830152602482018490528516906340c10f1990604401612da8565b600485600781111561391b5761391b6150d4565b0361395c57604051630ab714fb60e11b81526001600160a01b038481166004830152602482018490526044820183905285169063156e29f690606401612da8565b6040805160a0810190915280606081018088600781111561397f5761397f6150d4565b8152602001876001600160a01b031681525081526020018381526020018281525060405163391102fb60e01b81526004016107289190615142565b6001600160a01b0383166000908152600760209081526040808320858452909152902081906139e98282615cb6565b50506001600160a01b0383166000908152600760209081526040808320858452909152902060040180546001600160a01b0319169055613a31610160820161014083016157d8565b6001600160a01b03841660009081526007602090815260408083208684529091528120600801805461ffff191660f09390931c929092179091555b613a7960a0830183615c12565b9050811015613b08576001600160a01b03841660009081526007602090815260408083208684529091529020600501613ab560a0840184615c12565b83818110613ac557613ac5615802565b835460018101855560009485526020909420606090910292909201926003029091019050613af38282615d59565b50508080613b0090615841565b915050613a6c565b5060005b613b1960c0830183615d98565b9050811015613ba8576001600160a01b03841660009081526007602090815260408083208684529091529020600601613b5560c0840184615d98565b83818110613b6557613b65615802565b835460018101855560009485526020909420604090910292909201926002029091019050613b938282615de1565b50508080613ba090615841565b915050613b0c565b5060005b613bb960e0830183615d98565b9050811015610902576001600160a01b038416600090815260076020818152604080842087855290915290912001613bf460e0840184615d98565b83818110613c0457613c04615802565b83546001810185556000948552602090942060409091029290920192919091019050613c308282615e09565b50508080613c3d90615841565b915050613bac565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060036001600160a01b03861660009081526006602052604090205460ff166007811115613cc857613cc86150d4565b03613d7a57604051634f558e7960e01b8152600481018590526001600160a01b03861690634f558e79906024015b602060405180830381865afa158015613d13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d379190615bf5565b613d755760405162461bcd60e51b815260206004820152600f60248201526e774e4654206e6f742065786973747360881b6044820152606401610728565b613e57565b60046001600160a01b03861660009081526006602052604090205460ff166007811115613da957613da96150d4565b03613ddb57604051634f558e7960e01b8152600481018590526001600160a01b03861690634f558e7990602401613cf6565b6040805160a0810182526001600160a01b03871660009081526006602052919091205481906060820190819060ff166007811115613e1b57613e1b6150d4565b8152602001886001600160a01b03168152508152602001858152602001600081525060405163391102fb60e01b81526004016107289190615142565b613e69600160f31b611cf68787611696565b1595945050505050565b3415613efd576040805160a08101909152613eb290859085908060608101806001815260006020918201819052918352820152346040909101526141fd565b826001600160a01b0385167ff3d1350815c4f9db2be36c35f840bfb002835a83ff1c3d8f3a217b1e6227d5aa600160008034604051613ef49493929190615818565b60405180910390a35b60005b81811015612e62576001838383818110613f1c57613f1c615802565b613f329260206080909202019081019150614f83565b6007811115613f4357613f436150d4565b146141eb576004546001600160a01b03161561405f576004546001600160a01b031663eb9ae17c848484818110613f7c57613f7c615802565b613f959260406080909202019081019150602001614fa0565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015613fd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ffd9190615bf5565b61405f5760405162461bcd60e51b815260206004820152602d60248201527f574c3a536f6d652061737365747320617265206e6f7420656e61626c6564206660448201526c1bdc8818dbdb1b185d195c985b609a1b6064820152608401610728565b61408a83838381811061407457614074615802565b9050608002018036038101906109e59190615793565b6140aa84848481811061409f5761409f615802565b905060800201613882565b146140f35760405162461bcd60e51b81526020600482015260196024820152780537573706963696f757320617373657420666f72207772617603c1b6044820152606401610728565b61410a85858585858181106113a2576113a2615802565b83856001600160a01b03167ff3d1350815c4f9db2be36c35f840bfb002835a83ff1c3d8f3a217b1e6227d5aa85858581811061414857614148615802565b61415e9260206080909202019081019150614f83565b600781111561416f5761416f6150d4565b86868681811061418157614181615802565b61419a9260406080909202019081019150602001614fa0565b8787878181106141ac576141ac615802565b905060800201604001358888888181106141c8576141c8615802565b905060800201606001356040516141e29493929190615818565b60405180910390a35b806141f581615841565b915050613f00565b60028151516007811115614213576142136150d4565b1480614232575060018151516007811115614230576142306150d4565b145b15614280576020810151156142805760405162461bcd60e51b8152602060048201526014602482015273546f6b656e4964206d757374206265207a65726f60601b6044820152606401610728565b60038151516007811115614296576142966150d4565b036142e3576040810151156142e35760405162461bcd60e51b8152602060048201526013602482015272416d6f756e74206d757374206265207a65726f60681b6044820152606401610728565b6001600160a01b03831660009081526007602090815260408083208584529091529020600301541580614329575060038151516007811115614327576143276150d4565b145b156143395761167f8383836148a1565b600061435c84848460000151600001518560000151602001518660200151611a07565b91505060008111806143d45750801580156143d4575081516020908101516001600160a01b03868116600090815260078452604080822088835290945292832060030180549190921692906143b3576143b3615802565b600091825260209091206003909102015461010090046001600160a01b0316145b15614441576040808301516001600160a01b03861660009081526007602090815283822087835290529190912060030180548390811061441657614416615802565b9060005260206000209060030201600201600082825461443691906157c5565b909155506109029050565b6109028484846148a1565b60008060018551516007811115614465576144656150d4565b036144da575060408085015190516001600160a01b0384168031926000928381818185875af1925050503d80600081146144bb576040519150601f19603f3d011682016040523d82523d6000602084013e6144c0565b606091505b5050905081846001600160a01b0316316132f09190615be2565b600285515160078111156144f0576144f06150d4565b0361467a57306001600160a01b038516036145c55760008560000151602001516001600160a01b03168487604001516040516024016145449291906001600160a01b03929092168252602082015260400190565b60408051601f198184030181529181526020820180516001600160e01b031663a9059cbb60e01b179052516145799190615e51565b6000604051808303816000865af19150503d80600081146145b6576040519150601f19603f3d011682016040523d82523d6000602084013e6145bb565b606091505b505090505061466e565b60008560000151602001516001600160a01b0316858588604001516040516024016145f293929190615c5a565b60408051601f198184030181529181526020820180516001600160e01b03166323b872dd60e01b179052516146279190615e51565b6000604051808303816000865af19150503d8060008114614664576040519150601f19603f3d011682016040523d82523d6000602084013e614669565b606091505b505050505b8460400151915061387a565b60038551516007811115614690576146906150d4565b036147475760008560000151602001516001600160a01b0316858588602001516040516024016146c293929190615c5a565b60408051601f198184030181529181526020820180516001600160e01b03166323b872dd60e01b179052516146f79190615e51565b6000604051808303816000865af19150503d8060008114614734576040519150601f19603f3d011682016040523d82523d6000602084013e614739565b606091505b50509050600192505061387a565b6004855151600781111561475d5761475d6150d4565b0361385f5760008560000151602001516001600160a01b03168585886020015189604001516040516024016147959493929190615c7e565b60408051601f198184030181529181526020820180516001600160e01b0316637921219560e11b179052516147ca9190615e51565b6000604051808303816000865af19150503d8060008114614807576040519150601f19603f3d011682016040523d82523d6000602084013e61480c565b606091505b50509050856040015192505061387a565b6040516001600160a01b03831660248201526044810182905261167f90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152614b3f565b610902846323b872dd60e01b85858560405160240161484993929190615c5a565b6002546001600160a01b0384166000908152600760209081526040808320868452909152902060030154106149185760405162461bcd60e51b815260206004820152601d60248201527f546f6f206d75636820746f6b656e7320696e20636f6c6c61746572616c0000006044820152606401610728565b60005b6001600160a01b0384166000908152600760209081526040808320868452909152902060060154811015614a95576001600160a01b0384166000908152600760209081526040808320868452909152902060060180548290811061498157614981615802565b600091825260209091206002909102015460f81b6001600160f81b031916600160f91b03614a83576001600160a01b03841660009081526007602090815260408083208684529091529020600301546149db9060016157c5565b6001600160a01b03851660009081526007602090815260408083208784529091529020600601805483908110614a1357614a13615802565b9060005260206000209060020201600101541015614a835760405162461bcd60e51b815260206004820152602760248201527f546f6f206d75636820636f6c6c61746572616c20736c6f747320666f722074686044820152661a5cc81dd3919560ca1b6064820152608401610728565b80614a8d81615841565b91505061491b565b506001600160a01b038316600090815260076020818152604080842086855282528320600390810180546001818101835591865292909420855180519390920201805486959194929385939092849260ff1916918490811115614afa57614afa6150d4565b021790555060209182015181546001600160a01b0390911661010002610100600160a81b03199091161790558201516001820155604090910151600290910155505050565b6000614b94826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614c149092919063ffffffff16565b9050805160001480614bb5575080806020019051810190614bb59190615bf5565b61167f5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610728565b60606106a1848460008585600080866001600160a01b03168587604051614c3b9190615e51565b60006040518083038185875af1925050503d8060008114614c78576040519150601f19603f3d011682016040523d82523d6000602084013e614c7d565b606091505b5091509150614c8e87838387614c99565b979650505050505050565b60608315614d08578251600003614d01576001600160a01b0385163b614d015760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610728565b50816106a1565b6106a18383815115614d1d5781518083602001fd5b8060405162461bcd60e51b81526004016107289190615328565b600060208284031215614d4957600080fd5b81356001600160e01b031981168114612d5f57600080fd5b6001600160a01b0381168114611c5457600080fd5b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715614dae57614dae614d76565b60405290565b604080519081016001600160401b0381118282101715614dae57614dae614d76565b604051601f8201601f191681016001600160401b0381118282101715614dfe57614dfe614d76565b604052919050565b60006001600160401b03821115614e1f57614e1f614d76565b50601f01601f191660200190565b600082601f830112614e3e57600080fd5b8135614e51614e4c82614e06565b614dd6565b818152846020838601011115614e6657600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215614e9957600080fd5b8435614ea481614d61565b93506020850135614eb481614d61565b92506040850135915060608501356001600160401b03811115614ed657600080fd5b614ee287828801614e2d565b91505092959194509250565b8015158114611c5457600080fd5b60008060408385031215614f0f57600080fd5b8235614f1a81614d61565b91506020830135614f2a81614eee565b809150509250929050565b60088110611c5457600080fd5b600080600060608486031215614f5757600080fd5b8335614f6281614f35565b92506020840135614f7281614d61565b929592945050506040919091013590565b600060208284031215614f9557600080fd5b8135612d5f81614f35565b600060208284031215614fb257600080fd5b8135612d5f81614d61565b60008060008060808587031215614fd357600080fd5b8435614fde81614f35565b93506020850135614fee81614d61565b925060408501359150606085013561500581614eee565b939692955090935050565b60008083601f84011261502257600080fd5b5081356001600160401b0381111561503957600080fd5b6020830191508360208260071b850101111561505457600080fd5b9250929050565b6000806000806060858703121561507157600080fd5b84356001600160401b038082111561508857600080fd5b90860190610160828903121561509d57600080fd5b909450602086013590808211156150b357600080fd5b506150c087828801615010565b909450925050604085013561500581614d61565b634e487b7160e01b600052602160045260246000fd5b6008811061510857634e487b7160e01b600052602160045260246000fd5b9052565b80516151198382516150ea565b6020908101516001600160a01b0316838201528101516040808401919091520151606090910152565b60808101610692828461510c565b6020810161069282846150ea565b6001600160f81b031981168114611c5457600080fd5b600080600080600060a0868803121561518c57600080fd5b853561519781614d61565b94506020860135935060408601356151ae81614d61565b925060608601356151be81614d61565b915060808601356151ce8161515e565b809150509295509295909350565b600080600080606085870312156151f257600080fd5b84356151fd81614d61565b93506020850135925060408501356001600160401b0381111561521f57600080fd5b61522b87828801615010565b95989497509550505050565b6000818303608081121561524a57600080fd5b615252614d8c565b9150604081121561526257600080fd5b5061526b614db4565b823561527681614f35565b8152602083013561528681614d61565b8060208301525080825250604082013560208201526060820135604082015292915050565b60008060a083850312156152be57600080fd5b6152c88484615237565b91506080830135614f2a81614d61565b600080604083850312156152eb57600080fd5b82356152f681614d61565b946020939093013593505050565b60005b8381101561531f578181015183820152602001615307565b50506000910152565b6020815260008251806020840152615347816040850160208701615304565b601f01601f19169190910160400192915050565b60006020828403121561536d57600080fd5b5035919050565b60006001600160401b0382111561538d5761538d614d76565b5060051b60200190565b600082601f8301126153a857600080fd5b813560206153b8614e4c83615374565b82815260059290921b840181019181810190868411156153d757600080fd5b8286015b848110156153f257803583529183019183016153db565b509695505050505050565b600080600080600060a0868803121561541557600080fd5b853561542081614d61565b9450602086013561543081614d61565b935060408601356001600160401b038082111561544c57600080fd5b61545889838a01615397565b9450606088013591508082111561546e57600080fd5b61547a89838a01615397565b9350608088013591508082111561549057600080fd5b5061549d88828901614e2d565b9150509295509295909350565b600081518084526020808501945080840160005b838110156154e4576154d187835161510c565b60809690960195908201906001016154be565b509495945050505050565b600081518084526020808501945080840160005b838110156154e457815180516001600160f81b031916885283810151848901526040908101516001600160a01b03169088015260609096019590820190600101615503565b600081518084526020808501945080840160005b838110156154e457815180516001600160f81b0319168852830151838801526040909601959082019060010161555c565b600081518084526020808501945080840160005b838110156154e457815180516001600160a01b0316885283015161ffff1683880152604090960195908201906001016155a1565b602081526155e760208201835161510c565b600060208301516101408060a08501526156056101608501836154aa565b9150604085015161562160c08601826001600160a01b03169052565b506060850151601f19808685030160e087015261563e84836154ef565b935060808701519150808685030161010087015261565c8483615548565b935060a0870151915080868503016101208701525061567b838261558d565b92505060c0850151615698828601826001600160f01b0319169052565b5090949350505050565b600080600080600060a086880312156156ba57600080fd5b85356156c581614d61565b94506020860135935060408601356156dc81614f35565b925060608601356156ec81614d61565b949793965091946080013592915050565b600080600080600060a0868803121561571557600080fd5b853561572081614d61565b9450602086013561573081614d61565b9350604086013592506060860135915060808601356001600160401b0381111561575957600080fd5b61549d88828901614e2d565b9384526001600160a01b0392909216602084015260408301526001600160f01b031916606082015260800190565b6000608082840312156157a557600080fd5b612d5f8383615237565b634e487b7160e01b600052601160045260246000fd5b80820180821115610692576106926157af565b6000602082840312156157ea57600080fd5b81356001600160f01b031981168114612d5f57600080fd5b634e487b7160e01b600052603260045260246000fd5b60ff9490941684526001600160a01b039290921660208401526040830152606082015260800190565b600060018201615853576158536157af565b5060010190565b60006020828403121561586c57600080fd5b81516001600160401b0381111561588257600080fd5b8201601f8101841361589357600080fd5b80516158a1614e4c82614e06565b8181528560208385010111156158b657600080fd5b61168d826020830160208601615304565b6000602082840312156158d957600080fd5b8151612d5f81614d61565b6000602082840312156158f657600080fd5b5051919050565b60006080828403121561590f57600080fd5b604051608081018181106001600160401b038211171561593157615931614d76565b604052825161593f81614eee565b8152602083015161594f81614eee565b6020820152604083015161596281614eee565b6040820152606083015161597581614d61565b60608201529392505050565b600060c0820160ff60f81b875460f81b1683526001808801546020818187015260018060a01b0391508160028b0154166040818189015260c060608901528591508a5480875260e0890192508b60005283600020965060005b81811015615a03578754868116855260a01c61ffff1685850152968601969282019286016159da565b5050506001600160a01b03891660808801529450615a219350505050565b6001600160a01b03831660a083015261168d565b600082601f830112615a4657600080fd5b81516020615a56614e4c83615374565b82815260059290921b84018101918181019086841115615a7557600080fd5b8286015b848110156153f2578051615a8c81614d61565b8352918301918301615a79565b60008060006060808587031215615aaf57600080fd5b84516001600160401b0380821115615ac657600080fd5b818701915087601f830112615ada57600080fd5b81516020615aea614e4c83615374565b82815260079290921b8401810191818101908b841115615b0957600080fd5b948201945b83861015615b8f57858c036080811215615b285760008081fd5b615b30614d8c565b604080831215615b405760008081fd5b615b48614db4565b92508851615b5581614f35565b835288860151615b6481614d61565b8387015291815287820151818601528888015191810191909152825260809095019490820190615b0e565b918a0151919850909450505080831115615ba857600080fd5b615bb488848901615a35565b94506040870151925080831115615bca57600080fd5b5050615bd886828701615a35565b9150509250925092565b81810381811115610692576106926157af565b600060208284031215615c0757600080fd5b8151612d5f81614eee565b6000808335601e19843603018112615c2957600080fd5b8301803591506001600160401b03821115615c4357600080fd5b602001915060608102360382131561505457600080fd5b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0394851681529290931660208301526040820152606081019190915260a06080820181905260009082015260c00190565b8135615cc181614f35565b60088110615cdf57634e487b7160e01b600052602160045260246000fd5b815460ff821691508160ff1982161783556020840135615cfe81614d61565b6001600160a81b03199190911690911760089190911b610100600160a81b031617815560408201356001820155606090910135600290910155565b80546001600160a01b0319166001600160a01b0392909216919091179055565b8135615d648161515e565b815460ff191660f882901c17825550602082013560018201556040820135615d8b81614d61565b61167f8160028401615d39565b6000808335601e19843603018112615daf57600080fd5b8301803591506001600160401b03821115615dc957600080fd5b6020019150600681901b360382131561505457600080fd5b8135615dec8161515e565b815460ff191660f882901c17825550602082013560018201555050565b8135615e1481614d61565b615e1e8183615d39565b50602082013561ffff81168114615e3457600080fd5b815461ffff60a01b191660a09190911b61ffff60a01b1617905550565b60008251615e63818460208701615304565b919091019291505056fea26469706673582212205bbbe48006978838774519626f9b9e088594c8e36646c1baf298630674358d7464736f6c634300081500330000000000000000000000009169d4a5fbb5e5f5815951090f5fb6b6b4d9b9c80000000000000000000000007472cfa2de7f2b6b7c94a7b97689b4e4c52fdd25000000000000000000000000303cd2a927d9cb6f5ce03b88a4e3e2528baedf40