60c06040523480156200001157600080fd5b5060405162004c2038038062004c2083398181016040528101906200003791906200088b565b868684868833600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620000b25760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620000a991906200098d565b60405180910390fd5b620000c3816200051d60201b60201c565b5080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550846002908162000116919062000beb565b50836003908162000128919062000beb565b508260ff1660808160ff1681525050608051600a62000148919062000e55565b8262000155919062000ea6565b60a0818152505050505050506000600f60006101000a81548160ff021916908315150217905550600160108190555082600a62000193919062000e55565b84620001a0919062000ea6565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555082600a620001f2919062000e55565b82620001ff919062000ea6565b60128190555082600a62000214919062000e55565b8162000221919062000ea6565b6013819055506001600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200033c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000362919062000ef1565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653968273ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003c9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ef919062000ef1565b306040518363ffffffff1660e01b81526004016200040f92919062000f23565b6020604051808303816000875af11580156200042f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000455919062000ef1565b600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600e6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050505050505062000f50565b600160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905562000553816200055660201b60201c565b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620006838262000638565b810181811067ffffffffffffffff82111715620006a557620006a462000649565b5b80604052505050565b6000620006ba6200061a565b9050620006c8828262000678565b919050565b600067ffffffffffffffff821115620006eb57620006ea62000649565b5b620006f68262000638565b9050602081019050919050565b60005b838110156200072357808201518184015260208101905062000706565b60008484015250505050565b6000620007466200074084620006cd565b620006ae565b90508281526020810184848401111562000765576200076462000633565b5b6200077284828562000703565b509392505050565b600082601f8301126200079257620007916200062e565b5b8151620007a48482602086016200072f565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620007da82620007ad565b9050919050565b620007ec81620007cd565b8114620007f857600080fd5b50565b6000815190506200080c81620007e1565b92915050565b6000819050919050565b620008278162000812565b81146200083357600080fd5b50565b60008151905062000847816200081c565b92915050565b600060ff82169050919050565b62000865816200084d565b81146200087157600080fd5b50565b60008151905062000885816200085a565b92915050565b600080600080600080600060e0888a031215620008ad57620008ac62000624565b5b600088015167ffffffffffffffff811115620008ce57620008cd62000629565b5b620008dc8a828b016200077a565b975050602088015167ffffffffffffffff8111156200090057620008ff62000629565b5b6200090e8a828b016200077a565b9650506040620009218a828b01620007fb565b9550506060620009348a828b0162000836565b9450506080620009478a828b0162000874565b93505060a06200095a8a828b0162000836565b92505060c06200096d8a828b0162000836565b91505092959891949750929550565b6200098781620007cd565b82525050565b6000602082019050620009a460008301846200097c565b92915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620009fd57607f821691505b60208210810362000a135762000a12620009b5565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000a7d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000a3e565b62000a89868362000a3e565b95508019841693508086168417925050509392505050565b6000819050919050565b600062000acc62000ac662000ac08462000812565b62000aa1565b62000812565b9050919050565b6000819050919050565b62000ae88362000aab565b62000b0062000af78262000ad3565b84845462000a4b565b825550505050565b600090565b62000b1762000b08565b62000b2481848462000add565b505050565b5b8181101562000b4c5762000b4060008262000b0d565b60018101905062000b2a565b5050565b601f82111562000b9b5762000b658162000a19565b62000b708462000a2e565b8101602085101562000b80578190505b62000b9862000b8f8562000a2e565b83018262000b29565b50505b505050565b600082821c905092915050565b600062000bc06000198460080262000ba0565b1980831691505092915050565b600062000bdb838362000bad565b9150826002028217905092915050565b62000bf682620009aa565b67ffffffffffffffff81111562000c125762000c1162000649565b5b62000c1e8254620009e4565b62000c2b82828562000b50565b600060209050601f83116001811462000c63576000841562000c4e578287015190505b62000c5a858262000bcd565b86555062000cca565b601f19841662000c738662000a19565b60005b8281101562000c9d5784890151825560018201915060208501945060208101905062000c76565b8683101562000cbd578489015162000cb9601f89168262000bad565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000d605780860481111562000d385762000d3762000cd2565b5b600185161562000d485780820291505b808102905062000d588562000d01565b945062000d18565b94509492505050565b60008262000d7b576001905062000e4e565b8162000d8b576000905062000e4e565b816001811462000da4576002811462000daf5762000de5565b600191505062000e4e565b60ff84111562000dc45762000dc362000cd2565b5b8360020a91508482111562000dde5762000ddd62000cd2565b5b5062000e4e565b5060208310610133831016604e8410600b841016171562000e1f5782820a90508381111562000e195762000e1862000cd2565b5b62000e4e565b62000e2e848484600162000d0e565b9250905081840481111562000e485762000e4762000cd2565b5b81810290505b9392505050565b600062000e628262000812565b915062000e6f836200084d565b925062000e9e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000d69565b905092915050565b600062000eb38262000812565b915062000ec08362000812565b925082820262000ed08162000812565b9150828204841483151762000eea5762000ee962000cd2565b5b5092915050565b60006020828403121562000f0a5762000f0962000624565b5b600062000f1a84828501620007fb565b91505092915050565b600060408201905062000f3a60008301856200097c565b62000f4960208301846200097c565b9392505050565b60805160a051613c9562000f8b60003960008181610a400152818161156b015261159f0152600081816112ae0152611c330152613c956000f3fe608060405234801561001057600080fd5b50600436106102115760003560e01c806379ba509711610125578063d547cfb7116100ad578063e30c39781161007c578063e30c3978146105e0578063e985e9c5146105fe578063f0306ea41461062e578063f2fde38b14610638578063f349b1731461065457610211565b8063d547cfb714610546578063dd62ed3e14610564578063e0df5b6f14610594578063e2d6f33a146105b057610211565b8063a22cb465116100f4578063a22cb465146104a4578063a9059cbb146104c0578063b88d4fde146104f0578063c6a6035a1461050c578063c87b56dd1461051657610211565b806379ba50971461042e5780638da5cb5b1461043857806395d89b41146104565780639b19251a1461047457610211565b80634f02c420116101a85780635c975abb116101775780635c975abb1461039c5780636352211e146103ba57806370a08231146103ea578063715018a61461041a578063751039fc1461042457610211565b80634f02c420146103265780634f91e48c1461034457806353d6fd5914610362578063589210d91461037e57610211565b80631e70b6df116101e45780631e70b6df146102b257806323b872dd146102d0578063313ce567146102ec57806342842e0e1461030a57610211565b806306fdde0314610216578063081812fc14610234578063095ea7b31461026457806318160ddd14610294575b600080fd5b61021e610684565b60405161022b9190612d5e565b60405180910390f35b61024e60048036038101906102499190612dca565b610712565b60405161025b9190612e38565b60405180910390f35b61027e60048036038101906102799190612e7f565b610745565b60405161028b9190612eda565b60405180910390f35b61029c610a3e565b6040516102a99190612f04565b60405180910390f35b6102ba610a62565b6040516102c79190612eda565b60405180910390f35b6102ea60048036038101906102e59190612f1f565b610a75565b005b6102f46112ac565b6040516103019190612f8e565b60405180910390f35b610324600480360381019061031f9190612f1f565b6112d0565b005b61032e611403565b60405161033b9190612f04565b60405180910390f35b61034c611409565b6040516103599190612f04565b60405180910390f35b61037c60048036038101906103779190612fd5565b61140f565b005b610386611472565b6040516103939190612f04565b60405180910390f35b6103a4611478565b6040516103b19190612eda565b60405180910390f35b6103d460048036038101906103cf9190612dca565b61148f565b6040516103e19190612e38565b60405180910390f35b61040460048036038101906103ff9190613015565b611532565b6040516104119190612f04565b60405180910390f35b61042261154a565b005b61042c61155e565b005b6104366115d0565b005b61044061165f565b60405161044d9190612e38565b60405180910390f35b61045e611688565b60405161046b9190612d5e565b60405180910390f35b61048e60048036038101906104899190613015565b611716565b60405161049b9190612eda565b60405180910390f35b6104be60048036038101906104b99190612fd5565b611736565b005b6104da60048036038101906104d59190612e7f565b611833565b6040516104e79190612eda565b60405180910390f35b61050a600480360381019061050591906130a7565b611848565b005b610514611981565b005b610530600480360381019061052b9190612dca565b6119a6565b60405161053d9190612d5e565b60405180910390f35b61054e611a06565b60405161055b9190612d5e565b60405180910390f35b61057e6004803603810190610579919061312f565b611a94565b60405161058b9190612f04565b60405180910390f35b6105ae60048036038101906105a9919061329f565b611ab9565b005b6105ca60048036038101906105c59190613015565b611ad4565b6040516105d79190612f04565b60405180910390f35b6105e8611aec565b6040516105f59190612e38565b60405180910390f35b6106186004803603810190610613919061312f565b611b16565b6040516106259190612eda565b60405180910390f35b610636611b45565b005b610652600480360381019061064d9190613015565b611b6a565b005b61066e60048036038101906106699190613015565b611c17565b60405161067b9190612f04565b60405180910390f35b6002805461069190613317565b80601f01602080910402602001604051908101604052809291908181526020018280546106bd90613317565b801561070a5780601f106106df5761010080835404028352916020019161070a565b820191906000526020600020905b8154815290600101906020018083116106ed57829003601f168201915b505050505081565b60096020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060045482111580156107595750600082115b1561094d576000600b600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156108595750600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15610890576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836009600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258560405161093f9190612f04565b60405180910390a350610a34565b81600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610a2b9190612f04565b60405180910390a35b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b601660009054906101000a900460ff1681565b600454811161116457600b600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610b16576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b7c576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610c3f5750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015610caa57506009600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610ce1576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ce9611c2f565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d379190613377565b92505081905550610d46611c2f565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555081600b600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050610eaa9190613377565b81548110610ebb57610eba6133ab565b5b9060005260206000200154905080600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600d60008581526020019081526020016000205481548110610f2d57610f2c6133ab565b5b9060005260206000200181905550600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480610f8a57610f896133da565b5b60019003818190600052602060002001600090559055600d600083815260200190815260200160002054600d600083815260200190815260200160002081905550600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208290806001815401808255809150506001900390600052602060002001600090919091909150556001600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506110809190613377565b600d600084815260200190815260200160002081905550818373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a48273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fe59fdd36d0d223c0c7d996db7ad796880f45e1936cb0bb7ac102e7082e031487611149611c2f565b6040516111569190612f04565b60405180910390a3506112a7565b6000600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146112995781816112189190613377565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6112a4848484611c63565b50505b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6112db838383610a75565b60008273ffffffffffffffffffffffffffffffffffffffff163b141580156113c7575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168273ffffffffffffffffffffffffffffffffffffffff1663150b7a023386856040518463ffffffff1660e01b815260040161136293929190613440565b6020604051808303816000875af1158015611381573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a591906134e2565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614155b156113fe576040517f3da6393100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b60045481565b60135481565b611417611ed9565b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60125481565b6000600f60009054906101000a900460ff16905090565b6000600b600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361152d576040517fc5723b5100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b60076020528060005260406000206000915090505481565b611552611ed9565b61155c6000611f60565b565b611566611ed9565b6103e87f0000000000000000000000000000000000000000000000000000000000000000611594919061350f565b6012819055506103e87f00000000000000000000000000000000000000000000000000000000000000006115c8919061350f565b601381905550565b60006115da611f91565b90508073ffffffffffffffffffffffffffffffffffffffff166115fb611aec565b73ffffffffffffffffffffffffffffffffffffffff161461165357806040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161164a9190612e38565b60405180910390fd5b61165c81611f60565b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6003805461169590613317565b80601f01602080910402602001604051908101604052809291908181526020018280546116c190613317565b801561170e5780601f106116e35761010080835404028352916020019161170e565b820191906000526020600020905b8154815290600101906020018083116116f157829003601f168201915b505050505081565b600e6020528060005260406000206000915054906101000a900460ff1681565b80600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516118279190612eda565b60405180910390a35050565b6000611840338484611c63565b905092915050565b611853858585610a75565b60008473ffffffffffffffffffffffffffffffffffffffff163b14158015611943575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168473ffffffffffffffffffffffffffffffffffffffff1663150b7a0233888787876040518663ffffffff1660e01b81526004016118de95949392919061357e565b6020604051808303816000875af11580156118fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192191906134e2565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614155b1561197a576040517f3da6393100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050565b611989611ed9565b6001601660006101000a81548160ff021916908315150217905550565b60606000601180546119b790613317565b9050116119d357604051806020016040528060008152506119ff565b60116119de83611f99565b6040516020016119ef9291906136a0565b6040516020818303038152906040525b9050919050565b60118054611a1390613317565b80601f0160208091040260200160405190810160405280929190818152602001828054611a3f90613317565b8015611a8c5780601f10611a6157610100808354040283529160200191611a8c565b820191906000526020600020905b815481529060010190602001808311611a6f57829003601f168201915b505050505081565b6008602052816000526040600020602052806000526040600020600091509150505481565b611ac1611ed9565b8060119081611ad0919061385b565b5050565b60146020528060005260406000206000915090505481565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600a6020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b611b4d611ed9565b6000601660006101000a81548160ff021916908315150217905550565b611b72611ed9565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16611bd261165f565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60156020528060005260406000206000915090505481565b60007f0000000000000000000000000000000000000000000000000000000000000000600a611c5e9190613a60565b905090565b6000611c6d612067565b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611d995781601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611d0d9190613aab565b92505081905550601354601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611d98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8f90613b2b565b60405180910390fd5b5b600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611ec55781601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611e399190613aab565b92505081905550601254601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611ec4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ebb90613b97565b60405180910390fd5b5b611ed08484846120a8565b90509392505050565b611ee1611f91565b73ffffffffffffffffffffffffffffffffffffffff16611eff61165f565b73ffffffffffffffffffffffffffffffffffffffff1614611f5e57611f22611f91565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401611f559190612e38565b60405180910390fd5b565b600160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055611f8e81612430565b50565b600033905090565b606060006001611fa8846124f4565b01905060008167ffffffffffffffff811115611fc757611fc6613174565b5b6040519080825280601f01601f191660200182016040528015611ff95781602001600182028036833780820191505090505b509050600082602001820190505b60011561205c578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85816120505761204f613bb7565b5b04945060008503612007575b819350505050919050565b61206f611478565b156120a6576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6000806120b3611c2f565b90506000600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050612148878787612647565b156121595760019350505050612429565b84600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546121a89190613377565b9250508190555084600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166122dc57600083600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461229a9190613be6565b84846122a69190613be6565b6122b09190613377565b905060005b818110156122d9576122c6896127c8565b80806122d190613c17565b9150506122b5565b50505b600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166123bc576000838261233b9190613be6565b84600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123869190613be6565b6123909190613377565b905060005b818110156123b9576123a688612a24565b80806123b190613c17565b915050612395565b50505b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fe59fdd36d0d223c0c7d996db7ad796880f45e1936cb0bb7ac102e7082e031487876040516124199190612f04565b60405180910390a3600193505050505b9392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612552577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161254857612547613bb7565b5b0492506040810190505b6d04ee2d6d415b85acef8100000000831061258f576d04ee2d6d415b85acef8100000000838161258557612584613bb7565b5b0492506020810190505b662386f26fc1000083106125be57662386f26fc1000083816125b4576125b3613bb7565b5b0492506010810190505b6305f5e10083106125e7576305f5e10083816125dd576125dc613bb7565b5b0492506008810190505b612710831061260c57612710838161260257612601613bb7565b5b0492506004810190505b6064831061262f576064838161262557612624613bb7565b5b0492506002810190505b600a831061263e576001810190505b80915050919050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036127bc57600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036127525781600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546127429190613aab565b92505081905550600190506127c1565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156127ba573d6000803e3d6000fd5b505b600090505b9392505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361282e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506128be9190613377565b815481106128cf576128ce6133ab565b5b90600052602060002001549050600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548061292b5761292a6133da565b5b60019003818190600052602060002001600090559055600d600082815260200190815260200160002060009055600b600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556009600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905580600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b612a2c612067565b612a3581612a38565b50565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612a9e576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60046000815480929190600101919050555060006004549050600073ffffffffffffffffffffffffffffffffffffffff16600b600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b50576040517f23369fa600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600b600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190806001815401808255809150506001900390600052602060002001600090919091909150556001600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050612c579190613377565b600d600083815260200190815260200160002081905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612d08578082015181840152602081019050612ced565b60008484015250505050565b6000601f19601f8301169050919050565b6000612d3082612cce565b612d3a8185612cd9565b9350612d4a818560208601612cea565b612d5381612d14565b840191505092915050565b60006020820190508181036000830152612d788184612d25565b905092915050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b612da781612d94565b8114612db257600080fd5b50565b600081359050612dc481612d9e565b92915050565b600060208284031215612de057612ddf612d8a565b5b6000612dee84828501612db5565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612e2282612df7565b9050919050565b612e3281612e17565b82525050565b6000602082019050612e4d6000830184612e29565b92915050565b612e5c81612e17565b8114612e6757600080fd5b50565b600081359050612e7981612e53565b92915050565b60008060408385031215612e9657612e95612d8a565b5b6000612ea485828601612e6a565b9250506020612eb585828601612db5565b9150509250929050565b60008115159050919050565b612ed481612ebf565b82525050565b6000602082019050612eef6000830184612ecb565b92915050565b612efe81612d94565b82525050565b6000602082019050612f196000830184612ef5565b92915050565b600080600060608486031215612f3857612f37612d8a565b5b6000612f4686828701612e6a565b9350506020612f5786828701612e6a565b9250506040612f6886828701612db5565b9150509250925092565b600060ff82169050919050565b612f8881612f72565b82525050565b6000602082019050612fa36000830184612f7f565b92915050565b612fb281612ebf565b8114612fbd57600080fd5b50565b600081359050612fcf81612fa9565b92915050565b60008060408385031215612fec57612feb612d8a565b5b6000612ffa85828601612e6a565b925050602061300b85828601612fc0565b9150509250929050565b60006020828403121561302b5761302a612d8a565b5b600061303984828501612e6a565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261306757613066613042565b5b8235905067ffffffffffffffff81111561308457613083613047565b5b6020830191508360018202830111156130a05761309f61304c565b5b9250929050565b6000806000806000608086880312156130c3576130c2612d8a565b5b60006130d188828901612e6a565b95505060206130e288828901612e6a565b94505060406130f388828901612db5565b935050606086013567ffffffffffffffff81111561311457613113612d8f565b5b61312088828901613051565b92509250509295509295909350565b6000806040838503121561314657613145612d8a565b5b600061315485828601612e6a565b925050602061316585828601612e6a565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6131ac82612d14565b810181811067ffffffffffffffff821117156131cb576131ca613174565b5b80604052505050565b60006131de612d80565b90506131ea82826131a3565b919050565b600067ffffffffffffffff82111561320a57613209613174565b5b61321382612d14565b9050602081019050919050565b82818337600083830152505050565b600061324261323d846131ef565b6131d4565b90508281526020810184848401111561325e5761325d61316f565b5b613269848285613220565b509392505050565b600082601f83011261328657613285613042565b5b813561329684826020860161322f565b91505092915050565b6000602082840312156132b5576132b4612d8a565b5b600082013567ffffffffffffffff8111156132d3576132d2612d8f565b5b6132df84828501613271565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061332f57607f821691505b602082108103613342576133416132e8565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061338282612d94565b915061338d83612d94565b92508282039050818111156133a5576133a4613348565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600082825260208201905092915050565b50565b600061342a600083613409565b91506134358261341a565b600082019050919050565b60006080820190506134556000830186612e29565b6134626020830185612e29565b61346f6040830184612ef5565b81810360608301526134808161341d565b9050949350505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6134bf8161348a565b81146134ca57600080fd5b50565b6000815190506134dc816134b6565b92915050565b6000602082840312156134f8576134f7612d8a565b5b6000613506848285016134cd565b91505092915050565b600061351a82612d94565b915061352583612d94565b925082820261353381612d94565b9150828204841483151761354a57613549613348565b5b5092915050565b600061355d8385613409565b935061356a838584613220565b61357383612d14565b840190509392505050565b60006080820190506135936000830188612e29565b6135a06020830187612e29565b6135ad6040830186612ef5565b81810360608301526135c0818486613551565b90509695505050505050565b600081905092915050565b60008190508160005260206000209050919050565b600081546135f981613317565b61360381866135cc565b9450600182166000811461361e576001811461363357613666565b60ff1983168652811515820286019350613666565b61363c856135d7565b60005b8381101561365e5781548189015260018201915060208101905061363f565b838801955050505b50505092915050565b600061367a82612cce565b61368481856135cc565b9350613694818560208601612cea565b80840191505092915050565b60006136ac82856135ec565b91506136b8828461366f565b91508190509392505050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026137117fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826136d4565b61371b86836136d4565b95508019841693508086168417925050509392505050565b6000819050919050565b600061375861375361374e84612d94565b613733565b612d94565b9050919050565b6000819050919050565b6137728361373d565b61378661377e8261375f565b8484546136e1565b825550505050565b600090565b61379b61378e565b6137a6818484613769565b505050565b5b818110156137ca576137bf600082613793565b6001810190506137ac565b5050565b601f82111561380f576137e0816135d7565b6137e9846136c4565b810160208510156137f8578190505b61380c613804856136c4565b8301826137ab565b50505b505050565b600082821c905092915050565b600061383260001984600802613814565b1980831691505092915050565b600061384b8383613821565b9150826002028217905092915050565b61386482612cce565b67ffffffffffffffff81111561387d5761387c613174565b5b6138878254613317565b6138928282856137ce565b600060209050601f8311600181146138c557600084156138b3578287015190505b6138bd858261383f565b865550613925565b601f1984166138d3866135d7565b60005b828110156138fb578489015182556001820191506020850194506020810190506138d6565b868310156139185784890151613914601f891682613821565b8355505b6001600288020188555050505b505050505050565b60008160011c9050919050565b6000808291508390505b6001851115613984578086048111156139605761395f613348565b5b600185161561396f5780820291505b808102905061397d8561392d565b9450613944565b94509492505050565b60008261399d5760019050613a59565b816139ab5760009050613a59565b81600181146139c157600281146139cb576139fa565b6001915050613a59565b60ff8411156139dd576139dc613348565b5b8360020a9150848211156139f4576139f3613348565b5b50613a59565b5060208310610133831016604e8410600b8410161715613a2f5782820a905083811115613a2a57613a29613348565b5b613a59565b613a3c848484600161393a565b92509050818404811115613a5357613a52613348565b5b81810290505b9392505050565b6000613a6b82612d94565b9150613a7683612f72565b9250613aa37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461398d565b905092915050565b6000613ab682612d94565b9150613ac183612d94565b9250828201905080821115613ad957613ad8613348565b5b92915050565b7f6e6f7420616c6c6f77656420616e796d6f726520746f2073656c6c0000000000600082015250565b6000613b15601b83612cd9565b9150613b2082613adf565b602082019050919050565b60006020820190508181036000830152613b4481613b08565b9050919050565b7f6e6f7420616c6c6f77656420616e796d6f726520746f20627579000000000000600082015250565b6000613b81601a83612cd9565b9150613b8c82613b4b565b602082019050919050565b60006020820190508181036000830152613bb081613b74565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613bf182612d94565b9150613bfc83612d94565b925082613c0c57613c0b613bb7565b5b828204905092915050565b6000613c2282612d94565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613c5457613c53613348565b5b60018201905091905056fea264697066735822122033c25968c30b1a56e4cea7154371a330adb4983183c81df5dfe92ac719dfd02164736f6c6343000813003300000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000680352a1313e5625de1793175403838cbc9eb4a00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000b426f6e65796172643430340000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004424f4e4500000000000000000000000000000000000000000000000000000000