60c060405234801562000010575f80fd5b5060405162004fc438038062004fc48339818101604052810190620000369190620002bc565b6040518060400160405280600881526020017f52656d696c696f730000000000000000000000000000000000000000000000008152506040518060400160405280600881526020017f52656d696c696f7300000000000000000000000000000000000000000000000081525060126103e884805f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200010f576040517f49e27cff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3508460019081620001ba919062000550565b508360029081620001cc919062000550565b508260ff1660808160ff1681525050608051600a620001ec9190620007bd565b82620001f991906200080d565b60a081815250505050505050683635c9adc5dea0000060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505062000857565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000286826200025b565b9050919050565b62000298816200027a565b8114620002a3575f80fd5b50565b5f81519050620002b6816200028d565b92915050565b5f60208284031215620002d457620002d362000257565b5b5f620002e384828501620002a6565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200036857607f821691505b6020821081036200037e576200037d62000323565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620003e27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620003a5565b620003ee8683620003a5565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000438620004326200042c8462000406565b6200040f565b62000406565b9050919050565b5f819050919050565b620004538362000418565b6200046b62000462826200043f565b848454620003b1565b825550505050565b5f90565b6200048162000473565b6200048e81848462000448565b505050565b5b81811015620004b557620004a95f8262000477565b60018101905062000494565b5050565b601f8211156200050457620004ce8162000384565b620004d98462000396565b81016020851015620004e9578190505b62000501620004f88562000396565b83018262000493565b50505b505050565b5f82821c905092915050565b5f620005265f198460080262000509565b1980831691505092915050565b5f62000540838362000515565b9150826002028217905092915050565b6200055b82620002ec565b67ffffffffffffffff811115620005775762000576620002f6565b5b62000583825462000350565b62000590828285620004b9565b5f60209050601f831160018114620005c6575f8415620005b1578287015190505b620005bd858262000533565b8655506200062c565b601f198416620005d68662000384565b5f5b82811015620005ff57848901518255600182019150602085019450602081019050620005d8565b868310156200061f57848901516200061b601f89168262000515565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620006be5780860481111562000696576200069562000634565b5b6001851615620006a65780820291505b8081029050620006b68562000661565b945062000676565b94509492505050565b5f82620006d85760019050620007aa565b81620006e7575f9050620007aa565b81600181146200070057600281146200070b5762000741565b6001915050620007aa565b60ff84111562000720576200071f62000634565b5b8360020a9150848211156200073a576200073962000634565b5b50620007aa565b5060208310610133831016604e8410600b84101617156200077b5782820a90508381111562000775576200077462000634565b5b620007aa565b6200078a84848460016200066d565b92509050818404811115620007a457620007a362000634565b5b81810290505b9392505050565b5f60ff82169050919050565b5f620007c98262000406565b9150620007d683620007b1565b9250620008057fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620006c7565b905092915050565b5f620008198262000406565b9150620008268362000406565b9250828202620008368162000406565b9150828204841483151762000850576200084f62000634565b5b5092915050565b60805160a051614744620008805f395f6108f601525f81816112c70152612b8101526147445ff3fe608060405234801561000f575f80fd5b50600436106101a7575f3560e01c806370a08231116100f7578063c87b56dd11610095578063e0df5b6f1161006f578063e0df5b6f146104cb578063e985e9c5146104e7578063f28ca1dd14610517578063f2fde38b14610535576101a7565b8063c87b56dd1461044d578063d547cfb71461047d578063dd62ed3e1461049b576101a7565b80639b19251a116100d15780639b19251a146103b5578063a22cb465146103e5578063a9059cbb14610401578063b88d4fde14610431576101a7565b806370a08231146103495780638da5cb5b1461037957806395d89b4114610397576101a7565b80632b968958116101645780634f02c4201161013e5780634f02c420146102c3578063504334c2146102e157806353d6fd59146102fd5780636352211e14610319576101a7565b80632b9689581461027f578063313ce5671461028957806342842e0e146102a7576101a7565b806306fdde03146101ab578063081812fc146101c9578063095ea7b3146101f957806318160ddd1461022957806318d217c31461024757806323b872dd14610263575b5f80fd5b6101b3610551565b6040516101c09190613691565b60405180910390f35b6101e360048036038101906101de91906136f5565b6105dd565b6040516101f0919061375f565b60405180910390f35b610213600480360381019061020e91906137a2565b61060d565b60405161022091906137fa565b60405180910390f35b6102316108f4565b60405161023e9190613822565b60405180910390f35b610261600480360381019061025c9190613967565b610918565b005b61027d600480360381019061027891906139ae565b6109af565b005b6102876111a6565b005b6102916112c5565b60405161029e9190613a19565b60405180910390f35b6102c160048036038101906102bc91906139ae565b6112e9565b005b6102cb611418565b6040516102d89190613822565b60405180910390f35b6102fb60048036038101906102f69190613a32565b61141e565b005b61031760048036038101906103129190613ad2565b6114b0565b005b610333600480360381019061032e91906136f5565b61158c565b604051610340919061375f565b60405180910390f35b610363600480360381019061035e9190613b10565b61162a565b6040516103709190613822565b60405180910390f35b61038161163f565b60405161038e919061375f565b60405180910390f35b61039f611662565b6040516103ac9190613691565b60405180910390f35b6103cf60048036038101906103ca9190613b10565b6116ee565b6040516103dc91906137fa565b60405180910390f35b6103ff60048036038101906103fa9190613ad2565b61170b565b005b61041b600480360381019061041691906137a2565b611803565b60405161042891906137fa565b60405180910390f35b61044b60048036038101906104469190613b98565b611817565b005b610467600480360381019061046291906136f5565b61194c565b6040516104749190613691565b60405180910390f35b610485612800565b6040516104929190613691565b60405180910390f35b6104b560048036038101906104b09190613c1c565b61288c565b6040516104c29190613822565b60405180910390f35b6104e560048036038101906104e09190613967565b6128ac565b005b61050160048036038101906104fc9190613c1c565b612943565b60405161050e91906137fa565b60405180910390f35b61051f61296d565b60405161052c9190613691565b60405180910390f35b61054f600480360381019061054a9190613b10565b6129f9565b005b6001805461055e90613c87565b80601f016020809104026020016040519081016040528092919081815260200182805461058a90613c87565b80156105d55780601f106105ac576101008083540402835291602001916105d5565b820191905f5260205f20905b8154815290600101906020018083116105b857829003601f168201915b505050505081565b6006602052805f5260405f205f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600354821115801561061f57505f82115b15610807575f60085f8481526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610716575060075f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561074d576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8360065f8581526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040516107f99190613822565b60405180910390a3506108ea565b8160055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516108e19190613822565b60405180910390a35b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461099c576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600c90816109ab9190613e54565b5050565b60035481116110675760085f8281526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610a4d576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ab2576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610b70575060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015610bd8575060065f8281526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610c0f576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c17612b7e565b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610c629190613f50565b92505081905550610c71612b7e565b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508160085f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060065f8281526020019081526020015f205f6101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555f60095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600160095f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2080549050610dc79190613f50565b81548110610dd857610dd7613f83565b5b905f5260205f20015490508060095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600a5f8581526020019081526020015f205481548110610e4457610e43613f83565b5b905f5260205f20018190555060095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805480610e9d57610e9c613fb0565b5b600190038181905f5260205f20015f90559055600a5f8381526020019081526020015f2054600a5f8381526020019081526020015f208190555060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2082908060018154018082558091505060019003905f5260205f20015f9091909190915055600160095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2080549050610f859190613f50565b600a5f8481526020019081526020015f2081905550818373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a48273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fe59fdd36d0d223c0c7d996db7ad796880f45e1936cb0bb7ac102e7082e03148761104c612b7e565b6040516110599190613822565b60405180910390a3506111a1565b5f60055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146111935781816111169190613f50565b60055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b61119e848484612bb1565b50505b505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461122a576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3565b7f000000000000000000000000000000000000000000000000000000000000000081565b6112f48383836109af565b5f8273ffffffffffffffffffffffffffffffffffffffff163b141580156113dc575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168273ffffffffffffffffffffffffffffffffffffffff1663150b7a023386856040518463ffffffff1660e01b815260040161137a93929190614010565b6020604051808303815f875af1158015611396573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113ba91906140ad565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614155b15611413576040517f3da6393100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b60035481565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114a2576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114ac8282612f01565b5050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611534576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60085f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611625576040517fc5723b5100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6004602052805f5260405f205f915090505481565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6002805461166f90613c87565b80601f016020809104026020016040519081016040528092919081815260200182805461169b90613c87565b80156116e65780601f106116bd576101008083540402835291602001916116e6565b820191905f5260205f20905b8154815290600101906020018083116116c957829003601f168201915b505050505081565b600b602052805f5260405f205f915054906101000a900460ff1681565b8060075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516117f791906137fa565b60405180910390a35050565b5f61180f338484612bb1565b905092915050565b6118228585856109af565b5f8473ffffffffffffffffffffffffffffffffffffffff163b1415801561190e575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168473ffffffffffffffffffffffffffffffffffffffff1663150b7a0233888787876040518663ffffffff1660e01b81526004016118ac959493929190614104565b6020604051808303815f875af11580156118c8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118ec91906140ad565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614155b15611945576040517f3da6393100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050565b60605f600d805461195c90613c87565b9050111561199657600d61196f83612f25565b60405160200161198092919061420a565b60405160208183030381529060405290506127fb565b5f826040516020016119a8919061424d565b6040516020818303038152906040528051906020012060f01c90506060805f6109d8846119d591906142a1565b61ffff1690505f6040518061034001604052806040518060400160405280600181526020017f410000000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600181526020017f420000000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600181526020017f430000000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600181526020017f440000000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600181526020017f450000000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600181526020017f460000000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600181526020017f470000000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600181526020017f480000000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600181526020017f490000000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600181526020017f4a0000000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600181526020017f4b0000000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600181526020017f4c0000000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600181526020017f4d0000000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600181526020017f4e0000000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600181526020017f4f0000000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600181526020017f500000000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600181526020017f510000000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600181526020017f520000000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600181526020017f530000000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600181526020017f540000000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600181526020017f550000000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600181526020017f560000000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600181526020017f570000000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600181526020017f580000000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600181526020017f590000000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600181526020017f5a0000000000000000000000000000000000000000000000000000000000000081525081525090505f6040518061034001604052806040518060400160405280600581526020017f612e67696600000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f622e67696600000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f632e67696600000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f642e67696600000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f652e67696600000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f662e67696600000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f672e67696600000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f682e67696600000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f692e67696600000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f6a2e67696600000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f6b2e67696600000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f6c2e67696600000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f6d2e67696600000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f6e2e67696600000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f6f2e67696600000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f702e67696600000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f712e67696600000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f722e67696600000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f732e67696600000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f742e67696600000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f752e67696600000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f762e67696600000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f772e67696600000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f782e67696600000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f792e67696600000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f7a2e6769660000000000000000000000000000000000000000000000000000008152508152509050601a831015612633578183601a811061260d5761260c613f83565b5b602002015193508083601a811061262757612626613f83565b5b602002015194506126a4565b6040518060400160405280600181526020017f5a0000000000000000000000000000000000000000000000000000000000000081525093506040518060400160405280600581526020017f7a2e67696600000000000000000000000000000000000000000000000000000081525094505b5f6126ae89612f25565b6040516020016126be91906142f7565b6040516020818303038152906040526040516020016126dd91906143fe565b604051602081830303815290604052600c8760405160200161270092919061420a565b60405160208183030381529060405260405160200161272092919061441f565b60405160208183030381529060405290505f8560405160200161274391906144b2565b60405160208183030381529060405290505f6040518060400160405280600481526020017f227d5d7d00000000000000000000000000000000000000000000000000000000815250905082826040516020016127a092919061441f565b604051602081830303815290604052816040516020016127c192919061441f565b6040516020818303038152906040526040516020016127e091906144f9565b60405160208183030381529060405299505050505050505050505b919050565b600d805461280d90613c87565b80601f016020809104026020016040519081016040528092919081815260200182805461283990613c87565b80156128845780601f1061285b57610100808354040283529160200191612884565b820191905f5260205f20905b81548152906001019060200180831161286757829003601f168201915b505050505081565b6005602052815f5260405f20602052805f5260405f205f91509150505481565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612930576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600d908161293f9190613e54565b5050565b6007602052815f5260405f20602052805f5260405f205f915091509054906101000a900460ff1681565b600c805461297a90613c87565b80601f01602080910402602001604051908101604052809291908181526020018280546129a690613c87565b80156129f15780601f106129c8576101008083540402835291602001916129f1565b820191905f5260205f20905b8154815290600101906020018083116129d457829003601f168201915b505050505081565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612a7d576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612ae2576040517f49e27cff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b5f7f0000000000000000000000000000000000000000000000000000000000000000600a612bac919061464d565b905090565b5f80612bbb612b7e565b90505f60045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f60045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508460045f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612c8b9190613f50565b925050819055508460045f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282540192505081905550600b5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612db5575f8360045f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d749190614697565b8484612d809190614697565b612d8a9190613f50565b90505f5b81811015612db257612d9f89612fef565b8080612daa906146c7565b915050612d8e565b50505b600b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612e8e575f8382612e109190614697565b8460045f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612e599190614697565b612e639190613f50565b90505f5b81811015612e8b57612e7888613234565b8080612e83906146c7565b915050612e67565b50505b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fe59fdd36d0d223c0c7d996db7ad796880f45e1936cb0bb7ac102e7082e03148787604051612eeb9190613822565b60405180910390a3600193505050509392505050565b8160019081612f109190613e54565b508060029081612f209190613e54565b505050565b60605f6001612f33846134b6565b0190505f8167ffffffffffffffff811115612f5157612f50613843565b5b6040519080825280601f01601f191660200182016040528015612f835781602001600182028036833780820191505090505b5090505f82602001820190505b600115612fe4578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581612fd957612fd8614274565b5b0494505f8503612f90575b819350505050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613054576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600160095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805490506130df9190613f50565b815481106130f0576130ef613f83565b5b905f5260205f200154905060095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2080548061314857613147613fb0565b5b600190038181905f5260205f20015f90559055600a5f8281526020019081526020015f205f905560085f8281526020019081526020015f205f6101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560065f8281526020019081526020015f205f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055805f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613299576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035f81548092919060010191905055505f60035490505f73ffffffffffffffffffffffffffffffffffffffff1660085f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613345576040517f23369fa600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160085f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081908060018154018082558091505060019003905f5260205f20015f9091909190915055600160095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805490506134429190613f50565b600a5f8381526020019081526020015f2081905550808273ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b5f805f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310613512577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161350857613507614274565b5b0492506040810190505b6d04ee2d6d415b85acef8100000000831061354f576d04ee2d6d415b85acef8100000000838161354557613544614274565b5b0492506020810190505b662386f26fc10000831061357e57662386f26fc10000838161357457613573614274565b5b0492506010810190505b6305f5e10083106135a7576305f5e100838161359d5761359c614274565b5b0492506008810190505b61271083106135cc5761271083816135c2576135c1614274565b5b0492506004810190505b606483106135ef57606483816135e5576135e4614274565b5b0492506002810190505b600a83106135fe576001810190505b80915050919050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561363e578082015181840152602081019050613623565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61366382613607565b61366d8185613611565b935061367d818560208601613621565b61368681613649565b840191505092915050565b5f6020820190508181035f8301526136a98184613659565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b6136d4816136c2565b81146136de575f80fd5b50565b5f813590506136ef816136cb565b92915050565b5f6020828403121561370a576137096136ba565b5b5f613717848285016136e1565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61374982613720565b9050919050565b6137598161373f565b82525050565b5f6020820190506137725f830184613750565b92915050565b6137818161373f565b811461378b575f80fd5b50565b5f8135905061379c81613778565b92915050565b5f80604083850312156137b8576137b76136ba565b5b5f6137c58582860161378e565b92505060206137d6858286016136e1565b9150509250929050565b5f8115159050919050565b6137f4816137e0565b82525050565b5f60208201905061380d5f8301846137eb565b92915050565b61381c816136c2565b82525050565b5f6020820190506138355f830184613813565b92915050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61387982613649565b810181811067ffffffffffffffff8211171561389857613897613843565b5b80604052505050565b5f6138aa6136b1565b90506138b68282613870565b919050565b5f67ffffffffffffffff8211156138d5576138d4613843565b5b6138de82613649565b9050602081019050919050565b828183375f83830152505050565b5f61390b613906846138bb565b6138a1565b9050828152602081018484840111156139275761392661383f565b5b6139328482856138eb565b509392505050565b5f82601f83011261394e5761394d61383b565b5b813561395e8482602086016138f9565b91505092915050565b5f6020828403121561397c5761397b6136ba565b5b5f82013567ffffffffffffffff811115613999576139986136be565b5b6139a58482850161393a565b91505092915050565b5f805f606084860312156139c5576139c46136ba565b5b5f6139d28682870161378e565b93505060206139e38682870161378e565b92505060406139f4868287016136e1565b9150509250925092565b5f60ff82169050919050565b613a13816139fe565b82525050565b5f602082019050613a2c5f830184613a0a565b92915050565b5f8060408385031215613a4857613a476136ba565b5b5f83013567ffffffffffffffff811115613a6557613a646136be565b5b613a718582860161393a565b925050602083013567ffffffffffffffff811115613a9257613a916136be565b5b613a9e8582860161393a565b9150509250929050565b613ab1816137e0565b8114613abb575f80fd5b50565b5f81359050613acc81613aa8565b92915050565b5f8060408385031215613ae857613ae76136ba565b5b5f613af58582860161378e565b9250506020613b0685828601613abe565b9150509250929050565b5f60208284031215613b2557613b246136ba565b5b5f613b328482850161378e565b91505092915050565b5f80fd5b5f80fd5b5f8083601f840112613b5857613b5761383b565b5b8235905067ffffffffffffffff811115613b7557613b74613b3b565b5b602083019150836001820283011115613b9157613b90613b3f565b5b9250929050565b5f805f805f60808688031215613bb157613bb06136ba565b5b5f613bbe8882890161378e565b9550506020613bcf8882890161378e565b9450506040613be0888289016136e1565b935050606086013567ffffffffffffffff811115613c0157613c006136be565b5b613c0d88828901613b43565b92509250509295509295909350565b5f8060408385031215613c3257613c316136ba565b5b5f613c3f8582860161378e565b9250506020613c508582860161378e565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613c9e57607f821691505b602082108103613cb157613cb0613c5a565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302613d137fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613cd8565b613d1d8683613cd8565b95508019841693508086168417925050509392505050565b5f819050919050565b5f613d58613d53613d4e846136c2565b613d35565b6136c2565b9050919050565b5f819050919050565b613d7183613d3e565b613d85613d7d82613d5f565b848454613ce4565b825550505050565b5f90565b613d99613d8d565b613da4818484613d68565b505050565b5b81811015613dc757613dbc5f82613d91565b600181019050613daa565b5050565b601f821115613e0c57613ddd81613cb7565b613de684613cc9565b81016020851015613df5578190505b613e09613e0185613cc9565b830182613da9565b50505b505050565b5f82821c905092915050565b5f613e2c5f1984600802613e11565b1980831691505092915050565b5f613e448383613e1d565b9150826002028217905092915050565b613e5d82613607565b67ffffffffffffffff811115613e7657613e75613843565b5b613e808254613c87565b613e8b828285613dcb565b5f60209050601f831160018114613ebc575f8415613eaa578287015190505b613eb48582613e39565b865550613f1b565b601f198416613eca86613cb7565b5f5b82811015613ef157848901518255600182019150602085019450602081019050613ecc565b86831015613f0e5784890151613f0a601f891682613e1d565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613f5a826136c2565b9150613f65836136c2565b9250828203905081811115613f7d57613f7c613f23565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b5f82825260208201905092915050565b50565b5f613ffb5f83613fdd565b915061400682613fed565b5f82019050919050565b5f6080820190506140235f830186613750565b6140306020830185613750565b61403d6040830184613813565b818103606083015261404e81613ff0565b9050949350505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61408c81614058565b8114614096575f80fd5b50565b5f815190506140a781614083565b92915050565b5f602082840312156140c2576140c16136ba565b5b5f6140cf84828501614099565b91505092915050565b5f6140e38385613fdd565b93506140f08385846138eb565b6140f983613649565b840190509392505050565b5f6080820190506141175f830188613750565b6141246020830187613750565b6141316040830186613813565b81810360608301526141448184866140d8565b90509695505050505050565b5f81905092915050565b5f815461416681613c87565b6141708186614150565b9450600182165f811461418a576001811461419f576141d1565b60ff19831686528115158202860193506141d1565b6141a885613cb7565b5f5b838110156141c9578154818901526001820191506020810190506141aa565b838801955050505b50505092915050565b5f6141e482613607565b6141ee8185614150565b93506141fe818560208601613621565b80840191505092915050565b5f614215828561415a565b915061422182846141da565b91508190509392505050565b5f819050919050565b614247614242826136c2565b61422d565b82525050565b5f6142588284614236565b60208201915081905092915050565b5f61ffff82169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6142ab82614267565b91506142b683614267565b9250826142c6576142c5614274565b5b828204905092915050565b7f7b226e616d65223a202252656d696c696f732023000000000000000000000000815250565b5f614301826142d1565b60148201915061431182846141da565b915081905092915050565b7f222c226465736372697074696f6e223a224120636f6c6c656374696f6e206f665f8201527f20312c303030207265706c6963616e747320656e61626c65642062792045524360208201527f3430342c20616e206578706572696d656e74616c20746f6b656e207374616e6460408201527f6172642e222c2265787465726e616c5f75726c223a2268747470733a2f2f726560608201527f6d696c696f73746f6b656e2e636f6d2f222c22696d616765223a220000000000608082015250565b5f6143e8609b83614150565b91506143f38261431c565b609b82019050919050565b5f61440982846141da565b9150614414826143dc565b915081905092915050565b5f61442a82856141da565b915061443682846141da565b91508190509392505050565b7f222c2261747472696275746573223a5b7b2274726169745f74797065223a224c5f8201527f6574746572222c2276616c7565223a2200000000000000000000000000000000602082015250565b5f61449c603083614150565b91506144a782614442565b603082019050919050565b5f6144bc82614490565b91506144c882846141da565b915081905092915050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b757466382c0000000000815250565b5f614503826144d3565b601b8201915061451382846141da565b915081905092915050565b5f8160011c9050919050565b5f808291508390505b60018511156145735780860481111561454f5761454e613f23565b5b600185161561455e5780820291505b808102905061456c8561451e565b9450614533565b94509492505050565b5f8261458b5760019050614646565b81614598575f9050614646565b81600181146145ae57600281146145b8576145e7565b6001915050614646565b60ff8411156145ca576145c9613f23565b5b8360020a9150848211156145e1576145e0613f23565b5b50614646565b5060208310610133831016604e8410600b841016171561461c5782820a90508381111561461757614616613f23565b5b614646565b614629848484600161452a565b925090508184048111156146405761463f613f23565b5b81810290505b9392505050565b5f614657826136c2565b9150614662836139fe565b925061468f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461457c565b905092915050565b5f6146a1826136c2565b91506146ac836136c2565b9250826146bc576146bb614274565b5b828204905092915050565b5f6146d1826136c2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361470357614702613f23565b5b60018201905091905056fea2646970667358221220bcfd1961f804b8c1ed9c519ebe977af6c148b42d0542ba084a84282655055ed564736f6c63430008140033000000000000000000000000171b1ac8a678f1d3e3a745782e984a52b5d67569