0 txs
0 calls
constructor
No constructor.
functions
estimateDepositFeeWei
purefunction estimateDepositFeeWei() pure returns (uint256)
estimateEnrollmentFeeWei
purefunction estimateEnrollmentFeeWei() pure returns (uint256)
getMaxTotalBalance
viewfunction getMaxTotalBalance(address token) view returns (uint256)
getRemainingIntradayAllowance
viewfunction getRemainingIntradayAllowance(address token) view returns (uint256)
getStatus
viewfunction getStatus(address token) view returns (uint8)
identify
purefunction identify() pure returns (string)
isAppGovernor
viewfunction isAppGovernor(address account) view returns (bool)
isAppRoleAdmin
viewfunction isAppRoleAdmin(address account) view returns (bool)
isFrozen
viewfunction isFrozen() view returns (bool)
isGovernanceAdmin
viewfunction isGovernanceAdmin(address account) view returns (bool)
isOperator
viewfunction isOperator(address account) view returns (bool)
isSecurityAdmin
viewfunction isSecurityAdmin(address account) view returns (bool)
isSecurityAgent
viewfunction isSecurityAgent(address account) view returns (bool)
isServicingToken
viewfunction isServicingToken(address token) view returns (bool)
isTokenAdmin
viewfunction isTokenAdmin(address account) view returns (bool)
isUpgradeGovernor
viewfunction isUpgradeGovernor(address account) view returns (bool)
maxDeposit
purefunction maxDeposit() pure returns (uint256)
maxTotalBalance
viewfunction maxTotalBalance() view returns (uint256)
assignLegacyProxyGovernor
nonpayablefunction assignLegacyProxyGovernor(address account)
checkDeploymentStatus
nonpayablefunction checkDeploymentStatus(address token)
deactivate
nonpayablefunction deactivate(address token)
deposit
payablefunction deposit(address token, uint256 amount, uint256 l2Recipient) payable
deposit
payablefunction deposit(uint256 amount, uint256 l2Recipient) payable
depositCancelRequest
nonpayablefunction depositCancelRequest(address token, uint256 amount, uint256 l2Recipient, uint256 nonce)
depositReclaim
nonpayablefunction depositReclaim(address token, uint256 amount, uint256 l2Recipient, uint256 nonce)
depositWithMessage
payablefunction depositWithMessage(address token, uint256 amount, uint256 l2Recipient, uint256[] message) payable
depositWithMessageCancelRequest
nonpayablefunction depositWithMessageCancelRequest(address token, uint256 amount, uint256 l2Recipient, uint256[] message, uint256 nonce)
depositWithMessageReclaim
nonpayablefunction depositWithMessageReclaim(address token, uint256 amount, uint256 l2Recipient, uint256[] message, uint256 nonce)
disableWithdrawalLimit
nonpayablefunction disableWithdrawalLimit(address token)
enableWithdrawalLimit
nonpayablefunction enableWithdrawalLimit(address token)
enrollToken
payablefunction enrollToken(address) payable
initialize
nonpayablefunction initialize(bytes data)
legacyDepositCancelRequest
nonpayablefunction legacyDepositCancelRequest(uint256 amount, uint256 l2Recipient, uint256 nonce)
legacyDepositReclaim
nonpayablefunction legacyDepositReclaim(uint256 amount, uint256 l2Recipient, uint256 nonce)
registerAppGovernor
nonpayablefunction registerAppGovernor(address account)
registerAppRoleAdmin
nonpayablefunction registerAppRoleAdmin(address account)
registerGovernanceAdmin
nonpayablefunction registerGovernanceAdmin(address account)
registerOperator
nonpayablefunction registerOperator(address account)
registerSecurityAdmin
nonpayablefunction registerSecurityAdmin(address account)
registerSecurityAgent
nonpayablefunction registerSecurityAgent(address account)
registerTokenAdmin
nonpayablefunction registerTokenAdmin(address account)
registerUpgradeGovernor
nonpayablefunction registerUpgradeGovernor(address account)
removeLegacyProxyGovernor
nonpayablefunction removeLegacyProxyGovernor(address account)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
revokeAppGovernor
nonpayablefunction revokeAppGovernor(address account)
revokeAppRoleAdmin
nonpayablefunction revokeAppRoleAdmin(address account)
revokeGovernanceAdmin
nonpayablefunction revokeGovernanceAdmin(address account)
revokeOperator
nonpayablefunction revokeOperator(address account)
revokeSecurityAdmin
nonpayablefunction revokeSecurityAdmin(address account)
revokeSecurityAgent
nonpayablefunction revokeSecurityAgent(address account)
revokeTokenAdmin
nonpayablefunction revokeTokenAdmin(address account)
revokeUpgradeGovernor
nonpayablefunction revokeUpgradeGovernor(address account)
setL2TokenBridge
nonpayablefunction setL2TokenBridge(uint256 l2TokenBridge_)
setMaxTotalBalance
nonpayablefunction setMaxTotalBalance(address token, uint256 maxTotalBalance_)
withdraw
nonpayablefunction withdraw(address token, uint256 amount, address recipient)
withdraw
nonpayablefunction withdraw(address token, uint256 amount)
withdraw
nonpayablefunction withdraw(uint256 amount, address recipient)
withdraw
nonpayablefunction withdraw(uint256 amount)
events
Deposit
event Deposit(address indexed sender, address indexed token, uint256 amount, uint256 indexed l2Recipient, uint256 nonce, uint256 fee)
DepositCancelRequest
event DepositCancelRequest(address indexed sender, address indexed token, uint256 amount, uint256 indexed l2Recipient, uint256 nonce)
DepositReclaimed
event DepositReclaimed(address indexed sender, address indexed token, uint256 amount, uint256 indexed l2Recipient, uint256 nonce)
DepositWithMessage
event DepositWithMessage(address indexed sender, address indexed token, uint256 amount, uint256 indexed l2Recipient, uint256[] message, uint256 nonce, uint256 fee)
DepositWithMessageCancelRequest
event DepositWithMessageCancelRequest(address indexed sender, address indexed token, uint256 amount, uint256 indexed l2Recipient, uint256[] message, uint256 nonce)
DepositWithMessageReclaimed
event DepositWithMessageReclaimed(address indexed sender, address indexed token, uint256 amount, uint256 indexed l2Recipient, uint256[] message, uint256 nonce)
LogDeposit
event LogDeposit(address indexed sender, uint256 amount, uint256 indexed l2Recipient, uint256 nonce, uint256 fee)
LogDepositCancelRequest
event LogDepositCancelRequest(address indexed sender, uint256 amount, uint256 indexed l2Recipient, uint256 nonce)
LogDepositReclaimed
event LogDepositReclaimed(address indexed sender, uint256 amount, uint256 indexed l2Recipient, uint256 nonce)
LogNewGovernorAccepted
event LogNewGovernorAccepted(address acceptedGovernor)
LogRemovedGovernor
event LogRemovedGovernor(address removedGovernor)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
SetL2TokenBridge
event SetL2TokenBridge(uint256 value)
SetMaxTotalBalance
event SetMaxTotalBalance(address indexed token, uint256 value)
TokenDeactivated
event TokenDeactivated(address token)
TokenEnrollmentInitiated
event TokenEnrollmentInitiated(address token, bytes32 deploymentMsgHash)
Withdrawal
event Withdrawal(address indexed recipient, address indexed token, uint256 amount)
WithdrawalLimitDisabled
event WithdrawalLimitDisabled(address indexed sender, address indexed token)
WithdrawalLimitEnabled
event WithdrawalLimitEnabled(address indexed sender, address indexed token)
errors
No errors.
creation bytecode
0x60e060405246600114620000155760016200001c565b64e8d4a510005b64ffffffffff1660805234801562000032575f80fd5b503060a052600160c0819052620000486200004f565b50620004ff565b336200005c81806200005f565b50565b62000069620001be565b1562000101576001600160a01b0382165f9081527fa5fdb349cc4ffac7e8ce7d3b075149d1bc847367d814e69a9beca89ef02db8b0602052604090205460ff16620000fb5760405162461bcd60e51b815260206004820152601960248201527f524f4c45535f414c52454144595f494e495449414c495a45440000000000000060448201526064015b60405180910390fd5b6200010c565b6200010c826200020f565b6200011662000352565b15620001b3576001600160a01b0381165f9081527f2c11a1f9c63817dbb9f0faa966615764d2db5d6e008269e948a99e0b52181c23602052604090205460ff16620001af5760405162461bcd60e51b815260206004820152602260248201527f53454355524954595f524f4c45535f414c52454144595f494e495449414c495a604482015261115160f21b6064820152608401620000f2565b5050565b620001af81620003a1565b5f805160206200522c8339815191525f9081525f805160206200526c8339815191526020527fa5fdb349cc4ffac7e8ce7d3b075149d1bc847367d814e69a9beca89ef02db8b15481905b1415905090565b620002295f805160206200522c833981519152826200040a565b620002627ed2ead78c620e94b02d0a996e99298c59ddccfa1d8a0149080ac3a20de060685f805160206200528c833981519152620004a8565b6200028a5f805160206200528c8339815191525f805160206200522c833981519152620004a8565b620002a45f805160206200522c83398151915280620004a8565b620002de7f023edb77f7c8cc9e38e8afe78954f703aeeda7fffe014eeb6e56ea84e62f6da75f805160206200528c833981519152620004a8565b620003187f0128d63adbf6b09002c26caf55c47e2f26635807e3ef1b027218aa74c8d61a3e5f805160206200528c833981519152620004a8565b6200005c7f0251e864ca2a080f55bce5da2452e8cfcafdbc951a3e7fff5023d558452ec2285f805160206200522c833981519152620004a8565b5f805160206200524c8339815191525f9081525f805160206200526c8339815191526020527f2c11a1f9c63817dbb9f0faa966615764d2db5d6e008269e948a99e0b52181c2454819062000208565b620003bb5f805160206200524c83398151915280620004a8565b620003f57f037693ba312785932d430dccf0f56ffedd0aa7c0f8b6da2cc4530c2717689b965f805160206200524c833981519152620004a8565b6200005c5f805160206200524c833981519152825b5f8281525f805160206200526c833981519152602090815260408083206001600160a01b038516845290915290205460ff16620001af575f8281525f805160206200526c833981519152602090815260408083206001600160a01b0385168085529252808320805460ff1916600117905551339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b5f8281525f805160206200526c8339815191526020526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b60805160a05160c051614d026200052a5f395f610ef601525f6110b101525f6133c50152614d025ff3fe608060405260043610610370575f3560e01c80636ffed68b116101c8578063cb1cccce116100fd578063deec9c5a1161009d578063eeb728661161006d578063eeb72866146109ea578063f3fef3a314610a0b578063fa0f73ba14610a2a578063fad8b32a14610a49575f80fd5b8063deec9c5a1461097a578063e2bbb15814610999578063ed9ef16a146109ac578063ee0e6807146109cb575f80fd5b8063d08fb6cb116100d8578063d08fb6cb146108fe578063d12fc1821461091d578063d2b51eea1461093c578063d9fa70911461095b575f80fd5b8063cb1cccce146108a1578063cdd1f70d146108c0578063cf50fd1c146108df575f80fd5b8063a2bdde3d11610168578063af8bc15e11610143578063af8bc15e1461083c578063b5cd0c3c14610850578063be58b18e1461086f578063c1f5eb3a14610882575f80fd5b8063a2bdde3d146107eb578063a6d1d6c61461080a578063ad8b92b414610829575f80fd5b80637fc2ab3e116101a35780637fc2ab3e1461076f5780638101b64c1461078e5780638e5224ff146107ad5780639463629a146107cc575f80fd5b80636ffed68b14610712578063757bd9ab146107315780637d22dbc714610750575f80fd5b806336568abe116102a95780635a5d1bb91161024957806369328dec1161021957806369328dec146106965780636c04d9d5146106b55780636d70f7ae146106d45780636fc97cbf146106f3575f80fd5b80635a5d1bb9146106265780635a72af89146106455780636083e59a1461066457806362a1437614610677575f80fd5b8063439fab9111610284578063439fab91146105b5578063496ae54c146105d45780634baf43da146105f35780634d8b92a514610612575f80fd5b806336568abe146105585780633682a450146105775780633ea053eb14610596575f80fd5b806319534075116103145780632e1a7d4d116102ef5780632e1a7d4d146104b85780632f951985146104d757806330ccebb5146104f657806333eeb14714610546575f80fd5b8063195340751461045857806323205c521461047a578063284b920e14610499575f80fd5b80630e770f231161034f5780630e770f23146103e85780630efe6a8b1461040757806314af98b31461041a5780631789638314610439575f80fd5b8062f714ce146103745780630b3a2d21146103955780630c6f8664146103b4575b5f80fd5b34801561037f575f80fd5b5061039361038e366004614135565b610a68565b005b3480156103a0575f80fd5b506103936103af366004614163565b610a7e565b3480156103bf575f80fd5b506103d36103ce366004614163565b610a98565b60405190151581526020015b60405180910390f35b3480156103f3575f80fd5b50610393610402366004614163565b610af7565b61039361041536600461417e565b610b0e565b348015610425575f80fd5b50610393610434366004614163565b610bc6565b348015610444575f80fd5b50610393610453366004614163565b610c6c565b348015610463575f80fd5b5061046c610c83565b6040519081526020016103df565b348015610485575f80fd5b506103936104943660046141b0565b610c94565b3480156104a4575f80fd5b506103936104b3366004614163565b610d86565b3480156104c3575f80fd5b506103936104d23660046141e8565b610e8b565b3480156104e2575f80fd5b506103936104f1366004614163565b610e9d565b348015610501575f80fd5b50610539610510366004614163565b6001600160a01b03165f9081525f80516020614c44833981519152602052604090205460ff1690565b6040516103df9190614213565b348015610551575f80fd5b505f6103d3565b348015610563575f80fd5b50610393610572366004614135565b610edd565b348015610582575f80fd5b50610393610591366004614163565b610f6e565b3480156105a1575f80fd5b506103936105b0366004614163565b610f85565b3480156105c0575f80fd5b506103936105cf366004614239565b6110ae565b3480156105df575f80fd5b5061046c6105ee366004614163565b61125a565b3480156105fe575f80fd5b5061046c61060d366004614163565b61129e565b34801561061d575f80fd5b5061046c6112da565b348015610631575f80fd5b506103d3610640366004614163565b6112e3565b348015610650575f80fd5b5061039361065f366004614163565b6112fb565b34801561066f575f80fd5b505f1961046c565b348015610682575f80fd5b50610393610691366004614163565b61139e565b3480156106a1575f80fd5b506103936106b03660046142a5565b6113b5565b3480156106c0575f80fd5b506103d36106cf366004614163565b6114a0565b3480156106df575f80fd5b506103d36106ee366004614163565b6114b8565b3480156106fe575f80fd5b5061039361070d366004614163565b6114d0565b34801561071d575f80fd5b5061039361072c3660046142e4565b6114e7565b34801561073c575f80fd5b506103d361074b366004614163565b611635565b34801561075b575f80fd5b5061039361076a3660046142e4565b61164d565b34801561077a575f80fd5b506103936107893660046141e8565b6117a3565b348015610799575f80fd5b506103936107a8366004614163565b6118c8565b3480156107b8575f80fd5b506103d36107c7366004614163565b611908565b3480156107d7575f80fd5b506103936107e6366004614163565b611920565b3480156107f6575f80fd5b506103d3610805366004614163565b611937565b348015610815575f80fd5b506103936108243660046141b0565b61194f565b610393610837366004614163565b611a2c565b348015610847575f80fd5b5061046c611a62565b34801561085b575f80fd5b5061039361086a366004614355565b611a6b565b61039361087d3660046143c2565b611b9d565b34801561088d575f80fd5b5061039361089c366004614163565b611caa565b3480156108ac575f80fd5b506103d36108bb366004614163565b611da4565b3480156108cb575f80fd5b506103936108da366004614163565b611dbc565b3480156108ea575f80fd5b506103936108f9366004614355565b611dd3565b348015610909575f80fd5b506103d3610918366004614163565b611eea565b348015610928575f80fd5b50610393610937366004614163565b611f02565b348015610947575f80fd5b50610393610956366004614427565b612117565b348015610966575f80fd5b50610393610975366004614163565b61221d565b348015610985575f80fd5b50610393610994366004614163565b612234565b6103936109a7366004614451565b61224b565b3480156109b7575f80fd5b506103936109c6366004614163565b6122f9565b3480156109d6575f80fd5b506103936109e5366004614163565b612310565b3480156109f5575f80fd5b506109fe612350565b6040516103df9190614493565b348015610a16575f80fd5b50610393610a25366004614427565b612370565b348015610a35575f80fd5b50610393610a44366004614163565b61237b565b348015610a54575f80fd5b50610393610a63366004614163565b612392565b610a7a610a736123a9565b83836113b5565b5050565b610a955f80516020614cad833981519152826123cb565b50565b6001600160a01b0381165f9081525f80516020614c44833981519152602052604081205460ff166001816003811115610ad357610ad36141ff565b1480610af057506002816003811115610aee57610aee6141ff565b145b9392505050565b610a955f80516020614b6a833981519152826123cb565b82610b1881610a98565b610b5e5760405162461bcd60e51b81526020600482015260126024820152711513d2d15397d393d517d4d154959250d15160721b60448201526064015b60405180910390fd5b604080515f8082526020820190925290610b7886866123ec565b90505f610b96878787865f80516020614c24833981519152876124cc565b9050610bb4878787865f80516020614c24833981519152868861264e565b610bbd87611f02565b50505050505050565b610bcf33611635565b610c115760405162461bcd60e51b815260206004820152601360248201527213d3931657d4d150d55492551657d051d15395606a1b6044820152606401610b55565b6001600160a01b0381165f8181525f80516020614c448339815191526020526040808220600401805460ff191660011790555133917fe2deca319add01142d26def2de47e64bf1fdc70e6f90c13a1862a48bdaaa7cfd91a350565b610a955f80516020614b8a833981519152826123cb565b5f610c8f61060d6123a9565b905090565b610c9c612761565b6001600160a01b0316636170ff1b610cb2612783565b5f80516020614c24833981519152610ccb8888886127a5565b856040518563ffffffff1660e01b8152600401610ceb9493929190614512565b6020604051808303815f875af1158015610d07573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d2b9190614541565b50610d378484336127ce565b604080518481526020810183905283916001600160a01b0387169133917f50485fb0face2cfd73784044ab4191986b4a6713f01854414e2331a6bb41837d91015b60405180910390a450505050565b610d9d5f80516020614a39833981519152336127d9565b610de15760405162461bcd60e51b8152602060048201526015602482015274474f5645524e414e43455f41444d494e5f4f4e4c5960581b6044820152606401610b55565b6001600160a01b0381165f8181527f45f38e273862f8834bd2fe7a449988f63de55a7a5b685dea46ccedeb69cf0e266020818152604092839020805460ff191660011790557f45f38e273862f8834bd2fe7a449988f63de55a7a5b685dea46ccedeb69cf0e2780546001600160a01b03191690559151928352917fcfb473e6c03f9a29ddaf990e736fa3de5188a0bd85d684f5b6e164ebfbfff5d291015b60405180910390a15050565b610a95610e966123a9565b82336113b5565b80336001600160a01b03821603610ec65760405162461bcd60e51b8152600401610b5590614558565b610a7a5f80516020614b8a8339815191528361280f565b5f80516020614a3983398151915282148015610f1757507f0000000000000000000000000000000000000000000000000000000000000000155b15610f645760405162461bcd60e51b815260206004820181905260248201527f43414e4e4f545f52454e4f554e43455f474f5645524e414e43455f41444d494e6044820152606401610b55565b610a7a828261282b565b610a955f80516020614c64833981519152826123cb565b33610f8e6128a5565b6001600160a01b031614610fd35760405162461bcd60e51b815260206004820152600c60248201526b27a7262cafa6a0a720a3a2a960a11b6044820152606401610b55565b6001600160a01b0381165f9081525f80516020614c44833981519152602052604081205460ff16600381111561100b5761100b6141ff565b036110485760405162461bcd60e51b815260206004820152600d60248201526c2aa725a727aba72faa27a5a2a760991b6044820152606401610b55565b6001600160a01b0381165f8181525f80516020614c448339815191526020908152604091829020805460ff1916600317905590519182527f86d6e4556eae726303caf49a75add7d92ac713e46db458dab0622aa263fb48e691015b60405180910390a150565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03160361111f5760405162461bcd60e51b81526020600482015260166024820152751112549150d517d0d0531317d11254d0531313d5d15160521b6044820152606401610b55565b5f61112b81602061459c565b90505f6111398260206145b3565b9050808310156111815760405162461bcd60e51b81526020600482015260136024820152721253925517d110551057d513d3d7d4d3505313606a1b6044820152606401610b55565b5f61118e828486886145c6565b81019061119b9190614163565b9050365f6111ab8582888a6145c6565b91509150365f6111bd8887818c6145c6565b90925090506001600160a01b038516156111e7576111dc8583836128c7565b505050505050505050565b6111ef612a05565b1561123e5780156112395760405162461bcd60e51b8152602060048201526014602482015273554e45585045435445445f494e49545f4441544160601b6044820152606401610b55565b6111dc565b6112488282612a1f565b6112528282612b36565b6111dc612b64565b6001600160a01b0381165f9081525f80516020614c44833981519152602052604081206004015460ff1661128f575f19611298565b61129882612b6f565b92915050565b6001600160a01b0381165f9081525f80516020614c44833981519152602052604081206003015480156112d15780610af0565b5f199392505050565b5f610c8f612b8f565b5f6112985f80516020614aa0833981519152836127d9565b61130433611eea565b6113465760405162461bcd60e51b815260206004820152601360248201527227a7262cafa9a2a1aaa924aa2cafa0a226a4a760691b6044820152606401610b55565b6001600160a01b0381165f8181525f80516020614c448339815191526020526040808220600401805460ff191690555133917f109dee66091b7a145f557f52c55d7beccb6a29011fc705557e2975749474076b91a350565b610a955f80516020614a59833981519152826123cb565b6001600160a01b0381166113ff5760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b6044820152606401610b55565b61140a838383612ba2565b6001600160a01b0383165f9081525f80516020614c44833981519152602052604090206004015460ff1615611443576114438383612f1a565b61144e8383836127ce565b826001600160a01b0316816001600160a01b03167f2717ead6b9200dd235aad468c9809ea400fe33ac69b5bfaa6d3e90fc922b63988460405161149391815260200190565b60405180910390a3505050565b5f6112985f80516020614ac0833981519152836127d9565b5f6112985f80516020614c64833981519152836127d9565b610a955f80516020614ac0833981519152826123cb565b80336114f1612f89565b5f83815260209190915260409020546001600160a01b0316146115475760405162461bcd60e51b815260206004820152600e60248201526d27a7262cafa222a827a9a4aa27a960911b6044820152606401610b55565b61154f612761565b6001600160a01b0316637a98660b611565612783565b7f02d757788a8d8d6f21d1cd40bce38a8222d70654214e96ff95d8086e684fbee56115908888612fab565b866040518563ffffffff1660e01b81526004016115b09493929190614512565b6020604051808303815f875af11580156115cc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115f09190614541565b506040805185815260208101849052849133917fea57f52faafe318751f75acb6756cff3f66afc10201ef8f2d504e788985db3f591015b60405180910390a350505050565b5f6112985f80516020614b6a833981519152836127d9565b8033611657612f89565b5f83815260209190915260409020546001600160a01b0316146116ad5760405162461bcd60e51b815260206004820152600e60248201526d27a7262cafa222a827a9a4aa27a960911b6044820152606401610b55565b6116b5612761565b6001600160a01b0316636170ff1b6116cb612783565b7f02d757788a8d8d6f21d1cd40bce38a8222d70654214e96ff95d8086e684fbee56116f68888612fab565b866040518563ffffffff1660e01b81526004016117169493929190614512565b6020604051808303815f875af1158015611732573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117569190614541565b506117696117626123a9565b85336127ce565b6040805185815260208101849052849133917fb0b548d5e12b6a60adac4d6dd7610f55134cea4fd145535edc303a48063e0cb49101611627565b6117ac336112e3565b6117ec5760405162461bcd60e51b815260206004820152601160248201527027a7262cafa0a8282fa3a7ab22a92727a960791b6044820152606401610b55565b6117f4612a05565b6118405760405162461bcd60e51b815260206004820152601860248201527f434f4e54524143545f4e4f545f494e495449414c495a454400000000000000006044820152606401610b55565b61184981613051565b61188f5760405162461bcd60e51b81526020600482015260176024820152764c325f414444524553535f4f55545f4f465f52414e474560481b6044820152606401610b55565b61189881613073565b6040518181527f90fc3f39f8e4669d1bf5f9038707949f8af42a973f62988143be0fa7c3997f18906020016110a3565b80336001600160a01b038216036118f15760405162461bcd60e51b8152600401610b5590614558565b610a7a5f80516020614a598339815191528361280f565b5f6112985f80516020614b8a833981519152836127d9565b610a955f80516020614a39833981519152826123cb565b5f6112985f80516020614cad833981519152836127d9565b611957612761565b6001600160a01b0316637a98660b61196d612783565b5f80516020614c248339815191526119868888886127a5565b856040518563ffffffff1660e01b81526004016119a69493929190614512565b6020604051808303815f875af11580156119c2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119e69190614541565b50604080518481526020810183905283916001600160a01b0387169133917f8f3da3ce93acd45e015b069c8f032d37be93dc9efcaaeda368aa9ca74f64c30a9101610d78565b60405162461bcd60e51b815260206004820152600b60248201526a155394d5541413d495115160aa1b6044820152606401610b55565b5f610c8f613095565b611a73612761565b6001600160a01b0316636170ff1b611a89612783565b5f80516020614b4a833981519152611ad78a8a8a60018b8b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506130a792505050565b856040518563ffffffff1660e01b8152600401611af79493929190614512565b6020604051808303815f875af1158015611b13573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b379190614541565b50611b438686336127ce565b83866001600160a01b0316336001600160a01b03167fa465a02eedf06ceffd1d99159ad98c5d8fa7f17b870eb22e0bfcec06398a8f7388878787604051611b8d94939291906145ed565b60405180910390a4505050505050565b84611ba781610a98565b611be85760405162461bcd60e51b81526020600482015260126024820152711513d2d15397d393d517d4d154959250d15160721b6044820152606401610b55565b5f611bf387876123ec565b90505f611c458888888888808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152505f80516020614b4a83398151915292508991506124cc9050565b9050611c978888888888808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152505f80516020614b4a833981519152925088915089905061264e565b611ca088611f02565b5050505050505050565b611cc15f80516020614a39833981519152336127d9565b611d055760405162461bcd60e51b8152602060048201526015602482015274474f5645524e414e43455f41444d494e5f4f4e4c5960581b6044820152606401610b55565b6001600160a01b0381165f8181527f45f38e273862f8834bd2fe7a449988f63de55a7a5b685dea46ccedeb69cf0e266020818152604092839020805460ff191690557f45f38e273862f8834bd2fe7a449988f63de55a7a5b685dea46ccedeb69cf0e2780546001600160a01b03191690559151928352917fd75f94825e770b8b512be8e74759e252ad00e102e38f50cce2f7c6f868a295999101610e7f565b5f6112985f80516020614a39833981519152836127d9565b610a955f80516020614aa0833981519152826123cb565b611ddb612761565b6001600160a01b0316637a98660b611df1612783565b5f80516020614b4a833981519152611e3f8a8a8a60018b8b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506130a792505050565b856040518563ffffffff1660e01b8152600401611e5f9493929190614512565b6020604051808303815f875af1158015611e7b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e9f9190614541565b5083866001600160a01b0316336001600160a01b03167f889e470f207032611b2f68dbd2124e3139794f19a6b536c83892fd505760386088878787604051611b8d94939291906145ed565b5f6112985f80516020614a59833981519152836127d9565b6001600160a01b0381165f9081525f80516020614c448339815191526020526040902054819060019060ff166003811115611f3f57611f3f6141ff565b14611f48575050565b6001600160a01b0382165f9081525f80516020614c44833981519152602052604090206001810154611f78612761565b6001600160a01b03166377c7d7a9826040518263ffffffff1660e01b8152600401611fa591815260200190565b602060405180830381865afa158015611fc0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fe49190614541565b5f03611ffa57815460ff19166002178255612111565b8160020154421115612111576001600160a01b0384165f9081525f80516020614c4483398151915260205260408120805460ff19908116825560018201839055600282018390556003820183905560049091018054909116905561205c6128a5565b6001600160a01b0316635ab1bd536040518163ffffffff1660e01b8152600401602060405180830381865afa158015612097573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120bb9190614631565b604051630caca05160e31b81526001600160a01b038781166004830152919250908216906365650288906024015f604051808303815f87803b1580156120ff575f80fd5b505af11580156111dc573d5f803e3d5ffd5b50505050565b612120336112e3565b6121605760405162461bcd60e51b815260206004820152601160248201527027a7262cafa0a8282fa3a7ab22a92727a960791b6044820152606401610b55565b805f036121af5760405162461bcd60e51b815260206004820152601960248201527f494e56414c49445f4d41585f544f54414c5f42414c414e4345000000000000006044820152606401610b55565b816001600160a01b03167fb895637c7d86c9b7b5b747e72195206a3fc21d8df0e019edd2312454ffa733b1826040516121ea91815260200190565b60405180910390a26001600160a01b03919091165f9081525f80516020614c448339815191526020526040902060030155565b610a955f80516020614b6a8339815191528261280f565b610a955f80516020614aa08339815191528261280f565b604080515f80825260208201909252906122636123a9565b90505f61227082866123ec565b90505f61228e838787875f80516020614c24833981519152876124cc565b90506122ac838787875f80516020614c24833981519152868861264e565b6040805187815260208101839052908101839052859033907f5b5dbc6c64043a15d3fe6943a6e443a826b78755edc257b2ec890c022225dbcf9060600160405180910390a3505050505050565b610a955f80516020614ac08339815191528261280f565b80336001600160a01b038216036123395760405162461bcd60e51b8152600401610b5590614558565b610a7a5f80516020614a398339815191528361280f565b6060604051806060016040528060238152602001614b0060239139905090565b610a7a8282336113b5565b610a955f80516020614cad8339815191528261280f565b610a955f80516020614c648339815191528261280f565b5f610c8f604051806060016040528060298152602001614c84602991396132f2565b6123d482613325565b6123dd81613345565b6123e7838361334f565b505050565b5f6123f6346133c3565b6040516370a0823160e01b81523060048201525f906001600160a01b038516906370a0823190602401602060405180830381865afa15801561243a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061245e9190614541565b90506124698461129e565b61247384836145b3565b11156124b85760405162461bcd60e51b815260206004820152601460248201527313505617d09053105390d157d15610d15151115160621b6044820152606401610b55565b6124c3843385613478565b50349392505050565b5f6124d5612783565b5f036125175760405162461bcd60e51b8152602060048201526011602482015270130c97d094925111d157d393d517d4d155607a1b6044820152606401610b55565b5f86116125555760405162461bcd60e51b815260206004820152600c60248201526b16915493d7d1115413d4d25560a21b6044820152606401610b55565b61255e85613051565b6125a45760405162461bcd60e51b81526020600482015260176024820152764c325f414444524553535f4f55545f4f465f52414e474560481b6044820152606401610b55565b5f80516020614b4a83398151915283145f6125bd612761565b6001600160a01b0316633e3aa6c5856125d4612783565b886125e28e8e8e8a8f6130a7565b6040518563ffffffff1660e01b81526004016126009392919061464c565b604080518083038185885af115801561261b573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612640919061466a565b9a9950505050505050505050565b5f80516020614c2483398151915283036126b757604080518781526020810184905290810182905285906001600160a01b0389169033907f5f971bd00bf3ffbca8a6d72cdd4fd92cfd4f62636161921d1e5a64f0b64ccb6d9060600160405180910390a4610bbd565b5f80516020614b4a83398151915283146127065760405162461bcd60e51b815260206004820152601060248201526f2aa725a727aba72fa9a2a622a1aa27a960811b6044820152606401610b55565b84876001600160a01b0316336001600160a01b03167f2203a49c69f1a46c1164f5e4a30643dd77b7c59c0ff9bc433256048365c247f189888787604051612750949392919061468c565b60405180910390a450505050505050565b5f610c8f604051806060016040528060288152602001614a11602891396132f2565b5f610c8f604051806060016040528060278152602001614b23602791396132f2565b604080515f80825260208201909252606091506127c58585855f856130a7565b95945050505050565b6123e7838284613666565b5f9182525f80516020614ae0833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b61281882613325565b61282181613345565b6123e7838361379d565b6001600160a01b038116331461289b5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610b55565b610a7a828261379d565b5f610c8f604051806060016040528060268152602001614baa602691396132f2565b6001600160a01b0383163b6129135760405162461bcd60e51b8152602060048201526012602482015271115250d7d393d517d057d0d3d395149050d560721b6044820152606401610b55565b5f80846001600160a01b031663439fab9160e01b858560405160240161293a9291906146b7565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161297891906146e5565b5f60405180830381855af49150503d805f81146129b0576040519150601f19603f3d011682016040523d82523d5f602084013e6129b5565b606091505b50915091508181906129da5760405162461bcd60e51b8152600401610b559190614493565b5080518190156129fd5760405162461bcd60e51b8152600401610b559190614493565b505050505050565b5f80612a0f612761565b6001600160a01b03161415905090565b60408114612a635760405162461bcd60e51b8152602060048201526011602482015270494c4c4547414c5f444154415f53495a4560781b6044820152606401610b55565b5f80612a7183850185614700565b91509150612a88816001600160a01b03163b151590565b612adf5760405162461bcd60e51b815260206004820152602260248201527f494e56414c49445f4d4553534147494e475f434f4e54524143545f4144445245604482015261535360f01b6064820152608401610b55565b6001600160a01b0382163b6121115760405162461bcd60e51b815260206004820181905260248201527f494e56414c49445f4d414e414745525f434f4e54524143545f414444524553536044820152606401610b55565b5f80612b4483850185614700565b91509150612b518161380f565b612b5a82613831565b6121116005613853565b33610a958180613875565b5f612b7982613977565b612b8657611298826139a2565b61129882613a51565b5f610c8f64012a05f200620186a061459c565b612baa612783565b5f03612bec5760405162461bcd60e51b8152602060048201526011602482015270130c97d094925111d157d393d517d4d155607a1b6044820152606401610b55565b6001600160a01b0381165f6001612c056080600261480c565b612c0f9190614817565b60408051600580825260c082019092529186169250608086901c915f916020820160a0803683370190505090505f815f81518110612c4f57612c4f61482a565b6020026020010181815250508381600181518110612c6f57612c6f61482a565b602002602001018181525050866001600160a01b031681600281518110612c9857612c9861482a565b6020026020010181815250508281600381518110612cb857612cb861482a565b6020026020010181815250508181600481518110612cd857612cd861482a565b602002602001018181525050612cec612761565b6001600160a01b0316632c9dd5c0612d02612783565b836040518363ffffffff1660e01b8152600401612d2092919061483e565b6020604051808303815f875af1925050508015612d5a575060408051601f3d908101601f19168201909252612d5791810190614541565b60015b611ca057612d66614856565b806308c379a003612f105750612d7a6148a8565b80612d855750612f12565b60408051600480825260a0820190925290602082016080803683370190505091505f825f81518110612db957612db961482a565b6020026020010181815250508482600181518110612dd957612dd961482a565b6020026020010181815250508382600281518110612df957612df961482a565b6020026020010181815250508282600381518110612e1957612e1961482a565b602002602001018181525050612e2d612761565b6001600160a01b0316632c9dd5c0612e43612783565b846040518363ffffffff1660e01b8152600401612e6192919061483e565b6020604051808303815f875af1158015612e7d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ea19190614541565b50876001600160a01b0316612eb46123a9565b6001600160a01b031614612f0a5760405162461bcd60e51b815260206004820152601860248201527f4e4f545f4c45474143595f425249444745445f544f4b454e00000000000000006044820152606401610b55565b50610bbd565b505b3d5f803e3d5ffd5b5f612f2483612b6f565b905081811015612f765760405162461bcd60e51b815260206004820152601d60248201527f455843454544535f474c4f42414c5f57495448445241575f4c494d49540000006044820152606401610b55565b6123e783612f848484614817565b613a7e565b5f610c8f604051806060016040528060298152602001614bfb60299139613aaf565b604080516003808252608082019092526060915f919060208201848036833701905050905082815f81518110612fe357612fe361482a565b60209081029190910101526001612ffc6080600261480c565b6130069190614817565b84168160018151811061301b5761301b61482a565b602002602001018181525050608084901c8160028151811061303f5761303f61482a565b60209081029190910101529392505050565b5f8115801590611298575061129882600167080000000000001160c01b011190565b610a95604051806060016040528060278152602001614b236027913982613ae1565b5f610c8f64012a05f200614e2061459c565b60605f836130b65760056130c2565b6130c2600160056145b3565b90505f8351826130d291906145b3565b67ffffffffffffffff8111156130ea576130ea6144c5565b604051908082528060200260200182016040528015613113578160200160208202803683370190505b509050876001600160a01b0316815f815181106131325761313261482a565b602002602001018181525050336001600160a01b03168160018151811061315b5761315b61482a565b602002602001018181525050858160028151811061317b5761317b61482a565b602090810291909101015260016131946080600261480c565b61319e9190614817565b8716816003815181106131b3576131b361482a565b602002602001018181525050608087901c816004815181106131d7576131d761482a565b60200260200101818152505084156132e7578351816131f7600185614817565b815181106132075761320761482a565b6020026020010181815250505f5b84518110156132e55761324e8582815181106132335761323361482a565b6020026020010151600167080000000000001160c01b011190565b6132915760405162461bcd60e51b8152602060048201526014602482015273494e56414c49445f4d4553534147455f4441544160601b6044820152606401610b55565b8481815181106132a3576132a361482a565b60200260200101518284836132b891906145b3565b815181106132c8576132c861482a565b6020908102919091010152806132dd81614931565b915050613215565b505b979650505050505050565b5f808260405160200161330591906146e5565b60408051601f198184030181529190528051602090910120549392505050565b5f9081525f80516020614ae0833981519152602052604090206001015490565b610a958133613b2f565b61335982826127d9565b610a7a575f8281525f80516020614ae0833981519152602090815260408083206001600160a01b0385168085529252808320805460ff1916600117905551339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b7f000000000000000000000000000000000000000000000000000000000000000081101561342c5760405162461bcd60e51b8152602060048201526016602482015275494e53554646494349454e545f4645455f56414c554560501b6044820152606401610b55565b662386f26fc10000811115610a955760405162461bcd60e51b815260206004820152601260248201527108c8a8abeac8298aa8abea89e9ebe90928e960731b6044820152606401610b55565b805f0361348457505050565b6040516370a0823160e01b815230600482015283905f906001600160a01b038316906370a0823190602401602060405180830381865afa1580156134ca573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134ee9190614541565b90505f6134fb84836145b3565b9050818110156135385760405162461bcd60e51b81526020600482015260086024820152674f564552464c4f5760c01b6044820152606401610b55565b6040516001600160a01b0386166024820152306044820152606481018590525f906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915290506135ad6001600160a01b03881682613b93565b6040516370a0823160e01b81523060048201525f906001600160a01b038616906370a0823190602401602060405180830381865afa1580156135f1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136159190614541565b9050828114611ca05760405162461bcd60e51b815260206004820152601c60248201527f494e434f52524543545f414d4f554e545f5452414e53464552524544000000006044820152606401610b55565b6001600160a01b0382166136b05760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b6044820152606401610b55565b805f036136bc57505050565b6040516370a0823160e01b815230600482015283905f906001600160a01b038316906370a0823190602401602060405180830381865afa158015613702573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137269190614541565b90505f6137338483614817565b9050818111156137715760405162461bcd60e51b8152602060048201526009602482015268554e444552464c4f5760b81b6044820152606401610b55565b6040516001600160a01b0386166024820152604481018590525f9063a9059cbb60e01b90606401613566565b6137a782826127d9565b15610a7a575f8281525f80516020614ae0833981519152602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b610a95604051806060016040528060288152602001614a116028913982613cb3565b610a95604051806060016040528060268152602001614baa6026913982613cb3565b610a956040518060600160405280602b8152602001614bd0602b913982613d01565b61387d613d33565b156138ea576138995f80516020614a39833981519152836127d9565b6138e55760405162461bcd60e51b815260206004820152601960248201527f524f4c45535f414c52454144595f494e495449414c495a4544000000000000006044820152606401610b55565b6138f3565b6138f382613d52565b6138fb613e34565b1561396e576139175f80516020614a59833981519152826127d9565b610a7a5760405162461bcd60e51b815260206004820152602260248201527f53454355524954595f524f4c45535f414c52454144595f494e495449414c495a604482015261115160f21b6064820152608401610b55565b610a7a81613e4c565b5f613980613e9e565b5f61398a84613ec0565b81526020019081526020015f20545f14159050919050565b5f8062455447196001600160a01b038416016139bf575047613a28565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015613a01573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613a259190614541565b90505b5f613a31613f0c565b90506064613a3f828461459c565b613a499190614949565b949350505050565b5f6001613a5c613e9e565b5f613a6685613ec0565b81526020019081526020015f20546112989190614817565b613a896001826145b3565b613a91613e9e565b5f613a9b85613ec0565b815260208101919091526040015f20555050565b5f8082604051602001613ac291906146e5565b60408051601f1981840301815291905280516020909101209392505050565b613aea826132f2565b15613b255760405162461bcd60e51b815260206004820152600b60248201526a1053149150511657d4d15560aa1b6044820152606401610b55565b610a7a8282613d01565b613b3982826127d9565b610a7a57613b51816001600160a01b03166014613f2e565b613b5c836020613f2e565b604051602001613b6d929190614968565b60408051601f198184030181529082905262461bcd60e51b8252610b5591600401614493565b813b613bd55760405162461bcd60e51b81526020600482015260116024820152704241445f544f4b454e5f4144445245535360781b6044820152606401610b55565b5f80836001600160a01b031683604051613bef91906146e5565b5f604051808303815f865af19150503d805f8114613c28576040519150601f19603f3d011682016040523d82523d5f602084013e613c2d565b606091505b5091509150818190613c525760405162461bcd60e51b8152600401610b559190614493565b508051156121115780806020019051810190613c6e91906149dc565b6121115760405162461bcd60e51b81526020600482015260166024820152751513d2d15397d3d4115490551253d397d1905253115160521b6044820152606401610b55565b5f613cbd836132f2565b6001600160a01b031614613b255760405162461bcd60e51b815260206004820152600b60248201526a1053149150511657d4d15560aa1b6044820152606401610b55565b5f82604051602001613d1391906146e5565b604051602081830303815290604052805190602001209050818155505050565b5f80613d4b5f80516020614a39833981519152613325565b1415905090565b613d695f80516020614a398339815191528261334f565b613d8d5f80516020614aa08339815191525f80516020614b8a8339815191526140c4565b613db15f80516020614b8a8339815191525f80516020614a398339815191526140c4565b613dc85f80516020614a39833981519152806140c4565b613dec5f80516020614c648339815191525f80516020614b8a8339815191526140c4565b613e105f80516020614cad8339815191525f80516020614b8a8339815191526140c4565b610a955f80516020614ac08339815191525f80516020614a398339815191526140c4565b5f80613d4b5f80516020614a59833981519152613325565b613e635f80516020614a59833981519152806140c4565b613e875f80516020614b6a8339815191525f80516020614a598339815191526140c4565b610a955f80516020614a598339815191528261334f565b5f610c8f604051806060016040528060278152602001614a7960279139613aaf565b5f80613ecf6201518042614949565b604080516001600160a01b038616602082015290810182905290915060600160405160208183030381529060405280519060200120915050919050565b5f610c8f6040518060600160405280602b8152602001614bd0602b91396132f2565b60605f613f3c83600261459c565b613f479060026145b3565b67ffffffffffffffff811115613f5f57613f5f6144c5565b6040519080825280601f01601f191660200182016040528015613f89576020820181803683370190505b509050600360fc1b815f81518110613fa357613fa361482a565b60200101906001600160f81b03191690815f1a905350600f60fb1b81600181518110613fd157613fd161482a565b60200101906001600160f81b03191690815f1a9053505f613ff384600261459c565b613ffe9060016145b3565b90505b6001811115614075576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106140325761403261482a565b1a60f81b8282815181106140485761404861482a565b60200101906001600160f81b03191690815f1a90535060049490941c9361406e816149fb565b9050614001565b508315610af05760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610b55565b5f6140ce83613325565b5f8481525f80516020614ae08339815191526020526040808220600101859055519192508391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b6001600160a01b0381168114610a95575f80fd5b5f8060408385031215614146575f80fd5b82359150602083013561415881614121565b809150509250929050565b5f60208284031215614173575f80fd5b8135610af081614121565b5f805f60608486031215614190575f80fd5b833561419b81614121565b95602085013595506040909401359392505050565b5f805f80608085870312156141c3575f80fd5b84356141ce81614121565b966020860135965060408601359560600135945092505050565b5f602082840312156141f8575f80fd5b5035919050565b634e487b7160e01b5f52602160045260245ffd5b602081016004831061423357634e487b7160e01b5f52602160045260245ffd5b91905290565b5f806020838503121561424a575f80fd5b823567ffffffffffffffff80821115614261575f80fd5b818501915085601f830112614274575f80fd5b813581811115614282575f80fd5b866020828501011115614293575f80fd5b60209290920196919550909350505050565b5f805f606084860312156142b7575f80fd5b83356142c281614121565b92506020840135915060408401356142d981614121565b809150509250925092565b5f805f606084860312156142f6575f80fd5b505081359360208301359350604090920135919050565b5f8083601f84011261431d575f80fd5b50813567ffffffffffffffff811115614334575f80fd5b6020830191508360208260051b850101111561434e575f80fd5b9250929050565b5f805f805f8060a0878903121561436a575f80fd5b863561437581614121565b95506020870135945060408701359350606087013567ffffffffffffffff81111561439e575f80fd5b6143aa89828a0161430d565b979a9699509497949695608090950135949350505050565b5f805f805f608086880312156143d6575f80fd5b85356143e181614121565b94506020860135935060408601359250606086013567ffffffffffffffff81111561440a575f80fd5b6144168882890161430d565b969995985093965092949392505050565b5f8060408385031215614438575f80fd5b823561444381614121565b946020939093013593505050565b5f8060408385031215614462575f80fd5b50508035926020909101359150565b5f5b8381101561448b578181015183820152602001614473565b50505f910152565b602081525f82518060208401526144b1816040850160208701614471565b601f01601f19169190910160400192915050565b634e487b7160e01b5f52604160045260245ffd5b5f8151808452602080850194508084015f5b83811015614507578151875295820195908201906001016144eb565b509495945050505050565b848152836020820152608060408201525f61453060808301856144d9565b905082606083015295945050505050565b5f60208284031215614551575f80fd5b5051919050565b60208082526016908201527521a0a72727aa2fa822a92327a926afa7a72fa9a2a62360511b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761129857611298614588565b8082018082111561129857611298614588565b5f80858511156145d4575f80fd5b838611156145e0575f80fd5b5050820193919092039150565b84815260606020820181905281018390525f6001600160fb1b03841115614612575f80fd5b8360051b80866080850137604083019390935250016080019392505050565b5f60208284031215614641575f80fd5b8151610af081614121565b838152826020820152606060408201525f6127c560608301846144d9565b5f806040838503121561467b575f80fd5b505080516020909101519092909150565b848152608060208201525f6146a460808301866144d9565b6040830194909452506060015292915050565b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f82516146f6818460208701614471565b9190910192915050565b5f8060408385031215614711575f80fd5b823561471c81614121565b9150602083013561415881614121565b600181815b8085111561476657815f190482111561474c5761474c614588565b8085161561475957918102915b93841c9390800290614731565b509250929050565b5f8261477c57506001611298565b8161478857505f611298565b816001811461479e57600281146147a8576147c4565b6001915050611298565b60ff8411156147b9576147b9614588565b50506001821b611298565b5060208310610133831016604e8410600b84101617156147e7575081810a611298565b6147f1838361472c565b805f190482111561480457614804614588565b029392505050565b5f610af0838361476e565b8181038181111561129857611298614588565b634e487b7160e01b5f52603260045260245ffd5b828152604060208201525f613a4960408301846144d9565b5f60033d111561486c5760045f803e505f5160e01c5b90565b601f8201601f1916810167ffffffffffffffff811182821017156148a157634e487b7160e01b5f52604160045260245ffd5b6040525050565b5f60443d10156148b55790565b6040516003193d81016004833e81513d67ffffffffffffffff81602484011181841117156148e557505050505090565b82850191508151818111156148fd5750505050505090565b843d87010160208285010111156149175750505050505090565b6149266020828601018761486f565b509095945050505050565b5f6001820161494257614942614588565b5060010190565b5f8261496357634e487b7160e01b5f52601260045260245ffd5b500490565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081525f835161499f816017850160208801614471565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516149d0816028840160208801614471565b01602801949350505050565b5f602082840312156149ec575f80fd5b81518015158114610af0575f80fd5b5f81614a0957614a09614588565b505f19019056fe535441524b4e45545f544f4b454e5f4252494447455f4d4553534147494e475f434f4e545241435403711c9d994faf6055172091cb841fd4831aa743e6f3315163b06a122c841846026bd110619d11cfdfc28e281df893bc24828e89177318e9dbd860cdaedeb6b357495448445241574c5f4c494d49545f494e5452414441595f51554f54415f534c4f545f54414700d2ead78c620e94b02d0a996e99298c59ddccfa1d8a0149080ac3a20de060680251e864ca2a080f55bce5da2452e8cfcafdbc951a3e7fff5023d558452ec22853e43b954ba190a7e49386f1f78b01dcd9f628db23f432fa029a7dfd6d98e8fb537461726b576172655f537461726b6e657445524332304272696467655f322e305f35535441524b4e45545f544f4b454e5f4252494447455f4c325f544f4b454e5f434f4e5452414354008bce41827dd5484d80312a2e43bc42a896e3fcf75bf84c2b49339168dfa00a037693ba312785932d430dccf0f56ffedd0aa7c0f8b6da2cc4530c2717689b9603e615638e0b79444a70f8c695bf8f2a47033bf1cf95691ec3130f64939cee99535441524b4e45545f544f4b454e5f4252494447455f4d414e414745525f534c4f545f54414757495448445241574c5f4c494d49545f57495448445241575f4c494d49545f5043545f534c4f545f544147535441524b4e45545f544f4b454e5f4252494447455f4445504f5349544f525f41444452455353455301b64b1b3b690b43b9b514fb81377518f4039cd3e4f4914d8a6bdf01d679fb19c59c20aaa96597268f595db30ec21108a505370e3266ed3a6515637f16b8b689023edb77f7c8cc9e38e8afe78954f703aeeda7fffe014eeb6e56ea84e62f6da7535441524b4e45545f45524332305f544f4b454e5f4252494447455f544f4b454e5f414444524553530128d63adbf6b09002c26caf55c47e2f26635807e3ef1b027218aa74c8d61a3ea26469706673582212206cea3e7a0dd2d63121f0aa09510e029ee136111a46cf12be3d745139708517a864736f6c6343000814003303711c9d994faf6055172091cb841fd4831aa743e6f3315163b06a122c841846026bd110619d11cfdfc28e281df893bc24828e89177318e9dbd860cdaedeb6b353e43b954ba190a7e49386f1f78b01dcd9f628db23f432fa029a7dfd6d98e8fb03e615638e0b79444a70f8c695bf8f2a47033bf1cf95691ec3130f64939cee99