0 txs
1 call
constructor
constructor(address owner, address currency_, address collateral_, address oracle_, address swapper_, address reader_)
functions
CALLBACK_ROLE
viewfunction CALLBACK_ROLE() view returns (bytes32)
collateral
viewfunction collateral() view returns (address)
currency
viewfunction currency() view returns (address)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
equity
viewfunction equity(bytes32 marketId, address account) view returns (uint256)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
markets
viewfunction markets(uint256) view returns (bytes32)
maxSlippage
viewfunction maxSlippage() view returns (uint256)
morpho
viewfunction morpho() view returns (address)
morphoReader
viewfunction morphoReader() view returns (address)
OPERATOR_ROLE
viewfunction OPERATOR_ROLE() view returns (bytes32)
oracle
viewfunction oracle() view returns (address)
priceCollateralInCurrency
viewfunction priceCollateralInCurrency(uint256 assets) view returns (uint256)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
swapper
viewfunction swapper() view returns (address)
addMarket
nonpayablefunction addMarket(bytes32 marketId)
borrow
nonpayablefunction borrow(bytes32 marketId, uint256 cash, address account, address receiver)
deleteMarket
nonpayablefunction deleteMarket(bytes32 marketId)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
onMorphoFlashLoan
nonpayablefunction onMorphoFlashLoan(uint256 amount, bytes data)
onMorphoSupplyCollateral
nonpayablefunction onMorphoSupplyCollateral(uint256 assets, bytes data)
recover
nonpayablefunction recover(address token, address recipient, uint256 amount)
recoverETH
nonpayablefunction recoverETH(address recipient, uint256 amount)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address callerConfirmation)
repay
nonpayablefunction repay(bytes32 marketId, uint256 cash, address account)
repayShares
nonpayablefunction repayShares(bytes32 marketId, uint256 shares, address account)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setMaxSlippage
nonpayablefunction setMaxSlippage(uint256 maxSlippageBps)
setMaxSlippageForce
nonpayablefunction setMaxSlippageForce(uint256 maxSlippageBps)
setSwapper
nonpayablefunction setSwapper(address newSwapper)
shiftCollateral
nonpayablefunction shiftCollateral(bytes32 marketFrom, bytes32 marketTo, uint256 assets, address account)
shiftCurrency
nonpayablefunction shiftCurrency(bytes32 marketFrom, bytes32 marketTo, uint256 cash, address account)
shiftPosition
nonpayablefunction shiftPosition(bytes32 marketFrom, bytes32 marketTo, uint256 assets, uint256 cash, address account)
supplyCollateral
nonpayablefunction supplyCollateral(bytes32 marketId, uint256 assets, address account)
swapToCollateral
nonpayablefunction swapToCollateral(uint256 cash)
swapToCurrency
nonpayablefunction swapToCurrency(uint256 assets)
unwind
nonpayablefunction unwind(bytes32 marketId, uint256 assets, address account, uint256 minCash)
unwindAll
nonpayablefunction unwindAll(bytes32 marketId, address account, uint256 minCash)
wind
nonpayablefunction wind(bytes32 marketId, uint256 cash, address account, uint256 minAssets)
withdrawAllCollateral
nonpayablefunction withdrawAllCollateral(bytes32 marketId, address account, address receiver)
withdrawCollateral
nonpayablefunction withdrawCollateral(bytes32 marketId, uint256 assets, address account, address receiver)
events
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)
Unwind
event Unwind(address indexed account, bytes32 indexed marketId, uint256 repaidAssets, uint256 collateralWithdrawn)
Wind
event Wind(address indexed account, bytes32 indexed marketId, uint256 borrowedAssets, uint256 collateralSupplied)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
AccountNotDelegated
error AccountNotDelegated(address account)
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
EmptyPosition
error EmptyPosition(bytes32 marketId, address account)
FailedInnerCall
error FailedInnerCall()
InvalidAccount
error InvalidAccount(address account)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x610140604052346200026857620000266200001962000469565b9493909392919262000681565b620000306200026e565b615bb362000a7a82396080518181816112cd01528181612569015281816125f601528181612eaf01528181612fdf015281816130bb015281816133de0152818161346b0152818161392701528181613dce0152818161431101528181614449015281816145c4015281816146fd015281816148d6015281816149b401528181614a1201528181614b0d01528181614be801528181615287015281816153cb015261541f015260a0518181816111bf01528181612f85015281816133840152818161382b01528181613f2b01528181614d5501528181614e8b0152818161520d015281816152610152615445015260c051818181610c4701528181613c0a0152818161597e0152615a70015260e0518181816112460152818161231101528181612c0f01528181612c4101528181612ed401528181612faa015281816133a9015281816136e601528181613d9d01528181613efa015281816140ac015281816140de0152818161433501528181614365015281816143970152818161446d015281816145e8015281816146190152818161464b015281816147210152818161486f015281816148fa0152818161492c015281816149d801528181614a3601528181614a7001528181614b3101528181614b6601528181614c0c01528181614d7901528181614dac01528181614ddd01528181614eaf01528181614fbb01528181614fed01526156ca015261010051818181610a190152613ac8015261012051818181613c75015281816159310152615b040152615bb390f35b62000274565b60405190565b5f80fd5b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b90620002a29062000278565b810190811060018060401b03821117620002bb57604052565b62000282565b90620002d8620002d06200026e565b928362000296565b565b5f80fd5b60018060a01b031690565b620002f490620002de565b90565b6200030281620002e9565b036200030a57565b5f80fd5b905051906200031d82620002f7565b565b6200032a90620002e9565b90565b62000338816200031f565b036200034057565b5f80fd5b9050519062000353826200032d565b565b6200036090620002e9565b90565b6200036e8162000355565b036200037657565b5f80fd5b90505190620003898262000363565b565b6200039690620002e9565b90565b620003a4816200038b565b03620003ac57565b5f80fd5b90505190620003bf8262000399565b565b620003cc90620002e9565b90565b620003da81620003c1565b03620003e257565b5f80fd5b90505190620003f582620003cf565b565b909160c082840312620004635762000412835f84016200030e565b9262000422816020850162000344565b9262000432826040830162000344565b92620004606200044684606085016200037a565b93620004568160808601620003b0565b9360a001620003e6565b90565b620002da565b6200048c6200662d803803806200048081620002c1565b928339810190620003f7565b909192939495565b90565b620004b0620004aa620004b692620002de565b62000494565b620002de565b90565b620004c49062000497565b90565b620004d290620004b9565b90565b5f1b90565b90620004e85f1991620004d5565b9181191691161790565b90565b90565b620005116200050b6200051792620004f2565b62000494565b620004f5565b90565b90565b9062000537620005316200053f92620004f8565b6200051a565b8254620004da565b9055565b90565b6200055f62000559620005659262000543565b62000494565b620004f5565b90565b906200057b60018060a01b0391620004d5565b9181191691161790565b620005909062000497565b90565b6200059e9062000585565b90565b90565b90620005be620005b8620005c69262000593565b620005a1565b825462000568565b9055565b90565b90565b620005e9620005e3620005ef92620005ca565b620004d5565b620005cd565b90565b620005fd5f620005d0565b90565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92990565b7f73f9a0f79d0de650ebb1c7d68b67125ab5d93ce97641ba33e5e1e4b5f481921c90565b6200065390620002e9565b90565b62000662905162000648565b90565b620006709062000497565b90565b6200067e9062000665565b90565b939092620006ee92620007029694620006ae73bbbbbbbbbb9cc5e90e3b3af64bdaf62c37eeffcb620004c7565b60e052620006bf600560046200051d565b620006d96ec097ce7bc90715b34b9f100000000062000546565b6101205260805260a05260c0526001620005a4565b61010052620006fc620005f2565b62000944565b50620007196200071162000600565b339062000944565b50620007456200072862000624565b6200073e6200073860e062000656565b62000673565b9062000944565b50620007656200075462000600565b6200075e620005f2565b90620007ea565b620007846200077362000624565b6200077d620005f2565b90620007ea565b565b6200079190620005cd565b90565b90620007a09062000786565b5f5260205260405f2090565b5f1c90565b620007bc90620007ac565b90565b90620007d9620007d3620007e19262000786565b620007b1565b8254620004da565b9055565b5f0190565b90620007f6826200089f565b91620008128260016200080b5f859062000794565b01620007bf565b91620008556200084e620008477fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9562000786565b9262000786565b9262000786565b92620008606200026e565b806200086c81620007e5565b0390a4565b5f90565b90565b620008876200088d91620007ac565b62000875565b90565b6200089c905462000878565b90565b6001620008bc620008c392620008b462000871565b505f62000794565b0162000890565b90565b5f90565b151590565b620008da9062000665565b90565b90620008e990620008cf565b5f5260205260405f2090565b906200090360ff91620004d5565b9181191691161790565b6200091890620008ca565b90565b90565b90620009386200093262000940926200090d565b6200091b565b8254620008f5565b9055565b6200094e620008c6565b50620009676200096082849062000a35565b15620008ca565b5f1462000a02576200099560016200098f5f6200098681869062000794565b018590620008dd565b6200091e565b90620009a062000a6a565b90620009e3620009dc620009d57f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9562000786565b92620008cf565b92620008cf565b92620009ee6200026e565b80620009fa81620007e5565b0390a4600190565b50505f90565b60ff1690565b62000a1d62000a2391620007ac565b62000a08565b90565b62000a32905462000a0e565b90565b62000a63915f62000a5662000a5d9362000a4e620008c6565b508262000794565b01620008dd565b62000a26565b90565b5f90565b62000a7462000a66565b50339056fe60806040526004361015610013575b611495565b61001d5f356102bc565b806301ffc9a7146102b75780630ae6fda7146102b25780631ec66cb7146102ad5780631ec82cb8146102a8578063248a9ca3146102a35780632b3297f91461029e5780632dfe6400146102995780632f2ff15d1461029457806331f570721461028f57806333d579151461028a57806336568abe14610285578063370ee8cb146102805780633e0c06291461027b5780634383173a1461027657806343f68a49146102715780635bfe19bc1461026c57806363c8acdb146102675780636f6654a314610262578063738315ed1461025d5780637dc0d1d0146102585780638c04166f14610253578063918d2f411461024e57806391d1485414610249578063977da540146102445780639c82f2a41461023f578063a193212e1461023a578063a217fddf14610235578063a4356d1f14610230578063a86756861461022b578063a979756314610226578063ad8b6e2714610221578063b1022fdf1461021c578063b1283e7714610217578063d547741f14610212578063d8dfeb451461020d578063d8fbc83314610208578063e5a6b10f14610203578063e86eb305146101fe578063ed4112c8146101f9578063f5b541a6146101f4578063fe872080146101ef5763ff2681250361000e57611461565b61142a565b6113f5565b611392565b61135e565b6112ef565b611296565b61120f565b611189565b611154565b611054565b61101f565b610fe8565b610fb4565b610f47565b610f12565b610ea4565b610e71565b610df1565b610d9d565b610d68565b610d04565b610c97565b610c0e565b610bdb565b610ba4565b610b17565b610a9e565b610a69565b6109e3565b610983565b610931565b6108fb565b610878565b6107b3565b61074f565b6106d4565b6105f3565b61055c565b6104bf565b61044e565b610348565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b63ffffffff60e01b1690565b6102e9816102d4565b036102f057565b5f80fd5b90503590610301826102e0565b565b9060208282031261031c57610319915f016102f4565b90565b6102cc565b151590565b61032f90610321565b9052565b9190610346905f60208501940190610326565b565b346103785761037461036361035e366004610303565b61149d565b61036b6102c2565b91829182610333565b0390f35b6102c8565b90565b6103898161037d565b0361039057565b5f80fd5b905035906103a182610380565b565b90565b6103af816103a3565b036103b657565b5f80fd5b905035906103c7826103a6565b565b60018060a01b031690565b6103dd906103c9565b90565b6103e9816103d4565b036103f057565b5f80fd5b90503590610401826103e0565b565b60808183031261044457610419825f8301610394565b9261044161042a84602085016103ba565b9361043881604086016103f4565b936060016103ba565b90565b6102cc565b5f0190565b346104805761046a610461366004610403565b92919091612113565b6104726102c2565b8061047c81610449565b0390f35b6102c8565b90916060828403126104ba576104b76104a0845f8501610394565b936104ae81602086016103f4565b936040016103f4565b90565b6102cc565b346104ee576104d86104d2366004610485565b916137d3565b6104e06102c2565b806104ea81610449565b0390f35b6102c8565b6104fc906103d4565b90565b610508816104f3565b0361050f57565b5f80fd5b90503590610520826104ff565b565b90916060828403126105575761055461053d845f8501610513565b9361054b81602086016103f4565b936040016103ba565b90565b6102cc565b3461058b5761057561056f366004610522565b916157cd565b61057d6102c2565b8061058781610449565b0390f35b6102c8565b6105998161037d565b036105a057565b5f80fd5b905035906105b182610590565b565b906020828203126105cc576105c9915f016105a4565b90565b6102cc565b6105da9061037d565b9052565b91906105f1905f602085019401906105d1565b565b346106235761061f61060e6106093660046105b3565b611592565b6106166102c2565b918291826105de565b0390f35b6102c8565b5f91031261063257565b6102cc565b1c90565b60018060a01b031690565b61065690600861065b9302610637565b61063b565b90565b906106699154610646565b90565b61067860015f9061065e565b90565b90565b61069261068d610697926103c9565b61067b565b6103c9565b90565b6106a39061067e565b90565b6106af9061069a565b90565b6106bb906106a6565b9052565b91906106d2905f602085019401906106b2565b565b34610704576106e4366004610628565b6107006106ef61066c565b6106f76102c2565b918291826106bf565b0390f35b6102c8565b60808183031261074a5761071f825f8301610394565b926107476107308460208501610394565b9361073e81604086016103ba565b936060016103f4565b90565b6102cc565b346107815761076b610762366004610709565b92919091612657565b6107736102c2565b8061077d81610449565b0390f35b6102c8565b91906040838203126107ae57806107a26107ab925f86016105a4565b936020016103f4565b90565b6102cc565b346107e2576107cc6107c6366004610786565b906115dd565b6107d46102c2565b806107de81610449565b0390f35b6102c8565b5f80fd5b5f80fd5b5f80fd5b909182601f8301121561082d5781359167ffffffffffffffff831161082857602001926001830284011161082357565b6107ef565b6107eb565b6107e7565b9190916040818403126108735761084b835f83016103ba565b92602082013567ffffffffffffffff811161086e5761086a92016107f3565b9091565b6102d0565b6102cc565b346108a75761089161088b366004610832565b9161311c565b6108996102c2565b806108a381610449565b0390f35b6102c8565b91906040838203126108d457806108c86108d1925f8601610394565b936020016103f4565b90565b6102cc565b6108e2906103a3565b9052565b91906108f9905f602085019401906108d9565b565b3461092c576109286109176109113660046108ac565b90613ab5565b61091f6102c2565b918291826108e6565b0390f35b6102c8565b346109605761094a610944366004610786565b906116a5565b6109526102c2565b8061095c81610449565b0390f35b6102c8565b9060208282031261097e5761097b915f016103ba565b90565b6102cc565b346109b15761099b610996366004610965565b611b90565b6109a36102c2565b806109ad81610449565b0390f35b6102c8565b91906040838203126109de57806109d26109db925f86016103f4565b936020016103ba565b90565b6102cc565b34610a12576109fc6109f63660046109b6565b906158ef565b610a046102c2565b80610a0e81610449565b0390f35b6102c8565b7f000000000000000000000000000000000000000000000000000000000000000090565b610a449061069a565b90565b610a5090610a3b565b9052565b9190610a67905f60208501940190610a47565b565b34610a9957610a79366004610628565b610a95610a84610a17565b610a8c6102c2565b91829182610a54565b0390f35b6102c8565b34610acc57610ab6610ab1366004610965565b611a8a565b610abe6102c2565b80610ac881610449565b0390f35b6102c8565b608081830312610b1257610ae7825f8301610394565b92610b0f610af884602085016103ba565b93610b0681604086016103f4565b936060016103f4565b90565b6102cc565b34610b4957610b33610b2a366004610ad1565b9291909161356e565b610b3b6102c2565b80610b4581610449565b0390f35b6102c8565b919060a083820312610b9f57610b66815f8501610394565b92610b748260208301610394565b92610b9c610b8584604085016103ba565b93610b9381606086016103ba565b936080016103f4565b90565b6102cc565b34610bd657610bc0610bb7366004610b4e565b93929092612d8a565b610bc86102c2565b80610bd281610449565b0390f35b6102c8565b34610c0957610bf3610bee366004610965565b6139cd565b610bfb6102c2565b80610c0581610449565b0390f35b6102c8565b34610c4057610c2a610c21366004610709565b929190916124be565b610c326102c2565b80610c3c81610449565b0390f35b6102c8565b7f000000000000000000000000000000000000000000000000000000000000000090565b610c729061069a565b90565b610c7e90610c69565b9052565b9190610c95905f60208501940190610c75565b565b34610cc757610ca7366004610628565b610cc3610cb2610c45565b610cba6102c2565b91829182610c82565b0390f35b6102c8565b90565b610cdf906008610ce49302610637565b610ccc565b90565b90610cf29154610ccf565b90565b610d0160045f90610ce7565b90565b34610d3457610d14366004610628565b610d30610d1f610cf5565b610d276102c2565b918291826108e6565b0390f35b6102c8565b7f73f9a0f79d0de650ebb1c7d68b67125ab5d93ce97641ba33e5e1e4b5f481921c90565b610d65610d39565b90565b34610d9857610d78366004610628565b610d94610d83610d5d565b610d8b6102c2565b918291826105de565b0390f35b6102c8565b34610dce57610dca610db9610db3366004610786565b90611541565b610dc16102c2565b91829182610333565b0390f35b6102c8565b90602082820312610dec57610de9915f01610394565b90565b6102cc565b34610e1f57610e09610e04366004610dd3565b6120da565b610e116102c2565b80610e1b81610449565b0390f35b6102c8565b610e2d906103d4565b90565b610e3981610e24565b03610e4057565b5f80fd5b90503590610e5182610e30565b565b90602082820312610e6c57610e69915f01610e44565b90565b6102cc565b34610e9f57610e89610e84366004610e53565b61193a565b610e916102c2565b80610e9b81610449565b0390f35b6102c8565b34610ed257610ebc610eb7366004610965565b6138d1565b610ec46102c2565b80610ece81610449565b0390f35b6102c8565b90565b5f1b90565b610ef3610eee610ef892610ed7565b610eda565b61037d565b90565b610f045f610edf565b90565b610f0f610efb565b90565b34610f4257610f22366004610628565b610f3e610f2d610f07565b610f356102c2565b918291826105de565b0390f35b6102c8565b34610f7557610f5f610f5a366004610dd3565b611d77565b610f676102c2565b80610f7181610449565b0390f35b6102c8565b9091606082840312610faf57610fac610f95845f8501610394565b93610fa381602086016103f4565b936040016103ba565b90565b6102cc565b34610fe357610fcd610fc7366004610f7a565b91612446565b610fd56102c2565b80610fdf81610449565b0390f35b6102c8565b3461101a57611004610ffb366004610ad1565b929190916136aa565b61100c6102c2565b8061101681610449565b0390f35b6102c8565b3461104f5761104b61103a611035366004610965565b613bf7565b6110426102c2565b918291826108e6565b0390f35b6102c8565b346110835761106d611067366004610832565b916134cc565b6110756102c2565b8061107f81610449565b0390f35b6102c8565b634e487b7160e01b5f52603260045260245ffd5b5490565b5f5260205f2090565b6110b28161109c565b8210156110cc576110c46001916110a0565b910201905f90565b611088565b90565b6110e49060086110e99302610637565b6110d1565b90565b906110f791546110d4565b90565b60026111058161109c565b8210156111225761111f91611119916110a9565b906110ec565b90565b5f80fd5b61112f9061037d565b90565b61113b90611126565b9052565b9190611152905f60208501940190611132565b565b346111845761118061116f61116a366004610965565b6110fa565b6111776102c2565b9182918261113f565b0390f35b6102c8565b346111b8576111a261119c366004610786565b90611699565b6111aa6102c2565b806111b481610449565b0390f35b6102c8565b7f000000000000000000000000000000000000000000000000000000000000000090565b6111ea9061069a565b90565b6111f6906111e1565b9052565b919061120d905f602085019401906111ed565b565b3461123f5761121f366004610628565b61123b61122a6111bd565b6112326102c2565b918291826111fa565b0390f35b6102c8565b7f000000000000000000000000000000000000000000000000000000000000000090565b6112719061069a565b90565b61127d90611268565b9052565b9190611294905f60208501940190611274565b565b346112c6576112a6366004610628565b6112c26112b1611244565b6112b96102c2565b91829182611281565b0390f35b6102c8565b7f000000000000000000000000000000000000000000000000000000000000000090565b3461131f576112ff366004610628565b61131b61130a6112cb565b6113126102c2565b918291826111fa565b0390f35b6102c8565b90916060828403126113595761135661133f845f8501610394565b9361134d81602086016103ba565b936040016103f4565b90565b6102cc565b3461138d57611377611371366004611324565b91613637565b61137f6102c2565b8061138981610449565b0390f35b6102c8565b346113c1576113ab6113a5366004611324565b916135f5565b6113b36102c2565b806113bd81610449565b0390f35b6102c8565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92990565b6113f26113c6565b90565b3461142557611405366004610628565b6114216114106113ea565b6114186102c2565b918291826105de565b0390f35b6102c8565b3461145c5761144661143d366004610403565b9291909161214f565b61144e6102c2565b8061145881610449565b0390f35b6102c8565b346114905761147a611474366004611324565b916135b2565b6114826102c2565b8061148c81610449565b0390f35b6102c8565b5f80fd5b5f90565b6114a5611499565b50806114c06114ba637965db0b60e01b6102d4565b916102d4565b149081156114cd575b5090565b6114d79150611896565b5f6114c9565b906114e790611126565b5f5260205260405f2090565b6114fc9061069a565b90565b90611509906114f3565b5f5260205260405f2090565b5f1c90565b60ff1690565b61152c61153191611515565b61151a565b90565b61153e9054611520565b90565b611567915f61155c61156293611555611499565b50826114dd565b016114ff565b611534565b90565b5f90565b90565b61157d61158291611515565b61156e565b90565b61158f9054611571565b90565b60016115aa6115b0926115a361156a565b505f6114dd565b01611585565b90565b906115ce916115c96115c482611592565b6115e9565b6115d0565b565b906115da91611739565b50565b906115e7916115b3565b565b6115fb906115f5611889565b9061162d565b565b611606906103d4565b9052565b91602061162b92949361162460408201965f8301906115fd565b01906105d1565b565b9061164261163c838390611541565b15610321565b61164a575050565b61166b6116556102c2565b92839263e2517d3f60e01b84526004840161160a565b0390fd5b9061168a9161168561168082611592565b6115e9565b61168c565b565b90611696916117e4565b50565b906116a39161166f565b565b90806116c06116ba6116b5611889565b6103d4565b916103d4565b036116d1576116ce916117e4565b50565b6116d96102c2565b63334bd91960e11b8152806116f060048201610449565b0390fd5b9061170060ff91610eda565b9181191691161790565b61171390610321565b90565b90565b9061172e6117296117359261170a565b611716565b82546116f4565b9055565b611741611499565b50611756611750828490611541565b15610321565b5f146117de5761177d60016117785f6117708186906114dd565b0185906114ff565b611719565b90611786611889565b906117c36117bd6117b77f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d95611126565b926114f3565b926114f3565b926117cc6102c2565b806117d681610449565b0390a4600190565b50505f90565b6117ec611499565b506117f8818390611541565b5f1461187f5761181e5f6118195f6118118186906114dd565b0185906114ff565b611719565b90611827611889565b9061186461185e6118587ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b95611126565b926114f3565b926114f3565b9261186d6102c2565b8061187781610449565b0390a4600190565b50505f90565b5f90565b611891611885565b503390565b61189e611499565b506118b86118b26301ffc9a760e01b6102d4565b916102d4565b1490565b6118d5906118d06118cb610efb565b6115e9565b61192d565b565b906118e860018060a01b0391610eda565b9181191691161790565b6118fb9061067e565b90565b611907906118f2565b90565b90565b9061192261191d611929926118fe565b61190a565b82546118d7565b9055565b61193890600161190d565b565b611943906118bc565b565b61195e906119596119546113c6565b6115e9565b611a5f565b565b90565b61197761197261197c92611960565b61067b565b6103a3565b90565b60209181520190565b5f7f6d617820736c69707061676520746f6f20686967680000000000000000000000910152565b6119bc601560209261197f565b6119c581611988565b0190565b6119de9060208101905f8183039101526119af565b90565b156119e857565b6119f06102c2565b62461bcd60e51b815280611a06600482016119c9565b0390fd5b90611a165f1991610eda565b9181191691161790565b611a34611a2f611a39926103a3565b61067b565b6103a3565b90565b90565b90611a54611a4f611a5b92611a20565b611a3c565b8254611a0a565b9055565b611a8890611a8181611a7a611a746005611963565b916103a3565b11156119e1565b6004611a3f565b565b611a9390611945565b565b611aae90611aa9611aa4610efb565b6115e9565b611b5f565b565b90565b611ac7611ac2611acc92611ab0565b61067b565b6103a3565b90565b611ada612710611ab3565b90565b5f7f6d617820736c697070616765203e203130302500000000000000000000000000910152565b611b11601360209261197f565b611b1a81611add565b0190565b611b339060208101905f818303910152611b04565b90565b15611b3d57565b611b456102c2565b62461bcd60e51b815280611b5b60048201611b1e565b0390fd5b611b8e90611b8781611b80611b7a611b75611acf565b6103a3565b916103a3565b1115611b36565b6004611a3f565b565b611b9990611a95565b565b611bb490611baf611baa610efb565b6115e9565b611d26565b565b90611bc090611126565b5f5260205260405f2090565b5f7f6d61726b65742061646465640000000000000000000000000000000000000000910152565b611c00600c60209261197f565b611c0981611bcc565b0190565b611c229060208101905f818303910152611bf3565b90565b15611c2c57565b611c346102c2565b62461bcd60e51b815280611c4a60048201611c0d565b0390fd5b90565b634e487b7160e01b5f52604160045260245ffd5b5f5260205f2090565b5490565b611c7b81611c6e565b821015611c9557611c8d600191611c65565b910201905f90565b611088565b1b90565b91906008611cb9910291611cb35f1984611c9a565b92611c9a565b9181191691161790565b611ccc90611515565b90565b9190611ce5611ce0611ced93611126565b611cc3565b908354611c9e565b9055565b9081549168010000000000000000831015611d215782611d19916001611d1f95018155611c72565b90611ccf565b565b611c51565b611d7590611d4f611d4a611d44611d3f60038590611bb6565b611534565b15610321565b611c25565b611d63611d5c6002611c4e565b8290611cf1565b611d706001916003611bb6565b611719565b565b611d8090611b9b565b565b611d9b90611d96611d91610efb565b6115e9565b611fbe565b565b5f7f6d61726b6574206d697373696e67000000000000000000000000000000000000910152565b611dd1600e60209261197f565b611dda81611d9d565b0190565b611df39060208101905f818303910152611dc4565b90565b15611dfd57565b611e056102c2565b62461bcd60e51b815280611e1b60048201611dde565b0390fd5b611e33611e2e611e3892610ed7565b61067b565b6103a3565b90565b634e487b7160e01b5f52601160045260245ffd5b611e58906103a3565b5f198114611e665760010190565b611e3b565b90565b611e82611e7d611e8792611e6b565b61067b565b6103a3565b90565b611e99611e9f919392936103a3565b926103a3565b8203918211611eaa57565b611e3b565b634e487b7160e01b5f52603160045260245ffd5b5f90565b611ed991611ed3611ec3565b91611ccf565b565b611ee481611c6e565b8015611f05576001900390611f02611efc8383611c72565b90611ec7565b55565b611eaf565b91906008611f25910291611f1f60ff84611c9a565b92611c9a565b9181191691161790565b9190611f45611f40611f4d9361170a565b611716565b908354611f0a565b9055565b611f6391611f5d611499565b91611f2f565b565b5f7f6d61726b6574206e6f7420666f756e6400000000000000000000000000000000910152565b611f99601060209261197f565b611fa281611f65565b0190565b611fbb9060208101905f818303910152611f8c565b90565b611fda611fd5611fd060038490611bb6565b611534565b611df6565b611fe4600261109c565b90611fee5f611e1f565b5b80612002611ffc856103a3565b916103a3565b10156120b85761202561202061201a600284906110a9565b906110ec565b611126565b61203f61203961203485611126565b61037d565b9161037d565b146120525761204d90611e4f565b611fef565b5f916120986120b19261209261208a6120846120b69861207e6002916120786001611e6e565b90611e8a565b906110a9565b906110ec565b9160026110a9565b90611ccf565b6120aa6120a56002611c4e565b611edb565b6003611bb6565b611f51565b565b6120c06102c2565b62461bcd60e51b8152806120d660048201611fa6565b0390fd5b6120e390611d82565b565b906121019392916120fc6120f76113c6565b6115e9565b612103565b565b916121119391909192613d5e565b565b9061211f9392916120e5565b565b9061213d9392916121386121336113c6565b6115e9565b61213f565b565b9161214d9391909192613ebb565b565b9061215b939291612121565b565b90612178929161217361216e6113c6565b6115e9565b6122fe565b565b5f80fd5b601f801991011690565b906121929061217e565b810190811067ffffffffffffffff8211176121ac57604052565b611c51565b60e01b90565b5f80fd5b906121ce6121c76102c2565b9283612188565b565b905051906121dd826103a6565b565b6fffffffffffffffffffffffffffffffff1690565b6121fd816121df565b0361220457565b5f80fd5b90505190612215826121f4565b565b91906060838203126122635761225c9061223160606121bb565b9361223e825f83016121d0565b5f86015261224f8260208301612208565b6020860152604001612208565b6040830152565b6121b7565b906060828203126122815761227e915f01612217565b90565b6102cc565b9160206122a79294936122a060408201965f830190611132565b01906115fd565b565b6122b16102c2565b3d5f823e3d90fd5b6122c390516121df565b90565b6122da6122d56122df92610ed7565b61067b565b6121df565b90565b6122f66122f16122fb926121df565b61067b565b6103a3565b90565b9061230b909392936155cd565b926123357f0000000000000000000000000000000000000000000000000000000000000000611268565b60606393c5206291849061235b889461236661234f6102c2565b968795869485946121b1565b845260048401612286565b03915afa908115612441575f91612413575b5091612386604084016122b9565b6123986123925f6122c6565b916121df565b14806123ee575b6123c757936123bd6123b860406123c5969795016122b9565b6122e2565b909192613ebb565b565b84906123ea6123d46102c2565b9283926308d261b360e01b845260048401612286565b0390fd5b506123fb602084016122b9565b61240d6124075f6122c6565b916121df565b1461239f565b612434915060603d811161243a575b61242c8183612188565b810190612268565b5f612378565b503d612422565b6122a9565b90612451929161215d565b565b9061246f93929161246a6124656113c6565b6115e9565b61247d565b565b61247a9061069a565b90565b906124b261249f6124bb956124918561557a565b61249a8461557a565b6155cd565b928484906124ac30612471565b92614f9e565b50919091614d23565b50565b906124ca939291612453565b565b906124e89392916124e36124de6113c6565b6115e9565b61251d565b565b9060208282031261250357612500915f016121d0565b90565b6102cc565b919061251b905f602085019401906115fd565b565b929061255461254161255d94936125338761557a565b61253c8461557a565b6155cd565b9483869061254e30612471565b92614090565b509083916142d4565b50506125bf602061258d7f00000000000000000000000000000000000000000000000000000000000000006111e1565b6370a08231906125b461259f30612471565b926125a86102c2565b958694859384936121b1565b835260048301612508565b03915afa908115612652575f91612624575b5090816125e66125e05f611e1f565b916103a3565b116125f0575b5050565b61261d917f00000000000000000000000000000000000000000000000000000000000000009190916126ad565b5f806125ec565b612645915060203d811161264b575b61263d8183612188565b8101906124ea565b5f6125d1565b503d612633565b6122a9565b906126639392916124cc565b565b63ffffffff1690565b61268261267d61268792612665565b6121b1565b6102d4565b90565b9160206126ab9294936126a460408201965f8301906115fd565b01906108d9565b565b906126f46126f9936126e5600494936126cc63a9059cbb91939161266e565b926126d56102c2565b968794602086019081520161268a565b60208201810382520383612188565b612740565b565b5190565b61270881610321565b0361270f57565b5f80fd5b90505190612720826126ff565b565b9060208282031261273b57612738915f01612713565b90565b6102cc565b906127539061274e836111e1565b6127dd565b61275c816126fb565b61276e6127685f611e1f565b916103a3565b141590816127ad575b5061277f5750565b61278b6127a9916111e1565b6127936102c2565b918291635274afe760e01b835260048301612508565b0390fd5b6127d291506127cc9060206127c1826126fb565b818301019101612722565b15610321565b5f612777565b606090565b906127fb916127ea6127d8565b50906127f55f611e1f565b9161286d565b90565b6128079061069a565b90565b67ffffffffffffffff81116128285761282460209161217e565b0190565b611c51565b9061283f61283a8361280a565b6121bb565b918252565b3d5f1461285f576128543d61282d565b903d5f602084013e5b565b6128676127d8565b9061285d565b90916128776127d8565b50612881306127fe565b3161289461288e836103a3565b916103a3565b106128c0575f80916128bd948491602082019151925af1906128b4612844565b909190916128ee565b90565b6128ea6128cc306127fe565b6128d46102c2565b91829163cd78605960e01b835260048301612508565b0390fd5b90612902906128fb6127d8565b5015610321565b5f1461290e5750612979565b612917826126fb565b6129296129235f611e1f565b916103a3565b148061295e575b612938575090565b61295a906129446102c2565b918291639996b31560e01b835260048301612508565b0390fd5b50803b61297361296d5f611e1f565b916103a3565b14612930565b612982816126fb565b61299461298e5f611e1f565b916103a3565b115f146129a357805190602001fd5b6129ab6102c2565b630a12f52160e11b8152806129c260048201610449565b0390fd5b906129e3949392916129de6129d96113c6565b6115e9565b612be9565b565b905051906129f2826103e0565b565b919060a083820312612a6457612a5d90612a0e60a06121bb565b93612a1b825f83016129e5565b5f860152612a2c82602083016129e5565b6020860152612a3e82604083016129e5565b6040860152612a5082606083016129e5565b60608601526080016121d0565b6080830152565b6121b7565b9060a082820312612a8257612a7f915f016129f4565b90565b6102cc565b612abc612ac394612ab2606094989795612aa8608086019a5f870190611132565b6020850190611132565b60408301906108d9565b01906115fd565b565b5f910312612acf57565b6102cc565b612add906103d4565b9052565b612aea906103a3565b9052565b90608080612b4693612b065f8201515f860190612ad4565b612b1860208201516020860190612ad4565b612b2a60408201516040860190612ad4565b612b3c60608201516060860190612ad4565b0151910190612ae1565b565b60209181520190565b5f5b838110612b63575050905f910152565b806020918301518185015201612b53565b612b93612b9c602093612ba193612b8a816126fb565b93848093612b48565b95869101612b51565b61217e565b0190565b9092612bd990612bcf612be69694612bc56101008601975f870190612aee565b60a08501906108d9565b60c08301906115fd565b60e0818403910152612b74565b90565b612c09612c8f939495612bfb8361557a565b612c048461557a565b6155cd565b94612c337f0000000000000000000000000000000000000000000000000000000000000000611268565b9263238d65799560a0612c657f0000000000000000000000000000000000000000000000000000000000000000611268565b632c3c915790612c848592612c786102c2565b9a8b94859384936121b1565b83526004830161113f565b03915afa958615612d85575f96612d4b575b5090612cc3612cd2929880959294612cb76102c2565b95869460208601612a87565b60208201810382520382612188565b823b15612d46575f94612d038692612cf894612cec6102c2565b998a98899788966121b1565b865260048601612ba5565b03925af18015612d4157612d15575b50565b612d34905f3d8111612d3a575b612d2c8183612188565b810190612ac5565b5f612d12565b503d612d22565b6122a9565b61217a565b612cd292919650612d75612cc39160a03d8111612d7e575b612d6d8183612188565b810190612a69565b96919250612ca1565b503d612d63565b6122a9565b90612d97949392916129c6565b565b90612db49291612daf612daa610d39565b6115e9565b612e5d565b565b612dbf906103c9565b90565b612dcb81612db6565b03612dd257565b5f80fd5b90503590612de382612dc2565b565b90503590612df2826126ff565b565b9091606082840312612e2957612e26612e0f845f8501610394565b93612e1d8160208601612dd6565b93604001612de5565b90565b6102cc565b612e379061069a565b90565b916020612e5b929493612e5460408201965f8301906108d9565b01906108d9565b565b90612e7692612e6f9190810190612df4565b9390612e2e565b925f14612f5057612e92612e89836153bc565b82908591614d23565b92612eff612eac83858490612ea630612471565b92614090565b937f000000000000000000000000000000000000000000000000000000000000000090612ef87f0000000000000000000000000000000000000000000000000000000000000000611268565b9091613159565b909192612f35612f2f7f9321acd3b5d7c696c38e588e0fa03bd89bfc1284b525de1be76ad16c8d4f9f88936114f3565b93611126565b93612f4a612f416102c2565b92839283612e3a565b0390a35b565b612f67612f5e8394936151fe565b82908491614847565b5091612fd5612f8283868490612f7c30612471565b92614f9e565b947f000000000000000000000000000000000000000000000000000000000000000090612fce7f0000000000000000000000000000000000000000000000000000000000000000611268565b9091613159565b61303560206130037f00000000000000000000000000000000000000000000000000000000000000006111e1565b6370a082319061302a61301530612471565b9261301e6102c2565b958694859384936121b1565b835260048301612508565b03915afa908115613117575f916130e9575b508061305b6130555f611e1f565b916103a3565b116130b5575b509091926130986130927f11c6dc0f78517109e3cf01f3002577a2c7b58dd75760ad2abeb77e97072b613b936114f3565b93611126565b936130ad6130a46102c2565b92839283612e3a565b0390a3612f4e565b6130e3907f0000000000000000000000000000000000000000000000000000000000000000908390916126ad565b5f613061565b61310a915060203d8111613110575b6131028183612188565b8101906124ea565b5f613047565b503d6130f8565b6122a9565b906131279291612d99565b565b61313290611e1f565b9052565b91602061315792949361315060408201965f8301906115fd565b0190613129565b565b909161319c60049161318d63095ea7b361317487939161266e565b9261317d6102c2565b958694602086019081520161268a565b60208201810382520382612188565b906131b16131ab828490613215565b15610321565b6131bb575b505050565b613208600461320d9461320384916131f463095ea7b36131db5f9161266e565b926131e46102c2565b9687946020860190815201613136565b60208201810382520383612188565b612740565b612740565b5f80806131b6565b905f8091613221611499565b5061322b846111e1565b9082602082019151925af161323e612844565b81613274575b509081613250575b5090565b61325a91506111e1565b3b61326d6132675f611e1f565b916103a3565b115f61324c565b905061327f816126fb565b61329161328b5f611e1f565b916103a3565b149081156132a1575b505f613244565b6132bc915060206132b1826126fb565b818301019101612722565b5f61329a565b906132dd92916132d86132d3610d39565b6115e9565b613325565b565b608081830312613320576132f5825f8301610394565b9261331d6133068460208501610394565b9361331481604086016103ba565b93606001612dd6565b90565b6102cc565b61338161335061336d613342613363966133d496908101906132df565b929891949098949892612e2e565b9782899061335d30612471565b92614090565b50829087916142d4565b505082859061337b30612471565b92614f9e565b507f0000000000000000000000000000000000000000000000000000000000000000906133cd7f0000000000000000000000000000000000000000000000000000000000000000611268565b9091613159565b61343460206134027f00000000000000000000000000000000000000000000000000000000000000006111e1565b6370a082319061342961341430612471565b9261341d6102c2565b958694859384936121b1565b835260048301612508565b03915afa9081156134c7575f91613499575b50908161345b6134555f611e1f565b916103a3565b11613465575b5050565b613492917f00000000000000000000000000000000000000000000000000000000000000009190916126ad565b5f80613461565b6134ba915060203d81116134c0575b6134b28183612188565b8101906124ea565b5f613446565b503d6134a8565b6122a9565b906134d792916132c2565b565b906134f59392916134f06134eb6113c6565b6115e9565b61351f565b565b61350b61350661351092610ed7565b61067b565b6103c9565b90565b61351c906134f7565b90565b9261356493929190613530836155cd565b928161354c6135466135415f613513565b6103d4565b916103d4565b145f146135675761355d91506155cd565b925b614090565b50565b509261355f565b9061357a9392916134d9565b565b90613597929161359261358d6113c6565b6115e9565b613599565b565b916135a86135ae9392916155cd565b916142d4565b5050565b906135bd929161357c565b565b906135da92916135d56135d06113c6565b6115e9565b6135dc565b565b916135eb6135f19392916155cd565b91614586565b5050565b9061360092916135bf565b565b9061361d92916136186136136113c6565b6115e9565b61361f565b565b9161362e6136349392916155cd565b91614d23565b50565b906136429291613602565b565b9061366093929161365b6136566113c6565b6115e9565b613662565b565b61367061369f9492936155cd565b90929080928061369061368a6136855f613513565b6103d4565b916103d4565b145f146136a25750925b614f9e565b50565b90509261369a565b906136b6939291613644565b565b906136d392916136ce6136c96113c6565b6115e9565b6136d5565b565b91906136e0906155cd565b9061370a7f0000000000000000000000000000000000000000000000000000000000000000611268565b9260606393c52062948290613731869761373c6137256102c2565b998a95869485946121b1565b845260048401612286565b03915afa9384156137ce5761376260406137959661378f935f916137a0575b50016122b9565b9380938061378061377a6137755f613513565b6103d4565b916103d4565b145f146137985750935b6122e2565b90614f9e565b50565b90509361378a565b6137c1915060603d81116137c7575b6137b98183612188565b810190612268565b5f61375b565b503d6137af565b6122a9565b906137de92916136b8565b565b6137f9906137f46137ef6113c6565b6115e9565b6137fb565b565b8061380e6138085f611e1f565b916103a3565b14613820575b61381d906151fe565b50565b50613881602061384f7f00000000000000000000000000000000000000000000000000000000000000006111e1565b6370a082319061387661386130612471565b9261386a6102c2565b958694859384936121b1565b835260048301612508565b03915afa80156138cc5761381d915f9161389e575b509050613814565b6138bf915060203d81116138c5575b6138b78183612188565b8101906124ea565b5f613896565b503d6138ad565b6122a9565b6138da906137e0565b565b6138f5906138f06138eb6113c6565b6115e9565b6138f7565b565b8061390a6139045f611e1f565b916103a3565b1461391c575b613919906153bc565b50565b5061397d602061394b7f00000000000000000000000000000000000000000000000000000000000000006111e1565b6370a082319061397261395d30612471565b926139666102c2565b958694859384936121b1565b835260048301612508565b03915afa80156139c857613919915f9161399a575b509050613910565b6139bb915060203d81116139c1575b6139b38183612188565b8101906124ea565b5f613992565b503d6139a9565b6122a9565b6139d6906138dc565b565b5f90565b919061010083820312613a8457613a7d906139f86101006121bb565b93613a05825f83016121d0565b5f860152613a1682602083016121d0565b6020860152613a2882604083016121d0565b6040860152613a3a82606083016121d0565b6060860152613a4c82608083016121d0565b6080860152613a5e8260a083016121d0565b60a0860152613a708260c083016121d0565b60c086015260e0016121d0565b60e0830152565b6121b7565b9061010082820312613aa357613aa0915f016139dc565b90565b6102cc565b613ab290516103a3565b90565b9061010090613ac26139d8565b50613aec7f0000000000000000000000000000000000000000000000000000000000000000610a3b565b613b16613afe635c3888219593615597565b94613b21613b0a6102c2565b968795869485946121b1565b845260048401612286565b03915afa8015613b8757613b55915f91613b58575b50613b4f6060613b4860a08401613aa8565b9201613aa8565b90611e8a565b90565b613b7a91506101003d8111613b80575b613b728183612188565b810190613a89565b5f613b36565b503d613b68565b6122a9565b613b9b613ba1919392936103a3565b926103a3565b91613bad8382026103a3565b928184041490151715613bbc57565b611e3b565b634e487b7160e01b5f52601260045260245ffd5b613be1613be7916103a3565b916103a3565b908115613bf2570490565b613bc1565b613bff6139d8565b50613c446020613c2e7f0000000000000000000000000000000000000000000000000000000000000000610c69565b63a035b1fe90613c3c6102c2565b9384926121b1565b82528180613c5460048201610449565b03915afa8015613ccd57613c9a92613c73925f92613c9d575b50613b8c565b7f000000000000000000000000000000000000000000000000000000000000000090613bd5565b90565b613cbf91925060203d8111613cc6575b613cb78183612188565b8101906124ea565b905f613c6d565b503d613cad565b6122a9565b613cde613ce391611515565b610ccc565b90565b613cf09054613cd2565b90565b600190565b604090613d21613d289496959396613d1760608401985f850190611132565b60208301906115fd565b0190610326565b565b613d4e613d5b949293613d4460608401955f8501906115fd565b60208301906108d9565b6040818403910152612b74565b90565b9291613d7290613d6d8561557a565b6155cd565b90613d7d6005613ce6565b9280613d91613d8b5f611e1f565b916103a3565b03613ea6575b50613dc17f0000000000000000000000000000000000000000000000000000000000000000611268565b63e0232b42613e22613df27f00000000000000000000000000000000000000000000000000000000000000006111e1565b9396613e13613dff613cf3565b613e076102c2565b97889360208501613cf8565b60208201810382520385612188565b813b15613ea1575f613e4791613e528296613e3b6102c2565b998a97889687956121b1565b855260048501613d2a565b03925af1918215613e9c57613e6e92613e70575b506005611a3f565b565b613e8f905f3d8111613e95575b613e878183612188565b810190612ac5565b5f613e66565b503d613e7d565b6122a9565b61217a565b613eb1906005611a3f565b5f613d97565b5f90565b9291613ecf90613eca8561557a565b6155cd565b90613eda6005613ce6565b9280613eee613ee85f611e1f565b916103a3565b03614003575b50613f1e7f0000000000000000000000000000000000000000000000000000000000000000611268565b63e0232b42613f7f613f4f7f00000000000000000000000000000000000000000000000000000000000000006111e1565b9396613f70613f5c613eb7565b613f646102c2565b97889360208501613cf8565b60208201810382520385612188565b813b15613ffe575f613fa491613faf8296613f986102c2565b998a97889687956121b1565b855260048501613d2a565b03925af1918215613ff957613fcb92613fcd575b506005611a3f565b565b613fec905f3d8111613ff2575b613fe48183612188565b810190612ac5565b5f613fc3565b503d613fda565b6122a9565b61217a565b61400e906005611a3f565b5f613ef4565b919060408382031261403c5780614030614039925f86016121d0565b936020016121d0565b90565b6102cc565b9095949261408e9461407d614087926140736101009661406961012088019c5f890190612aee565b60a08701906108d9565b60c0850190613129565b60e08301906115fd565b01906115fd565b565b916141299261409d6139d8565b506140a782615654565b6140d07f0000000000000000000000000000000000000000000000000000000000000000611268565b9160a06350d8cd4b926141027f0000000000000000000000000000000000000000000000000000000000000000611268565b61411e632c3c91576141126102c2565b998a94859384936121b1565b83526004830161113f565b03915afa938415614220576040955f956141e2575b50916141925f926141879498849180918061416961416361415e8a613513565b6103d4565b916103d4565b1487146141da5750915b61417b6102c2565b9a8b998a9889976121b1565b875260048701614041565b03925af19081156141d5575f916141a8575b5090565b6141c9915060403d81116141ce575b6141c18183612188565b810190614014565b6141a4565b503d6141b7565b6122a9565b905091614173565b614187939195505f9261420e6141929260a03d8111614219575b6142068183612188565b810190612a69565b96929450925061413e565b503d6141fc565b6122a9565b67ffffffffffffffff81116142435761423f60209161217e565b0190565b611c51565b9061425a61425583614225565b6121bb565b918252565b6142685f614248565b90565b61427361425f565b90565b61427e61426b565b90565b91936142b96142d196946142af6142c394976142a56101208801995f890190612aee565b60a08701906108d9565b60c0850190613129565b60e08301906115fd565b610100818403910152612b74565b90565b906142dd6139d8565b506142e66139d8565b506142f083615654565b806143036142fd5f611e1f565b916103a3565b14614518576143e2916143607f00000000000000000000000000000000000000000000000000000000000000006143597f0000000000000000000000000000000000000000000000000000000000000000611268565b8491613159565b6143897f0000000000000000000000000000000000000000000000000000000000000000611268565b9060a06320b76e81916143bb7f0000000000000000000000000000000000000000000000000000000000000000611268565b6143d7632c3c91576143cb6102c2565b988994859384936121b1565b83526004830161113f565b03915afa928315614513576040945f946144d7575b506144219161442c5f9297839061440c614276565b916144156102c2565b9a8b998a9889976121b1565b875260048701614281565b03925af19081156144d2575f809190926144a2575b5090916144a07f00000000000000000000000000000000000000000000000000000000000000006144917f0000000000000000000000000000000000000000000000000000000000000000611268565b61449a5f611e1f565b91613159565b565b90506144c5915060403d81116144cb575b6144bd8183612188565b810190614014565b5f614441565b503d6144b3565b6122a9565b5f9194509161442c6145026144219460a03d811161450c575b6144fa8183612188565b810190612a69565b95925050916143f7565b503d6144f0565b6122a9565b5050505f9061453061452a5f93611e1f565b92611e1f565b90565b919361456b614583969461456161457594976145576101208801995f890190612aee565b60a0870190613129565b60c08501906108d9565b60e08301906115fd565b610100818403910152612b74565b90565b90916145906139d8565b506145996139d8565b506145a381615654565b826145b66145b05f611e1f565b916103a3565b146147cc57614696916146147f000000000000000000000000000000000000000000000000000000000000000061460c7f0000000000000000000000000000000000000000000000000000000000000000611268565b5f1991613159565b61463d7f0000000000000000000000000000000000000000000000000000000000000000611268565b9060a06320b76e819161466f7f0000000000000000000000000000000000000000000000000000000000000000611268565b61468b632c3c915761467f6102c2565b988994859384936121b1565b83526004830161113f565b03915afa9283156147c7576040945f9461478b575b506146d5916146e05f928398906146c0614276565b916146c96102c2565b9a8b998a9889976121b1565b875260048701614533565b03925af1908115614786575f80919092614756575b5090916147547f00000000000000000000000000000000000000000000000000000000000000006147457f0000000000000000000000000000000000000000000000000000000000000000611268565b61474e5f611e1f565b91613159565b565b9050614779915060403d811161477f575b6147718183612188565b810190614014565b5f6146f5565b503d614767565b6122a9565b5f919450916146e06147b66146d59460a03d81116147c0575b6147ae8183612188565b810190612a69565b95925050916146ab565b503d6147a4565b6122a9565b5050505f906147e46147de5f93611e1f565b92611e1f565b90565b6147f0906122e2565b9052565b919361482c614844969461482261483694976148186101208801995f890190612aee565b60a0870190613129565b60c08501906147e7565b60e08301906115fd565b610100818403910152612b74565b90565b9192906148526139d8565b9361485b6139d8565b9361486582615654565b6148bd60a06148937f0000000000000000000000000000000000000000000000000000000000000000611268565b632c3c9157906148b285926148a66102c2565b958694859384936121b1565b83526004830161113f565b03915afa908115614d1e575f91614cf0575b50926149257f000000000000000000000000000000000000000000000000000000000000000061491e7f0000000000000000000000000000000000000000000000000000000000000000611268565b8391613159565b60406149507f0000000000000000000000000000000000000000000000000000000000000000611268565b916320b76e81926149805f88939561498b828a61496b614276565b916149746102c2565b9a8b998a9889976121b1565b875260048701614281565b03925af1805f80939092614cbe575b50155f14614caf5750506001614a0d575b5050505b614a0b7f00000000000000000000000000000000000000000000000000000000000000006149fc7f0000000000000000000000000000000000000000000000000000000000000000611268565b614a055f611e1f565b91613159565b565b614a697f0000000000000000000000000000000000000000000000000000000000000000614a5a7f0000000000000000000000000000000000000000000000000000000000000000611268565b614a635f611e1f565b91613159565b6060614a947f0000000000000000000000000000000000000000000000000000000000000000611268565b6393c520629290614ab78594614ac2614aab6102c2565b968795869485946121b1565b845260048401612286565b03915afa908115614caa575f91614c7c575b5091614ae2602084016122b9565b614af4614aee5f6122c6565b916121df565b11614aff575b6149ab565b909193506040929450614b5d7f0000000000000000000000000000000000000000000000000000000000000000614b557f0000000000000000000000000000000000000000000000000000000000000000611268565b5f1991613159565b614bc05f614b8a7f0000000000000000000000000000000000000000000000000000000000000000611268565b92614bcb6320b76e819195614ba26020859a016122b9565b90614bab614276565b91614bb46102c2565b9a8b998a9889976121b1565b8752600487016147f4565b03925af1908115614c77575f80919092614c47575b509091614c3f7f0000000000000000000000000000000000000000000000000000000000000000614c307f0000000000000000000000000000000000000000000000000000000000000000611268565b614c395f611e1f565b91613159565b5f8080614afa565b9050614c6a915060403d8111614c70575b614c628183612188565b810190614014565b5f614be0565b503d614c58565b6122a9565b614c9d915060603d8111614ca3575b614c958183612188565b810190612268565b5f614ad4565b503d614c8b565b6122a9565b949550955050505091906149af565b909250614ce2915060403d8111614ce9575b614cda8183612188565b810190614014565b915f61499a565b503d614cd0565b614d11915060a03d8111614d17575b614d098183612188565b810190612a69565b5f6148cf565b503d614cff565b6122a9565b919091614d2e6139d8565b50614d3882615654565b82614d4b614d455f611e1f565b916103a3565b14614f5057614da47f0000000000000000000000000000000000000000000000000000000000000000614d9d7f0000000000000000000000000000000000000000000000000000000000000000611268565b8591613159565b614e28614dd07f0000000000000000000000000000000000000000000000000000000000000000611268565b60a063238d657993614e017f0000000000000000000000000000000000000000000000000000000000000000611268565b614e1d632c3c9157614e116102c2565b968794859384936121b1565b83526004830161113f565b03915afa918215614f4b575f92614f1b575b508493614e45614276565b823b15614f16575f94614e768692614e6b94614e5f6102c2565b998a98899788966121b1565b865260048601612ba5565b03925af18015614f1157614ee5575b50614ee27f0000000000000000000000000000000000000000000000000000000000000000614ed37f0000000000000000000000000000000000000000000000000000000000000000611268565b614edc5f611e1f565b91613159565b90565b614f04905f3d8111614f0a575b614efc8183612188565b810190612ac5565b5f614e85565b503d614ef2565b6122a9565b61217a565b614f3d91925060a03d8111614f44575b614f358183612188565b810190612a69565b905f614e3a565b503d614f2b565b6122a9565b505050614f5c5f611e1f565b90565b614f95614f9c94614f8b60e094989795614f8161010086019a5f870190612aee565b60a08501906108d9565b60c08301906115fd565b01906115fd565b565b909261503890614fac6139d8565b50614fb684615654565b614fdf7f0000000000000000000000000000000000000000000000000000000000000000611268565b9060a0638720316d946150117f0000000000000000000000000000000000000000000000000000000000000000611268565b61502d632c3c91576150216102c2565b978894859384936121b1565b83526004830161113f565b03915afa928315615124575f936150f4575b50859480918061506a61506461505f5f613513565b6103d4565b916103d4565b145f146150ed57505b823b156150e8575f946150a486926150999461508d6102c2565b998a98899788966121b1565b865260048601614f5f565b03925af180156150e3576150b7575b5090565b6150d6905f3d81116150dc575b6150ce8183612188565b810190612ac5565b5f6150b3565b503d6150c4565b6122a9565b61217a565b9050615073565b61511691935060a03d811161511d575b61510e8183612188565b810190612a69565b915f61504a565b503d615104565b6122a9565b61513561513a91611515565b61063b565b90565b6151479054615129565b90565b60409061517361517a949695939661516960608401985f8501906111ed565b60208301906111ed565b01906108d9565b565b5f7f6d696e2063617368000000000000000000000000000000000000000000000000910152565b6151b0600860209261197f565b6151b98161517c565b0190565b6151d29060208101905f8183039101526151a3565b90565b156151dc57565b6151e46102c2565b62461bcd60e51b8152806151fa600482016151bd565b0390fd5b906152076139d8565b506152457f000000000000000000000000000000000000000000000000000000000000000061523e615239600161513d565b6106a6565b8491613159565b615257615252600161513d565b6106a6565b602063cae270b6917f0000000000000000000000000000000000000000000000000000000000000000906152bf5f7f0000000000000000000000000000000000000000000000000000000000000000956152ca896152b36102c2565b988997889687956121b1565b85526004850161514a565b03925af190811561533557615305916152eb915f91615307575b5093615a3b565b6152fe6152f885926103a3565b916103a3565b10156151d5565b565b615328915060203d811161532e575b6153208183612188565b8101906124ea565b5f6152e4565b503d615316565b6122a9565b5f7f6d696e20636f6c6c61746572616c000000000000000000000000000000000000910152565b61536e600e60209261197f565b6153778161533a565b0190565b6153909060208101905f818303910152615361565b90565b1561539a57565b6153a26102c2565b62461bcd60e51b8152806153b86004820161537b565b0390fd5b906153c56139d8565b506154037f00000000000000000000000000000000000000000000000000000000000000006153fc6153f7600161513d565b6106a6565b8491613159565b615415615410600161513d565b6106a6565b602063cae270b6917f00000000000000000000000000000000000000000000000000000000000000009061547d5f7f000000000000000000000000000000000000000000000000000000000000000095615488896154716102c2565b988997889687956121b1565b85526004850161514a565b03925af19081156154f3576154c3916154a9915f916154c5575b50936158fb565b6154bc6154b685926103a3565b916103a3565b1015615393565b565b6154e6915060203d81116154ec575b6154de8183612188565b8101906124ea565b5f6154a2565b503d6154d4565b6122a9565b5f7f6d61726b6574206e6f7420616c6c6f7765640000000000000000000000000000910152565b61552c601260209261197f565b615535816154f8565b0190565b61554e9060208101905f81830391015261551f565b90565b1561555857565b6155606102c2565b62461bcd60e51b81528061557660048201615539565b0390fd5b61559061558b615595926003611bb6565b611534565b615551565b565b61559f611885565b50806155bb6155b56155b05f613513565b6103d4565b916103d4565b145f146155c85750335b90565b6155c5565b6155df906155d9611885565b50615597565b90816155fb6155f56155f05f613513565b6103d4565b916103d4565b1461560b5761560982615654565b565b61562d826156176102c2565b9182916325abcd9160e11b835260048301612508565b0390fd5b91602061565292949361564b60408201965f8301906115fd565b01906115fd565b565b8061566f6156696156645f613513565b6103d4565b916103d4565b1461577b578061568f61568961568430612471565b6103d4565b916103d4565b1415806156c4575b61569e5750565b6156c0906156aa6102c2565b918291633f3779ff60e11b835260048301612508565b0390fd5b506156ee7f0000000000000000000000000000000000000000000000000000000000000000611268565b60206365e4ad9e91839061571c61570430612471565b946157276157106102c2565b968795869485946121b1565b845260048401615631565b03915afa801561577657615743915f91615748575b5015610321565b615697565b615769915060203d811161576f575b6157618183612188565b810190612722565b5f61573c565b503d615757565b6122a9565b61579d906157876102c2565b9182916325abcd9160e11b835260048301612508565b0390fd5b906157bc92916157b76157b2610efb565b6115e9565b6157be565b565b916157cb929190916126ad565b565b906157d892916157a1565b565b906157f4916157ef6157ea610efb565b6115e9565b6158b0565b565b6157ff9061067e565b90565b61580b906157f6565b90565b905090565b61581e5f809261580e565b0190565b61582b90615813565b90565b5f7f657468207472616e73666572206661696c656400000000000000000000000000910152565b615862601360209261197f565b61586b8161582e565b0190565b6158849060208101905f818303910152615855565b90565b1561588e57565b6158966102c2565b62461bcd60e51b8152806158ac6004820161586f565b0390fd5b5f6158ed926158c76158c28394615802565b612e2e565b906158d06102c2565b90816158db81615822565b03925af16158e7612844565b50615887565b565b906158f9916157da565b565b6159036139d8565b5061590e6005613ce6565b61592061591a5f611e1f565b916103a3565b11615a2d576159776159566159b8927f000000000000000000000000000000000000000000000000000000000000000090613b8c565b615971615961611acf565b61596b6004613ce6565b90611e8a565b90613b8c565b60206159a27f0000000000000000000000000000000000000000000000000000000000000000610c69565b63a035b1fe906159b06102c2565b9485926121b1565b825281806159c860048201610449565b03915afa918215615a28576159f7926159f1915f916159fa575b506159eb611acf565b90613b8c565b90613bd5565b90565b615a1b915060203d8111615a21575b615a138183612188565b8101906124ea565b5f6159e2565b503d615a09565b6122a9565b50615a386005613ce6565b90565b615a436139d8565b50615a4e6005613ce6565b615a60615a5a5f611e1f565b916103a3565b11615b6f57615aaa906020615a947f0000000000000000000000000000000000000000000000000000000000000000610c69565b63a035b1fe90615aa26102c2565b9485926121b1565b82528180615aba60048201610449565b03915afa918215615b6a57615b3792615aff92615ade925f92615b3a575b50613b8c565b615af9615ae9611acf565b615af36004613ce6565b90611e8a565b90613b8c565b615b317f0000000000000000000000000000000000000000000000000000000000000000615b2b611acf565b90613b8c565b90613bd5565b90565b615b5c91925060203d8111615b63575b615b548183612188565b8101906124ea565b905f615ad8565b503d615b4a565b6122a9565b50615b7a6005613ce6565b9056fea2646970667358221220e24bbc89959426489fbbf2897e348da8357ff2707126e4ba85998831e337262664736f6c6343000815003300000000000000000000000044ac1031d245d965fe5f016da9ba643cd79f95f3000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000a3931d71877c0e7a3148cb7eb4463524fec27fbd0000000000000000000000000c426d174fc88b7a25d59945ab2f7274bf7b4c79000000000000000000000000cd0066ec3f96afe3f6015539d16def2ce648ab770000000000000000000000002fa62f205d6c33071d52c95252630d8b1927edef