libnvme-devel-1.8+79.g69e7772-150600.3.12.2<>,sgSp9|r*gVj jR5q(O`^w7FU-7""N.cg.)&kA\v944]Em锢xoG4Dt4 nZ0U3&j<R33=r$)#<]6ڋs”>8_Iy1TTEMg&z [Ln,*s{WnEw͖Put'qr;]nb?r~^TuƁyCG>>\?\d  . L  2>ektRR `R R )LR R RR!nR228R?? ? @ (A 8A(&9A&:D&FOGhRHRIRXLY\\ɠR]R^1:b1c2{d2e3f3l3u3Rv@d wARxO Ry\hz\\\\\Clibnvme-devel1.8+79.g69e7772150600.3.12.2Development files for libnvmeThe libnvme-devel package contains libraries and header files for developing applications that use libnvme.gSibs-power9-17SUSE Linux Enterprise 15SUSE LLC LGPL-2.1-or-laterhttps://www.suse.com/Unspecifiedhttps://github.com/linux-nvme/libnvme/linuxppc64leam*fEG`Gi[- ?F1aFn  %dB|.`?K$CP51D GW [fi-\-C###4(![u`rSD ^ z]G56cgu= MLe:T&zR&3 ev}z||{~||tdzv[N`zXq}|nmTlIq_.-x3ju>-,._1# /g7JL^yS\7 h8J <nAr=I\.+`d+006!S(`;Q<?%,8 U1Ra( cV}7uvNx@25Q 8LhkzI<aPhL8}b.rMwD;EK m gzfW\ {}MP(h'kg*2B!Z'9". a5}!tSk) {@  du<Y71\C:/N) (0; GK }cwf_|y,t 'XB4 GKw.(&n4K M`GB gXoT6;(1m7:0%4O4 d9A큤A큤gPTKgPTKgSgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgSgSgSgSgSgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTKgPTK3c7897859116e4f0bfba78ca43af58037d92d0f24d882ce73ee76ea86e0d9ed3647a467753890bfd1432bdc8cd87b68abb0c4c036aa76aec463eb5cf02fd3cdca90a3d8e99da0529798d8473f7d3f087e57925154a97dc780196e8a100038837625d1715f0772fc876caadf857fc36d76546d173f78e1cd8cb55845feea901b948124d9ace485df62f5a0a66cbcd55244ae8d461011228fd0bd07a6bcbdc51c64a10f8050951e959baa2f1ee5c9809c269fe889d76bd933c8a438f0d02c184847174fdc8df94026b2fb8bf9bc3ae251732437caa34d33d68a2fa55254dc38495803e2cda35028f18f5c5391996f8a0dc9dadd52c913b885af5c8a9f14305cd46b425cd77f6e350bc7e068136f52812c7e42051a451a563e15bdf3c86f2246d56fac3819e9b945d4142d310dc738e5d7f22a8675365c13341ad03c0a5f530720bde0d459462267b7b420cf8107fa83c49310b81e5029ad2154c160bc46825e3fa9aa1a2039245d6a2cffe98a648566e5c98128b6ee3ce2d2af7cf1d5300408d9b09b8ffa9006083629c1f89b8ceb76f35fae9bc172252acc553c1ab61ccc81390bf9c08598a2128b20a612e1db4bc96b57a9a1fa251022b2fa8c4008b1eb36ac795abace19f4e9025750295d9a669e51ffa9b039629c6513964e1c066857e7889c08ec29fb4376a5cd1fafd0b4c332b8a8ab5d54e64aae50c26b0015871ade45d418ae41c7fcede12c0e6b4f9544b2c0b57027b199bac05fafb14a25668b4e2424a3dc5688c104beebdf1787653487482318c77b20b1358f9f8caa2dd8e0c34273c885df157f47321d52a28cfd4cceb10a126d54fc38558fd8a74d39380a093e4b9c2c113292474019f0f6eadda2869875de4cf6ee127e95573f730c7b3b56b92f772d3b3678a93090925e036e6db62a9b8c649319ad6187a7ec154754990e1bc03c140600d2b8954b77bd0cab2557a8034e0c2a0b8d9884433fc80b7ba4735d92884a7494c8a7fef3977b791e0ef2b01bb122a867bcb9182d376b726765f1af1d29c981927d6e42ea0d1582c3c32284710c749a4d5d7adf7d761ccaba0ae1a56cac9910d9fe03c106679b773e03354fa5f9ee52764ad143e83b57f13f083921176fca13f8f448a07e695707fb497a42e93e83a47fc60d7c7b98457e47c961e76ea19c677dab2150be5a006835f193b9b363779e0affcf2f72c92d629c3089620490dbc8f1a273a9c7b6609b5a30e18670c5b9505537cfad9e28952b90fa1ae7c3759cbc8d3b91bf387f7dcfa86e0919c23d16fb2ca2c0fcc596439b3e594d0ad5e1122fc5830ce5e8e5b59047c39b7bbc3eacd0b18827d881dec2fc59b3d2c0a069f725bc11d228a645b7257b396ab9f4adc8de287b5622f2f895e8ff590bc7a7ce3673203651202f3086fec85c8f8c199693fba08b20c1a5f328326b3540964ed20054f2aec3ff8946b252ee0fb23601fe6cadaa911609c5be393a801a6d71d730d27596cbbc122b6d06b026fb59a81d6b9b4e6c67d458df4eee794f47f3e3e509b19284cf95c39721221d58d61dcf058b0b33406f40deaa03ca0b08441490e965685f9abd683faf466e576db0318cbefe64a2793211875c19e386859db2b44370591d80e52688e5ffafe0ae95e4fd7c22dee48fab957675981ff5b71a8f8f48c8fbc45148c53a0b385057366e71175bc8be5d7df388f5987368feffe7340f15125ba0524674036cd8c3056e604c505269014a3193d893c12b70c5fa2ae7b20321e666880107c52f1f92b1e85fb9b949ffacf07ea1003b072248e77c28c109d093508f50938ff9b5e00a64f309230de11c7729a5249114f74c9b7418739fc54b69027a93b142274a151daac771aae6e6bd2d1a5273bb7f05bc2736a8d3e79e03d36391a6d5f107686cb74a11a5e0e8c1170fbb1545cb96ec49a5837d41c61b4dd69a325b85d4954c9fe7037912d391ab2c6bc48a41af347aac33e0c3102b93992efcea97e67ba53b934f01d37990b7288f1bffbef3b073690256bd05c7ede8c78e3a687e8be6de011a85ba0e66ccbe10112cc30a6bb7a2fa716f09f0fe796d2eb698515201ad9911075df11cf3979c3ddd7a28678f8cf32769092852526d2c01a83e67eb4705aa05c4c0cd82c3bde1b2f93456c50ed66b060647f0dc4b931ee3f613730e56b859b9b56d3c8c9676c75efb57580ebc7bde9c66a9aaab886d4660297757c79defe3708e3164ff4986b93b2b9759b71e97076af3f859b1dd6c108a997d67f90c7ec889d71b50a412fcb385c834bbecd8f8eae3f989a577f3f53afb592a77407bd938789780fd948df71fb3e6a2bfccebb66f1d9516f287884734bd9c747d5577d5b960c11807a87de38a2175070912305fc84c6a0c894250af2b692e2ca82fb0d689491dd7e4400bf7577cd80643372198f77bb036de286955b23ed15d570dc59e4ad1f189026497335c7eefb369059a73e010e7d5dc298a73ff97f4e35012a439b0bc4a57fdd322bc3a16bc39acb9dbee738063fad34387727d5ff0fa23e76d59156523b0d06c5bc9b0894f481e5987f5910f612cbf1920a02d1fc274c02b09cf3f32ba76738418887177385f4640ced21536ccb8896fe09b7c8160a734b703e4793fc25de09cf0f34df4d26b0a7cadbce8a3de5d487d038694999c9bf39aac1543e0cc54b7df617b9b203df09483610c36ca6e1caa77632a0ea1e6d741c684783666ff17fecacff335665f4fb8d9a0b7439aa5416acc2c6b2705e122210321a978d14d1d99c47cd0fd943293261de1a4cc29f10b4ee59e4b7949e99d6158b847553b466460e79d2d912e5536f9c90d7b70e30c45ed10ce3a61af3489ce44d48faf998af7f5a78041488f8c60b3271c58ba2e21a4acf83b7d66aa41e3c5a49357f866fb6c6fbe6cf42ce89c6f838d977a6c3796b1a25476a636fe9545af3fde41960810ea769d1eb601599cc0bff1c8cd6bbf07339a5f92cf2b96d83c70b2b09971f129806e43f465013098fccaab4f01457a3a5f98b91bf8a8099a50e85afc739f6c9c0bc981ba1599880570cdba88c5ef2e3819dd2af6d590bddba9632753d8652b75384acf820fbcf7d7e9968c56973d0f33cc3f5bf2369d503e0cacdb29e5e8bf25d5d1de013c94caf5a4187c2dcf7e38129a4f2d341075214f924e1361422713e453862c087ce86043dd9586bd78b276c9a78bb65b70ef0e9039a34d4b2c5eedbb0122ced3a3afa588457cd6f128053361a43798310e046848ab1a04eb2d3dc87a63b24eb86496d3655175322398ec4d1059693e167586584405753f217e1a639c1c9a81062b27f059277f65689253c215eda483a0096ab7b8bfc6ac4d6c88ca58d6fab29407c46dba2f34be96ce7eabab208fd9680d87db7aedab36beb6afe25fa2e285a2b00c322e491cda6101c1717b7d0a04345b49e6c75538aaf048f842a97ca1a104e365cb41ed94ce3e7f89588f90fbce015c092a8701d6a602663e1752343c99d17860d898f240a072808ed04b43378aff5cb632cd2f741392324524858f145dba3292a5a0e6b83465fd65d3c1411fbf056468be5a15b3d95ac5b5b3c088119f7135793c88128732ae88ff5c482b6820043c9b59c961f609f6bcd42c93183762e9a73a54095302e7fde6fa92c01286dfaa484d84c166ad630a1179c4bf6f19aad4779a7f1208f5ce3994fab7a0515baaae66863bb53db05a3672025dd18cbc07f04eab8af3984661b763d61b2b49ed4a1f07ae2d76aeee45516cf24d60d6f971e69cf72307bbeaad3c58701a99cfec2adf40e14a78ea472ec4e116f84cd1d8cb59e47fae90ee7dc71af9cd8824d9ede2be4a45a98dbce4eeef5ef47e25cda9de2f5b03df886fe676e3042c6aab13ff68f3c672e73f8cd7e50c55fc95e13bc5cf04bc9e063041b43df50802efc9b30ad06234f07d2b90a1a88ca73f4038c37871bd36c337457b54ba07963ae82d127faf2d79b0b6a5bd15f6c98ade9dbbfdaf6335f4514dddaba42894613d9f8dd6b6ae83ad7bc2311862eb865a685aa7bce0938ab9d2615060a979c2ff0cd9967f6f3cfc58ec64e3731c3b001d9c24da8c8072df575b03bac5aa6ea03ea5755e535323aa3c3e4e59fd27ee2e87fe3c1b281422526945b64090908f0d6131048a72f597a420b5ea98072bf7297f12e882839820456b4e77713b3bb2472824a9d4ef3bc1149409ead7817fa4cf259952643b8e758bfedcebf331a0d1d98572745aa30820d2104df5bf2352b752c8582d34a4a226ce6ebfc873c96b62e99f807a8207ca4f494b02b7831e6d7a9b5ea1533e3d92fb0c77983d47018206a645e3747f1f205af4d8478223298c990370255b71b488391c3727f8b9f74a0be5b1bcea4a228fae5f48cf2f3ec3f2895378801546c36db0c3a7ade607da8f045e48af6b1d9f26cf5cb01e6c18a573ec3ce8459a7ad7d7827033adae46d5d7b7eab2ddfd631d97529dd2e96b9513f9da04cf7bc6684d79b1bf0b44539ca14c282403e462d6e3232985fcfb0e9f885ac37bb2affda635e66b3cb939387c0a8ba4802de72908feaac6f74a4dd65ac595c9760197d54dd694855495a94ba32d495c5d75fce64930fae7cd93ab0ff46a4adf647fc0bbb5143bbd209f8c604a582d4ea2204fef8ecfc1851f56f4d0bf973bbd4f61c300945e448b2416c7c2932f10af76a4b70da2c6b39b6781f98b94f22cb18dc89d37992e14f45ce2960f0d2adc34bc85160076faeeb865f08286e572e7a1b80591713960e8fff15bb64c29174f364504e8b515c61a082e2fb72483f4eca7e27db2533df0f54b05792bbb3b9074d4c7495bd125879d854c8e52404ac862a6027a7534bb30996e1b0c45348449fbbbdf981e8703199b7010f23c17bc35f06fc2dfb2730b014242d7adf041d742b0a3daecdf9028d41fb964a40a060306f2d4414a1cff99a904e39d552f31e70ccce3915f4280afea563201687c5b529bbd346e1e1d3fe98f101219825153fbddade0d8ff1b681cdc579325cb6b4e5d609294c3b33e4c7a5cb6128897fba0757f7138690df5aaf264dc24ae17f2d610fc03b65ade539e06e22331df4a80313c9daea011b705ebae51f3b623bf5568434e528ff2ebf887fbf0c35a27839f6f4463f2b02da9c70e469b02e3cb1171c47307c8a4cf782f4403fc33e44134e38fad1a19ccee0498ead75769cde6aee2b7ad097ae672e6c7bd1d278eb5ca01d122aabd3d48cc6b336f0feb1d15f5f54349f0270e15dc25f9462027ce8598776f15c3c9b23d815ee44aed4afa3eeeca725616477b08a778da7c18e8a9c6d76473b6f42af8470dd0d2360a14bad6248246119bf3649aa4dbf9415ae82c231511a8a249005d5198df1b25f1fcaa82daad8f139f70c5514a47035b97cec99877c98da60f80d1eae903dd36ac4127170129f18c6c4136628f626a17677ed459bfb06b7a1e42a43dbc8588b8edec16cf774d4a6373ad7b3480f58be0631c0dd34c389c109d9241ba2726673567aefc8f4757eac8afd2f6cd52707d2a23c352971dadbf9831704de6696c007d8a4fc8f28446f8e6fafab6fd1eacbdd8f0099868f94c789ce4a607a8a6b64f16dec9716ac14a6fed3f0ccac7f2afe3e55d5a3ebb6a10c65e52b49612074e57131ec4b59e5247c54fd815ce43947d5aaf13addda25481f3b623d1725cff612bda148003478a7450c0a985472168ed84db7cdf3982f94b5c840500a8056a33b37cac0121a492ff3a32d4e063cf5c0ac5c102f4fafbe00c6384de931f15b1c9a7b96b409b15edb0a4a2ed9367e2f5c1e9fef027164c5d306c509fb920efa0f72e199dc8e3ac8ad637bc5064e26f75d7e8d8b6c3a977611aef6cf2d07bf8f9dee3a115d06de25ab5c3185a4d703f9873eb73361d2ef401ae2403089538bfe8de18fa5864d7b40fe8d9a06e2c8baed4dcbc75d21266584a79ad4fa01b86d54ecf7bbb81c762e1a173c484cf61fb86289842810c373dcdb58ff3248de56142e533b03b9699e773d0b7d74b13c6ca819b03c6971a81455e4ebb1b44c314300419428af068e27da174a467ae7f6a968bc3973d0831be5a17562e5ab9c21632ed893491adf0dc2d35a35d138a852fb0e8b65f6a2daaef140a747ec2c786678bea6a537a1de37f37402c022cbc34963fbb37480ee09e4c957d85428081fd89c427a0615e7fdaa817c7ec0e8c4b1e3d3d7c6ad64ffff17725e293a074805acd317e98cf637dced85c4fd75666919cf4284d7b8d72fd018cc285db39d895af4448ce8a8ded81d921fd2bc282506c498c4e2da1f413c16ec3ad6230f75b29a22e3c9b9f339656ceabfa716234217cc927b9594a0a931be60d33b48fa991c8b6c3c9cbe62d543d62e4c1d5427950c0b6cabdb83e220d640da5fe887e2e7ea410013cf10f615217d2c1bd4c9801a54e54d6088fe574f13364c4369a14daf067811143643c7603e188bed73e064c200d93208ed03ddc97749371e4142c89cedb353ca4520de4b94f1a4db54ed89999cad258126e1d8028aa6b931cd9824c4d3b8c6d6e79621cf908563fc7e79877404a456b4748904e524e6b718747ea5d18a7b43e804a652e26953c22cab3ebbcbdab56e1103da2a75ea89d525868fb74705179fe950df9070acc43ebe05ed96c1e4260f67fde1ca5b5be9053193be6acc21ba12f59d093603ef73fa63243555e7467634b08dd83398e0ec1af3ec965ac44ee2ae631c2a6a027e75f70b9efe70365a8f6c5ab38eb91c22d1a2116c0c1f552ad9f432fc010f04232f540344d93e8e5396d956a7f3cc0de81890e4a79af8eefee008e03efc0d8fcd18034a50676fe3aa0fc14af1e8789ec6191767c5a0e6b7bd72f56a5505bf666b09f506f4cdcec999a6704665b47c12d8df5fac317acb4bb1a2834aed1b81019fe6be3157ecb7313ecb0a86ce499c94efd6de8916332216c2b91702760d8bb99b531726b12a19bd0927d6f21ec0e9cfc08febc3a0c319b0da5f70e909d2cb9e7c5f36b2f4fdc9769a9ad8e8f85818b4687b3494c81f188af6bc2cb2346125465b473bb68850f964a0b4673050b9e92b9604e55faf94b21201fc48ff1bfa87909d3c3ba5fece5c810f651b620899730f3d07a5914fb7eba379551bc04e7955b7a144f3f790e5649cfef4934d3fba9a762c866a2bd7c8840906e8f9c9fc08218ee78b6be6e2fbed43e4e7a6d1577cbf37f4c7d13f0f64b920da753128daeb9950a3012fdff16203ff752e18ae3bee7bb3a25195d25276f320d5a4ed1c3fd92a969c4a11a371928107779fa03047b67e9b3d08ff47aa178002e387a61a8469b324d3a94c8da07d7a6ccf674e6893e18918c026bffce4ff06a69a06b955cec8cfbfed1e9c24e34b4f896c97932d2e08d87409d4e0ee00655071b6761a42b077682c7c5d5aac8738b23e8ba5718e1ce0128129d966095ca65ca2bd5becd846b06f8404192f01557be70bcecfbbce174e4ea9725a9fd2a50b226188a4f81a170e06704cc194d45eec5634a2a34d9614a8deb82c43522b7e9ad3f06a079874be3da898ad00d2dbc5b50e9888f16b920bb83808fc13bf4414a4a0028cae8cd054419325649dc82caa17af039999c1f8c8e286f7b689460bc6650ab79ef60731becace6541efadeb580a568db9f035e28477beb43098822a08373635ed3e0a1c424d39b78894f5a02a733e2f41435349b7a8a4c4fb3d99f6174221b96df72998898be5c7a42a34e2a675005f9f2adce1a31753619974d3dce64fd6df52719df52f5ef2c11c19f1155a071314dc737fbef580f2f8d8e149b6478825c32898938dccd68a4d684a4ee01a76b4a484725172c6c0a7a01f881d03b76aca15b5bca3eda1197e1e3f2bd4885086b8c7e5aefa5e1392ec0a9b00a491dde9cde92c4758d63bba82be85ce833330b4e865cabfefc5e45c43915b3897db3e596dd9587b57502e3ebb457f704b8a8d2026bc122a57fc90add24c3e1173df739584da7cd5f2288da3d86ac7c4012097b5026c4ad700e6cf21fedd59079f90e9a8a2c114d4fa822fb3138662508c6459ba2c8e41e0858a9003bd29dafd78524010ad540f4c577890b0396180ed7fc8b835c594e4f4838a6372a3e05bc03731d06b7e25facd05c170095c029db5a9f0e4a808437134db68591acfe7168897becd39916e1730e865ac4b4f4fb8342d5b9bca37b1df2c26a299364979d7ca364a5c999ae3c1ba85b5117be1872d734acc2d3cdc4023973d30c9fe72790ce1212711715ffcb0ced560360752c72281f719c6ebac2c44c1d0e91fe2a5f5de62d9e47a18126a3c99478fb1bc584d73008a51029c0ea6628eb0c17456523ef1ae0701d5cc8815e170f9cd323d01f4f2fc3a047d4731c42a8c8aa890cfc8b0779cfb111238a7bef866b47c7c30c935cecf3e3c7e0cfdc6899f23a01b9c2a7609038d3be89f8570e410812277c25270fb61946daa455b5782dd3ba41966d096795ec09175e338f3458c47ff71ce05478e3f6ce3bcc16bc4b51c38353fdf6a40f76df655fb9e118093af60137bba5ccd8e9658fccbbf3cbc894a08fc6cd8bc9929a8e972870dbf49ab1510165fb06d7d504d764fe651adaf0e4822218fcb5be9b2eec67e944084eac3f6f08b3e0fd6fa2b25b07b08ecc66ece784e857f2a850e4a6ddcf53818e79a54058cf51dad7438010a7359d1ed6c7df62b07974b00f6695e894c18d1a993d7a8fc06d73fd338f96378d72e55531b8ec3c9fa0d83ff3fee165423844884793b34be2d56ec5b24a4a29244608d4f64ecaee00a1f159dcd014a2db8ed8cb1eab9384a52e9b329ff061c6cf776bd295ad5e8bfbe35737bbe48705a4efc0e5e8660b6b76c6c05df1f38b9801c3335db0f12bf85dcd04e29e4bdb50388f76db654a2c473987867fde990f720a7345aef647d5cbfcf388269aa028162cf58aa219195cc45883ba81d68c76b7dca2fe74b7165c50800312aa4a55ec991763cc416a0e2da2a037db9a9ae5f9b822ce2828a96fc3a2846d2103af7d8c5383e9a07c4f3497d3d54c8482236b945b75d9ec1f135272a3cf544170fe7efd9f7b94f6178835e45a0884cb01ba144a5fa648bfce4690c4a655c5dda0ece926a06de71dd5320a767a782e8a03ba4179103ba965969605c758542a7a80d6532d517ed4b81c3d776cbe64bc57ea877f3c03ea629500d1d7a49b16981626a521b28c7e350522026ab2dc942c7864c3466bc9954bdccc3fed5a087d3113aa59f31e430dba8a9a6649eb1db46935fb78195a6463f53d0a1d120339ab02c182e6b6e2b0e4533393c07b0bed7fc7088826ca6f13dca938f7f88d49889a5a1a03fb71b5d9e7b48d4e1f96dffbcc0d7db860025b87b507fd8f0caccd8b15970c9e3032ee6599289c2a43111606b0df02dbb710879d15636025db7f621f818d2d39b57bfaba7e69becc94787345855d8bc4ab76b926c977a92db3b8c0eada5115a8c6e1fed7dabed51bf634bef3972cbd1f0ff52bee3765e0cd775a08ee0c31d6e95a864fa6581d7743d1873e06d2864cf614aa1e3578ab4e5ffa5cab6e1c8d34e686919ddcab347cbbd06c60d983ea575bce265f752525b599d865a3b37ec8553f7cc69be6b0f99b66e4f033acbf0454a3a31eb5856fb9d66d62cf7d711ee1b2336b8913a87cc39c7f53e42927ae3311dd869f7f94508c07c14b7164e56498dc0cb4900bf3fdce56475bd1074ac87ab96d51f2fd39a8eb2f6f7e14caff76a28e48c4a2db17ab0ce45ab16193b2183d4a9cb959451b6502171ca901019611871e0d0d122a437d61eb5a732439654e4a0df31c786cb9c806cd13053d62f0b1c5db922fb69412e47a014ac1647c93cba9cd88e8d1c7148b692b357207e0cb9c404a8a29eb54da512c170cc174efd6b95e71cb57a3cb86412fde34e35cb4c52142ef786d8e1821894a0f85418a4fe977f1d441a817aa4908a83a6cb2c4daf5f2e6009ceb203c80837a5d5e66e5da630eb27f871451b8919036ec23e5d71dd57ef2f8ed653953d9f20417dd425ca4cff6459120e94fe19acbc752c707e4b43adf8a05bd6c11ab5271c7ee27c41992922c180a29e3519720150a3fc0e62d79ffc8d7bc41a90b9f9b5d8dc3ef3836b98aa00c234b757e08090df8ebddaebfd3388e25d5d6b6e61234398819a2d5c2a3adac462654828920db4f68560d602993553b9eee3efdcc74f802221fb137acdacc4b2f12bb49987fae992b7a803230a494f0049691544df7ea0da918a570a3d25f263094e2b16a00721e889ce5aebb96ed1025166140593d0e5b3e30db4d283084e1a9162cd645db4059184f1986c3dea3305d1e0e85d78c80acf93560e4cc43098dc0f57aa5a354f579fe25490cfc6e47111daf35319060f16a487e11383c912165179f7972374b797848c23b2739cc2a06ce89310b3d30aa9623631979a57777c64af79368fceef3eef73faf4257d15f54bd771769950e5d213e24625be2de4da66480b4582608abe81fd40be972a47ea8bb56446c90d36b841a1af2eaf11d105c0b691f5f9479fe91b0fa2a4d8bf9d5c69cc5dda74d500e99d850b6c19d595d22116532913ab01fdbd2281be4279ab1f85b065c8b7a2d1867b61a00d9de4561de202c7b6160dcb6d357cf790b8a85b51bc8223f5b61824bb4c999d70a01e96969893e402bfd1b27f522fd09e1fa2944c90ef98f0210e2029cfd7728f5b5fc9a806e42bd30c86f88708926aeb26457321ad0c4512b8a44db35d843617cde4854ab9513b97f4e05f3f3e085a52c6004eab15240cbf53fc01a750d5cba81d921f2f7cdd64bd4317171aac603ee15b8d16a8ed7fb3ab0f3ae8d6a0c14b88233ea4e173f78024cbc7dbfb10a0f0ed073519ae9a74baff601883c61b569849fa91906988c3e412e27a4ac05db5c355ced0d8c52eccd8c32f564d70677373ee20a37e32816f7c6c4f6356f09a43c7019352d0047099082b74a3a11527fc39bf462ab6f185e7c7db38ac3a9cec2b6f4347253079dc4b645f2cfcb833731ccb73ceec83da9f0229a99bf78d67c8468d46ef608ca51fe48e79cbb3bd2ee77aeb8b07b71b4866af3836007f59304715f09123a39098f93e09d6e591b36ebcbffc3cebe6982428256cb73a1e77712003e015e011abbe4647a60d495b6f1ebafa277686ab65c9f5de15427d7c93992298a5b0f3f9744dc7cbd92fab6f66ed23512a18e1357ad863b92ccf5e6ae945ca690fea991f928f2d04a3a0b84a89f8ef5bfbc0b02768d8cc14414b56d5b3a74a146e17aec65d498dc88a131ee248db3fa03896529efbbaf889e756de76961214bd438181eca52b465dde4628aed3b13c04d794747c232057f82575526e88e7ab30cb1ac15db2d58997085be0c541cfa9a2fe5e78ffe64f36ad07d97758f9a6fae27b8f94c10e6b375f9b2b6bd4cd837c75d8842d1901683a91556af9ce2f7211ce73265fd8efa7a6d5e70b73a4119ad934c19aa4356edcac6af7da008bf272fb8ebf73a8e99b98ce054b5df806449125ffede982277b04dd201b98b8cdf5cd9ac4b87c26947462d0538dfad45ec00b4dbe4da17d87e16c9edbcd4f74433a0552cfb37c3b6a9d930b302583c37c40de69d1380f4caf8c14467b874abe63d071c39365de8a70211b8e37243bcb965ae955279b906279c093e44f60d80b541ea98e9b70059033e171d444300e9ab1072657002c8be48d08301eaa5817a68fe664f430214ab8ee4ce8722a8a7afb6dd961dd32263414553ba99eeb6234c0e5016ebc286143c1f1f2a8f59cc32d01ce81a6e9a342de59aff03cdc3b073feb09e5d46d4dfe57af13496e14cd4aa541b60ae77f415c251b2526359191253e194a4369a38a78cde9fcaab74d68b4e99205c086584b8d73ccff42212896488143230e0ca68de150bb0b0cd6017276e86644a2bf9950a94708a895d9c8e40f402a33ce2e1164f1383d202dbc01753006eee480680ff997359a0fcc2fc386c32f4380047ff987ee2358e94b2c55e0ad3007848e6a2213e3045d6546871b4392e4bf27447a1dab35fe9108c8d6dc9f618a8932132257393dd05e5d82dbe1644734010aa8ca6731797eda29c8a2becbaadf8e348196201bfafdb9ef1e7657ac8d10ef9f2cb3c43c922bd3f6231d674c02913421b0e34173f9e1c255b4c38f3cca1daddc0d7fab170c20d4ad1abe6303f30dd530df2f54b50d7e99f2f61f9e465f564364cff639777db25a35621ca2407d6b9acee7fb28d0916512c41f5ce912b62bcdecd6634786876b0ef32feb62154e8348357fa4d8d3d0af9e25013157a34fa9f8e593696c6e1a9d05cd281fedb349e76c9bf94b0ff6ac52f8987428c3a1173ff592f6fbcf57db3010764a93af2ec584722c0b19d523861e05940c3440865a2b0e1acc33c10ea06a89a3b5f94758b959625cb5423820c427cf2dc7ad2056d078880a5b598bb5f33f5e64d41098ee827c81243ca0a415d98c16e8e233c2d99eab25a81139238bdf324080effcbdc4f3fd21be561ee2c71a367fc446a704931a73e0bb57c2d6ccac71b13530abe0f6e08eec9c0d9a3abf41d122cbe047f81ab9de06db533ce1f53d3044ebe1af180e9b0e8261c5fa50bdb55f82937c8dec3dc5db89803a4ae8eea077f98f25c26fbb0e69b014d1f389b81d6fef2f8253be1dd0c75c895875eb2ce6295e0fbb83487dca547ed1b9b797dd59fd604b8d318cc6817a0262256c2d02bff90e83db6e86e297f4bc04b83d8da4401aa5bcd48f4782d28957ba937c7fea6e7642605eef8419082cc2e4eac67bcfc518b9599d58cab8d19fc4eb7d5684ba74055248b6d80848820a5fc1be73f8829fadfef308442f440378acbfa063d6bde55fa7725cd9ba49e85e8ac3b6e20de1073133d4f41c46380a94448f8d1bbccab9e426316735905389d44c3e5ec0ffc280a4ee53b3e9cd510c90007de825163b31c1db6939d364f03540ef8c72900a85e4377ad9566b927014680d6cf1181af6067d650a02044e4b0467e3ed2c5f221e8dc4f9033d731f941421194bbf80f7fb410256d1d78f6a78380e7b3142ae03511eeb3511c3b3f01393e58fafe4a7c04e135c5e4abae485715f37a9e0b79fb7df53deb01f49a24d5be9a62e9bdfff740f52152791df87ea5e397cb5ed1983ae3541d5fe77d6a992614f017f29f2dd18d8ad9a9a4c9b114c78441c905c7bdd1d6d97fb9f36b96d5fff062bcdbe7a65382ad71c0ba29c709eb4b5a8ba5486a4f3b933d4dbafb44a187d04fa93cfa5e59842cdbe4dd4cd696f2f4839791c45a654f5c2f31ecb5c8eb50127b894d3f4bf5ce7ba2ebdec1c0d422610f3d4d3012d335018f8da7bb92baae654a50bdbe402a265d594c1b43d4e0d5e01b4c3cae654aabf7012d544d6bca0bd577af7037417d6d3394abe3f1d55d881c0d7e170c20d67ed625fcf66651f9302ba18abf9c7b31ed431001fbd6b43ed03dbdec86fd6d724b1021b1251d1e752f868206b443b698b276533968a5e8b4d0b8819fea9ab60b20bb03314c3e12e21f83b7e88d2a830eeef4d5848fb4d6ce98073601f7f739c0a629bdf6e8dbf9c9d252834436522d3a59df7c824b842aad44751d047ab453a789bb126459cbb13d38fe4be92ec2276f60c4ee57957cda994287d8a505c63c439957af9885b5688b222b50e0d153d91eed5ef9e7d5189f39de974ac488ad20d6d6071202f2ba5976b786ddb05f84dbbcfacb7d42a2a601413416292b241bdb1d47b98415e0f9aeb859176794be1ff1eb449feceae49f2ece68bfa15765323115e51720785654b03f43e6b2f01396453680e7626c65b95af76dd5019328745fd1331327d186404f23c72da1c877410d0de61f3143def86ef3d9c711d581043f55f4b001d581b6ad9cc1e51d29b1b78275e2290624df062fbcf162a373a0fb6fc42fceaa9eef29292529cd9b7fce389b3cf021c3411fa6250a2f9389427e87afe1d3735a94ec424cf2d6be66495caeee6c88eceae996b1a80b1008761a6f5ca64ac373072a1c176684d85f7b18d7660665dcbe586542c1889fe577d80f86fc997dfd196a2b5088ec56949834d867f436746e9c283d62954d463f14652be3b3b4aed324d8fe5b181fb2a1d7fcb1aa4d7b352ebd8221662937db7e9c965603d5e1d096c04e4ff277b35b40cf76732ebd8302bd4b7945ee14c9c0a4888fb2673c0b5491afbb0f6694c581162f43e15acabd61d02c4fccb6a204c587bfb8550bad9a0afb6a79915e403fb27f28a64c02f2fec606bc9f63bbb8d393b645c33576623cd172eed23766d153a7c0d821987e0b0b426a25bef93618da2ff956167ed3eb14fdb1ca1b63cddd8b7280ffe87a8e7390b17440128e4003cc888c241b770979c6813d0184e51213c0d36837b00689ff4ca70d95fda094c6f9cc3dfb304f947e5895e5758516decb922181c3e344121fa9ddf806c398709a9d77c9e1b58139d6c494b4d494b5edb12bf8d6faf92073f6a6ec834fe580febf4f3c7c282192895f4fe442e9d9102d6d3c018ade308c177fd2a390007655aa0e2c495b9a84ea1a3a6ade937e5b6737fc2c40b80fa33d396d10c18c97529df0468dc35bb46a23ea85a1c83a6f4b2e8aa4a7b0428051767654414a8fc6638647320f913fbd420f0cbfb75031c55d60ec32c1a23503f6c5d54310240f80ccc1cf61682c33d19b825bbc9b7e1cee703abfda31398987968cac24615e5b2c643b7cd0d714557cd87033ff9f48db725f9f7dcad528fee495eaef5315113d2b9c17360f65bd0e9c053ac1681a11b5b89a58a5ebb54ef5b4a8ff95aed6e36b34e99d49f7241c86316884a9d24c418632d1032993d1b4ca2137e2cbcaf6247fff31bc7a1a2b865c2c64ec0a53f4d1fc166bf8f900987fd8d1a75749e61d3a0ba7877f445a3c924da0e77d71148a01b18d0a6e44c75fa4a3105414df0ad2a4d3585c17653c1191e2cf7724a249d1e4218b0a61a9ab3adbbad4e2e2df501cac0c0ac624da7b3ee2d43acd4d142dcb0f397dc5e2cfd096e41e905218eaf37a70843be5d5c607d4518e65edbabbb799059f3e35b60fc357d59216987550c47c69c94fc39bf0c0076154dc8b526e040b9656573ae912c69ff3d3c8bf3408ea1d5ed1a16e847c5389b5024206c9074c33aea4fe9dd816bf127fc5894220cc794ffb9adb0ebd472bd29ccbd5056ae6579110fd6f91bb4abc95dd8b986bce3f321997143f32350449510a7a94ada34c1d6ecd5ad2e0492e1dff1590200f8014a23c728f9733f7475a03670e5bb527e021cbe53d30465ea31f19466f6f1d9301fe3f4800637f9bcb16a11d43bfee767b0311aaa4c672221c27e18d32b504364bbd619f470ff6115db4b257e2e2e8a51c1333f72d8ba55caea93e8d868b0792f31dfabf8b36adec8208e6fe497f9969d3bd20f398fb0335f62db573b01106bd078db6ffce3547435e193bc1fe90fe94291567e804a909eafad92a7e018a255fa51074258a899a0b4680d137bab908c97aec4183728b1b3133c2aed89e9d5d06a78c1dd80617f748882e11ca2a6154e234ff7948ba870611027f7328bf9862e54b8a1b57101c3d0cf242d32c324346948b23ebd429aec814f783a8cce75b6b0a05277f48ab510904ff9ec1e0343bb0a26eb9c97031f5aba3ab03919be121b3c01692b23e7d6e9cac85751f76a804a6217308acbe82c8dd6d59aeaebb892f6517009558a67eaac29fcc481ab87e8d490d4b2f9622251c4df7bcc0e4aa2b75cd9a5a9f03f3014e630f9adfcd73951769933bb328da0b828faf769cc659ce32bc4770fe377a0713393badc4b60a3509f185222f0bab5440551a7e4f58cf5e12b7c7583a2cdfe29590d8e261b4603b47138a409ab206de1841acb7fa371264fb68d7fa0261b82f570bba2300745c8dd4ae842019b14a00748863b61247fa899b307ea164ccee32fc635864e87d41706c58bae9b81b339606279ad79d8edf075e088d9fe09b63e16c31b6b195e506b78a4778ae78ccd4c2d8ecfee8ec4e7e16c79960a711cfa850f3fad7cbe0d41f06f92ea958bbf8d22a387ec670c72cdb4dbe6c187f57f91747fe84344bb9a86e89019e8b92f840d3b4b16b6787c84f78012ab9c2edc4e83e006386f457ba22e4bbd0023b5a86e37bfb3af4582754197f8a21f977c7d23acc6702836c8bd47354aaa4552c015c8ff30bd7fc2a227b5cb8951b03e4d0ca8722a25f28899cb4cdc82708593ee843d936e434790e002f665dc7ef5a5da34cdfcf496913676ebbab5094f3c03d58afc26811399f9880ad356395ce76e0658cbaa58517ff4bf125ce9fd2e211096f5cf47b5193fc16d262fb84a2eda5fa959de75e3d603904e759a6e68e9f1865f190e82a0dcdf6f35bf7aab4cc178b858f76fd19050d28cf0dac2bbcdbb1242fb019a000ae7bba4521b85d448ecb8e085661fb370a48375ae9bdb041cb73426faf4725f248c71dbde7683b0e8a6288cb446c49d61fdd05d7e04fad1c5ec314b15ce2a9378ec722a37a6c40147b0f5b6446026e1154431f006a1b04237e2bb840254dbbe9c3c8d5cafb61b6f14006c810f6067166a6aa420ae961419e2f18bb977eb4332bdfaa2cca2524d2eef74892b771f7cf80b918a05f8f6f010af26848b858bc38cb1f48c9184a92853bd6507c0b321abebec6d3a3f0c3de64f3fa0b46aa9ba955e80b3689a9ca340163d17a934c0d447d3a47c16618d199548a3158c1b2dcc7d5757246c30a012325252feb1a6fdb63924b42f9d86639efb3e74b5f49e023b83876db7a2e9bb19c1f2efea5c83e929a4d5efaad792ece7db6788aab65823f2ab893a3adedb00932957ea9afe2d397b225e749a55daeda89d41cb0473403b284b9c4451a83c7e1867170fb55fceac451638e48a84b78bf22a48a525045a6b4f5ea5cc53adfade5012720a62a16c02e8fe25b1d509ec4a22e2f93438e5894c33b2193d97507f5a49e0275a1acfd29fa88922944c28c52c1eaad42726459e36bc35e760a518c88b9537ec6cd93a423a1c288139b900055095843f5f62d74130793956d5f403bd4a2ae99fd388daceac5f056c4da34a68586c866a76ce88f327a464fe93d6770c5953ab74472b28ead355936af2bd700d7569ea5d224d63a44a59d600366a5b4fcb8c266fbe16678338cff0b5f94dcbd07d3a71029ae7b974755b5051214b2fd84d7ad8bb9900169912bec8fea40afb8a6f8a3bf5dac44a99e50f999bf75f2c4496a463ecd4e2534fbe764585931abb4b5dac3e61e8bd74770e25ec24dc6bdc21a3a1783da4af0852020fcc2daca1d9f62974fa201f96d28e5fa401766c454cb0e8cbf5d41982dff7328ad6725d0d3bb766ba6280916e0fd207ab6b8c7bb5492c06988a5caadac12478fba64c5cb136f27d005f6b2326e3fc821bd2c6cdef8ce0e0699cea83e98da9ad300a39c4bdfdb35dce6a843613d336de3e73dfa34a0d5e7cade79c14ab4fa5bf4eb4be35d953dd074a16bf2f13bdc97c2718854290d3a25300b310d8ed7fe64e9dae0588b0dbbfdb71bd4b27b4ba9fdb12ed856873554c2e81cfcd268139b4711c1bb67f840b7114022aa8bb088c8d5d5dee54e0f1768b3b1f0d21e9f7c30b73a05f324d81ffb7afb595f346e51ed3734eed567800a814ecc19b919803606bb39ccfcaf81f17e847f8f627f2d97493cfd8eb62209d522cf42198433f8d0db7188765c6e777baf4f6042050c21410a85187bd9f0d6608ab182ebd7df545c42422ed1815177ed355d4c38765902320e561a36a97192e68256bda77614a27955a8a3e7cb07b3f60c5eca28528c2c72761988ce291594278c526224bdac41b18e662e180d6f9819c7a3e2c6311abe997c4a802c275789c5352d7cca2553b9b7f3d3b532d85c659cb16d6cc54527c3ff8a3765af147df756989c725a911704e67935021d19c3652a6307ec3c0021f6d610ab75eae2c7b4ea01d46e48e52565f5037415339cba85cf6585ff381d99b7a46ef67ef8ac6e435447d9d1c2f4d95c4b78696da25e266ffb11b4cc35744ee9eb57ff8bb8c9b2f1c881d21bb2f81b4bfba970f9c345dfc4e413c29946013c05fc646373b9aa27080f46c17fda09899756773fd90996b0072c67155f72c3175b2c49b03f0ea06ce5ac62744e018293ccc1e9cd1d7a9b393d3b066f6661e36255146ac74204f7d76e33f8adfb21676968c4bacd11a58cd144a2d4b2d045aac29c3ee96dd73c1b2db4ea74b56422359da53ad57d2c4b84d8f6122ff2661bcfc3dcd62dc8f0492d998dc958370ccb12b264ca6eaeed468df86de2e42973023e5f14e09dc2a05293749092a65d4103258367bf451d1cc61601649b5ddbdde0d2c2dd4877901ecae660662c5e118d2a8743331f533a3a3c485956533576db89b688defafb130a64300863a5d7c593ac276a429d8fc9f92ad1299f00ab507c346a8d6d503c1d1ae7428c3e3b3d426f557d34651d8ce50f3ef77909a7f6b57769b7328606fb136b1ccadcb4a83bcc55d24aaffdff62f09716ecf138a9726ec7c8267ba3c42a66c87b12ac6c4bb8ea50705a460109cde20ea9bd42804e1d3f458e1bd664050e040419a9e28e760f34830c793f7b0c9e3982ccfb91bfde481b0645c50ed3a05d893c122ed05a78d0a098111b1615fddbe4f57d059a6d83fb946d68c0954c2f5617f31a734bd1fb0be31ccee6e8c6d1898d12d53c9ef32f5910a5ae3421537374d0ccbeb1252afb77172300f1054e6ba6f845aadc4c329a21af37f1fdfa3241ec46e924ad34fbb757acc3c8444a53ac04f2898cd5813b25b74ce5388b5136b5a91db55cccd4f4b0ee656dd1e4e41de1a21c245d36c6980eb9a0ef613f5eccd6c8b6ee2314b9f5521bb16e3b563cc3d9e975f61d247f29515b2d65542e0eda13a40e122b4b3b2cf6e2a1ad1c9257565be766b02c94030c0ae843ee9cc4e6d1fdd3b40cf9c87321f40ff9bda31bce9ad02f6d1ae7fd0cd4fe5ad9f3641eff978aebd308e5fb26a1602f7f524164020e914f6a9fd796bb5b1df42d2063a1ce7e10d8ee33271fb080012ba5b4dc65fe97a2a2af0dc41a7fc47069365c524d0abf896d20fe06515237b67a10fec433f70497a8c7bc1e79ef8abb378605ce673128465283baaa3b83e0a160beefe362e34291ffb5b9b0b4161b92a23cbdbcb6524ab6b85f4dbbf934484ac127e51ad15304906a63a96bb96bd63dee8758b3e183470684bc659ae874751911e06b0f2a9c58b4d6b46f5bbc19bfd663517f6600b91c5b485888f35a6161a11dfaa2035456df35f7d94067d567414f3ed518ffa78115767e25fb788974c24446374d60cc2d1ff2936fc1b7cf6f24231aeda01e4acc0e0d93c97e8d8e084727485c0c86576c6aeb16f3e86f193653cd8851aa64aaa3cdc5b709255da5eeb0787147f5cf3d26ce907c7ce72bdcca78f1412722b3df909d1b5f0903a60892607abf7b3ae5f3f6f4cc59ad07977d79395d58057852315c32a2e80b71429caecad83e8391ff581db58a39d89773d38983daa69a505b2c66a644ff188b6b70657bdb7e838bcea8a4539816441ede856bc23faea3f404c7680b61e8a088d5de78bbfd506d986423ae7be80159a520f2c535fec3fb089b0a49eb75f8d5e10479d9008b8494e85f5fc56fa43f96fbb11923654bc137f280097b95be51e2be74f7f8147db6cc775455f88f988eff2533b0b724087f904bb6b5e55615a0ee48ee0bb8ad3d2d351d8d647a7156d848a4a0e9d542eba20670ad2bb243acf3ebd772294de562e43b7c6eaa1d6b3f63bcb68efdf4e69029471d548d4dd10143b1c097aa442de6063e820dc5e843c410c17f5407b610b7c3c283b85d86ee1c4489418bedc0fc676a7826d10ac4da9b5b1eed02c0bd7b1d1e602196c83f8918f16f53c09d2f5ecd320a93a53acf5bb17b9d258fcee6b807f232040716c615eecd48fad04c0990b138e76c0375749fac12aa6779b876a663374c89f4d7c41cda395c9c442975e281d62026c9964338e8a888dd5d667e752d19a18c0d4d0067514e5d3ac2a808a3e592116660a1ec8e8779e17b75780d7d3e893d096beda222c3f76adac08a0f4bcc6041698c04337bf52a569c9a576c76d7079cd6b5d98c894f9cd70189d229d2970d248530391f58fe9f3097180a70e097e83ca7154bda7b9a36e899f45609bcc6e987f13851b18e8023ba2b8a507c15cf954133886c2b0863904f05c1b688b009bdacafe1b5ab7025987cdc1e0f18d2c10dda243b3f6f02e0a71abc9d45845bcb284bd7c69dc2a604b9932a495468d8f3c1eae776976709236902732f513d3225d116a71ad77cb86f4f9d65ba30c0b63cec199289cf05150f2c87f78986a5a92104b1e01d510f4afd990334657de771c8a22820c315f21fff303409bf904a3fcf7fdadf455042a07bdb96d79aeed5f2284298bd1efce68ea939267bde7f2bde46f1ba3ec9e4705b66e5eb56474a8665c879494f0e7c391878db68ac0792aadb15c0a8344ae91bf011088e2a404fd794b5dcb5323cab6547a3e39e8210a7dad97170baa8cb49b9038216936244506f13648da579b01089c7d1bd711be8b25fe2a7869705eccc768fea3071018785aba22dd37be6fa3900d9dae0440caaf9001a53735739fadb9e7d165b080f0bb50acb1af140d0ee8acbd16067f086af4bffd9c0d0275de6d2d4cdff97e654814f89aa39b0249551c705df8dece92208b7cd1a4ed99a91c2f3d128e3c32002ddac89eef76a2ef5ef073ac188192e9e8a4ddc1de5c47dd695bd155eda58fcc3a3f5d54c2c052efcda14745ba024ca0d042c42df254c5dfefeacfe868073ce54868ce3b3961dcf74bcfc88eb657a4a4e43c1817260a23d714db570709ef99b135892f0254b1bba0f178a2fdab56f8057ea6554f8b38c0bf46978c318ffd2bb4b34243e28bb925174823cb0147f772e18a26f8ebe78ac88f516bc1f3e5b3503bad8d1fae1ff7bd40fb173f3db300b22413b7980dcbb94b05d22c2c261a29b04fee8cec40e8ea907dd0ae07d6da1fda97c9e0fc4efa00fb3fb8ce4a8540a5123cc456f3ed5cbfb08882ae2d07c950f233f51b29b0f1bcd01ba819f759312a9b2325cb331c0be50dd6f6888bd332fa594f9a053b7258823753581639076b829819f217c4e9ad5c4b140e53ae2bbbe6da17fafc3490bad549cf79579e1227b712cf1fbb4a7fd9b34928e9d39e4cc794c6b6c0c53b6cd53ea1690da437868e80fa09d94d4a2da465ec55510fa063eee75711ff0e726a1092fc9cf9294e3a03db006a98694d79a30e04f477bd0e67d4aa925f424aa9835f40ddae0edcfc1b03ed7f4344b67550408501874979652911541cfce9a7f72589e1285134718ba07ad5e17568a35ebca2e5ab9e9e6ba9387cd80850b5e284e15c24efa2b5f467763cc97bb08f1b8146a634d32c328b399ae287d72d271c8ab12e203ae917404e1f9a1a94b2f6486835b236b65c24738bf69f8af83d5aead69a17700f2ee1c1b1b88e25a5a58cd3fd7d9d047597509c45132c3fd17114b85e8ec6b11adbcbb971c5073c9e8dcbfd3d1c3381af29fa32a95a6a76e5027dc1fad2ef326d0277807203fcb88c71595b3455575807ee2836cc0c0633965d2c8d0f298ba504b2ee48572edf5ec438bb8c773b2bb677a5eb3c11f6564569eca881a1133bbdee83425aea245cae630ef699639fb775df10f38b0036390392f532636806fdfd76b2b2dd9f8c92709e7ede0fdd2e105587ace7ce034f970a99500a0992c4c62525d8ba2c1574bfe049f1422c5322266f6a37ddf690277a01bc06eb15cd67ec6a3ae9713c24688c080f43a8d74914b2184668b256edaaf70324d11cf6f4058c1230e222c7b033581be2f0cdaac529e2d5a868e8f1a89b033f57631dcc2405b7cd78c09846045ea7be3482998607792992404d63ae2a5983db056a3141bee34a528bdbc3db910160740a7a04a7382240ffd9b2d799165180adb1a9eb31e70ecc8d55aaa3ed0d7060b08f8d354043e89c3dfa55b4421ed2c3322ae679abdd08186cd5040f42cc47d8ce9643ece97b95a5821b4b35b38139e84c4886cd8be75ca3227acc55706bace08b6ff8e3c45f15cc72b20b2380255c86f3b8c55bd9832858caea22ee12c0aaabed0b5d12dd4ba2d9406ea8258123794ee3a2b181de8519587dbd48b3b5b670d5d0b7b8c0e6a921fb4848e593652b8fc54780dce6d97582e9fdba265351998c3f8f5b55788fbacb442b950f144a7bd93f395450c030172d1ceffae8fe1e3f29ed8aead1c7aa06dc0b3443ae63b17a4cc79da54af60d7d989ae8b48510cf74232d17b1b31d30284d16a577f25380a8939be31017ae9c0d0bd8e62a02e6ff60d2e9308d146581c5e73b86906e6771336661ea5b4199e6433a090180130056c523af03408efe090a2481ee0206af536de16a39f780a430d60907a52f64632e8efc40623650a3e19e0b32a7eea3e280384e04d90c3286fcec89ab89e30434d88d5d1256cc4e48c4525c1f613c6956128492b2e36c03a0df6dadac0f52015f2f4441d4e3da922a57eb47a37bb9c20d54d63f4c2da86757169bc20b5c634eb47d7effc87fcedd7b655fcfa67ee1b43175e0e2d58f74a99145b31ab8395fdb6d8f970c97fb9d26c4e7252b8c01503ce23967e4abe51353954fb568fb2529158428dd6ccf2d4cc1a21c7872b3f0b5bcebe81566e3f043fb0f422cf0c6be323bd978af41943e109143a956c0b838d1223c1ccf020c797e8ac1d136895b1aaa5dc3eaf4a8f4b91a9240217d1e1c292cd72acf79dbea91468004200040528dab88f19b95bf7c2ef0d4b3b7fa4ec3e4854d1899f9ec7201b943ee0788e0d6e5384d654e8644ecc6319a1cd2c0e7db3a47c18168954ae9cf6e6df2f177d9fb3120e3bc1723e30eb53e16c1b232d31350b3a06844b5fdb48e66a263f9a0b231d95d4f4b97c21c2556a883d6e6b7c40e30ff660b4f4e69bd401d161cf495d1a3a579949fbec953801e4ae3adeb92c12faa2805b66435c477d0279eb0ab3f05411eeefbfde46fde610068084c0753d3be363603b15c263072898a5cf3518bccc89c66394c931c563d6c2579bc001275d1ee820e9ab8687f5c93e6d39d3814e556da88dc4590867aecc8f586c3c537de3fbe6ef64199639c8724b7db227c9144110c1464b6179bc5dc9312f3540bb7b830d34adf678a67b0a33cfc39f43a05fea4c9d912e2e4966a284e421a35733230e945b075c187d8bf194250756247dd19e2959886a64369ae963121056170a515049c7b1ef6faeca8a9643efa5f1fabd98ce794aa8c743e72cf3d12083f9bc8241124848aa56147c835597e239d67f974e62e50b8a7a4a4b1e4a9d1b968e0d7274efd56fc560fb497381d06da8d377178d08802f85c380ae55b39cc793407ca8fae6baad52a76241af1b6b768ade1d3ac239394d743eaad08c8639be9bbf78b1b5cf2edf94ecbd4a2ca974d1e834406e1e0fab8b54583a88d5c4f2e55091f2425870716742f2e37a128b60440f5a4f024b311fad9ee7a76c6086adf056ae4522d4fd971044e64fda5cdc75fc0a1578fc9c055692efb21c473d9594636f46fdda16e253cb2f21d24fc6d87d901d849d7522813ea820d46a3023521cfa7dca8469f1cd771c0aa4f3e2f1eb768f19112077c637d16b243550227068a3cf42aa6a5ed9cd46b0930962de405fd478858f27d94b740d39c272ddfaf0d56258b57ed3e670e287923a3df7af630ac77286be7e71c8f958ca67195622e20ab945b0da71670c4d50d69746db45461728ac5e4f6b07df47b8189e7ceb2f37f4c14a06124643b6f550a9b082f2fc17cba049da16cab4992f93f2b14a4d884dc948805466fe5d6c3ba132b5bd4d2f5325759c5e65ab4b3c2558cb6abf4c3e4c9d426e49de0ac3daa50ef4295b0a0df8aada3348cd76f15943cff4e0dfcd7d0f4174f7e6758c29031ae66738c04b58468dfbc337a907bf192f49e1adfde0e0596667ec0935e465f6889d65aca879e05543b18162d6b294055584e9fe9124ac8cd51b88848d211b03bb6f4fef3479aeb15253783aaa918f1d4f328ca10560c1d3938a9c9e13896123d95728f6d0c03ecec85de042737e2267ba3e55f5bc0be3096346a1a9c875ff0a9d596bd64fcfbb77e56aa7ee0f417b5ba9796119c937d3f67948c70157a0309c6aea9902bb7e707e204a9bd4d0bceaf2d85d803258b91832dc354259a8e409733bb062a913a789684105c40a0ded80df3ebdaa9420ad2403c429429c53f7b3f3b2bed306538cd24a6e7e7155c7ae4b9dffb48a465e1eb4fca437a0b067139a0af7db75a2999e3de1610b8227be84cf79ca805095b942b1c16c1856810647d8b9ec4639b26190b5cd29085f5ae8a1251ba052fe8381c5724efa649b27e91a3e794793adbf586815811e21716e8247784330301c804dd52b4b92607ab34e2b70d6b809f0d0f0f5d6838a0077282a1cfea31e5fe59ca49b01128cc2645b15ed0d277ae757a08848c75eadb0313a9b41bd5c709b48e3c453edecb33feb0972d0cf6caab65a5f8aab6d072bb78228de1d6a1800aba8fc3aa7e93971070eb00ff07ab7643172dba300bf582a023a34d1c81e115e2557530c24f1dc0a0acc443f7eed9950953715ca2ba67f64cda5db0fd91d5c987a334ed0433acc041ea734cd1763bf7341572208553d69cdc0c325ec74933f9afde970201ee7b5b2ef8e5ee9412460af2a18b53b93d70279591b482d9cfc77c33f597f9140de610744a061adedc78e98c0d1b7bcaee5d157442c6b2c179bb47952bf519467f1afa40dd5e3e922f9d6e83bede267f4e0cc544c8fd73fd8cb160db7fe91cc5275441c3005c3cbf01d034c2801e99a865b7354cc5d30e22bbbba1075ec6b2ad58c8faa028634d40603a27c4127e5e96dee10fe5686c6921beab9be2fc9de3ceaad2c99c34fccdb6defd559b3d00045d48d50dd82fabff61cc595226e481dd5003764ad537747ff1af4e3eb68405a439cae1ad69817b45bb344af34ddb62b5e1706a77af25708ba493c06e718efee1030c39126adb295dec9441ab21ef5f962ac63fbd0e1bd88c1e56090dd2645e484b2721edd900e028ad596bd798f5c09cecc2633cbab1736d76f1f32358c3da5110f92b1703d57798d48c457dbfbc25d8e037a2d0f018e0ca03565b274ea9ca4224f8eddb680238fd2e4ee2e35d301be9cbeae2c7f1aeef0183e33ac8ffcaa9c17637da014833d6da00e0f0a0e48fdc325fe1df91f74d474a3a6af42caaaf1f17692b69bb2c68d2721f8822e30071ba74d1f38b17e35b9d461b011f551f51d2fec152ed1cb855a8db29c4e5115b6728058f0af48a41a425acdbab3763c2f67b3cb8778477d956df82e2a54203d7f7b8b39774cd8018e0be49cf7a3c86edbfc50248765bd20d8c3b2fa94dda25c46acb2fd4f7019806d65122928e2d4080e84c15aec9f7deff1093018e8c67e8ecc000aa154180b2c4fc6c15947eb505ad96e984529f441fc893d8e1e74de6c06ee829f93468d7145b0989841ed7c280bae76cd416be984962ec65efb222ee574a525c258eeffc57baf238185f64f44954af28596bc161567fcaf14ec88192e86d660be11a99b520b240dd061b74c853c75cba26e91388ce2ff2eebb39113fab80d90645fec72b226e244fa2f2196e080f2b44cf8cb7f918413c402dc5e06eceb5bd28b11e43c51b7179720f925635cc467c4ee76f78f12effaae8be462d8771f2279c5cc23fb4cf7142ba37a822a4490f84552bac5d7ac42960dee1f5eca48c0371f09d05b9cc4dd219f80bd3fe598daf4e349ca226e8b9cbf7e9d8c34b6bc3a0f7d87ee07c66ee013f06e3ea851104c0ac602027c9b6af42ef8a8134b95400074d2a91b9bc4c128ca463b1a322575bf82491e226f3b78490f21e49fedf404ba35f492fffdf2d339f8f52386c3af31f025de283616beb853c8e32ef8878696a41fc19d418317e527a87fdedb7db03f6004e1b8eb7d7f04afd86935cf2ab2057dc27eb5e2c789778f68d69c6fefa9d2f04a2b90c6a977c5bdfe848720c5e220c7b8a9ed0657aeb6f9587db0ad4924e1072889aaa6557035493270401107e316978b3f149f5e6e6d171d48a4a25501dc17618178e1c46c37def871ae1ceb92e2b7734faaaa7318c0313c2662d806bba9d32e20b95e8c73bcbfd52c6f4a3b48954b7c9c03f643e275cc7cb64273f87cef43ff7fadb01d3694f7c8687c536c270faee0237a129aeb64cc6585a145d08943a5bb51cffea269c00aaecf7a796999f13702f4e3e322420422b7113232c304d683818b8428184ed88148177ab2dd18c4e49c84ca0cec49fa92a50431ba9230d5a9cd8d10897610d20b9bb6aec0b0007f9560c7b75a634970c199e4d5d92ff642f1e12b61f65f1d239bdadfb73603930bddb24f6087499110997c1228c43aab620609b4a45abd51db934133896271e32f766eec79de437a256bfea8e616598070f2ef3e8f29b18394565620d176f286a9ef809b87a56c564f11ad9bb8046602c4ff9499e12080d4a2404b1a82115a766bb1381565902e1a37fa1b2eee34f15db65bdb3c1b8a21e413d96d2f6306d3c15fdcddc8592a68256909416c5a6d43fa7ca1f779aad7ea2e84094ac81b75307529da1d53b54f9590a32b288344f9efc8d91ddb3e10028a562f91b50f35c9714bf31b15cce9d4e7d29bc3eb5bcf591f3a883ef5ec239932922b08ee7dd9f2964ae208633d2e0a4e9663082eb2fab5959d79da2539ea5b296f7cf4c47f001dddba58885737500c83bde3f225889140cacada5d9bba7d9740853f19cb6a8e7f4c4d771d8d83d1323c4b40d3756eb1b71e8bc21e7ee055b866daaae6d669dceb466b08a81cf8379340647d4968083d795a5913c678cc71508d1d9db3d959c71f4f92fe643e81d62b2c18c2284c64562e46128589acb4221ad790977665dd4865c80d4affbef864eb6192fa96af53322f1f3fe4ae88b5588f94e3e3e3dceed46187dbda716c85be2e9a93252897a9d67c9a94326cfd0b4bcaec1c4f50c71982a5c097315de79ffe8950bf65eb9fc7fbf79847140b3f1158528bae2f467ea6967d73935c86d3bc98db539a2eaa4ec9229b70a68a7ca3f15f35b05ae2557802b2d575dbdf6df816e266036b45628d933a1d1746f8f8f0da82dbd8733d5df0862603013de1024e0ad6240e3392aa29c9a292fb7cf8227c027a706fee227ae4f1298a0f848b81ebdc1df02d0b3526e1bf00fa17a4c9b3b967753e8bcab3017c76bce01b48788fa320a2b50341565b59df691ed858003df547ee56330e1002c4599a05013de6bddd7c6444f92f3fd9421f82d7d754eaca6e4289a97df007b4761f926153a3ded22e10f0df3f5aa85642e9e87c0cf189815bc160d773d3d7d2cc8add000323d94bcd48a00f946ba7b6471c471a06f9d0cd079961fad36c3c6e5ab5da024e98ae9d2125bb51f51d0c60bbaa46471065c5f49e528cdd5396167035f5036f502ba9cdb37784e39c0e142ef6a9deeb6b0b08931f8bf05a7e907314557939d20a10600b396e78562eb3aa4802cd0a0d23cc613ca08913fac655fa6b8aa7d95b6b4d7d3f6a752da9a800ea5c130bbe2aa7ae7ba8d7833f177ae3d12a604ee1b04ad1ebb2ca127977888aee504482a2798bc813a402d7d4faddd432385e3fddd0098ae095daf5198f26d4c100db5430b499f03e9c1be3bcc880c98db01506c9b38ed6b9ad104c9339d8ee5657e6822e6d687c41bc6581e494fa91be0ba2ce6cfdd998f5ef722c12cf012e7159cd12de0ffea5f5fd87fda4b6cd0b1e10a0eaf0a29338b46016d98498b9187c405e0481e2d6629b421b7ebea0f2fb4fbc8d7c68b6617ec5a1ed0d9bfbb2785ab2cc69130e18ca06e90b25c18a9409f714478579d4af59df21d96b271fb9e09a0ed40a7e3dd3cccf3fe1eca96cfa2605ffe516ca391b155c03883e20453bb790d48c1e33403d67959e57872a6e1e5afb0070e138af7010a63242fddd4d51649d53dac50be6b618c79ff5997c974851517a8990b1e9b7bef4f0b60aee3fc4be59ee051bedf689b2b32e3d5c502bbf4d570c8029f5717ebf49ad02f440155310dd7d29f0d24c29754a12c80ca2ea1a5925b999656b45804e06f0ca13c03711a468d292b487e7c9a6fd473300c56d779ef6c307f609ebb720b1a9757692480c00d9b75229e414aac955a1af0bd14f15baaadc4b7cc4a7e12f46eaa97b0e5d87dd8b87ee3f912665390d4b160703193e77798aceb07ab5b11d14920954f84e0878bab8881d4bf63524b8b52e0f963e17e3ff632459fe931538a1d20b84f9301c3bdbd9dde6407d5d0af84b0079ede35f4d0185d25298b6c751ea80ba4667e5082d91ed9294ffa1e5df213392116168d932eeb60352a399839eedaffd57678355d014394a580b565e5eb2c3830d43359ac64757473ac6c4eb1ecfe6c6f8dd78b6e6bcb60245c433f4e09489b8ea79f3a73298082b7a177eb061e21249f3edc8d574e70f69f33aa995424533559326f7d394145d9183043e484cdfd7ca590d2d2075f6b569bed7600da22d05b8b51997646859acd99c6ad0bc41c026032f09fd3625e8b35295185d07806650aea68a91e43ac27adfec6df0c78d838c57dcd4a7a5dca9132e02763af221170ddc9a73c60a38a0a82c51f728549e5cca57d20c7f2e084c45fc83625ffe1d70b623a2d39690e237acdf86112c1843cd3a57235975705c18c3b7c7f3049a581e306a6edb11601e0f04b29ddf8219c732d8b942ff8096993292e92c8403d88b8da5adf7db3e0992dcad6d618c28a53fad6a4532bb90f55c1ac5715c33c8cbfd5162a7d0153e884144c30e8e2a86521d7c717c6a6a9e4d3b0c080a424c51f499592151add534c98722cce7da229cbb5b4835b233fa5aee20e9d5c2753454fc5f29ffb2f04e3a4b556800af4c5c0399eff28af895eedeb851d3e8f2b83ef19ae8edbfa450ab1f9b832ecf4e864c5c0da8133eb78803df4028dfccb46674eb220eaf8c0c4cd310d0e69bf5f17e1fae0e56aacff2112a2de0f496c4ad149ba126b53157e2dad0743f2624b9bf9cd1df507ad74f24bec5bf15fe4daf45418cc9a2170f899fbe62687c20cc49c8b42528e31ed3f5e2ce3b5172ccb53a2278da2a6cfdefaeb9748cd570bdae0e8d4f34b3d6faaddc6e06d0741ebc048470566215bdc1a77692fb1135d09aeb9091ab967b4fc5599679257b51d12c2785283ffb08062dbb8c611ddefc02fbd0ccdfc1be165aa226ab12352fbf77f6bf80731bd855bf7277de85481432a37fc3a1ac0f3a6dec37cd34a6f3213ec8a094c46e64d74490922c4b747dea5b818bf39fbe1ff3874298b32860a7cd7629e25c91123215673ef9cbb5b3b251385627088cf564bec2dd34a5189141270a9b5b4eafbadd9ee775e4d33d8d97890f5409f38c650182724d0d2913a793aaa98b51425dc2a83b918e9d9baa6c302b0e74397d88593ecf1570a10f9de0c7143d1821eadb10ec89375c1e748a0b64ace4374e89f9acab938475e5cba90e0522dc6debd94cd89f69b122ab0f4fe0a3cb3b5dc345d536d107c74b86fc0dc51e2926e8ac88275c254af1eb93a6702c394fb5d863ae8bf8bd8b7cf8f4977d29a0da60f8537e1ce46d5f2b2b817c465f3d8e85b138afd12006e7a60d1fab7a353367538e5f4a07775e3b9d8cc3b124ff3e8ac36b7f6b3e59fa317af24be96b2b7ec4f5509bf29a0bc274405d686d09c38a6dc7243ee2bd23dbd6295fafc256764f23e96baa69d12fdf64d7396dd12b1194345bef0e2f38f4380027e6af8d70ae12e24cd8470de81336d17472732c02097445c129a60b5cea88a5e91d091d6cdd2eae97f6feaec9f617982041c470c5e7d3225763e8e8a514bd12f8d3b6b803fa9f4d80504f877cb062aa9d0fe5d4c53477389965a6acbcd1cdcae215adba7de457aaaa128384cabcc32075d293a3e025490055bf0033ca5443d3baf5c00baaed252400eb2212425bc5468025f09fa2d7f4e59ad8875d9afe79639d8afa91db36385ef4a84be1144401a4d5fe107c5348bf4970ac0696e32f406b490125ef244bf770bca6ddc8f9fdaca8e4521182279c1b8fbf6b53267e9fa08e2601606692fe9f32151b6fdd0ee9d8138983efdb56f7cbeb8ce9719a9a3277dec10229f6fb98510d606d87fc233ce9d93d71a7a16e988056ff44a557bfff10c000b7f17fdc2eb228416fe6591f3b759d47369d90e2d74195efd06713bd2b898edcda5a13a15e7c15b9538c60bd722723922672feb952a43d30f059b342981fb19c117cf57df1fac4f8924c4f070574e238f444068abbc756cbfa67675aea3eeb9f1419a390e527825950d2e44fbd7493f75f81879c752ed742a0ab145ac874fb5d217bd12528d453b8dee82db9392cd8684957f34f8be3e87b9d8c011de6679726cf31f24b5b5ea3f451eabfea24125ab5c2d6878efbad5ec788cefae183caedead6aad31a62c7aa650b2c837444183c1f1a12f72c883537404f0d7b8ba7b181d49999094916fc358ffcec65b1d9a41ec182e156d315201e908c52a03ed26fddf0cd6b9756014218d9a0e8f23c03f2f14b8d0e67dbd3af578edd760b8295dafd0a48acaf854530ca3f09121a9f5f033e0ebb0c4e1be8f9b30775d9e03e5f4e9df9e083478b02dac37e9902e1658827cf40ee51119fe8b56d298911ef6966b273738307fc45c39384984fc0b3c0882fdcccd12ee609bf033b5c77aa68da47ae5e1143d75b2fab9462f262c68b8628dd868da4ad01749a5507d637733a9b8d55e09175b021a6c1435ff0ca75ec2427f66483b5f23f0aaa3ca4b5cd01ab6d5d969f15396d9df1573b577fb2e269c6bebe4749b9dad371da06d6e9b11b3b8d20fefb10dc2862b256f5a0144cb77db24d2d700ffd31ac42676b525e45c08cbb53a439dfb741e9c029c9894db6fdf49637a61ec45f0d6435df50a9376b71126ab6f07f6d2c68f03b968491ab9019e0de2290176cc5a1815ed9fbf17cba1434a168404fbdcf2032f0f33c6fdd77e948504ac0f0942c6d893080e7457a8c52292fcaf9eff4051f4265a4129b158778cfd782b00d2f0674575b9a96ccbcc38741069ad3ad5bd6bc3231b7ca61584043a69e7b744273292829096cca486e2a955f03eb75a5a8f0f69cac9e97ef4b779dd344e927dc44c65a652fff48b8cf96493309b46e0df2be8b98447031e4458a675911d4e45c9f560fdf53fa50c91635eb80740f9e5ab801e50d50b7b7fa2837a0ac472d5d682ec12c001156a49431f323d6898f2993769c774f325e3262431e1a048ca03f919c5f47e4032318f4c5218db4c36563119d72d940076a44d10001822d316f34e2a7c781e538d888be17ac981027f0628b9b8d488193b5ea9d0b0e8f1680cbeb6668151a332c1087375ef1c2e693c034f415099db89a5ba8a8f1593c0c2b5436a85b58508ab25115cc3e09b9124b11c3a7f66039e82362f62c4a099df9cf78fb0dc41ab81830a0faf0c7a9de45c5a756ccf5893505381641090b152ae751d7368c4d8bc6dba2a0968202bca1145aea35d6997c01397d863a2c3aac1c5589b3e63aaccfda40e8dd589a8ebe6af013ed79bcf5cdd442240c66979b63401e97cc93985cfc9075463e3f603b24ed56b34f08cf1094a5f79023f52b9a6a231dd90eb696ffbefd277a558c29cb7e2bac0bfdffac372652b5c4a89cb13d145a58f342c8202d47a4dae1a5bc8b8be4ea045073349ad73628267a0a5a90f5cd83cec827edf0e41f9377c6be51a5133a8d530b3d749bedc49382f60fefb91c275f3ef7d84c7cb19390b26dcb39dea95e75b89034f63c348a1463c3d181511f65ad0105927190c5e0616a625fc1515f0d16894257da70c726a758c779a6c5af0fbfff9128c048b7836dfa2037b5e117eb5ffcff5c104875d240671831b31b51a09374f9c7a4af67fee2a134d875100b26a49a38c5ae3ee532d4add967e6d0fb0fe7c328bb42a0e25f804dfe7d00d6ff5231572199e302876e514450bf73e461f89724c31ae70f9f381b8e41c1e8873707938ff54a915ce75ef01d11cf7f0caefab5c606a0b4b04725cdf78b2ed34db8ca96e3c1e769dd94010c2ae0d3319d8bb6a18c5f0d1495ed952d4c7cf8caddeab320203be78fdf5c2f85e8c5aa99b95836c01848ec449bf1511d4f78865beabbee1f2b73d81650498ba3694db19daa1465f2ee0c646faebb24c1e40c9c6f5c6eaafc77b9be1dd1118228de62db2d60bbc5324d2d207e523fbb3bd86f974f09525b789328038ed83f607e0a4484e8dc082391211cd86dd692c16979a00866d2c4d7bda1cc3acc5ff58f41cc3008441e3ced471078ebfe8e2761834980e5cdcf4e2d60d94a8d33bcdacace70030b6c1aeba2728dbc6bfa5f17d2b6e23b54811588072cb2cc0802ea8a32a5174940bffa13c4aaff44ac5a1419e46c6502140b227fb165ccfd6cb0a30dd14724d5c82e70b9285f3f437990b686a4f84b3fa943b9551efb6684ec033360fcf84a646f567e8f8e2550cdd64fb62f704247ca1ae6798deba3dcbc978b941ee1a05b03edcfc62e7c398850ecd61b23a539f2c8655268983bf0179bdf2e18c3c8965eda10cd14798cd629d9ce9b05032950cdee1ba2fae9103474fe4ce94b620453fa1ab7a74c042cd6f557021a8f4899a3476a17f797894cd347d5b98e3ad3774429e8cf769cc8fc6f6bc9070dbee6a1712375106fd009a05c29b2b4e0dd713c9664b57165ac59979b2e51aeb35c3f48883e7bc8b4ef2cc3b93680df3a97d90402fb7a336458af4a3e55b64283710195f09bf29c7c3bbf20ff476cf68edcf0031e05156b4ff275aadbe6c9d348ba7311203e6cbf864018370ac7e7eb819c88d47612d80f0626722d3e46ccae5dee128e3c720ff2a6ed876766211a35b61c628c11b5061997690c64e77afcd7865e8647dcd4d7cc4e4ce3bca746c75720a2b6f3dfcd50d2f94460a8173802460f889c05cc623cd802695e78cb00ecc23a06ce3180d9a0d1298cbc47e5f745147ed34015ce9b20511cd6ad233c5919f81e2d5e6ec5f5304b644dbfddb0231a3fef7cb2547622ce99e21c5072518d67d4b5903c87940f6de42dfbf4d649103d10042140da00c62997d7603d327635ba8473827e9a296f1ad51151e560d4bd4cd6e39d5d6cbe04c7978790d36df03d23f8707bce97695ec59e8c872f9453a1438a8d46c3196d1392af5f8005d83e4c9df0ebae4b4e1b714bf58663f4595bd9c31fef09891b0acf1b832f083836f0d58635c4dace40cfec2d264823125c26bda43708799503330f4e138033940ca9574b0d34c0d7a268598c9bad9ea66d127fd21a9b4b782978166e9ecf05c338b2eeb856ebdac841c4795d199c3d21e5fb37f6709c65f3f440f639fe3396ad8ad4a81bdfcd784bcd8c5b343fab117a6c4d443be38c7b5c503ed11d07eb08c7a4d9e486fba500e7c195c13a4b8ed50f4961d6477089ce25c6500ad9164d59751fc0c5c6c1efafc5388d032576dfa0d883f2d8181d206b27a1b5fff0eb0d55f3a17d6c02f5ec6254935a4948d4b380fd9daf7291605d31dd9377380056cc96615ba3251a8cd1a5c358566e04b1f9d921b5fd285cf998673869974c1164cd936d906ccf8216b6c6fe9eb8962928580e8bc93fa9bfe1b835135bc07f8bda67e9a7b46fa753631029194cb1f8d51f7b942e323e264bb0c36cde0e45a569048e575d099632fc0fb2079fcd0c682f5042122e901f1c20820bb0198e35434a754e51d904ab495cdc7dc6e97592f7ee0e817a72a2b6f1a0a1b0bd98817790657aa6b456cb0b17552072240658570e912eeb20a0e4d407c5b2c389386adff6a7fc36afbc93304ae33d90a3073611fbd5c71194d325a1d817b3d150cbdff02c160e71a9920dab7ee0c96870b4887f832b614bbb57b53b3773c2ef78ca5174d95a14375ff8a971e87270304ea74cfd7c763806872b84c7f78b2819a17feff722659abfab55b40b32f2f039663c1d16e2a29086ff1f6634a8c1bb22d9d70033aed62ca06437aa1ce3a48b4525df72174b2f6f5225501db671736c605628f30d32825d3562f8be816f7abdcdeaa0aecfe86e1a27417e2225a11d29799bba27bdecd5bbb9f70493ef661400b8d1ba326923d69e193a3b2f14677ed4d947157db0db7d341c2e7787c2de2aee6ef78a2e21e1be765fb95c5f8d8a9de87b32969ee902a4f3b15deeca144a0ee95186c24ee5bd6577f3e400d026324bb7e48b05ed9d91642533ce10993326e6f43ceb748125f9f53ae22426abf4f9221c67ae35e9fdc79e4c0f3468a1124809c9de7189659d19034fff8456a8c296c0a987a4377fa8f5dfef2a015595abc66599761385e46cd41c24d47edee885e39a9474dafdd7f4f23b6f406b4a542de164e36433bf104136145552b2140fc924376b8bcaf036db41ab72878ea9ed1c790321bfdffa75568fb975c420f716ffbbbd519f50f1a3b638459648657b08bb2ed41b7ddcb6ef817145ab88badde94181f7535ba0cb435a9bf163c1c0e9c6209b0546b4e91375c57e4eb1d7cc90b0c0186a9723f8b05fe92d1b0391c3d8a78d2ee3c4e8d2c006fe716b183a51e21b02636223219ae5703e61a82770a0bd9e5ccdf0a2b427281bcc6bb18a4bb7510710cc5d18aacde1fa1cc242b2f0e7e9bfcb3fe4031fcc22049c7f8de1f2a6b50554c847fd326a1fd03455a346203c8dad7c5d338277cf254b875d5461db485c25cdd0b76d6f89b948978fbbcab50ad396655106bd0cf3b78caf7aaa853237dc41aa14bf6fe2e926c01e1ae5f0aa1f64dd166a5253a9da672ee909d8fb5e4344e34761a9e34ba17063c35a65a75e775e6fed234408a67c86ff16e2d962156dd8bb3c1dd5b955a1681b483541ec8e8a7e63c8dfa3fc7b74e6ce3dcaf4ba15640ff0cf87d4d943e6a3e28452ab0b40202f149fcbb73eb3cb43a111d533879daa9c44833917e03bbded88df9bce15b1b313944b726a1d0ae28c63d4c827e5f3ae603da087e175109d754d6c6d98cb7d0ae4cf3a7e78cbe4d29768fe9c118559fc018af3b1fe39b5f69a0dd943a04d26e87713c36a23a3a22cb602effeed275748531f7531fdc6134421a76ddd46bdf1648906453b13c74c3cf24ce01ca6e9c1a125d82128691cd1195d77f03f86aeb8ee1b3df58aaad9be5df8e6019ff9c6d97a7bbc54ec49e475f39a2370edd541fd416526754ebd54c4d8a296998aefe2641cd49f4f9514c34034f06d78759cc4bfeaa49f57fdb6b951436119c990485cd84bdeabc50566b9487992db37f1359c60865589f05a3de5ce8e6bef51ba9a2ff3120528e2d8dfb0e164a58ea5a4af34d8b2ee1afa508a0c19187f4007c59a23869a3bfa4fa24dc19ded82676b3163b4357edeb7ddf39d609143a91e9687dcfc1dedf955af2ba43547b37696a3b9b8435ce01ccde354e0a0871bb7de75eebf358d701d86aab569248e4b9defdf2752a8955c0c0e9c05177c38fbb91550262745955a2a8e6f46066c812ec6d489baef8dceb7a677fb79d861f17f17f1c99ed5c880fb364e583aae10938b9c73e32311d3a636beb0b352cc1822df808b5b9ef7069a5cd65c98f069250bf86ed7a0185f2b050f213289d5ae527a6c688d1d468f415b542308f187a17d6fab52541078bada458e88313ffbc9d05ac638a63fa6abc382628defb63a28c6f18e4d47aebbe75cd04c9d5cc2f50e2e8e544ff84d3f0806ea2bf04e64d62a8ab971179d2c2840e06d8471c3f6183e2ce47326451a7f0f3d5269d21361afb8a54ec45fb9a4bc27e426d802c704661f0d4405559bfa900715c7c783844f4175a028bbf4db491b980c7aa40ca8a1f065f1292655d7cd2ea529112c0ff5c796887f0cfdda4db18561c7867b57bda8cc5a5de59b03b70105bc8ceb6b78e7e82946ab869adce176d87253fc2626430c058e6144d351b61a9f93b26e4ac1888bc950f1633430ef2f1d6f75da719b128d9b081533ada450dc61ce3d917e429ab09acbebbe453c6d700d921877cd3cb18d030f1bee00b7e237e1073cdc53308c7c44a622ab885ea4d7bb175f1870c7bd0e305bdc8af4cbf9c09b63087370e8120c1d6d35d92d32eebec6a94950990d1090853f27298e556065a142ccea57145c8d12d7491d1fe9d4bcbc62afce0a6907c02a487f6ec92c7ac9a6b66d212092eeb4aeb1a87c3898e2979a47d2ff997108a9a2e337f2d326e447a830e24df91f6d11a6bb63fbc1dcc78f89d813be473ff6233e6593cae6b20831d469d6cc83f6922fe112cc9320712c6ffc3388f127290efa305e3a2646b5097c456ab7b65ca20680df7c9de6e9a7427ff067db25438b2c54a108b061f7f50b12c16a426c2b92d58352fad517e7749f465f52cf41941023fd743a5e28cd36008ce6a3c95c41703325393d245eddf7075a567d66c8a629d7dcc69a4cde964288672f8735bafa45a30040ac68a5eb0db703e950e65a793ae78d7d2e2146b1f9acf8473cd81142e3b222b258237deb88d643771390a6b75b9790842dcfdf6cc59911974a7eb154c38d5bc8dff71877459914c34253fea18124bf91fcdd0d5e12bfc0e28c2ffb2e7236e93a10ea339b9a37697493d32c9360b2be2ffb20b4016a04377ce0f9a2c6ccec02b410c1c0442d8b5acd4821cae573240285784d2c3d6006c1f153bff3f3cff64fc03f43ec8500c518e251cef4d84cb036296e915ce5f590176a24d5324475157150259f27f108e48ed5720ca891ee7ead96af0012a3dce2ddcd489668eb75f494a62dbe2abc95fff6ec0c0fdf74b0d3e38d6b0a32aab8db90e9e411bdb55fde24593944b87cb85d46e16674d1268efe9f824e7c5281d396c7e4f288b5da208001f5e743b8ae4e812213f3cb8e4eb64054a42cf0832dcc3607dface0d80cc684d4b6a9a28e3199ba734d42d6b73b36eb9f20199d7829da4484857951c1d58b99386015d67430730e74b5fa60d7718ebe2d143a78b962e40a9832842ee1b53c520bc090ace111e7f88f05485638c0107b77d5f78bc10b83b1ba86c7879828e994a5e16d150e6386ce5cf011e758ad15b4db3380dfeb8075540513514b1cbe62846aef45d2d4293b38546d28072dac468adeb6eeb616b690bc2b8a85d292ea0712221cbeda7ab62e9ef3c01ccdc5bd852ca9114add2353ee47ae0da774f423bf48cdf32bb679c5369cc86d66cf1b680f8d4de8ae2b17578ef1ebd67b94842ea7804afa74c9f394778ec3fc9b00775c5a3af38be9a419fcc5b934df00a544e8afa68adb8aa9293aa7183f3d5d0f6dcbf233b2b12b0853d5342778ce96d008e89c52d42b0f1f7631c29b36dbe002522be8ed1af6ecd846d089b442af0841a87d1bcd3263e39d63f6087566adbafe8d2ea29372d0fa8765c6391f5a0afbef005d76c5df68298e5d749cd56bc4c7e053b23a3a4fa34b937f7f4a2ca666329e13fa3c1e16e20321327fca4fe7dfa38a90d29410f27a85ac80e1d5ac67f9877854e7fa70ff1c9db6ed5e4040c746d7885fcefe723a865956ba404a86b0e57b5dd1d21ed614c59d986a53e5d15b62368650e45099f89e4f5f8b96a15e50c8480457ce845e06311ab93dc3a9b15bc1665a0d0261955889acf1f09ac17a0ec8e5eaa40c765a15efe3a94efd47a8cb04a2f69c1d68043f959cd7e47ab7cd647591a115ea08326e1761fd0c2a1a0fdefb9533aa6046239850d631193e645962ae0ccbc2850c9c82b8ab0951da9c90c498890975ea07023cb2a0a742d0a495e26153ac800c639bd37b51c6fe12af4476f9e80af7b70609e7e1e6085166ace100e1d409de3d13c93fb8fcefc0edb60958d41e135a1f4df12622af067657c50b0a10556a62a8634f32d7b6d193b104f9965a924cad21c4a5a1a780f1717956fadff183fac10851a851ebdff2764ebd1d462daccac9c4414d7690acc2bfe07c078d1e9718d801102db9d149df7ff0624304b9904130596808ceca358b08ad74ff13218b27832de0df5a4303690926c5fa12e7659afd32c7cea21d9bd4f24f0682e9548dffe3c46c63cd5d918037b26cfc6f9e8ca6ba7c56ba02b47876d8213576e2bb88c0fc73a3f85b853f09c8febe6aa20de778729f9960f0b97f009ee55c2091659240f2f965d426941fa5ab70ce97482d33d57e05082e0975d8d798bcc5a8789400aac777db3e5b1fb412013808103d4ae19adeeed408b9fae72cafa5de9e86b093351893d71d7ff96f5fb0d58d3a5f121ae76b0c18810464b408aaea320197cdb116eb8779ada6a07dc2cc019cb2cdb4619f86afbd6libnvme-mi.so.1libnvme.so.1rootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootlibnvme-1.8+79.g69e7772-150600.3.12.2.src.rpmlibnvme-devellibnvme-devel(ppc-64)pkgconfig(libnvme)pkgconfig(libnvme-mi)@@@ @@     /usr/bin/pkg-configlibnvme-mi1libnvme1pkgconfig(dbus-1)pkgconfig(json-c)pkgconfig(libkeyutils)pkgconfig(openssl)rpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)1.8+79.g69e77721.8+79.g69e77720.131.1.03.0.4-14.6.0-14.0-15.2-14.14.3gPD@g@g @faf@f3@f@e̫@e@ee.w@e'e#@eSeSe@d\@d&@cױ@cױ@cb[c_cbb@bP#bF@b4t@b+9b'E@b b@bOa a@aaaedwagner@suse.dedwagner@suse.dedwagner@suse.dedwagner@suse.dedwagner@suse.dedwagner@suse.dedwagner@suse.dedaniel.wagner@suse.comdaniel.wagner@suse.comdaniel.wagner@suse.commwilck@suse.comdaniel.wagner@suse.comdaniel.wagner@suse.comdaniel.wagner@suse.comdaniel.wagner@suse.comdaniel.wagner@suse.comana.guerrero@suse.comdaniel.wagner@suse.commwilck@suse.comdaniel.wagner@suse.comdaniel.wagner@suse.combwiedemann@suse.comkukuk@suse.comdmueller@suse.comdaniel.wagner@suse.comdaniel.wagner@suse.comdaniel.wagner@suse.comdaniel.wagner@suse.comdaniel.wagner@suse.comdaniel.wagner@suse.comdaniel.wagner@suse.comdaniel.wagner@suse.comdaniel.wagner@suse.comdaniel.wagner@suse.comdaniel.wagner@suse.comdaniel.wagner@suse.comdaniel.wagner@suse.comdaniel.wagner@suse.com- Update to version 1.8+79.g69e7772: * tree: optionally skip namespaces during scanning (bsc#1232616) * fabrics: do not attempt to import keys if tls is not enabled (bsc#1216982 bsc#1226216) * linux: do not do any keyring ops when no key is provided (bsc#1216982 bsc#1226216) * linux: do not return w/o OpenSSL support enabled (bsc#1216982 bsc#1226216) * linux: fix derive_psk_digest OpenSSL 1.1 version (bsc#1216982 bsc#1226216) * json: do not escape strings when printing the configuration (bsc#1216982 bsc#1226216) * tree: do no export tls keys when not provided by user (bsc#1216982 bsc#1226216) * linux: fixup PSK HMAC type '0' handling (bsc#1216982 bsc#1226216) * util: added error code for ENOKEY (bsc#1216982 bsc#1226216) * fabrics: fix map error level in __nvmf_add_ctrl (bsc#1216982 bsc#1226216) * fabrics: add ctrl connect interface (bsc#1216982 bsc#1226216) * fabrics: use hex numbers when generating command line options (bsc#1216982 bsc#1226216) * fabrics: rename first argument for argument macros (bsc#1216982 bsc#1226216) * linux: handle key import correctly (bsc#1216982 bsc#1226216) * linux: export keys to config (bsc#1216982 bsc#1226216) * tree: read tls_configured_key and tls_keyring from sysfs (bsc#1216982 bsc#1226216) * tree: move dhchap and tls sysfs parser into separate functions (bsc#1216982 bsc#1226216) * test: add pre-shared key json tests (bsc#1216982 bsc#1226216) * json: move keystore operations out of the JSON parser (bsc#1216982 bsc#1226216) * tree: add getter/setters for TLS PSK (bsc#1216982 bsc#1226216) * test: extend psk to test new 'versioned' API (bsc#1216982 bsc#1226216) * linux: add import/export function for TLS pre-shared keys (bsc#1216982 bsc#1226216) * test: add test case for importing/exporting PSKs (bsc#1216982 bsc#1226216) * test: make config-diff more flexible to use (bsc#1216982 bsc#1226216) * linux: only return the description of a key (bsc#1216982 bsc#1226216) * linux: use ssize_t as return type for nvme_identity_len (bsc#1216982 bsc#1226216) * linux: reorder variable declarations (bsc#1216982 bsc#1226216 (bsc#1216982 bsc#1226216) * util: Add string constant for ENVME_CONNECT_IGNORED * linux: Remove the use of OpenSSL Engine API- Update to version 1.8+50.g2b587d3: * types: add new fields added in TP4165 (bsc#1231668) * types: Changed the space into tap space (bsc#1231668) * types: add new field added in TP4090 (bsc#1231668) * ioctl: export nvme_submit_passthru{64} as weak symbol (bsc#1231668) * tree: fix segfault in nvme_free_tree() (bsc#1231668) * tree: fix tls key mem leak (bsc#1231668) * tree: fix dhchap_ctrl_key mem leak (bsc#1231668) * tree: fix dhchap_key mem leak (bsc#1231668)- Update to version 1.8+42.gdc0831f: * tree: handle no address phy slot dirs (bsc#1229193)- Update to version 1.8+41.g6e8e2d7: * linux: Correct error handling for derive_psk_digest (bsc#1228376) * tree: Add NVM subsystem controller identifier (bsc#1224024)- Update to version 1.8+39.ge289971: * linux: update TLS version 1 PSK derivation (bsc#1228376) * test: add hostnqn lookup test (bsc#1226216) * tree: add helper to lookup hostnqn/hostid (bsc#1226216) * fabrics: extend hostnqn/hostid variable inject interface (bsc#1226216) * test: add config-pcie-with-tcp-config test case (bsc#1226216) * test: add config dump test (bsc#1226216) * test: revamp sysfs tree dump test (bsc#1226216) * json: filter out pcie transport (bsc#1226216) * tree: preserve parsing order of a config file (bsc#1226216) * test: use diff to compare sysfs output (bsc#1226216) * libnvme: Introduce functions to generate host identifier and host NQN (bsc#1226216) * linux: add nvme_revoke_tls_key (bsc#1226197) * libnvme: add missing symbol nvme_scan_tls_keys (bsc#1226197) - refresh 0001-build-disable-sysfs-test.patch- Update to version 1.8+26.gc96fbe8: * fabrics: keyring is a long (bsc#1216982) * config-schema.json.in: tls keys and keyrings are strings (bsc#1216982) * linux: Add nvme_scan_tls_keys() (bsc#1216982) * json: dump TLS key data in PSK interchange format (bsc#1216982) * json: import TLS key from PSK interchange format (bsc#1216982) * json: export TLS key in PSK interchange format (bsc#1216982) * tree: read TLS key in nvme_configure_ctrl() (bsc#1216982) * linux: rework nvme_insert_tls_key_versioned() (bsc#1216982) * linux: add nvme_import_tls_key() (bsc#1216982) * linux: add nvme_export_tls_key() (bsc#1216982) * crc32: Add CRC32 algorithm (bsc#1216982) * linux: add nvme_update_key() (bsc#1216982) * linux: add nvme_read_key() (bsc#1216982) * linux: allow for NULL argument in nvme_lookup_keyring() (bsc#1216982) * tree: use strtou32 to read lba_size * tree: fix lba_count size calculation * libnvme : record the nvme pci adapter physical slot (bsc#1223208) * tree: fix mem leak in nvme_ns_init() (bsc#1223331)- Update to version 1.8+8.g8c9685f: (bsc#1222026) * nbft: Whitespace fixes * tests: Add complex NBFT table from Dell R660 * tests: Adapt to added NBFT SSNS flags * nbft: Add SSNS 'discovered' flag * nbft: Add SSNS 'unavailable' flag * doc: Document the NBFT API * log: Respect DEFAULT_LOGLEVEL on uninitialized logging * log: Introduce nvme_get_logging_level()- Update to version 1.8+0.gbff7dda: * linux: Explicitly initialize auto-cleanup variables * example: fix mi identify failed with error cntid * tree: do not issue an error when subsys lookup fails during scanning * types: Add controller properties CMBEBS, CMBSWTP and NSSD * tests: Add sample NBFT table from Dell PowerEdge R660 * tests: Add sample NBFT table from Dell PowerEdge R760 * tests: Fix diffs output for duplicate HFI entries * nbft: avoid duplicate entries in ssns->hfis * nbft: Fix (struct nbft_info_subsystem_ns).num_hfis off-by-one * test: read and dump sysfs tar file * nvme: allow to overwrite hostnqn and hostid * nvme: allow to overwrite base sysfs path * json: dump the output to the user selected filedescriptor * libnvme: export nvme_dump_tree * fabrics: add 'concat' option * mi: set correct rc and errno when crc mismatch * tree: use logical block size for lba * json-schema: add keyring and tls_key details (bsc#1219086) * build: checkout full repo for checkpatch * linux: avoid segfault in check-tls-key due to null hostnqn/subsysnqn (bsc#1219086) * meson.build: fixup 'join' syntax * util: Explicitly initialize auto-cleanup variables * tree: Explicitly initialize auto-cleanup variables * linux: Explicitly initialize auto-cleanup variables * fabrics: Explicitly initialize auto-cleanup variables * util: Added function to find specific UUID in UUID list. * build: fix release python tag match - Disable new unit test which is not running stable in OSB * add 0001-build-disable-sysfs-test.patch- Update to version 1.7.1+0.g13ba383: * tree: do no free ns on error in nvme_ns_init- Update to version 1.7+0.gf38b1d7: * tree: do not open blk device on default * tree: read all attributes from sysfs when available * ioctl: set data length when retrieving LBA status * types: fix regression for vendor-specific field in nvme_id_ns * util: use cleanup functions * linux: use cleanup functions * json: use cleanup functions * fabrics: use cleanup functions * tree: use cleanup functions * cleanup: add cleanup functions * tree: fix incorrect return value * tree: Fix clearing application strings * libnvme: reshuffle nvme_generate_tls_key_identity() * libnvme: fixup error codes * libnvme: Implement 'nvme_generate_tls_key_identity()' * libnvme: support NVMe TLS identities version 1 (bsc#1219086) * libnvme: Add base64 functions * libnvme: separate out 'gen_tls_identity' and reshuffle 'derive_nvme_keys' * libnvme: separate out a function 'select_hmac' * libnvme: fix a memory leak when calling read_ssns() * libnvme: fix a memory leak in read_discovery() * fabrics: avoid redundant args in nvme_discovery_log() * fabrics: have nvmf_get_discovery_log() call nvmf_get_discovery_wargs() * fabrics: fetch smaller Discovery Log Page header * fabrics: avoid redundant Get Log Page on retry * fabrics: clear RAE for discovery log page commands * json-schema: add keyring and tls_key details (bsc#1219086) * types: add Host Behavior Support field definitions * mi: Cast values to u32 if shift overflows int * types: Cast values to u32 if shift overflows int * test: Avoid unaligned pointer dereferences * nbft: Avoid unaligned pointer dereferences * types: add cross-namespace copy formats, status codes, ONCS bits * nvme: Add length field to Hkdf-Expand-Label computation * ioctl: use lsp arg in nvme_get_log_boot_partition * fabrics: use SECTYPE to determine whether to use TLS (bsc#1219086) * fabrics: Allocate aligned payloads for id_ctrl and discovery log calls * linux: Allocate aligned payloads for id_ctrl and id_ns calls * ioctl: MSB variable-size storage/reference tags- Update to version 1.6+5.g68c6ffb: * avoid stack corruption by unaligned DMA to user space buffers (bsc#1216344, gh#linux-nvme/libnvme#727)- Add missing jsc# tracking references to changelog- Use glob for python3-libnvme file listening. Workaround pycache_only problems for SLE/Leap builds. - Drop usused libuuid dependency- Enable tests during build - Set git version tag - Drop unused make dependency- Drop unencessary minimum version depedency on meson. - Re-enable libdbus feature. Upstream defaults changed.- Update to version 1.6: (jsc#PED-3610 jsc#PED-4879 jsc#PED-5061) * docs: Fix Read-the-Docs configuration (deprecated config param) * mi-mctp: Fix free() in error path of mi_open_mctp * types: Use NVME_SET for status type mask to get status value * types: Define FLBAS MASK and SHIFT to use NVME_GET * types: Support Phy Rx Eye Opening Measurement Log * log: Add nvme root global variable to set for default output * types: Add support for the OAQD ID controller field * test: use non deprecated API * test: add tests for Get/Set Features functions * ioctl: implement nvme_set_features_lba_range() * ioctl: pass NSID in Get/Set Features commands that use it * ioctl: fix swapped parameters in nvme_set_features_host_id() * ioctl: export nvme_{g,s}et_features_iocs_profile() * ioctl: pass ENDGID in nvme_get_features_endurance_event_cfg() * ioctl: don't set SAVE bit on unsaveable features * ioctl: avoid sending uninitialized timestamp * ioctl: pass data for Get/Set Features commands * ioctl: set correct bits in Set Features commands * ioctl: correct feature IDs in Get/Set Features commands * tree: Add 2 new public functions to lookup existing controllers * ioctl: Add debugging feature to show command outputs * Fix incorrect article 'an' as 'a' to use for a description * linux: Added functions to enable faster telemetry data retrieval. Moved telemetry data area support detection into separate function. Added possibility to modify data transfer chunk size. Enable telemetry extraction up to specified data area. Removed some printf() and perror(). * test: account for discovery log page entry stripping * fabrics: unconditionally strip discovery entry strings * fabrics: only look for spaces in strchomp() * tree: Use early return instead of else statements * test: fix lookup test case * test: make all function static * test: add tests for new tcp controller matching algorithm * tree: Improve TCP controller matching algorithm * util: Add functions to parse the system's interfaces * types: Add support for EGFEAT, Domain Identifier, TEGCAP and UEGCAP * mi: remove nsid from nvme_mi_admin_identify_secondary_ctrl_list() * test: add tests for nvme_ctrl_get_src_addr() * tree: Add nvme_ctrl_get_src_addr() to get the controller's src_addr * util: Split _nvme_ipaddrs_eq() from nvme_ipaddrs_eq() * test: add tests for Identify functions * ioctl: use available Identify helper functions * test: pass a large enough buffer to nvme_identify_ns_descs() * ioctl: remove nsid from nvme_identify_secondary_ctrl_list() * meson: Don't hard-code path to "internal/config.h" * fabrics: Do not pass disable_sqflow if not supported * fabrics: Read the supported options lazy * test: add discovery log page tests * test: add infra for mocking passthru ioctls * tree: fix segfault in nvme_scan_subsystem() (bsc#1213993) * src/nvme/tree.c: make __nvme_scan_subsystem() returning bool (bsc#1213993) * doc: fix minor mistake in README.md about dependencies * nvme-tree: avoid warning in 'list-subsys' (bsc#1212598) * tree: Add getter for subsystem iopolicy (bsc#1124564) * fabrics: Consider also all hosts settings for context match * tree: Scan all subsystems (bsc#1212598) * doc: Fixing compile instruction in README * mi: allow non-4-byte-aligned responses * mi-mctp: use a linear response buffer * mi: implement length and offset alignment checks in admin_xfer() * tree: Don't open nvme devices until it's absolutely required (bsc#1213527 bsc#1213686) * tree: missing closedir() causes fd leak for "/sys/bus/pci/slots" * mi: don't return from mi_mctp_submit with a tag held * util: Provide empty nvme_ipaddrs_eq for static builds * fabrics: Relax match on well known disc ctrl lookup * tree: Ignore NULL address pointer for phy slot lookup * fabrics: Filter discovery ctrls out during application context check * util: Add ignored error code * json: Use memory block allocated by realloc() instead printbuf * util: Use HAVE_NETDB instead of HAVE_LIBNSS * tree: Add PCI physical slot number for controller * tree: Use nvme_ipaddrs_eq() to compare IP addresses * fabrics: Add EADDRNOTAVAIL error mapping * fabrics: filter out subsystems with non-matching application string * libnvme: add 'application' setting to nvme_root * libnvme: add 'application' setting to the subsystem * test: Add more code coverage for nvme_ipaddrs_eq() * util: rename ipaddrs_eq() to nvme_ipaddrs_eq() and make public. * util: Add ipaddrs_eq() to check whether two IP addresses are equal * test: Add unit test for ctrl lookups * ioctl: fix RAE bit on last Get Log Page command (bsc#1213618) * fabrics: check genctr after getting discovery entries (bsc#1213618) * fabrics: handle /dev/nvme-fabrics read failure * fabrics: fix potential invalid memory access in __nvmf_supported_option() * Python: Fix crash during garbage collection * python/swig: Check swig version to determine whether -py3 is needed * python/swig: Wrap swig-sensitive struct inside #ifwdef SWIG * mi: Add nvme_mi_ctrl_id to retrieve controller ID * Python: Suppress swig warnings about unnamed struct * examples: fix incorrect controller status in MI info output * ioctl: Explicitly initialize all members of struct nvme_ns_mgmt_args * Python: make NBFT data more pythonic * ioctl: io management send, receive args fix * python: Update test data * NBFT: Remove documentation from nbft.c since it's also in nbft.h * Python: Add NBFT support * nbft: Doc typo - Use nvme_nbft_free() instead of nbft_free() * nbft: Parse the {HOSTID,HOSTNQN}_CONFIGURED flags * nbft: Fix nbft_ssns_flags endianness test * nbft: Add a simple unit test * doc: Update README * build: Simple muon build configuration * build: Extend summary section * build: Make json-c dependency lookup not fail * nbft: Move added symbols to LIBNVME_1_5 * build: Update wrap mode defaults * build: Disable fallback on default * tree: Fix offset argument check in nvme_bytes_to_lba * nbft: add NBFT v1.0 table support (jsc#PED-1449) * types: Add IO command set specific field on nsmgmt * fabrics: Do not pass unsupported options to kernel * types: Add ns-mgmt host software specified fields * types.h: Add FDP related Status Code * tree: Fix argument check in nvme_bytes_to_lba- Fix build with meson 1.2.0- Update to version 1.4: (jsc#PED-553 jsc#PED-3884) * fabrics: Filter out invalid UUIDs from DMI * fabrics: Add define for DMI sysinfo * Print out correct TREQ strings for discovery * tree: fix generic device open failure * fabrics: add configuration option 'tls_key' * fabrics: add configuration option 'keyring' * linux: add key helper functions * nvme: add 'nvme_insert_tls_key()' function * linux: add nvme_lookup_keyring() * python: Change python option from combo to feature * types: add opcode field to error log page (TP4113) * python: Add setter property for controller DHCHAP Key * python: Remove redundant host.set_key() method * build, meson: Print option summary * Python: Add support for setting/getting Host DHCHAP key * Python: Add hostnqn_from_file() and hostid_from_file() * types: Update position of elbatm in struct nvme_copy_range{_f1} * doc: fix kernel-doc-check warning * python, meson: Assert that deps are present for -Dpython=true * python: Reformat SWIG input file * python test: Check there is no SIGSEGV during garbage collection * python: Return PyObject* from __str__() instead of a static char[] * python: Fix segmentation fault during garbage collection * build: Enable test in muon minimal build * build: Streamline workflows with nvme-cli * mi: Add nvme_mi_admin_get_log_page * ioctl: Set file descriptor in nvme_get_log_page() * fix endians * fabrics: Do not ignore one char whitespace when string sanitizing - Enabled unit test on s390x again (bsc#1207687, bsc#1207686) - Fix invalid string lenght calculcation for UUID (bsc#1209906) - Fix segmentation fault during garbage collection (bsc#1209905) - Always sanitize traddr and trsvcid entries (bsc#1207435) - Allow tracking unique discover controllers (bsc#1186689)- temporarily disable unit tests on s390x (bsc#1207687, bsc#1207686)- Update to version 1.3: * Support added for Flexible Data Placement (TP4146) * Fabrics: added support for Persistent Discovery Controllers. * libnvme-mi added a quirk framework to workaround special behavior of certain devices * The python binding behaves more friendly in a threading environment by release the GIL on blocking calls. * Replaced 3the libsystemd dependency with libdbus * A lot of small fixes everywhere (leaks, wrong ordering of arguments, ...) - Update spec file * Project depends on meson >= 0.50.0- Update to version 1.2: * Add more details for return code of MI admin cmds * Parse dhchap_host_key on controller level * Update json config schema for missing dhchap host key * fabrics: Add new TP8010 definitions * fabrics: Add nvmf_get_discovery_wargs() * fabrics: Duplicate strings when merging configs * fabrics: Filter out empty strings in add_argument() * fabrics: Use fallthrough statement * ioctl: Set log page offset for nvme_get_log_telemetry_host * json-schema: add dhchap_key details to host section * json: Enforce correctly formatted JSON config files * json: Verify JSON config file starts with an array * mi: Add Get Log Page helpers * mi: Add Identify function for secondary controller list * mi: Add Identify helper for ns-descs and primary-ctrl-caps * mi: Add firmware download and commit commands * mi: Add identify helper for nsid-capable Controller List * mi: Add identify helpers for namespace lists * mi: Add identify helpers for namespaces * mi: Allow Admin-message sized More Processing Required responses * mi: Distinguish MI status from NVMe (CDW3) status * mi: Fix C++ compiler errors * mi: Implement Format NVM command * mi: Implement Get & Set Features Admin commands * mi: Implement NS attach command and helpers * mi: Implement Namespace Management command and create/delete helpers * mi: Implement Sanitize command * mi: Init ctrl_id within xfer * mi: Introduce a helper for response status, unify values with ioctls * mi: Set log page offset for nvme_get_log_telemetry_host * mi: add nvme_mi_status_to_string() * mi: fix a memory leak in nvme_mi_open_mctp() * mi: fix get_log_page chunked offset check * nvme-tree: avoid segfault if auth keys are unavailable * python: Use nvmf_get_discovery_wargs() * tree: rename controller 'dhchap_key' to 'dhchap_ctrl_key' * types: Move enum nvme_data_tfr to types * util: Add LINE_MAX define * util: Add get feature length 2 API to support direction parameter * util: Add simple UUID type * util: Do not expose fallthrough defines - Make man page build conditiional. Install man page location has been fixed upstream. - Mark the Python directory own by the libnvme3-python package- Use fixed manpage build date (boo#1047218)- Fix installation of manual pages to make them accessible- Update to version 1.1: * Regenerate all documentation * json: fixup dhchap_ctrl_key definitions * fabrics: Fix build_options() return values * fabrics: sanitize dump-config output * Fix poll.h includes * build: Drop -nostdinc for LibreSSL header checks * ioctl: Honor rae in nvme_get_nsid_log * build: Add support to build against LibreSSL * rpmbuild: Enable 'make rpm' to build rpm pkgs #408 * mi: unify MI Get Log Page function with ioctl API * python: add missing ctrl attrs to Python bindings * mi-mctp: Add timeout support to MCTP transport * mi: Add maximum More Processing Required limit API * mi: Add endpoint get/set timeout API * tree: Factor lookup code for controller (bsc#1199503) * fabrics: Consider config from file when adding new controller (bsc#1199503) * fabrics: Lower log level in __nvmf_add_ctrl (bsc#1199994 bsc#1199503) * fabrics: Remove double connection error logging (bsc#1199994 bsc#1199503) * Fixes for controller authentication (bsc#1201501 bsc#1201700 bsc#1201701 bsc#1201717)- Update to version v1.1-rc0: * update/cleanup of documentation * various build fixes * various fixes reported by coverity * 64-bit Reference Tags and TP-4068 changes * libnvme-mi: Introduce NVMe Managament Interface library- Update to version 1.0: * tree: Remove default port setting for TCP and RDMA ports * tree: add 'f_args' argument to pass user data to the filter function * tree: remove 'ctrl_get_ana_state()' * tree: add namespace path iterators * tree: filter out namespaces * tree: update nvme_scan_filter_t usage- Update to version 1.0-rc8: * types: Add support for get log - MI Command Supported * types: Add new Identify constant * types: Update persistent event entry struct added new fields * types: Add Host Initiated Data Gen Number to telemetry log struct * tree: always allocate config file in nvme_read_config() * tree: rework nvme_scan_subsystem() * tree: make subsystem name mandatory in nvme_scan_ctrl() * tree: move nvme_init_subsystem() into nvme_lookup_subsystem() * tree: do not return error when filtering out subsystems * tree: add debugging messages during scanning * tree: Handle NULL subsysname in nvme_scan_ctrl() * tree: Fix subsystem initialization in nvme_scan_ctrl() * tree: Fix leaking 'name' in nvme_subsystem_lookup_namespace() * tree: Avoid dereferencing nvme_subsystem_t before its check for NULL * tree: Clarify NULL return values from nvme_get_attr() * fabrics: Invoke nvmf_dim() with provided tas argument * fabrics: add 'nvmf_update_config()' * fabrics: Avoid out of bounds string chomping * fabrics: Free old traddr in nvmf_add_ctrl * fabrics: update log level for write failures * fabrics: Streamlining documentation * fabrics: Fix leaking ctrl in nvmf_connect_disc_entry() * fabrics: Add missing break in a switch * ioctl: Remove attribute packed and alignedof for args structs * ioctl: Align arguments indentation with braces * json: fix endless loop scanning for controllers * Remove nvme_init_id_ns * Add lbstm support for create-ns * documentation updates- Update to version 1.0-rc7: * linux: fixup log page offset in nvme_get_log_page() * tree: Add support for default trsvcid for all controllers (bsc#1195858) * tree: fixup coredump during nvme discover- Update to version 1.0-rc6: * tree: add nvme_ctrl_get_ana_state() (bsc#1195938) * tree: link paths to namespaces in nvme_subsystem_scan_namespace() (bsc#1195938) * ioctl.h: ns list bug fix (wrong cns value) * types.h: Key Value Command Set Identifier added (NVME_CSI_KV) * types: fix status code type bug (wrong masking)- Update License information. The library is released under LGPL-2.1-or-later and not LGPL-2.1-only.- Update to version 1.0-rc5: * ioctl: Set lsp to action in nvme_get_log_persistent_event (bsc#1196121) * tree: Ignore traddr case in nvme_lookup_ctrl() (bsc#1194025) * fabrics: Do not swap bytes for system uuid (bsc#1196565) * documentation updates- Update to version 1.0-rc4: * fabrics: add default port number for NVMe/TCP I/O controllers * linux: Update size when telemetry controller initiated data is unavailable * add cdw13 for set_feature_args structure * Add support for TP8010 * Documentation cleanups- Update to version v1.0-rc3: * Properly create manuals/documentation * Fix memleaks in __nvme_free_ns() and nvme_scan_subsystem() * nvme: get log domain id included in Log Specific Identifier * nvme: Add nulbaf(Number of Unique Capability LBA Formats) field on nvmd_id_ns * ioctl: Add identify ioctl for CNS 09h, 0Ah * nvme: Add Enhanced Controller Meta Data(FID: 0x7D) * nvme: Add Supported Capacity Configuration List log page(LID: 0x11) * tree: do not set dhchap_key to 'none' * tree: restart controller lookup * tree: fixup memory leak in nvme_scan_ctrl() * Rename nvme_path_get_subsystem() * Remove nvme_reset_topology() - Use precompiled documentation instead regenerating it- Update to version 1.0~2: * Add fabrics config option 'tls' * Logging infrastructure reworked (API break) * Changed argument structs layout (API break) * Changed scan API (API break) * Fixed ctrl_loss_tmo handling concerning values of '-1' * Various build fixes- Remove Provide for python package. - Remove explicit tar file name for setup step.- Use osc_scm to manage upstream input source.- Fix Source URL- Initial package creation for libnvmeibs-power9-17 1733497368  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQR1.8+79.g69e7772-150600.3.12.21.8+79.g69e7772-150600.3.12.21.81.8libnvme-mi.hlibnvme.hnvmeapi-types.hfabrics.hfilters.hioctl.hlinux.hlog.hmi.hnbft.htree.htypes.hutil.hlibnvme-mi.solibnvme.solibnvme-mi.pclibnvme.pclibnvme-develREADME.mdnbft_control.2.gznbft_control_flags.2.gznbft_desc_type.2.gznbft_discovery.2.gznbft_discovery_flags.2.gznbft_header.2.gznbft_heap_obj.2.gznbft_hfi.2.gznbft_hfi_flags.2.gznbft_hfi_info_tcp.2.gznbft_hfi_info_tcp_flags.2.gznbft_host.2.gznbft_host_flags.2.gznbft_info.2.gznbft_info_discovery.2.gznbft_info_hfi.2.gznbft_info_hfi_info_tcp.2.gznbft_info_host.2.gznbft_info_nid_type.2.gznbft_info_primary_admin_host_flag.2.gznbft_info_security.2.gznbft_info_subsystem_ns.2.gznbft_security.2.gznbft_security_flags.2.gznbft_security_secret_type.2.gznbft_ssns.2.gznbft_ssns_ext_info.2.gznbft_ssns_ext_info_flags.2.gznbft_ssns_flags.2.gznbft_ssns_trflags.2.gznbft_trtype.2.gznvme_admin_opcode.2.gznvme_admin_passthru.2.gznvme_admin_passthru64.2.gznvme_ae_info_css_nvm.2.gznvme_ae_info_error.2.gznvme_ae_info_notice.2.gznvme_ae_info_smart.2.gznvme_ae_type.2.gznvme_aggregate_endurance_group_event.2.gznvme_aggregate_predictable_lat_event.2.gznvme_ana_group_desc.2.gznvme_ana_log.2.gznvme_ana_state.2.gznvme_apst_entry.2.gznvme_boot_partition.2.gznvme_capacity_config_desc.2.gznvme_capacity_mgmt.2.gznvme_change_ns_event.2.gznvme_channel_config_desc.2.gznvme_cmb_size.2.gznvme_cmd_effects.2.gznvme_cmd_effects_log.2.gznvme_cmd_format_mset.2.gznvme_cmd_format_pi.2.gznvme_cmd_format_pil.2.gznvme_cmd_format_ses.2.gznvme_cmd_get_log_lid.2.gznvme_cmd_get_log_telemetry_host_lsp.2.gznvme_compare.2.gznvme_connect_err.2.gznvme_constants.2.gznvme_copy.2.gznvme_copy_range.2.gznvme_copy_range_f1.2.gznvme_copy_range_f2.2.gznvme_copy_range_f3.2.gznvme_copy_range_sopt.2.gznvme_create_ctrl.2.gznvme_create_root.2.gznvme_csi.2.gznvme_ctrl_config_match.2.gznvme_ctrl_find.2.gznvme_ctrl_first_ns.2.gznvme_ctrl_first_path.2.gznvme_ctrl_for_each_ns.2.gznvme_ctrl_for_each_ns_safe.2.gznvme_ctrl_for_each_path.2.gznvme_ctrl_for_each_path_safe.2.gznvme_ctrl_get_address.2.gznvme_ctrl_get_config.2.gznvme_ctrl_get_dhchap_host_key.2.gznvme_ctrl_get_dhchap_key.2.gznvme_ctrl_get_fd.2.gznvme_ctrl_get_firmware.2.gznvme_ctrl_get_host_iface.2.gznvme_ctrl_get_host_traddr.2.gznvme_ctrl_get_model.2.gznvme_ctrl_get_name.2.gznvme_ctrl_get_numa_node.2.gznvme_ctrl_get_phy_slot.2.gznvme_ctrl_get_queue_count.2.gznvme_ctrl_get_serial.2.gznvme_ctrl_get_sqsize.2.gznvme_ctrl_get_src_addr.2.gznvme_ctrl_get_state.2.gznvme_ctrl_get_subsysnqn.2.gznvme_ctrl_get_subsystem.2.gznvme_ctrl_get_sysfs_dir.2.gznvme_ctrl_get_traddr.2.gznvme_ctrl_get_transport.2.gznvme_ctrl_get_trsvcid.2.gznvme_ctrl_identify.2.gznvme_ctrl_is_discovered.2.gznvme_ctrl_is_discovery_ctrl.2.gznvme_ctrl_is_persistent.2.gznvme_ctrl_is_unique_discovery_ctrl.2.gznvme_ctrl_list.2.gznvme_ctrl_metadata_type.2.gznvme_ctrl_next_ns.2.gznvme_ctrl_next_path.2.gznvme_ctrl_release_fd.2.gznvme_ctrl_reset.2.gznvme_ctrl_set_dhchap_host_key.2.gznvme_ctrl_set_dhchap_key.2.gznvme_ctrl_set_discovered.2.gznvme_ctrl_set_discovery_ctrl.2.gznvme_ctrl_set_persistent.2.gznvme_ctrl_set_unique_discovery_ctrl.2.gznvme_ctrls_filter.2.gznvme_data_tfr.2.gznvme_default_host.2.gznvme_describe_key_serial.2.gznvme_dev_self_test.2.gznvme_directive_dtype.2.gznvme_directive_receive_doper.2.gznvme_directive_recv.2.gznvme_directive_recv_identify_parameters.2.gznvme_directive_recv_stream_allocate.2.gznvme_directive_recv_stream_parameters.2.gznvme_directive_recv_stream_status.2.gznvme_directive_send.2.gznvme_directive_send_doper.2.gznvme_directive_send_id_endir.2.gznvme_directive_send_identify_endir.2.gznvme_directive_send_stream_release_identifier.2.gznvme_directive_send_stream_release_resource.2.gznvme_directive_types.2.gznvme_disconnect_ctrl.2.gznvme_dsm.2.gznvme_dsm_attributes.2.gznvme_dsm_range.2.gznvme_dst_stc.2.gznvme_dump_config.2.gznvme_dump_tree.2.gznvme_eg_critical_warning_flags.2.gznvme_eg_event_aggregate_log.2.gznvme_end_grp_chan_desc.2.gznvme_end_grp_config_desc.2.gznvme_endurance_group_log.2.gznvme_eom_lane_desc.2.gznvme_eom_optional_data.2.gznvme_errno_to_string.2.gznvme_error_log_page.2.gznvme_fabrics_config.2.gznvme_fctype.2.gznvme_fdp_config_desc.2.gznvme_fdp_config_fdpa.2.gznvme_fdp_config_log.2.gznvme_fdp_event.2.gznvme_fdp_event_flags.2.gznvme_fdp_event_realloc.2.gznvme_fdp_event_realloc_flags.2.gznvme_fdp_event_type.2.gznvme_fdp_events_log.2.gznvme_fdp_reclaim_unit_handle_status.2.gznvme_fdp_reclaim_unit_handle_update.2.gznvme_fdp_ruh_desc.2.gznvme_fdp_ruh_status.2.gznvme_fdp_ruh_status_desc.2.gznvme_fdp_ruh_type.2.gznvme_fdp_ruha.2.gznvme_fdp_ruhu_desc.2.gznvme_fdp_ruhu_log.2.gznvme_fdp_stats_log.2.gznvme_fdp_supported_event_attributes.2.gznvme_fdp_supported_event_desc.2.gznvme_feat.2.gznvme_feat_auto_pst.2.gznvme_feat_fdp_events_cdw11.2.gznvme_feat_host_behavior.2.gznvme_feat_nswpcfg_state.2.gznvme_feat_plm_window_select.2.gznvme_feat_resv_notify_flags.2.gznvme_feat_tmpthresh_thsel.2.gznvme_features_async_event_config_flags.2.gznvme_features_id.2.gznvme_fid_supported_effects.2.gznvme_fid_supported_effects_log.2.gznvme_firmware_slot.2.gznvme_first_host.2.gznvme_first_subsystem.2.gznvme_flush.2.gznvme_for_each_host.2.gznvme_for_each_host_safe.2.gznvme_for_each_subsystem.2.gznvme_for_each_subsystem_safe.2.gznvme_format_nvm.2.gznvme_format_nvm_compln_event.2.gznvme_format_nvm_start_event.2.gznvme_free_ctrl.2.gznvme_free_host.2.gznvme_free_ns.2.gznvme_free_subsystem.2.gznvme_free_tree.2.gznvme_fw_commit.2.gznvme_fw_commit_ca.2.gznvme_fw_commit_event.2.gznvme_fw_download.2.gznvme_fw_download_seq.2.gznvme_gen_dhchap_key.2.gznvme_generate_tls_key_identity.2.gznvme_get_ana_log_len.2.gznvme_get_attr.2.gznvme_get_ctrl_attr.2.gznvme_get_ctrl_telemetry.2.gznvme_get_directive_receive_length.2.gznvme_get_discovery_args.2.gznvme_get_feature_length.2.gznvme_get_feature_length2.2.gznvme_get_features.2.gznvme_get_features_arbitration.2.gznvme_get_features_async_event.2.gznvme_get_features_auto_pst.2.gznvme_get_features_data.2.gznvme_get_features_endurance_event_cfg.2.gznvme_get_features_err_recovery.2.gznvme_get_features_err_recovery2.2.gznvme_get_features_hctm.2.gznvme_get_features_host_behavior.2.gznvme_get_features_host_id.2.gznvme_get_features_host_mem_buf.2.gznvme_get_features_host_mem_buf2.2.gznvme_get_features_iocs_profile.2.gznvme_get_features_irq_coalesce.2.gznvme_get_features_irq_config.2.gznvme_get_features_kato.2.gznvme_get_features_lba_range.2.gznvme_get_features_lba_range2.2.gznvme_get_features_lba_sts_interval.2.gznvme_get_features_nopsc.2.gznvme_get_features_num_queues.2.gznvme_get_features_plm_config.2.gznvme_get_features_plm_window.2.gznvme_get_features_power_mgmt.2.gznvme_get_features_resv_mask.2.gznvme_get_features_resv_mask2.2.gznvme_get_features_resv_persist.2.gznvme_get_features_resv_persist2.2.gznvme_get_features_rrl.2.gznvme_get_features_sanitize.2.gznvme_get_features_sel.2.gznvme_get_features_simple.2.gznvme_get_features_sw_progress.2.gznvme_get_features_temp_thresh.2.gznvme_get_features_timestamp.2.gznvme_get_features_volatile_wc.2.gznvme_get_features_write_atomic.2.gznvme_get_features_write_protect.2.gznvme_get_host_telemetry.2.gznvme_get_lba_status.2.gznvme_get_lba_status_log.2.gznvme_get_log.2.gznvme_get_log_ana.2.gznvme_get_log_ana_groups.2.gznvme_get_log_boot_partition.2.gznvme_get_log_changed_ns_list.2.gznvme_get_log_cmd_effects.2.gznvme_get_log_create_telemetry_host.2.gznvme_get_log_device_self_test.2.gznvme_get_log_discovery.2.gznvme_get_log_endurance_group.2.gznvme_get_log_endurance_grp_evt.2.gznvme_get_log_error.2.gznvme_get_log_fdp_configurations.2.gznvme_get_log_fdp_events.2.gznvme_get_log_fdp_stats.2.gznvme_get_log_fid_supported_effects.2.gznvme_get_log_fw_slot.2.gznvme_get_log_lba_status.2.gznvme_get_log_media_unit_stat.2.gznvme_get_log_mi_cmd_supported_effects.2.gznvme_get_log_page.2.gznvme_get_log_persistent_event.2.gznvme_get_log_phy_rx_eom.2.gznvme_get_log_predictable_lat_event.2.gznvme_get_log_predictable_lat_nvmset.2.gznvme_get_log_reclaim_unit_handle_usage.2.gznvme_get_log_reservation.2.gznvme_get_log_sanitize.2.gznvme_get_log_smart.2.gznvme_get_log_support_cap_config_list.2.gznvme_get_log_supported_log_pages.2.gznvme_get_log_telemetry_ctrl.2.gznvme_get_log_telemetry_host.2.gznvme_get_log_zns_changed_zones.2.gznvme_get_logical_block_size.2.gznvme_get_new_host_telemetry.2.gznvme_get_ns_attr.2.gznvme_get_nsid.2.gznvme_get_path_attr.2.gznvme_get_property.2.gznvme_get_subsys_attr.2.gznvme_get_telemetry_log.2.gznvme_get_telemetry_max.2.gznvme_hmac_alg.2.gznvme_host_behavior_support.2.gznvme_host_get_dhchap_key.2.gznvme_host_get_hostid.2.gznvme_host_get_hostnqn.2.gznvme_host_get_hostsymname.2.gznvme_host_get_root.2.gznvme_host_is_pdc_enabled.2.gznvme_host_mem_buf_attrs.2.gznvme_host_metadata.2.gznvme_host_release_fds.2.gznvme_host_set_dhchap_key.2.gznvme_host_set_hostsymname.2.gznvme_host_set_pdc_enabled.2.gznvme_id_ctrl.2.gznvme_id_ctrl_anacap.2.gznvme_id_ctrl_apsta.2.gznvme_id_ctrl_avscc.2.gznvme_id_ctrl_cmic.2.gznvme_id_ctrl_cntrltype.2.gznvme_id_ctrl_cqes.2.gznvme_id_ctrl_ctratt.2.gznvme_id_ctrl_dctype.2.gznvme_id_ctrl_dsto.2.gznvme_id_ctrl_fcatt.2.gznvme_id_ctrl_fna.2.gznvme_id_ctrl_frmw.2.gznvme_id_ctrl_fuses.2.gznvme_id_ctrl_hctm.2.gznvme_id_ctrl_lpa.2.gznvme_id_ctrl_mec.2.gznvme_id_ctrl_nvm.2.gznvme_id_ctrl_nvmsr.2.gznvme_id_ctrl_nvscc.2.gznvme_id_ctrl_nwpc.2.gznvme_id_ctrl_oacs.2.gznvme_id_ctrl_oaes.2.gznvme_id_ctrl_ofcs.2.gznvme_id_ctrl_oncs.2.gznvme_id_ctrl_rpmbs.2.gznvme_id_ctrl_sanicap.2.gznvme_id_ctrl_sgls.2.gznvme_id_ctrl_sqes.2.gznvme_id_ctrl_vwc.2.gznvme_id_ctrl_vwci.2.gznvme_id_directives.2.gznvme_id_domain_attr.2.gznvme_id_domain_list.2.gznvme_id_endurance_group_list.2.gznvme_id_independent_id_ns.2.gznvme_id_iocs.2.gznvme_id_ns.2.gznvme_id_ns_attr.2.gznvme_id_ns_dlfeat.2.gznvme_id_ns_dpc.2.gznvme_id_ns_dps.2.gznvme_id_ns_flbas.2.gznvme_id_ns_granularity_desc.2.gznvme_id_ns_granularity_list.2.gznvme_id_ns_mc.2.gznvme_id_ns_nmic.2.gznvme_id_ns_rescap.2.gznvme_id_nsfeat.2.gznvme_id_nvmset_list.2.gznvme_id_psd.2.gznvme_id_uuid.2.gznvme_id_uuid_list.2.gznvme_id_uuid_list_entry.2.gznvme_identify.2.gznvme_identify_active_ns_list.2.gznvme_identify_active_ns_list_csi.2.gznvme_identify_allocated_ns.2.gznvme_identify_allocated_ns_list.2.gznvme_identify_allocated_ns_list_csi.2.gznvme_identify_cns.2.gznvme_identify_ctrl.2.gznvme_identify_ctrl_csi.2.gznvme_identify_ctrl_list.2.gznvme_identify_domain_list.2.gznvme_identify_endurance_group_list.2.gznvme_identify_independent_identify_ns.2.gznvme_identify_iocs.2.gznvme_identify_iocs_ns_csi_user_data_format.2.gznvme_identify_ns.2.gznvme_identify_ns_csi.2.gznvme_identify_ns_csi_user_data_format.2.gznvme_identify_ns_descs.2.gznvme_identify_ns_granularity.2.gznvme_identify_nsid_ctrl_list.2.gznvme_identify_nvmset_list.2.gznvme_identify_primary_ctrl.2.gznvme_identify_secondary_ctrl_list.2.gznvme_identify_uuid.2.gznvme_init_copy_range.2.gznvme_init_copy_range_f1.2.gznvme_init_copy_range_f2.2.gznvme_init_copy_range_f3.2.gznvme_init_ctrl.2.gznvme_init_ctrl_list.2.gznvme_init_dsm_range.2.gznvme_init_logging.2.gznvme_insert_tls_key.2.gznvme_insert_tls_key_versioned.2.gznvme_io.2.gznvme_io_control_flags.2.gznvme_io_dsm_flags.2.gznvme_io_mgmt_recv.2.gznvme_io_mgmt_recv_mo.2.gznvme_io_mgmt_send.2.gznvme_io_mgmt_send_mo.2.gznvme_io_opcode.2.gznvme_io_passthru.2.gznvme_io_passthru64.2.gznvme_is_64bit_reg.2.gznvme_lba_range_type.2.gznvme_lba_range_type_entry.2.gznvme_lba_rd.2.gznvme_lba_status.2.gznvme_lba_status_atype.2.gznvme_lba_status_desc.2.gznvme_lba_status_log.2.gznvme_lbaf.2.gznvme_lbaf_rp.2.gznvme_lbart.2.gznvme_lbas_ns_element.2.gznvme_lockdown.2.gznvme_log_ana_lsp.2.gznvme_log_phy_rx_eom_action.2.gznvme_log_phy_rx_eom_quality.2.gznvme_lookup_ctrl.2.gznvme_lookup_host.2.gznvme_lookup_key.2.gznvme_lookup_keyring.2.gznvme_lookup_subsystem.2.gznvme_media_unit_config_desc.2.gznvme_media_unit_stat_desc.2.gznvme_media_unit_stat_log.2.gznvme_metadata_element_desc.2.gznvme_mi_admin_admin_passthru.2.gznvme_mi_admin_format_nvm.2.gznvme_mi_admin_fw_commit.2.gznvme_mi_admin_fw_download.2.gznvme_mi_admin_get_features_data.2.gznvme_mi_admin_get_log.2.gznvme_mi_admin_get_log_ana.2.gznvme_mi_admin_get_log_ana_groups.2.gznvme_mi_admin_get_log_boot_partition.2.gznvme_mi_admin_get_log_changed_ns_list.2.gznvme_mi_admin_get_log_cmd_effects.2.gznvme_mi_admin_get_log_create_telemetry_host.2.gznvme_mi_admin_get_log_device_self_test.2.gznvme_mi_admin_get_log_discovery.2.gznvme_mi_admin_get_log_endurance_group.2.gznvme_mi_admin_get_log_endurance_grp_evt.2.gznvme_mi_admin_get_log_error.2.gznvme_mi_admin_get_log_fid_supported_effects.2.gznvme_mi_admin_get_log_fw_slot.2.gznvme_mi_admin_get_log_lba_status.2.gznvme_mi_admin_get_log_media_unit_stat.2.gznvme_mi_admin_get_log_mi_cmd_supported_effects.2.gznvme_mi_admin_get_log_page.2.gznvme_mi_admin_get_log_persistent_event.2.gznvme_mi_admin_get_log_phy_rx_eom.2.gznvme_mi_admin_get_log_predictable_lat_event.2.gznvme_mi_admin_get_log_predictable_lat_nvmset.2.gznvme_mi_admin_get_log_reservation.2.gznvme_mi_admin_get_log_sanitize.2.gznvme_mi_admin_get_log_simple.2.gznvme_mi_admin_get_log_smart.2.gznvme_mi_admin_get_log_support_cap_config_list.2.gznvme_mi_admin_get_log_supported_log_pages.2.gznvme_mi_admin_get_log_telemetry_ctrl.2.gznvme_mi_admin_get_log_telemetry_host.2.gznvme_mi_admin_get_log_zns_changed_zones.2.gznvme_mi_admin_get_nsid_log.2.gznvme_mi_admin_identify.2.gznvme_mi_admin_identify_active_ns_list.2.gznvme_mi_admin_identify_allocated_ns.2.gznvme_mi_admin_identify_allocated_ns_list.2.gznvme_mi_admin_identify_cns_nsid.2.gznvme_mi_admin_identify_ctrl.2.gznvme_mi_admin_identify_ctrl_list.2.gznvme_mi_admin_identify_ns.2.gznvme_mi_admin_identify_ns_descs.2.gznvme_mi_admin_identify_nsid_ctrl_list.2.gznvme_mi_admin_identify_partial.2.gznvme_mi_admin_identify_primary_ctrl.2.gznvme_mi_admin_identify_secondary_ctrl_list.2.gznvme_mi_admin_ns_attach.2.gznvme_mi_admin_ns_attach_ctrls.2.gznvme_mi_admin_ns_detach_ctrls.2.gznvme_mi_admin_req_hdr.2.gznvme_mi_admin_resp_hdr.2.gznvme_mi_admin_sanitize_nvm.2.gznvme_mi_admin_security_recv.2.gznvme_mi_admin_security_send.2.gznvme_mi_admin_xfer.2.gznvme_mi_ccs.2.gznvme_mi_close.2.gznvme_mi_close_ctrl.2.gznvme_mi_cmd_supported_effects.2.gznvme_mi_cmd_supported_effects_log.2.gznvme_mi_config_id.2.gznvme_mi_config_smbus_freq.2.gznvme_mi_create_root.2.gznvme_mi_csts.2.gznvme_mi_ctrl_health_status.2.gznvme_mi_ctrl_id.2.gznvme_mi_cwarn.2.gznvme_mi_dtyp.2.gznvme_mi_elem.2.gznvme_mi_free_root.2.gznvme_mi_init_ctrl.2.gznvme_mi_message_type.2.gznvme_mi_mi_opcode.2.gznvme_mi_mi_read_mi_data_ctrl.2.gznvme_mi_mi_read_mi_data_ctrl_list.2.gznvme_mi_mi_read_mi_data_port.2.gznvme_mi_mi_read_mi_data_subsys.2.gznvme_mi_mi_req_hdr.2.gznvme_mi_mi_resp_hdr.2.gznvme_mi_mi_subsystem_health_status_poll.2.gznvme_mi_msg_hdr.2.gznvme_mi_msg_resp.2.gznvme_mi_nvm_ss_health_status.2.gznvme_mi_open_mctp.2.gznvme_mi_osc.2.gznvme_mi_port_pcie.2.gznvme_mi_port_smb.2.gznvme_mi_read_ctrl_info.2.gznvme_mi_read_nvm_ss_info.2.gznvme_mi_read_port_info.2.gznvme_mi_read_sc_list.2.gznvme_mi_resp_status.2.gznvme_mi_set_probe_enabled.2.gznvme_mi_status_to_string.2.gznvme_mi_vpd_hdr.2.gznvme_mi_vpd_mr_common.2.gznvme_mi_vpd_mra.2.gznvme_mi_vpd_ppmra.2.gznvme_mi_vpd_telem.2.gznvme_mi_vpd_tra.2.gznvme_namespace_attach_ctrls.2.gznvme_namespace_detach_ctrls.2.gznvme_namespace_filter.2.gznvme_namespace_first_path.2.gznvme_namespace_for_each_path.2.gznvme_namespace_for_each_path_safe.2.gznvme_namespace_next_path.2.gznvme_nbft_free.2.gznvme_nbft_read.2.gznvme_nd_ns_fpi.2.gznvme_next_host.2.gznvme_next_subsystem.2.gznvme_ns_attach.2.gznvme_ns_attach_ctrls.2.gznvme_ns_attach_sel.2.gznvme_ns_compare.2.gznvme_ns_detach_ctrls.2.gznvme_ns_flush.2.gznvme_ns_get_csi.2.gznvme_ns_get_ctrl.2.gznvme_ns_get_eui64.2.gznvme_ns_get_fd.2.gznvme_ns_get_firmware.2.gznvme_ns_get_generic_name.2.gznvme_ns_get_lba_count.2.gznvme_ns_get_lba_size.2.gznvme_ns_get_lba_util.2.gznvme_ns_get_meta_size.2.gznvme_ns_get_model.2.gznvme_ns_get_name.2.gznvme_ns_get_nguid.2.gznvme_ns_get_nsid.2.gznvme_ns_get_serial.2.gznvme_ns_get_subsystem.2.gznvme_ns_get_sysfs_dir.2.gznvme_ns_get_uuid.2.gznvme_ns_id_desc.2.gznvme_ns_id_desc_nidt.2.gznvme_ns_identify.2.gznvme_ns_identify_descs.2.gznvme_ns_list.2.gznvme_ns_metadata_type.2.gznvme_ns_mgmt.2.gznvme_ns_mgmt_create.2.gznvme_ns_mgmt_delete.2.gznvme_ns_mgmt_host_sw_specified.2.gznvme_ns_mgmt_sel.2.gznvme_ns_read.2.gznvme_ns_release_fd.2.gznvme_ns_rescan.2.gznvme_ns_verify.2.gznvme_ns_write.2.gznvme_ns_write_protect_cfg.2.gznvme_ns_write_uncorrectable.2.gznvme_ns_write_zeros.2.gznvme_nss_hw_err_event.2.gznvme_nvm_id_ns.2.gznvme_nvm_id_ns_elbaf.2.gznvme_nvm_identify_ctrl.2.gznvme_nvmeset_pl_status.2.gznvme_nvmset_attr.2.gznvme_nvmset_pl_events.2.gznvme_nvmset_predictable_lat_log.2.gznvme_open.2.gznvme_passthru_cmd.2.gznvme_passthru_cmd64.2.gznvme_path_get_ana_state.2.gznvme_path_get_ctrl.2.gznvme_path_get_name.2.gznvme_path_get_ns.2.gznvme_path_get_sysfs_dir.2.gznvme_paths_filter.2.gznvme_persistent_event_entry.2.gznvme_persistent_event_log.2.gznvme_persistent_event_types.2.gznvme_pevent_log_action.2.gznvme_phy_rx_eom_log.2.gznvme_phy_rx_eom_progress.2.gznvme_plm_config.2.gznvme_pmr_size.2.gznvme_pmr_throughput.2.gznvme_power_on_reset_info_list.2.gznvme_primary_ctrl_cap.2.gznvme_psd_flags.2.gznvme_psd_power_scale.2.gznvme_psd_ps.2.gznvme_psd_workload.2.gznvme_read.2.gznvme_read_config.2.gznvme_refresh_topology.2.gznvme_register_offsets.2.gznvme_registered_ctrl.2.gznvme_registered_ctrl_ext.2.gznvme_rescan_ctrl.2.gznvme_resv_acquire.2.gznvme_resv_cptpl.2.gznvme_resv_notification_log.2.gznvme_resv_notify_rnlpt.2.gznvme_resv_racqa.2.gznvme_resv_register.2.gznvme_resv_release.2.gznvme_resv_report.2.gznvme_resv_rrega.2.gznvme_resv_rrela.2.gznvme_resv_rtype.2.gznvme_resv_status.2.gznvme_sanitize_compln_event.2.gznvme_sanitize_log_page.2.gznvme_sanitize_nvm.2.gznvme_sanitize_sanact.2.gznvme_sanitize_sstat.2.gznvme_sanitize_start_event.2.gznvme_scan.2.gznvme_scan_ctrl.2.gznvme_scan_ctrl_namespace_paths.2.gznvme_scan_ctrl_namespaces.2.gznvme_scan_ctrls.2.gznvme_scan_namespace.2.gznvme_scan_subsystem_namespaces.2.gznvme_scan_subsystems.2.gznvme_scan_topology.2.gznvme_secondary_ctrl.2.gznvme_secondary_ctrl_list.2.gznvme_security_receive.2.gznvme_security_send.2.gznvme_self_test_log.2.gznvme_set_feature_event.2.gznvme_set_features.2.gznvme_set_features_arbitration.2.gznvme_set_features_async_event.2.gznvme_set_features_auto_pst.2.gznvme_set_features_data.2.gznvme_set_features_endurance_evt_cfg.2.gznvme_set_features_err_recovery.2.gznvme_set_features_hctm.2.gznvme_set_features_host_behavior.2.gznvme_set_features_host_id.2.gznvme_set_features_iocs_profile.2.gznvme_set_features_irq_coalesce.2.gznvme_set_features_irq_config.2.gznvme_set_features_lba_range.2.gznvme_set_features_lba_sts_interval.2.gznvme_set_features_nopsc.2.gznvme_set_features_plm_config.2.gznvme_set_features_plm_window.2.gznvme_set_features_power_mgmt.2.gznvme_set_features_resv_mask.2.gznvme_set_features_resv_mask2.2.gznvme_set_features_resv_persist.2.gznvme_set_features_resv_persist2.2.gznvme_set_features_rrl.2.gznvme_set_features_sanitize.2.gznvme_set_features_simple.2.gznvme_set_features_sw_progress.2.gznvme_set_features_temp_thresh.2.gznvme_set_features_timestamp.2.gznvme_set_features_volatile_wc.2.gznvme_set_features_write_atomic.2.gznvme_set_features_write_protect.2.gznvme_set_features_write_protect2.2.gznvme_set_keyring.2.gznvme_set_property.2.gznvme_set_root.2.gznvme_smart_crit.2.gznvme_smart_egcw.2.gznvme_smart_log.2.gznvme_st_code.2.gznvme_st_curr_op.2.gznvme_st_result.2.gznvme_st_valid_diag_info.2.gznvme_status_code.2.gznvme_status_code_type.2.gznvme_status_equals.2.gznvme_status_field.2.gznvme_status_get_type.2.gznvme_status_get_value.2.gznvme_status_result.2.gznvme_status_to_errno.2.gznvme_status_to_string.2.gznvme_status_type.2.gznvme_streams_directive_params.2.gznvme_streams_directive_status.2.gznvme_submit_admin_passthru.2.gznvme_submit_admin_passthru64.2.gznvme_submit_io_passthru.2.gznvme_submit_io_passthru64.2.gznvme_subsys_filter.2.gznvme_subsys_type.2.gznvme_subsystem_first_ctrl.2.gznvme_subsystem_first_ns.2.gznvme_subsystem_for_each_ctrl.2.gznvme_subsystem_for_each_ctrl_safe.2.gznvme_subsystem_for_each_ns.2.gznvme_subsystem_for_each_ns_safe.2.gznvme_subsystem_get_application.2.gznvme_subsystem_get_host.2.gznvme_subsystem_get_iopolicy.2.gznvme_subsystem_get_name.2.gznvme_subsystem_get_nqn.2.gznvme_subsystem_get_sysfs_dir.2.gznvme_subsystem_get_type.2.gznvme_subsystem_lookup_namespace.2.gznvme_subsystem_next_ctrl.2.gznvme_subsystem_next_ns.2.gznvme_subsystem_release_fds.2.gznvme_subsystem_reset.2.gznvme_subsystem_set_application.2.gznvme_supported_cap_config_list_log.2.gznvme_supported_log_pages.2.gznvme_telemetry_da.2.gznvme_telemetry_log.2.gznvme_thermal_exc_event.2.gznvme_time_stamp_change_event.2.gznvme_timestamp.2.gznvme_unlink_ctrl.2.gznvme_update_config.2.gznvme_uring_cmd.2.gznvme_verify.2.gznvme_version.2.gznvme_virt_mgmt_act.2.gznvme_virt_mgmt_rt.2.gznvme_virtual_mgmt.2.gznvme_write.2.gznvme_write_uncorrectable.2.gznvme_write_zeros.2.gznvme_zns_append.2.gznvme_zns_changed_zone_log.2.gznvme_zns_desc.2.gznvme_zns_id_ctrl.2.gznvme_zns_id_ns.2.gznvme_zns_identify_ctrl.2.gznvme_zns_identify_ns.2.gznvme_zns_lbafe.2.gznvme_zns_mgmt_recv.2.gznvme_zns_mgmt_send.2.gznvme_zns_recv_action.2.gznvme_zns_report_options.2.gznvme_zns_report_zones.2.gznvme_zns_send_action.2.gznvme_zns_za.2.gznvme_zns_zs.2.gznvme_zns_zt.2.gznvme_zone_report.2.gznvmf_add_ctrl.2.gznvmf_addr_family.2.gznvmf_adrfam_str.2.gznvmf_cms_str.2.gznvmf_connect_data.2.gznvmf_connect_disc_entry.2.gznvmf_default_config.2.gznvmf_dim_data.2.gznvmf_dim_entfmt.2.gznvmf_dim_etype.2.gznvmf_dim_tas.2.gznvmf_disc_eflags.2.gznvmf_disc_log_entry.2.gznvmf_discovery_log.2.gznvmf_eflags_str.2.gznvmf_exat_len.2.gznvmf_exattype.2.gznvmf_ext_attr.2.gznvmf_ext_die.2.gznvmf_get_discovery_log.2.gznvmf_get_discovery_wargs.2.gznvmf_hostid_from_file.2.gznvmf_hostnqn_from_file.2.gznvmf_hostnqn_generate.2.gznvmf_log_discovery_lid_support.2.gznvmf_log_discovery_lsp.2.gznvmf_prtype_str.2.gznvmf_qptype_str.2.gznvmf_rdma_cms.2.gznvmf_rdma_prtype.2.gznvmf_rdma_qptype.2.gznvmf_register_ctrl.2.gznvmf_sectype_str.2.gznvmf_subtype_str.2.gznvmf_tcp_sectype.2.gznvmf_treq.2.gznvmf_treq_str.2.gznvmf_trtype.2.gznvmf_trtype_str.2.gznvmf_update_config.2.gz/usr/include//usr/include/nvme//usr/lib64//usr/lib64/pkgconfig//usr/share/doc/packages//usr/share/doc/packages/libnvme-devel//usr/share/man/man2/-fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -gobs://build.suse.de/SUSE:Maintenance:36715/SUSE_SLE-15-SP6_Update/8e943849b893d8ff9e90c09052f8828f-libnvme.SUSE_SLE-15-SP6_Updatedrpmxz5ppc64le-suse-linuxC source, ASCII textdirectoryC source, UTF-8 Unicode textpkgconfig fileASCII text, with very long linestroff or preprocessor input, ASCII text (gzip compressed data, max compression, from Unix)C source, ASCII text (gzip compressed data, max compression, from Unix)troff or preprocessor input, UTF-8 Unicode text (gzip compressed data, max compression, from Unix)PRRPRRRRaBVR"%V{# I"~yZ{F:Irhj@u--)}V J7TpxT͡BDTr-N@` n!ѵNt%tKO=6Bg1‡.lz,eUwV%G:HJs&b(qX:yBV Hg⾲fET ZbV¾E ~4#CKIZ,J>*J[`YB󢖁z`E+6qh 'آp۱bCVT*kʬř1W5кMiބ>|Xa5$#2d/VlBӑ]]~ͽ2澞Ej;*jD|iC+L'yT?goMXLJƀ5\ogs9<6lv81sXGx]Nã_(_+\ÉOP vGxMaMᎸWzGd d@ xspp?BmuӐPY6L#j!qp2pgi†S1F&hBDLXiO|vqP00DAQI\P~ ff[o)(7yQ?zn+\YYǔ%z`@8!5..$W3H /ODݤFq>"L<e (D~ ڸy%uH ;7g=vtepZbqG56cJؗNYq =nmtmYxU1H>5ٮ YyWTٙsF$#ql,x7Y҅ _}&̄-\Iixv Jz[H/堘sc/,V8|p[ V5 (.f @Ї3UaMTJgbg0 d͉`& dy _ @|i"p<(M%W;gz?{'셛yPn3b%AZYVr\wAs׏Km1h"#_*Óu k9'ѵ(`hD,BDþ WrRyYɉID9 0JٛdH{abbrf&jJ$9ݢ5r(ttY,ILwoѬf- ~ RLLTT @꼎?`ƚU3S~v\Pdx jd:򁷲Zg,Gv ^Og\(㦄32F [R_SP. : C출Lo~DΛp0|A"u>Ȧ BǮuyqRT,Eh c|;e}jw}LTZ-[1.njnN9Z/(g7xV@"[lݞ;_QTOmYr*_ dtґMf8o$Xl3{$-/c/w0k@Ûr5ۭvyȐ.+q{GI s.7$N$pvALFa{ dl޿ҪIuIvbn U˾q썘WKY#3l < >-];eD +"89^9q>NKAϜYG5:!4S m5!š+}W'5ž"ln} ۈW'f~hb@ΐa: 3 [DvU n/'8S) -[gehǏ3:IHω|&ߨDS+Kϧ bzE@*Äd>Ǵ^n.IXp)a!א\P3 d5f}&[Jaiv䐐ο]74@ƙvaҮ;/.'a[ՏzK(~V -\.q?UA-Pd誵ڻkX/*&u ٘bZcqYr!s S:s$" t) # - ?I qݥ)nK9ޔ_ԣ_FgNkⓦ2ώDǰOC #$i֥0j1(wvZ6LuEqr9qeUR5huJ]=x߄ ^l~LL[qk]߆kopB -Sw=ٕ#a4_/F#B4z^\4_qwY(zi` ɼ;F4&$'}@\|3_m=(ݨ]b*f޳?gX}3ݐQ$=;װXl3|8 G bBw\tK6mBXxr L@؊n1fџ$;0?Mt C|%2-oIiu`Ɩ?吡3KgbS?j j'KzFmSLw!2cq3J3rV= >oPz K~r w9