<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>139500</bug_id>
          
          <creation_ts>2014-12-10 11:58:04 -0800</creation_ts>
          <short_desc>PutById inline caching causing segfault in attached test.</short_desc>
          <delta_ts>2015-01-14 13:28:36 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>139707</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Matthew Mirman">mmirman</reporter>
          <assigned_to name="Matthew Mirman">mmirman</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>mmirman</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1054262</commentid>
    <comment_count>0</comment_count>
    <who name="Matthew Mirman">mmirman</who>
    <bug_when>2014-12-10 11:58:04 -0800</bug_when>
    <thetext>The attached test fails when LLInt is on and thresholdForJITAfterWarmUp=100:</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1054266</commentid>
    <comment_count>1</comment_count>
      <attachid>243056</attachid>
    <who name="Matthew Mirman">mmirman</who>
    <bug_when>2014-12-10 12:01:38 -0800</bug_when>
    <thetext>Created attachment 243056
failing put-by-id resursive test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1055737</commentid>
    <comment_count>2</comment_count>
      <attachid>243308</attachid>
    <who name="Matthew Mirman">mmirman</who>
    <bug_when>2014-12-15 14:16:58 -0800</bug_when>
    <thetext>Created attachment 243308
Fixes operationPutByIdOptimizes such that they save the structure before the put</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1055800</commentid>
    <comment_count>3</comment_count>
      <attachid>243308</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-12-15 16:30:37 -0800</bug_when>
    <thetext>Comment on attachment 243308
Fixes operationPutByIdOptimizes such that they save the structure before the put

View in context: https://bugs.webkit.org/attachment.cgi?id=243308&amp;action=review

Code looks good, but you should improve this layout test before landing it.

&gt; Source/JavaScriptCore/tests/stress/put-by-id-build-list-order-recurse.js:15
&gt; +    var str = &quot;for (var i = &quot; + currentCount + &quot;; i &lt; &quot; + (100 + currentCount) + &quot;; ++i)\n&quot;
&gt; +            + &quot;    o.f\n&quot;;
&gt; +    eval(str);

An incorrect read or write can sometimes survive without crashing. This test should explicitly check its result for some sensible value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1055801</commentid>
    <comment_count>4</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-12-15 16:34:14 -0800</bug_when>
    <thetext>It looks like this crash is in the JIT. Why does it only happen when the LLInt is enabled?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1056019</commentid>
    <comment_count>5</comment_count>
    <who name="Matthew Mirman">mmirman</who>
    <bug_when>2014-12-16 11:27:41 -0800</bug_when>
    <thetext>It looks like the major thing that was changing the occurrence of the bug was thresholdForJITAfterWarmUp.  Setting it to 100 causes this test specifically to crash, but I have been able to get smaller tests to crash with it set much lower (6).  Changing when the JIT is invoked changes when the inline cache gets rewritten.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1056042</commentid>
    <comment_count>6</comment_count>
      <attachid>243308</attachid>
    <who name="Matthew Mirman">mmirman</who>
    <bug_when>2014-12-16 12:14:14 -0800</bug_when>
    <thetext>Comment on attachment 243308
Fixes operationPutByIdOptimizes such that they save the structure before the put

Committed r177380: &lt;http://trac.webkit.org/changeset/177380&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1056043</commentid>
    <comment_count>7</comment_count>
    <who name="Matthew Mirman">mmirman</who>
    <bug_when>2014-12-16 12:14:52 -0800</bug_when>
    <thetext>Reviewed patch landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1056155</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-12-16 15:02:04 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 139707</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1057674</commentid>
    <comment_count>9</comment_count>
      <attachid>243702</attachid>
    <who name="Matthew Mirman">mmirman</who>
    <bug_when>2014-12-23 15:34:21 -0800</bug_when>
    <thetext>Created attachment 243702
Fixes operationPutByIdOptimizes such that they save the structure before the put

It appears as though there still might be some failing tests due to rdar://problem/19339106 so this isn&apos;t to be committed quite yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1057677</commentid>
    <comment_count>10</comment_count>
      <attachid>243702</attachid>
    <who name="Matthew Mirman">mmirman</who>
    <bug_when>2014-12-23 15:38:37 -0800</bug_when>
    <thetext>Comment on attachment 243702
Fixes operationPutByIdOptimizes such that they save the structure before the put

Nvm the last comment.  run-javascript-tests works.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1058747</commentid>
    <comment_count>11</comment_count>
      <attachid>243702</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-01-05 11:05:21 -0800</bug_when>
    <thetext>Comment on attachment 243702
Fixes operationPutByIdOptimizes such that they save the structure before the put

r=me if there is no perf impact</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060930</commentid>
    <comment_count>12</comment_count>
      <attachid>244546</attachid>
    <who name="Matthew Mirman">mmirman</who>
    <bug_when>2015-01-13 14:12:39 -0800</bug_when>
    <thetext>Created attachment 244546
Fixes operationPutByIdOptimizes such that they save the structure before the put</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060933</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-13 14:14:58 -0800</bug_when>
    <thetext>Attachment 244546 did not pass style-queue:


ERROR: Source/JavaScriptCore/jit/Repatch.cpp:997:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/jit/Repatch.cpp:1003:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/jit/Repatch.cpp:1007:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/jit/Repatch.cpp:1010:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/jit/Repatch.cpp:1012:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 5 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060937</commentid>
    <comment_count>14</comment_count>
      <attachid>244549</attachid>
    <who name="Matthew Mirman">mmirman</who>
    <bug_when>2015-01-13 14:20:14 -0800</bug_when>
    <thetext>Created attachment 244549
Fixes operationPutByIdOptimizes such that they save the structure before the put

fixes some style from the last patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060940</commentid>
    <comment_count>15</comment_count>
      <attachid>244549</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-01-13 14:24:01 -0800</bug_when>
    <thetext>Comment on attachment 244549
Fixes operationPutByIdOptimizes such that they save the structure before the put

View in context: https://bugs.webkit.org/attachment.cgi?id=244549&amp;action=review

&gt; Source/JavaScriptCore/tests/mozilla/mozilla-tests.yaml:793
&gt; +# - path: ecma/LexicalConventions/7.7.3.js
&gt; +#   cmd: defaultRunMozillaTest :normal, &quot;../shell.js&quot;

What&apos;s going on here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060946</commentid>
    <comment_count>16</comment_count>
      <attachid>244550</attachid>
    <who name="Matthew Mirman">mmirman</who>
    <bug_when>2015-01-13 14:35:34 -0800</bug_when>
    <thetext>Created attachment 244550
Fixes operationPutByIdOptimizes such that they save the structure before the put</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060950</commentid>
    <comment_count>17</comment_count>
      <attachid>244550</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-01-13 14:57:59 -0800</bug_when>
    <thetext>Comment on attachment 244550
Fixes operationPutByIdOptimizes such that they save the structure before the put

View in context: https://bugs.webkit.org/attachment.cgi?id=244550&amp;action=review

You should rebase this patch.

&gt; Source/JavaScriptCore/tests/mozilla/mozilla-tests.yaml:793
&gt; -- path: ecma/LexicalConventions/7.7.3.js
&gt; -  cmd: defaultRunMozillaTest :normal, &quot;../shell.js&quot;
&gt; +# - path: ecma/LexicalConventions/7.7.3.js
&gt; +#   cmd: defaultRunMozillaTest :normal, &quot;../shell.js&quot;

You should put a comment above this referencing the bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060954</commentid>
    <comment_count>18</comment_count>
    <who name="Matthew Mirman">mmirman</who>
    <bug_when>2015-01-13 15:02:13 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; Comment on attachment 244549 [details]
&gt; Fixes operationPutByIdOptimizes such that they save the structure before the
&gt; put
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=244549&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/tests/mozilla/mozilla-tests.yaml:793
&gt; &gt; +# - path: ecma/LexicalConventions/7.7.3.js
&gt; &gt; +#   cmd: defaultRunMozillaTest :normal, &quot;../shell.js&quot;
&gt; 
&gt; What&apos;s going on here?

&lt;rdar://problem/19339106&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060958</commentid>
    <comment_count>19</comment_count>
      <attachid>244553</attachid>
    <who name="Matthew Mirman">mmirman</who>
    <bug_when>2015-01-13 15:07:24 -0800</bug_when>
    <thetext>Created attachment 244553
Fixes operationPutByIdOptimizes such that they save the structure before the put</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060962</commentid>
    <comment_count>20</comment_count>
      <attachid>244553</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-01-13 15:10:52 -0800</bug_when>
    <thetext>Comment on attachment 244553
Fixes operationPutByIdOptimizes such that they save the structure before the put

Can you rebase this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061249</commentid>
    <comment_count>21</comment_count>
      <attachid>244625</attachid>
    <who name="Matthew Mirman">mmirman</who>
    <bug_when>2015-01-14 11:26:01 -0800</bug_when>
    <thetext>Created attachment 244625
Fixes operationPutByIdOptimizes such that they save the structure before the put

I accidentally included a change to a non existent file in the last patch.  This should be better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061286</commentid>
    <comment_count>22</comment_count>
      <attachid>244625</attachid>
    <who name="Matthew Mirman">mmirman</who>
    <bug_when>2015-01-14 13:28:15 -0800</bug_when>
    <thetext>Comment on attachment 244625
Fixes operationPutByIdOptimizes such that they save the structure before the put

Committed r177380: &lt;http://trac.webkit.org/changeset/178441&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061287</commentid>
    <comment_count>23</comment_count>
    <who name="Matthew Mirman">mmirman</who>
    <bug_when>2015-01-14 13:28:36 -0800</bug_when>
    <thetext>Reviewed patch landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>243056</attachid>
            <date>2014-12-10 12:01:38 -0800</date>
            <delta_ts>2014-12-10 12:02:28 -0800</delta_ts>
            <desc>failing put-by-id resursive test</desc>
            <filename>put-by-id-build-list-order-recurse.js</filename>
            <type>text/plain</type>
            <size>622</size>
            <attacher name="Matthew Mirman">mmirman</attacher>
            
              <data encoding="base64">dmFyIGNvdW50ID0gMDsNCg0KZnVuY3Rpb24gc2V0dGVyKHZhbHVlKSB7DQogICAgT2JqZWN0LmRl
ZmluZVByb3BlcnR5KA0KICAgICAgICB0aGlzLCAiZiIsIHsNCiAgICAgICAgZW51bWVyYWJsZTog
dHJ1ZSwNCiAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsDQogICAgICAgICAgICAg
ICAgd3JpdGFibGU6IHRydWUsDQogICAgICAgICAgICAgICAgdmFsdWU6IDQyDQogICAgICAgICAg
ICAgICAgfSk7DQogICAgdmFyIG8gPSBPYmplY3QuY3JlYXRlKHRoaXMpOw0KICAgIHZhciBjdXJy
ZW50Q291bnQgPSBjb3VudCsrOw0KICAgIHZhciBzdHIgPQ0KICAgICAgICJmb3IgKHZhciBpID0g
IiArIGN1cnJlbnRDb3VudCArICI7IGkgPCAiICsgKDEwMCArIGN1cnJlbnRDb3VudCkgKyAiOyAr
K2kpXG4iDQogICAgICAgIiAgICBvLmZcbiI7DQogICAgZXZhbChzdHIpOw0KfQ0KDQpmdW5jdGlv
biBmb28obykgew0KICAgIG8uZiA9IDQyOw0KfQ0KDQpub0lubGluZShmb28pOw0KDQpmb3IgKHZh
ciBpID0gMDsgaSA8IDEwMDA7ICsraSkgew0KICAgIHZhciBvID0ge307DQogICAgby5fX2RlZmlu
ZVNldHRlcl9fKCJmIiwgc2V0dGVyKTsNCiAgICBmb28obyk7DQogICAgZm9vKG8pOw0KfQ==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>243308</attachid>
            <date>2014-12-15 14:16:58 -0800</date>
            <delta_ts>2014-12-23 15:34:21 -0800</delta_ts>
            <desc>Fixes operationPutByIdOptimizes such that they save the structure before the put</desc>
            <filename>0001-Fixes-operationPutByIdOptimizes-such-that-they-check.patch</filename>
            <type>text/plain</type>
            <size>8747</size>
            <attacher name="Matthew Mirman">mmirman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggN2ZlNTQ2NC4uOTBhMzkzNyAxMDA2NDQKLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxNC0xMi0xNSAgTWF0dGhldyBNaXJtYW4gIDxtbWly
bWFuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXhlcyBvcGVyYXRpb25QdXRCeUlkT3B0aW1pemVz
IHN1Y2ggdGhhdCB0aGV5IGNoZWNrIHRoYXQgdGhlIHB1dCBkaWRuJ3QKKyAgICAgICAgY2hhbmdl
IHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIG9iamVjdCB3aG8ncyBwcm9wZXJ0eSBhY2Nlc3MgaXMgYmVp
bmcKKyAgICAgICAgY2FjaGVkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTM5NTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6Om9wZXJh
dGlvblB1dEJ5SWRTdHJpY3RPcHRpbWl6ZSk6IHNhdmVkIHRoZSBzdHJ1Y3R1cmUgYmVmb3JlIHRo
ZSBwdXQuCisgICAgICAgIChKU0M6Om9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3RPcHRpbWl6ZSk6
IGRpdHRvLgorICAgICAgICAoSlNDOjpvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1p
emUpOiBkaXR0by4KKyAgICAgICAgKEpTQzo6b3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmlj
dE9wdGltaXplKTogZGl0dG8uCisgICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAo
SlNDOjp0cnlDYWNoZVB1dEJ5SUQpOiBBZGRlZCBhcmd1bWVudCBmb3IgdGhlIG9sZCBzdHJ1Y3R1
cmUKKyAgICAgICAgKEpTQzo6cmVwYXRjaFB1dEJ5SUQpOiBBZGRlZCBhcmd1bWVudCBmb3IgdGhl
IG9sZCBzdHJ1Y3R1cmUKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5oOgorICAgICAgICAqIHRlc3Rz
L3N0cmVzcy9wdXQtYnktaWQtYnVpbGQtbGlzdC1vcmRlci1yZWN1cnNlLmpzOiAKKyAgICAgICAg
QWRkZWQgdGVzdCB0aGF0IGZhaWxzIHdpdGhvdXQgdGhpcyBwYXRjaC4KKwogMjAxNC0xMi0xNSAg
T2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2Ugc3VyZSByYW5n
ZSBiYXNlZCBpdGVyYXRpb24gb2YgVmVjdG9yPD4gc3RpbGwgcmVjZWl2ZXMgYm91bmRzIGNoZWNr
aW5nCmRpZmYgLS1naXQgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNw
cCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IGNlNzQ5
ZWQuLmNhYTM0ZGQgMTAwNjQ0Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3Bw
CkBAIC0yNzMsMTQgKzI3MywxNSBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJ
ZFN0cmljdE9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YgogICAgIEpTVmFs
dWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1ZhbHVlIGJh
c2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CiAgICAgUHV0UHJvcGVydHlT
bG90IHNsb3QoYmFzZVZhbHVlLCB0cnVlLCBleGVjLT5jb2RlQmxvY2soKS0+cHV0QnlJZENvbnRl
eHQoKSk7Ci0gICAgCisKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJhc2VWYWx1ZS5pc0Nl
bGwoKSA/IGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKCp2bSkgOiBudWxscHRyOwogICAg
IGJhc2VWYWx1ZS5wdXQoZXhlYywgaWRlbnQsIHZhbHVlLCBzbG90KTsKICAgICAKICAgICBpZiAo
YWNjZXNzVHlwZSAhPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlw
ZSkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBpZiAoc3R1YkluZm8tPnNlZW4pCi0gICAg
ICAgIHJlcGF0Y2hQdXRCeUlEKGV4ZWMsIGJhc2VWYWx1ZSwgaWRlbnQsIHNsb3QsICpzdHViSW5m
bywgTm90RGlyZWN0KTsKKyAgICAgICAgcmVwYXRjaFB1dEJ5SUQoZXhlYywgYmFzZVZhbHVlLCBz
dHJ1Y3R1cmUsIGlkZW50LCBzbG90LCAqc3R1YkluZm8sIE5vdERpcmVjdCk7CiAgICAgZWxzZQog
ICAgICAgICBzdHViSW5mby0+c2VlbiA9IHRydWU7CiB9CkBAIC0yOTYsMTQgKzI5NywxNSBAQCB2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdE9wdGltaXplKEV4ZWNT
dGF0ZSogZXhlYywgU3RydWN0dXJlUwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkQmFzZSk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCBmYWxz
ZSwgZXhlYy0+Y29kZUJsb2NrKCktPnB1dEJ5SWRDb250ZXh0KCkpOwotICAgIAorCisgICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlVmFsdWUuaXNDZWxsKCkgPyBiYXNlVmFsdWUuYXNDZWxs
KCktPnN0cnVjdHVyZSgqdm0pIDogbnVsbHB0cjsgICAgCiAgICAgYmFzZVZhbHVlLnB1dChleGVj
LCBpZGVudCwgdmFsdWUsIHNsb3QpOwogICAgIAogICAgIGlmIChhY2Nlc3NUeXBlICE9IHN0YXRp
Y19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKSkKICAgICAgICAgcmV0dXJu
OwogICAgIAogICAgIGlmIChzdHViSW5mby0+c2VlbikKLSAgICAgICAgcmVwYXRjaFB1dEJ5SUQo
ZXhlYywgYmFzZVZhbHVlLCBpZGVudCwgc2xvdCwgKnN0dWJJbmZvLCBOb3REaXJlY3QpOworICAg
ICAgICByZXBhdGNoUHV0QnlJRChleGVjLCBiYXNlVmFsdWUsIHN0cnVjdHVyZSwgaWRlbnQsIHNs
b3QsICpzdHViSW5mbywgTm90RGlyZWN0KTsKICAgICBlbHNlCiAgICAgICAgIHN0dWJJbmZvLT5z
ZWVuID0gdHJ1ZTsKIH0KQEAgLTMyMCwxMyArMzIyLDE0IEBAIHZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1
Y3R1CiAgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZEJhc2UpKTsKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCB0cnVl
LCBleGVjLT5jb2RlQmxvY2soKS0+cHV0QnlJZENvbnRleHQoKSk7CiAgICAgCisgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlT2JqZWN0LT5zdHJ1Y3R1cmUoKnZtKTsKICAgICBiYXNlT2Jq
ZWN0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgaWRlbnQsIHZhbHVlLCBzbG90KTsKICAgICAKICAg
ICBpZiAoYWNjZXNzVHlwZSAhPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNj
ZXNzVHlwZSkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBpZiAoc3R1YkluZm8tPnNlZW4p
Ci0gICAgICAgIHJlcGF0Y2hQdXRCeUlEKGV4ZWMsIGJhc2VPYmplY3QsIGlkZW50LCBzbG90LCAq
c3R1YkluZm8sIERpcmVjdCk7CisgICAgICAgIHJlcGF0Y2hQdXRCeUlEKGV4ZWMsIGJhc2VPYmpl
Y3QsIHN0cnVjdHVyZSwgaWRlbnQsIHNsb3QsICpzdHViSW5mbywgRGlyZWN0KTsKICAgICBlbHNl
CiAgICAgICAgIHN0dWJJbmZvLT5zZWVuID0gdHJ1ZTsKIH0KQEAgLTM0MywxMyArMzQ2LDE0IEBA
IHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0T3B0aW1p
emUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1CiAgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09i
amVjdChKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpKTsKICAgICBQdXRQcm9wZXJ0eVNsb3Qg
c2xvdChiYXNlT2JqZWN0LCBmYWxzZSwgZXhlYy0+Y29kZUJsb2NrKCktPnB1dEJ5SWRDb250ZXh0
KCkpOwogICAgIAorICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZU9iamVjdC0+c3RydWN0
dXJlKCp2bSk7CiAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIGlkZW50LCB2
YWx1ZSwgc2xvdCk7CiAgICAgCiAgICAgaWYgKGFjY2Vzc1R5cGUgIT0gc3RhdGljX2Nhc3Q8QWNj
ZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpKQogICAgICAgICByZXR1cm47CiAgICAgCiAg
ICAgaWYgKHN0dWJJbmZvLT5zZWVuKQotICAgICAgICByZXBhdGNoUHV0QnlJRChleGVjLCBiYXNl
T2JqZWN0LCBpZGVudCwgc2xvdCwgKnN0dWJJbmZvLCBEaXJlY3QpOworICAgICAgICByZXBhdGNo
UHV0QnlJRChleGVjLCBiYXNlT2JqZWN0LCBzdHJ1Y3R1cmUsIGlkZW50LCBzbG90LCAqc3R1Yklu
Zm8sIERpcmVjdCk7CiAgICAgZWxzZQogICAgICAgICBzdHViSW5mby0+c2VlbiA9IHRydWU7CiB9
CmRpZmYgLS1naXQgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IGZkNmEzNzQuLjNjOWIxNDUgMTAw
NjQ0Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCkBAIC0xMjI0LDcgKzEyMjQsNyBAQCBzdGF0
aWMgdm9pZCBlbWl0UHV0VHJhbnNpdGlvblN0dWIoCiAgICAgICAgICAgICBzdHJ1Y3R1cmUpOwog
fQogCi1zdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSBiYXNlVmFsdWUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQ
dXRQcm9wZXJ0eVNsb3QmIHNsb3QsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgUHV0S2lu
ZCBwdXRLaW5kKQorc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRChFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFB1dFByb3BlcnR5U2xvdCYgc2xvdCwgU3RydWN0
dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBQdXRLaW5kIHB1dEtpbmQpCiB7CiAgICAgaWYgKE9wdGlv
bnM6OmZvcmNlSUNGYWlsdXJlKCkpCiAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwpAQCAt
MTIzNSw3ICsxMjM1LDEwIEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5
SUQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgY29uCiAgICAgaWYgKCFiYXNl
VmFsdWUuaXNDZWxsKCkpCiAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogICAgIEpTQ2Vs
bCogYmFzZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7Ci0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBiYXNlQ2VsbC0+c3RydWN0dXJlKCp2bSk7CisgICAgCisgICAgaWYgKGJhc2VDZWxsLT5z
dHJ1Y3R1cmUoKnZtKS0+aWQoKSAhPSBzdHJ1Y3R1cmUtPmlkKCkpCisgICAgICAgIHJldHVybiBH
aXZlVXBPbkNhY2hlOworCiAgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmUt
PnByZXZpb3VzSUQoKTsKICAgICAKICAgICBpZiAoIXNsb3QuaXNDYWNoZWFibGVQdXQoKSAmJiAh
c2xvdC5pc0NhY2hlYWJsZUN1c3RvbSgpICYmICFzbG90LmlzQ2FjaGVhYmxlU2V0dGVyKCkpCkBA
IC0xMzMzLDExICsxMzM2LDExIEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1
dEJ5SUQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgY29uCiAgICAgcmV0dXJu
IEdpdmVVcE9uQ2FjaGU7CiB9CiAKLXZvaWQgcmVwYXRjaFB1dEJ5SUQoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBjb25z
dCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgUHV0
S2luZCBwdXRLaW5kKQordm9pZCByZXBhdGNoUHV0QnlJRChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgYmFzZVZhbHVlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBjb25zdCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QsIFN0cnVjdHVyZVN0dWJJbmZv
JiBzdHViSW5mbywgUHV0S2luZCBwdXRLaW5kKQogewogICAgIEdDU2FmZUNvbmN1cnJlbnRKSVRM
b2NrZXIgbG9ja2VyKGV4ZWMtPmNvZGVCbG9jaygpLT5tX2xvY2ssIGV4ZWMtPnZtKCkuaGVhcCk7
CiAgICAgCi0gICAgaWYgKHRyeUNhY2hlUHV0QnlJRChleGVjLCBiYXNlVmFsdWUsIHByb3BlcnR5
TmFtZSwgc2xvdCwgc3R1YkluZm8sIHB1dEtpbmQpID09IEdpdmVVcE9uQ2FjaGUpCisgICAgaWYg
KHRyeUNhY2hlUHV0QnlJRChleGVjLCBiYXNlVmFsdWUsIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1l
LCBzbG90LCBzdHViSW5mbywgcHV0S2luZCkgPT0gR2l2ZVVwT25DYWNoZSkKICAgICAgICAgcmVw
YXRjaENhbGwoZXhlYy0+Y29kZUJsb2NrKCksIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwg
YXBwcm9wcmlhdGVHZW5lcmljUHV0QnlJZEZ1bmN0aW9uKHNsb3QsIHB1dEtpbmQpKTsKIH0KIApk
aWZmIC0tZ2l0IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCmluZGV4IGNiMzM0MjAuLmYzN2FjN2IgMTAwNjQ0Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaAorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9SZXBhdGNoLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiB2
b2lkIHJlcGF0Y2hHZXRCeUlEKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXIm
LCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCBidWlsZEdl
dEJ5SURMaXN0KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQ
cm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCBidWlsZEdldEJ5SURQcm90
b0xpc3QoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3Bl
cnR5U2xvdCYsIFN0cnVjdHVyZVN0dWJJbmZvJik7Ci12b2lkIHJlcGF0Y2hQdXRCeUlEKEV4ZWNT
dGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQdXRQcm9wZXJ0eVNsb3Qm
LCBTdHJ1Y3R1cmVTdHViSW5mbyYsIFB1dEtpbmQpOwordm9pZCByZXBhdGNoUHV0QnlJRChFeGVj
U3RhdGUqLCBKU1ZhbHVlLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHV0
UHJvcGVydHlTbG90JiwgU3RydWN0dXJlU3R1YkluZm8mLCBQdXRLaW5kKTsKIHZvaWQgYnVpbGRQ
dXRCeUlkTGlzdChFeGVjU3RhdGUqLCBKU1ZhbHVlLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlm
aWVyJiwgY29uc3QgUHV0UHJvcGVydHlTbG90JiwgU3RydWN0dXJlU3R1YkluZm8mLCBQdXRLaW5k
KTsKIHZvaWQgcmVwYXRjaEluKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIGNvbnN0IElkZW50aWZpZXIm
LCBib29sIHdhc0ZvdW5kLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyYp
Owogdm9pZCBsaW5rRm9yKEV4ZWNTdGF0ZSosIENhbGxMaW5rSW5mbyYsIENvZGVCbG9jayosIEpT
RnVuY3Rpb24qIGNhbGxlZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyLCBDb2RlU3BlY2lhbGl6YXRp
b25LaW5kLCBSZWdpc3RlclByZXNlcnZhdGlvbk1vZGUpOwpkaWZmIC0tZ2l0IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcHV0LWJ5LWlkLWJ1aWxkLWxpc3Qtb3JkZXItcmVjdXJz
ZS5qcyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3B1dC1ieS1pZC1idWlsZC1s
aXN0LW9yZGVyLXJlY3Vyc2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
MzI2YjY1NQotLS0gL2Rldi9udWxsCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL3B1dC1ieS1pZC1idWlsZC1saXN0LW9yZGVyLXJlY3Vyc2UuanMKQEAgLTAsMCArMSwyOSBA
QAordmFyIGNvdW50ID0gMDsKKworZnVuY3Rpb24gc2V0dGVyKHZhbHVlKSB7CisgICAgT2JqZWN0
LmRlZmluZVByb3BlcnR5KAorICAgICAgICB0aGlzLCAiZiIsIHsKKyAgICAgICAgZW51bWVyYWJs
ZTogdHJ1ZSwKKyAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsCisgICAgICAgICAg
ICAgICAgd3JpdGFibGU6IHRydWUsCisgICAgICAgICAgICAgICAgdmFsdWU6IDQyCisgICAgICAg
ICAgICAgICAgfSk7CisgICAgdmFyIG8gPSBPYmplY3QuY3JlYXRlKHRoaXMpOworICAgIHZhciBj
dXJyZW50Q291bnQgPSBjb3VudCsrOworICAgIHZhciBzdHIgPSAiZm9yICh2YXIgaSA9ICIgKyBj
dXJyZW50Q291bnQgKyAiOyBpIDwgIiArICgxMDAgKyBjdXJyZW50Q291bnQpICsgIjsgKytpKVxu
IgorICAgICAgICAgICAgKyAiICAgIG8uZlxuIjsKKyAgICBldmFsKHN0cik7Cit9CisKK2Z1bmN0
aW9uIGZvbyhvKSB7CisgICAgby5mID0gNDI7Cit9CisKK25vSW5saW5lKGZvbyk7CisKK2ZvciAo
dmFyIGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAgdmFyIG8gPSB7fTsKKyAgICBvLl9fZGVm
aW5lU2V0dGVyX18oImYiLCBzZXR0ZXIpOworICAgIGZvbyhvKTsKKyAgICBmb28obyk7Cit9Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>
<flag name="review"
          id="268179"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>243702</attachid>
            <date>2014-12-23 15:34:21 -0800</date>
            <delta_ts>2015-01-13 14:12:39 -0800</delta_ts>
            <desc>Fixes operationPutByIdOptimizes such that they save the structure before the put</desc>
            <filename>0002-Fixes-operationPutByIdOptimizes-such-that-they-check.patch</filename>
            <type>text/plain</type>
            <size>11644</size>
            <attacher name="Matthew Mirman">mmirman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggZDc5NTg4NTEuLjllMmQ0YmIgMTAwNjQ0Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTQtMTItMjMgIE1hdHRoZXcgTWlybWFuICA8bW1p
cm1hbkBhcHBsZS5jb20+CisKKyAgICAgICAgRml4ZXMgb3BlcmF0aW9uUHV0QnlJZE9wdGltaXpl
cyBzdWNoIHRoYXQgdGhleSBjaGVjayB0aGF0IHRoZSBwdXQgZGlkbid0CisgICAgICAgIGNoYW5n
ZSB0aGUgc3RydWN0dXJlIG9mIHRoZSBvYmplY3Qgd2hvJ3MgcHJvcGVydHkgYWNjZXNzIGlzIGJl
aW5nCisgICAgICAgIGNhY2hlZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEzOTUwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpvcGVy
YXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemUpOiBzYXZlZCB0aGUgc3RydWN0dXJlIGJlZm9yZSB0
aGUgcHV0LgorICAgICAgICAoSlNDOjpvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0T3B0aW1pemUp
OiBkaXR0by4KKyAgICAgICAgKEpTQzo6b3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdE9wdGlt
aXplKTogZGl0dG8uCisgICAgICAgIChKU0M6Om9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJp
Y3RPcHRpbWl6ZSk6IGRpdHRvLgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAg
KEpTQzo6Z2V0TmV3U3RydWN0dXJlKTogQWRkZWQuICAKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVQ
dXRCeUlEKTogQWRkZWQgYXJndW1lbnQgZm9yIHRoZSBvbGQgc3RydWN0dXJlCisgICAgICAgIChK
U0M6OnJlcGF0Y2hQdXRCeUlEKTogQWRkZWQgYXJndW1lbnQgZm9yIHRoZSBvbGQgc3RydWN0dXJl
CisgICAgICAgICogaml0L1JlcGF0Y2guaDoKKyAgICAgICAgKiB0ZXN0cy9tb3ppbGxhL21vemls
bGEtdGVzdHMueWFtbDoKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvcHV0LWJ5LWlkLWJ1aWxkLWxp
c3Qtb3JkZXItcmVjdXJzZS5qczogCisgICAgICAgIEFkZGVkIHRlc3QgdGhhdCBmYWlscyB3aXRo
b3V0IHRoaXMgcGF0Y2guCisKIDIwMTQtMTItMjIgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUu
Y29tPgogCiAgICAgICAgIFVzZSBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3MoKSBpbiBKSVRP
cGVyYXRpb25zLmNwcC4KZGlmZiAtLWdpdCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuY3BwIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAK
aW5kZXggYzBiZGE0My4uMDc3YjIxOCAxMDA2NDQKLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5jcHAKQEAgLTI3MywxNCArMjczLDE1IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHVi
CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAg
IEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKICAgICBQ
dXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUsIHRydWUsIGV4ZWMtPmNvZGVCbG9jaygpLT5w
dXRCeUlkQ29udGV4dCgpKTsKLSAgICAKKworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFz
ZVZhbHVlLmlzQ2VsbCgpID8gYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKnZtKSA6IG51
bGxwdHI7CiAgICAgYmFzZVZhbHVlLnB1dChleGVjLCBpZGVudCwgdmFsdWUsIHNsb3QpOwogICAg
IAogICAgIGlmIChhY2Nlc3NUeXBlICE9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZv
LT5hY2Nlc3NUeXBlKSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGlmIChzdHViSW5mby0+
c2VlbikKLSAgICAgICAgcmVwYXRjaFB1dEJ5SUQoZXhlYywgYmFzZVZhbHVlLCBpZGVudCwgc2xv
dCwgKnN0dWJJbmZvLCBOb3REaXJlY3QpOworICAgICAgICByZXBhdGNoUHV0QnlJRChleGVjLCBi
YXNlVmFsdWUsIHN0cnVjdHVyZSwgaWRlbnQsIHNsb3QsICpzdHViSW5mbywgTm90RGlyZWN0KTsK
ICAgICBlbHNlCiAgICAgICAgIHN0dWJJbmZvLT5zZWVuID0gdHJ1ZTsKIH0KQEAgLTI5NiwxNCAr
Mjk3LDE1IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0T3B0
aW1pemUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNl
VmFsdWUsIGZhbHNlLCBleGVjLT5jb2RlQmxvY2soKS0+cHV0QnlJZENvbnRleHQoKSk7Ci0gICAg
CisKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJhc2VWYWx1ZS5pc0NlbGwoKSA/IGJhc2VW
YWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKCp2bSkgOiBudWxscHRyOyAgICAKICAgICBiYXNlVmFs
dWUucHV0KGV4ZWMsIGlkZW50LCB2YWx1ZSwgc2xvdCk7CiAgICAgCiAgICAgaWYgKGFjY2Vzc1R5
cGUgIT0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpKQogICAg
ICAgICByZXR1cm47CiAgICAgCiAgICAgaWYgKHN0dWJJbmZvLT5zZWVuKQotICAgICAgICByZXBh
dGNoUHV0QnlJRChleGVjLCBiYXNlVmFsdWUsIGlkZW50LCBzbG90LCAqc3R1YkluZm8sIE5vdERp
cmVjdCk7CisgICAgICAgIHJlcGF0Y2hQdXRCeUlEKGV4ZWMsIGJhc2VWYWx1ZSwgc3RydWN0dXJl
LCBpZGVudCwgc2xvdCwgKnN0dWJJbmZvLCBOb3REaXJlY3QpOwogICAgIGVsc2UKICAgICAgICAg
c3R1YkluZm8tPnNlZW4gPSB0cnVlOwogfQpAQCAtMzIwLDEzICszMjIsMTQgQEAgdm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZShFeGVjU3RhdGUq
IGV4ZWMsIFN0cnVjdHUKICAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkQmFzZSkpOwogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VP
YmplY3QsIHRydWUsIGV4ZWMtPmNvZGVCbG9jaygpLT5wdXRCeUlkQ29udGV4dCgpKTsKICAgICAK
KyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJhc2VPYmplY3QtPnN0cnVjdHVyZSgqdm0pOwog
ICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdChleGVjLT52bSgpLCBpZGVudCwgdmFsdWUsIHNsb3Qp
OwogICAgIAogICAgIGlmIChhY2Nlc3NUeXBlICE9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0
dWJJbmZvLT5hY2Nlc3NUeXBlKSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGlmIChzdHVi
SW5mby0+c2VlbikKLSAgICAgICAgcmVwYXRjaFB1dEJ5SUQoZXhlYywgYmFzZU9iamVjdCwgaWRl
bnQsIHNsb3QsICpzdHViSW5mbywgRGlyZWN0KTsKKyAgICAgICAgcmVwYXRjaFB1dEJ5SUQoZXhl
YywgYmFzZU9iamVjdCwgc3RydWN0dXJlLCBpZGVudCwgc2xvdCwgKnN0dWJJbmZvLCBEaXJlY3Qp
OwogICAgIGVsc2UKICAgICAgICAgc3R1YkluZm8tPnNlZW4gPSB0cnVlOwogfQpAQCAtMzQzLDEz
ICszNDYsMTQgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25T
dHJpY3RPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnUKICAgICBKU09iamVjdCogYmFzZU9i
amVjdCA9IGFzT2JqZWN0KEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSkpOwogICAgIFB1dFBy
b3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIGZhbHNlLCBleGVjLT5jb2RlQmxvY2soKS0+cHV0
QnlJZENvbnRleHQoKSk7CiAgICAgCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlT2Jq
ZWN0LT5zdHJ1Y3R1cmUoKnZtKTsKICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+dm0o
KSwgaWRlbnQsIHZhbHVlLCBzbG90KTsKICAgICAKICAgICBpZiAoYWNjZXNzVHlwZSAhPSBzdGF0
aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSkpCiAgICAgICAgIHJldHVy
bjsKICAgICAKICAgICBpZiAoc3R1YkluZm8tPnNlZW4pCi0gICAgICAgIHJlcGF0Y2hQdXRCeUlE
KGV4ZWMsIGJhc2VPYmplY3QsIGlkZW50LCBzbG90LCAqc3R1YkluZm8sIERpcmVjdCk7CisgICAg
ICAgIHJlcGF0Y2hQdXRCeUlEKGV4ZWMsIGJhc2VPYmplY3QsIHN0cnVjdHVyZSwgaWRlbnQsIHNs
b3QsICpzdHViSW5mbywgRGlyZWN0KTsKICAgICBlbHNlCiAgICAgICAgIHN0dWJJbmZvLT5zZWVu
ID0gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2gu
Y3BwIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggZmQ2YTM3NC4u
Yzc4ZjY2NiAxMDA2NDQKLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTEyMjQsNyArMTIy
NCwyNyBAQCBzdGF0aWMgdm9pZCBlbWl0UHV0VHJhbnNpdGlvblN0dWIoCiAgICAgICAgICAgICBz
dHJ1Y3R1cmUpOwogfQogCi1zdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlE
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFsdWUsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50LCBjb25zdCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHVi
SW5mbywgUHV0S2luZCBwdXRLaW5kKQorc3RhdGljIFN0cnVjdHVyZSogZ2V0TmV3U3RydWN0dXJl
KFZNKiB2bSwgSlNDZWxsKiBiYXNlQ2VsbCwgU3RydWN0dXJlKiYgb2xkU3RydWN0dXJlLCBjb25z
dCBJZGVudGlmaWVyJiBpZGVudCkKK3sKKyAgICBpZiAoIW9sZFN0cnVjdHVyZSB8fCAhb2xkU3Ry
dWN0dXJlLT5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSgqdm0pOworICAgIFByb3BlcnR5
TmFtZSBwbmFtZShpZGVudCk7CisKKyAgICBpZiAoIW9sZFN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5
KCkgJiYgcG5hbWUuYXNJbmRleCgpID09IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRleCkgeworICAg
ICAgICBQcm9wZXJ0eU9mZnNldCBwcm9wZXJ0eU9mZnNldDsKKyAgICAgICAgc3RydWN0dXJlID0g
U3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlQ29uY3Vy
cmVudGx5KG9sZFN0cnVjdHVyZSwgaWRlbnQuaW1wbCgpLCAwLCBwcm9wZXJ0eU9mZnNldCk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKHN0cnVjdHVyZS0+aWQoKSAhPSBvbGRTdHJ1Y3R1cmUt
PmlkKCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgb2xkU3RydWN0dXJl
ID0gc3RydWN0dXJlLT5wcmV2aW91c0lEKCk7CisgICAgfQorCisgICAgcmV0dXJuIHN0cnVjdHVy
ZTsgCit9CisKK3N0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIGNv
bnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QsIFN0cnVj
dHVyZVN0dWJJbmZvJiBzdHViSW5mbywgUHV0S2luZCBwdXRLaW5kKQogewogICAgIGlmIChPcHRp
b25zOjpmb3JjZUlDRmFpbHVyZSgpKQogICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKQEAg
LTEyMzQsMTIgKzEyNTQsMTcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0
QnlJRChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBjb24KIAogICAgIGlmICgh
YmFzZVZhbHVlLmlzQ2VsbCgpKQogICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKyAgICAK
ICAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOwotICAgIFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSgqdm0pOwotICAgIFN0cnVjdHVyZSog
b2xkU3RydWN0dXJlID0gc3RydWN0dXJlLT5wcmV2aW91c0lEKCk7CisKKyAgICBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSA9IGdldE5ld1N0cnVjdHVyZSh2bSwgYmFzZUNlbGwsIG9sZFN0cnVjdHVyZSwg
aWRlbnQpOworICAgIGlmICghc3RydWN0dXJlKSAKKyAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2Fj
aGU7CisKICAgICAKICAgICBpZiAoIXNsb3QuaXNDYWNoZWFibGVQdXQoKSAmJiAhc2xvdC5pc0Nh
Y2hlYWJsZUN1c3RvbSgpICYmICFzbG90LmlzQ2FjaGVhYmxlU2V0dGVyKCkpCiAgICAgICAgIHJl
dHVybiBHaXZlVXBPbkNhY2hlOworCiAgICAgaWYgKCFzdHJ1Y3R1cmUtPnByb3BlcnR5QWNjZXNz
ZXNBcmVDYWNoZWFibGUoKSkKICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiAKQEAgLTEz
MzMsMjggKzEzNTgsMjcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJ
RChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBjb24KICAgICByZXR1cm4gR2l2
ZVVwT25DYWNoZTsKIH0KIAotdm9pZCByZXBhdGNoUHV0QnlJRChFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgYmFzZVZhbHVlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFB1
dFByb3BlcnR5U2xvdCYgc2xvdCwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBQdXRLaW5k
IHB1dEtpbmQpCit2b2lkIHJlcGF0Y2hQdXRCeUlEKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBi
YXNlVmFsdWUsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIGNvbnN0IFB1dFByb3BlcnR5U2xvdCYgc2xvdCwgU3RydWN0dXJlU3R1YkluZm8mIHN0
dWJJbmZvLCBQdXRLaW5kIHB1dEtpbmQpCiB7CiAgICAgR0NTYWZlQ29uY3VycmVudEpJVExvY2tl
ciBsb2NrZXIoZXhlYy0+Y29kZUJsb2NrKCktPm1fbG9jaywgZXhlYy0+dm0oKS5oZWFwKTsKICAg
ICAKLSAgICBpZiAodHJ5Q2FjaGVQdXRCeUlEKGV4ZWMsIGJhc2VWYWx1ZSwgcHJvcGVydHlOYW1l
LCBzbG90LCBzdHViSW5mbywgcHV0S2luZCkgPT0gR2l2ZVVwT25DYWNoZSkKKyAgICBpZiAodHJ5
Q2FjaGVQdXRCeUlEKGV4ZWMsIGJhc2VWYWx1ZSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIHNs
b3QsIHN0dWJJbmZvLCBwdXRLaW5kKSA9PSBHaXZlVXBPbkNhY2hlKQogICAgICAgICByZXBhdGNo
Q2FsbChleGVjLT5jb2RlQmxvY2soKSwgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLCBhcHBy
b3ByaWF0ZUdlbmVyaWNQdXRCeUlkRnVuY3Rpb24oc2xvdCwgcHV0S2luZCkpOwogfQogCi1zdGF0
aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5QnVpbGRQdXRCeUlkTGlzdChFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgYmFzZVZhbHVlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBjb25zdCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QsIFN0cnVjdHVyZVN0
dWJJbmZvJiBzdHViSW5mbywgUHV0S2luZCBwdXRLaW5kKQorc3RhdGljIElubGluZUNhY2hlQWN0
aW9uIHRyeUJ1aWxkUHV0QnlJZExpc3QoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1
ZSwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgY29uc3QgUHV0UHJvcGVydHlTbG90JiBzbG90LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1Yklu
Zm8sIFB1dEtpbmQgcHV0S2luZCkKIHsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMt
PmNvZGVCbG9jaygpOwogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogCi0gICAgaWYgKCFiYXNl
VmFsdWUuaXNDZWxsKCkgfHwgIXN0cnVjdHVyZSkKKyAgICBpZiAoIWJhc2VWYWx1ZS5pc0NlbGwo
KSkKICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CisKICAgICBKU0NlbGwqIGJhc2VDZWxs
ID0gYmFzZVZhbHVlLmFzQ2VsbCgpOwogCi0gICAgaWYgKGJhc2VDZWxsLT5zdHJ1Y3R1cmUoKnZt
KS0+aWQoKSAhPSBzdHJ1Y3R1cmUtPmlkKCkpCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBn
ZXROZXdTdHJ1Y3R1cmUodm0sIGJhc2VDZWxsLCBvbGRTdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSk7
CisgICAgaWYgKCFzdHJ1Y3R1cmUpCiAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwotCi0g
ICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKTsKLSAg
ICAKICAgICAKICAgICBpZiAoIXNsb3QuaXNDYWNoZWFibGVQdXQoKSAmJiAhc2xvdC5pc0NhY2hl
YWJsZUN1c3RvbSgpICYmICFzbG90LmlzQ2FjaGVhYmxlU2V0dGVyKCkpCiAgICAgICAgIHJldHVy
biBHaXZlVXBPbkNhY2hlOwpkaWZmIC0tZ2l0IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVw
YXRjaC5oIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCmluZGV4IGNiMzM0MjAu
LmYzN2FjN2IgMTAwNjQ0Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaAor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgKQEAgLTM2LDcgKzM2LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiB2b2lkIHJlcGF0Y2hHZXRCeUlEKEV4ZWNTdGF0ZSosIEpTVmFsdWUs
IGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5m
byYpOwogdm9pZCBidWlsZEdldEJ5SURMaXN0KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElk
ZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9p
ZCBidWlsZEdldEJ5SURQcm90b0xpc3QoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRp
ZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYsIFN0cnVjdHVyZVN0dWJJbmZvJik7Ci12b2lkIHJl
cGF0Y2hQdXRCeUlEKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImLCBjb25z
dCBQdXRQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIFB1dEtpbmQpOwordm9pZCBy
ZXBhdGNoUHV0QnlJRChFeGVjU3RhdGUqLCBKU1ZhbHVlLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVu
dGlmaWVyJiwgY29uc3QgUHV0UHJvcGVydHlTbG90JiwgU3RydWN0dXJlU3R1YkluZm8mLCBQdXRL
aW5kKTsKIHZvaWQgYnVpbGRQdXRCeUlkTGlzdChFeGVjU3RhdGUqLCBKU1ZhbHVlLCBTdHJ1Y3R1
cmUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHV0UHJvcGVydHlTbG90JiwgU3RydWN0dXJl
U3R1YkluZm8mLCBQdXRLaW5kKTsKIHZvaWQgcmVwYXRjaEluKEV4ZWNTdGF0ZSosIEpTQ2VsbCos
IGNvbnN0IElkZW50aWZpZXImLCBib29sIHdhc0ZvdW5kLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBT
dHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCBsaW5rRm9yKEV4ZWNTdGF0ZSosIENhbGxMaW5rSW5m
byYsIENvZGVCbG9jayosIEpTRnVuY3Rpb24qIGNhbGxlZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
LCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLCBSZWdpc3RlclByZXNlcnZhdGlvbk1vZGUpOwpkaWZm
IC0tZ2l0IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb3ppbGxhL21vemlsbGEtdGVzdHMu
eWFtbCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW96aWxsYS9tb3ppbGxhLXRlc3RzLnlh
bWwKaW5kZXggZWNlYjNmNy4uM2RjZjUzNyAxMDA2NDQKLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9tb3ppbGxhL21vemlsbGEtdGVzdHMueWFtbAorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL21vemlsbGEvbW96aWxsYS10ZXN0cy55YW1sCkBAIC03ODksOCArNzg5LDggQEAK
ICAgY21kOiBkZWZhdWx0UnVuTW96aWxsYVRlc3QgOm5vcm1hbCwgIi4uL3NoZWxsLmpzIgogLSBw
YXRoOiBlY21hL0xleGljYWxDb252ZW50aW9ucy83LjcuMy0yLmpzCiAgIGNtZDogZGVmYXVsdFJ1
bk1vemlsbGFUZXN0IDpub3JtYWwsICIuLi9zaGVsbC5qcyIKLS0gcGF0aDogZWNtYS9MZXhpY2Fs
Q29udmVudGlvbnMvNy43LjMuanMKLSAgY21kOiBkZWZhdWx0UnVuTW96aWxsYVRlc3QgOm5vcm1h
bCwgIi4uL3NoZWxsLmpzIgorIyAtIHBhdGg6IGVjbWEvTGV4aWNhbENvbnZlbnRpb25zLzcuNy4z
LmpzCisjICAgY21kOiBkZWZhdWx0UnVuTW96aWxsYVRlc3QgOm5vcm1hbCwgIi4uL3NoZWxsLmpz
IgogLSBwYXRoOiBlY21hL0xleGljYWxDb252ZW50aW9ucy83LjcuNC5qcwogICBjbWQ6IGRlZmF1
bHRSdW5Nb3ppbGxhVGVzdCA6bm9ybWFsLCAiLi4vc2hlbGwuanMiCiAtIHBhdGg6IGVjbWEvTGV4
aWNhbENvbnZlbnRpb25zLzcuOC4yLW4uanMKZGlmZiAtLWdpdCBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL3B1dC1ieS1pZC1idWlsZC1saXN0LW9yZGVyLXJlY3Vyc2UuanMgU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9wdXQtYnktaWQtYnVpbGQtbGlzdC1vcmRl
ci1yZWN1cnNlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5ZDAyMTkK
LS0tIC9kZXYvbnVsbAorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9wdXQt
YnktaWQtYnVpbGQtbGlzdC1vcmRlci1yZWN1cnNlLmpzCkBAIC0wLDAgKzEsMzUgQEAKK3ZhciBj
b3VudCA9IDA7CisKK2Z1bmN0aW9uIHNldHRlcih2YWx1ZSkgeworICAgIE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eSgKKyAgICAgICAgdGhpcywgImYiLCB7CisgICAgICAgIGVudW1lcmFibGU6IHRydWUs
CisgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLAorICAgICAgICAgICAgICAgIHdy
aXRhYmxlOiB0cnVlLAorICAgICAgICAgICAgICAgIHZhbHVlOiAzMgorICAgICAgICAgICAgICAg
IH0pOworICAgIHZhciBvID0gT2JqZWN0LmNyZWF0ZSh0aGlzKTsKKyAgICB2YXIgY3VycmVudENv
dW50ID0gY291bnQrKzsKKyAgICB2YXIgc3RyID0gImZvciAodmFyIGkgPSAiICsgY3VycmVudENv
dW50ICsgIjsgaSA8ICIgKyAoMTAwICsgY3VycmVudENvdW50KSArICI7ICsraSlcbiIKKyAgICAg
ICAgICAgICsgIiAgICBvLmZcbiI7CisgICAgZXZhbChzdHIpOworfQorCitmdW5jdGlvbiBmb28o
bykgeworICAgIG8uZiA9IDQyOworfQorCitub0lubGluZShmb28pOworCitmb3IgKHZhciBpID0g
MDsgaSA8IDEwMDA7ICsraSkgeworICAgIHZhciBvID0ge307CisgICAgby5fX2RlZmluZVNldHRl
cl9fKCJmIiwgc2V0dGVyKTsKKworICAgIGZvbyhvKTsKKyAgICBpZiAoby5mICE9IDMyKQorICAg
ICAgICB0aHJvdyAoIkVycm9yIDE6ICIrby5mKTsKKworICAgIGZvbyhvKTsKKyAgICBpZiAoby5m
ICE9IDQyKQorICAgICAgICB0aHJvdyAoIkVycm9yIDI6ICIrby5mKTsKK30KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCg==
</data>
<flag name="review"
          id="268617"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244546</attachid>
            <date>2015-01-13 14:12:39 -0800</date>
            <delta_ts>2015-01-13 14:20:14 -0800</delta_ts>
            <desc>Fixes operationPutByIdOptimizes such that they save the structure before the put</desc>
            <filename>0001-Fixes-operationPutByIdOptimizes-such-that-they-check.patch</filename>
            <type>text/plain</type>
            <size>29198</size>
            <attacher name="Matthew Mirman">mmirman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggZTE3YjQzMC4uMzM5NDE1NiAxMDA2NDQKLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw0MSBAQAorMjAxNS0wMS0xMyAgTWF0dGhldyBNaXJtYW4gIDxtbWly
bWFuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXhlcyBvcGVyYXRpb25QdXRCeUlkT3B0aW1pemVz
IHN1Y2ggdGhhdCB0aGV5IGNoZWNrIHRoYXQgdGhlIHB1dCBkaWRuJ3QKKyAgICAgICAgY2hhbmdl
IHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIG9iamVjdCB3aG8ncyBwcm9wZXJ0eSBhY2Nlc3MgaXMgYmVp
bmcKKyAgICAgICAgY2FjaGVkLiAgQWxzbyByZW1vdmVzIHVzZXMgb2YgdGhlIG5ldyBiYXNlIHZh
bHVlIGZyb20gdGhlIGNhY2hlIGdlbmVyYXRpb24gY29kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzOTUwMAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAg
ICAgICAoSlNDOjpvcGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemUpOiBzYXZlZCB0aGUgc3Ry
dWN0dXJlIGJlZm9yZSB0aGUgcHV0LgorICAgICAgICAoSlNDOjpvcGVyYXRpb25QdXRCeUlkTm9u
U3RyaWN0T3B0aW1pemUpOiBkaXR0by4KKyAgICAgICAgKEpTQzo6b3BlcmF0aW9uUHV0QnlJZERp
cmVjdFN0cmljdE9wdGltaXplKTogZGl0dG8uCisgICAgICAgIChKU0M6Om9wZXJhdGlvblB1dEJ5
SWREaXJlY3ROb25TdHJpY3RPcHRpbWl6ZSk6IGRpdHRvLgorICAgICAgICAqIGppdC9SZXBhdGNo
LmNwcDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVCeUlkU3R1Yik6CisgICAgICAgIChKU0M6OnRy
eUNhY2hlR2V0QnlJRCk6CisgICAgICAgIChKU0M6OnRyeUJ1aWxkR2V0QnlJRExpc3QpOgorICAg
ICAgICAoSlNDOjplbWl0UHV0UmVwbGFjZVN0dWIpOgorICAgICAgICAoSlNDOjplbWl0UHV0VHJh
bnNpdGlvblN0dWJBbmRHZXRPbGRTdHJ1Y3R1cmUpOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6dHJ5
Q2FjaGVQdXRCeUlEKToKKyAgICAgICAgKEpTQzo6cmVwYXRjaFB1dEJ5SUQpOgorICAgICAgICAo
SlNDOjp0cnlCdWlsZFB1dEJ5SWRMaXN0KToKKyAgICAgICAgKEpTQzo6dHJ5UmVwYXRjaEluKToK
KyAgICAgICAgKEpTQzo6ZW1pdFB1dFRyYW5zaXRpb25TdHViKTogRGVsZXRlZC4KKyAgICAgICAg
KiBqaXQvUmVwYXRjaC5oOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAg
ICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50
aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oOgorICAgICAgICAoSlNDOjpnZW5lcmljUHJv
cGVydHlOYW1lRW51bWVyYXRvcik6CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmg6Cisg
ICAgICAgIChKU0M6Om5vcm1hbGl6ZVByb3RvdHlwZUNoYWluRm9yQ2hhaW5BY2Nlc3MpOiByZXN0
cnVjdHVyZWQgdG8gbm90IHVzZSB0aGUgYmFzZSB2YWx1ZS4KKyAgICAgICAgKEpTQzo6bm9ybWFs
aXplUHJvdG90eXBlQ2hhaW4pOiByZXN0cnVjdHVyZWQgdG8gbm90IHVzZSB0aGUgYmFzZSB2YWx1
ZS4KKyAgICAgICAgKiB0ZXN0cy9tb3ppbGxhL21vemlsbGEtdGVzdHMueWFtbDoKKyAgICAgICAg
KiB0ZXN0cy9zdHJlc3MvcHJvdG8tc2V0dGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9z
dHJlc3MvcHV0LWJ5LWlkLWJ1aWxkLWxpc3Qtb3JkZXItcmVjdXJzZS5qczogQWRkZWQuCisgICAg
ICAgIEFkZGVkIHRlc3QgdGhhdCBmYWlscyB3aXRob3V0IHRoaXMgcGF0Y2guCisKIDIwMTUtMDEt
MTMgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIg
SW5zcGVjdG9yOiBSZW1vdmUgdW51c2VkIFJlc2l6ZUltYWdlIGFuZCBEZWNvZGVJbWFnZURhdGEg
dGltZWxpbmUgZXZlbnRzCmRpZmYgLS1naXQgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmNwcCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3Bw
CmluZGV4IGViM2M4OTUuLjM3YWE0NWQgMTAwNjQ0Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuY3BwCkBAIC0yNzMsMTQgKzI3MywxNSBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1
YgogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAg
ICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CiAgICAg
UHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCB0cnVlLCBleGVjLT5jb2RlQmxvY2soKS0+
cHV0QnlJZENvbnRleHQoKSk7Ci0gICAgCisKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJh
c2VWYWx1ZS5pc0NlbGwoKSA/IGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKCp2bSkgOiBu
dWxscHRyOwogICAgIGJhc2VWYWx1ZS5wdXQoZXhlYywgaWRlbnQsIHZhbHVlLCBzbG90KTsKICAg
ICAKICAgICBpZiAoYWNjZXNzVHlwZSAhPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5m
by0+YWNjZXNzVHlwZSkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBpZiAoc3R1YkluZm8t
PnNlZW4pCi0gICAgICAgIHJlcGF0Y2hQdXRCeUlEKGV4ZWMsIGJhc2VWYWx1ZSwgaWRlbnQsIHNs
b3QsICpzdHViSW5mbywgTm90RGlyZWN0KTsKKyAgICAgICAgcmVwYXRjaFB1dEJ5SUQoZXhlYywg
YmFzZVZhbHVlLCBzdHJ1Y3R1cmUsIGlkZW50LCBzbG90LCAqc3R1YkluZm8sIE5vdERpcmVjdCk7
CiAgICAgZWxzZQogICAgICAgICBzdHViSW5mby0+c2VlbiA9IHRydWU7CiB9CkBAIC0yOTYsMTQg
KzI5NywxNSBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdE9w
dGltaXplKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlUwogICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFz
ZVZhbHVlLCBmYWxzZSwgZXhlYy0+Y29kZUJsb2NrKCktPnB1dEJ5SWRDb250ZXh0KCkpOwotICAg
IAorCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlVmFsdWUuaXNDZWxsKCkgPyBiYXNl
VmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSgqdm0pIDogbnVsbHB0cjsgICAgCiAgICAgYmFzZVZh
bHVlLnB1dChleGVjLCBpZGVudCwgdmFsdWUsIHNsb3QpOwogICAgIAogICAgIGlmIChhY2Nlc3NU
eXBlICE9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKSkKICAg
ICAgICAgcmV0dXJuOwogICAgIAogICAgIGlmIChzdHViSW5mby0+c2VlbikKLSAgICAgICAgcmVw
YXRjaFB1dEJ5SUQoZXhlYywgYmFzZVZhbHVlLCBpZGVudCwgc2xvdCwgKnN0dWJJbmZvLCBOb3RE
aXJlY3QpOworICAgICAgICByZXBhdGNoUHV0QnlJRChleGVjLCBiYXNlVmFsdWUsIHN0cnVjdHVy
ZSwgaWRlbnQsIHNsb3QsICpzdHViSW5mbywgTm90RGlyZWN0KTsKICAgICBlbHNlCiAgICAgICAg
IHN0dWJJbmZvLT5zZWVuID0gdHJ1ZTsKIH0KQEAgLTMyMCwxMyArMzIyLDE0IEBAIHZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1pemUoRXhlY1N0YXRl
KiBleGVjLCBTdHJ1Y3R1CiAgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpKTsKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNl
T2JqZWN0LCB0cnVlLCBleGVjLT5jb2RlQmxvY2soKS0+cHV0QnlJZENvbnRleHQoKSk7CiAgICAg
CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlT2JqZWN0LT5zdHJ1Y3R1cmUoKnZtKTsK
ICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgaWRlbnQsIHZhbHVlLCBzbG90
KTsKICAgICAKICAgICBpZiAoYWNjZXNzVHlwZSAhPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihz
dHViSW5mby0+YWNjZXNzVHlwZSkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBpZiAoc3R1
YkluZm8tPnNlZW4pCi0gICAgICAgIHJlcGF0Y2hQdXRCeUlEKGV4ZWMsIGJhc2VPYmplY3QsIGlk
ZW50LCBzbG90LCAqc3R1YkluZm8sIERpcmVjdCk7CisgICAgICAgIHJlcGF0Y2hQdXRCeUlEKGV4
ZWMsIGJhc2VPYmplY3QsIHN0cnVjdHVyZSwgaWRlbnQsIHNsb3QsICpzdHViSW5mbywgRGlyZWN0
KTsKICAgICBlbHNlCiAgICAgICAgIHN0dWJJbmZvLT5zZWVuID0gdHJ1ZTsKIH0KQEAgLTM0Mywx
MyArMzQ2LDE0IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9u
U3RyaWN0T3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1CiAgICAgSlNPYmplY3QqIGJhc2VP
YmplY3QgPSBhc09iamVjdChKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpKTsKICAgICBQdXRQ
cm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBmYWxzZSwgZXhlYy0+Y29kZUJsb2NrKCktPnB1
dEJ5SWRDb250ZXh0KCkpOwogICAgIAorICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZU9i
amVjdC0+c3RydWN0dXJlKCp2bSk7CiAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0KGV4ZWMtPnZt
KCksIGlkZW50LCB2YWx1ZSwgc2xvdCk7CiAgICAgCiAgICAgaWYgKGFjY2Vzc1R5cGUgIT0gc3Rh
dGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpKQogICAgICAgICByZXR1
cm47CiAgICAgCiAgICAgaWYgKHN0dWJJbmZvLT5zZWVuKQotICAgICAgICByZXBhdGNoUHV0QnlJ
RChleGVjLCBiYXNlT2JqZWN0LCBpZGVudCwgc2xvdCwgKnN0dWJJbmZvLCBEaXJlY3QpOworICAg
ICAgICByZXBhdGNoUHV0QnlJRChleGVjLCBiYXNlT2JqZWN0LCBzdHJ1Y3R1cmUsIGlkZW50LCBz
bG90LCAqc3R1YkluZm8sIERpcmVjdCk7CiAgICAgZWxzZQogICAgICAgICBzdHViSW5mby0+c2Vl
biA9IHRydWU7CiB9CmRpZmYgLS1naXQgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNo
LmNwcCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IGZkNmEzNzQu
LjcyOTdkMDggMTAwNjQ0Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3Bw
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCkBAIC0yOTcsNiArMjk3
LDcgQEAgc3RhdGljIHZvaWQgZ2VuZXJhdGVCeUlkU3R1YigKICAgICBQcm9wZXJ0eU9mZnNldCBv
ZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBib29sIGxvYWRUYXJnZXRGcm9tUHJveHksIFdh
dGNocG9pbnRTZXQqIHdhdGNocG9pbnRTZXQsCiAgICAgQ29kZUxvY2F0aW9uTGFiZWwgc3VjY2Vz
c0xhYmVsLCBDb2RlTG9jYXRpb25MYWJlbCBzbG93Q2FzZUxhYmVsLCBSZWZQdHI8SklUU3R1YlJv
dXRpbmU+JiBzdHViUm91dGluZSkKIHsKKwogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAg
IEdQUlJlZyBiYXNlR1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRjaC5iYXNl
R1BSKTsKICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSBKU1ZhbHVlUmVncygKQEAgLTM0OCw3
ICszNDksNyBAQCBzdGF0aWMgdm9pZCBnZW5lcmF0ZUJ5SWRTdHViKAogICAgIGlmICh3YXRjaHBv
aW50U2V0KQogICAgICAgICB3YXRjaHBvaW50U2V0LT5hZGQoc3R1YkluZm8uYWRkV2F0Y2hwb2lu
dChjb2RlQmxvY2spKTsKIAotICAgIFN0cnVjdHVyZSogY3VyclN0cnVjdHVyZSA9IHN0cnVjdHVy
ZTsKKyAgICBTdHJ1Y3R1cmUqIGN1cnJTdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmU7IAogICAgIEpTT2Jq
ZWN0KiBwcm90b09iamVjdCA9IDA7CiAgICAgaWYgKGNoYWluKSB7CiAgICAgICAgIFdyaXRlQmFy
cmllcjxTdHJ1Y3R1cmU+KiBpdCA9IGNoYWluLT5oZWFkKCk7CkBAIC03NDcsNyArNzQ4LDcgQEAg
c3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlR2V0QnlJRChFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgYmFzZVZhbHVlLCBjb24KICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiAK
ICAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOwotICAgIFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSgpOworICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSgqdm0pOwogCiAgICAgSW5saW5lQ2FjaGVBY3Rp
b24gYWN0aW9uID0gYWN0aW9uRm9yQ2VsbCgqdm0sIGJhc2VDZWxsKTsKICAgICBpZiAoYWN0aW9u
ICE9IEF0dGVtcHRUb0NhY2hlKQpAQCAtODMyLDEwICs4MzMsMTAgQEAgc3RhdGljIElubGluZUNh
Y2hlQWN0aW9uIHRyeUJ1aWxkR2V0QnlJRExpc3QoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJh
c2VWYWx1ZSwKICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogCiAgICAgICAgIGlm
IChzbG90LmlzVW5zZXQoKSkKLSAgICAgICAgICAgIGNvdW50ID0gbm9ybWFsaXplUHJvdG90eXBl
Q2hhaW4oZXhlYywgYmFzZUNlbGwpOworICAgICAgICAgICAgY291bnQgPSBub3JtYWxpemVQcm90
b3R5cGVDaGFpbihleGVjLCBzdHJ1Y3R1cmUpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBj
b3VudCA9IG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluRm9yQ2hhaW5BY2Nlc3MoCi0gICAgICAgICAg
ICAgICAgZXhlYywgYmFzZVZhbHVlLCBzbG90LnNsb3RCYXNlKCksIGlkZW50LCBvZmZzZXQpOwor
ICAgICAgICAgICAgICAgIGV4ZWMsIHN0cnVjdHVyZSwgc2xvdC5zbG90QmFzZSgpLCBpZGVudCwg
b2Zmc2V0KTsKICAgICAgICAgaWYgKGNvdW50ID09IEludmFsaWRQcm90b3R5cGVDaGFpbikKICAg
ICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogICAgICAgICBwcm90b3R5cGVDaGFpbiA9
IHN0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4oZXhlYyk7CkBAIC05MDcsMTEgKzkwOCw5IEBAIHN0
YXRpYyBWX0pJVE9wZXJhdGlvbl9FU3NpSkpJIGFwcHJvcHJpYXRlTGlzdEJ1aWxkaW5nUHV0QnlJ
ZEZ1bmN0aW9uKGNvbnN0IFB1dFByCiAKIHN0YXRpYyB2b2lkIGVtaXRQdXRSZXBsYWNlU3R1YigK
ICAgICBFeGVjU3RhdGUqIGV4ZWMsCi0gICAgSlNWYWx1ZSwKICAgICBjb25zdCBJZGVudGlmaWVy
JiwKICAgICBjb25zdCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QsCiAgICAgU3RydWN0dXJlU3R1Yklu
Zm8mIHN0dWJJbmZvLAotICAgIFB1dEtpbmQsCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsCiAg
ICAgQ29kZUxvY2F0aW9uTGFiZWwgZmFpbHVyZUxhYmVsLAogICAgIFJlZlB0cjxKSVRTdHViUm91
dGluZT4mIHN0dWJSb3V0aW5lKQpAQCAtOTg1LDIwICs5ODQsNDMgQEAgc3RhdGljIHZvaWQgZW1p
dFB1dFJlcGxhY2VTdHViKAogICAgICAgICAgICAgICAgIHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2Fs
bFRvRG9uZSkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogfQogCi1zdGF0aWMgdm9pZCBlbWl0UHV0
VHJhbnNpdGlvblN0dWIoCi0gICAgRXhlY1N0YXRlKiBleGVjLAotICAgIEpTVmFsdWUsCi0gICAg
Y29uc3QgSWRlbnRpZmllciYsCi0gICAgY29uc3QgUHV0UHJvcGVydHlTbG90JiBzbG90LAotICAg
IFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywKLSAgICBQdXRLaW5kIHB1dEtpbmQsCi0gICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsCi0gICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsCi0gICAg
U3RydWN0dXJlQ2hhaW4qIHByb3RvdHlwZUNoYWluLAotICAgIENvZGVMb2NhdGlvbkxhYmVsIGZh
aWx1cmVMYWJlbCwKLSAgICBSZWZQdHI8SklUU3R1YlJvdXRpbmU+JiBzdHViUm91dGluZSkKK3N0
YXRpYyBTdHJ1Y3R1cmUqIGVtaXRQdXRUcmFuc2l0aW9uU3R1YkFuZEdldE9sZFN0cnVjdHVyZShF
eGVjU3RhdGUqIGV4ZWMsIFZNKiB2bSwgU3RydWN0dXJlKiYgc3RydWN0dXJlLCBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCwgCisgICAgY29uc3QgUHV0UHJvcGVydHlTbG90JiBzbG90LCBTdHJ1Y3R1
cmVTdHViSW5mbyYgc3R1YkluZm8sIFB1dEtpbmQgcHV0S2luZCkKIHsKLSAgICBWTSogdm0gPSAm
ZXhlYy0+dm0oKTsKKyAgICBQcm9wZXJ0eU5hbWUgcG5hbWUoaWRlbnQpOworICAgIFN0cnVjdHVy
ZSogb2xkU3RydWN0dXJlID0gc3RydWN0dXJlOworICAgIGlmICghb2xkU3RydWN0dXJlLT5pc09i
amVjdCgpIHx8IG9sZFN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkgfHwgcG5hbWUuYXNJbmRleCgp
ICE9IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRleCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICBQcm9wZXJ0eU9mZnNldCBwcm9wZXJ0eU9mZnNldDsKKyAgICBzdHJ1Y3R1cmUgPSBTdHJ1
Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmVDb25jdXJyZW50
bHkob2xkU3RydWN0dXJlLCBpZGVudC5pbXBsKCksIDAsIHByb3BlcnR5T2Zmc2V0KTsKKyAgICAg
ICAgICAgIAorICAgIGlmICghc3RydWN0dXJlIHx8ICFzdHJ1Y3R1cmUtPmlzT2JqZWN0KCkgfHwg
c3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSB8fCAhc3RydWN0dXJlLT5wcm9wZXJ0eUFjY2Vzc2Vz
QXJlQ2FjaGVhYmxlKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgLy8gU2tpcCBv
cHRpbWl6aW5nIHRoZSBjYXNlIHdoZXJlIHdlIG5lZWQgYSByZWFsbG9jLCBpZiB3ZSBkb24ndCBo
YXZlCisgICAgLy8gZW5vdWdoIHJlZ2lzdGVycyB0byBtYWtlIGl0IGhhcHBlbi4KKyAgICBpZiAo
R1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgPCA2CisgICAgICAgICYmIG9sZFN0cnVjdHVyZS0+
b3V0T2ZMaW5lQ2FwYWNpdHkoKSAhPSBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkKKyAg
ICAgICAgJiYgb2xkU3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICAKKyAgICAvLyBTa2lwIG9wdGltaXppbmcgdGhl
IGNhc2Ugd2hlcmUgd2UgbmVlZCByZWFsbG9jLCBhbmQgdGhlIHN0cnVjdHVyZSBoYXMKKyAgICAv
LyBpbmRleGluZyBzdG9yYWdlLgorICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3Qgc2tpcCB0aGlz
ISAgSW1wbGVtZW50IGl0IQorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMzA5MTQKKyAgICBpZiAob2xkU3RydWN0dXJlLT5jb3VsZEhhdmVJbmRleGluZ0hl
YWRlcigpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIAorICAgIGlmIChu
b3JtYWxpemVQcm90b3R5cGVDaGFpbihleGVjLCBzdHJ1Y3R1cmUpID09IEludmFsaWRQcm90b3R5
cGVDaGFpbikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBTdHJ1Y3R1cmVDaGFpbiog
cHJvdG90eXBlQ2hhaW4gPSBzdHJ1Y3R1cmUtPnByb3RvdHlwZUNoYWluKGV4ZWMpOworCisgICAg
Ly8gZW1pdFB1dFRyYW5zaXRpb25TdHViCisKKyAgICBDb2RlTG9jYXRpb25MYWJlbCBmYWlsdXJl
TGFiZWwgPSBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24ubGFiZWxBdE9mZnNldChzdHViSW5m
by5wYXRjaC5kZWx0YUNhbGxUb1Nsb3dDYXNlKTsKKyAgICBSZWZQdHI8SklUU3R1YlJvdXRpbmU+
JiBzdHViUm91dGluZSA9IHN0dWJJbmZvLnN0dWJSb3V0aW5lOwogCiAgICAgR1BSUmVnIGJhc2VH
UFIgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLmJhc2VHUFIpOwogI2lmIFVT
RShKU1ZBTFVFMzJfNjQpCkBAIC0xMjIyLDkgKzEyNDQsMTEgQEAgc3RhdGljIHZvaWQgZW1pdFB1
dFRyYW5zaXRpb25TdHViKAogICAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCktPm93bmVyRXhl
Y3V0YWJsZSgpLAogICAgICAgICAgICAgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpICE9
IG9sZFN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwKICAgICAgICAgICAgIHN0cnVjdHVy
ZSk7CisKKyAgICByZXR1cm4gb2xkU3RydWN0dXJlOwogfQogCi1zdGF0aWMgSW5saW5lQ2FjaGVB
Y3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFsdWUs
IGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QsIFN0
cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgUHV0S2luZCBwdXRLaW5kKQorc3RhdGljIElubGlu
ZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFz
ZVZhbHVlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNv
bnN0IFB1dFByb3BlcnR5U2xvdCYgc2xvdCwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBQ
dXRLaW5kIHB1dEtpbmQpCiB7CiAgICAgaWYgKE9wdGlvbnM6OmZvcmNlSUNGYWlsdXJlKCkpCiAg
ICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwpAQCAtMTIzNCw0NiArMTI1OCwyMyBAQCBzdGF0
aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSBiYXNlVmFsdWUsIGNvbgogCiAgICAgaWYgKCFiYXNlVmFsdWUuaXNDZWxsKCkpCiAgICAg
ICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwotICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBiYXNlVmFs
dWUuYXNDZWxsKCk7Ci0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlQ2VsbC0+c3RydWN0
dXJlKCp2bSk7Ci0gICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmUtPnByZXZp
b3VzSUQoKTsKICAgICAKICAgICBpZiAoIXNsb3QuaXNDYWNoZWFibGVQdXQoKSAmJiAhc2xvdC5p
c0NhY2hlYWJsZUN1c3RvbSgpICYmICFzbG90LmlzQ2FjaGVhYmxlU2V0dGVyKCkpCiAgICAgICAg
IHJldHVybiBHaXZlVXBPbkNhY2hlOworCiAgICAgaWYgKCFzdHJ1Y3R1cmUtPnByb3BlcnR5QWNj
ZXNzZXNBcmVDYWNoZWFibGUoKSkKICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiAKICAg
ICAvLyBPcHRpbWl6ZSBzZWxmIGFjY2Vzcy4KICAgICBpZiAoc2xvdC5iYXNlKCkgPT0gYmFzZVZh
bHVlICYmIHNsb3QuaXNDYWNoZWFibGVQdXQoKSkgewogICAgICAgICBpZiAoc2xvdC50eXBlKCkg
PT0gUHV0UHJvcGVydHlTbG90OjpOZXdQcm9wZXJ0eSkgewotICAgICAgICAgICAgaWYgKHN0cnVj
dHVyZS0+aXNEaWN0aW9uYXJ5KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2Fj
aGU7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIC8vIFNraXAgb3B0aW1pemluZyB0aGUgY2Fz
ZSB3aGVyZSB3ZSBuZWVkIGEgcmVhbGxvYywgaWYgd2UgZG9uJ3QgaGF2ZQotICAgICAgICAgICAg
Ly8gZW5vdWdoIHJlZ2lzdGVycyB0byBtYWtlIGl0IGhhcHBlbi4KLSAgICAgICAgICAgIGlmIChH
UFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyA8IDYKLSAgICAgICAgICAgICAgICAmJiBvbGRTdHJ1
Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgIT0gc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0
eSgpCi0gICAgICAgICAgICAgICAgJiYgb2xkU3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgp
KQotICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwotICAgICAgICAgICAgCi0g
ICAgICAgICAgICAvLyBTa2lwIG9wdGltaXppbmcgdGhlIGNhc2Ugd2hlcmUgd2UgbmVlZCByZWFs
bG9jLCBhbmQgdGhlIHN0cnVjdHVyZSBoYXMKLSAgICAgICAgICAgIC8vIGluZGV4aW5nIHN0b3Jh
Z2UuCi0gICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IHNraXAgdGhpcyEgIEltcGxl
bWVudCBpdCEKLSAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMzA5MTQKLSAgICAgICAgICAgIGlmIChvbGRTdHJ1Y3R1cmUtPmNvdWxkSGF2ZUlu
ZGV4aW5nSGVhZGVyKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7Ci0g
ICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChub3JtYWxpemVQcm90b3R5cGVDaGFpbihleGVj
LCBiYXNlQ2VsbCkgPT0gSW52YWxpZFByb3RvdHlwZUNoYWluKQorCisgICAgICAgICAgICBTdHJ1
Y3R1cmUqIG9sZFN0cnVjdHVyZSA9IGVtaXRQdXRUcmFuc2l0aW9uU3R1YkFuZEdldE9sZFN0cnVj
dHVyZShleGVjLCB2bSwgc3RydWN0dXJlLCBpZGVudCwgc2xvdCwgc3R1YkluZm8sIHB1dEtpbmQp
OworICAgICAgICAgICAgaWYgKCFvbGRTdHJ1Y3R1cmUpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IEdpdmVVcE9uQ2FjaGU7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFN0cnVjdHVyZUNoYWlu
KiBwcm90b3R5cGVDaGFpbiA9IHN0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4oZXhlYyk7CiAgICAg
ICAgICAgICAKLSAgICAgICAgICAgIGVtaXRQdXRUcmFuc2l0aW9uU3R1YigKLSAgICAgICAgICAg
ICAgICBleGVjLCBiYXNlVmFsdWUsIGlkZW50LCBzbG90LCBzdHViSW5mbywgcHV0S2luZCwKLSAg
ICAgICAgICAgICAgICBzdHJ1Y3R1cmUsIG9sZFN0cnVjdHVyZSwgcHJvdG90eXBlQ2hhaW4sCi0g
ICAgICAgICAgICAgICAgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQo
c3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9TbG93Q2FzZSksCi0gICAgICAgICAgICAgICAgc3R1
YkluZm8uc3R1YlJvdXRpbmUpOwotICAgICAgICAgICAgCiAgICAgICAgICAgICBSZXBhdGNoQnVm
ZmVyIHJlcGF0Y2hCdWZmZXIoY29kZUJsb2NrKTsKICAgICAgICAgICAgIHJlcGF0Y2hCdWZmZXIu
cmVsaW5rKAogICAgICAgICAgICAgICAgIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5qdW1w
QXRPZmZzZXQoCkBAIC0xMjk0LDYgKzEyOTUsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24g
dHJ5Q2FjaGVQdXRCeUlEKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFsdWUsIGNvbgog
ICAgICAgICBzdHViSW5mby5pbml0UHV0QnlJZFJlcGxhY2UoKnZtLCBjb2RlQmxvY2stPm93bmVy
RXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOwogICAgICAgICByZXR1cm4gUmV0cnlDYWNoZUxhdGVy
OwogICAgIH0KKwogICAgIGlmICgoc2xvdC5pc0NhY2hlYWJsZUN1c3RvbSgpIHx8IHNsb3QuaXND
YWNoZWFibGVTZXR0ZXIoKSkKICAgICAgICAgJiYgc3R1YkluZm8ucGF0Y2guc3BpbGxNb2RlID09
IERvbnRTcGlsbCkgewogICAgICAgICBSZWZQdHI8SklUU3R1YlJvdXRpbmU+IHN0dWJSb3V0aW5l
OwpAQCAtMTMwMiwxMCArMTMwNCw5IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNo
ZVB1dEJ5SUQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgY29uCiAgICAgICAg
IFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CiAgICAgICAgIHNp
emVfdCBjb3VudCA9IDA7CiAgICAgICAgIGlmIChiYXNlVmFsdWUgIT0gc2xvdC5iYXNlKCkpIHsK
LSAgICAgICAgICAgIGNvdW50ID0gbm9ybWFsaXplUHJvdG90eXBlQ2hhaW5Gb3JDaGFpbkFjY2Vz
cyhleGVjLCBiYXNlQ2VsbCwgc2xvdC5iYXNlKCksIGlkZW50LCBvZmZzZXQpOworICAgICAgICAg
ICAgY291bnQgPSBub3JtYWxpemVQcm90b3R5cGVDaGFpbkZvckNoYWluQWNjZXNzKGV4ZWMsIHN0
cnVjdHVyZSwgc2xvdC5iYXNlKCksIGlkZW50LCBvZmZzZXQpOwogICAgICAgICAgICAgaWYgKGNv
dW50ID09IEludmFsaWRQcm90b3R5cGVDaGFpbikKICAgICAgICAgICAgICAgICByZXR1cm4gR2l2
ZVVwT25DYWNoZTsKLQogICAgICAgICAgICAgcHJvdG90eXBlQ2hhaW4gPSBzdHJ1Y3R1cmUtPnBy
b3RvdHlwZUNoYWluKGV4ZWMpOwogICAgICAgICB9CiAgICAgICAgIFBvbHltb3JwaGljUHV0QnlJ
ZExpc3QqIGxpc3Q7CkBAIC0xMzMzLDExICsxMzM0LDExIEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFj
dGlvbiB0cnlDYWNoZVB1dEJ5SUQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwg
Y29uCiAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiB9CiAKLXZvaWQgcmVwYXRjaFB1dEJ5SUQo
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBjb25zdCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QsIFN0cnVjdHVyZVN0dWJJbmZv
JiBzdHViSW5mbywgUHV0S2luZCBwdXRLaW5kKQordm9pZCByZXBhdGNoUHV0QnlJRChFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBjb25zdCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QsIFN0
cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgUHV0S2luZCBwdXRLaW5kKQogewogICAgIEdDU2Fm
ZUNvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKGV4ZWMtPmNvZGVCbG9jaygpLT5tX2xvY2ssIGV4
ZWMtPnZtKCkuaGVhcCk7CiAgICAgCi0gICAgaWYgKHRyeUNhY2hlUHV0QnlJRChleGVjLCBiYXNl
VmFsdWUsIHByb3BlcnR5TmFtZSwgc2xvdCwgc3R1YkluZm8sIHB1dEtpbmQpID09IEdpdmVVcE9u
Q2FjaGUpCisgICAgaWYgKHRyeUNhY2hlUHV0QnlJRChleGVjLCBiYXNlVmFsdWUsIHN0cnVjdHVy
ZSwgcHJvcGVydHlOYW1lLCBzbG90LCBzdHViSW5mbywgcHV0S2luZCkgPT0gR2l2ZVVwT25DYWNo
ZSkKICAgICAgICAgcmVwYXRjaENhbGwoZXhlYy0+Y29kZUJsb2NrKCksIHN0dWJJbmZvLmNhbGxS
ZXR1cm5Mb2NhdGlvbiwgYXBwcm9wcmlhdGVHZW5lcmljUHV0QnlJZEZ1bmN0aW9uKHNsb3QsIHB1
dEtpbmQpKTsKIH0KIApAQCAtMTM0NiwxNiArMTM0Nyw5IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFj
dGlvbiB0cnlCdWlsZFB1dEJ5SWRMaXN0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFs
dWUsCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKICAgICBW
TSogdm0gPSAmZXhlYy0+dm0oKTsKIAotICAgIGlmICghYmFzZVZhbHVlLmlzQ2VsbCgpIHx8ICFz
dHJ1Y3R1cmUpCi0gICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwotICAgIEpTQ2VsbCogYmFz
ZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7Ci0KLSAgICBpZiAoYmFzZUNlbGwtPnN0cnVjdHVy
ZSgqdm0pLT5pZCgpICE9IHN0cnVjdHVyZS0+aWQoKSkKKyAgICBpZiAoIWJhc2VWYWx1ZS5pc0Nl
bGwoKSkKICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiAKLSAgICBTdHJ1Y3R1cmUqIG9s
ZFN0cnVjdHVyZSA9IHN0cnVjdHVyZS0+cHJldmlvdXNJRCgpOwotICAgIAotICAgIAogICAgIGlm
ICghc2xvdC5pc0NhY2hlYWJsZVB1dCgpICYmICFzbG90LmlzQ2FjaGVhYmxlQ3VzdG9tKCkgJiYg
IXNsb3QuaXNDYWNoZWFibGVTZXR0ZXIoKSkKICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7
CiAKQEAgLTEzNjgsNDIgKzEzNjIsMjMgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUJ1
aWxkUHV0QnlJZExpc3QoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwKICAgICAg
ICAgUmVmUHRyPEpJVFN0dWJSb3V0aW5lPiBzdHViUm91dGluZTsKICAgICAgICAgCiAgICAgICAg
IGlmIChzbG90LnR5cGUoKSA9PSBQdXRQcm9wZXJ0eVNsb3Q6Ok5ld1Byb3BlcnR5KSB7Ci0gICAg
ICAgICAgICBpZiAoc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gR2l2ZVVwT25DYWNoZTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgLy8gU2tpcCBv
cHRpbWl6aW5nIHRoZSBjYXNlIHdoZXJlIHdlIG5lZWQgYSByZWFsbG9jLCBpZiB3ZSBkb24ndCBo
YXZlCi0gICAgICAgICAgICAvLyBlbm91Z2ggcmVnaXN0ZXJzIHRvIG1ha2UgaXQgaGFwcGVuLgot
ICAgICAgICAgICAgaWYgKEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzIDwgNgotICAgICAgICAg
ICAgICAgICYmIG9sZFN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAhPSBzdHJ1Y3R1cmUt
Pm91dE9mTGluZUNhcGFjaXR5KCkKLSAgICAgICAgICAgICAgICAmJiBvbGRTdHJ1Y3R1cmUtPm91
dE9mTGluZUNhcGFjaXR5KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7
Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIC8vIFNraXAgb3B0aW1pemluZyB0aGUgY2FzZSB3
aGVyZSB3ZSBuZWVkIHJlYWxsb2MsIGFuZCB0aGUgc3RydWN0dXJlIGhhcwotICAgICAgICAgICAg
Ly8gaW5kZXhpbmcgc3RvcmFnZS4KLSAgICAgICAgICAgIGlmIChvbGRTdHJ1Y3R1cmUtPmNvdWxk
SGF2ZUluZGV4aW5nSGVhZGVyKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2Fj
aGU7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChub3JtYWxpemVQcm90b3R5cGVDaGFp
bihleGVjLCBiYXNlQ2VsbCkgPT0gSW52YWxpZFByb3RvdHlwZUNoYWluKQotICAgICAgICAgICAg
ICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBTdHJ1
Y3R1cmVDaGFpbiogcHJvdG90eXBlQ2hhaW4gPSBzdHJ1Y3R1cmUtPnByb3RvdHlwZUNoYWluKGV4
ZWMpOwotICAgICAgICAgICAgCiAgICAgICAgICAgICBsaXN0ID0gUG9seW1vcnBoaWNQdXRCeUlk
TGlzdDo6ZnJvbShwdXRLaW5kLCBzdHViSW5mbyk7CiAgICAgICAgICAgICBpZiAobGlzdC0+aXNG
dWxsKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7IC8vIFdpbGwgZ2V0
IGhlcmUgZHVlIHRvIHJlY3Vyc2lvbi4KLSAgICAgICAgICAgIAotICAgICAgICAgICAgLy8gV2Un
cmUgbm93IGNvbW1pdHRlZCB0byBjcmVhdGluZyB0aGUgc3R1Yi4gTW9ncmlmeSB0aGUgbWV0YS1k
YXRhIGFjY29yZGluZ2x5LgotICAgICAgICAgICAgZW1pdFB1dFRyYW5zaXRpb25TdHViKAotICAg
ICAgICAgICAgICAgIGV4ZWMsIGJhc2VWYWx1ZSwgcHJvcGVydHlOYW1lLCBzbG90LCBzdHViSW5m
bywgcHV0S2luZCwKLSAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUsIG9sZFN0cnVjdHVyZSwgcHJv
dG90eXBlQ2hhaW4sCi0gICAgICAgICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwobGlzdC0+Y3Vy
cmVudFNsb3dQYXRoVGFyZ2V0KCkpLAotICAgICAgICAgICAgICAgIHN0dWJSb3V0aW5lKTsKLSAg
ICAgICAgICAgIAorCisgICAgICAgICAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSA9IGVtaXRQ
dXRUcmFuc2l0aW9uU3R1YkFuZEdldE9sZFN0cnVjdHVyZShleGVjLCB2bSwgc3RydWN0dXJlLCBw
cm9wZXJ0eU5hbWUsIHNsb3QsIHN0dWJJbmZvLCBwdXRLaW5kKTsKKworICAgICAgICAgICAgaWYg
KCFvbGRTdHJ1Y3R1cmUpIAorICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwor
CisgICAgICAgICAgICBTdHJ1Y3R1cmVDaGFpbiogcHJvdG90eXBlQ2hhaW4gPSBzdHJ1Y3R1cmUt
PnByb3RvdHlwZUNoYWluKGV4ZWMpOworICAgICAgICAgICAgc3R1YlJvdXRpbmUgPSBzdHViSW5m
by5zdHViUm91dGluZTsKICAgICAgICAgICAgIGxpc3QtPmFkZEFjY2VzcygKICAgICAgICAgICAg
ICAgICBQdXRCeUlkQWNjZXNzOjp0cmFuc2l0aW9uKAogICAgICAgICAgICAgICAgICAgICAqdm0s
IGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksCiAgICAgICAgICAgICAgICAgICAgIG9sZFN0
cnVjdHVyZSwgc3RydWN0dXJlLCBwcm90b3R5cGVDaGFpbiwKICAgICAgICAgICAgICAgICAgICAg
c3R1YlJvdXRpbmUpKTsKKwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbGlzdCA9IFBv
bHltb3JwaGljUHV0QnlJZExpc3Q6OmZyb20ocHV0S2luZCwgc3R1YkluZm8pOwogICAgICAgICAg
ICAgaWYgKGxpc3QtPmlzRnVsbCgpKQpAQCAtMTQxMywyMSArMTM4OCwxOSBAQCBzdGF0aWMgSW5s
aW5lQ2FjaGVBY3Rpb24gdHJ5QnVpbGRQdXRCeUlkTGlzdChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgYmFzZVZhbHVlLAogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBXZSdyZSBub3cgY29t
bWl0dGVkIHRvIGNyZWF0aW5nIHRoZSBzdHViLiBNb2dyaWZ5IHRoZSBtZXRhLWRhdGEgYWNjb3Jk
aW5nbHkuCiAgICAgICAgICAgICBlbWl0UHV0UmVwbGFjZVN0dWIoCi0gICAgICAgICAgICAgICAg
ZXhlYywgYmFzZVZhbHVlLCBwcm9wZXJ0eU5hbWUsIHNsb3QsIHN0dWJJbmZvLCBwdXRLaW5kLAor
ICAgICAgICAgICAgICAgIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCwgc3R1YkluZm8sIAogICAg
ICAgICAgICAgICAgIHN0cnVjdHVyZSwgQ29kZUxvY2F0aW9uTGFiZWwobGlzdC0+Y3VycmVudFNs
b3dQYXRoVGFyZ2V0KCkpLCBzdHViUm91dGluZSk7Ci0gICAgICAgICAgICAKKwogICAgICAgICAg
ICAgbGlzdC0+YWRkQWNjZXNzKAogICAgICAgICAgICAgICAgIFB1dEJ5SWRBY2Nlc3M6OnJlcGxh
Y2UoCiAgICAgICAgICAgICAgICAgICAgICp2bSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUo
KSwKICAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlLCBzdHViUm91dGluZSkpOwogICAgICAg
ICB9Ci0gICAgICAgIAogICAgICAgICBSZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIoY29kZUJs
b2NrKTsKICAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoc3R1YkluZm8uY2FsbFJldHVybkxv
Y2F0aW9uLmp1bXBBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZWx0YUNhbGxUb0p1bXApLCBDb2Rl
TG9jYXRpb25MYWJlbChzdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkpOwotICAgICAgICAKICAg
ICAgICAgaWYgKGxpc3QtPmlzRnVsbCgpKQogICAgICAgICAgICAgcmVwYXRjaENhbGwocmVwYXRj
aEJ1ZmZlciwgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLCBhcHByb3ByaWF0ZUdlbmVyaWNQ
dXRCeUlkRnVuY3Rpb24oc2xvdCwgcHV0S2luZCkpOwotICAgICAgICAKKwogICAgICAgICByZXR1
cm4gUmV0cnlDYWNoZUxhdGVyOwogICAgIH0KIApAQCAtMTQzOCwxMiArMTQxMSwxMiBAQCBzdGF0
aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5QnVpbGRQdXRCeUlkTGlzdChFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgYmFzZVZhbHVlLAogICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzbG90
LmNhY2hlZE9mZnNldCgpOwogICAgICAgICBzaXplX3QgY291bnQgPSAwOwogICAgICAgICBpZiAo
YmFzZVZhbHVlICE9IHNsb3QuYmFzZSgpKSB7Ci0gICAgICAgICAgICBjb3VudCA9IG5vcm1hbGl6
ZVByb3RvdHlwZUNoYWluRm9yQ2hhaW5BY2Nlc3MoZXhlYywgYmFzZUNlbGwsIHNsb3QuYmFzZSgp
LCBwcm9wZXJ0eU5hbWUsIG9mZnNldCk7CisgICAgICAgICAgICBjb3VudCA9IG5vcm1hbGl6ZVBy
b3RvdHlwZUNoYWluRm9yQ2hhaW5BY2Nlc3MoZXhlYywgc3RydWN0dXJlLCBzbG90LmJhc2UoKSwg
cHJvcGVydHlOYW1lLCBvZmZzZXQpOwogICAgICAgICAgICAgaWYgKGNvdW50ID09IEludmFsaWRQ
cm90b3R5cGVDaGFpbikKICAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKLQog
ICAgICAgICAgICAgcHJvdG90eXBlQ2hhaW4gPSBzdHJ1Y3R1cmUtPnByb3RvdHlwZUNoYWluKGV4
ZWMpOwogICAgICAgICB9CisgICAgICAgIAogICAgICAgICBQb2x5bW9ycGhpY1B1dEJ5SWRMaXN0
KiBsaXN0OwogICAgICAgICBsaXN0ID0gUG9seW1vcnBoaWNQdXRCeUlkTGlzdDo6ZnJvbShwdXRL
aW5kLCBzdHViSW5mbyk7CiAKQEAgLTE0OTQsMTAgKzE0NjcsMTIgQEAgc3RhdGljIElubGluZUNh
Y2hlQWN0aW9uIHRyeVJlcGF0Y2hJbigKICAgICAKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9
IGV4ZWMtPmNvZGVCbG9jaygpOwogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwotICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gYmFzZS0+c3RydWN0dXJlKCk7CisgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBiYXNlLT5zdHJ1Y3R1cmUoKnZtKTsKICAgICAKICAgICBQcm9wZXJ0eU9mZnNldCBv
ZmZzZXRJZ25vcmVkOwotICAgIHNpemVfdCBjb3VudCA9IG5vcm1hbGl6ZVByb3RvdHlwZUNoYWlu
Rm9yQ2hhaW5BY2Nlc3MoZXhlYywgYmFzZSwgd2FzRm91bmQgPyBzbG90LnNsb3RCYXNlKCkgOiBK
U1ZhbHVlKCksIGlkZW50LCBvZmZzZXRJZ25vcmVkKTsKKyAgICBKU1ZhbHVlIGZvdW5kU2xvdEJh
c2UgPSB3YXNGb3VuZCA/IHNsb3Quc2xvdEJhc2UoKSA6IEpTVmFsdWUoKTsKKyAgICBzaXplX3Qg
Y291bnQgPSAhZm91bmRTbG90QmFzZSB8fCBmb3VuZFNsb3RCYXNlICE9IGJhc2UgPyAKKyAgICAg
ICAgbm9ybWFsaXplUHJvdG90eXBlQ2hhaW5Gb3JDaGFpbkFjY2VzcyhleGVjLCBzdHJ1Y3R1cmUs
IGZvdW5kU2xvdEJhc2UsIGlkZW50LCBvZmZzZXRJZ25vcmVkKSA6IDA7CiAgICAgaWYgKGNvdW50
ID09IEludmFsaWRQcm90b3R5cGVDaGFpbikKICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7
CiAgICAgCmRpZmYgLS1naXQgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmggU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgKaW5kZXggY2IzMzQyMC4uZjM3YWM3YiAx
MDA2NDQKLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIHZvaWQgcmVwYXRjaEdldEJ5SUQoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRl
bnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYsIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lk
IGJ1aWxkR2V0QnlJRExpc3QoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYs
IGNvbnN0IFByb3BlcnR5U2xvdCYsIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIGJ1aWxkR2V0
QnlJRFByb3RvTGlzdChFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJiwgY29u
c3QgUHJvcGVydHlTbG90JiwgU3RydWN0dXJlU3R1YkluZm8mKTsKLXZvaWQgcmVwYXRjaFB1dEJ5
SUQoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFB1dFByb3Bl
cnR5U2xvdCYsIFN0cnVjdHVyZVN0dWJJbmZvJiwgUHV0S2luZCk7Cit2b2lkIHJlcGF0Y2hQdXRC
eUlEKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImLCBj
b25zdCBQdXRQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIFB1dEtpbmQpOwogdm9p
ZCBidWlsZFB1dEJ5SWRMaXN0KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFN0cnVjdHVyZSosIGNvbnN0
IElkZW50aWZpZXImLCBjb25zdCBQdXRQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyYs
IFB1dEtpbmQpOwogdm9pZCByZXBhdGNoSW4oRXhlY1N0YXRlKiwgSlNDZWxsKiwgY29uc3QgSWRl
bnRpZmllciYsIGJvb2wgd2FzRm91bmQsIGNvbnN0IFByb3BlcnR5U2xvdCYsIFN0cnVjdHVyZVN0
dWJJbmZvJik7CiB2b2lkIGxpbmtGb3IoRXhlY1N0YXRlKiwgQ2FsbExpbmtJbmZvJiwgQ29kZUJs
b2NrKiwgSlNGdW5jdGlvbiogY2FsbGVlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIsIENvZGVTcGVj
aWFsaXphdGlvbktpbmQsIFJlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZSk7CmRpZmYgLS1naXQgU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4IGFhYTNlZGYuLjg1YmFjMjYg
MTAwNjQ0Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3Bw
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC02
NjUsNyArNjY1LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV9pZCkK
ICAgICAgICAgICAgICAgICAgICAgLy8gYmVsb3cgbWF5IEdDLgogICAgICAgICAgICAgICAgICAg
ICBwY1swXS51Lm9wY29kZSA9IExMSW50OjpnZXRPcGNvZGUob3BfcHV0X2J5X2lkKTsKIAotICAg
ICAgICAgICAgICAgICAgICBpZiAobm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgYmFzZUNl
bGwpICE9IEludmFsaWRQcm90b3R5cGVDaGFpbikgeworICAgICAgICAgICAgICAgICAgICBpZiAo
bm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgc3RydWN0dXJlKSAhPSBJbnZhbGlkUHJvdG90
eXBlQ2hhaW4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPnBy
ZXZpb3VzSUQoKS0+aXNPYmplY3QoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBwY1s0XS51
LnN0cnVjdHVyZS5zZXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm0sIGNvZGVCbG9j
ay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZS0+cHJldmlvdXNJRCgpKTsKZGlmZiAtLWdp
dCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3Iu
aCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3Iu
aAppbmRleCBkYzRiN2MyLi5lZTE4YWJmIDEwMDY0NAotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oCkBAIC0xNDYsNyArMTQ2LDcg
QEAgaW5saW5lIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciogZ2VuZXJpY1Byb3BlcnR5TmFtZUVu
dW1lcmF0b3IoRXhlY1N0YXRlKiBleGVjLAogICAgIGVsc2UKICAgICAgICAgYmFzZS0+bWV0aG9k
VGFibGUodm0pLT5nZXRQcm9wZXJ0eU5hbWVzKGJhc2UsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEV4
Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwogICAgIAotICAgIG5vcm1hbGl6ZVByb3RvdHlwZUNo
YWluKGV4ZWMsIGJhc2UpOworICAgIG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluKGV4ZWMsIHN0cnVj
dHVyZSk7CiAKICAgICBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IqIGVudW1lcmF0b3IgPSBKU1By
b3BlcnR5TmFtZUVudW1lcmF0b3I6OmNyZWF0ZSh2bSwgYmFzZS0+c3RydWN0dXJlKHZtKSwgcHJv
cGVydHlOYW1lcyk7CiAgICAgZW51bWVyYXRvci0+c2V0Q2FjaGVkUHJvdG90eXBlQ2hhaW4odm0s
IHN0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4oZXhlYykpOwpkaWZmIC0tZ2l0IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcGVyYXRpb25zLmgKaW5kZXggYmQ0NWMyMi4uYmI4MmNiNiAxMDA2NDQKLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCkBAIC0xOTQsNjUgKzE5NCw2NSBAQCBBTFdBWVNf
SU5MSU5FIEpTVmFsdWUganNBZGQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgdjEsIEpT
VmFsdWUgdjIpCiAKICNkZWZpbmUgSW52YWxpZFByb3RvdHlwZUNoYWluIChzdGQ6Om51bWVyaWNf
bGltaXRzPHNpemVfdD46Om1heCgpKQogCi1pbmxpbmUgc2l6ZV90IG5vcm1hbGl6ZVByb3RvdHlw
ZUNoYWluRm9yQ2hhaW5BY2Nlc3MoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgYmFzZSwg
SlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eU9mZnNldCYgc2xvdE9mZnNldCkKK2lubGluZSBzaXplX3Qgbm9ybWFsaXplUHJvdG90eXBlQ2hh
aW5Gb3JDaGFpbkFjY2VzcyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlPZmZzZXQmIHNsb3RPZmZzZXQpCiB7CiAgICAgVk0mIHZtID0gY2FsbEZyYW1lLT52bSgp
OwotICAgIEpTQ2VsbCogY2VsbCA9IGJhc2UuYXNDZWxsKCk7CiAgICAgc2l6ZV90IGNvdW50ID0g
MDsKICAgICAgICAgCi0gICAgd2hpbGUgKCFzbG90QmFzZSB8fCBzbG90QmFzZSAhPSBjZWxsKSB7
Ci0gICAgICAgIGlmIChjZWxsLT5pc1Byb3h5KCkpCisgICAgd2hpbGUgKDEpIHsKKyAgICAgICAg
aWYgKHN0cnVjdHVyZS0+aXNQcm94eSgpKQogICAgICAgICAgICAgcmV0dXJuIEludmFsaWRQcm90
b3R5cGVDaGFpbjsKIAotICAgICAgICBjb25zdCBUeXBlSW5mbyYgdHlwZUluZm8gPSBjZWxsLT5z
dHJ1Y3R1cmUoKS0+dHlwZUluZm8oKTsKKyAgICAgICAgY29uc3QgVHlwZUluZm8mIHR5cGVJbmZv
ID0gc3RydWN0dXJlLT50eXBlSW5mbygpOwogICAgICAgICBpZiAodHlwZUluZm8uaGFzSW1wdXJl
R2V0T3duUHJvcGVydHlTbG90KCkgJiYgIXR5cGVJbmZvLm5ld0ltcHVyZVByb3BlcnR5RmlyZXNX
YXRjaHBvaW50cygpKQogICAgICAgICAgICAgcmV0dXJuIEludmFsaWRQcm90b3R5cGVDaGFpbjsK
ICAgICAgICAgICAgIAotICAgICAgICBKU1ZhbHVlIHYgPSBjZWxsLT5zdHJ1Y3R1cmUoKS0+cHJv
dG90eXBlRm9yTG9va3VwKGNhbGxGcmFtZSk7CisgICAgICAgIEpTVmFsdWUgdiA9IHN0cnVjdHVy
ZS0+cHJvdG90eXBlRm9yTG9va3VwKGNhbGxGcmFtZSk7CiAKLSAgICAgICAgLy8gSWYgd2UgZGlk
bid0IGZpbmQgc2xvdEJhc2UgaW4gYmFzZSdzIHByb3RvdHlwZSBjaGFpbiwgdGhlbiBiYXNlCisg
ICAgICAgIC8vIElmIHdlIGRpZG4ndCBmaW5kIHNsb3RCYXNlIGluIHRoZSBiYXNlJ3MgcHJvdG90
eXBlIGNoYWluLCB0aGVuIHRoZSBiYXNlCiAgICAgICAgIC8vIG11c3QgYmUgYSBwcm94eSBmb3Ig
YW5vdGhlciBvYmplY3QuCiAKICAgICAgICAgaWYgKHYuaXNOdWxsKCkpIHsKICAgICAgICAgICAg
IGlmICghc2xvdEJhc2UpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGNvdW50OworICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgcmV0dXJuIEludmFsaWRQcm90b3R5cGVDaGFpbjsK
ICAgICAgICAgfQogCi0gICAgICAgIGNlbGwgPSB2LmFzQ2VsbCgpOwotCisgICAgICAgIEpTQ2Vs
bCogY2VsbCA9IHYuYXNDZWxsKCk7CisgICAgICAgIHN0cnVjdHVyZSA9IGNlbGwtPnN0cnVjdHVy
ZSh2bSk7CiAgICAgICAgIC8vIFNpbmNlIHdlJ3JlIGFjY2Vzc2luZyBhIHByb3RvdHlwZSBpbiBh
IGxvb3AsIGl0J3MgYSBnb29kIGJldCB0aGF0IGl0CiAgICAgICAgIC8vIHNob3VsZCBub3QgYmUg
dHJlYXRlZCBhcyBhIGRpY3Rpb25hcnkuCi0gICAgICAgIGlmIChjZWxsLT5zdHJ1Y3R1cmUodm0p
LT5pc0RpY3Rpb25hcnkoKSkgewotICAgICAgICAgICAgYXNPYmplY3QoY2VsbCktPmZsYXR0ZW5E
aWN0aW9uYXJ5T2JqZWN0KGNhbGxGcmFtZS0+dm0oKSk7CisgICAgICAgIGlmIChzdHJ1Y3R1cmUt
PmlzRGljdGlvbmFyeSgpKSB7CisgICAgICAgICAgICBzdHJ1Y3R1cmUtPmZsYXR0ZW5EaWN0aW9u
YXJ5U3RydWN0dXJlKHZtLCBhc09iamVjdChjZWxsKSk7CiAgICAgICAgICAgICBpZiAoc2xvdEJh
c2UgPT0gY2VsbCkKLSAgICAgICAgICAgICAgICBzbG90T2Zmc2V0ID0gY2VsbC0+c3RydWN0dXJl
KHZtKS0+Z2V0KGNhbGxGcmFtZS0+dm0oKSwgcHJvcGVydHlOYW1lKTsgCisgICAgICAgICAgICAg
ICAgc2xvdE9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUpOyAKICAgICAg
ICAgfQotICAgICAgICAgICAgCiAgICAgICAgICsrY291bnQ7CisKKyAgICAgICAgaWYgKHNsb3RC
YXNlID09IGNlbGwpCisgICAgICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIAogICAgIHJl
dHVybiBjb3VudDsKIH0KIAotaW5saW5lIHNpemVfdCBub3JtYWxpemVQcm90b3R5cGVDaGFpbihD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNDZWxsKiBiYXNlKQoraW5saW5lIHNpemVfdCBub3JtYWxp
emVQcm90b3R5cGVDaGFpbihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCiB7CiAgICAgVk0mIHZtID0gY2FsbEZyYW1lLT52bSgpOwogICAgIHNpemVfdCBjb3VudCA9
IDA7CiAgICAgd2hpbGUgKDEpIHsKLSAgICAgICAgaWYgKGJhc2UtPmlzUHJveHkoKSkKKyAgICAg
ICAgaWYgKHN0cnVjdHVyZS0+aXNQcm94eSgpKQogICAgICAgICAgICAgcmV0dXJuIEludmFsaWRQ
cm90b3R5cGVDaGFpbjsKLSAgICAgICAgICAgIAotICAgICAgICBKU1ZhbHVlIHYgPSBiYXNlLT5z
dHJ1Y3R1cmUodm0pLT5wcm90b3R5cGVGb3JMb29rdXAoY2FsbEZyYW1lKTsKKyAgICAgICAgSlNW
YWx1ZSB2ID0gc3RydWN0dXJlLT5wcm90b3R5cGVGb3JMb29rdXAoY2FsbEZyYW1lKTsKICAgICAg
ICAgaWYgKHYuaXNOdWxsKCkpCiAgICAgICAgICAgICByZXR1cm4gY291bnQ7CiAKLSAgICAgICAg
YmFzZSA9IHYuYXNDZWxsKCk7Ci0KKyAgICAgICAgSlNDZWxsKiBiYXNlID0gdi5hc0NlbGwoKTsK
KyAgICAgICAgc3RydWN0dXJlID0gYmFzZS0+c3RydWN0dXJlKHZtKTsKICAgICAgICAgLy8gU2lu
Y2Ugd2UncmUgYWNjZXNzaW5nIGEgcHJvdG90eXBlIGluIGEgbG9vcCwgaXQncyBhIGdvb2QgYmV0
IHRoYXQgaXQKICAgICAgICAgLy8gc2hvdWxkIG5vdCBiZSB0cmVhdGVkIGFzIGEgZGljdGlvbmFy
eS4KLSAgICAgICAgaWYgKGJhc2UtPnN0cnVjdHVyZSh2bSktPmlzRGljdGlvbmFyeSgpKQotICAg
ICAgICAgICAgYXNPYmplY3QoYmFzZSktPmZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KGNhbGxGcmFt
ZS0+dm0oKSk7CisgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKQorICAgICAg
ICAgICAgc3RydWN0dXJlLT5mbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZSh2bSwgYXNPYmplY3Qo
YmFzZSkpOwogCiAgICAgICAgICsrY291bnQ7CiAgICAgfQpkaWZmIC0tZ2l0IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9tb3ppbGxhL21vemlsbGEtdGVzdHMueWFtbCBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvbW96aWxsYS9tb3ppbGxhLXRlc3RzLnlhbWwKaW5kZXggZWNlYjNmNy4u
M2RjZjUzNyAxMDA2NDQKLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb3ppbGxhL21v
emlsbGEtdGVzdHMueWFtbAorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vemlsbGEv
bW96aWxsYS10ZXN0cy55YW1sCkBAIC03ODksOCArNzg5LDggQEAKICAgY21kOiBkZWZhdWx0UnVu
TW96aWxsYVRlc3QgOm5vcm1hbCwgIi4uL3NoZWxsLmpzIgogLSBwYXRoOiBlY21hL0xleGljYWxD
b252ZW50aW9ucy83LjcuMy0yLmpzCiAgIGNtZDogZGVmYXVsdFJ1bk1vemlsbGFUZXN0IDpub3Jt
YWwsICIuLi9zaGVsbC5qcyIKLS0gcGF0aDogZWNtYS9MZXhpY2FsQ29udmVudGlvbnMvNy43LjMu
anMKLSAgY21kOiBkZWZhdWx0UnVuTW96aWxsYVRlc3QgOm5vcm1hbCwgIi4uL3NoZWxsLmpzIgor
IyAtIHBhdGg6IGVjbWEvTGV4aWNhbENvbnZlbnRpb25zLzcuNy4zLmpzCisjICAgY21kOiBkZWZh
dWx0UnVuTW96aWxsYVRlc3QgOm5vcm1hbCwgIi4uL3NoZWxsLmpzIgogLSBwYXRoOiBlY21hL0xl
eGljYWxDb252ZW50aW9ucy83LjcuNC5qcwogICBjbWQ6IGRlZmF1bHRSdW5Nb3ppbGxhVGVzdCA6
bm9ybWFsLCAiLi4vc2hlbGwuanMiCiAtIHBhdGg6IGVjbWEvTGV4aWNhbENvbnZlbnRpb25zLzcu
OC4yLW4uanMKZGlmZiAtLWdpdCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3By
b3RvLXNldHRlci5qcyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3Byb3RvLXNl
dHRlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zM2I3YWZhCi0tLSAv
ZGV2L251bGwKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcHJvdG8tc2V0
dGVyLmpzCkBAIC0wLDAgKzEsOCBAQAorLy8gUmVnRXhwLmlucHV0IGlzIGEgaGFuZHkgc2V0dGVy
CisKK3ZhciBvID0ge307CisKK2ZvciAodmFyIGsgPSAwOyBrIDwgOTsgaysrKSB7CisgICAgbyA9
IHtfX3Byb3RvX18gOiBvIH07Cit9CisKZGlmZiAtLWdpdCBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL3B1dC1ieS1pZC1idWlsZC1saXN0LW9yZGVyLXJlY3Vyc2UuanMgU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9wdXQtYnktaWQtYnVpbGQtbGlzdC1vcmRlci1y
ZWN1cnNlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5ZDAyMTkKLS0t
IC9kZXYvbnVsbAorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9wdXQtYnkt
aWQtYnVpbGQtbGlzdC1vcmRlci1yZWN1cnNlLmpzCkBAIC0wLDAgKzEsMzUgQEAKK3ZhciBjb3Vu
dCA9IDA7CisKK2Z1bmN0aW9uIHNldHRlcih2YWx1ZSkgeworICAgIE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eSgKKyAgICAgICAgdGhpcywgImYiLCB7CisgICAgICAgIGVudW1lcmFibGU6IHRydWUsCisg
ICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLAorICAgICAgICAgICAgICAgIHdyaXRh
YmxlOiB0cnVlLAorICAgICAgICAgICAgICAgIHZhbHVlOiAzMgorICAgICAgICAgICAgICAgIH0p
OworICAgIHZhciBvID0gT2JqZWN0LmNyZWF0ZSh0aGlzKTsKKyAgICB2YXIgY3VycmVudENvdW50
ID0gY291bnQrKzsKKyAgICB2YXIgc3RyID0gImZvciAodmFyIGkgPSAiICsgY3VycmVudENvdW50
ICsgIjsgaSA8ICIgKyAoMTAwICsgY3VycmVudENvdW50KSArICI7ICsraSlcbiIKKyAgICAgICAg
ICAgICsgIiAgICBvLmZcbiI7CisgICAgZXZhbChzdHIpOworfQorCitmdW5jdGlvbiBmb28obykg
eworICAgIG8uZiA9IDQyOworfQorCitub0lubGluZShmb28pOworCitmb3IgKHZhciBpID0gMDsg
aSA8IDEwMDA7ICsraSkgeworICAgIHZhciBvID0ge307CisgICAgby5fX2RlZmluZVNldHRlcl9f
KCJmIiwgc2V0dGVyKTsKKworICAgIGZvbyhvKTsKKyAgICBpZiAoby5mICE9IDMyKQorICAgICAg
ICB0aHJvdyAoIkVycm9yIDE6ICIrby5mKTsKKworICAgIGZvbyhvKTsKKyAgICBpZiAoby5mICE9
IDQyKQorICAgICAgICB0aHJvdyAoIkVycm9yIDI6ICIrby5mKTsKK30KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244549</attachid>
            <date>2015-01-13 14:20:14 -0800</date>
            <delta_ts>2015-01-13 14:35:34 -0800</delta_ts>
            <desc>Fixes operationPutByIdOptimizes such that they save the structure before the put</desc>
            <filename>0001-Fixes-operationPutByIdOptimizes-such-that-they-check.patch</filename>
            <type>text/plain</type>
            <size>31235</size>
            <attacher name="Matthew Mirman">mmirman</attacher>
            
              <data encoding="base64">RnJvbSA3YmVkN2IwYmNkYTI0Y2IwMmFjODkxMWMwYWM4NGU2ZjhkZjk0NGNjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXR0aGV3IE1pcm1hbiA8bW1pcm1hbkBhcHBsZS5jb20+CkRh
dGU6IFR1ZSwgMTMgSmFuIDIwMTUgMTQ6MDc6NTUgLTA4MDAKU3ViamVjdDogW1BBVENIXSBGaXhl
cyBvcGVyYXRpb25QdXRCeUlkT3B0aW1pemVzIHN1Y2ggdGhhdCB0aGV5IGNoZWNrIHRoYXQgdGhl
CiBwdXQgZGlkbid0IGNoYW5nZSB0aGUgc3RydWN0dXJlIG9mIHRoZSBvYmplY3Qgd2hvJ3MgcHJv
cGVydHkgYWNjZXNzIGlzIGJlaW5nCiBjYWNoZWQuICBBbHNvIHJlbW92ZXMgdXNlcyBvZiB0aGUg
bmV3IGJhc2UgdmFsdWUgZnJvbSB0aGUgY2FjaGUgZ2VuZXJhdGlvbgogY29kZS4gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzOTUwMAoKUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCgoqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKEpTQzo6b3BlcmF0aW9uUHV0QnlJ
ZFN0cmljdE9wdGltaXplKTogc2F2ZWQgdGhlIHN0cnVjdHVyZSBiZWZvcmUgdGhlIHB1dC4KKEpT
Qzo6b3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdE9wdGltaXplKTogZGl0dG8uCihKU0M6Om9wZXJh
dGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZSk6IGRpdHRvLgooSlNDOjpvcGVyYXRpb25Q
dXRCeUlkRGlyZWN0Tm9uU3RyaWN0T3B0aW1pemUpOiBkaXR0by4KKiBqaXQvUmVwYXRjaC5jcHA6
CihKU0M6OmdlbmVyYXRlQnlJZFN0dWIpOgooSlNDOjp0cnlDYWNoZUdldEJ5SUQpOgooSlNDOjp0
cnlCdWlsZEdldEJ5SURMaXN0KToKKEpTQzo6ZW1pdFB1dFJlcGxhY2VTdHViKToKKEpTQzo6ZW1p
dFB1dFRyYW5zaXRpb25TdHViQW5kR2V0T2xkU3RydWN0dXJlKTogQWRkZWQuCihKU0M6OnRyeUNh
Y2hlUHV0QnlJRCk6CihKU0M6OnJlcGF0Y2hQdXRCeUlEKToKKEpTQzo6dHJ5QnVpbGRQdXRCeUlk
TGlzdCk6CihKU0M6OnRyeVJlcGF0Y2hJbik6CihKU0M6OmVtaXRQdXRUcmFuc2l0aW9uU3R1Yik6
IERlbGV0ZWQuCiogaml0L1JlcGF0Y2guaDoKKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CihK
U0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CiogcnVudGltZS9KU1Byb3BlcnR5TmFt
ZUVudW1lcmF0b3IuaDoKKEpTQzo6Z2VuZXJpY1Byb3BlcnR5TmFtZUVudW1lcmF0b3IpOgoqIHJ1
bnRpbWUvT3BlcmF0aW9ucy5oOgooSlNDOjpub3JtYWxpemVQcm90b3R5cGVDaGFpbkZvckNoYWlu
QWNjZXNzKTogcmVzdHJ1Y3R1cmVkIHRvIG5vdCB1c2UgdGhlIGJhc2UgdmFsdWUuCihKU0M6Om5v
cm1hbGl6ZVByb3RvdHlwZUNoYWluKTogcmVzdHJ1Y3R1cmVkIHRvIG5vdCB1c2UgdGhlIGJhc2Ug
dmFsdWUuCiogdGVzdHMvbW96aWxsYS9tb3ppbGxhLXRlc3RzLnlhbWw6CiogdGVzdHMvc3RyZXNz
L3Byb3RvLXNldHRlci5qczogQWRkZWQuCiogdGVzdHMvc3RyZXNzL3B1dC1ieS1pZC1idWlsZC1s
aXN0LW9yZGVyLXJlY3Vyc2UuanM6IEFkZGVkLgpBZGRlZCB0ZXN0IHRoYXQgZmFpbHMgd2l0aG91
dCB0aGlzIHBhdGNoLgoKZGlmZiAtLWdpdCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9n
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggZTE3YjQzMC4uMzM5NDE1NiAx
MDA2NDQKLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBAQAorMjAxNS0wMS0xMyAgTWF0dGhl
dyBNaXJtYW4gIDxtbWlybWFuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXhlcyBvcGVyYXRpb25Q
dXRCeUlkT3B0aW1pemVzIHN1Y2ggdGhhdCB0aGV5IGNoZWNrIHRoYXQgdGhlIHB1dCBkaWRuJ3QK
KyAgICAgICAgY2hhbmdlIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIG9iamVjdCB3aG8ncyBwcm9wZXJ0
eSBhY2Nlc3MgaXMgYmVpbmcKKyAgICAgICAgY2FjaGVkLiAgQWxzbyByZW1vdmVzIHVzZXMgb2Yg
dGhlIG5ldyBiYXNlIHZhbHVlIGZyb20gdGhlIGNhY2hlIGdlbmVyYXRpb24gY29kZS4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzOTUwMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaml0L0pJVE9wZXJh
dGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpvcGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemUp
OiBzYXZlZCB0aGUgc3RydWN0dXJlIGJlZm9yZSB0aGUgcHV0LgorICAgICAgICAoSlNDOjpvcGVy
YXRpb25QdXRCeUlkTm9uU3RyaWN0T3B0aW1pemUpOiBkaXR0by4KKyAgICAgICAgKEpTQzo6b3Bl
cmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdE9wdGltaXplKTogZGl0dG8uCisgICAgICAgIChKU0M6
Om9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RPcHRpbWl6ZSk6IGRpdHRvLgorICAgICAg
ICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVCeUlkU3R1Yik6Cisg
ICAgICAgIChKU0M6OnRyeUNhY2hlR2V0QnlJRCk6CisgICAgICAgIChKU0M6OnRyeUJ1aWxkR2V0
QnlJRExpc3QpOgorICAgICAgICAoSlNDOjplbWl0UHV0UmVwbGFjZVN0dWIpOgorICAgICAgICAo
SlNDOjplbWl0UHV0VHJhbnNpdGlvblN0dWJBbmRHZXRPbGRTdHJ1Y3R1cmUpOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6dHJ5Q2FjaGVQdXRCeUlEKToKKyAgICAgICAgKEpTQzo6cmVwYXRjaFB1dEJ5
SUQpOgorICAgICAgICAoSlNDOjp0cnlCdWlsZFB1dEJ5SWRMaXN0KToKKyAgICAgICAgKEpTQzo6
dHJ5UmVwYXRjaEluKToKKyAgICAgICAgKEpTQzo6ZW1pdFB1dFRyYW5zaXRpb25TdHViKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBqaXQvUmVwYXRjaC5oOgorICAgICAgICAqIGxsaW50L0xMSW50U2xv
d1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToK
KyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oOgorICAgICAgICAo
SlNDOjpnZW5lcmljUHJvcGVydHlOYW1lRW51bWVyYXRvcik6CisgICAgICAgICogcnVudGltZS9P
cGVyYXRpb25zLmg6CisgICAgICAgIChKU0M6Om5vcm1hbGl6ZVByb3RvdHlwZUNoYWluRm9yQ2hh
aW5BY2Nlc3MpOiByZXN0cnVjdHVyZWQgdG8gbm90IHVzZSB0aGUgYmFzZSB2YWx1ZS4KKyAgICAg
ICAgKEpTQzo6bm9ybWFsaXplUHJvdG90eXBlQ2hhaW4pOiByZXN0cnVjdHVyZWQgdG8gbm90IHVz
ZSB0aGUgYmFzZSB2YWx1ZS4KKyAgICAgICAgKiB0ZXN0cy9tb3ppbGxhL21vemlsbGEtdGVzdHMu
eWFtbDoKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvcHJvdG8tc2V0dGVyLmpzOiBBZGRlZC4KKyAg
ICAgICAgKiB0ZXN0cy9zdHJlc3MvcHV0LWJ5LWlkLWJ1aWxkLWxpc3Qtb3JkZXItcmVjdXJzZS5q
czogQWRkZWQuCisgICAgICAgIEFkZGVkIHRlc3QgdGhhdCBmYWlscyB3aXRob3V0IHRoaXMgcGF0
Y2guCisKIDIwMTUtMDEtMTMgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4K
IAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBSZW1vdmUgdW51c2VkIFJlc2l6ZUltYWdlIGFuZCBE
ZWNvZGVJbWFnZURhdGEgdGltZWxpbmUgZXZlbnRzCmRpZmYgLS1naXQgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuY3BwCmluZGV4IGViM2M4OTUuLjM3YWE0NWQgMTAwNjQ0Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0yNzMsMTQgKzI3MywxNSBAQCB2b2lkIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplKEV4ZWNTdGF0ZSogZXhl
YywgU3RydWN0dXJlU3R1YgogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKTsKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkQmFzZSk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCB0cnVlLCBleGVj
LT5jb2RlQmxvY2soKS0+cHV0QnlJZENvbnRleHQoKSk7Ci0gICAgCisKKyAgICBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSA9IGJhc2VWYWx1ZS5pc0NlbGwoKSA/IGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3Ry
dWN0dXJlKCp2bSkgOiBudWxscHRyOwogICAgIGJhc2VWYWx1ZS5wdXQoZXhlYywgaWRlbnQsIHZh
bHVlLCBzbG90KTsKICAgICAKICAgICBpZiAoYWNjZXNzVHlwZSAhPSBzdGF0aWNfY2FzdDxBY2Nl
c3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAg
ICBpZiAoc3R1YkluZm8tPnNlZW4pCi0gICAgICAgIHJlcGF0Y2hQdXRCeUlEKGV4ZWMsIGJhc2VW
YWx1ZSwgaWRlbnQsIHNsb3QsICpzdHViSW5mbywgTm90RGlyZWN0KTsKKyAgICAgICAgcmVwYXRj
aFB1dEJ5SUQoZXhlYywgYmFzZVZhbHVlLCBzdHJ1Y3R1cmUsIGlkZW50LCBzbG90LCAqc3R1Yklu
Zm8sIE5vdERpcmVjdCk7CiAgICAgZWxzZQogICAgICAgICBzdHViSW5mby0+c2VlbiA9IHRydWU7
CiB9CkBAIC0yOTYsMTQgKzI5NywxNSBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0
QnlJZE5vblN0cmljdE9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlUwogICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1ZhbHVl
IGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CiAgICAgUHV0UHJvcGVy
dHlTbG90IHNsb3QoYmFzZVZhbHVlLCBmYWxzZSwgZXhlYy0+Y29kZUJsb2NrKCktPnB1dEJ5SWRD
b250ZXh0KCkpOwotICAgIAorCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlVmFsdWUu
aXNDZWxsKCkgPyBiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSgqdm0pIDogbnVsbHB0cjsg
ICAgCiAgICAgYmFzZVZhbHVlLnB1dChleGVjLCBpZGVudCwgdmFsdWUsIHNsb3QpOwogICAgIAog
ICAgIGlmIChhY2Nlc3NUeXBlICE9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5h
Y2Nlc3NUeXBlKSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGlmIChzdHViSW5mby0+c2Vl
bikKLSAgICAgICAgcmVwYXRjaFB1dEJ5SUQoZXhlYywgYmFzZVZhbHVlLCBpZGVudCwgc2xvdCwg
KnN0dWJJbmZvLCBOb3REaXJlY3QpOworICAgICAgICByZXBhdGNoUHV0QnlJRChleGVjLCBiYXNl
VmFsdWUsIHN0cnVjdHVyZSwgaWRlbnQsIHNsb3QsICpzdHViSW5mbywgTm90RGlyZWN0KTsKICAg
ICBlbHNlCiAgICAgICAgIHN0dWJJbmZvLT5zZWVuID0gdHJ1ZTsKIH0KQEAgLTMyMCwxMyArMzIy
LDE0IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0
aW1pemUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1CiAgICAgSlNPYmplY3QqIGJhc2VPYmplY3Qg
PSBhc09iamVjdChKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpKTsKICAgICBQdXRQcm9wZXJ0
eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCB0cnVlLCBleGVjLT5jb2RlQmxvY2soKS0+cHV0QnlJZENv
bnRleHQoKSk7CiAgICAgCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlT2JqZWN0LT5z
dHJ1Y3R1cmUoKnZtKTsKICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgaWRl
bnQsIHZhbHVlLCBzbG90KTsKICAgICAKICAgICBpZiAoYWNjZXNzVHlwZSAhPSBzdGF0aWNfY2Fz
dDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSkpCiAgICAgICAgIHJldHVybjsKICAg
ICAKICAgICBpZiAoc3R1YkluZm8tPnNlZW4pCi0gICAgICAgIHJlcGF0Y2hQdXRCeUlEKGV4ZWMs
IGJhc2VPYmplY3QsIGlkZW50LCBzbG90LCAqc3R1YkluZm8sIERpcmVjdCk7CisgICAgICAgIHJl
cGF0Y2hQdXRCeUlEKGV4ZWMsIGJhc2VPYmplY3QsIHN0cnVjdHVyZSwgaWRlbnQsIHNsb3QsICpz
dHViSW5mbywgRGlyZWN0KTsKICAgICBlbHNlCiAgICAgICAgIHN0dWJJbmZvLT5zZWVuID0gdHJ1
ZTsKIH0KQEAgLTM0MywxMyArMzQ2LDE0IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Q
dXRCeUlkRGlyZWN0Tm9uU3RyaWN0T3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1CiAgICAg
SlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJh
c2UpKTsKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBmYWxzZSwgZXhlYy0+
Y29kZUJsb2NrKCktPnB1dEJ5SWRDb250ZXh0KCkpOwogICAgIAorICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gYmFzZU9iamVjdC0+c3RydWN0dXJlKCp2bSk7CiAgICAgYmFzZU9iamVjdC0+cHV0
RGlyZWN0KGV4ZWMtPnZtKCksIGlkZW50LCB2YWx1ZSwgc2xvdCk7CiAgICAgCiAgICAgaWYgKGFj
Y2Vzc1R5cGUgIT0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUp
KQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgaWYgKHN0dWJJbmZvLT5zZWVuKQotICAgICAg
ICByZXBhdGNoUHV0QnlJRChleGVjLCBiYXNlT2JqZWN0LCBpZGVudCwgc2xvdCwgKnN0dWJJbmZv
LCBEaXJlY3QpOworICAgICAgICByZXBhdGNoUHV0QnlJRChleGVjLCBiYXNlT2JqZWN0LCBzdHJ1
Y3R1cmUsIGlkZW50LCBzbG90LCAqc3R1YkluZm8sIERpcmVjdCk7CiAgICAgZWxzZQogICAgICAg
ICBzdHViSW5mby0+c2VlbiA9IHRydWU7CiB9CmRpZmYgLS1naXQgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9SZXBhdGNoLmNwcCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3Bw
CmluZGV4IGZkNmEzNzQuLjc2NmRlM2IgMTAwNjQ0Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1JlcGF0Y2guY3BwCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3Bw
CkBAIC0yOTcsNiArMjk3LDcgQEAgc3RhdGljIHZvaWQgZ2VuZXJhdGVCeUlkU3R1YigKICAgICBQ
cm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBib29sIGxvYWRUYXJn
ZXRGcm9tUHJveHksIFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRTZXQsCiAgICAgQ29kZUxvY2F0
aW9uTGFiZWwgc3VjY2Vzc0xhYmVsLCBDb2RlTG9jYXRpb25MYWJlbCBzbG93Q2FzZUxhYmVsLCBS
ZWZQdHI8SklUU3R1YlJvdXRpbmU+JiBzdHViUm91dGluZSkKIHsKKwogICAgIFZNKiB2bSA9ICZl
eGVjLT52bSgpOwogICAgIEdQUlJlZyBiYXNlR1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHVi
SW5mby5wYXRjaC5iYXNlR1BSKTsKICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSBKU1ZhbHVl
UmVncygKQEAgLTM0OCw3ICszNDksNyBAQCBzdGF0aWMgdm9pZCBnZW5lcmF0ZUJ5SWRTdHViKAog
ICAgIGlmICh3YXRjaHBvaW50U2V0KQogICAgICAgICB3YXRjaHBvaW50U2V0LT5hZGQoc3R1Yklu
Zm8uYWRkV2F0Y2hwb2ludChjb2RlQmxvY2spKTsKIAotICAgIFN0cnVjdHVyZSogY3VyclN0cnVj
dHVyZSA9IHN0cnVjdHVyZTsKKyAgICBTdHJ1Y3R1cmUqIGN1cnJTdHJ1Y3R1cmUgPSBzdHJ1Y3R1
cmU7IAogICAgIEpTT2JqZWN0KiBwcm90b09iamVjdCA9IDA7CiAgICAgaWYgKGNoYWluKSB7CiAg
ICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+KiBpdCA9IGNoYWluLT5oZWFkKCk7CkBAIC03
NDcsNyArNzQ4LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlR2V0QnlJRChF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBjb24KICAgICAgICAgcmV0dXJuIEdp
dmVVcE9uQ2FjaGU7CiAKICAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgp
OwotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSgpOworICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSgqdm0pOwogCiAgICAg
SW5saW5lQ2FjaGVBY3Rpb24gYWN0aW9uID0gYWN0aW9uRm9yQ2VsbCgqdm0sIGJhc2VDZWxsKTsK
ICAgICBpZiAoYWN0aW9uICE9IEF0dGVtcHRUb0NhY2hlKQpAQCAtODMyLDEwICs4MzMsMTAgQEAg
c3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUJ1aWxkR2V0QnlJRExpc3QoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwKICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hl
OwogCiAgICAgICAgIGlmIChzbG90LmlzVW5zZXQoKSkKLSAgICAgICAgICAgIGNvdW50ID0gbm9y
bWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgYmFzZUNlbGwpOworICAgICAgICAgICAgY291bnQg
PSBub3JtYWxpemVQcm90b3R5cGVDaGFpbihleGVjLCBzdHJ1Y3R1cmUpOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBjb3VudCA9IG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluRm9yQ2hhaW5BY2Nl
c3MoCi0gICAgICAgICAgICAgICAgZXhlYywgYmFzZVZhbHVlLCBzbG90LnNsb3RCYXNlKCksIGlk
ZW50LCBvZmZzZXQpOworICAgICAgICAgICAgICAgIGV4ZWMsIHN0cnVjdHVyZSwgc2xvdC5zbG90
QmFzZSgpLCBpZGVudCwgb2Zmc2V0KTsKICAgICAgICAgaWYgKGNvdW50ID09IEludmFsaWRQcm90
b3R5cGVDaGFpbikKICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogICAgICAgICBw
cm90b3R5cGVDaGFpbiA9IHN0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4oZXhlYyk7CkBAIC05MDcs
MTEgKzkwOCw5IEBAIHN0YXRpYyBWX0pJVE9wZXJhdGlvbl9FU3NpSkpJIGFwcHJvcHJpYXRlTGlz
dEJ1aWxkaW5nUHV0QnlJZEZ1bmN0aW9uKGNvbnN0IFB1dFByCiAKIHN0YXRpYyB2b2lkIGVtaXRQ
dXRSZXBsYWNlU3R1YigKICAgICBFeGVjU3RhdGUqIGV4ZWMsCi0gICAgSlNWYWx1ZSwKICAgICBj
b25zdCBJZGVudGlmaWVyJiwKICAgICBjb25zdCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QsCiAgICAg
U3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLAotICAgIFB1dEtpbmQsCiAgICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsCiAgICAgQ29kZUxvY2F0aW9uTGFiZWwgZmFpbHVyZUxhYmVsLAogICAgIFJl
ZlB0cjxKSVRTdHViUm91dGluZT4mIHN0dWJSb3V0aW5lKQpAQCAtOTg1LDIwICs5ODQsNDQgQEAg
c3RhdGljIHZvaWQgZW1pdFB1dFJlcGxhY2VTdHViKAogICAgICAgICAgICAgICAgIHN0dWJJbmZv
LnBhdGNoLmRlbHRhQ2FsbFRvRG9uZSkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogfQogCi1zdGF0
aWMgdm9pZCBlbWl0UHV0VHJhbnNpdGlvblN0dWIoCi0gICAgRXhlY1N0YXRlKiBleGVjLAotICAg
IEpTVmFsdWUsCi0gICAgY29uc3QgSWRlbnRpZmllciYsCi0gICAgY29uc3QgUHV0UHJvcGVydHlT
bG90JiBzbG90LAotICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywKLSAgICBQdXRLaW5k
IHB1dEtpbmQsCi0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsCi0gICAgU3RydWN0dXJlKiBvbGRT
dHJ1Y3R1cmUsCi0gICAgU3RydWN0dXJlQ2hhaW4qIHByb3RvdHlwZUNoYWluLAotICAgIENvZGVM
b2NhdGlvbkxhYmVsIGZhaWx1cmVMYWJlbCwKLSAgICBSZWZQdHI8SklUU3R1YlJvdXRpbmU+JiBz
dHViUm91dGluZSkKK3N0YXRpYyBTdHJ1Y3R1cmUqIGVtaXRQdXRUcmFuc2l0aW9uU3R1YkFuZEdl
dE9sZFN0cnVjdHVyZShFeGVjU3RhdGUqIGV4ZWMsIFZNKiB2bSwgU3RydWN0dXJlKiYgc3RydWN0
dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgCisgICAgY29uc3QgUHV0UHJvcGVydHlTbG90
JiBzbG90LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIFB1dEtpbmQgcHV0S2luZCkKIHsK
LSAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKKyAgICBQcm9wZXJ0eU5hbWUgcG5hbWUoaWRlbnQp
OworICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlID0gc3RydWN0dXJlOworICAgIGlmICghb2xk
U3RydWN0dXJlLT5pc09iamVjdCgpIHx8IG9sZFN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkgfHwg
cG5hbWUuYXNJbmRleCgpICE9IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRleCkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICBQcm9wZXJ0eU9mZnNldCBwcm9wZXJ0eU9mZnNldDsKKyAgICBz
dHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1
Y3R1cmVDb25jdXJyZW50bHkob2xkU3RydWN0dXJlLCBpZGVudC5pbXBsKCksIDAsIHByb3BlcnR5
T2Zmc2V0KTsKKworICAgIGlmICghc3RydWN0dXJlIHx8ICFzdHJ1Y3R1cmUtPmlzT2JqZWN0KCkg
fHwgc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSB8fCAhc3RydWN0dXJlLT5wcm9wZXJ0eUFjY2Vz
c2VzQXJlQ2FjaGVhYmxlKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgLy8gU2tp
cCBvcHRpbWl6aW5nIHRoZSBjYXNlIHdoZXJlIHdlIG5lZWQgYSByZWFsbG9jLCBpZiB3ZSBkb24n
dCBoYXZlCisgICAgLy8gZW5vdWdoIHJlZ2lzdGVycyB0byBtYWtlIGl0IGhhcHBlbi4KKyAgICBp
ZiAoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgPCA2CisgICAgICAgICYmIG9sZFN0cnVjdHVy
ZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAhPSBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkK
KyAgICAgICAgJiYgb2xkU3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKSB7CisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIC8vIFNraXAgb3B0aW1pemluZyB0aGUgY2Fz
ZSB3aGVyZSB3ZSBuZWVkIHJlYWxsb2MsIGFuZCB0aGUgc3RydWN0dXJlIGhhcworICAgIC8vIGlu
ZGV4aW5nIHN0b3JhZ2UuCisgICAgLy8gRklYTUU6IFdlIHNob3VsZG4ndCBza2lwIHRoaXMhIElt
cGxlbWVudCBpdCEKKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTMwOTE0CisgICAgaWYgKG9sZFN0cnVjdHVyZS0+Y291bGRIYXZlSW5kZXhpbmdIZWFkZXIo
KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAobm9ybWFsaXplUHJvdG90eXBl
Q2hhaW4oZXhlYywgc3RydWN0dXJlKSA9PSBJbnZhbGlkUHJvdG90eXBlQ2hhaW4pCisgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgU3RydWN0dXJlQ2hhaW4qIHByb3RvdHlwZUNoYWluID0g
c3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihleGVjKTsKKworICAgIC8vIGVtaXRQdXRUcmFuc2l0
aW9uU3R1YgorCisgICAgQ29kZUxvY2F0aW9uTGFiZWwgZmFpbHVyZUxhYmVsID0gc3R1YkluZm8u
Y2FsbFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGVsdGFDYWxs
VG9TbG93Q2FzZSk7CisgICAgUmVmUHRyPEpJVFN0dWJSb3V0aW5lPiYgc3R1YlJvdXRpbmUgPSBz
dHViSW5mby5zdHViUm91dGluZTsKIAogICAgIEdQUlJlZyBiYXNlR1BSID0gc3RhdGljX2Nhc3Q8
R1BSUmVnPihzdHViSW5mby5wYXRjaC5iYXNlR1BSKTsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQpA
QCAtMTIyMiw5ICsxMjQ1LDExIEBAIHN0YXRpYyB2b2lkIGVtaXRQdXRUcmFuc2l0aW9uU3R1YigK
ICAgICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKSwKICAgICAg
ICAgICAgIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAhPSBvbGRTdHJ1Y3R1cmUtPm91
dE9mTGluZUNhcGFjaXR5KCksCiAgICAgICAgICAgICBzdHJ1Y3R1cmUpOworCisgICAgcmV0dXJu
IG9sZFN0cnVjdHVyZTsKIH0KIAotc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0
QnlJRChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBjb25zdCBJZGVudGlmaWVy
JiBpZGVudCwgY29uc3QgUHV0UHJvcGVydHlTbG90JiBzbG90LCBTdHJ1Y3R1cmVTdHViSW5mbyYg
c3R1YkluZm8sIFB1dEtpbmQgcHV0S2luZCkKK3N0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlD
YWNoZVB1dEJ5SUQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQdXRQcm9wZXJ0eVNs
b3QmIHNsb3QsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgUHV0S2luZCBwdXRLaW5kKQog
ewogICAgIGlmIChPcHRpb25zOjpmb3JjZUlDRmFpbHVyZSgpKQogICAgICAgICByZXR1cm4gR2l2
ZVVwT25DYWNoZTsKQEAgLTEyMzQsNDYgKzEyNTksMjMgQEAgc3RhdGljIElubGluZUNhY2hlQWN0
aW9uIHRyeUNhY2hlUHV0QnlJRChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBj
b24KIAogICAgIGlmICghYmFzZVZhbHVlLmlzQ2VsbCgpKQogICAgICAgICByZXR1cm4gR2l2ZVVw
T25DYWNoZTsKLSAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOwotICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSgqdm0pOwotICAgIFN0
cnVjdHVyZSogb2xkU3RydWN0dXJlID0gc3RydWN0dXJlLT5wcmV2aW91c0lEKCk7CiAgICAgCiAg
ICAgaWYgKCFzbG90LmlzQ2FjaGVhYmxlUHV0KCkgJiYgIXNsb3QuaXNDYWNoZWFibGVDdXN0b20o
KSAmJiAhc2xvdC5pc0NhY2hlYWJsZVNldHRlcigpKQogICAgICAgICByZXR1cm4gR2l2ZVVwT25D
YWNoZTsKKwogICAgIGlmICghc3RydWN0dXJlLT5wcm9wZXJ0eUFjY2Vzc2VzQXJlQ2FjaGVhYmxl
KCkpCiAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogCiAgICAgLy8gT3B0aW1pemUgc2Vs
ZiBhY2Nlc3MuCiAgICAgaWYgKHNsb3QuYmFzZSgpID09IGJhc2VWYWx1ZSAmJiBzbG90LmlzQ2Fj
aGVhYmxlUHV0KCkpIHsKICAgICAgICAgaWYgKHNsb3QudHlwZSgpID09IFB1dFByb3BlcnR5U2xv
dDo6TmV3UHJvcGVydHkpIHsKLSAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmlzRGljdGlvbmFy
eSgpKQotICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwotICAgICAgICAgICAg
Ci0gICAgICAgICAgICAvLyBTa2lwIG9wdGltaXppbmcgdGhlIGNhc2Ugd2hlcmUgd2UgbmVlZCBh
IHJlYWxsb2MsIGlmIHdlIGRvbid0IGhhdmUKLSAgICAgICAgICAgIC8vIGVub3VnaCByZWdpc3Rl
cnMgdG8gbWFrZSBpdCBoYXBwZW4uCi0gICAgICAgICAgICBpZiAoR1BSSW5mbzo6bnVtYmVyT2ZS
ZWdpc3RlcnMgPCA2Ci0gICAgICAgICAgICAgICAgJiYgb2xkU3RydWN0dXJlLT5vdXRPZkxpbmVD
YXBhY2l0eSgpICE9IHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKQotICAgICAgICAgICAg
ICAgICYmIG9sZFN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgLy8gU2tp
cCBvcHRpbWl6aW5nIHRoZSBjYXNlIHdoZXJlIHdlIG5lZWQgcmVhbGxvYywgYW5kIHRoZSBzdHJ1
Y3R1cmUgaGFzCi0gICAgICAgICAgICAvLyBpbmRleGluZyBzdG9yYWdlLgotICAgICAgICAgICAg
Ly8gRklYTUU6IFdlIHNob3VsZG4ndCBza2lwIHRoaXMhICBJbXBsZW1lbnQgaXQhCi0gICAgICAg
ICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwOTE0Ci0g
ICAgICAgICAgICBpZiAob2xkU3RydWN0dXJlLT5jb3VsZEhhdmVJbmRleGluZ0hlYWRlcigpKQot
ICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwotICAgICAgICAgICAgCi0gICAg
ICAgICAgICBpZiAobm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgYmFzZUNlbGwpID09IElu
dmFsaWRQcm90b3R5cGVDaGFpbikKKworICAgICAgICAgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1
cmUgPSBlbWl0UHV0VHJhbnNpdGlvblN0dWJBbmRHZXRPbGRTdHJ1Y3R1cmUoZXhlYywgdm0sIHN0
cnVjdHVyZSwgaWRlbnQsIHNsb3QsIHN0dWJJbmZvLCBwdXRLaW5kKTsKKyAgICAgICAgICAgIGlm
ICghb2xkU3RydWN0dXJlKQogICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwog
ICAgICAgICAgICAgCiAgICAgICAgICAgICBTdHJ1Y3R1cmVDaGFpbiogcHJvdG90eXBlQ2hhaW4g
PSBzdHJ1Y3R1cmUtPnByb3RvdHlwZUNoYWluKGV4ZWMpOwogICAgICAgICAgICAgCi0gICAgICAg
ICAgICBlbWl0UHV0VHJhbnNpdGlvblN0dWIoCi0gICAgICAgICAgICAgICAgZXhlYywgYmFzZVZh
bHVlLCBpZGVudCwgc2xvdCwgc3R1YkluZm8sIHB1dEtpbmQsCi0gICAgICAgICAgICAgICAgc3Ry
dWN0dXJlLCBvbGRTdHJ1Y3R1cmUsIHByb3RvdHlwZUNoYWluLAotICAgICAgICAgICAgICAgIHN0
dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRl
bHRhQ2FsbFRvU2xvd0Nhc2UpLAotICAgICAgICAgICAgICAgIHN0dWJJbmZvLnN0dWJSb3V0aW5l
KTsKLSAgICAgICAgICAgIAogICAgICAgICAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVy
KGNvZGVCbG9jayk7CiAgICAgICAgICAgICByZXBhdGNoQnVmZmVyLnJlbGluaygKICAgICAgICAg
ICAgICAgICBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uanVtcEF0T2Zmc2V0KApAQCAtMTI5
NCw2ICsxMjk2LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRChF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBjb24KICAgICAgICAgc3R1YkluZm8u
aW5pdFB1dEJ5SWRSZXBsYWNlKCp2bSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3Ry
dWN0dXJlKTsKICAgICAgICAgcmV0dXJuIFJldHJ5Q2FjaGVMYXRlcjsKICAgICB9CisKICAgICBp
ZiAoKHNsb3QuaXNDYWNoZWFibGVDdXN0b20oKSB8fCBzbG90LmlzQ2FjaGVhYmxlU2V0dGVyKCkp
CiAgICAgICAgICYmIHN0dWJJbmZvLnBhdGNoLnNwaWxsTW9kZSA9PSBEb250U3BpbGwpIHsKICAg
ICAgICAgUmVmUHRyPEpJVFN0dWJSb3V0aW5lPiBzdHViUm91dGluZTsKQEAgLTEzMDIsMTAgKzEz
MDUsOSBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFsdWUsIGNvbgogICAgICAgICBQcm9wZXJ0eU9mZnNldCBv
ZmZzZXQgPSBzbG90LmNhY2hlZE9mZnNldCgpOwogICAgICAgICBzaXplX3QgY291bnQgPSAwOwog
ICAgICAgICBpZiAoYmFzZVZhbHVlICE9IHNsb3QuYmFzZSgpKSB7Ci0gICAgICAgICAgICBjb3Vu
dCA9IG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluRm9yQ2hhaW5BY2Nlc3MoZXhlYywgYmFzZUNlbGws
IHNsb3QuYmFzZSgpLCBpZGVudCwgb2Zmc2V0KTsKKyAgICAgICAgICAgIGNvdW50ID0gbm9ybWFs
aXplUHJvdG90eXBlQ2hhaW5Gb3JDaGFpbkFjY2VzcyhleGVjLCBzdHJ1Y3R1cmUsIHNsb3QuYmFz
ZSgpLCBpZGVudCwgb2Zmc2V0KTsKICAgICAgICAgICAgIGlmIChjb3VudCA9PSBJbnZhbGlkUHJv
dG90eXBlQ2hhaW4pCiAgICAgICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7Ci0KICAg
ICAgICAgICAgIHByb3RvdHlwZUNoYWluID0gc3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihleGVj
KTsKICAgICAgICAgfQogICAgICAgICBQb2x5bW9ycGhpY1B1dEJ5SWRMaXN0KiBsaXN0OwpAQCAt
MTMzMywxMSArMTMzNSwxMSBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRC
eUlEKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFsdWUsIGNvbgogICAgIHJldHVybiBH
aXZlVXBPbkNhY2hlOwogfQogCi12b2lkIHJlcGF0Y2hQdXRCeUlEKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBiYXNlVmFsdWUsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgY29uc3Qg
UHV0UHJvcGVydHlTbG90JiBzbG90LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIFB1dEtp
bmQgcHV0S2luZCkKK3ZvaWQgcmVwYXRjaFB1dEJ5SUQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
IGJhc2VWYWx1ZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgY29uc3QgUHV0UHJvcGVydHlTbG90JiBzbG90LCBTdHJ1Y3R1cmVTdHViSW5mbyYg
c3R1YkluZm8sIFB1dEtpbmQgcHV0S2luZCkKIHsKICAgICBHQ1NhZmVDb25jdXJyZW50SklUTG9j
a2VyIGxvY2tlcihleGVjLT5jb2RlQmxvY2soKS0+bV9sb2NrLCBleGVjLT52bSgpLmhlYXApOwog
ICAgIAotICAgIGlmICh0cnlDYWNoZVB1dEJ5SUQoZXhlYywgYmFzZVZhbHVlLCBwcm9wZXJ0eU5h
bWUsIHNsb3QsIHN0dWJJbmZvLCBwdXRLaW5kKSA9PSBHaXZlVXBPbkNhY2hlKQorICAgIGlmICh0
cnlDYWNoZVB1dEJ5SUQoZXhlYywgYmFzZVZhbHVlLCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwg
c2xvdCwgc3R1YkluZm8sIHB1dEtpbmQpID09IEdpdmVVcE9uQ2FjaGUpCiAgICAgICAgIHJlcGF0
Y2hDYWxsKGV4ZWMtPmNvZGVCbG9jaygpLCBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24sIGFw
cHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRGdW5jdGlvbihzbG90LCBwdXRLaW5kKSk7CiB9CiAKQEAg
LTEzNDYsMTYgKzEzNDgsOSBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5QnVpbGRQdXRC
eUlkTGlzdChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLAogICAgIENvZGVCbG9j
ayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZt
KCk7CiAKLSAgICBpZiAoIWJhc2VWYWx1ZS5pc0NlbGwoKSB8fCAhc3RydWN0dXJlKQotICAgICAg
ICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKLSAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbHVl
LmFzQ2VsbCgpOwotCi0gICAgaWYgKGJhc2VDZWxsLT5zdHJ1Y3R1cmUoKnZtKS0+aWQoKSAhPSBz
dHJ1Y3R1cmUtPmlkKCkpCisgICAgaWYgKCFiYXNlVmFsdWUuaXNDZWxsKCkpCiAgICAgICAgIHJl
dHVybiBHaXZlVXBPbkNhY2hlOwogCi0gICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSBzdHJ1
Y3R1cmUtPnByZXZpb3VzSUQoKTsKLSAgICAKLSAgICAKICAgICBpZiAoIXNsb3QuaXNDYWNoZWFi
bGVQdXQoKSAmJiAhc2xvdC5pc0NhY2hlYWJsZUN1c3RvbSgpICYmICFzbG90LmlzQ2FjaGVhYmxl
U2V0dGVyKCkpCiAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogCkBAIC0xMzY4LDQyICsx
MzYzLDIzIEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlCdWlsZFB1dEJ5SWRMaXN0KEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFsdWUsCiAgICAgICAgIFJlZlB0cjxKSVRTdHVi
Um91dGluZT4gc3R1YlJvdXRpbmU7CiAgICAgICAgIAogICAgICAgICBpZiAoc2xvdC50eXBlKCkg
PT0gUHV0UHJvcGVydHlTbG90OjpOZXdQcm9wZXJ0eSkgewotICAgICAgICAgICAgaWYgKHN0cnVj
dHVyZS0+aXNEaWN0aW9uYXJ5KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2Fj
aGU7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIC8vIFNraXAgb3B0aW1pemluZyB0aGUgY2Fz
ZSB3aGVyZSB3ZSBuZWVkIGEgcmVhbGxvYywgaWYgd2UgZG9uJ3QgaGF2ZQotICAgICAgICAgICAg
Ly8gZW5vdWdoIHJlZ2lzdGVycyB0byBtYWtlIGl0IGhhcHBlbi4KLSAgICAgICAgICAgIGlmIChH
UFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyA8IDYKLSAgICAgICAgICAgICAgICAmJiBvbGRTdHJ1
Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgIT0gc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0
eSgpCi0gICAgICAgICAgICAgICAgJiYgb2xkU3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgp
KQotICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwotICAgICAgICAgICAgCi0g
ICAgICAgICAgICAvLyBTa2lwIG9wdGltaXppbmcgdGhlIGNhc2Ugd2hlcmUgd2UgbmVlZCByZWFs
bG9jLCBhbmQgdGhlIHN0cnVjdHVyZSBoYXMKLSAgICAgICAgICAgIC8vIGluZGV4aW5nIHN0b3Jh
Z2UuCi0gICAgICAgICAgICBpZiAob2xkU3RydWN0dXJlLT5jb3VsZEhhdmVJbmRleGluZ0hlYWRl
cigpKQotICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwotICAgICAgICAgICAg
Ci0gICAgICAgICAgICBpZiAobm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgYmFzZUNlbGwp
ID09IEludmFsaWRQcm90b3R5cGVDaGFpbikKLSAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVw
T25DYWNoZTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgU3RydWN0dXJlQ2hhaW4qIHByb3Rv
dHlwZUNoYWluID0gc3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihleGVjKTsKLSAgICAgICAgICAg
IAogICAgICAgICAgICAgbGlzdCA9IFBvbHltb3JwaGljUHV0QnlJZExpc3Q6OmZyb20ocHV0S2lu
ZCwgc3R1YkluZm8pOwogICAgICAgICAgICAgaWYgKGxpc3QtPmlzRnVsbCgpKQogICAgICAgICAg
ICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOyAvLyBXaWxsIGdldCBoZXJlIGR1ZSB0byByZWN1
cnNpb24uCi0gICAgICAgICAgICAKLSAgICAgICAgICAgIC8vIFdlJ3JlIG5vdyBjb21taXR0ZWQg
dG8gY3JlYXRpbmcgdGhlIHN0dWIuIE1vZ3JpZnkgdGhlIG1ldGEtZGF0YSBhY2NvcmRpbmdseS4K
LSAgICAgICAgICAgIGVtaXRQdXRUcmFuc2l0aW9uU3R1YigKLSAgICAgICAgICAgICAgICBleGVj
LCBiYXNlVmFsdWUsIHByb3BlcnR5TmFtZSwgc2xvdCwgc3R1YkluZm8sIHB1dEtpbmQsCi0gICAg
ICAgICAgICAgICAgc3RydWN0dXJlLCBvbGRTdHJ1Y3R1cmUsIHByb3RvdHlwZUNoYWluLAotICAg
ICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsKGxpc3QtPmN1cnJlbnRTbG93UGF0aFRhcmdl
dCgpKSwKLSAgICAgICAgICAgICAgICBzdHViUm91dGluZSk7Ci0gICAgICAgICAgICAKKworICAg
ICAgICAgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSBlbWl0UHV0VHJhbnNpdGlvblN0dWJB
bmRHZXRPbGRTdHJ1Y3R1cmUoZXhlYywgdm0sIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBzbG90
LCBzdHViSW5mbywgcHV0S2luZCk7CisKKyAgICAgICAgICAgIGlmICghb2xkU3RydWN0dXJlKSAK
KyAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKworICAgICAgICAgICAgU3Ry
dWN0dXJlQ2hhaW4qIHByb3RvdHlwZUNoYWluID0gc3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihl
eGVjKTsKKyAgICAgICAgICAgIHN0dWJSb3V0aW5lID0gc3R1YkluZm8uc3R1YlJvdXRpbmU7CiAg
ICAgICAgICAgICBsaXN0LT5hZGRBY2Nlc3MoCiAgICAgICAgICAgICAgICAgUHV0QnlJZEFjY2Vz
czo6dHJhbnNpdGlvbigKICAgICAgICAgICAgICAgICAgICAgKnZtLCBjb2RlQmxvY2stPm93bmVy
RXhlY3V0YWJsZSgpLAogICAgICAgICAgICAgICAgICAgICBvbGRTdHJ1Y3R1cmUsIHN0cnVjdHVy
ZSwgcHJvdG90eXBlQ2hhaW4sCiAgICAgICAgICAgICAgICAgICAgIHN0dWJSb3V0aW5lKSk7CisK
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGxpc3QgPSBQb2x5bW9ycGhpY1B1dEJ5SWRM
aXN0Ojpmcm9tKHB1dEtpbmQsIHN0dWJJbmZvKTsKICAgICAgICAgICAgIGlmIChsaXN0LT5pc0Z1
bGwoKSkKQEAgLTE0MTMsMjEgKzEzODksMTkgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRy
eUJ1aWxkUHV0QnlJZExpc3QoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgLy8gV2UncmUgbm93IGNvbW1pdHRlZCB0byBjcmVhdGlu
ZyB0aGUgc3R1Yi4gTW9ncmlmeSB0aGUgbWV0YS1kYXRhIGFjY29yZGluZ2x5LgogICAgICAgICAg
ICAgZW1pdFB1dFJlcGxhY2VTdHViKAotICAgICAgICAgICAgICAgIGV4ZWMsIGJhc2VWYWx1ZSwg
cHJvcGVydHlOYW1lLCBzbG90LCBzdHViSW5mbywgcHV0S2luZCwKKyAgICAgICAgICAgICAgICBl
eGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QsIHN0dWJJbmZvLCAKICAgICAgICAgICAgICAgICBzdHJ1
Y3R1cmUsIENvZGVMb2NhdGlvbkxhYmVsKGxpc3QtPmN1cnJlbnRTbG93UGF0aFRhcmdldCgpKSwg
c3R1YlJvdXRpbmUpOwotICAgICAgICAgICAgCisKICAgICAgICAgICAgIGxpc3QtPmFkZEFjY2Vz
cygKICAgICAgICAgICAgICAgICBQdXRCeUlkQWNjZXNzOjpyZXBsYWNlKAogICAgICAgICAgICAg
ICAgICAgICAqdm0sIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksCiAgICAgICAgICAgICAg
ICAgICAgIHN0cnVjdHVyZSwgc3R1YlJvdXRpbmUpKTsKICAgICAgICAgfQotICAgICAgICAKICAg
ICAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKGNvZGVCbG9jayk7CiAgICAgICAgIHJl
cGF0Y2hCdWZmZXIucmVsaW5rKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5qdW1wQXRPZmZz
ZXQoc3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9KdW1wKSwgQ29kZUxvY2F0aW9uTGFiZWwoc3R1
YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsKLSAgICAgICAgCiAgICAgICAgIGlmIChsaXN0LT5p
c0Z1bGwoKSkKICAgICAgICAgICAgIHJlcGF0Y2hDYWxsKHJlcGF0Y2hCdWZmZXIsIHN0dWJJbmZv
LmNhbGxSZXR1cm5Mb2NhdGlvbiwgYXBwcm9wcmlhdGVHZW5lcmljUHV0QnlJZEZ1bmN0aW9uKHNs
b3QsIHB1dEtpbmQpKTsKLSAgICAgICAgCisKICAgICAgICAgcmV0dXJuIFJldHJ5Q2FjaGVMYXRl
cjsKICAgICB9CiAKQEAgLTE0MzgsMTIgKzE0MTIsMTIgQEAgc3RhdGljIElubGluZUNhY2hlQWN0
aW9uIHRyeUJ1aWxkUHV0QnlJZExpc3QoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1
ZSwKICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsK
ICAgICAgICAgc2l6ZV90IGNvdW50ID0gMDsKICAgICAgICAgaWYgKGJhc2VWYWx1ZSAhPSBzbG90
LmJhc2UoKSkgewotICAgICAgICAgICAgY291bnQgPSBub3JtYWxpemVQcm90b3R5cGVDaGFpbkZv
ckNoYWluQWNjZXNzKGV4ZWMsIGJhc2VDZWxsLCBzbG90LmJhc2UoKSwgcHJvcGVydHlOYW1lLCBv
ZmZzZXQpOworICAgICAgICAgICAgY291bnQgPSBub3JtYWxpemVQcm90b3R5cGVDaGFpbkZvckNo
YWluQWNjZXNzKGV4ZWMsIHN0cnVjdHVyZSwgc2xvdC5iYXNlKCksIHByb3BlcnR5TmFtZSwgb2Zm
c2V0KTsKICAgICAgICAgICAgIGlmIChjb3VudCA9PSBJbnZhbGlkUHJvdG90eXBlQ2hhaW4pCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7Ci0KICAgICAgICAgICAgIHByb3Rv
dHlwZUNoYWluID0gc3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihleGVjKTsKICAgICAgICAgfQor
ICAgICAgICAKICAgICAgICAgUG9seW1vcnBoaWNQdXRCeUlkTGlzdCogbGlzdDsKICAgICAgICAg
bGlzdCA9IFBvbHltb3JwaGljUHV0QnlJZExpc3Q6OmZyb20ocHV0S2luZCwgc3R1YkluZm8pOwog
CkBAIC0xNDk0LDEwICsxNDY4LDEyIEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlSZXBh
dGNoSW4oCiAgICAgCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2so
KTsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IGJhc2UtPnN0cnVjdHVyZSgpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZS0+c3Ry
dWN0dXJlKCp2bSk7CiAgICAgCiAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0SWdub3JlZDsKLSAg
ICBzaXplX3QgY291bnQgPSBub3JtYWxpemVQcm90b3R5cGVDaGFpbkZvckNoYWluQWNjZXNzKGV4
ZWMsIGJhc2UsIHdhc0ZvdW5kID8gc2xvdC5zbG90QmFzZSgpIDogSlNWYWx1ZSgpLCBpZGVudCwg
b2Zmc2V0SWdub3JlZCk7CisgICAgSlNWYWx1ZSBmb3VuZFNsb3RCYXNlID0gd2FzRm91bmQgPyBz
bG90LnNsb3RCYXNlKCkgOiBKU1ZhbHVlKCk7CisgICAgc2l6ZV90IGNvdW50ID0gIWZvdW5kU2xv
dEJhc2UgfHwgZm91bmRTbG90QmFzZSAhPSBiYXNlID8gCisgICAgICAgIG5vcm1hbGl6ZVByb3Rv
dHlwZUNoYWluRm9yQ2hhaW5BY2Nlc3MoZXhlYywgc3RydWN0dXJlLCBmb3VuZFNsb3RCYXNlLCBp
ZGVudCwgb2Zmc2V0SWdub3JlZCkgOiAwOwogICAgIGlmIChjb3VudCA9PSBJbnZhbGlkUHJvdG90
eXBlQ2hhaW4pCiAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogICAgIApkaWZmIC0tZ2l0
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvUmVwYXRjaC5oCmluZGV4IGNiMzM0MjAuLmYzN2FjN2IgMTAwNjQ0Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaAorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9SZXBhdGNoLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiB2b2lkIHJlcGF0
Y2hHZXRCeUlEKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQ
cm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCBidWlsZEdldEJ5SURMaXN0
KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNs
b3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCBidWlsZEdldEJ5SURQcm90b0xpc3QoRXhl
Y1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYs
IFN0cnVjdHVyZVN0dWJJbmZvJik7Ci12b2lkIHJlcGF0Y2hQdXRCeUlEKEV4ZWNTdGF0ZSosIEpT
VmFsdWUsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQdXRQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1
cmVTdHViSW5mbyYsIFB1dEtpbmQpOwordm9pZCByZXBhdGNoUHV0QnlJRChFeGVjU3RhdGUqLCBK
U1ZhbHVlLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHV0UHJvcGVydHlT
bG90JiwgU3RydWN0dXJlU3R1YkluZm8mLCBQdXRLaW5kKTsKIHZvaWQgYnVpbGRQdXRCeUlkTGlz
dChFeGVjU3RhdGUqLCBKU1ZhbHVlLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29u
c3QgUHV0UHJvcGVydHlTbG90JiwgU3RydWN0dXJlU3R1YkluZm8mLCBQdXRLaW5kKTsKIHZvaWQg
cmVwYXRjaEluKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIGNvbnN0IElkZW50aWZpZXImLCBib29sIHdh
c0ZvdW5kLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCBs
aW5rRm9yKEV4ZWNTdGF0ZSosIENhbGxMaW5rSW5mbyYsIENvZGVCbG9jayosIEpTRnVuY3Rpb24q
IGNhbGxlZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLCBS
ZWdpc3RlclByZXNlcnZhdGlvbk1vZGUpOwpkaWZmIC0tZ2l0IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmNwcAppbmRleCBhYWEzZWRmLi44NWJhYzI2IDEwMDY0NAotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtNjY1LDcgKzY2NSw3IEBAIExM
SU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfaWQpCiAgICAgICAgICAgICAgICAg
ICAgIC8vIGJlbG93IG1heSBHQy4KICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUg
PSBMTEludDo6Z2V0T3Bjb2RlKG9wX3B1dF9ieV9pZCk7CiAKLSAgICAgICAgICAgICAgICAgICAg
aWYgKG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluKGV4ZWMsIGJhc2VDZWxsKSAhPSBJbnZhbGlkUHJv
dG90eXBlQ2hhaW4pIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5vcm1hbGl6ZVByb3RvdHlw
ZUNoYWluKGV4ZWMsIHN0cnVjdHVyZSkgIT0gSW52YWxpZFByb3RvdHlwZUNoYWluKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5wcmV2aW91c0lEKCktPmlzT2Jq
ZWN0KCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgcGNbNF0udS5zdHJ1Y3R1cmUuc2V0KAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZtLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJs
ZSgpLCBzdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSk7CmRpZmYgLS1naXQgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmggU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgKaW5kZXggZGM0YjdjMi4u
ZWUxOGFiZiAxMDA2NDQKLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVy
dHlOYW1lRW51bWVyYXRvci5oCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b3BlcnR5TmFtZUVudW1lcmF0b3IuaApAQCAtMTQ2LDcgKzE0Niw3IEBAIGlubGluZSBKU1Byb3Bl
cnR5TmFtZUVudW1lcmF0b3IqIGdlbmVyaWNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKEV4ZWNTdGF0
ZSogZXhlYywKICAgICBlbHNlCiAgICAgICAgIGJhc2UtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0UHJv
cGVydHlOYW1lcyhiYXNlLCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9w
ZXJ0aWVzKTsKICAgICAKLSAgICBub3JtYWxpemVQcm90b3R5cGVDaGFpbihleGVjLCBiYXNlKTsK
KyAgICBub3JtYWxpemVQcm90b3R5cGVDaGFpbihleGVjLCBzdHJ1Y3R1cmUpOwogCiAgICAgSlNQ
cm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBlbnVtZXJhdG9yID0gSlNQcm9wZXJ0eU5hbWVFbnVtZXJh
dG9yOjpjcmVhdGUodm0sIGJhc2UtPnN0cnVjdHVyZSh2bSksIHByb3BlcnR5TmFtZXMpOwogICAg
IGVudW1lcmF0b3ItPnNldENhY2hlZFByb3RvdHlwZUNoYWluKHZtLCBzdHJ1Y3R1cmUtPnByb3Rv
dHlwZUNoYWluKGV4ZWMpKTsKZGlmZiAtLWdpdCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcGVyYXRpb25zLmggU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5o
CmluZGV4IGJkNDVjMjIuLmJiODJjYjYgMTAwNjQ0Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcGVyYXRpb25zLmgKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
ZXJhdGlvbnMuaApAQCAtMTk0LDY1ICsxOTQsNjUgQEAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpz
QWRkKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQogCiAjZGVm
aW5lIEludmFsaWRQcm90b3R5cGVDaGFpbiAoc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+Ojpt
YXgoKSkKIAotaW5saW5lIHNpemVfdCBub3JtYWxpemVQcm90b3R5cGVDaGFpbkZvckNoYWluQWNj
ZXNzKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUgc2xvdEJhc2Us
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQmIHNsb3RPZmZz
ZXQpCitpbmxpbmUgc2l6ZV90IG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluRm9yQ2hhaW5BY2Nlc3Mo
Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1ZhbHVlIHNsb3RC
YXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiBzbG90
T2Zmc2V0KQogewogICAgIFZNJiB2bSA9IGNhbGxGcmFtZS0+dm0oKTsKLSAgICBKU0NlbGwqIGNl
bGwgPSBiYXNlLmFzQ2VsbCgpOwogICAgIHNpemVfdCBjb3VudCA9IDA7CiAgICAgICAgIAotICAg
IHdoaWxlICghc2xvdEJhc2UgfHwgc2xvdEJhc2UgIT0gY2VsbCkgewotICAgICAgICBpZiAoY2Vs
bC0+aXNQcm94eSgpKQorICAgIHdoaWxlICgxKSB7CisgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmlz
UHJveHkoKSkKICAgICAgICAgICAgIHJldHVybiBJbnZhbGlkUHJvdG90eXBlQ2hhaW47CiAKLSAg
ICAgICAgY29uc3QgVHlwZUluZm8mIHR5cGVJbmZvID0gY2VsbC0+c3RydWN0dXJlKCktPnR5cGVJ
bmZvKCk7CisgICAgICAgIGNvbnN0IFR5cGVJbmZvJiB0eXBlSW5mbyA9IHN0cnVjdHVyZS0+dHlw
ZUluZm8oKTsKICAgICAgICAgaWYgKHR5cGVJbmZvLmhhc0ltcHVyZUdldE93blByb3BlcnR5U2xv
dCgpICYmICF0eXBlSW5mby5uZXdJbXB1cmVQcm9wZXJ0eUZpcmVzV2F0Y2hwb2ludHMoKSkKICAg
ICAgICAgICAgIHJldHVybiBJbnZhbGlkUHJvdG90eXBlQ2hhaW47CiAgICAgICAgICAgICAKLSAg
ICAgICAgSlNWYWx1ZSB2ID0gY2VsbC0+c3RydWN0dXJlKCktPnByb3RvdHlwZUZvckxvb2t1cChj
YWxsRnJhbWUpOworICAgICAgICBKU1ZhbHVlIHYgPSBzdHJ1Y3R1cmUtPnByb3RvdHlwZUZvckxv
b2t1cChjYWxsRnJhbWUpOwogCi0gICAgICAgIC8vIElmIHdlIGRpZG4ndCBmaW5kIHNsb3RCYXNl
IGluIGJhc2UncyBwcm90b3R5cGUgY2hhaW4sIHRoZW4gYmFzZQorICAgICAgICAvLyBJZiB3ZSBk
aWRuJ3QgZmluZCBzbG90QmFzZSBpbiB0aGUgYmFzZSdzIHByb3RvdHlwZSBjaGFpbiwgdGhlbiB0
aGUgYmFzZQogICAgICAgICAvLyBtdXN0IGJlIGEgcHJveHkgZm9yIGFub3RoZXIgb2JqZWN0Lgog
CiAgICAgICAgIGlmICh2LmlzTnVsbCgpKSB7CiAgICAgICAgICAgICBpZiAoIXNsb3RCYXNlKQot
ICAgICAgICAgICAgICAgIHJldHVybiBjb3VudDsKKyAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIHJldHVybiBJbnZhbGlkUHJvdG90eXBlQ2hhaW47CiAgICAgICAgIH0KIAotICAg
ICAgICBjZWxsID0gdi5hc0NlbGwoKTsKLQorICAgICAgICBKU0NlbGwqIGNlbGwgPSB2LmFzQ2Vs
bCgpOworICAgICAgICBzdHJ1Y3R1cmUgPSBjZWxsLT5zdHJ1Y3R1cmUodm0pOwogICAgICAgICAv
LyBTaW5jZSB3ZSdyZSBhY2Nlc3NpbmcgYSBwcm90b3R5cGUgaW4gYSBsb29wLCBpdCdzIGEgZ29v
ZCBiZXQgdGhhdCBpdAogICAgICAgICAvLyBzaG91bGQgbm90IGJlIHRyZWF0ZWQgYXMgYSBkaWN0
aW9uYXJ5LgotICAgICAgICBpZiAoY2VsbC0+c3RydWN0dXJlKHZtKS0+aXNEaWN0aW9uYXJ5KCkp
IHsKLSAgICAgICAgICAgIGFzT2JqZWN0KGNlbGwpLT5mbGF0dGVuRGljdGlvbmFyeU9iamVjdChj
YWxsRnJhbWUtPnZtKCkpOworICAgICAgICBpZiAoc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkg
eworICAgICAgICAgICAgc3RydWN0dXJlLT5mbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZSh2bSwg
YXNPYmplY3QoY2VsbCkpOwogICAgICAgICAgICAgaWYgKHNsb3RCYXNlID09IGNlbGwpCi0gICAg
ICAgICAgICAgICAgc2xvdE9mZnNldCA9IGNlbGwtPnN0cnVjdHVyZSh2bSktPmdldChjYWxsRnJh
bWUtPnZtKCksIHByb3BlcnR5TmFtZSk7IAorICAgICAgICAgICAgICAgIHNsb3RPZmZzZXQgPSBz
dHJ1Y3R1cmUtPmdldCh2bSwgcHJvcGVydHlOYW1lKTsgCiAgICAgICAgIH0KLSAgICAgICAgICAg
IAogICAgICAgICArK2NvdW50OworCisgICAgICAgIGlmIChzbG90QmFzZSA9PSBjZWxsKQorICAg
ICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKICAgICByZXR1cm4gY291bnQ7CiB9CiAK
LWlubGluZSBzaXplX3Qgbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oQ2FsbEZyYW1lKiBjYWxsRnJh
bWUsIEpTQ2VsbCogYmFzZSkKK2lubGluZSBzaXplX3Qgbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4o
Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIFZNJiB2
bSA9IGNhbGxGcmFtZS0+dm0oKTsKICAgICBzaXplX3QgY291bnQgPSAwOwogICAgIHdoaWxlICgx
KSB7Ci0gICAgICAgIGlmIChiYXNlLT5pc1Byb3h5KCkpCisgICAgICAgIGlmIChzdHJ1Y3R1cmUt
PmlzUHJveHkoKSkKICAgICAgICAgICAgIHJldHVybiBJbnZhbGlkUHJvdG90eXBlQ2hhaW47Ci0g
ICAgICAgICAgICAKLSAgICAgICAgSlNWYWx1ZSB2ID0gYmFzZS0+c3RydWN0dXJlKHZtKS0+cHJv
dG90eXBlRm9yTG9va3VwKGNhbGxGcmFtZSk7CisgICAgICAgIEpTVmFsdWUgdiA9IHN0cnVjdHVy
ZS0+cHJvdG90eXBlRm9yTG9va3VwKGNhbGxGcmFtZSk7CiAgICAgICAgIGlmICh2LmlzTnVsbCgp
KQogICAgICAgICAgICAgcmV0dXJuIGNvdW50OwogCi0gICAgICAgIGJhc2UgPSB2LmFzQ2VsbCgp
OwotCisgICAgICAgIEpTQ2VsbCogYmFzZSA9IHYuYXNDZWxsKCk7CisgICAgICAgIHN0cnVjdHVy
ZSA9IGJhc2UtPnN0cnVjdHVyZSh2bSk7CiAgICAgICAgIC8vIFNpbmNlIHdlJ3JlIGFjY2Vzc2lu
ZyBhIHByb3RvdHlwZSBpbiBhIGxvb3AsIGl0J3MgYSBnb29kIGJldCB0aGF0IGl0CiAgICAgICAg
IC8vIHNob3VsZCBub3QgYmUgdHJlYXRlZCBhcyBhIGRpY3Rpb25hcnkuCi0gICAgICAgIGlmIChi
YXNlLT5zdHJ1Y3R1cmUodm0pLT5pc0RpY3Rpb25hcnkoKSkKLSAgICAgICAgICAgIGFzT2JqZWN0
KGJhc2UpLT5mbGF0dGVuRGljdGlvbmFyeU9iamVjdChjYWxsRnJhbWUtPnZtKCkpOworICAgICAg
ICBpZiAoc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkKKyAgICAgICAgICAgIHN0cnVjdHVyZS0+
ZmxhdHRlbkRpY3Rpb25hcnlTdHJ1Y3R1cmUodm0sIGFzT2JqZWN0KGJhc2UpKTsKIAogICAgICAg
ICArK2NvdW50OwogICAgIH0KZGlmZiAtLWdpdCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
bW96aWxsYS9tb3ppbGxhLXRlc3RzLnlhbWwgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21v
emlsbGEvbW96aWxsYS10ZXN0cy55YW1sCmluZGV4IGVjZWIzZjcuLjNkY2Y1MzcgMTAwNjQ0Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW96aWxsYS9tb3ppbGxhLXRlc3RzLnlhbWwK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb3ppbGxhL21vemlsbGEtdGVzdHMueWFt
bApAQCAtNzg5LDggKzc4OSw4IEBACiAgIGNtZDogZGVmYXVsdFJ1bk1vemlsbGFUZXN0IDpub3Jt
YWwsICIuLi9zaGVsbC5qcyIKIC0gcGF0aDogZWNtYS9MZXhpY2FsQ29udmVudGlvbnMvNy43LjMt
Mi5qcwogICBjbWQ6IGRlZmF1bHRSdW5Nb3ppbGxhVGVzdCA6bm9ybWFsLCAiLi4vc2hlbGwuanMi
Ci0tIHBhdGg6IGVjbWEvTGV4aWNhbENvbnZlbnRpb25zLzcuNy4zLmpzCi0gIGNtZDogZGVmYXVs
dFJ1bk1vemlsbGFUZXN0IDpub3JtYWwsICIuLi9zaGVsbC5qcyIKKyMgLSBwYXRoOiBlY21hL0xl
eGljYWxDb252ZW50aW9ucy83LjcuMy5qcworIyAgIGNtZDogZGVmYXVsdFJ1bk1vemlsbGFUZXN0
IDpub3JtYWwsICIuLi9zaGVsbC5qcyIKIC0gcGF0aDogZWNtYS9MZXhpY2FsQ29udmVudGlvbnMv
Ny43LjQuanMKICAgY21kOiBkZWZhdWx0UnVuTW96aWxsYVRlc3QgOm5vcm1hbCwgIi4uL3NoZWxs
LmpzIgogLSBwYXRoOiBlY21hL0xleGljYWxDb252ZW50aW9ucy83LjguMi1uLmpzCmRpZmYgLS1n
aXQgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9pbnZhbGlkX2FycmF5LmpzIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvaW52YWxpZF9hcnJheS5qcwppbmRleCBm
MzJjNTNjLi5hYzk4NDk5IDEwMDY0NAotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9pbnZhbGlkX2FycmF5LmpzCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2ludmFsaWRfYXJyYXkuanMKQEAgLTEsNyArMSw3IEBACiAvLyBkZWJ1Zy1qcyAtcyAtLWVu
YWJsZUNvbmN1cnJlbnRKSVQ9ZmFsc2UgLS10aHJlc2hvbGRGb3JKSVRBZnRlcldhcm1VcD0xIC0t
dGhyZXNob2xkRm9yT3B0aW1pemVBZnRlcldhcm1VcD0yCiAKIGZ1bmN0aW9uIFRlc3RDYXNlKGEp
IHsKLQl0aGlzLmFjdHVhbAk9IDAuMTsKKyAgICB0aGlzLmFjdHVhbCA9IDAuMTsKIH0KIAogdmFy
IHRlc3RjYXNlcyA9IG5ldyBBcnJheSgpOwpkaWZmIC0tZ2l0IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvcHJvdG8tc2V0dGVyLmpzIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvcHJvdG8tc2V0dGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjMzYjdhZmEKLS0tIC9kZXYvbnVsbAorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9wcm90by1zZXR0ZXIuanMKQEAgLTAsMCArMSw4IEBACisvLyBSZWdFeHAuaW5wdXQg
aXMgYSBoYW5keSBzZXR0ZXIKKwordmFyIG8gPSB7fTsKKworZm9yICh2YXIgayA9IDA7IGsgPCA5
OyBrKyspIHsKKyAgICBvID0ge19fcHJvdG9fXyA6IG8gfTsKK30KKwpkaWZmIC0tZ2l0IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcHV0LWJ5LWlkLWJ1aWxkLWxpc3Qtb3JkZXIt
cmVjdXJzZS5qcyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3B1dC1ieS1pZC1i
dWlsZC1saXN0LW9yZGVyLXJlY3Vyc2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uMDlkMDIxOQotLS0gL2Rldi9udWxsCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL3B1dC1ieS1pZC1idWlsZC1saXN0LW9yZGVyLXJlY3Vyc2UuanMKQEAgLTAsMCAr
MSwzNSBAQAordmFyIGNvdW50ID0gMDsKKworZnVuY3Rpb24gc2V0dGVyKHZhbHVlKSB7CisgICAg
T2JqZWN0LmRlZmluZVByb3BlcnR5KAorICAgICAgICB0aGlzLCAiZiIsIHsKKyAgICAgICAgZW51
bWVyYWJsZTogdHJ1ZSwKKyAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsCisgICAg
ICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsCisgICAgICAgICAgICAgICAgdmFsdWU6IDMyCisg
ICAgICAgICAgICAgICAgfSk7CisgICAgdmFyIG8gPSBPYmplY3QuY3JlYXRlKHRoaXMpOworICAg
IHZhciBjdXJyZW50Q291bnQgPSBjb3VudCsrOworICAgIHZhciBzdHIgPSAiZm9yICh2YXIgaSA9
ICIgKyBjdXJyZW50Q291bnQgKyAiOyBpIDwgIiArICgxMDAgKyBjdXJyZW50Q291bnQpICsgIjsg
KytpKVxuIgorICAgICAgICAgICAgKyAiICAgIG8uZlxuIjsKKyAgICBldmFsKHN0cik7Cit9CisK
K2Z1bmN0aW9uIGZvbyhvKSB7CisgICAgby5mID0gNDI7Cit9CisKK25vSW5saW5lKGZvbyk7CisK
K2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAgdmFyIG8gPSB7fTsKKyAgICBv
Ll9fZGVmaW5lU2V0dGVyX18oImYiLCBzZXR0ZXIpOworCisgICAgZm9vKG8pOworICAgIGlmIChv
LmYgIT0gMzIpCisgICAgICAgIHRocm93ICgiRXJyb3IgMTogIitvLmYpOworCisgICAgZm9vKG8p
OworICAgIGlmIChvLmYgIT0gNDIpCisgICAgICAgIHRocm93ICgiRXJyb3IgMjogIitvLmYpOwor
fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKLS0gCjEuOS4zIChBcHBsZSBHaXQtNTApCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244550</attachid>
            <date>2015-01-13 14:35:34 -0800</date>
            <delta_ts>2015-01-13 15:07:24 -0800</delta_ts>
            <desc>Fixes operationPutByIdOptimizes such that they save the structure before the put</desc>
            <filename>0001-Fixes-operationPutByIdOptimizes-such-that-they-check.patch</filename>
            <type>text/plain</type>
            <size>29655</size>
            <attacher name="Matthew Mirman">mmirman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggZTE3YjQzMC4uMzM5NDE1NiAxMDA2NDQKLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw0MSBAQAorMjAxNS0wMS0xMyAgTWF0dGhldyBNaXJtYW4gIDxtbWly
bWFuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXhlcyBvcGVyYXRpb25QdXRCeUlkT3B0aW1pemVz
IHN1Y2ggdGhhdCB0aGV5IGNoZWNrIHRoYXQgdGhlIHB1dCBkaWRuJ3QKKyAgICAgICAgY2hhbmdl
IHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIG9iamVjdCB3aG8ncyBwcm9wZXJ0eSBhY2Nlc3MgaXMgYmVp
bmcKKyAgICAgICAgY2FjaGVkLiAgQWxzbyByZW1vdmVzIHVzZXMgb2YgdGhlIG5ldyBiYXNlIHZh
bHVlIGZyb20gdGhlIGNhY2hlIGdlbmVyYXRpb24gY29kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzOTUwMAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAg
ICAgICAoSlNDOjpvcGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemUpOiBzYXZlZCB0aGUgc3Ry
dWN0dXJlIGJlZm9yZSB0aGUgcHV0LgorICAgICAgICAoSlNDOjpvcGVyYXRpb25QdXRCeUlkTm9u
U3RyaWN0T3B0aW1pemUpOiBkaXR0by4KKyAgICAgICAgKEpTQzo6b3BlcmF0aW9uUHV0QnlJZERp
cmVjdFN0cmljdE9wdGltaXplKTogZGl0dG8uCisgICAgICAgIChKU0M6Om9wZXJhdGlvblB1dEJ5
SWREaXJlY3ROb25TdHJpY3RPcHRpbWl6ZSk6IGRpdHRvLgorICAgICAgICAqIGppdC9SZXBhdGNo
LmNwcDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVCeUlkU3R1Yik6CisgICAgICAgIChKU0M6OnRy
eUNhY2hlR2V0QnlJRCk6CisgICAgICAgIChKU0M6OnRyeUJ1aWxkR2V0QnlJRExpc3QpOgorICAg
ICAgICAoSlNDOjplbWl0UHV0UmVwbGFjZVN0dWIpOgorICAgICAgICAoSlNDOjplbWl0UHV0VHJh
bnNpdGlvblN0dWJBbmRHZXRPbGRTdHJ1Y3R1cmUpOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6dHJ5
Q2FjaGVQdXRCeUlEKToKKyAgICAgICAgKEpTQzo6cmVwYXRjaFB1dEJ5SUQpOgorICAgICAgICAo
SlNDOjp0cnlCdWlsZFB1dEJ5SWRMaXN0KToKKyAgICAgICAgKEpTQzo6dHJ5UmVwYXRjaEluKToK
KyAgICAgICAgKEpTQzo6ZW1pdFB1dFRyYW5zaXRpb25TdHViKTogRGVsZXRlZC4KKyAgICAgICAg
KiBqaXQvUmVwYXRjaC5oOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAg
ICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50
aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oOgorICAgICAgICAoSlNDOjpnZW5lcmljUHJv
cGVydHlOYW1lRW51bWVyYXRvcik6CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmg6Cisg
ICAgICAgIChKU0M6Om5vcm1hbGl6ZVByb3RvdHlwZUNoYWluRm9yQ2hhaW5BY2Nlc3MpOiByZXN0
cnVjdHVyZWQgdG8gbm90IHVzZSB0aGUgYmFzZSB2YWx1ZS4KKyAgICAgICAgKEpTQzo6bm9ybWFs
aXplUHJvdG90eXBlQ2hhaW4pOiByZXN0cnVjdHVyZWQgdG8gbm90IHVzZSB0aGUgYmFzZSB2YWx1
ZS4KKyAgICAgICAgKiB0ZXN0cy9tb3ppbGxhL21vemlsbGEtdGVzdHMueWFtbDoKKyAgICAgICAg
KiB0ZXN0cy9zdHJlc3MvcHJvdG8tc2V0dGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9z
dHJlc3MvcHV0LWJ5LWlkLWJ1aWxkLWxpc3Qtb3JkZXItcmVjdXJzZS5qczogQWRkZWQuCisgICAg
ICAgIEFkZGVkIHRlc3QgdGhhdCBmYWlscyB3aXRob3V0IHRoaXMgcGF0Y2guCisKIDIwMTUtMDEt
MTMgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIg
SW5zcGVjdG9yOiBSZW1vdmUgdW51c2VkIFJlc2l6ZUltYWdlIGFuZCBEZWNvZGVJbWFnZURhdGEg
dGltZWxpbmUgZXZlbnRzCmRpZmYgLS1naXQgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmNwcCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3Bw
CmluZGV4IGViM2M4OTUuLjM3YWE0NWQgMTAwNjQ0Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuY3BwCkBAIC0yNzMsMTQgKzI3MywxNSBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1
YgogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAg
ICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CiAgICAg
UHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCB0cnVlLCBleGVjLT5jb2RlQmxvY2soKS0+
cHV0QnlJZENvbnRleHQoKSk7Ci0gICAgCisKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJh
c2VWYWx1ZS5pc0NlbGwoKSA/IGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKCp2bSkgOiBu
dWxscHRyOwogICAgIGJhc2VWYWx1ZS5wdXQoZXhlYywgaWRlbnQsIHZhbHVlLCBzbG90KTsKICAg
ICAKICAgICBpZiAoYWNjZXNzVHlwZSAhPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5m
by0+YWNjZXNzVHlwZSkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBpZiAoc3R1YkluZm8t
PnNlZW4pCi0gICAgICAgIHJlcGF0Y2hQdXRCeUlEKGV4ZWMsIGJhc2VWYWx1ZSwgaWRlbnQsIHNs
b3QsICpzdHViSW5mbywgTm90RGlyZWN0KTsKKyAgICAgICAgcmVwYXRjaFB1dEJ5SUQoZXhlYywg
YmFzZVZhbHVlLCBzdHJ1Y3R1cmUsIGlkZW50LCBzbG90LCAqc3R1YkluZm8sIE5vdERpcmVjdCk7
CiAgICAgZWxzZQogICAgICAgICBzdHViSW5mby0+c2VlbiA9IHRydWU7CiB9CkBAIC0yOTYsMTQg
KzI5NywxNSBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdE9w
dGltaXplKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlUwogICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFz
ZVZhbHVlLCBmYWxzZSwgZXhlYy0+Y29kZUJsb2NrKCktPnB1dEJ5SWRDb250ZXh0KCkpOwotICAg
IAorCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlVmFsdWUuaXNDZWxsKCkgPyBiYXNl
VmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSgqdm0pIDogbnVsbHB0cjsgICAgCiAgICAgYmFzZVZh
bHVlLnB1dChleGVjLCBpZGVudCwgdmFsdWUsIHNsb3QpOwogICAgIAogICAgIGlmIChhY2Nlc3NU
eXBlICE9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKSkKICAg
ICAgICAgcmV0dXJuOwogICAgIAogICAgIGlmIChzdHViSW5mby0+c2VlbikKLSAgICAgICAgcmVw
YXRjaFB1dEJ5SUQoZXhlYywgYmFzZVZhbHVlLCBpZGVudCwgc2xvdCwgKnN0dWJJbmZvLCBOb3RE
aXJlY3QpOworICAgICAgICByZXBhdGNoUHV0QnlJRChleGVjLCBiYXNlVmFsdWUsIHN0cnVjdHVy
ZSwgaWRlbnQsIHNsb3QsICpzdHViSW5mbywgTm90RGlyZWN0KTsKICAgICBlbHNlCiAgICAgICAg
IHN0dWJJbmZvLT5zZWVuID0gdHJ1ZTsKIH0KQEAgLTMyMCwxMyArMzIyLDE0IEBAIHZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1pemUoRXhlY1N0YXRl
KiBleGVjLCBTdHJ1Y3R1CiAgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpKTsKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNl
T2JqZWN0LCB0cnVlLCBleGVjLT5jb2RlQmxvY2soKS0+cHV0QnlJZENvbnRleHQoKSk7CiAgICAg
CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlT2JqZWN0LT5zdHJ1Y3R1cmUoKnZtKTsK
ICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgaWRlbnQsIHZhbHVlLCBzbG90
KTsKICAgICAKICAgICBpZiAoYWNjZXNzVHlwZSAhPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihz
dHViSW5mby0+YWNjZXNzVHlwZSkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBpZiAoc3R1
YkluZm8tPnNlZW4pCi0gICAgICAgIHJlcGF0Y2hQdXRCeUlEKGV4ZWMsIGJhc2VPYmplY3QsIGlk
ZW50LCBzbG90LCAqc3R1YkluZm8sIERpcmVjdCk7CisgICAgICAgIHJlcGF0Y2hQdXRCeUlEKGV4
ZWMsIGJhc2VPYmplY3QsIHN0cnVjdHVyZSwgaWRlbnQsIHNsb3QsICpzdHViSW5mbywgRGlyZWN0
KTsKICAgICBlbHNlCiAgICAgICAgIHN0dWJJbmZvLT5zZWVuID0gdHJ1ZTsKIH0KQEAgLTM0Mywx
MyArMzQ2LDE0IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9u
U3RyaWN0T3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1CiAgICAgSlNPYmplY3QqIGJhc2VP
YmplY3QgPSBhc09iamVjdChKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpKTsKICAgICBQdXRQ
cm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBmYWxzZSwgZXhlYy0+Y29kZUJsb2NrKCktPnB1
dEJ5SWRDb250ZXh0KCkpOwogICAgIAorICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZU9i
amVjdC0+c3RydWN0dXJlKCp2bSk7CiAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0KGV4ZWMtPnZt
KCksIGlkZW50LCB2YWx1ZSwgc2xvdCk7CiAgICAgCiAgICAgaWYgKGFjY2Vzc1R5cGUgIT0gc3Rh
dGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpKQogICAgICAgICByZXR1
cm47CiAgICAgCiAgICAgaWYgKHN0dWJJbmZvLT5zZWVuKQotICAgICAgICByZXBhdGNoUHV0QnlJ
RChleGVjLCBiYXNlT2JqZWN0LCBpZGVudCwgc2xvdCwgKnN0dWJJbmZvLCBEaXJlY3QpOworICAg
ICAgICByZXBhdGNoUHV0QnlJRChleGVjLCBiYXNlT2JqZWN0LCBzdHJ1Y3R1cmUsIGlkZW50LCBz
bG90LCAqc3R1YkluZm8sIERpcmVjdCk7CiAgICAgZWxzZQogICAgICAgICBzdHViSW5mby0+c2Vl
biA9IHRydWU7CiB9CmRpZmYgLS1naXQgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNo
LmNwcCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IGZkNmEzNzQu
Ljc2NmRlM2IgMTAwNjQ0Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3Bw
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCkBAIC0yOTcsNiArMjk3
LDcgQEAgc3RhdGljIHZvaWQgZ2VuZXJhdGVCeUlkU3R1YigKICAgICBQcm9wZXJ0eU9mZnNldCBv
ZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBib29sIGxvYWRUYXJnZXRGcm9tUHJveHksIFdh
dGNocG9pbnRTZXQqIHdhdGNocG9pbnRTZXQsCiAgICAgQ29kZUxvY2F0aW9uTGFiZWwgc3VjY2Vz
c0xhYmVsLCBDb2RlTG9jYXRpb25MYWJlbCBzbG93Q2FzZUxhYmVsLCBSZWZQdHI8SklUU3R1YlJv
dXRpbmU+JiBzdHViUm91dGluZSkKIHsKKwogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAg
IEdQUlJlZyBiYXNlR1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRjaC5iYXNl
R1BSKTsKICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSBKU1ZhbHVlUmVncygKQEAgLTM0OCw3
ICszNDksNyBAQCBzdGF0aWMgdm9pZCBnZW5lcmF0ZUJ5SWRTdHViKAogICAgIGlmICh3YXRjaHBv
aW50U2V0KQogICAgICAgICB3YXRjaHBvaW50U2V0LT5hZGQoc3R1YkluZm8uYWRkV2F0Y2hwb2lu
dChjb2RlQmxvY2spKTsKIAotICAgIFN0cnVjdHVyZSogY3VyclN0cnVjdHVyZSA9IHN0cnVjdHVy
ZTsKKyAgICBTdHJ1Y3R1cmUqIGN1cnJTdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmU7IAogICAgIEpTT2Jq
ZWN0KiBwcm90b09iamVjdCA9IDA7CiAgICAgaWYgKGNoYWluKSB7CiAgICAgICAgIFdyaXRlQmFy
cmllcjxTdHJ1Y3R1cmU+KiBpdCA9IGNoYWluLT5oZWFkKCk7CkBAIC03NDcsNyArNzQ4LDcgQEAg
c3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlR2V0QnlJRChFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgYmFzZVZhbHVlLCBjb24KICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiAK
ICAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOwotICAgIFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSgpOworICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSgqdm0pOwogCiAgICAgSW5saW5lQ2FjaGVBY3Rp
b24gYWN0aW9uID0gYWN0aW9uRm9yQ2VsbCgqdm0sIGJhc2VDZWxsKTsKICAgICBpZiAoYWN0aW9u
ICE9IEF0dGVtcHRUb0NhY2hlKQpAQCAtODMyLDEwICs4MzMsMTAgQEAgc3RhdGljIElubGluZUNh
Y2hlQWN0aW9uIHRyeUJ1aWxkR2V0QnlJRExpc3QoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJh
c2VWYWx1ZSwKICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogCiAgICAgICAgIGlm
IChzbG90LmlzVW5zZXQoKSkKLSAgICAgICAgICAgIGNvdW50ID0gbm9ybWFsaXplUHJvdG90eXBl
Q2hhaW4oZXhlYywgYmFzZUNlbGwpOworICAgICAgICAgICAgY291bnQgPSBub3JtYWxpemVQcm90
b3R5cGVDaGFpbihleGVjLCBzdHJ1Y3R1cmUpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBj
b3VudCA9IG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluRm9yQ2hhaW5BY2Nlc3MoCi0gICAgICAgICAg
ICAgICAgZXhlYywgYmFzZVZhbHVlLCBzbG90LnNsb3RCYXNlKCksIGlkZW50LCBvZmZzZXQpOwor
ICAgICAgICAgICAgICAgIGV4ZWMsIHN0cnVjdHVyZSwgc2xvdC5zbG90QmFzZSgpLCBpZGVudCwg
b2Zmc2V0KTsKICAgICAgICAgaWYgKGNvdW50ID09IEludmFsaWRQcm90b3R5cGVDaGFpbikKICAg
ICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogICAgICAgICBwcm90b3R5cGVDaGFpbiA9
IHN0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4oZXhlYyk7CkBAIC05MDcsMTEgKzkwOCw5IEBAIHN0
YXRpYyBWX0pJVE9wZXJhdGlvbl9FU3NpSkpJIGFwcHJvcHJpYXRlTGlzdEJ1aWxkaW5nUHV0QnlJ
ZEZ1bmN0aW9uKGNvbnN0IFB1dFByCiAKIHN0YXRpYyB2b2lkIGVtaXRQdXRSZXBsYWNlU3R1YigK
ICAgICBFeGVjU3RhdGUqIGV4ZWMsCi0gICAgSlNWYWx1ZSwKICAgICBjb25zdCBJZGVudGlmaWVy
JiwKICAgICBjb25zdCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QsCiAgICAgU3RydWN0dXJlU3R1Yklu
Zm8mIHN0dWJJbmZvLAotICAgIFB1dEtpbmQsCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsCiAg
ICAgQ29kZUxvY2F0aW9uTGFiZWwgZmFpbHVyZUxhYmVsLAogICAgIFJlZlB0cjxKSVRTdHViUm91
dGluZT4mIHN0dWJSb3V0aW5lKQpAQCAtOTg1LDIwICs5ODQsNDQgQEAgc3RhdGljIHZvaWQgZW1p
dFB1dFJlcGxhY2VTdHViKAogICAgICAgICAgICAgICAgIHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2Fs
bFRvRG9uZSkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogfQogCi1zdGF0aWMgdm9pZCBlbWl0UHV0
VHJhbnNpdGlvblN0dWIoCi0gICAgRXhlY1N0YXRlKiBleGVjLAotICAgIEpTVmFsdWUsCi0gICAg
Y29uc3QgSWRlbnRpZmllciYsCi0gICAgY29uc3QgUHV0UHJvcGVydHlTbG90JiBzbG90LAotICAg
IFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywKLSAgICBQdXRLaW5kIHB1dEtpbmQsCi0gICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsCi0gICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsCi0gICAg
U3RydWN0dXJlQ2hhaW4qIHByb3RvdHlwZUNoYWluLAotICAgIENvZGVMb2NhdGlvbkxhYmVsIGZh
aWx1cmVMYWJlbCwKLSAgICBSZWZQdHI8SklUU3R1YlJvdXRpbmU+JiBzdHViUm91dGluZSkKK3N0
YXRpYyBTdHJ1Y3R1cmUqIGVtaXRQdXRUcmFuc2l0aW9uU3R1YkFuZEdldE9sZFN0cnVjdHVyZShF
eGVjU3RhdGUqIGV4ZWMsIFZNKiB2bSwgU3RydWN0dXJlKiYgc3RydWN0dXJlLCBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCwgCisgICAgY29uc3QgUHV0UHJvcGVydHlTbG90JiBzbG90LCBTdHJ1Y3R1
cmVTdHViSW5mbyYgc3R1YkluZm8sIFB1dEtpbmQgcHV0S2luZCkKIHsKLSAgICBWTSogdm0gPSAm
ZXhlYy0+dm0oKTsKKyAgICBQcm9wZXJ0eU5hbWUgcG5hbWUoaWRlbnQpOworICAgIFN0cnVjdHVy
ZSogb2xkU3RydWN0dXJlID0gc3RydWN0dXJlOworICAgIGlmICghb2xkU3RydWN0dXJlLT5pc09i
amVjdCgpIHx8IG9sZFN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkgfHwgcG5hbWUuYXNJbmRleCgp
ICE9IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRleCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICBQcm9wZXJ0eU9mZnNldCBwcm9wZXJ0eU9mZnNldDsKKyAgICBzdHJ1Y3R1cmUgPSBTdHJ1
Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmVDb25jdXJyZW50
bHkob2xkU3RydWN0dXJlLCBpZGVudC5pbXBsKCksIDAsIHByb3BlcnR5T2Zmc2V0KTsKKworICAg
IGlmICghc3RydWN0dXJlIHx8ICFzdHJ1Y3R1cmUtPmlzT2JqZWN0KCkgfHwgc3RydWN0dXJlLT5p
c0RpY3Rpb25hcnkoKSB8fCAhc3RydWN0dXJlLT5wcm9wZXJ0eUFjY2Vzc2VzQXJlQ2FjaGVhYmxl
KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgLy8gU2tpcCBvcHRpbWl6aW5nIHRo
ZSBjYXNlIHdoZXJlIHdlIG5lZWQgYSByZWFsbG9jLCBpZiB3ZSBkb24ndCBoYXZlCisgICAgLy8g
ZW5vdWdoIHJlZ2lzdGVycyB0byBtYWtlIGl0IGhhcHBlbi4KKyAgICBpZiAoR1BSSW5mbzo6bnVt
YmVyT2ZSZWdpc3RlcnMgPCA2CisgICAgICAgICYmIG9sZFN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2Fw
YWNpdHkoKSAhPSBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkKKyAgICAgICAgJiYgb2xk
U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKSB7CisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIH0KKworICAgIC8vIFNraXAgb3B0aW1pemluZyB0aGUgY2FzZSB3aGVyZSB3ZSBuZWVk
IHJlYWxsb2MsIGFuZCB0aGUgc3RydWN0dXJlIGhhcworICAgIC8vIGluZGV4aW5nIHN0b3JhZ2Uu
CisgICAgLy8gRklYTUU6IFdlIHNob3VsZG4ndCBza2lwIHRoaXMhIEltcGxlbWVudCBpdCEKKyAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwOTE0CisgICAg
aWYgKG9sZFN0cnVjdHVyZS0+Y291bGRIYXZlSW5kZXhpbmdIZWFkZXIoKSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICBpZiAobm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgc3Ry
dWN0dXJlKSA9PSBJbnZhbGlkUHJvdG90eXBlQ2hhaW4pCisgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgU3RydWN0dXJlQ2hhaW4qIHByb3RvdHlwZUNoYWluID0gc3RydWN0dXJlLT5wcm90
b3R5cGVDaGFpbihleGVjKTsKKworICAgIC8vIGVtaXRQdXRUcmFuc2l0aW9uU3R1YgorCisgICAg
Q29kZUxvY2F0aW9uTGFiZWwgZmFpbHVyZUxhYmVsID0gc3R1YkluZm8uY2FsbFJldHVybkxvY2F0
aW9uLmxhYmVsQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9TbG93Q2FzZSk7Cisg
ICAgUmVmUHRyPEpJVFN0dWJSb3V0aW5lPiYgc3R1YlJvdXRpbmUgPSBzdHViSW5mby5zdHViUm91
dGluZTsKIAogICAgIEdQUlJlZyBiYXNlR1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5m
by5wYXRjaC5iYXNlR1BSKTsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQpAQCAtMTIyMiw5ICsxMjQ1
LDExIEBAIHN0YXRpYyB2b2lkIGVtaXRQdXRUcmFuc2l0aW9uU3R1YigKICAgICAgICAgICAgIGV4
ZWMtPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKSwKICAgICAgICAgICAgIHN0cnVjdHVy
ZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAhPSBvbGRTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5
KCksCiAgICAgICAgICAgICBzdHJ1Y3R1cmUpOworCisgICAgcmV0dXJuIG9sZFN0cnVjdHVyZTsK
IH0KIAotc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRChFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3Qg
UHV0UHJvcGVydHlTbG90JiBzbG90LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIFB1dEtp
bmQgcHV0S2luZCkKK3N0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNv
bnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QsIFN0cnVj
dHVyZVN0dWJJbmZvJiBzdHViSW5mbywgUHV0S2luZCBwdXRLaW5kKQogewogICAgIGlmIChPcHRp
b25zOjpmb3JjZUlDRmFpbHVyZSgpKQogICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKQEAg
LTEyMzQsNDYgKzEyNTksMjMgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0
QnlJRChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBjb24KIAogICAgIGlmICgh
YmFzZVZhbHVlLmlzQ2VsbCgpKQogICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKLSAgICBK
U0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOwotICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSgqdm0pOwotICAgIFN0cnVjdHVyZSogb2xkU3Ry
dWN0dXJlID0gc3RydWN0dXJlLT5wcmV2aW91c0lEKCk7CiAgICAgCiAgICAgaWYgKCFzbG90Lmlz
Q2FjaGVhYmxlUHV0KCkgJiYgIXNsb3QuaXNDYWNoZWFibGVDdXN0b20oKSAmJiAhc2xvdC5pc0Nh
Y2hlYWJsZVNldHRlcigpKQogICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKwogICAgIGlm
ICghc3RydWN0dXJlLT5wcm9wZXJ0eUFjY2Vzc2VzQXJlQ2FjaGVhYmxlKCkpCiAgICAgICAgIHJl
dHVybiBHaXZlVXBPbkNhY2hlOwogCiAgICAgLy8gT3B0aW1pemUgc2VsZiBhY2Nlc3MuCiAgICAg
aWYgKHNsb3QuYmFzZSgpID09IGJhc2VWYWx1ZSAmJiBzbG90LmlzQ2FjaGVhYmxlUHV0KCkpIHsK
ICAgICAgICAgaWYgKHNsb3QudHlwZSgpID09IFB1dFByb3BlcnR5U2xvdDo6TmV3UHJvcGVydHkp
IHsKLSAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKQotICAgICAgICAg
ICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICAv
LyBTa2lwIG9wdGltaXppbmcgdGhlIGNhc2Ugd2hlcmUgd2UgbmVlZCBhIHJlYWxsb2MsIGlmIHdl
IGRvbid0IGhhdmUKLSAgICAgICAgICAgIC8vIGVub3VnaCByZWdpc3RlcnMgdG8gbWFrZSBpdCBo
YXBwZW4uCi0gICAgICAgICAgICBpZiAoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgPCA2Ci0g
ICAgICAgICAgICAgICAgJiYgb2xkU3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpICE9IHN0
cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKQotICAgICAgICAgICAgICAgICYmIG9sZFN0cnVj
dHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVw
T25DYWNoZTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgLy8gU2tpcCBvcHRpbWl6aW5nIHRo
ZSBjYXNlIHdoZXJlIHdlIG5lZWQgcmVhbGxvYywgYW5kIHRoZSBzdHJ1Y3R1cmUgaGFzCi0gICAg
ICAgICAgICAvLyBpbmRleGluZyBzdG9yYWdlLgotICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNo
b3VsZG4ndCBza2lwIHRoaXMhICBJbXBsZW1lbnQgaXQhCi0gICAgICAgICAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwOTE0Ci0gICAgICAgICAgICBpZiAo
b2xkU3RydWN0dXJlLT5jb3VsZEhhdmVJbmRleGluZ0hlYWRlcigpKQotICAgICAgICAgICAgICAg
IHJldHVybiBHaXZlVXBPbkNhY2hlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAobm9y
bWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgYmFzZUNlbGwpID09IEludmFsaWRQcm90b3R5cGVD
aGFpbikKKworICAgICAgICAgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSBlbWl0UHV0VHJh
bnNpdGlvblN0dWJBbmRHZXRPbGRTdHJ1Y3R1cmUoZXhlYywgdm0sIHN0cnVjdHVyZSwgaWRlbnQs
IHNsb3QsIHN0dWJJbmZvLCBwdXRLaW5kKTsKKyAgICAgICAgICAgIGlmICghb2xkU3RydWN0dXJl
KQogICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBTdHJ1Y3R1cmVDaGFpbiogcHJvdG90eXBlQ2hhaW4gPSBzdHJ1Y3R1cmUtPnBy
b3RvdHlwZUNoYWluKGV4ZWMpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBlbWl0UHV0VHJh
bnNpdGlvblN0dWIoCi0gICAgICAgICAgICAgICAgZXhlYywgYmFzZVZhbHVlLCBpZGVudCwgc2xv
dCwgc3R1YkluZm8sIHB1dEtpbmQsCi0gICAgICAgICAgICAgICAgc3RydWN0dXJlLCBvbGRTdHJ1
Y3R1cmUsIHByb3RvdHlwZUNoYWluLAotICAgICAgICAgICAgICAgIHN0dWJJbmZvLmNhbGxSZXR1
cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvU2xvd0Nh
c2UpLAotICAgICAgICAgICAgICAgIHN0dWJJbmZvLnN0dWJSb3V0aW5lKTsKLSAgICAgICAgICAg
IAogICAgICAgICAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKGNvZGVCbG9jayk7CiAg
ICAgICAgICAgICByZXBhdGNoQnVmZmVyLnJlbGluaygKICAgICAgICAgICAgICAgICBzdHViSW5m
by5jYWxsUmV0dXJuTG9jYXRpb24uanVtcEF0T2Zmc2V0KApAQCAtMTI5NCw2ICsxMjk2LDcgQEAg
c3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRChFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgYmFzZVZhbHVlLCBjb24KICAgICAgICAgc3R1YkluZm8uaW5pdFB1dEJ5SWRSZXBs
YWNlKCp2bSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKICAgICAg
ICAgcmV0dXJuIFJldHJ5Q2FjaGVMYXRlcjsKICAgICB9CisKICAgICBpZiAoKHNsb3QuaXNDYWNo
ZWFibGVDdXN0b20oKSB8fCBzbG90LmlzQ2FjaGVhYmxlU2V0dGVyKCkpCiAgICAgICAgICYmIHN0
dWJJbmZvLnBhdGNoLnNwaWxsTW9kZSA9PSBEb250U3BpbGwpIHsKICAgICAgICAgUmVmUHRyPEpJ
VFN0dWJSb3V0aW5lPiBzdHViUm91dGluZTsKQEAgLTEzMDIsMTAgKzEzMDUsOSBAQCBzdGF0aWMg
SW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBiYXNlVmFsdWUsIGNvbgogICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzbG90LmNh
Y2hlZE9mZnNldCgpOwogICAgICAgICBzaXplX3QgY291bnQgPSAwOwogICAgICAgICBpZiAoYmFz
ZVZhbHVlICE9IHNsb3QuYmFzZSgpKSB7Ci0gICAgICAgICAgICBjb3VudCA9IG5vcm1hbGl6ZVBy
b3RvdHlwZUNoYWluRm9yQ2hhaW5BY2Nlc3MoZXhlYywgYmFzZUNlbGwsIHNsb3QuYmFzZSgpLCBp
ZGVudCwgb2Zmc2V0KTsKKyAgICAgICAgICAgIGNvdW50ID0gbm9ybWFsaXplUHJvdG90eXBlQ2hh
aW5Gb3JDaGFpbkFjY2VzcyhleGVjLCBzdHJ1Y3R1cmUsIHNsb3QuYmFzZSgpLCBpZGVudCwgb2Zm
c2V0KTsKICAgICAgICAgICAgIGlmIChjb3VudCA9PSBJbnZhbGlkUHJvdG90eXBlQ2hhaW4pCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7Ci0KICAgICAgICAgICAgIHByb3Rv
dHlwZUNoYWluID0gc3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihleGVjKTsKICAgICAgICAgfQog
ICAgICAgICBQb2x5bW9ycGhpY1B1dEJ5SWRMaXN0KiBsaXN0OwpAQCAtMTMzMywxMSArMTMzNSwx
MSBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSBiYXNlVmFsdWUsIGNvbgogICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwog
fQogCi12b2lkIHJlcGF0Y2hQdXRCeUlEKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFs
dWUsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgY29uc3QgUHV0UHJvcGVydHlTbG90
JiBzbG90LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIFB1dEtpbmQgcHV0S2luZCkKK3Zv
aWQgcmVwYXRjaFB1dEJ5SUQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgY29uc3Qg
UHV0UHJvcGVydHlTbG90JiBzbG90LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIFB1dEtp
bmQgcHV0S2luZCkKIHsKICAgICBHQ1NhZmVDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihleGVj
LT5jb2RlQmxvY2soKS0+bV9sb2NrLCBleGVjLT52bSgpLmhlYXApOwogICAgIAotICAgIGlmICh0
cnlDYWNoZVB1dEJ5SUQoZXhlYywgYmFzZVZhbHVlLCBwcm9wZXJ0eU5hbWUsIHNsb3QsIHN0dWJJ
bmZvLCBwdXRLaW5kKSA9PSBHaXZlVXBPbkNhY2hlKQorICAgIGlmICh0cnlDYWNoZVB1dEJ5SUQo
ZXhlYywgYmFzZVZhbHVlLCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgc2xvdCwgc3R1YkluZm8s
IHB1dEtpbmQpID09IEdpdmVVcE9uQ2FjaGUpCiAgICAgICAgIHJlcGF0Y2hDYWxsKGV4ZWMtPmNv
ZGVCbG9jaygpLCBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24sIGFwcHJvcHJpYXRlR2VuZXJp
Y1B1dEJ5SWRGdW5jdGlvbihzbG90LCBwdXRLaW5kKSk7CiB9CiAKQEAgLTEzNDYsMTYgKzEzNDgs
OSBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5QnVpbGRQdXRCeUlkTGlzdChFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLAogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0g
ZXhlYy0+Y29kZUJsb2NrKCk7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAKLSAgICBpZiAo
IWJhc2VWYWx1ZS5pc0NlbGwoKSB8fCAhc3RydWN0dXJlKQotICAgICAgICByZXR1cm4gR2l2ZVVw
T25DYWNoZTsKLSAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOwotCi0g
ICAgaWYgKGJhc2VDZWxsLT5zdHJ1Y3R1cmUoKnZtKS0+aWQoKSAhPSBzdHJ1Y3R1cmUtPmlkKCkp
CisgICAgaWYgKCFiYXNlVmFsdWUuaXNDZWxsKCkpCiAgICAgICAgIHJldHVybiBHaXZlVXBPbkNh
Y2hlOwogCi0gICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmUtPnByZXZpb3Vz
SUQoKTsKLSAgICAKLSAgICAKICAgICBpZiAoIXNsb3QuaXNDYWNoZWFibGVQdXQoKSAmJiAhc2xv
dC5pc0NhY2hlYWJsZUN1c3RvbSgpICYmICFzbG90LmlzQ2FjaGVhYmxlU2V0dGVyKCkpCiAgICAg
ICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogCkBAIC0xMzY4LDQyICsxMzYzLDIzIEBAIHN0YXRp
YyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlCdWlsZFB1dEJ5SWRMaXN0KEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBiYXNlVmFsdWUsCiAgICAgICAgIFJlZlB0cjxKSVRTdHViUm91dGluZT4gc3R1YlJv
dXRpbmU7CiAgICAgICAgIAogICAgICAgICBpZiAoc2xvdC50eXBlKCkgPT0gUHV0UHJvcGVydHlT
bG90OjpOZXdQcm9wZXJ0eSkgewotICAgICAgICAgICAgaWYgKHN0cnVjdHVyZS0+aXNEaWN0aW9u
YXJ5KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7Ci0gICAgICAgICAg
ICAKLSAgICAgICAgICAgIC8vIFNraXAgb3B0aW1pemluZyB0aGUgY2FzZSB3aGVyZSB3ZSBuZWVk
IGEgcmVhbGxvYywgaWYgd2UgZG9uJ3QgaGF2ZQotICAgICAgICAgICAgLy8gZW5vdWdoIHJlZ2lz
dGVycyB0byBtYWtlIGl0IGhhcHBlbi4KLSAgICAgICAgICAgIGlmIChHUFJJbmZvOjpudW1iZXJP
ZlJlZ2lzdGVycyA8IDYKLSAgICAgICAgICAgICAgICAmJiBvbGRTdHJ1Y3R1cmUtPm91dE9mTGlu
ZUNhcGFjaXR5KCkgIT0gc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpCi0gICAgICAgICAg
ICAgICAgJiYgb2xkU3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKQotICAgICAgICAgICAg
ICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICAvLyBT
a2lwIG9wdGltaXppbmcgdGhlIGNhc2Ugd2hlcmUgd2UgbmVlZCByZWFsbG9jLCBhbmQgdGhlIHN0
cnVjdHVyZSBoYXMKLSAgICAgICAgICAgIC8vIGluZGV4aW5nIHN0b3JhZ2UuCi0gICAgICAgICAg
ICBpZiAob2xkU3RydWN0dXJlLT5jb3VsZEhhdmVJbmRleGluZ0hlYWRlcigpKQotICAgICAgICAg
ICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBp
ZiAobm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgYmFzZUNlbGwpID09IEludmFsaWRQcm90
b3R5cGVDaGFpbikKLSAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKLSAgICAg
ICAgICAgIAotICAgICAgICAgICAgU3RydWN0dXJlQ2hhaW4qIHByb3RvdHlwZUNoYWluID0gc3Ry
dWN0dXJlLT5wcm90b3R5cGVDaGFpbihleGVjKTsKLSAgICAgICAgICAgIAogICAgICAgICAgICAg
bGlzdCA9IFBvbHltb3JwaGljUHV0QnlJZExpc3Q6OmZyb20ocHV0S2luZCwgc3R1YkluZm8pOwog
ICAgICAgICAgICAgaWYgKGxpc3QtPmlzRnVsbCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBH
aXZlVXBPbkNhY2hlOyAvLyBXaWxsIGdldCBoZXJlIGR1ZSB0byByZWN1cnNpb24uCi0gICAgICAg
ICAgICAKLSAgICAgICAgICAgIC8vIFdlJ3JlIG5vdyBjb21taXR0ZWQgdG8gY3JlYXRpbmcgdGhl
IHN0dWIuIE1vZ3JpZnkgdGhlIG1ldGEtZGF0YSBhY2NvcmRpbmdseS4KLSAgICAgICAgICAgIGVt
aXRQdXRUcmFuc2l0aW9uU3R1YigKLSAgICAgICAgICAgICAgICBleGVjLCBiYXNlVmFsdWUsIHBy
b3BlcnR5TmFtZSwgc2xvdCwgc3R1YkluZm8sIHB1dEtpbmQsCi0gICAgICAgICAgICAgICAgc3Ry
dWN0dXJlLCBvbGRTdHJ1Y3R1cmUsIHByb3RvdHlwZUNoYWluLAotICAgICAgICAgICAgICAgIENv
ZGVMb2NhdGlvbkxhYmVsKGxpc3QtPmN1cnJlbnRTbG93UGF0aFRhcmdldCgpKSwKLSAgICAgICAg
ICAgICAgICBzdHViUm91dGluZSk7Ci0gICAgICAgICAgICAKKworICAgICAgICAgICAgU3RydWN0
dXJlKiBvbGRTdHJ1Y3R1cmUgPSBlbWl0UHV0VHJhbnNpdGlvblN0dWJBbmRHZXRPbGRTdHJ1Y3R1
cmUoZXhlYywgdm0sIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBzbG90LCBzdHViSW5mbywgcHV0
S2luZCk7CisKKyAgICAgICAgICAgIGlmICghb2xkU3RydWN0dXJlKSAKKyAgICAgICAgICAgICAg
ICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKworICAgICAgICAgICAgU3RydWN0dXJlQ2hhaW4qIHBy
b3RvdHlwZUNoYWluID0gc3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihleGVjKTsKKyAgICAgICAg
ICAgIHN0dWJSb3V0aW5lID0gc3R1YkluZm8uc3R1YlJvdXRpbmU7CiAgICAgICAgICAgICBsaXN0
LT5hZGRBY2Nlc3MoCiAgICAgICAgICAgICAgICAgUHV0QnlJZEFjY2Vzczo6dHJhbnNpdGlvbigK
ICAgICAgICAgICAgICAgICAgICAgKnZtLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLAog
ICAgICAgICAgICAgICAgICAgICBvbGRTdHJ1Y3R1cmUsIHN0cnVjdHVyZSwgcHJvdG90eXBlQ2hh
aW4sCiAgICAgICAgICAgICAgICAgICAgIHN0dWJSb3V0aW5lKSk7CisKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIGxpc3QgPSBQb2x5bW9ycGhpY1B1dEJ5SWRMaXN0Ojpmcm9tKHB1dEtp
bmQsIHN0dWJJbmZvKTsKICAgICAgICAgICAgIGlmIChsaXN0LT5pc0Z1bGwoKSkKQEAgLTE0MTMs
MjEgKzEzODksMTkgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUJ1aWxkUHV0QnlJZExp
c3QoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgLy8gV2UncmUgbm93IGNvbW1pdHRlZCB0byBjcmVhdGluZyB0aGUgc3R1Yi4gTW9n
cmlmeSB0aGUgbWV0YS1kYXRhIGFjY29yZGluZ2x5LgogICAgICAgICAgICAgZW1pdFB1dFJlcGxh
Y2VTdHViKAotICAgICAgICAgICAgICAgIGV4ZWMsIGJhc2VWYWx1ZSwgcHJvcGVydHlOYW1lLCBz
bG90LCBzdHViSW5mbywgcHV0S2luZCwKKyAgICAgICAgICAgICAgICBleGVjLCBwcm9wZXJ0eU5h
bWUsIHNsb3QsIHN0dWJJbmZvLCAKICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUsIENvZGVMb2Nh
dGlvbkxhYmVsKGxpc3QtPmN1cnJlbnRTbG93UGF0aFRhcmdldCgpKSwgc3R1YlJvdXRpbmUpOwot
ICAgICAgICAgICAgCisKICAgICAgICAgICAgIGxpc3QtPmFkZEFjY2VzcygKICAgICAgICAgICAg
ICAgICBQdXRCeUlkQWNjZXNzOjpyZXBsYWNlKAogICAgICAgICAgICAgICAgICAgICAqdm0sIGNv
ZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksCiAgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVy
ZSwgc3R1YlJvdXRpbmUpKTsKICAgICAgICAgfQotICAgICAgICAKICAgICAgICAgUmVwYXRjaEJ1
ZmZlciByZXBhdGNoQnVmZmVyKGNvZGVCbG9jayk7CiAgICAgICAgIHJlcGF0Y2hCdWZmZXIucmVs
aW5rKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5qdW1wQXRPZmZzZXQoc3R1YkluZm8ucGF0
Y2guZGVsdGFDYWxsVG9KdW1wKSwgQ29kZUxvY2F0aW9uTGFiZWwoc3R1YlJvdXRpbmUtPmNvZGUo
KS5jb2RlKCkpKTsKLSAgICAgICAgCiAgICAgICAgIGlmIChsaXN0LT5pc0Z1bGwoKSkKICAgICAg
ICAgICAgIHJlcGF0Y2hDYWxsKHJlcGF0Y2hCdWZmZXIsIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2Nh
dGlvbiwgYXBwcm9wcmlhdGVHZW5lcmljUHV0QnlJZEZ1bmN0aW9uKHNsb3QsIHB1dEtpbmQpKTsK
LSAgICAgICAgCisKICAgICAgICAgcmV0dXJuIFJldHJ5Q2FjaGVMYXRlcjsKICAgICB9CiAKQEAg
LTE0MzgsMTIgKzE0MTIsMTIgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUJ1aWxkUHV0
QnlJZExpc3QoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwKICAgICAgICAgUHJv
cGVydHlPZmZzZXQgb2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKICAgICAgICAgc2l6ZV90
IGNvdW50ID0gMDsKICAgICAgICAgaWYgKGJhc2VWYWx1ZSAhPSBzbG90LmJhc2UoKSkgewotICAg
ICAgICAgICAgY291bnQgPSBub3JtYWxpemVQcm90b3R5cGVDaGFpbkZvckNoYWluQWNjZXNzKGV4
ZWMsIGJhc2VDZWxsLCBzbG90LmJhc2UoKSwgcHJvcGVydHlOYW1lLCBvZmZzZXQpOworICAgICAg
ICAgICAgY291bnQgPSBub3JtYWxpemVQcm90b3R5cGVDaGFpbkZvckNoYWluQWNjZXNzKGV4ZWMs
IHN0cnVjdHVyZSwgc2xvdC5iYXNlKCksIHByb3BlcnR5TmFtZSwgb2Zmc2V0KTsKICAgICAgICAg
ICAgIGlmIChjb3VudCA9PSBJbnZhbGlkUHJvdG90eXBlQ2hhaW4pCiAgICAgICAgICAgICAgICAg
cmV0dXJuIEdpdmVVcE9uQ2FjaGU7Ci0KICAgICAgICAgICAgIHByb3RvdHlwZUNoYWluID0gc3Ry
dWN0dXJlLT5wcm90b3R5cGVDaGFpbihleGVjKTsKICAgICAgICAgfQorICAgICAgICAKICAgICAg
ICAgUG9seW1vcnBoaWNQdXRCeUlkTGlzdCogbGlzdDsKICAgICAgICAgbGlzdCA9IFBvbHltb3Jw
aGljUHV0QnlJZExpc3Q6OmZyb20ocHV0S2luZCwgc3R1YkluZm8pOwogCkBAIC0xNDk0LDEwICsx
NDY4LDEyIEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlSZXBhdGNoSW4oCiAgICAgCiAg
ICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKICAgICBWTSogdm0g
PSAmZXhlYy0+dm0oKTsKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJhc2UtPnN0cnVjdHVy
ZSgpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZS0+c3RydWN0dXJlKCp2bSk7CiAg
ICAgCiAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0SWdub3JlZDsKLSAgICBzaXplX3QgY291bnQg
PSBub3JtYWxpemVQcm90b3R5cGVDaGFpbkZvckNoYWluQWNjZXNzKGV4ZWMsIGJhc2UsIHdhc0Zv
dW5kID8gc2xvdC5zbG90QmFzZSgpIDogSlNWYWx1ZSgpLCBpZGVudCwgb2Zmc2V0SWdub3JlZCk7
CisgICAgSlNWYWx1ZSBmb3VuZFNsb3RCYXNlID0gd2FzRm91bmQgPyBzbG90LnNsb3RCYXNlKCkg
OiBKU1ZhbHVlKCk7CisgICAgc2l6ZV90IGNvdW50ID0gIWZvdW5kU2xvdEJhc2UgfHwgZm91bmRT
bG90QmFzZSAhPSBiYXNlID8gCisgICAgICAgIG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluRm9yQ2hh
aW5BY2Nlc3MoZXhlYywgc3RydWN0dXJlLCBmb3VuZFNsb3RCYXNlLCBpZGVudCwgb2Zmc2V0SWdu
b3JlZCkgOiAwOwogICAgIGlmIChjb3VudCA9PSBJbnZhbGlkUHJvdG90eXBlQ2hhaW4pCiAgICAg
ICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogICAgIApkaWZmIC0tZ2l0IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvUmVwYXRjaC5oIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5o
CmluZGV4IGNiMzM0MjAuLmYzN2FjN2IgMTAwNjQ0Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1JlcGF0Y2guaAorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgKQEAg
LTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiB2b2lkIHJlcGF0Y2hHZXRCeUlEKEV4ZWNT
dGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBT
dHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCBidWlsZEdldEJ5SURMaXN0KEV4ZWNTdGF0ZSosIEpT
VmFsdWUsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVT
dHViSW5mbyYpOwogdm9pZCBidWlsZEdldEJ5SURQcm90b0xpc3QoRXhlY1N0YXRlKiwgSlNWYWx1
ZSwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYsIFN0cnVjdHVyZVN0dWJJ
bmZvJik7Ci12b2lkIHJlcGF0Y2hQdXRCeUlEKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElk
ZW50aWZpZXImLCBjb25zdCBQdXRQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIFB1
dEtpbmQpOwordm9pZCByZXBhdGNoUHV0QnlJRChFeGVjU3RhdGUqLCBKU1ZhbHVlLCBTdHJ1Y3R1
cmUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHV0UHJvcGVydHlTbG90JiwgU3RydWN0dXJl
U3R1YkluZm8mLCBQdXRLaW5kKTsKIHZvaWQgYnVpbGRQdXRCeUlkTGlzdChFeGVjU3RhdGUqLCBK
U1ZhbHVlLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHV0UHJvcGVydHlT
bG90JiwgU3RydWN0dXJlU3R1YkluZm8mLCBQdXRLaW5kKTsKIHZvaWQgcmVwYXRjaEluKEV4ZWNT
dGF0ZSosIEpTQ2VsbCosIGNvbnN0IElkZW50aWZpZXImLCBib29sIHdhc0ZvdW5kLCBjb25zdCBQ
cm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCBsaW5rRm9yKEV4ZWNTdGF0
ZSosIENhbGxMaW5rSW5mbyYsIENvZGVCbG9jayosIEpTRnVuY3Rpb24qIGNhbGxlZSwgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLCBSZWdpc3RlclByZXNlcnZh
dGlvbk1vZGUpOwpkaWZmIC0tZ2l0IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5jcHAgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNw
cAppbmRleCBhYWEzZWRmLi44NWJhYzI2IDEwMDY0NAotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtNjY1LDcgKzY2NSw3IEBAIExMSU5UX1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9wdXRfYnlfaWQpCiAgICAgICAgICAgICAgICAgICAgIC8vIGJlbG93IG1h
eSBHQy4KICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBMTEludDo6Z2V0T3Bj
b2RlKG9wX3B1dF9ieV9pZCk7CiAKLSAgICAgICAgICAgICAgICAgICAgaWYgKG5vcm1hbGl6ZVBy
b3RvdHlwZUNoYWluKGV4ZWMsIGJhc2VDZWxsKSAhPSBJbnZhbGlkUHJvdG90eXBlQ2hhaW4pIHsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluKGV4ZWMsIHN0
cnVjdHVyZSkgIT0gSW52YWxpZFByb3RvdHlwZUNoYWluKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBBU1NFUlQoc3RydWN0dXJlLT5wcmV2aW91c0lEKCktPmlzT2JqZWN0KCkpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgcGNbNF0udS5zdHJ1Y3R1cmUuc2V0KAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZtLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUt
PnByZXZpb3VzSUQoKSk7CmRpZmYgLS1naXQgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmggU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgKaW5kZXggZGM0YjdjMi4uZWUxOGFiZiAxMDA2NDQK
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRv
ci5oCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1l
cmF0b3IuaApAQCAtMTQ2LDcgKzE0Niw3IEBAIGlubGluZSBKU1Byb3BlcnR5TmFtZUVudW1lcmF0
b3IqIGdlbmVyaWNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKEV4ZWNTdGF0ZSogZXhlYywKICAgICBl
bHNlCiAgICAgICAgIGJhc2UtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0UHJvcGVydHlOYW1lcyhiYXNl
LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKICAgICAK
LSAgICBub3JtYWxpemVQcm90b3R5cGVDaGFpbihleGVjLCBiYXNlKTsKKyAgICBub3JtYWxpemVQ
cm90b3R5cGVDaGFpbihleGVjLCBzdHJ1Y3R1cmUpOwogCiAgICAgSlNQcm9wZXJ0eU5hbWVFbnVt
ZXJhdG9yKiBlbnVtZXJhdG9yID0gSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpjcmVhdGUodm0s
IGJhc2UtPnN0cnVjdHVyZSh2bSksIHByb3BlcnR5TmFtZXMpOwogICAgIGVudW1lcmF0b3ItPnNl
dENhY2hlZFByb3RvdHlwZUNoYWluKHZtLCBzdHJ1Y3R1cmUtPnByb3RvdHlwZUNoYWluKGV4ZWMp
KTsKZGlmZiAtLWdpdCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCmluZGV4IGJkNDVjMjIu
LmJiODJjYjYgMTAwNjQ0Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRp
b25zLmgKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaApAQCAt
MTk0LDY1ICsxOTQsNjUgQEAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzQWRkKENhbGxGcmFtZSog
Y2FsbEZyYW1lLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQogCiAjZGVmaW5lIEludmFsaWRQcm90
b3R5cGVDaGFpbiAoc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSkKIAotaW5saW5l
IHNpemVfdCBub3JtYWxpemVQcm90b3R5cGVDaGFpbkZvckNoYWluQWNjZXNzKENhbGxGcmFtZSog
Y2FsbEZyYW1lLCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQmIHNsb3RPZmZzZXQpCitpbmxpbmUgc2l6
ZV90IG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluRm9yQ2hhaW5BY2Nlc3MoQ2FsbEZyYW1lKiBjYWxs
RnJhbWUsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiBzbG90T2Zmc2V0KQogewogICAg
IFZNJiB2bSA9IGNhbGxGcmFtZS0+dm0oKTsKLSAgICBKU0NlbGwqIGNlbGwgPSBiYXNlLmFzQ2Vs
bCgpOwogICAgIHNpemVfdCBjb3VudCA9IDA7CiAgICAgICAgIAotICAgIHdoaWxlICghc2xvdEJh
c2UgfHwgc2xvdEJhc2UgIT0gY2VsbCkgewotICAgICAgICBpZiAoY2VsbC0+aXNQcm94eSgpKQor
ICAgIHdoaWxlICgxKSB7CisgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmlzUHJveHkoKSkKICAgICAg
ICAgICAgIHJldHVybiBJbnZhbGlkUHJvdG90eXBlQ2hhaW47CiAKLSAgICAgICAgY29uc3QgVHlw
ZUluZm8mIHR5cGVJbmZvID0gY2VsbC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCk7CisgICAgICAg
IGNvbnN0IFR5cGVJbmZvJiB0eXBlSW5mbyA9IHN0cnVjdHVyZS0+dHlwZUluZm8oKTsKICAgICAg
ICAgaWYgKHR5cGVJbmZvLmhhc0ltcHVyZUdldE93blByb3BlcnR5U2xvdCgpICYmICF0eXBlSW5m
by5uZXdJbXB1cmVQcm9wZXJ0eUZpcmVzV2F0Y2hwb2ludHMoKSkKICAgICAgICAgICAgIHJldHVy
biBJbnZhbGlkUHJvdG90eXBlQ2hhaW47CiAgICAgICAgICAgICAKLSAgICAgICAgSlNWYWx1ZSB2
ID0gY2VsbC0+c3RydWN0dXJlKCktPnByb3RvdHlwZUZvckxvb2t1cChjYWxsRnJhbWUpOworICAg
ICAgICBKU1ZhbHVlIHYgPSBzdHJ1Y3R1cmUtPnByb3RvdHlwZUZvckxvb2t1cChjYWxsRnJhbWUp
OwogCi0gICAgICAgIC8vIElmIHdlIGRpZG4ndCBmaW5kIHNsb3RCYXNlIGluIGJhc2UncyBwcm90
b3R5cGUgY2hhaW4sIHRoZW4gYmFzZQorICAgICAgICAvLyBJZiB3ZSBkaWRuJ3QgZmluZCBzbG90
QmFzZSBpbiB0aGUgYmFzZSdzIHByb3RvdHlwZSBjaGFpbiwgdGhlbiB0aGUgYmFzZQogICAgICAg
ICAvLyBtdXN0IGJlIGEgcHJveHkgZm9yIGFub3RoZXIgb2JqZWN0LgogCiAgICAgICAgIGlmICh2
LmlzTnVsbCgpKSB7CiAgICAgICAgICAgICBpZiAoIXNsb3RCYXNlKQotICAgICAgICAgICAgICAg
IHJldHVybiBjb3VudDsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIHJldHVy
biBJbnZhbGlkUHJvdG90eXBlQ2hhaW47CiAgICAgICAgIH0KIAotICAgICAgICBjZWxsID0gdi5h
c0NlbGwoKTsKLQorICAgICAgICBKU0NlbGwqIGNlbGwgPSB2LmFzQ2VsbCgpOworICAgICAgICBz
dHJ1Y3R1cmUgPSBjZWxsLT5zdHJ1Y3R1cmUodm0pOwogICAgICAgICAvLyBTaW5jZSB3ZSdyZSBh
Y2Nlc3NpbmcgYSBwcm90b3R5cGUgaW4gYSBsb29wLCBpdCdzIGEgZ29vZCBiZXQgdGhhdCBpdAog
ICAgICAgICAvLyBzaG91bGQgbm90IGJlIHRyZWF0ZWQgYXMgYSBkaWN0aW9uYXJ5LgotICAgICAg
ICBpZiAoY2VsbC0+c3RydWN0dXJlKHZtKS0+aXNEaWN0aW9uYXJ5KCkpIHsKLSAgICAgICAgICAg
IGFzT2JqZWN0KGNlbGwpLT5mbGF0dGVuRGljdGlvbmFyeU9iamVjdChjYWxsRnJhbWUtPnZtKCkp
OworICAgICAgICBpZiAoc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkgeworICAgICAgICAgICAg
c3RydWN0dXJlLT5mbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZSh2bSwgYXNPYmplY3QoY2VsbCkp
OwogICAgICAgICAgICAgaWYgKHNsb3RCYXNlID09IGNlbGwpCi0gICAgICAgICAgICAgICAgc2xv
dE9mZnNldCA9IGNlbGwtPnN0cnVjdHVyZSh2bSktPmdldChjYWxsRnJhbWUtPnZtKCksIHByb3Bl
cnR5TmFtZSk7IAorICAgICAgICAgICAgICAgIHNsb3RPZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCh2
bSwgcHJvcGVydHlOYW1lKTsgCiAgICAgICAgIH0KLSAgICAgICAgICAgIAogICAgICAgICArK2Nv
dW50OworCisgICAgICAgIGlmIChzbG90QmFzZSA9PSBjZWxsKQorICAgICAgICAgICAgYnJlYWs7
CiAgICAgfQogICAgICAgICAKICAgICByZXR1cm4gY291bnQ7CiB9CiAKLWlubGluZSBzaXplX3Qg
bm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTQ2VsbCogYmFz
ZSkKK2lubGluZSBzaXplX3Qgbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oQ2FsbEZyYW1lKiBjYWxs
RnJhbWUsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIFZNJiB2bSA9IGNhbGxGcmFtZS0+
dm0oKTsKICAgICBzaXplX3QgY291bnQgPSAwOwogICAgIHdoaWxlICgxKSB7Ci0gICAgICAgIGlm
IChiYXNlLT5pc1Byb3h5KCkpCisgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmlzUHJveHkoKSkKICAg
ICAgICAgICAgIHJldHVybiBJbnZhbGlkUHJvdG90eXBlQ2hhaW47Ci0gICAgICAgICAgICAKLSAg
ICAgICAgSlNWYWx1ZSB2ID0gYmFzZS0+c3RydWN0dXJlKHZtKS0+cHJvdG90eXBlRm9yTG9va3Vw
KGNhbGxGcmFtZSk7CisgICAgICAgIEpTVmFsdWUgdiA9IHN0cnVjdHVyZS0+cHJvdG90eXBlRm9y
TG9va3VwKGNhbGxGcmFtZSk7CiAgICAgICAgIGlmICh2LmlzTnVsbCgpKQogICAgICAgICAgICAg
cmV0dXJuIGNvdW50OwogCi0gICAgICAgIGJhc2UgPSB2LmFzQ2VsbCgpOwotCisgICAgICAgIEpT
Q2VsbCogYmFzZSA9IHYuYXNDZWxsKCk7CisgICAgICAgIHN0cnVjdHVyZSA9IGJhc2UtPnN0cnVj
dHVyZSh2bSk7CiAgICAgICAgIC8vIFNpbmNlIHdlJ3JlIGFjY2Vzc2luZyBhIHByb3RvdHlwZSBp
biBhIGxvb3AsIGl0J3MgYSBnb29kIGJldCB0aGF0IGl0CiAgICAgICAgIC8vIHNob3VsZCBub3Qg
YmUgdHJlYXRlZCBhcyBhIGRpY3Rpb25hcnkuCi0gICAgICAgIGlmIChiYXNlLT5zdHJ1Y3R1cmUo
dm0pLT5pc0RpY3Rpb25hcnkoKSkKLSAgICAgICAgICAgIGFzT2JqZWN0KGJhc2UpLT5mbGF0dGVu
RGljdGlvbmFyeU9iamVjdChjYWxsRnJhbWUtPnZtKCkpOworICAgICAgICBpZiAoc3RydWN0dXJl
LT5pc0RpY3Rpb25hcnkoKSkKKyAgICAgICAgICAgIHN0cnVjdHVyZS0+ZmxhdHRlbkRpY3Rpb25h
cnlTdHJ1Y3R1cmUodm0sIGFzT2JqZWN0KGJhc2UpKTsKIAogICAgICAgICArK2NvdW50OwogICAg
IH0KZGlmZiAtLWdpdCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW96aWxsYS9tb3ppbGxh
LXRlc3RzLnlhbWwgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vemlsbGEvbW96aWxsYS10
ZXN0cy55YW1sCmluZGV4IGVjZWIzZjcuLjNkY2Y1MzcgMTAwNjQ0Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvbW96aWxsYS9tb3ppbGxhLXRlc3RzLnlhbWwKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9tb3ppbGxhL21vemlsbGEtdGVzdHMueWFtbApAQCAtNzg5LDggKzc4
OSw4IEBACiAgIGNtZDogZGVmYXVsdFJ1bk1vemlsbGFUZXN0IDpub3JtYWwsICIuLi9zaGVsbC5q
cyIKIC0gcGF0aDogZWNtYS9MZXhpY2FsQ29udmVudGlvbnMvNy43LjMtMi5qcwogICBjbWQ6IGRl
ZmF1bHRSdW5Nb3ppbGxhVGVzdCA6bm9ybWFsLCAiLi4vc2hlbGwuanMiCi0tIHBhdGg6IGVjbWEv
TGV4aWNhbENvbnZlbnRpb25zLzcuNy4zLmpzCi0gIGNtZDogZGVmYXVsdFJ1bk1vemlsbGFUZXN0
IDpub3JtYWwsICIuLi9zaGVsbC5qcyIKKyMgLSBwYXRoOiBlY21hL0xleGljYWxDb252ZW50aW9u
cy83LjcuMy5qcworIyAgIGNtZDogZGVmYXVsdFJ1bk1vemlsbGFUZXN0IDpub3JtYWwsICIuLi9z
aGVsbC5qcyIKIC0gcGF0aDogZWNtYS9MZXhpY2FsQ29udmVudGlvbnMvNy43LjQuanMKICAgY21k
OiBkZWZhdWx0UnVuTW96aWxsYVRlc3QgOm5vcm1hbCwgIi4uL3NoZWxsLmpzIgogLSBwYXRoOiBl
Y21hL0xleGljYWxDb252ZW50aW9ucy83LjguMi1uLmpzCmRpZmYgLS1naXQgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9pbnZhbGlkX2FycmF5LmpzIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvaW52YWxpZF9hcnJheS5qcwppbmRleCBmMzJjNTNjLi5hYzk4NDk5
IDEwMDY0NAotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9pbnZhbGlkX2Fy
cmF5LmpzCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2ludmFsaWRfYXJy
YXkuanMKQEAgLTEsNyArMSw3IEBACiAvLyBkZWJ1Zy1qcyAtcyAtLWVuYWJsZUNvbmN1cnJlbnRK
SVQ9ZmFsc2UgLS10aHJlc2hvbGRGb3JKSVRBZnRlcldhcm1VcD0xIC0tdGhyZXNob2xkRm9yT3B0
aW1pemVBZnRlcldhcm1VcD0yCiAKIGZ1bmN0aW9uIFRlc3RDYXNlKGEpIHsKLQl0aGlzLmFjdHVh
bAk9IDAuMTsKKyAgICB0aGlzLmFjdHVhbCA9IDAuMTsKIH0KIAogdmFyIHRlc3RjYXNlcyA9IG5l
dyBBcnJheSgpOwpkaWZmIC0tZ2l0IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
cHJvdG8tc2V0dGVyLmpzIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcHJvdG8t
c2V0dGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzYjdhZmEKLS0t
IC9kZXYvbnVsbAorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9wcm90by1z
ZXR0ZXIuanMKQEAgLTAsMCArMSw4IEBACisvLyBSZWdFeHAuaW5wdXQgaXMgYSBoYW5keSBzZXR0
ZXIKKwordmFyIG8gPSB7fTsKKworZm9yICh2YXIgayA9IDA7IGsgPCA5OyBrKyspIHsKKyAgICBv
ID0ge19fcHJvdG9fXyA6IG8gfTsKK30KKwpkaWZmIC0tZ2l0IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvcHV0LWJ5LWlkLWJ1aWxkLWxpc3Qtb3JkZXItcmVjdXJzZS5qcyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3B1dC1ieS1pZC1idWlsZC1saXN0LW9yZGVy
LXJlY3Vyc2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDlkMDIxOQot
LS0gL2Rldi9udWxsCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3B1dC1i
eS1pZC1idWlsZC1saXN0LW9yZGVyLXJlY3Vyc2UuanMKQEAgLTAsMCArMSwzNSBAQAordmFyIGNv
dW50ID0gMDsKKworZnVuY3Rpb24gc2V0dGVyKHZhbHVlKSB7CisgICAgT2JqZWN0LmRlZmluZVBy
b3BlcnR5KAorICAgICAgICB0aGlzLCAiZiIsIHsKKyAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSwK
KyAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsCisgICAgICAgICAgICAgICAgd3Jp
dGFibGU6IHRydWUsCisgICAgICAgICAgICAgICAgdmFsdWU6IDMyCisgICAgICAgICAgICAgICAg
fSk7CisgICAgdmFyIG8gPSBPYmplY3QuY3JlYXRlKHRoaXMpOworICAgIHZhciBjdXJyZW50Q291
bnQgPSBjb3VudCsrOworICAgIHZhciBzdHIgPSAiZm9yICh2YXIgaSA9ICIgKyBjdXJyZW50Q291
bnQgKyAiOyBpIDwgIiArICgxMDAgKyBjdXJyZW50Q291bnQpICsgIjsgKytpKVxuIgorICAgICAg
ICAgICAgKyAiICAgIG8uZlxuIjsKKyAgICBldmFsKHN0cik7Cit9CisKK2Z1bmN0aW9uIGZvbyhv
KSB7CisgICAgby5mID0gNDI7Cit9CisKK25vSW5saW5lKGZvbyk7CisKK2ZvciAodmFyIGkgPSAw
OyBpIDwgMTAwMDsgKytpKSB7CisgICAgdmFyIG8gPSB7fTsKKyAgICBvLl9fZGVmaW5lU2V0dGVy
X18oImYiLCBzZXR0ZXIpOworCisgICAgZm9vKG8pOworICAgIGlmIChvLmYgIT0gMzIpCisgICAg
ICAgIHRocm93ICgiRXJyb3IgMTogIitvLmYpOworCisgICAgZm9vKG8pOworICAgIGlmIChvLmYg
IT0gNDIpCisgICAgICAgIHRocm93ICgiRXJyb3IgMjogIitvLmYpOworfQpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUK
</data>
<flag name="review"
          id="269493"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
    <flag name="commit-queue"
          id="269494"
          type_id="3"
          status="-"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244553</attachid>
            <date>2015-01-13 15:07:24 -0800</date>
            <delta_ts>2015-01-14 11:26:01 -0800</delta_ts>
            <desc>Fixes operationPutByIdOptimizes such that they save the structure before the put</desc>
            <filename>0002-Fixes-operationPutByIdOptimizes-such-that-they-check.patch</filename>
            <type>text/plain</type>
            <size>29700</size>
            <attacher name="Matthew Mirman">mmirman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggZTE3YjQzMC4uMzM5NDE1NiAxMDA2NDQKLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw0MSBAQAorMjAxNS0wMS0xMyAgTWF0dGhldyBNaXJtYW4gIDxtbWly
bWFuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXhlcyBvcGVyYXRpb25QdXRCeUlkT3B0aW1pemVz
IHN1Y2ggdGhhdCB0aGV5IGNoZWNrIHRoYXQgdGhlIHB1dCBkaWRuJ3QKKyAgICAgICAgY2hhbmdl
IHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIG9iamVjdCB3aG8ncyBwcm9wZXJ0eSBhY2Nlc3MgaXMgYmVp
bmcKKyAgICAgICAgY2FjaGVkLiAgQWxzbyByZW1vdmVzIHVzZXMgb2YgdGhlIG5ldyBiYXNlIHZh
bHVlIGZyb20gdGhlIGNhY2hlIGdlbmVyYXRpb24gY29kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzOTUwMAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAg
ICAgICAoSlNDOjpvcGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemUpOiBzYXZlZCB0aGUgc3Ry
dWN0dXJlIGJlZm9yZSB0aGUgcHV0LgorICAgICAgICAoSlNDOjpvcGVyYXRpb25QdXRCeUlkTm9u
U3RyaWN0T3B0aW1pemUpOiBkaXR0by4KKyAgICAgICAgKEpTQzo6b3BlcmF0aW9uUHV0QnlJZERp
cmVjdFN0cmljdE9wdGltaXplKTogZGl0dG8uCisgICAgICAgIChKU0M6Om9wZXJhdGlvblB1dEJ5
SWREaXJlY3ROb25TdHJpY3RPcHRpbWl6ZSk6IGRpdHRvLgorICAgICAgICAqIGppdC9SZXBhdGNo
LmNwcDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVCeUlkU3R1Yik6CisgICAgICAgIChKU0M6OnRy
eUNhY2hlR2V0QnlJRCk6CisgICAgICAgIChKU0M6OnRyeUJ1aWxkR2V0QnlJRExpc3QpOgorICAg
ICAgICAoSlNDOjplbWl0UHV0UmVwbGFjZVN0dWIpOgorICAgICAgICAoSlNDOjplbWl0UHV0VHJh
bnNpdGlvblN0dWJBbmRHZXRPbGRTdHJ1Y3R1cmUpOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6dHJ5
Q2FjaGVQdXRCeUlEKToKKyAgICAgICAgKEpTQzo6cmVwYXRjaFB1dEJ5SUQpOgorICAgICAgICAo
SlNDOjp0cnlCdWlsZFB1dEJ5SWRMaXN0KToKKyAgICAgICAgKEpTQzo6dHJ5UmVwYXRjaEluKToK
KyAgICAgICAgKEpTQzo6ZW1pdFB1dFRyYW5zaXRpb25TdHViKTogRGVsZXRlZC4KKyAgICAgICAg
KiBqaXQvUmVwYXRjaC5oOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAg
ICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50
aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oOgorICAgICAgICAoSlNDOjpnZW5lcmljUHJv
cGVydHlOYW1lRW51bWVyYXRvcik6CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmg6Cisg
ICAgICAgIChKU0M6Om5vcm1hbGl6ZVByb3RvdHlwZUNoYWluRm9yQ2hhaW5BY2Nlc3MpOiByZXN0
cnVjdHVyZWQgdG8gbm90IHVzZSB0aGUgYmFzZSB2YWx1ZS4KKyAgICAgICAgKEpTQzo6bm9ybWFs
aXplUHJvdG90eXBlQ2hhaW4pOiByZXN0cnVjdHVyZWQgdG8gbm90IHVzZSB0aGUgYmFzZSB2YWx1
ZS4KKyAgICAgICAgKiB0ZXN0cy9tb3ppbGxhL21vemlsbGEtdGVzdHMueWFtbDoKKyAgICAgICAg
KiB0ZXN0cy9zdHJlc3MvcHJvdG8tc2V0dGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9z
dHJlc3MvcHV0LWJ5LWlkLWJ1aWxkLWxpc3Qtb3JkZXItcmVjdXJzZS5qczogQWRkZWQuCisgICAg
ICAgIEFkZGVkIHRlc3QgdGhhdCBmYWlscyB3aXRob3V0IHRoaXMgcGF0Y2guCisKIDIwMTUtMDEt
MTMgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIg
SW5zcGVjdG9yOiBSZW1vdmUgdW51c2VkIFJlc2l6ZUltYWdlIGFuZCBEZWNvZGVJbWFnZURhdGEg
dGltZWxpbmUgZXZlbnRzCmRpZmYgLS1naXQgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmNwcCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3Bw
CmluZGV4IGViM2M4OTUuLjM3YWE0NWQgMTAwNjQ0Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuY3BwCkBAIC0yNzMsMTQgKzI3MywxNSBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1
YgogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAg
ICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CiAgICAg
UHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCB0cnVlLCBleGVjLT5jb2RlQmxvY2soKS0+
cHV0QnlJZENvbnRleHQoKSk7Ci0gICAgCisKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJh
c2VWYWx1ZS5pc0NlbGwoKSA/IGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKCp2bSkgOiBu
dWxscHRyOwogICAgIGJhc2VWYWx1ZS5wdXQoZXhlYywgaWRlbnQsIHZhbHVlLCBzbG90KTsKICAg
ICAKICAgICBpZiAoYWNjZXNzVHlwZSAhPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5m
by0+YWNjZXNzVHlwZSkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBpZiAoc3R1YkluZm8t
PnNlZW4pCi0gICAgICAgIHJlcGF0Y2hQdXRCeUlEKGV4ZWMsIGJhc2VWYWx1ZSwgaWRlbnQsIHNs
b3QsICpzdHViSW5mbywgTm90RGlyZWN0KTsKKyAgICAgICAgcmVwYXRjaFB1dEJ5SUQoZXhlYywg
YmFzZVZhbHVlLCBzdHJ1Y3R1cmUsIGlkZW50LCBzbG90LCAqc3R1YkluZm8sIE5vdERpcmVjdCk7
CiAgICAgZWxzZQogICAgICAgICBzdHViSW5mby0+c2VlbiA9IHRydWU7CiB9CkBAIC0yOTYsMTQg
KzI5NywxNSBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdE9w
dGltaXplKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlUwogICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFz
ZVZhbHVlLCBmYWxzZSwgZXhlYy0+Y29kZUJsb2NrKCktPnB1dEJ5SWRDb250ZXh0KCkpOwotICAg
IAorCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlVmFsdWUuaXNDZWxsKCkgPyBiYXNl
VmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSgqdm0pIDogbnVsbHB0cjsgICAgCiAgICAgYmFzZVZh
bHVlLnB1dChleGVjLCBpZGVudCwgdmFsdWUsIHNsb3QpOwogICAgIAogICAgIGlmIChhY2Nlc3NU
eXBlICE9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKSkKICAg
ICAgICAgcmV0dXJuOwogICAgIAogICAgIGlmIChzdHViSW5mby0+c2VlbikKLSAgICAgICAgcmVw
YXRjaFB1dEJ5SUQoZXhlYywgYmFzZVZhbHVlLCBpZGVudCwgc2xvdCwgKnN0dWJJbmZvLCBOb3RE
aXJlY3QpOworICAgICAgICByZXBhdGNoUHV0QnlJRChleGVjLCBiYXNlVmFsdWUsIHN0cnVjdHVy
ZSwgaWRlbnQsIHNsb3QsICpzdHViSW5mbywgTm90RGlyZWN0KTsKICAgICBlbHNlCiAgICAgICAg
IHN0dWJJbmZvLT5zZWVuID0gdHJ1ZTsKIH0KQEAgLTMyMCwxMyArMzIyLDE0IEBAIHZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1pemUoRXhlY1N0YXRl
KiBleGVjLCBTdHJ1Y3R1CiAgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpKTsKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNl
T2JqZWN0LCB0cnVlLCBleGVjLT5jb2RlQmxvY2soKS0+cHV0QnlJZENvbnRleHQoKSk7CiAgICAg
CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlT2JqZWN0LT5zdHJ1Y3R1cmUoKnZtKTsK
ICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgaWRlbnQsIHZhbHVlLCBzbG90
KTsKICAgICAKICAgICBpZiAoYWNjZXNzVHlwZSAhPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihz
dHViSW5mby0+YWNjZXNzVHlwZSkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBpZiAoc3R1
YkluZm8tPnNlZW4pCi0gICAgICAgIHJlcGF0Y2hQdXRCeUlEKGV4ZWMsIGJhc2VPYmplY3QsIGlk
ZW50LCBzbG90LCAqc3R1YkluZm8sIERpcmVjdCk7CisgICAgICAgIHJlcGF0Y2hQdXRCeUlEKGV4
ZWMsIGJhc2VPYmplY3QsIHN0cnVjdHVyZSwgaWRlbnQsIHNsb3QsICpzdHViSW5mbywgRGlyZWN0
KTsKICAgICBlbHNlCiAgICAgICAgIHN0dWJJbmZvLT5zZWVuID0gdHJ1ZTsKIH0KQEAgLTM0Mywx
MyArMzQ2LDE0IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9u
U3RyaWN0T3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1CiAgICAgSlNPYmplY3QqIGJhc2VP
YmplY3QgPSBhc09iamVjdChKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpKTsKICAgICBQdXRQ
cm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBmYWxzZSwgZXhlYy0+Y29kZUJsb2NrKCktPnB1
dEJ5SWRDb250ZXh0KCkpOwogICAgIAorICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZU9i
amVjdC0+c3RydWN0dXJlKCp2bSk7CiAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0KGV4ZWMtPnZt
KCksIGlkZW50LCB2YWx1ZSwgc2xvdCk7CiAgICAgCiAgICAgaWYgKGFjY2Vzc1R5cGUgIT0gc3Rh
dGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpKQogICAgICAgICByZXR1
cm47CiAgICAgCiAgICAgaWYgKHN0dWJJbmZvLT5zZWVuKQotICAgICAgICByZXBhdGNoUHV0QnlJ
RChleGVjLCBiYXNlT2JqZWN0LCBpZGVudCwgc2xvdCwgKnN0dWJJbmZvLCBEaXJlY3QpOworICAg
ICAgICByZXBhdGNoUHV0QnlJRChleGVjLCBiYXNlT2JqZWN0LCBzdHJ1Y3R1cmUsIGlkZW50LCBz
bG90LCAqc3R1YkluZm8sIERpcmVjdCk7CiAgICAgZWxzZQogICAgICAgICBzdHViSW5mby0+c2Vl
biA9IHRydWU7CiB9CmRpZmYgLS1naXQgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNo
LmNwcCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IGZkNmEzNzQu
Ljc2NmRlM2IgMTAwNjQ0Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3Bw
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCkBAIC0yOTcsNiArMjk3
LDcgQEAgc3RhdGljIHZvaWQgZ2VuZXJhdGVCeUlkU3R1YigKICAgICBQcm9wZXJ0eU9mZnNldCBv
ZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBib29sIGxvYWRUYXJnZXRGcm9tUHJveHksIFdh
dGNocG9pbnRTZXQqIHdhdGNocG9pbnRTZXQsCiAgICAgQ29kZUxvY2F0aW9uTGFiZWwgc3VjY2Vz
c0xhYmVsLCBDb2RlTG9jYXRpb25MYWJlbCBzbG93Q2FzZUxhYmVsLCBSZWZQdHI8SklUU3R1YlJv
dXRpbmU+JiBzdHViUm91dGluZSkKIHsKKwogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAg
IEdQUlJlZyBiYXNlR1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRjaC5iYXNl
R1BSKTsKICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSBKU1ZhbHVlUmVncygKQEAgLTM0OCw3
ICszNDksNyBAQCBzdGF0aWMgdm9pZCBnZW5lcmF0ZUJ5SWRTdHViKAogICAgIGlmICh3YXRjaHBv
aW50U2V0KQogICAgICAgICB3YXRjaHBvaW50U2V0LT5hZGQoc3R1YkluZm8uYWRkV2F0Y2hwb2lu
dChjb2RlQmxvY2spKTsKIAotICAgIFN0cnVjdHVyZSogY3VyclN0cnVjdHVyZSA9IHN0cnVjdHVy
ZTsKKyAgICBTdHJ1Y3R1cmUqIGN1cnJTdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmU7IAogICAgIEpTT2Jq
ZWN0KiBwcm90b09iamVjdCA9IDA7CiAgICAgaWYgKGNoYWluKSB7CiAgICAgICAgIFdyaXRlQmFy
cmllcjxTdHJ1Y3R1cmU+KiBpdCA9IGNoYWluLT5oZWFkKCk7CkBAIC03NDcsNyArNzQ4LDcgQEAg
c3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlR2V0QnlJRChFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgYmFzZVZhbHVlLCBjb24KICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiAK
ICAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOwotICAgIFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSgpOworICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSgqdm0pOwogCiAgICAgSW5saW5lQ2FjaGVBY3Rp
b24gYWN0aW9uID0gYWN0aW9uRm9yQ2VsbCgqdm0sIGJhc2VDZWxsKTsKICAgICBpZiAoYWN0aW9u
ICE9IEF0dGVtcHRUb0NhY2hlKQpAQCAtODMyLDEwICs4MzMsMTAgQEAgc3RhdGljIElubGluZUNh
Y2hlQWN0aW9uIHRyeUJ1aWxkR2V0QnlJRExpc3QoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJh
c2VWYWx1ZSwKICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogCiAgICAgICAgIGlm
IChzbG90LmlzVW5zZXQoKSkKLSAgICAgICAgICAgIGNvdW50ID0gbm9ybWFsaXplUHJvdG90eXBl
Q2hhaW4oZXhlYywgYmFzZUNlbGwpOworICAgICAgICAgICAgY291bnQgPSBub3JtYWxpemVQcm90
b3R5cGVDaGFpbihleGVjLCBzdHJ1Y3R1cmUpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBj
b3VudCA9IG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluRm9yQ2hhaW5BY2Nlc3MoCi0gICAgICAgICAg
ICAgICAgZXhlYywgYmFzZVZhbHVlLCBzbG90LnNsb3RCYXNlKCksIGlkZW50LCBvZmZzZXQpOwor
ICAgICAgICAgICAgICAgIGV4ZWMsIHN0cnVjdHVyZSwgc2xvdC5zbG90QmFzZSgpLCBpZGVudCwg
b2Zmc2V0KTsKICAgICAgICAgaWYgKGNvdW50ID09IEludmFsaWRQcm90b3R5cGVDaGFpbikKICAg
ICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogICAgICAgICBwcm90b3R5cGVDaGFpbiA9
IHN0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4oZXhlYyk7CkBAIC05MDcsMTEgKzkwOCw5IEBAIHN0
YXRpYyBWX0pJVE9wZXJhdGlvbl9FU3NpSkpJIGFwcHJvcHJpYXRlTGlzdEJ1aWxkaW5nUHV0QnlJ
ZEZ1bmN0aW9uKGNvbnN0IFB1dFByCiAKIHN0YXRpYyB2b2lkIGVtaXRQdXRSZXBsYWNlU3R1YigK
ICAgICBFeGVjU3RhdGUqIGV4ZWMsCi0gICAgSlNWYWx1ZSwKICAgICBjb25zdCBJZGVudGlmaWVy
JiwKICAgICBjb25zdCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QsCiAgICAgU3RydWN0dXJlU3R1Yklu
Zm8mIHN0dWJJbmZvLAotICAgIFB1dEtpbmQsCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsCiAg
ICAgQ29kZUxvY2F0aW9uTGFiZWwgZmFpbHVyZUxhYmVsLAogICAgIFJlZlB0cjxKSVRTdHViUm91
dGluZT4mIHN0dWJSb3V0aW5lKQpAQCAtOTg1LDIwICs5ODQsNDQgQEAgc3RhdGljIHZvaWQgZW1p
dFB1dFJlcGxhY2VTdHViKAogICAgICAgICAgICAgICAgIHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2Fs
bFRvRG9uZSkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogfQogCi1zdGF0aWMgdm9pZCBlbWl0UHV0
VHJhbnNpdGlvblN0dWIoCi0gICAgRXhlY1N0YXRlKiBleGVjLAotICAgIEpTVmFsdWUsCi0gICAg
Y29uc3QgSWRlbnRpZmllciYsCi0gICAgY29uc3QgUHV0UHJvcGVydHlTbG90JiBzbG90LAotICAg
IFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywKLSAgICBQdXRLaW5kIHB1dEtpbmQsCi0gICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsCi0gICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsCi0gICAg
U3RydWN0dXJlQ2hhaW4qIHByb3RvdHlwZUNoYWluLAotICAgIENvZGVMb2NhdGlvbkxhYmVsIGZh
aWx1cmVMYWJlbCwKLSAgICBSZWZQdHI8SklUU3R1YlJvdXRpbmU+JiBzdHViUm91dGluZSkKK3N0
YXRpYyBTdHJ1Y3R1cmUqIGVtaXRQdXRUcmFuc2l0aW9uU3R1YkFuZEdldE9sZFN0cnVjdHVyZShF
eGVjU3RhdGUqIGV4ZWMsIFZNKiB2bSwgU3RydWN0dXJlKiYgc3RydWN0dXJlLCBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCwgCisgICAgY29uc3QgUHV0UHJvcGVydHlTbG90JiBzbG90LCBTdHJ1Y3R1
cmVTdHViSW5mbyYgc3R1YkluZm8sIFB1dEtpbmQgcHV0S2luZCkKIHsKLSAgICBWTSogdm0gPSAm
ZXhlYy0+dm0oKTsKKyAgICBQcm9wZXJ0eU5hbWUgcG5hbWUoaWRlbnQpOworICAgIFN0cnVjdHVy
ZSogb2xkU3RydWN0dXJlID0gc3RydWN0dXJlOworICAgIGlmICghb2xkU3RydWN0dXJlLT5pc09i
amVjdCgpIHx8IG9sZFN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkgfHwgcG5hbWUuYXNJbmRleCgp
ICE9IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRleCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICBQcm9wZXJ0eU9mZnNldCBwcm9wZXJ0eU9mZnNldDsKKyAgICBzdHJ1Y3R1cmUgPSBTdHJ1
Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmVDb25jdXJyZW50
bHkob2xkU3RydWN0dXJlLCBpZGVudC5pbXBsKCksIDAsIHByb3BlcnR5T2Zmc2V0KTsKKworICAg
IGlmICghc3RydWN0dXJlIHx8ICFzdHJ1Y3R1cmUtPmlzT2JqZWN0KCkgfHwgc3RydWN0dXJlLT5p
c0RpY3Rpb25hcnkoKSB8fCAhc3RydWN0dXJlLT5wcm9wZXJ0eUFjY2Vzc2VzQXJlQ2FjaGVhYmxl
KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgLy8gU2tpcCBvcHRpbWl6aW5nIHRo
ZSBjYXNlIHdoZXJlIHdlIG5lZWQgYSByZWFsbG9jLCBpZiB3ZSBkb24ndCBoYXZlCisgICAgLy8g
ZW5vdWdoIHJlZ2lzdGVycyB0byBtYWtlIGl0IGhhcHBlbi4KKyAgICBpZiAoR1BSSW5mbzo6bnVt
YmVyT2ZSZWdpc3RlcnMgPCA2CisgICAgICAgICYmIG9sZFN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2Fw
YWNpdHkoKSAhPSBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkKKyAgICAgICAgJiYgb2xk
U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKSB7CisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIH0KKworICAgIC8vIFNraXAgb3B0aW1pemluZyB0aGUgY2FzZSB3aGVyZSB3ZSBuZWVk
IHJlYWxsb2MsIGFuZCB0aGUgc3RydWN0dXJlIGhhcworICAgIC8vIGluZGV4aW5nIHN0b3JhZ2Uu
CisgICAgLy8gRklYTUU6IFdlIHNob3VsZG4ndCBza2lwIHRoaXMhIEltcGxlbWVudCBpdCEKKyAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwOTE0CisgICAg
aWYgKG9sZFN0cnVjdHVyZS0+Y291bGRIYXZlSW5kZXhpbmdIZWFkZXIoKSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICBpZiAobm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgc3Ry
dWN0dXJlKSA9PSBJbnZhbGlkUHJvdG90eXBlQ2hhaW4pCisgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgU3RydWN0dXJlQ2hhaW4qIHByb3RvdHlwZUNoYWluID0gc3RydWN0dXJlLT5wcm90
b3R5cGVDaGFpbihleGVjKTsKKworICAgIC8vIGVtaXRQdXRUcmFuc2l0aW9uU3R1YgorCisgICAg
Q29kZUxvY2F0aW9uTGFiZWwgZmFpbHVyZUxhYmVsID0gc3R1YkluZm8uY2FsbFJldHVybkxvY2F0
aW9uLmxhYmVsQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9TbG93Q2FzZSk7Cisg
ICAgUmVmUHRyPEpJVFN0dWJSb3V0aW5lPiYgc3R1YlJvdXRpbmUgPSBzdHViSW5mby5zdHViUm91
dGluZTsKIAogICAgIEdQUlJlZyBiYXNlR1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5m
by5wYXRjaC5iYXNlR1BSKTsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQpAQCAtMTIyMiw5ICsxMjQ1
LDExIEBAIHN0YXRpYyB2b2lkIGVtaXRQdXRUcmFuc2l0aW9uU3R1YigKICAgICAgICAgICAgIGV4
ZWMtPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKSwKICAgICAgICAgICAgIHN0cnVjdHVy
ZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAhPSBvbGRTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5
KCksCiAgICAgICAgICAgICBzdHJ1Y3R1cmUpOworCisgICAgcmV0dXJuIG9sZFN0cnVjdHVyZTsK
IH0KIAotc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRChFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3Qg
UHV0UHJvcGVydHlTbG90JiBzbG90LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIFB1dEtp
bmQgcHV0S2luZCkKK3N0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNv
bnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QsIFN0cnVj
dHVyZVN0dWJJbmZvJiBzdHViSW5mbywgUHV0S2luZCBwdXRLaW5kKQogewogICAgIGlmIChPcHRp
b25zOjpmb3JjZUlDRmFpbHVyZSgpKQogICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKQEAg
LTEyMzQsNDYgKzEyNTksMjMgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0
QnlJRChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBjb24KIAogICAgIGlmICgh
YmFzZVZhbHVlLmlzQ2VsbCgpKQogICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKLSAgICBK
U0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOwotICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSgqdm0pOwotICAgIFN0cnVjdHVyZSogb2xkU3Ry
dWN0dXJlID0gc3RydWN0dXJlLT5wcmV2aW91c0lEKCk7CiAgICAgCiAgICAgaWYgKCFzbG90Lmlz
Q2FjaGVhYmxlUHV0KCkgJiYgIXNsb3QuaXNDYWNoZWFibGVDdXN0b20oKSAmJiAhc2xvdC5pc0Nh
Y2hlYWJsZVNldHRlcigpKQogICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKwogICAgIGlm
ICghc3RydWN0dXJlLT5wcm9wZXJ0eUFjY2Vzc2VzQXJlQ2FjaGVhYmxlKCkpCiAgICAgICAgIHJl
dHVybiBHaXZlVXBPbkNhY2hlOwogCiAgICAgLy8gT3B0aW1pemUgc2VsZiBhY2Nlc3MuCiAgICAg
aWYgKHNsb3QuYmFzZSgpID09IGJhc2VWYWx1ZSAmJiBzbG90LmlzQ2FjaGVhYmxlUHV0KCkpIHsK
ICAgICAgICAgaWYgKHNsb3QudHlwZSgpID09IFB1dFByb3BlcnR5U2xvdDo6TmV3UHJvcGVydHkp
IHsKLSAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKQotICAgICAgICAg
ICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICAv
LyBTa2lwIG9wdGltaXppbmcgdGhlIGNhc2Ugd2hlcmUgd2UgbmVlZCBhIHJlYWxsb2MsIGlmIHdl
IGRvbid0IGhhdmUKLSAgICAgICAgICAgIC8vIGVub3VnaCByZWdpc3RlcnMgdG8gbWFrZSBpdCBo
YXBwZW4uCi0gICAgICAgICAgICBpZiAoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgPCA2Ci0g
ICAgICAgICAgICAgICAgJiYgb2xkU3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpICE9IHN0
cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKQotICAgICAgICAgICAgICAgICYmIG9sZFN0cnVj
dHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVw
T25DYWNoZTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgLy8gU2tpcCBvcHRpbWl6aW5nIHRo
ZSBjYXNlIHdoZXJlIHdlIG5lZWQgcmVhbGxvYywgYW5kIHRoZSBzdHJ1Y3R1cmUgaGFzCi0gICAg
ICAgICAgICAvLyBpbmRleGluZyBzdG9yYWdlLgotICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNo
b3VsZG4ndCBza2lwIHRoaXMhICBJbXBsZW1lbnQgaXQhCi0gICAgICAgICAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwOTE0Ci0gICAgICAgICAgICBpZiAo
b2xkU3RydWN0dXJlLT5jb3VsZEhhdmVJbmRleGluZ0hlYWRlcigpKQotICAgICAgICAgICAgICAg
IHJldHVybiBHaXZlVXBPbkNhY2hlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAobm9y
bWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgYmFzZUNlbGwpID09IEludmFsaWRQcm90b3R5cGVD
aGFpbikKKworICAgICAgICAgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSBlbWl0UHV0VHJh
bnNpdGlvblN0dWJBbmRHZXRPbGRTdHJ1Y3R1cmUoZXhlYywgdm0sIHN0cnVjdHVyZSwgaWRlbnQs
IHNsb3QsIHN0dWJJbmZvLCBwdXRLaW5kKTsKKyAgICAgICAgICAgIGlmICghb2xkU3RydWN0dXJl
KQogICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBTdHJ1Y3R1cmVDaGFpbiogcHJvdG90eXBlQ2hhaW4gPSBzdHJ1Y3R1cmUtPnBy
b3RvdHlwZUNoYWluKGV4ZWMpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBlbWl0UHV0VHJh
bnNpdGlvblN0dWIoCi0gICAgICAgICAgICAgICAgZXhlYywgYmFzZVZhbHVlLCBpZGVudCwgc2xv
dCwgc3R1YkluZm8sIHB1dEtpbmQsCi0gICAgICAgICAgICAgICAgc3RydWN0dXJlLCBvbGRTdHJ1
Y3R1cmUsIHByb3RvdHlwZUNoYWluLAotICAgICAgICAgICAgICAgIHN0dWJJbmZvLmNhbGxSZXR1
cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvU2xvd0Nh
c2UpLAotICAgICAgICAgICAgICAgIHN0dWJJbmZvLnN0dWJSb3V0aW5lKTsKLSAgICAgICAgICAg
IAogICAgICAgICAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKGNvZGVCbG9jayk7CiAg
ICAgICAgICAgICByZXBhdGNoQnVmZmVyLnJlbGluaygKICAgICAgICAgICAgICAgICBzdHViSW5m
by5jYWxsUmV0dXJuTG9jYXRpb24uanVtcEF0T2Zmc2V0KApAQCAtMTI5NCw2ICsxMjk2LDcgQEAg
c3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRChFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgYmFzZVZhbHVlLCBjb24KICAgICAgICAgc3R1YkluZm8uaW5pdFB1dEJ5SWRSZXBs
YWNlKCp2bSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKICAgICAg
ICAgcmV0dXJuIFJldHJ5Q2FjaGVMYXRlcjsKICAgICB9CisKICAgICBpZiAoKHNsb3QuaXNDYWNo
ZWFibGVDdXN0b20oKSB8fCBzbG90LmlzQ2FjaGVhYmxlU2V0dGVyKCkpCiAgICAgICAgICYmIHN0
dWJJbmZvLnBhdGNoLnNwaWxsTW9kZSA9PSBEb250U3BpbGwpIHsKICAgICAgICAgUmVmUHRyPEpJ
VFN0dWJSb3V0aW5lPiBzdHViUm91dGluZTsKQEAgLTEzMDIsMTAgKzEzMDUsOSBAQCBzdGF0aWMg
SW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBiYXNlVmFsdWUsIGNvbgogICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzbG90LmNh
Y2hlZE9mZnNldCgpOwogICAgICAgICBzaXplX3QgY291bnQgPSAwOwogICAgICAgICBpZiAoYmFz
ZVZhbHVlICE9IHNsb3QuYmFzZSgpKSB7Ci0gICAgICAgICAgICBjb3VudCA9IG5vcm1hbGl6ZVBy
b3RvdHlwZUNoYWluRm9yQ2hhaW5BY2Nlc3MoZXhlYywgYmFzZUNlbGwsIHNsb3QuYmFzZSgpLCBp
ZGVudCwgb2Zmc2V0KTsKKyAgICAgICAgICAgIGNvdW50ID0gbm9ybWFsaXplUHJvdG90eXBlQ2hh
aW5Gb3JDaGFpbkFjY2VzcyhleGVjLCBzdHJ1Y3R1cmUsIHNsb3QuYmFzZSgpLCBpZGVudCwgb2Zm
c2V0KTsKICAgICAgICAgICAgIGlmIChjb3VudCA9PSBJbnZhbGlkUHJvdG90eXBlQ2hhaW4pCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7Ci0KICAgICAgICAgICAgIHByb3Rv
dHlwZUNoYWluID0gc3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihleGVjKTsKICAgICAgICAgfQog
ICAgICAgICBQb2x5bW9ycGhpY1B1dEJ5SWRMaXN0KiBsaXN0OwpAQCAtMTMzMywxMSArMTMzNSwx
MSBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSBiYXNlVmFsdWUsIGNvbgogICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwog
fQogCi12b2lkIHJlcGF0Y2hQdXRCeUlEKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFs
dWUsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgY29uc3QgUHV0UHJvcGVydHlTbG90
JiBzbG90LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIFB1dEtpbmQgcHV0S2luZCkKK3Zv
aWQgcmVwYXRjaFB1dEJ5SUQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgY29uc3Qg
UHV0UHJvcGVydHlTbG90JiBzbG90LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIFB1dEtp
bmQgcHV0S2luZCkKIHsKICAgICBHQ1NhZmVDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihleGVj
LT5jb2RlQmxvY2soKS0+bV9sb2NrLCBleGVjLT52bSgpLmhlYXApOwogICAgIAotICAgIGlmICh0
cnlDYWNoZVB1dEJ5SUQoZXhlYywgYmFzZVZhbHVlLCBwcm9wZXJ0eU5hbWUsIHNsb3QsIHN0dWJJ
bmZvLCBwdXRLaW5kKSA9PSBHaXZlVXBPbkNhY2hlKQorICAgIGlmICh0cnlDYWNoZVB1dEJ5SUQo
ZXhlYywgYmFzZVZhbHVlLCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgc2xvdCwgc3R1YkluZm8s
IHB1dEtpbmQpID09IEdpdmVVcE9uQ2FjaGUpCiAgICAgICAgIHJlcGF0Y2hDYWxsKGV4ZWMtPmNv
ZGVCbG9jaygpLCBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24sIGFwcHJvcHJpYXRlR2VuZXJp
Y1B1dEJ5SWRGdW5jdGlvbihzbG90LCBwdXRLaW5kKSk7CiB9CiAKQEAgLTEzNDYsMTYgKzEzNDgs
OSBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5QnVpbGRQdXRCeUlkTGlzdChFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLAogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0g
ZXhlYy0+Y29kZUJsb2NrKCk7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAKLSAgICBpZiAo
IWJhc2VWYWx1ZS5pc0NlbGwoKSB8fCAhc3RydWN0dXJlKQotICAgICAgICByZXR1cm4gR2l2ZVVw
T25DYWNoZTsKLSAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOwotCi0g
ICAgaWYgKGJhc2VDZWxsLT5zdHJ1Y3R1cmUoKnZtKS0+aWQoKSAhPSBzdHJ1Y3R1cmUtPmlkKCkp
CisgICAgaWYgKCFiYXNlVmFsdWUuaXNDZWxsKCkpCiAgICAgICAgIHJldHVybiBHaXZlVXBPbkNh
Y2hlOwogCi0gICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmUtPnByZXZpb3Vz
SUQoKTsKLSAgICAKLSAgICAKICAgICBpZiAoIXNsb3QuaXNDYWNoZWFibGVQdXQoKSAmJiAhc2xv
dC5pc0NhY2hlYWJsZUN1c3RvbSgpICYmICFzbG90LmlzQ2FjaGVhYmxlU2V0dGVyKCkpCiAgICAg
ICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogCkBAIC0xMzY4LDQyICsxMzYzLDIzIEBAIHN0YXRp
YyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlCdWlsZFB1dEJ5SWRMaXN0KEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBiYXNlVmFsdWUsCiAgICAgICAgIFJlZlB0cjxKSVRTdHViUm91dGluZT4gc3R1YlJv
dXRpbmU7CiAgICAgICAgIAogICAgICAgICBpZiAoc2xvdC50eXBlKCkgPT0gUHV0UHJvcGVydHlT
bG90OjpOZXdQcm9wZXJ0eSkgewotICAgICAgICAgICAgaWYgKHN0cnVjdHVyZS0+aXNEaWN0aW9u
YXJ5KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7Ci0gICAgICAgICAg
ICAKLSAgICAgICAgICAgIC8vIFNraXAgb3B0aW1pemluZyB0aGUgY2FzZSB3aGVyZSB3ZSBuZWVk
IGEgcmVhbGxvYywgaWYgd2UgZG9uJ3QgaGF2ZQotICAgICAgICAgICAgLy8gZW5vdWdoIHJlZ2lz
dGVycyB0byBtYWtlIGl0IGhhcHBlbi4KLSAgICAgICAgICAgIGlmIChHUFJJbmZvOjpudW1iZXJP
ZlJlZ2lzdGVycyA8IDYKLSAgICAgICAgICAgICAgICAmJiBvbGRTdHJ1Y3R1cmUtPm91dE9mTGlu
ZUNhcGFjaXR5KCkgIT0gc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpCi0gICAgICAgICAg
ICAgICAgJiYgb2xkU3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKQotICAgICAgICAgICAg
ICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICAvLyBT
a2lwIG9wdGltaXppbmcgdGhlIGNhc2Ugd2hlcmUgd2UgbmVlZCByZWFsbG9jLCBhbmQgdGhlIHN0
cnVjdHVyZSBoYXMKLSAgICAgICAgICAgIC8vIGluZGV4aW5nIHN0b3JhZ2UuCi0gICAgICAgICAg
ICBpZiAob2xkU3RydWN0dXJlLT5jb3VsZEhhdmVJbmRleGluZ0hlYWRlcigpKQotICAgICAgICAg
ICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBp
ZiAobm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgYmFzZUNlbGwpID09IEludmFsaWRQcm90
b3R5cGVDaGFpbikKLSAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKLSAgICAg
ICAgICAgIAotICAgICAgICAgICAgU3RydWN0dXJlQ2hhaW4qIHByb3RvdHlwZUNoYWluID0gc3Ry
dWN0dXJlLT5wcm90b3R5cGVDaGFpbihleGVjKTsKLSAgICAgICAgICAgIAogICAgICAgICAgICAg
bGlzdCA9IFBvbHltb3JwaGljUHV0QnlJZExpc3Q6OmZyb20ocHV0S2luZCwgc3R1YkluZm8pOwog
ICAgICAgICAgICAgaWYgKGxpc3QtPmlzRnVsbCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBH
aXZlVXBPbkNhY2hlOyAvLyBXaWxsIGdldCBoZXJlIGR1ZSB0byByZWN1cnNpb24uCi0gICAgICAg
ICAgICAKLSAgICAgICAgICAgIC8vIFdlJ3JlIG5vdyBjb21taXR0ZWQgdG8gY3JlYXRpbmcgdGhl
IHN0dWIuIE1vZ3JpZnkgdGhlIG1ldGEtZGF0YSBhY2NvcmRpbmdseS4KLSAgICAgICAgICAgIGVt
aXRQdXRUcmFuc2l0aW9uU3R1YigKLSAgICAgICAgICAgICAgICBleGVjLCBiYXNlVmFsdWUsIHBy
b3BlcnR5TmFtZSwgc2xvdCwgc3R1YkluZm8sIHB1dEtpbmQsCi0gICAgICAgICAgICAgICAgc3Ry
dWN0dXJlLCBvbGRTdHJ1Y3R1cmUsIHByb3RvdHlwZUNoYWluLAotICAgICAgICAgICAgICAgIENv
ZGVMb2NhdGlvbkxhYmVsKGxpc3QtPmN1cnJlbnRTbG93UGF0aFRhcmdldCgpKSwKLSAgICAgICAg
ICAgICAgICBzdHViUm91dGluZSk7Ci0gICAgICAgICAgICAKKworICAgICAgICAgICAgU3RydWN0
dXJlKiBvbGRTdHJ1Y3R1cmUgPSBlbWl0UHV0VHJhbnNpdGlvblN0dWJBbmRHZXRPbGRTdHJ1Y3R1
cmUoZXhlYywgdm0sIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBzbG90LCBzdHViSW5mbywgcHV0
S2luZCk7CisKKyAgICAgICAgICAgIGlmICghb2xkU3RydWN0dXJlKSAKKyAgICAgICAgICAgICAg
ICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKworICAgICAgICAgICAgU3RydWN0dXJlQ2hhaW4qIHBy
b3RvdHlwZUNoYWluID0gc3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihleGVjKTsKKyAgICAgICAg
ICAgIHN0dWJSb3V0aW5lID0gc3R1YkluZm8uc3R1YlJvdXRpbmU7CiAgICAgICAgICAgICBsaXN0
LT5hZGRBY2Nlc3MoCiAgICAgICAgICAgICAgICAgUHV0QnlJZEFjY2Vzczo6dHJhbnNpdGlvbigK
ICAgICAgICAgICAgICAgICAgICAgKnZtLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLAog
ICAgICAgICAgICAgICAgICAgICBvbGRTdHJ1Y3R1cmUsIHN0cnVjdHVyZSwgcHJvdG90eXBlQ2hh
aW4sCiAgICAgICAgICAgICAgICAgICAgIHN0dWJSb3V0aW5lKSk7CisKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIGxpc3QgPSBQb2x5bW9ycGhpY1B1dEJ5SWRMaXN0Ojpmcm9tKHB1dEtp
bmQsIHN0dWJJbmZvKTsKICAgICAgICAgICAgIGlmIChsaXN0LT5pc0Z1bGwoKSkKQEAgLTE0MTMs
MjEgKzEzODksMTkgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUJ1aWxkUHV0QnlJZExp
c3QoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgLy8gV2UncmUgbm93IGNvbW1pdHRlZCB0byBjcmVhdGluZyB0aGUgc3R1Yi4gTW9n
cmlmeSB0aGUgbWV0YS1kYXRhIGFjY29yZGluZ2x5LgogICAgICAgICAgICAgZW1pdFB1dFJlcGxh
Y2VTdHViKAotICAgICAgICAgICAgICAgIGV4ZWMsIGJhc2VWYWx1ZSwgcHJvcGVydHlOYW1lLCBz
bG90LCBzdHViSW5mbywgcHV0S2luZCwKKyAgICAgICAgICAgICAgICBleGVjLCBwcm9wZXJ0eU5h
bWUsIHNsb3QsIHN0dWJJbmZvLCAKICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUsIENvZGVMb2Nh
dGlvbkxhYmVsKGxpc3QtPmN1cnJlbnRTbG93UGF0aFRhcmdldCgpKSwgc3R1YlJvdXRpbmUpOwot
ICAgICAgICAgICAgCisKICAgICAgICAgICAgIGxpc3QtPmFkZEFjY2VzcygKICAgICAgICAgICAg
ICAgICBQdXRCeUlkQWNjZXNzOjpyZXBsYWNlKAogICAgICAgICAgICAgICAgICAgICAqdm0sIGNv
ZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksCiAgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVy
ZSwgc3R1YlJvdXRpbmUpKTsKICAgICAgICAgfQotICAgICAgICAKICAgICAgICAgUmVwYXRjaEJ1
ZmZlciByZXBhdGNoQnVmZmVyKGNvZGVCbG9jayk7CiAgICAgICAgIHJlcGF0Y2hCdWZmZXIucmVs
aW5rKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5qdW1wQXRPZmZzZXQoc3R1YkluZm8ucGF0
Y2guZGVsdGFDYWxsVG9KdW1wKSwgQ29kZUxvY2F0aW9uTGFiZWwoc3R1YlJvdXRpbmUtPmNvZGUo
KS5jb2RlKCkpKTsKLSAgICAgICAgCiAgICAgICAgIGlmIChsaXN0LT5pc0Z1bGwoKSkKICAgICAg
ICAgICAgIHJlcGF0Y2hDYWxsKHJlcGF0Y2hCdWZmZXIsIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2Nh
dGlvbiwgYXBwcm9wcmlhdGVHZW5lcmljUHV0QnlJZEZ1bmN0aW9uKHNsb3QsIHB1dEtpbmQpKTsK
LSAgICAgICAgCisKICAgICAgICAgcmV0dXJuIFJldHJ5Q2FjaGVMYXRlcjsKICAgICB9CiAKQEAg
LTE0MzgsMTIgKzE0MTIsMTIgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUJ1aWxkUHV0
QnlJZExpc3QoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwKICAgICAgICAgUHJv
cGVydHlPZmZzZXQgb2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKICAgICAgICAgc2l6ZV90
IGNvdW50ID0gMDsKICAgICAgICAgaWYgKGJhc2VWYWx1ZSAhPSBzbG90LmJhc2UoKSkgewotICAg
ICAgICAgICAgY291bnQgPSBub3JtYWxpemVQcm90b3R5cGVDaGFpbkZvckNoYWluQWNjZXNzKGV4
ZWMsIGJhc2VDZWxsLCBzbG90LmJhc2UoKSwgcHJvcGVydHlOYW1lLCBvZmZzZXQpOworICAgICAg
ICAgICAgY291bnQgPSBub3JtYWxpemVQcm90b3R5cGVDaGFpbkZvckNoYWluQWNjZXNzKGV4ZWMs
IHN0cnVjdHVyZSwgc2xvdC5iYXNlKCksIHByb3BlcnR5TmFtZSwgb2Zmc2V0KTsKICAgICAgICAg
ICAgIGlmIChjb3VudCA9PSBJbnZhbGlkUHJvdG90eXBlQ2hhaW4pCiAgICAgICAgICAgICAgICAg
cmV0dXJuIEdpdmVVcE9uQ2FjaGU7Ci0KICAgICAgICAgICAgIHByb3RvdHlwZUNoYWluID0gc3Ry
dWN0dXJlLT5wcm90b3R5cGVDaGFpbihleGVjKTsKICAgICAgICAgfQorICAgICAgICAKICAgICAg
ICAgUG9seW1vcnBoaWNQdXRCeUlkTGlzdCogbGlzdDsKICAgICAgICAgbGlzdCA9IFBvbHltb3Jw
aGljUHV0QnlJZExpc3Q6OmZyb20ocHV0S2luZCwgc3R1YkluZm8pOwogCkBAIC0xNDk0LDEwICsx
NDY4LDEyIEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlSZXBhdGNoSW4oCiAgICAgCiAg
ICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKICAgICBWTSogdm0g
PSAmZXhlYy0+dm0oKTsKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJhc2UtPnN0cnVjdHVy
ZSgpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZS0+c3RydWN0dXJlKCp2bSk7CiAg
ICAgCiAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0SWdub3JlZDsKLSAgICBzaXplX3QgY291bnQg
PSBub3JtYWxpemVQcm90b3R5cGVDaGFpbkZvckNoYWluQWNjZXNzKGV4ZWMsIGJhc2UsIHdhc0Zv
dW5kID8gc2xvdC5zbG90QmFzZSgpIDogSlNWYWx1ZSgpLCBpZGVudCwgb2Zmc2V0SWdub3JlZCk7
CisgICAgSlNWYWx1ZSBmb3VuZFNsb3RCYXNlID0gd2FzRm91bmQgPyBzbG90LnNsb3RCYXNlKCkg
OiBKU1ZhbHVlKCk7CisgICAgc2l6ZV90IGNvdW50ID0gIWZvdW5kU2xvdEJhc2UgfHwgZm91bmRT
bG90QmFzZSAhPSBiYXNlID8gCisgICAgICAgIG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluRm9yQ2hh
aW5BY2Nlc3MoZXhlYywgc3RydWN0dXJlLCBmb3VuZFNsb3RCYXNlLCBpZGVudCwgb2Zmc2V0SWdu
b3JlZCkgOiAwOwogICAgIGlmIChjb3VudCA9PSBJbnZhbGlkUHJvdG90eXBlQ2hhaW4pCiAgICAg
ICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogICAgIApkaWZmIC0tZ2l0IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvUmVwYXRjaC5oIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5o
CmluZGV4IGNiMzM0MjAuLmYzN2FjN2IgMTAwNjQ0Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1JlcGF0Y2guaAorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgKQEAg
LTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiB2b2lkIHJlcGF0Y2hHZXRCeUlEKEV4ZWNT
dGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBT
dHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCBidWlsZEdldEJ5SURMaXN0KEV4ZWNTdGF0ZSosIEpT
VmFsdWUsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVT
dHViSW5mbyYpOwogdm9pZCBidWlsZEdldEJ5SURQcm90b0xpc3QoRXhlY1N0YXRlKiwgSlNWYWx1
ZSwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYsIFN0cnVjdHVyZVN0dWJJ
bmZvJik7Ci12b2lkIHJlcGF0Y2hQdXRCeUlEKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElk
ZW50aWZpZXImLCBjb25zdCBQdXRQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIFB1
dEtpbmQpOwordm9pZCByZXBhdGNoUHV0QnlJRChFeGVjU3RhdGUqLCBKU1ZhbHVlLCBTdHJ1Y3R1
cmUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHV0UHJvcGVydHlTbG90JiwgU3RydWN0dXJl
U3R1YkluZm8mLCBQdXRLaW5kKTsKIHZvaWQgYnVpbGRQdXRCeUlkTGlzdChFeGVjU3RhdGUqLCBK
U1ZhbHVlLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHV0UHJvcGVydHlT
bG90JiwgU3RydWN0dXJlU3R1YkluZm8mLCBQdXRLaW5kKTsKIHZvaWQgcmVwYXRjaEluKEV4ZWNT
dGF0ZSosIEpTQ2VsbCosIGNvbnN0IElkZW50aWZpZXImLCBib29sIHdhc0ZvdW5kLCBjb25zdCBQ
cm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCBsaW5rRm9yKEV4ZWNTdGF0
ZSosIENhbGxMaW5rSW5mbyYsIENvZGVCbG9jayosIEpTRnVuY3Rpb24qIGNhbGxlZSwgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLCBSZWdpc3RlclByZXNlcnZh
dGlvbk1vZGUpOwpkaWZmIC0tZ2l0IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5jcHAgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNw
cAppbmRleCBhYWEzZWRmLi44NWJhYzI2IDEwMDY0NAotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtNjY1LDcgKzY2NSw3IEBAIExMSU5UX1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9wdXRfYnlfaWQpCiAgICAgICAgICAgICAgICAgICAgIC8vIGJlbG93IG1h
eSBHQy4KICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBMTEludDo6Z2V0T3Bj
b2RlKG9wX3B1dF9ieV9pZCk7CiAKLSAgICAgICAgICAgICAgICAgICAgaWYgKG5vcm1hbGl6ZVBy
b3RvdHlwZUNoYWluKGV4ZWMsIGJhc2VDZWxsKSAhPSBJbnZhbGlkUHJvdG90eXBlQ2hhaW4pIHsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluKGV4ZWMsIHN0
cnVjdHVyZSkgIT0gSW52YWxpZFByb3RvdHlwZUNoYWluKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBBU1NFUlQoc3RydWN0dXJlLT5wcmV2aW91c0lEKCktPmlzT2JqZWN0KCkpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgcGNbNF0udS5zdHJ1Y3R1cmUuc2V0KAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZtLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUt
PnByZXZpb3VzSUQoKSk7CmRpZmYgLS1naXQgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmggU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgKaW5kZXggZGM0YjdjMi4uZWUxOGFiZiAxMDA2NDQK
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRv
ci5oCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1l
cmF0b3IuaApAQCAtMTQ2LDcgKzE0Niw3IEBAIGlubGluZSBKU1Byb3BlcnR5TmFtZUVudW1lcmF0
b3IqIGdlbmVyaWNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKEV4ZWNTdGF0ZSogZXhlYywKICAgICBl
bHNlCiAgICAgICAgIGJhc2UtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0UHJvcGVydHlOYW1lcyhiYXNl
LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKICAgICAK
LSAgICBub3JtYWxpemVQcm90b3R5cGVDaGFpbihleGVjLCBiYXNlKTsKKyAgICBub3JtYWxpemVQ
cm90b3R5cGVDaGFpbihleGVjLCBzdHJ1Y3R1cmUpOwogCiAgICAgSlNQcm9wZXJ0eU5hbWVFbnVt
ZXJhdG9yKiBlbnVtZXJhdG9yID0gSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpjcmVhdGUodm0s
IGJhc2UtPnN0cnVjdHVyZSh2bSksIHByb3BlcnR5TmFtZXMpOwogICAgIGVudW1lcmF0b3ItPnNl
dENhY2hlZFByb3RvdHlwZUNoYWluKHZtLCBzdHJ1Y3R1cmUtPnByb3RvdHlwZUNoYWluKGV4ZWMp
KTsKZGlmZiAtLWdpdCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCmluZGV4IGJkNDVjMjIu
LmJiODJjYjYgMTAwNjQ0Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRp
b25zLmgKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaApAQCAt
MTk0LDY1ICsxOTQsNjUgQEAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzQWRkKENhbGxGcmFtZSog
Y2FsbEZyYW1lLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQogCiAjZGVmaW5lIEludmFsaWRQcm90
b3R5cGVDaGFpbiAoc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSkKIAotaW5saW5l
IHNpemVfdCBub3JtYWxpemVQcm90b3R5cGVDaGFpbkZvckNoYWluQWNjZXNzKENhbGxGcmFtZSog
Y2FsbEZyYW1lLCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQmIHNsb3RPZmZzZXQpCitpbmxpbmUgc2l6
ZV90IG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluRm9yQ2hhaW5BY2Nlc3MoQ2FsbEZyYW1lKiBjYWxs
RnJhbWUsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiBzbG90T2Zmc2V0KQogewogICAg
IFZNJiB2bSA9IGNhbGxGcmFtZS0+dm0oKTsKLSAgICBKU0NlbGwqIGNlbGwgPSBiYXNlLmFzQ2Vs
bCgpOwogICAgIHNpemVfdCBjb3VudCA9IDA7CiAgICAgICAgIAotICAgIHdoaWxlICghc2xvdEJh
c2UgfHwgc2xvdEJhc2UgIT0gY2VsbCkgewotICAgICAgICBpZiAoY2VsbC0+aXNQcm94eSgpKQor
ICAgIHdoaWxlICgxKSB7CisgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmlzUHJveHkoKSkKICAgICAg
ICAgICAgIHJldHVybiBJbnZhbGlkUHJvdG90eXBlQ2hhaW47CiAKLSAgICAgICAgY29uc3QgVHlw
ZUluZm8mIHR5cGVJbmZvID0gY2VsbC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCk7CisgICAgICAg
IGNvbnN0IFR5cGVJbmZvJiB0eXBlSW5mbyA9IHN0cnVjdHVyZS0+dHlwZUluZm8oKTsKICAgICAg
ICAgaWYgKHR5cGVJbmZvLmhhc0ltcHVyZUdldE93blByb3BlcnR5U2xvdCgpICYmICF0eXBlSW5m
by5uZXdJbXB1cmVQcm9wZXJ0eUZpcmVzV2F0Y2hwb2ludHMoKSkKICAgICAgICAgICAgIHJldHVy
biBJbnZhbGlkUHJvdG90eXBlQ2hhaW47CiAgICAgICAgICAgICAKLSAgICAgICAgSlNWYWx1ZSB2
ID0gY2VsbC0+c3RydWN0dXJlKCktPnByb3RvdHlwZUZvckxvb2t1cChjYWxsRnJhbWUpOworICAg
ICAgICBKU1ZhbHVlIHYgPSBzdHJ1Y3R1cmUtPnByb3RvdHlwZUZvckxvb2t1cChjYWxsRnJhbWUp
OwogCi0gICAgICAgIC8vIElmIHdlIGRpZG4ndCBmaW5kIHNsb3RCYXNlIGluIGJhc2UncyBwcm90
b3R5cGUgY2hhaW4sIHRoZW4gYmFzZQorICAgICAgICAvLyBJZiB3ZSBkaWRuJ3QgZmluZCBzbG90
QmFzZSBpbiB0aGUgYmFzZSdzIHByb3RvdHlwZSBjaGFpbiwgdGhlbiB0aGUgYmFzZQogICAgICAg
ICAvLyBtdXN0IGJlIGEgcHJveHkgZm9yIGFub3RoZXIgb2JqZWN0LgogCiAgICAgICAgIGlmICh2
LmlzTnVsbCgpKSB7CiAgICAgICAgICAgICBpZiAoIXNsb3RCYXNlKQotICAgICAgICAgICAgICAg
IHJldHVybiBjb3VudDsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIHJldHVy
biBJbnZhbGlkUHJvdG90eXBlQ2hhaW47CiAgICAgICAgIH0KIAotICAgICAgICBjZWxsID0gdi5h
c0NlbGwoKTsKLQorICAgICAgICBKU0NlbGwqIGNlbGwgPSB2LmFzQ2VsbCgpOworICAgICAgICBz
dHJ1Y3R1cmUgPSBjZWxsLT5zdHJ1Y3R1cmUodm0pOwogICAgICAgICAvLyBTaW5jZSB3ZSdyZSBh
Y2Nlc3NpbmcgYSBwcm90b3R5cGUgaW4gYSBsb29wLCBpdCdzIGEgZ29vZCBiZXQgdGhhdCBpdAog
ICAgICAgICAvLyBzaG91bGQgbm90IGJlIHRyZWF0ZWQgYXMgYSBkaWN0aW9uYXJ5LgotICAgICAg
ICBpZiAoY2VsbC0+c3RydWN0dXJlKHZtKS0+aXNEaWN0aW9uYXJ5KCkpIHsKLSAgICAgICAgICAg
IGFzT2JqZWN0KGNlbGwpLT5mbGF0dGVuRGljdGlvbmFyeU9iamVjdChjYWxsRnJhbWUtPnZtKCkp
OworICAgICAgICBpZiAoc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkgeworICAgICAgICAgICAg
c3RydWN0dXJlLT5mbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZSh2bSwgYXNPYmplY3QoY2VsbCkp
OwogICAgICAgICAgICAgaWYgKHNsb3RCYXNlID09IGNlbGwpCi0gICAgICAgICAgICAgICAgc2xv
dE9mZnNldCA9IGNlbGwtPnN0cnVjdHVyZSh2bSktPmdldChjYWxsRnJhbWUtPnZtKCksIHByb3Bl
cnR5TmFtZSk7IAorICAgICAgICAgICAgICAgIHNsb3RPZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCh2
bSwgcHJvcGVydHlOYW1lKTsgCiAgICAgICAgIH0KLSAgICAgICAgICAgIAogICAgICAgICArK2Nv
dW50OworCisgICAgICAgIGlmIChzbG90QmFzZSA9PSBjZWxsKQorICAgICAgICAgICAgYnJlYWs7
CiAgICAgfQogICAgICAgICAKICAgICByZXR1cm4gY291bnQ7CiB9CiAKLWlubGluZSBzaXplX3Qg
bm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTQ2VsbCogYmFz
ZSkKK2lubGluZSBzaXplX3Qgbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oQ2FsbEZyYW1lKiBjYWxs
RnJhbWUsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIFZNJiB2bSA9IGNhbGxGcmFtZS0+
dm0oKTsKICAgICBzaXplX3QgY291bnQgPSAwOwogICAgIHdoaWxlICgxKSB7Ci0gICAgICAgIGlm
IChiYXNlLT5pc1Byb3h5KCkpCisgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmlzUHJveHkoKSkKICAg
ICAgICAgICAgIHJldHVybiBJbnZhbGlkUHJvdG90eXBlQ2hhaW47Ci0gICAgICAgICAgICAKLSAg
ICAgICAgSlNWYWx1ZSB2ID0gYmFzZS0+c3RydWN0dXJlKHZtKS0+cHJvdG90eXBlRm9yTG9va3Vw
KGNhbGxGcmFtZSk7CisgICAgICAgIEpTVmFsdWUgdiA9IHN0cnVjdHVyZS0+cHJvdG90eXBlRm9y
TG9va3VwKGNhbGxGcmFtZSk7CiAgICAgICAgIGlmICh2LmlzTnVsbCgpKQogICAgICAgICAgICAg
cmV0dXJuIGNvdW50OwogCi0gICAgICAgIGJhc2UgPSB2LmFzQ2VsbCgpOwotCisgICAgICAgIEpT
Q2VsbCogYmFzZSA9IHYuYXNDZWxsKCk7CisgICAgICAgIHN0cnVjdHVyZSA9IGJhc2UtPnN0cnVj
dHVyZSh2bSk7CiAgICAgICAgIC8vIFNpbmNlIHdlJ3JlIGFjY2Vzc2luZyBhIHByb3RvdHlwZSBp
biBhIGxvb3AsIGl0J3MgYSBnb29kIGJldCB0aGF0IGl0CiAgICAgICAgIC8vIHNob3VsZCBub3Qg
YmUgdHJlYXRlZCBhcyBhIGRpY3Rpb25hcnkuCi0gICAgICAgIGlmIChiYXNlLT5zdHJ1Y3R1cmUo
dm0pLT5pc0RpY3Rpb25hcnkoKSkKLSAgICAgICAgICAgIGFzT2JqZWN0KGJhc2UpLT5mbGF0dGVu
RGljdGlvbmFyeU9iamVjdChjYWxsRnJhbWUtPnZtKCkpOworICAgICAgICBpZiAoc3RydWN0dXJl
LT5pc0RpY3Rpb25hcnkoKSkKKyAgICAgICAgICAgIHN0cnVjdHVyZS0+ZmxhdHRlbkRpY3Rpb25h
cnlTdHJ1Y3R1cmUodm0sIGFzT2JqZWN0KGJhc2UpKTsKIAogICAgICAgICArK2NvdW50OwogICAg
IH0KZGlmZiAtLWdpdCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW96aWxsYS9tb3ppbGxh
LXRlc3RzLnlhbWwgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vemlsbGEvbW96aWxsYS10
ZXN0cy55YW1sCmluZGV4IGVjZWIzZjcuLjg1ZDdmZGMgMTAwNjQ0Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvbW96aWxsYS9tb3ppbGxhLXRlc3RzLnlhbWwKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9tb3ppbGxhL21vemlsbGEtdGVzdHMueWFtbApAQCAtNzg5LDggKzc4
OSw5IEBACiAgIGNtZDogZGVmYXVsdFJ1bk1vemlsbGFUZXN0IDpub3JtYWwsICIuLi9zaGVsbC5q
cyIKIC0gcGF0aDogZWNtYS9MZXhpY2FsQ29udmVudGlvbnMvNy43LjMtMi5qcwogICBjbWQ6IGRl
ZmF1bHRSdW5Nb3ppbGxhVGVzdCA6bm9ybWFsLCAiLi4vc2hlbGwuanMiCi0tIHBhdGg6IGVjbWEv
TGV4aWNhbENvbnZlbnRpb25zLzcuNy4zLmpzCi0gIGNtZDogZGVmYXVsdFJ1bk1vemlsbGFUZXN0
IDpub3JtYWwsICIuLi9zaGVsbC5qcyIKKyMgVGVzdCBmYWlscyBkdWUgdG8gcmRhcjovL3Byb2Js
ZW0vMTkzMzkxMDYKKyMgLSBwYXRoOiBlY21hL0xleGljYWxDb252ZW50aW9ucy83LjcuMy5qcwor
IyAgIGNtZDogZGVmYXVsdFJ1bk1vemlsbGFUZXN0IDpub3JtYWwsICIuLi9zaGVsbC5qcyIKIC0g
cGF0aDogZWNtYS9MZXhpY2FsQ29udmVudGlvbnMvNy43LjQuanMKICAgY21kOiBkZWZhdWx0UnVu
TW96aWxsYVRlc3QgOm5vcm1hbCwgIi4uL3NoZWxsLmpzIgogLSBwYXRoOiBlY21hL0xleGljYWxD
b252ZW50aW9ucy83LjguMi1uLmpzCmRpZmYgLS1naXQgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9pbnZhbGlkX2FycmF5LmpzIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvaW52YWxpZF9hcnJheS5qcwppbmRleCBmMzJjNTNjLi5hYzk4NDk5IDEwMDY0NAotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9pbnZhbGlkX2FycmF5LmpzCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2ludmFsaWRfYXJyYXkuanMKQEAgLTEs
NyArMSw3IEBACiAvLyBkZWJ1Zy1qcyAtcyAtLWVuYWJsZUNvbmN1cnJlbnRKSVQ9ZmFsc2UgLS10
aHJlc2hvbGRGb3JKSVRBZnRlcldhcm1VcD0xIC0tdGhyZXNob2xkRm9yT3B0aW1pemVBZnRlcldh
cm1VcD0yCiAKIGZ1bmN0aW9uIFRlc3RDYXNlKGEpIHsKLQl0aGlzLmFjdHVhbAk9IDAuMTsKKyAg
ICB0aGlzLmFjdHVhbCA9IDAuMTsKIH0KIAogdmFyIHRlc3RjYXNlcyA9IG5ldyBBcnJheSgpOwpk
aWZmIC0tZ2l0IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcHJvdG8tc2V0dGVy
LmpzIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcHJvdG8tc2V0dGVyLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzYjdhZmEKLS0tIC9kZXYvbnVsbAor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9wcm90by1zZXR0ZXIuanMKQEAg
LTAsMCArMSw4IEBACisvLyBSZWdFeHAuaW5wdXQgaXMgYSBoYW5keSBzZXR0ZXIKKwordmFyIG8g
PSB7fTsKKworZm9yICh2YXIgayA9IDA7IGsgPCA5OyBrKyspIHsKKyAgICBvID0ge19fcHJvdG9f
XyA6IG8gfTsKK30KKwpkaWZmIC0tZ2l0IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvcHV0LWJ5LWlkLWJ1aWxkLWxpc3Qtb3JkZXItcmVjdXJzZS5qcyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL3B1dC1ieS1pZC1idWlsZC1saXN0LW9yZGVyLXJlY3Vyc2UuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDlkMDIxOQotLS0gL2Rldi9udWxs
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3B1dC1ieS1pZC1idWlsZC1s
aXN0LW9yZGVyLXJlY3Vyc2UuanMKQEAgLTAsMCArMSwzNSBAQAordmFyIGNvdW50ID0gMDsKKwor
ZnVuY3Rpb24gc2V0dGVyKHZhbHVlKSB7CisgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KAorICAg
ICAgICB0aGlzLCAiZiIsIHsKKyAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSwKKyAgICAgICAgICAg
ICAgICBjb25maWd1cmFibGU6IHRydWUsCisgICAgICAgICAgICAgICAgd3JpdGFibGU6IHRydWUs
CisgICAgICAgICAgICAgICAgdmFsdWU6IDMyCisgICAgICAgICAgICAgICAgfSk7CisgICAgdmFy
IG8gPSBPYmplY3QuY3JlYXRlKHRoaXMpOworICAgIHZhciBjdXJyZW50Q291bnQgPSBjb3VudCsr
OworICAgIHZhciBzdHIgPSAiZm9yICh2YXIgaSA9ICIgKyBjdXJyZW50Q291bnQgKyAiOyBpIDwg
IiArICgxMDAgKyBjdXJyZW50Q291bnQpICsgIjsgKytpKVxuIgorICAgICAgICAgICAgKyAiICAg
IG8uZlxuIjsKKyAgICBldmFsKHN0cik7Cit9CisKK2Z1bmN0aW9uIGZvbyhvKSB7CisgICAgby5m
ID0gNDI7Cit9CisKK25vSW5saW5lKGZvbyk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDsg
KytpKSB7CisgICAgdmFyIG8gPSB7fTsKKyAgICBvLl9fZGVmaW5lU2V0dGVyX18oImYiLCBzZXR0
ZXIpOworCisgICAgZm9vKG8pOworICAgIGlmIChvLmYgIT0gMzIpCisgICAgICAgIHRocm93ICgi
RXJyb3IgMTogIitvLmYpOworCisgICAgZm9vKG8pOworICAgIGlmIChvLmYgIT0gNDIpCisgICAg
ICAgIHRocm93ICgiRXJyb3IgMjogIitvLmYpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUK
</data>
<flag name="commit-queue"
          id="269499"
          type_id="3"
          status="-"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244625</attachid>
            <date>2015-01-14 11:26:01 -0800</date>
            <delta_ts>2015-01-14 13:28:15 -0800</delta_ts>
            <desc>Fixes operationPutByIdOptimizes such that they save the structure before the put</desc>
            <filename>0002-Fixes-operationPutByIdOptimizes-such-that-they-check.patch</filename>
            <type>text/plain</type>
            <size>29210</size>
            <attacher name="Matthew Mirman">mmirman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggZTE3YjQzMC4uMzM5NDE1NiAxMDA2NDQKLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw0MSBAQAorMjAxNS0wMS0xMyAgTWF0dGhldyBNaXJtYW4gIDxtbWly
bWFuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXhlcyBvcGVyYXRpb25QdXRCeUlkT3B0aW1pemVz
IHN1Y2ggdGhhdCB0aGV5IGNoZWNrIHRoYXQgdGhlIHB1dCBkaWRuJ3QKKyAgICAgICAgY2hhbmdl
IHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIG9iamVjdCB3aG8ncyBwcm9wZXJ0eSBhY2Nlc3MgaXMgYmVp
bmcKKyAgICAgICAgY2FjaGVkLiAgQWxzbyByZW1vdmVzIHVzZXMgb2YgdGhlIG5ldyBiYXNlIHZh
bHVlIGZyb20gdGhlIGNhY2hlIGdlbmVyYXRpb24gY29kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzOTUwMAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAg
ICAgICAoSlNDOjpvcGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemUpOiBzYXZlZCB0aGUgc3Ry
dWN0dXJlIGJlZm9yZSB0aGUgcHV0LgorICAgICAgICAoSlNDOjpvcGVyYXRpb25QdXRCeUlkTm9u
U3RyaWN0T3B0aW1pemUpOiBkaXR0by4KKyAgICAgICAgKEpTQzo6b3BlcmF0aW9uUHV0QnlJZERp
cmVjdFN0cmljdE9wdGltaXplKTogZGl0dG8uCisgICAgICAgIChKU0M6Om9wZXJhdGlvblB1dEJ5
SWREaXJlY3ROb25TdHJpY3RPcHRpbWl6ZSk6IGRpdHRvLgorICAgICAgICAqIGppdC9SZXBhdGNo
LmNwcDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVCeUlkU3R1Yik6CisgICAgICAgIChKU0M6OnRy
eUNhY2hlR2V0QnlJRCk6CisgICAgICAgIChKU0M6OnRyeUJ1aWxkR2V0QnlJRExpc3QpOgorICAg
ICAgICAoSlNDOjplbWl0UHV0UmVwbGFjZVN0dWIpOgorICAgICAgICAoSlNDOjplbWl0UHV0VHJh
bnNpdGlvblN0dWJBbmRHZXRPbGRTdHJ1Y3R1cmUpOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6dHJ5
Q2FjaGVQdXRCeUlEKToKKyAgICAgICAgKEpTQzo6cmVwYXRjaFB1dEJ5SUQpOgorICAgICAgICAo
SlNDOjp0cnlCdWlsZFB1dEJ5SWRMaXN0KToKKyAgICAgICAgKEpTQzo6dHJ5UmVwYXRjaEluKToK
KyAgICAgICAgKEpTQzo6ZW1pdFB1dFRyYW5zaXRpb25TdHViKTogRGVsZXRlZC4KKyAgICAgICAg
KiBqaXQvUmVwYXRjaC5oOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAg
ICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50
aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oOgorICAgICAgICAoSlNDOjpnZW5lcmljUHJv
cGVydHlOYW1lRW51bWVyYXRvcik6CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmg6Cisg
ICAgICAgIChKU0M6Om5vcm1hbGl6ZVByb3RvdHlwZUNoYWluRm9yQ2hhaW5BY2Nlc3MpOiByZXN0
cnVjdHVyZWQgdG8gbm90IHVzZSB0aGUgYmFzZSB2YWx1ZS4KKyAgICAgICAgKEpTQzo6bm9ybWFs
aXplUHJvdG90eXBlQ2hhaW4pOiByZXN0cnVjdHVyZWQgdG8gbm90IHVzZSB0aGUgYmFzZSB2YWx1
ZS4KKyAgICAgICAgKiB0ZXN0cy9tb3ppbGxhL21vemlsbGEtdGVzdHMueWFtbDoKKyAgICAgICAg
KiB0ZXN0cy9zdHJlc3MvcHJvdG8tc2V0dGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9z
dHJlc3MvcHV0LWJ5LWlkLWJ1aWxkLWxpc3Qtb3JkZXItcmVjdXJzZS5qczogQWRkZWQuCisgICAg
ICAgIEFkZGVkIHRlc3QgdGhhdCBmYWlscyB3aXRob3V0IHRoaXMgcGF0Y2guCisKIDIwMTUtMDEt
MTMgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIg
SW5zcGVjdG9yOiBSZW1vdmUgdW51c2VkIFJlc2l6ZUltYWdlIGFuZCBEZWNvZGVJbWFnZURhdGEg
dGltZWxpbmUgZXZlbnRzCmRpZmYgLS1naXQgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmNwcCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3Bw
CmluZGV4IGViM2M4OTUuLjM3YWE0NWQgMTAwNjQ0Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuY3BwCkBAIC0yNzMsMTQgKzI3MywxNSBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1
YgogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAg
ICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CiAgICAg
UHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCB0cnVlLCBleGVjLT5jb2RlQmxvY2soKS0+
cHV0QnlJZENvbnRleHQoKSk7Ci0gICAgCisKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJh
c2VWYWx1ZS5pc0NlbGwoKSA/IGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKCp2bSkgOiBu
dWxscHRyOwogICAgIGJhc2VWYWx1ZS5wdXQoZXhlYywgaWRlbnQsIHZhbHVlLCBzbG90KTsKICAg
ICAKICAgICBpZiAoYWNjZXNzVHlwZSAhPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5m
by0+YWNjZXNzVHlwZSkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBpZiAoc3R1YkluZm8t
PnNlZW4pCi0gICAgICAgIHJlcGF0Y2hQdXRCeUlEKGV4ZWMsIGJhc2VWYWx1ZSwgaWRlbnQsIHNs
b3QsICpzdHViSW5mbywgTm90RGlyZWN0KTsKKyAgICAgICAgcmVwYXRjaFB1dEJ5SUQoZXhlYywg
YmFzZVZhbHVlLCBzdHJ1Y3R1cmUsIGlkZW50LCBzbG90LCAqc3R1YkluZm8sIE5vdERpcmVjdCk7
CiAgICAgZWxzZQogICAgICAgICBzdHViSW5mby0+c2VlbiA9IHRydWU7CiB9CkBAIC0yOTYsMTQg
KzI5NywxNSBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdE9w
dGltaXplKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlUwogICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFz
ZVZhbHVlLCBmYWxzZSwgZXhlYy0+Y29kZUJsb2NrKCktPnB1dEJ5SWRDb250ZXh0KCkpOwotICAg
IAorCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlVmFsdWUuaXNDZWxsKCkgPyBiYXNl
VmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSgqdm0pIDogbnVsbHB0cjsgICAgCiAgICAgYmFzZVZh
bHVlLnB1dChleGVjLCBpZGVudCwgdmFsdWUsIHNsb3QpOwogICAgIAogICAgIGlmIChhY2Nlc3NU
eXBlICE9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKSkKICAg
ICAgICAgcmV0dXJuOwogICAgIAogICAgIGlmIChzdHViSW5mby0+c2VlbikKLSAgICAgICAgcmVw
YXRjaFB1dEJ5SUQoZXhlYywgYmFzZVZhbHVlLCBpZGVudCwgc2xvdCwgKnN0dWJJbmZvLCBOb3RE
aXJlY3QpOworICAgICAgICByZXBhdGNoUHV0QnlJRChleGVjLCBiYXNlVmFsdWUsIHN0cnVjdHVy
ZSwgaWRlbnQsIHNsb3QsICpzdHViSW5mbywgTm90RGlyZWN0KTsKICAgICBlbHNlCiAgICAgICAg
IHN0dWJJbmZvLT5zZWVuID0gdHJ1ZTsKIH0KQEAgLTMyMCwxMyArMzIyLDE0IEBAIHZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1pemUoRXhlY1N0YXRl
KiBleGVjLCBTdHJ1Y3R1CiAgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpKTsKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNl
T2JqZWN0LCB0cnVlLCBleGVjLT5jb2RlQmxvY2soKS0+cHV0QnlJZENvbnRleHQoKSk7CiAgICAg
CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlT2JqZWN0LT5zdHJ1Y3R1cmUoKnZtKTsK
ICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgaWRlbnQsIHZhbHVlLCBzbG90
KTsKICAgICAKICAgICBpZiAoYWNjZXNzVHlwZSAhPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihz
dHViSW5mby0+YWNjZXNzVHlwZSkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBpZiAoc3R1
YkluZm8tPnNlZW4pCi0gICAgICAgIHJlcGF0Y2hQdXRCeUlEKGV4ZWMsIGJhc2VPYmplY3QsIGlk
ZW50LCBzbG90LCAqc3R1YkluZm8sIERpcmVjdCk7CisgICAgICAgIHJlcGF0Y2hQdXRCeUlEKGV4
ZWMsIGJhc2VPYmplY3QsIHN0cnVjdHVyZSwgaWRlbnQsIHNsb3QsICpzdHViSW5mbywgRGlyZWN0
KTsKICAgICBlbHNlCiAgICAgICAgIHN0dWJJbmZvLT5zZWVuID0gdHJ1ZTsKIH0KQEAgLTM0Mywx
MyArMzQ2LDE0IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9u
U3RyaWN0T3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1CiAgICAgSlNPYmplY3QqIGJhc2VP
YmplY3QgPSBhc09iamVjdChKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpKTsKICAgICBQdXRQ
cm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBmYWxzZSwgZXhlYy0+Y29kZUJsb2NrKCktPnB1
dEJ5SWRDb250ZXh0KCkpOwogICAgIAorICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZU9i
amVjdC0+c3RydWN0dXJlKCp2bSk7CiAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0KGV4ZWMtPnZt
KCksIGlkZW50LCB2YWx1ZSwgc2xvdCk7CiAgICAgCiAgICAgaWYgKGFjY2Vzc1R5cGUgIT0gc3Rh
dGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpKQogICAgICAgICByZXR1
cm47CiAgICAgCiAgICAgaWYgKHN0dWJJbmZvLT5zZWVuKQotICAgICAgICByZXBhdGNoUHV0QnlJ
RChleGVjLCBiYXNlT2JqZWN0LCBpZGVudCwgc2xvdCwgKnN0dWJJbmZvLCBEaXJlY3QpOworICAg
ICAgICByZXBhdGNoUHV0QnlJRChleGVjLCBiYXNlT2JqZWN0LCBzdHJ1Y3R1cmUsIGlkZW50LCBz
bG90LCAqc3R1YkluZm8sIERpcmVjdCk7CiAgICAgZWxzZQogICAgICAgICBzdHViSW5mby0+c2Vl
biA9IHRydWU7CiB9CmRpZmYgLS1naXQgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNo
LmNwcCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IGZkNmEzNzQu
Ljc2NmRlM2IgMTAwNjQ0Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3Bw
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCkBAIC0yOTcsNiArMjk3
LDcgQEAgc3RhdGljIHZvaWQgZ2VuZXJhdGVCeUlkU3R1YigKICAgICBQcm9wZXJ0eU9mZnNldCBv
ZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBib29sIGxvYWRUYXJnZXRGcm9tUHJveHksIFdh
dGNocG9pbnRTZXQqIHdhdGNocG9pbnRTZXQsCiAgICAgQ29kZUxvY2F0aW9uTGFiZWwgc3VjY2Vz
c0xhYmVsLCBDb2RlTG9jYXRpb25MYWJlbCBzbG93Q2FzZUxhYmVsLCBSZWZQdHI8SklUU3R1YlJv
dXRpbmU+JiBzdHViUm91dGluZSkKIHsKKwogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAg
IEdQUlJlZyBiYXNlR1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRjaC5iYXNl
R1BSKTsKICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSBKU1ZhbHVlUmVncygKQEAgLTM0OCw3
ICszNDksNyBAQCBzdGF0aWMgdm9pZCBnZW5lcmF0ZUJ5SWRTdHViKAogICAgIGlmICh3YXRjaHBv
aW50U2V0KQogICAgICAgICB3YXRjaHBvaW50U2V0LT5hZGQoc3R1YkluZm8uYWRkV2F0Y2hwb2lu
dChjb2RlQmxvY2spKTsKIAotICAgIFN0cnVjdHVyZSogY3VyclN0cnVjdHVyZSA9IHN0cnVjdHVy
ZTsKKyAgICBTdHJ1Y3R1cmUqIGN1cnJTdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmU7IAogICAgIEpTT2Jq
ZWN0KiBwcm90b09iamVjdCA9IDA7CiAgICAgaWYgKGNoYWluKSB7CiAgICAgICAgIFdyaXRlQmFy
cmllcjxTdHJ1Y3R1cmU+KiBpdCA9IGNoYWluLT5oZWFkKCk7CkBAIC03NDcsNyArNzQ4LDcgQEAg
c3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlR2V0QnlJRChFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgYmFzZVZhbHVlLCBjb24KICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiAK
ICAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOwotICAgIFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSgpOworICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSgqdm0pOwogCiAgICAgSW5saW5lQ2FjaGVBY3Rp
b24gYWN0aW9uID0gYWN0aW9uRm9yQ2VsbCgqdm0sIGJhc2VDZWxsKTsKICAgICBpZiAoYWN0aW9u
ICE9IEF0dGVtcHRUb0NhY2hlKQpAQCAtODMyLDEwICs4MzMsMTAgQEAgc3RhdGljIElubGluZUNh
Y2hlQWN0aW9uIHRyeUJ1aWxkR2V0QnlJRExpc3QoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJh
c2VWYWx1ZSwKICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogCiAgICAgICAgIGlm
IChzbG90LmlzVW5zZXQoKSkKLSAgICAgICAgICAgIGNvdW50ID0gbm9ybWFsaXplUHJvdG90eXBl
Q2hhaW4oZXhlYywgYmFzZUNlbGwpOworICAgICAgICAgICAgY291bnQgPSBub3JtYWxpemVQcm90
b3R5cGVDaGFpbihleGVjLCBzdHJ1Y3R1cmUpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBj
b3VudCA9IG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluRm9yQ2hhaW5BY2Nlc3MoCi0gICAgICAgICAg
ICAgICAgZXhlYywgYmFzZVZhbHVlLCBzbG90LnNsb3RCYXNlKCksIGlkZW50LCBvZmZzZXQpOwor
ICAgICAgICAgICAgICAgIGV4ZWMsIHN0cnVjdHVyZSwgc2xvdC5zbG90QmFzZSgpLCBpZGVudCwg
b2Zmc2V0KTsKICAgICAgICAgaWYgKGNvdW50ID09IEludmFsaWRQcm90b3R5cGVDaGFpbikKICAg
ICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogICAgICAgICBwcm90b3R5cGVDaGFpbiA9
IHN0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4oZXhlYyk7CkBAIC05MDcsMTEgKzkwOCw5IEBAIHN0
YXRpYyBWX0pJVE9wZXJhdGlvbl9FU3NpSkpJIGFwcHJvcHJpYXRlTGlzdEJ1aWxkaW5nUHV0QnlJ
ZEZ1bmN0aW9uKGNvbnN0IFB1dFByCiAKIHN0YXRpYyB2b2lkIGVtaXRQdXRSZXBsYWNlU3R1YigK
ICAgICBFeGVjU3RhdGUqIGV4ZWMsCi0gICAgSlNWYWx1ZSwKICAgICBjb25zdCBJZGVudGlmaWVy
JiwKICAgICBjb25zdCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QsCiAgICAgU3RydWN0dXJlU3R1Yklu
Zm8mIHN0dWJJbmZvLAotICAgIFB1dEtpbmQsCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsCiAg
ICAgQ29kZUxvY2F0aW9uTGFiZWwgZmFpbHVyZUxhYmVsLAogICAgIFJlZlB0cjxKSVRTdHViUm91
dGluZT4mIHN0dWJSb3V0aW5lKQpAQCAtOTg1LDIwICs5ODQsNDQgQEAgc3RhdGljIHZvaWQgZW1p
dFB1dFJlcGxhY2VTdHViKAogICAgICAgICAgICAgICAgIHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2Fs
bFRvRG9uZSkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogfQogCi1zdGF0aWMgdm9pZCBlbWl0UHV0
VHJhbnNpdGlvblN0dWIoCi0gICAgRXhlY1N0YXRlKiBleGVjLAotICAgIEpTVmFsdWUsCi0gICAg
Y29uc3QgSWRlbnRpZmllciYsCi0gICAgY29uc3QgUHV0UHJvcGVydHlTbG90JiBzbG90LAotICAg
IFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywKLSAgICBQdXRLaW5kIHB1dEtpbmQsCi0gICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsCi0gICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsCi0gICAg
U3RydWN0dXJlQ2hhaW4qIHByb3RvdHlwZUNoYWluLAotICAgIENvZGVMb2NhdGlvbkxhYmVsIGZh
aWx1cmVMYWJlbCwKLSAgICBSZWZQdHI8SklUU3R1YlJvdXRpbmU+JiBzdHViUm91dGluZSkKK3N0
YXRpYyBTdHJ1Y3R1cmUqIGVtaXRQdXRUcmFuc2l0aW9uU3R1YkFuZEdldE9sZFN0cnVjdHVyZShF
eGVjU3RhdGUqIGV4ZWMsIFZNKiB2bSwgU3RydWN0dXJlKiYgc3RydWN0dXJlLCBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCwgCisgICAgY29uc3QgUHV0UHJvcGVydHlTbG90JiBzbG90LCBTdHJ1Y3R1
cmVTdHViSW5mbyYgc3R1YkluZm8sIFB1dEtpbmQgcHV0S2luZCkKIHsKLSAgICBWTSogdm0gPSAm
ZXhlYy0+dm0oKTsKKyAgICBQcm9wZXJ0eU5hbWUgcG5hbWUoaWRlbnQpOworICAgIFN0cnVjdHVy
ZSogb2xkU3RydWN0dXJlID0gc3RydWN0dXJlOworICAgIGlmICghb2xkU3RydWN0dXJlLT5pc09i
amVjdCgpIHx8IG9sZFN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkgfHwgcG5hbWUuYXNJbmRleCgp
ICE9IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRleCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICBQcm9wZXJ0eU9mZnNldCBwcm9wZXJ0eU9mZnNldDsKKyAgICBzdHJ1Y3R1cmUgPSBTdHJ1
Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmVDb25jdXJyZW50
bHkob2xkU3RydWN0dXJlLCBpZGVudC5pbXBsKCksIDAsIHByb3BlcnR5T2Zmc2V0KTsKKworICAg
IGlmICghc3RydWN0dXJlIHx8ICFzdHJ1Y3R1cmUtPmlzT2JqZWN0KCkgfHwgc3RydWN0dXJlLT5p
c0RpY3Rpb25hcnkoKSB8fCAhc3RydWN0dXJlLT5wcm9wZXJ0eUFjY2Vzc2VzQXJlQ2FjaGVhYmxl
KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgLy8gU2tpcCBvcHRpbWl6aW5nIHRo
ZSBjYXNlIHdoZXJlIHdlIG5lZWQgYSByZWFsbG9jLCBpZiB3ZSBkb24ndCBoYXZlCisgICAgLy8g
ZW5vdWdoIHJlZ2lzdGVycyB0byBtYWtlIGl0IGhhcHBlbi4KKyAgICBpZiAoR1BSSW5mbzo6bnVt
YmVyT2ZSZWdpc3RlcnMgPCA2CisgICAgICAgICYmIG9sZFN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2Fw
YWNpdHkoKSAhPSBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkKKyAgICAgICAgJiYgb2xk
U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKSB7CisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIH0KKworICAgIC8vIFNraXAgb3B0aW1pemluZyB0aGUgY2FzZSB3aGVyZSB3ZSBuZWVk
IHJlYWxsb2MsIGFuZCB0aGUgc3RydWN0dXJlIGhhcworICAgIC8vIGluZGV4aW5nIHN0b3JhZ2Uu
CisgICAgLy8gRklYTUU6IFdlIHNob3VsZG4ndCBza2lwIHRoaXMhIEltcGxlbWVudCBpdCEKKyAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwOTE0CisgICAg
aWYgKG9sZFN0cnVjdHVyZS0+Y291bGRIYXZlSW5kZXhpbmdIZWFkZXIoKSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICBpZiAobm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgc3Ry
dWN0dXJlKSA9PSBJbnZhbGlkUHJvdG90eXBlQ2hhaW4pCisgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgU3RydWN0dXJlQ2hhaW4qIHByb3RvdHlwZUNoYWluID0gc3RydWN0dXJlLT5wcm90
b3R5cGVDaGFpbihleGVjKTsKKworICAgIC8vIGVtaXRQdXRUcmFuc2l0aW9uU3R1YgorCisgICAg
Q29kZUxvY2F0aW9uTGFiZWwgZmFpbHVyZUxhYmVsID0gc3R1YkluZm8uY2FsbFJldHVybkxvY2F0
aW9uLmxhYmVsQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9TbG93Q2FzZSk7Cisg
ICAgUmVmUHRyPEpJVFN0dWJSb3V0aW5lPiYgc3R1YlJvdXRpbmUgPSBzdHViSW5mby5zdHViUm91
dGluZTsKIAogICAgIEdQUlJlZyBiYXNlR1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5m
by5wYXRjaC5iYXNlR1BSKTsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQpAQCAtMTIyMiw5ICsxMjQ1
LDExIEBAIHN0YXRpYyB2b2lkIGVtaXRQdXRUcmFuc2l0aW9uU3R1YigKICAgICAgICAgICAgIGV4
ZWMtPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKSwKICAgICAgICAgICAgIHN0cnVjdHVy
ZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAhPSBvbGRTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5
KCksCiAgICAgICAgICAgICBzdHJ1Y3R1cmUpOworCisgICAgcmV0dXJuIG9sZFN0cnVjdHVyZTsK
IH0KIAotc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRChFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3Qg
UHV0UHJvcGVydHlTbG90JiBzbG90LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIFB1dEtp
bmQgcHV0S2luZCkKK3N0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNv
bnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QsIFN0cnVj
dHVyZVN0dWJJbmZvJiBzdHViSW5mbywgUHV0S2luZCBwdXRLaW5kKQogewogICAgIGlmIChPcHRp
b25zOjpmb3JjZUlDRmFpbHVyZSgpKQogICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKQEAg
LTEyMzQsNDYgKzEyNTksMjMgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0
QnlJRChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBjb24KIAogICAgIGlmICgh
YmFzZVZhbHVlLmlzQ2VsbCgpKQogICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKLSAgICBK
U0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOwotICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSgqdm0pOwotICAgIFN0cnVjdHVyZSogb2xkU3Ry
dWN0dXJlID0gc3RydWN0dXJlLT5wcmV2aW91c0lEKCk7CiAgICAgCiAgICAgaWYgKCFzbG90Lmlz
Q2FjaGVhYmxlUHV0KCkgJiYgIXNsb3QuaXNDYWNoZWFibGVDdXN0b20oKSAmJiAhc2xvdC5pc0Nh
Y2hlYWJsZVNldHRlcigpKQogICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKwogICAgIGlm
ICghc3RydWN0dXJlLT5wcm9wZXJ0eUFjY2Vzc2VzQXJlQ2FjaGVhYmxlKCkpCiAgICAgICAgIHJl
dHVybiBHaXZlVXBPbkNhY2hlOwogCiAgICAgLy8gT3B0aW1pemUgc2VsZiBhY2Nlc3MuCiAgICAg
aWYgKHNsb3QuYmFzZSgpID09IGJhc2VWYWx1ZSAmJiBzbG90LmlzQ2FjaGVhYmxlUHV0KCkpIHsK
ICAgICAgICAgaWYgKHNsb3QudHlwZSgpID09IFB1dFByb3BlcnR5U2xvdDo6TmV3UHJvcGVydHkp
IHsKLSAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKQotICAgICAgICAg
ICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICAv
LyBTa2lwIG9wdGltaXppbmcgdGhlIGNhc2Ugd2hlcmUgd2UgbmVlZCBhIHJlYWxsb2MsIGlmIHdl
IGRvbid0IGhhdmUKLSAgICAgICAgICAgIC8vIGVub3VnaCByZWdpc3RlcnMgdG8gbWFrZSBpdCBo
YXBwZW4uCi0gICAgICAgICAgICBpZiAoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgPCA2Ci0g
ICAgICAgICAgICAgICAgJiYgb2xkU3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpICE9IHN0
cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKQotICAgICAgICAgICAgICAgICYmIG9sZFN0cnVj
dHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVw
T25DYWNoZTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgLy8gU2tpcCBvcHRpbWl6aW5nIHRo
ZSBjYXNlIHdoZXJlIHdlIG5lZWQgcmVhbGxvYywgYW5kIHRoZSBzdHJ1Y3R1cmUgaGFzCi0gICAg
ICAgICAgICAvLyBpbmRleGluZyBzdG9yYWdlLgotICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNo
b3VsZG4ndCBza2lwIHRoaXMhICBJbXBsZW1lbnQgaXQhCi0gICAgICAgICAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwOTE0Ci0gICAgICAgICAgICBpZiAo
b2xkU3RydWN0dXJlLT5jb3VsZEhhdmVJbmRleGluZ0hlYWRlcigpKQotICAgICAgICAgICAgICAg
IHJldHVybiBHaXZlVXBPbkNhY2hlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAobm9y
bWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgYmFzZUNlbGwpID09IEludmFsaWRQcm90b3R5cGVD
aGFpbikKKworICAgICAgICAgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSBlbWl0UHV0VHJh
bnNpdGlvblN0dWJBbmRHZXRPbGRTdHJ1Y3R1cmUoZXhlYywgdm0sIHN0cnVjdHVyZSwgaWRlbnQs
IHNsb3QsIHN0dWJJbmZvLCBwdXRLaW5kKTsKKyAgICAgICAgICAgIGlmICghb2xkU3RydWN0dXJl
KQogICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBTdHJ1Y3R1cmVDaGFpbiogcHJvdG90eXBlQ2hhaW4gPSBzdHJ1Y3R1cmUtPnBy
b3RvdHlwZUNoYWluKGV4ZWMpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBlbWl0UHV0VHJh
bnNpdGlvblN0dWIoCi0gICAgICAgICAgICAgICAgZXhlYywgYmFzZVZhbHVlLCBpZGVudCwgc2xv
dCwgc3R1YkluZm8sIHB1dEtpbmQsCi0gICAgICAgICAgICAgICAgc3RydWN0dXJlLCBvbGRTdHJ1
Y3R1cmUsIHByb3RvdHlwZUNoYWluLAotICAgICAgICAgICAgICAgIHN0dWJJbmZvLmNhbGxSZXR1
cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvU2xvd0Nh
c2UpLAotICAgICAgICAgICAgICAgIHN0dWJJbmZvLnN0dWJSb3V0aW5lKTsKLSAgICAgICAgICAg
IAogICAgICAgICAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKGNvZGVCbG9jayk7CiAg
ICAgICAgICAgICByZXBhdGNoQnVmZmVyLnJlbGluaygKICAgICAgICAgICAgICAgICBzdHViSW5m
by5jYWxsUmV0dXJuTG9jYXRpb24uanVtcEF0T2Zmc2V0KApAQCAtMTI5NCw2ICsxMjk2LDcgQEAg
c3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRChFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgYmFzZVZhbHVlLCBjb24KICAgICAgICAgc3R1YkluZm8uaW5pdFB1dEJ5SWRSZXBs
YWNlKCp2bSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKICAgICAg
ICAgcmV0dXJuIFJldHJ5Q2FjaGVMYXRlcjsKICAgICB9CisKICAgICBpZiAoKHNsb3QuaXNDYWNo
ZWFibGVDdXN0b20oKSB8fCBzbG90LmlzQ2FjaGVhYmxlU2V0dGVyKCkpCiAgICAgICAgICYmIHN0
dWJJbmZvLnBhdGNoLnNwaWxsTW9kZSA9PSBEb250U3BpbGwpIHsKICAgICAgICAgUmVmUHRyPEpJ
VFN0dWJSb3V0aW5lPiBzdHViUm91dGluZTsKQEAgLTEzMDIsMTAgKzEzMDUsOSBAQCBzdGF0aWMg
SW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBiYXNlVmFsdWUsIGNvbgogICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzbG90LmNh
Y2hlZE9mZnNldCgpOwogICAgICAgICBzaXplX3QgY291bnQgPSAwOwogICAgICAgICBpZiAoYmFz
ZVZhbHVlICE9IHNsb3QuYmFzZSgpKSB7Ci0gICAgICAgICAgICBjb3VudCA9IG5vcm1hbGl6ZVBy
b3RvdHlwZUNoYWluRm9yQ2hhaW5BY2Nlc3MoZXhlYywgYmFzZUNlbGwsIHNsb3QuYmFzZSgpLCBp
ZGVudCwgb2Zmc2V0KTsKKyAgICAgICAgICAgIGNvdW50ID0gbm9ybWFsaXplUHJvdG90eXBlQ2hh
aW5Gb3JDaGFpbkFjY2VzcyhleGVjLCBzdHJ1Y3R1cmUsIHNsb3QuYmFzZSgpLCBpZGVudCwgb2Zm
c2V0KTsKICAgICAgICAgICAgIGlmIChjb3VudCA9PSBJbnZhbGlkUHJvdG90eXBlQ2hhaW4pCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7Ci0KICAgICAgICAgICAgIHByb3Rv
dHlwZUNoYWluID0gc3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihleGVjKTsKICAgICAgICAgfQog
ICAgICAgICBQb2x5bW9ycGhpY1B1dEJ5SWRMaXN0KiBsaXN0OwpAQCAtMTMzMywxMSArMTMzNSwx
MSBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSBiYXNlVmFsdWUsIGNvbgogICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwog
fQogCi12b2lkIHJlcGF0Y2hQdXRCeUlEKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFs
dWUsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgY29uc3QgUHV0UHJvcGVydHlTbG90
JiBzbG90LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIFB1dEtpbmQgcHV0S2luZCkKK3Zv
aWQgcmVwYXRjaFB1dEJ5SUQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgY29uc3Qg
UHV0UHJvcGVydHlTbG90JiBzbG90LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIFB1dEtp
bmQgcHV0S2luZCkKIHsKICAgICBHQ1NhZmVDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihleGVj
LT5jb2RlQmxvY2soKS0+bV9sb2NrLCBleGVjLT52bSgpLmhlYXApOwogICAgIAotICAgIGlmICh0
cnlDYWNoZVB1dEJ5SUQoZXhlYywgYmFzZVZhbHVlLCBwcm9wZXJ0eU5hbWUsIHNsb3QsIHN0dWJJ
bmZvLCBwdXRLaW5kKSA9PSBHaXZlVXBPbkNhY2hlKQorICAgIGlmICh0cnlDYWNoZVB1dEJ5SUQo
ZXhlYywgYmFzZVZhbHVlLCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgc2xvdCwgc3R1YkluZm8s
IHB1dEtpbmQpID09IEdpdmVVcE9uQ2FjaGUpCiAgICAgICAgIHJlcGF0Y2hDYWxsKGV4ZWMtPmNv
ZGVCbG9jaygpLCBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24sIGFwcHJvcHJpYXRlR2VuZXJp
Y1B1dEJ5SWRGdW5jdGlvbihzbG90LCBwdXRLaW5kKSk7CiB9CiAKQEAgLTEzNDYsMTYgKzEzNDgs
OSBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5QnVpbGRQdXRCeUlkTGlzdChFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLAogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0g
ZXhlYy0+Y29kZUJsb2NrKCk7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAKLSAgICBpZiAo
IWJhc2VWYWx1ZS5pc0NlbGwoKSB8fCAhc3RydWN0dXJlKQotICAgICAgICByZXR1cm4gR2l2ZVVw
T25DYWNoZTsKLSAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOwotCi0g
ICAgaWYgKGJhc2VDZWxsLT5zdHJ1Y3R1cmUoKnZtKS0+aWQoKSAhPSBzdHJ1Y3R1cmUtPmlkKCkp
CisgICAgaWYgKCFiYXNlVmFsdWUuaXNDZWxsKCkpCiAgICAgICAgIHJldHVybiBHaXZlVXBPbkNh
Y2hlOwogCi0gICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmUtPnByZXZpb3Vz
SUQoKTsKLSAgICAKLSAgICAKICAgICBpZiAoIXNsb3QuaXNDYWNoZWFibGVQdXQoKSAmJiAhc2xv
dC5pc0NhY2hlYWJsZUN1c3RvbSgpICYmICFzbG90LmlzQ2FjaGVhYmxlU2V0dGVyKCkpCiAgICAg
ICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogCkBAIC0xMzY4LDQyICsxMzYzLDIzIEBAIHN0YXRp
YyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlCdWlsZFB1dEJ5SWRMaXN0KEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBiYXNlVmFsdWUsCiAgICAgICAgIFJlZlB0cjxKSVRTdHViUm91dGluZT4gc3R1YlJv
dXRpbmU7CiAgICAgICAgIAogICAgICAgICBpZiAoc2xvdC50eXBlKCkgPT0gUHV0UHJvcGVydHlT
bG90OjpOZXdQcm9wZXJ0eSkgewotICAgICAgICAgICAgaWYgKHN0cnVjdHVyZS0+aXNEaWN0aW9u
YXJ5KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7Ci0gICAgICAgICAg
ICAKLSAgICAgICAgICAgIC8vIFNraXAgb3B0aW1pemluZyB0aGUgY2FzZSB3aGVyZSB3ZSBuZWVk
IGEgcmVhbGxvYywgaWYgd2UgZG9uJ3QgaGF2ZQotICAgICAgICAgICAgLy8gZW5vdWdoIHJlZ2lz
dGVycyB0byBtYWtlIGl0IGhhcHBlbi4KLSAgICAgICAgICAgIGlmIChHUFJJbmZvOjpudW1iZXJP
ZlJlZ2lzdGVycyA8IDYKLSAgICAgICAgICAgICAgICAmJiBvbGRTdHJ1Y3R1cmUtPm91dE9mTGlu
ZUNhcGFjaXR5KCkgIT0gc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpCi0gICAgICAgICAg
ICAgICAgJiYgb2xkU3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKQotICAgICAgICAgICAg
ICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICAvLyBT
a2lwIG9wdGltaXppbmcgdGhlIGNhc2Ugd2hlcmUgd2UgbmVlZCByZWFsbG9jLCBhbmQgdGhlIHN0
cnVjdHVyZSBoYXMKLSAgICAgICAgICAgIC8vIGluZGV4aW5nIHN0b3JhZ2UuCi0gICAgICAgICAg
ICBpZiAob2xkU3RydWN0dXJlLT5jb3VsZEhhdmVJbmRleGluZ0hlYWRlcigpKQotICAgICAgICAg
ICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBp
ZiAobm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgYmFzZUNlbGwpID09IEludmFsaWRQcm90
b3R5cGVDaGFpbikKLSAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKLSAgICAg
ICAgICAgIAotICAgICAgICAgICAgU3RydWN0dXJlQ2hhaW4qIHByb3RvdHlwZUNoYWluID0gc3Ry
dWN0dXJlLT5wcm90b3R5cGVDaGFpbihleGVjKTsKLSAgICAgICAgICAgIAogICAgICAgICAgICAg
bGlzdCA9IFBvbHltb3JwaGljUHV0QnlJZExpc3Q6OmZyb20ocHV0S2luZCwgc3R1YkluZm8pOwog
ICAgICAgICAgICAgaWYgKGxpc3QtPmlzRnVsbCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBH
aXZlVXBPbkNhY2hlOyAvLyBXaWxsIGdldCBoZXJlIGR1ZSB0byByZWN1cnNpb24uCi0gICAgICAg
ICAgICAKLSAgICAgICAgICAgIC8vIFdlJ3JlIG5vdyBjb21taXR0ZWQgdG8gY3JlYXRpbmcgdGhl
IHN0dWIuIE1vZ3JpZnkgdGhlIG1ldGEtZGF0YSBhY2NvcmRpbmdseS4KLSAgICAgICAgICAgIGVt
aXRQdXRUcmFuc2l0aW9uU3R1YigKLSAgICAgICAgICAgICAgICBleGVjLCBiYXNlVmFsdWUsIHBy
b3BlcnR5TmFtZSwgc2xvdCwgc3R1YkluZm8sIHB1dEtpbmQsCi0gICAgICAgICAgICAgICAgc3Ry
dWN0dXJlLCBvbGRTdHJ1Y3R1cmUsIHByb3RvdHlwZUNoYWluLAotICAgICAgICAgICAgICAgIENv
ZGVMb2NhdGlvbkxhYmVsKGxpc3QtPmN1cnJlbnRTbG93UGF0aFRhcmdldCgpKSwKLSAgICAgICAg
ICAgICAgICBzdHViUm91dGluZSk7Ci0gICAgICAgICAgICAKKworICAgICAgICAgICAgU3RydWN0
dXJlKiBvbGRTdHJ1Y3R1cmUgPSBlbWl0UHV0VHJhbnNpdGlvblN0dWJBbmRHZXRPbGRTdHJ1Y3R1
cmUoZXhlYywgdm0sIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBzbG90LCBzdHViSW5mbywgcHV0
S2luZCk7CisKKyAgICAgICAgICAgIGlmICghb2xkU3RydWN0dXJlKSAKKyAgICAgICAgICAgICAg
ICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKworICAgICAgICAgICAgU3RydWN0dXJlQ2hhaW4qIHBy
b3RvdHlwZUNoYWluID0gc3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihleGVjKTsKKyAgICAgICAg
ICAgIHN0dWJSb3V0aW5lID0gc3R1YkluZm8uc3R1YlJvdXRpbmU7CiAgICAgICAgICAgICBsaXN0
LT5hZGRBY2Nlc3MoCiAgICAgICAgICAgICAgICAgUHV0QnlJZEFjY2Vzczo6dHJhbnNpdGlvbigK
ICAgICAgICAgICAgICAgICAgICAgKnZtLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLAog
ICAgICAgICAgICAgICAgICAgICBvbGRTdHJ1Y3R1cmUsIHN0cnVjdHVyZSwgcHJvdG90eXBlQ2hh
aW4sCiAgICAgICAgICAgICAgICAgICAgIHN0dWJSb3V0aW5lKSk7CisKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIGxpc3QgPSBQb2x5bW9ycGhpY1B1dEJ5SWRMaXN0Ojpmcm9tKHB1dEtp
bmQsIHN0dWJJbmZvKTsKICAgICAgICAgICAgIGlmIChsaXN0LT5pc0Z1bGwoKSkKQEAgLTE0MTMs
MjEgKzEzODksMTkgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUJ1aWxkUHV0QnlJZExp
c3QoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgLy8gV2UncmUgbm93IGNvbW1pdHRlZCB0byBjcmVhdGluZyB0aGUgc3R1Yi4gTW9n
cmlmeSB0aGUgbWV0YS1kYXRhIGFjY29yZGluZ2x5LgogICAgICAgICAgICAgZW1pdFB1dFJlcGxh
Y2VTdHViKAotICAgICAgICAgICAgICAgIGV4ZWMsIGJhc2VWYWx1ZSwgcHJvcGVydHlOYW1lLCBz
bG90LCBzdHViSW5mbywgcHV0S2luZCwKKyAgICAgICAgICAgICAgICBleGVjLCBwcm9wZXJ0eU5h
bWUsIHNsb3QsIHN0dWJJbmZvLCAKICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUsIENvZGVMb2Nh
dGlvbkxhYmVsKGxpc3QtPmN1cnJlbnRTbG93UGF0aFRhcmdldCgpKSwgc3R1YlJvdXRpbmUpOwot
ICAgICAgICAgICAgCisKICAgICAgICAgICAgIGxpc3QtPmFkZEFjY2VzcygKICAgICAgICAgICAg
ICAgICBQdXRCeUlkQWNjZXNzOjpyZXBsYWNlKAogICAgICAgICAgICAgICAgICAgICAqdm0sIGNv
ZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksCiAgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVy
ZSwgc3R1YlJvdXRpbmUpKTsKICAgICAgICAgfQotICAgICAgICAKICAgICAgICAgUmVwYXRjaEJ1
ZmZlciByZXBhdGNoQnVmZmVyKGNvZGVCbG9jayk7CiAgICAgICAgIHJlcGF0Y2hCdWZmZXIucmVs
aW5rKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5qdW1wQXRPZmZzZXQoc3R1YkluZm8ucGF0
Y2guZGVsdGFDYWxsVG9KdW1wKSwgQ29kZUxvY2F0aW9uTGFiZWwoc3R1YlJvdXRpbmUtPmNvZGUo
KS5jb2RlKCkpKTsKLSAgICAgICAgCiAgICAgICAgIGlmIChsaXN0LT5pc0Z1bGwoKSkKICAgICAg
ICAgICAgIHJlcGF0Y2hDYWxsKHJlcGF0Y2hCdWZmZXIsIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2Nh
dGlvbiwgYXBwcm9wcmlhdGVHZW5lcmljUHV0QnlJZEZ1bmN0aW9uKHNsb3QsIHB1dEtpbmQpKTsK
LSAgICAgICAgCisKICAgICAgICAgcmV0dXJuIFJldHJ5Q2FjaGVMYXRlcjsKICAgICB9CiAKQEAg
LTE0MzgsMTIgKzE0MTIsMTIgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUJ1aWxkUHV0
QnlJZExpc3QoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwKICAgICAgICAgUHJv
cGVydHlPZmZzZXQgb2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKICAgICAgICAgc2l6ZV90
IGNvdW50ID0gMDsKICAgICAgICAgaWYgKGJhc2VWYWx1ZSAhPSBzbG90LmJhc2UoKSkgewotICAg
ICAgICAgICAgY291bnQgPSBub3JtYWxpemVQcm90b3R5cGVDaGFpbkZvckNoYWluQWNjZXNzKGV4
ZWMsIGJhc2VDZWxsLCBzbG90LmJhc2UoKSwgcHJvcGVydHlOYW1lLCBvZmZzZXQpOworICAgICAg
ICAgICAgY291bnQgPSBub3JtYWxpemVQcm90b3R5cGVDaGFpbkZvckNoYWluQWNjZXNzKGV4ZWMs
IHN0cnVjdHVyZSwgc2xvdC5iYXNlKCksIHByb3BlcnR5TmFtZSwgb2Zmc2V0KTsKICAgICAgICAg
ICAgIGlmIChjb3VudCA9PSBJbnZhbGlkUHJvdG90eXBlQ2hhaW4pCiAgICAgICAgICAgICAgICAg
cmV0dXJuIEdpdmVVcE9uQ2FjaGU7Ci0KICAgICAgICAgICAgIHByb3RvdHlwZUNoYWluID0gc3Ry
dWN0dXJlLT5wcm90b3R5cGVDaGFpbihleGVjKTsKICAgICAgICAgfQorICAgICAgICAKICAgICAg
ICAgUG9seW1vcnBoaWNQdXRCeUlkTGlzdCogbGlzdDsKICAgICAgICAgbGlzdCA9IFBvbHltb3Jw
aGljUHV0QnlJZExpc3Q6OmZyb20ocHV0S2luZCwgc3R1YkluZm8pOwogCkBAIC0xNDk0LDEwICsx
NDY4LDEyIEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlSZXBhdGNoSW4oCiAgICAgCiAg
ICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKICAgICBWTSogdm0g
PSAmZXhlYy0+dm0oKTsKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJhc2UtPnN0cnVjdHVy
ZSgpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZS0+c3RydWN0dXJlKCp2bSk7CiAg
ICAgCiAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0SWdub3JlZDsKLSAgICBzaXplX3QgY291bnQg
PSBub3JtYWxpemVQcm90b3R5cGVDaGFpbkZvckNoYWluQWNjZXNzKGV4ZWMsIGJhc2UsIHdhc0Zv
dW5kID8gc2xvdC5zbG90QmFzZSgpIDogSlNWYWx1ZSgpLCBpZGVudCwgb2Zmc2V0SWdub3JlZCk7
CisgICAgSlNWYWx1ZSBmb3VuZFNsb3RCYXNlID0gd2FzRm91bmQgPyBzbG90LnNsb3RCYXNlKCkg
OiBKU1ZhbHVlKCk7CisgICAgc2l6ZV90IGNvdW50ID0gIWZvdW5kU2xvdEJhc2UgfHwgZm91bmRT
bG90QmFzZSAhPSBiYXNlID8gCisgICAgICAgIG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluRm9yQ2hh
aW5BY2Nlc3MoZXhlYywgc3RydWN0dXJlLCBmb3VuZFNsb3RCYXNlLCBpZGVudCwgb2Zmc2V0SWdu
b3JlZCkgOiAwOwogICAgIGlmIChjb3VudCA9PSBJbnZhbGlkUHJvdG90eXBlQ2hhaW4pCiAgICAg
ICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogICAgIApkaWZmIC0tZ2l0IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvUmVwYXRjaC5oIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5o
CmluZGV4IGNiMzM0MjAuLmYzN2FjN2IgMTAwNjQ0Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1JlcGF0Y2guaAorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgKQEAg
LTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiB2b2lkIHJlcGF0Y2hHZXRCeUlEKEV4ZWNT
dGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBT
dHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCBidWlsZEdldEJ5SURMaXN0KEV4ZWNTdGF0ZSosIEpT
VmFsdWUsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVT
dHViSW5mbyYpOwogdm9pZCBidWlsZEdldEJ5SURQcm90b0xpc3QoRXhlY1N0YXRlKiwgSlNWYWx1
ZSwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYsIFN0cnVjdHVyZVN0dWJJ
bmZvJik7Ci12b2lkIHJlcGF0Y2hQdXRCeUlEKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElk
ZW50aWZpZXImLCBjb25zdCBQdXRQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIFB1
dEtpbmQpOwordm9pZCByZXBhdGNoUHV0QnlJRChFeGVjU3RhdGUqLCBKU1ZhbHVlLCBTdHJ1Y3R1
cmUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHV0UHJvcGVydHlTbG90JiwgU3RydWN0dXJl
U3R1YkluZm8mLCBQdXRLaW5kKTsKIHZvaWQgYnVpbGRQdXRCeUlkTGlzdChFeGVjU3RhdGUqLCBK
U1ZhbHVlLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHV0UHJvcGVydHlT
bG90JiwgU3RydWN0dXJlU3R1YkluZm8mLCBQdXRLaW5kKTsKIHZvaWQgcmVwYXRjaEluKEV4ZWNT
dGF0ZSosIEpTQ2VsbCosIGNvbnN0IElkZW50aWZpZXImLCBib29sIHdhc0ZvdW5kLCBjb25zdCBQ
cm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCBsaW5rRm9yKEV4ZWNTdGF0
ZSosIENhbGxMaW5rSW5mbyYsIENvZGVCbG9jayosIEpTRnVuY3Rpb24qIGNhbGxlZSwgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLCBSZWdpc3RlclByZXNlcnZh
dGlvbk1vZGUpOwpkaWZmIC0tZ2l0IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5jcHAgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNw
cAppbmRleCBhYWEzZWRmLi44NWJhYzI2IDEwMDY0NAotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtNjY1LDcgKzY2NSw3IEBAIExMSU5UX1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9wdXRfYnlfaWQpCiAgICAgICAgICAgICAgICAgICAgIC8vIGJlbG93IG1h
eSBHQy4KICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBMTEludDo6Z2V0T3Bj
b2RlKG9wX3B1dF9ieV9pZCk7CiAKLSAgICAgICAgICAgICAgICAgICAgaWYgKG5vcm1hbGl6ZVBy
b3RvdHlwZUNoYWluKGV4ZWMsIGJhc2VDZWxsKSAhPSBJbnZhbGlkUHJvdG90eXBlQ2hhaW4pIHsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluKGV4ZWMsIHN0
cnVjdHVyZSkgIT0gSW52YWxpZFByb3RvdHlwZUNoYWluKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBBU1NFUlQoc3RydWN0dXJlLT5wcmV2aW91c0lEKCktPmlzT2JqZWN0KCkpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgcGNbNF0udS5zdHJ1Y3R1cmUuc2V0KAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZtLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUt
PnByZXZpb3VzSUQoKSk7CmRpZmYgLS1naXQgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmggU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgKaW5kZXggZGM0YjdjMi4uZWUxOGFiZiAxMDA2NDQK
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRv
ci5oCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1l
cmF0b3IuaApAQCAtMTQ2LDcgKzE0Niw3IEBAIGlubGluZSBKU1Byb3BlcnR5TmFtZUVudW1lcmF0
b3IqIGdlbmVyaWNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKEV4ZWNTdGF0ZSogZXhlYywKICAgICBl
bHNlCiAgICAgICAgIGJhc2UtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0UHJvcGVydHlOYW1lcyhiYXNl
LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKICAgICAK
LSAgICBub3JtYWxpemVQcm90b3R5cGVDaGFpbihleGVjLCBiYXNlKTsKKyAgICBub3JtYWxpemVQ
cm90b3R5cGVDaGFpbihleGVjLCBzdHJ1Y3R1cmUpOwogCiAgICAgSlNQcm9wZXJ0eU5hbWVFbnVt
ZXJhdG9yKiBlbnVtZXJhdG9yID0gSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpjcmVhdGUodm0s
IGJhc2UtPnN0cnVjdHVyZSh2bSksIHByb3BlcnR5TmFtZXMpOwogICAgIGVudW1lcmF0b3ItPnNl
dENhY2hlZFByb3RvdHlwZUNoYWluKHZtLCBzdHJ1Y3R1cmUtPnByb3RvdHlwZUNoYWluKGV4ZWMp
KTsKZGlmZiAtLWdpdCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCmluZGV4IGJkNDVjMjIu
LmJiODJjYjYgMTAwNjQ0Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRp
b25zLmgKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaApAQCAt
MTk0LDY1ICsxOTQsNjUgQEAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzQWRkKENhbGxGcmFtZSog
Y2FsbEZyYW1lLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQogCiAjZGVmaW5lIEludmFsaWRQcm90
b3R5cGVDaGFpbiAoc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSkKIAotaW5saW5l
IHNpemVfdCBub3JtYWxpemVQcm90b3R5cGVDaGFpbkZvckNoYWluQWNjZXNzKENhbGxGcmFtZSog
Y2FsbEZyYW1lLCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQmIHNsb3RPZmZzZXQpCitpbmxpbmUgc2l6
ZV90IG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluRm9yQ2hhaW5BY2Nlc3MoQ2FsbEZyYW1lKiBjYWxs
RnJhbWUsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiBzbG90T2Zmc2V0KQogewogICAg
IFZNJiB2bSA9IGNhbGxGcmFtZS0+dm0oKTsKLSAgICBKU0NlbGwqIGNlbGwgPSBiYXNlLmFzQ2Vs
bCgpOwogICAgIHNpemVfdCBjb3VudCA9IDA7CiAgICAgICAgIAotICAgIHdoaWxlICghc2xvdEJh
c2UgfHwgc2xvdEJhc2UgIT0gY2VsbCkgewotICAgICAgICBpZiAoY2VsbC0+aXNQcm94eSgpKQor
ICAgIHdoaWxlICgxKSB7CisgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmlzUHJveHkoKSkKICAgICAg
ICAgICAgIHJldHVybiBJbnZhbGlkUHJvdG90eXBlQ2hhaW47CiAKLSAgICAgICAgY29uc3QgVHlw
ZUluZm8mIHR5cGVJbmZvID0gY2VsbC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCk7CisgICAgICAg
IGNvbnN0IFR5cGVJbmZvJiB0eXBlSW5mbyA9IHN0cnVjdHVyZS0+dHlwZUluZm8oKTsKICAgICAg
ICAgaWYgKHR5cGVJbmZvLmhhc0ltcHVyZUdldE93blByb3BlcnR5U2xvdCgpICYmICF0eXBlSW5m
by5uZXdJbXB1cmVQcm9wZXJ0eUZpcmVzV2F0Y2hwb2ludHMoKSkKICAgICAgICAgICAgIHJldHVy
biBJbnZhbGlkUHJvdG90eXBlQ2hhaW47CiAgICAgICAgICAgICAKLSAgICAgICAgSlNWYWx1ZSB2
ID0gY2VsbC0+c3RydWN0dXJlKCktPnByb3RvdHlwZUZvckxvb2t1cChjYWxsRnJhbWUpOworICAg
ICAgICBKU1ZhbHVlIHYgPSBzdHJ1Y3R1cmUtPnByb3RvdHlwZUZvckxvb2t1cChjYWxsRnJhbWUp
OwogCi0gICAgICAgIC8vIElmIHdlIGRpZG4ndCBmaW5kIHNsb3RCYXNlIGluIGJhc2UncyBwcm90
b3R5cGUgY2hhaW4sIHRoZW4gYmFzZQorICAgICAgICAvLyBJZiB3ZSBkaWRuJ3QgZmluZCBzbG90
QmFzZSBpbiB0aGUgYmFzZSdzIHByb3RvdHlwZSBjaGFpbiwgdGhlbiB0aGUgYmFzZQogICAgICAg
ICAvLyBtdXN0IGJlIGEgcHJveHkgZm9yIGFub3RoZXIgb2JqZWN0LgogCiAgICAgICAgIGlmICh2
LmlzTnVsbCgpKSB7CiAgICAgICAgICAgICBpZiAoIXNsb3RCYXNlKQotICAgICAgICAgICAgICAg
IHJldHVybiBjb3VudDsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIHJldHVy
biBJbnZhbGlkUHJvdG90eXBlQ2hhaW47CiAgICAgICAgIH0KIAotICAgICAgICBjZWxsID0gdi5h
c0NlbGwoKTsKLQorICAgICAgICBKU0NlbGwqIGNlbGwgPSB2LmFzQ2VsbCgpOworICAgICAgICBz
dHJ1Y3R1cmUgPSBjZWxsLT5zdHJ1Y3R1cmUodm0pOwogICAgICAgICAvLyBTaW5jZSB3ZSdyZSBh
Y2Nlc3NpbmcgYSBwcm90b3R5cGUgaW4gYSBsb29wLCBpdCdzIGEgZ29vZCBiZXQgdGhhdCBpdAog
ICAgICAgICAvLyBzaG91bGQgbm90IGJlIHRyZWF0ZWQgYXMgYSBkaWN0aW9uYXJ5LgotICAgICAg
ICBpZiAoY2VsbC0+c3RydWN0dXJlKHZtKS0+aXNEaWN0aW9uYXJ5KCkpIHsKLSAgICAgICAgICAg
IGFzT2JqZWN0KGNlbGwpLT5mbGF0dGVuRGljdGlvbmFyeU9iamVjdChjYWxsRnJhbWUtPnZtKCkp
OworICAgICAgICBpZiAoc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkgeworICAgICAgICAgICAg
c3RydWN0dXJlLT5mbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZSh2bSwgYXNPYmplY3QoY2VsbCkp
OwogICAgICAgICAgICAgaWYgKHNsb3RCYXNlID09IGNlbGwpCi0gICAgICAgICAgICAgICAgc2xv
dE9mZnNldCA9IGNlbGwtPnN0cnVjdHVyZSh2bSktPmdldChjYWxsRnJhbWUtPnZtKCksIHByb3Bl
cnR5TmFtZSk7IAorICAgICAgICAgICAgICAgIHNsb3RPZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCh2
bSwgcHJvcGVydHlOYW1lKTsgCiAgICAgICAgIH0KLSAgICAgICAgICAgIAogICAgICAgICArK2Nv
dW50OworCisgICAgICAgIGlmIChzbG90QmFzZSA9PSBjZWxsKQorICAgICAgICAgICAgYnJlYWs7
CiAgICAgfQogICAgICAgICAKICAgICByZXR1cm4gY291bnQ7CiB9CiAKLWlubGluZSBzaXplX3Qg
bm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTQ2VsbCogYmFz
ZSkKK2lubGluZSBzaXplX3Qgbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oQ2FsbEZyYW1lKiBjYWxs
RnJhbWUsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIFZNJiB2bSA9IGNhbGxGcmFtZS0+
dm0oKTsKICAgICBzaXplX3QgY291bnQgPSAwOwogICAgIHdoaWxlICgxKSB7Ci0gICAgICAgIGlm
IChiYXNlLT5pc1Byb3h5KCkpCisgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmlzUHJveHkoKSkKICAg
ICAgICAgICAgIHJldHVybiBJbnZhbGlkUHJvdG90eXBlQ2hhaW47Ci0gICAgICAgICAgICAKLSAg
ICAgICAgSlNWYWx1ZSB2ID0gYmFzZS0+c3RydWN0dXJlKHZtKS0+cHJvdG90eXBlRm9yTG9va3Vw
KGNhbGxGcmFtZSk7CisgICAgICAgIEpTVmFsdWUgdiA9IHN0cnVjdHVyZS0+cHJvdG90eXBlRm9y
TG9va3VwKGNhbGxGcmFtZSk7CiAgICAgICAgIGlmICh2LmlzTnVsbCgpKQogICAgICAgICAgICAg
cmV0dXJuIGNvdW50OwogCi0gICAgICAgIGJhc2UgPSB2LmFzQ2VsbCgpOwotCisgICAgICAgIEpT
Q2VsbCogYmFzZSA9IHYuYXNDZWxsKCk7CisgICAgICAgIHN0cnVjdHVyZSA9IGJhc2UtPnN0cnVj
dHVyZSh2bSk7CiAgICAgICAgIC8vIFNpbmNlIHdlJ3JlIGFjY2Vzc2luZyBhIHByb3RvdHlwZSBp
biBhIGxvb3AsIGl0J3MgYSBnb29kIGJldCB0aGF0IGl0CiAgICAgICAgIC8vIHNob3VsZCBub3Qg
YmUgdHJlYXRlZCBhcyBhIGRpY3Rpb25hcnkuCi0gICAgICAgIGlmIChiYXNlLT5zdHJ1Y3R1cmUo
dm0pLT5pc0RpY3Rpb25hcnkoKSkKLSAgICAgICAgICAgIGFzT2JqZWN0KGJhc2UpLT5mbGF0dGVu
RGljdGlvbmFyeU9iamVjdChjYWxsRnJhbWUtPnZtKCkpOworICAgICAgICBpZiAoc3RydWN0dXJl
LT5pc0RpY3Rpb25hcnkoKSkKKyAgICAgICAgICAgIHN0cnVjdHVyZS0+ZmxhdHRlbkRpY3Rpb25h
cnlTdHJ1Y3R1cmUodm0sIGFzT2JqZWN0KGJhc2UpKTsKIAogICAgICAgICArK2NvdW50OwogICAg
IH0KZGlmZiAtLWdpdCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW96aWxsYS9tb3ppbGxh
LXRlc3RzLnlhbWwgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vemlsbGEvbW96aWxsYS10
ZXN0cy55YW1sCmluZGV4IGVjZWIzZjcuLjg1ZDdmZGMgMTAwNjQ0Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvbW96aWxsYS9tb3ppbGxhLXRlc3RzLnlhbWwKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9tb3ppbGxhL21vemlsbGEtdGVzdHMueWFtbApAQCAtNzg5LDggKzc4
OSw5IEBACiAgIGNtZDogZGVmYXVsdFJ1bk1vemlsbGFUZXN0IDpub3JtYWwsICIuLi9zaGVsbC5q
cyIKIC0gcGF0aDogZWNtYS9MZXhpY2FsQ29udmVudGlvbnMvNy43LjMtMi5qcwogICBjbWQ6IGRl
ZmF1bHRSdW5Nb3ppbGxhVGVzdCA6bm9ybWFsLCAiLi4vc2hlbGwuanMiCi0tIHBhdGg6IGVjbWEv
TGV4aWNhbENvbnZlbnRpb25zLzcuNy4zLmpzCi0gIGNtZDogZGVmYXVsdFJ1bk1vemlsbGFUZXN0
IDpub3JtYWwsICIuLi9zaGVsbC5qcyIKKyMgVGVzdCBmYWlscyBkdWUgdG8gcmRhcjovL3Byb2Js
ZW0vMTkzMzkxMDYKKyMgLSBwYXRoOiBlY21hL0xleGljYWxDb252ZW50aW9ucy83LjcuMy5qcwor
IyAgIGNtZDogZGVmYXVsdFJ1bk1vemlsbGFUZXN0IDpub3JtYWwsICIuLi9zaGVsbC5qcyIKIC0g
cGF0aDogZWNtYS9MZXhpY2FsQ29udmVudGlvbnMvNy43LjQuanMKICAgY21kOiBkZWZhdWx0UnVu
TW96aWxsYVRlc3QgOm5vcm1hbCwgIi4uL3NoZWxsLmpzIgogLSBwYXRoOiBlY21hL0xleGljYWxD
b252ZW50aW9ucy83LjguMi1uLmpzCmRpZmYgLS1naXQgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9wcm90by1zZXR0ZXIuanMgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9wcm90by1zZXR0ZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
MzNiN2FmYQotLS0gL2Rldi9udWxsCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL3Byb3RvLXNldHRlci5qcwpAQCAtMCwwICsxLDggQEAKKy8vIFJlZ0V4cC5pbnB1dCBpcyBh
IGhhbmR5IHNldHRlcgorCit2YXIgbyA9IHt9OworCitmb3IgKHZhciBrID0gMDsgayA8IDk7IGsr
KykgeworICAgIG8gPSB7X19wcm90b19fIDogbyB9OworfQorCmRpZmYgLS1naXQgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9wdXQtYnktaWQtYnVpbGQtbGlzdC1vcmRlci1yZWN1
cnNlLmpzIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcHV0LWJ5LWlkLWJ1aWxk
LWxpc3Qtb3JkZXItcmVjdXJzZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li4wOWQwMjE5Ci0tLSAvZGV2L251bGwKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvcHV0LWJ5LWlkLWJ1aWxkLWxpc3Qtb3JkZXItcmVjdXJzZS5qcwpAQCAtMCwwICsxLDM1
IEBACit2YXIgY291bnQgPSAwOworCitmdW5jdGlvbiBzZXR0ZXIodmFsdWUpIHsKKyAgICBPYmpl
Y3QuZGVmaW5lUHJvcGVydHkoCisgICAgICAgIHRoaXMsICJmIiwgeworICAgICAgICBlbnVtZXJh
YmxlOiB0cnVlLAorICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSwKKyAgICAgICAg
ICAgICAgICB3cml0YWJsZTogdHJ1ZSwKKyAgICAgICAgICAgICAgICB2YWx1ZTogMzIKKyAgICAg
ICAgICAgICAgICB9KTsKKyAgICB2YXIgbyA9IE9iamVjdC5jcmVhdGUodGhpcyk7CisgICAgdmFy
IGN1cnJlbnRDb3VudCA9IGNvdW50Kys7CisgICAgdmFyIHN0ciA9ICJmb3IgKHZhciBpID0gIiAr
IGN1cnJlbnRDb3VudCArICI7IGkgPCAiICsgKDEwMCArIGN1cnJlbnRDb3VudCkgKyAiOyArK2kp
XG4iCisgICAgICAgICAgICArICIgICAgby5mXG4iOworICAgIGV2YWwoc3RyKTsKK30KKworZnVu
Y3Rpb24gZm9vKG8pIHsKKyAgICBvLmYgPSA0MjsKK30KKworbm9JbmxpbmUoZm9vKTsKKworZm9y
ICh2YXIgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICB2YXIgbyA9IHt9OworICAgIG8uX19k
ZWZpbmVTZXR0ZXJfXygiZiIsIHNldHRlcik7CisKKyAgICBmb28obyk7CisgICAgaWYgKG8uZiAh
PSAzMikKKyAgICAgICAgdGhyb3cgKCJFcnJvciAxOiAiK28uZik7CisKKyAgICBmb28obyk7Cisg
ICAgaWYgKG8uZiAhPSA0MikKKyAgICAgICAgdGhyb3cgKCJFcnJvciAyOiAiK28uZik7Cit9Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>