<?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>226187</bug_id>
          
          <creation_ts>2021-05-24 13:37:09 -0700</creation_ts>
          <short_desc>We should drop B3 values while running Air</short_desc>
          <delta_ts>2021-06-12 10:17:36 -0700</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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>226749</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Robin Morisset">rmorisset</reporter>
          <assigned_to name="Robin Morisset">rmorisset</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1763232</commentid>
    <comment_count>0</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-05-24 13:37:09 -0700</bug_when>
    <thetext>B3 Values are not very big, but they can be quite numerous, and running Air is often the peak memory use for JSC.
So instead of keeping all of B3::Procedure including all of its values throughout Air, we should only keep what is needed, and free everything else at the end of B3::lowerToAir.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763234</commentid>
    <comment_count>1</comment_count>
      <attachid>429558</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-05-24 13:46:36 -0700</bug_when>
    <thetext>Created attachment 429558
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763235</commentid>
    <comment_count>2</comment_count>
      <attachid>429559</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-05-24 13:51:07 -0700</bug_when>
    <thetext>Created attachment 429559
Patch

fix style nits</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763305</commentid>
    <comment_count>3</comment_count>
      <attachid>429559</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-05-24 16:13:24 -0700</bug_when>
    <thetext>Comment on attachment 429559
Patch

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

&gt; Source/JavaScriptCore/b3/air/AirCode.cpp:60
&gt; +    , m_preserveB3Origins(Options::dumpAirGraphAtEachPhase() || Options::dumpFTLDisassembly() || Options::useSamplingProfiler())

this isn&apos;t how you test for the sampling profiler. It needs to be piped through from VM::shouldBuilderPCToCodeOriginMapping</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763307</commentid>
    <comment_count>4</comment_count>
      <attachid>429559</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-05-24 16:14:39 -0700</bug_when>
    <thetext>Comment on attachment 429559
Patch

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

&gt; Source/JavaScriptCore/b3/B3SparseCollection.h:121
&gt; +    void transferOrFreeAll(Vector&lt;std::unique_ptr&lt;T&gt;&gt;&amp; dst, const Functor&amp; functor)

why not just call this transferTo? Not sure what &quot;OrFreeAll&quot; is adding here in the name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763308</commentid>
    <comment_count>5</comment_count>
      <attachid>429559</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-05-24 16:15:37 -0700</bug_when>
    <thetext>Comment on attachment 429559
Patch

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

&gt; Source/JavaScriptCore/b3/B3Procedure.cpp:442
&gt; +void Procedure::freeMostB3Values()

name nit: not sure I love the name here. Maybe something more along the lines of &quot;freeUnneeededB3ValuesAfterLowing&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763309</commentid>
    <comment_count>6</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-05-24 16:15:47 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #5)
&gt; Comment on attachment 429559 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=429559&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/b3/B3Procedure.cpp:442
&gt; &gt; +void Procedure::freeMostB3Values()
&gt; 
&gt; name nit: not sure I love the name here. Maybe something more along the
&gt; lines of &quot;freeUnneeededB3ValuesAfterLowing&quot;?

Lowering*</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763330</commentid>
    <comment_count>7</comment_count>
      <attachid>429591</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-05-24 16:57:35 -0700</bug_when>
    <thetext>Created attachment 429591
Patch

Thanks Saam for the review! I updated the patch accordingly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763335</commentid>
    <comment_count>8</comment_count>
      <attachid>429594</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-05-24 17:01:14 -0700</bug_when>
    <thetext>Created attachment 429594
Patch

Fix changelog and a typo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763356</commentid>
    <comment_count>9</comment_count>
      <attachid>429601</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-05-24 17:37:37 -0700</bug_when>
    <thetext>Created attachment 429601
Patch

Remove two extraneous &quot;JS_EXPORT_PRIVATE&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764106</commentid>
    <comment_count>10</comment_count>
      <attachid>429810</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-05-26 16:15:22 -0700</bug_when>
    <thetext>Created attachment 429810
Patch

Dropping m_tuples was causing issues.
Also we should do the freeing after the end of lowerToAir, since the validator may run on the B3 procedure at the end of lowerToAir.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765247</commentid>
    <comment_count>11</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-05-30 13:14:32 -0700</bug_when>
    <thetext>I&apos;ve finally got RAMification numbers for this patch:
Effect on MacBookPro15,2:
3d-cube-SP: 0.37% better (p&lt;0.02)
prepack-wtb: 1.58% better (p&lt;0.02)
stanford-crypto-sha1: 0.39% better (p&lt;0.02)
Nothing else highly significant, but lots of p&lt;0.2 progressions and no visible regression

Effect on iPhone7:
Air: regression of 2.31% (p&lt;0.02)
UniPoker: regression of 0.53% (p&lt;0.02)
crypto-aes-SP: 0.27% better (p&lt;0.02)
date-format-tofte: regression of 0.15% (p&lt;0.02)
quicksort-wasm: 1.05% better (p&lt;0.02)
richards: regression of 0.66% (p&lt;0.02)
typescript: regression of 26.29% !! (p&lt;0.02)
The effect on typescript is definitely spurious (typescript memory consumption is heavily bimodal, being sometimes 270MB and sometimes 400MB, I just got unlucky and had no 400MB runs among the control runs on this machine), but the other numbers are just puzzling.

JetStream2 on the iPhone7 also shows a weird mix of progressions and regressions, with more regressions overall.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765441</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-31 13:38:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/78693011&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765774</commentid>
    <comment_count>13</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-06-01 14:56:04 -0700</bug_when>
    <thetext>Since this is a progression on Mac, I&apos;ve decided (after discussing it with Phil) to try to land this. I&apos;ll monitor the performance bots in case the iPhone regression was somehow real.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765797</commentid>
    <comment_count>14</comment_count>
      <attachid>430299</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-06-01 15:30:25 -0700</bug_when>
    <thetext>Created attachment 430299
Patch

Simplification: we now shrink B3::Procedure::m_values in-place, without needing to add a Vector to Air::Code.
I also updated the Changelog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766079</commentid>
    <comment_count>15</comment_count>
      <attachid>430378</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-06-02 11:44:18 -0700</bug_when>
    <thetext>Created attachment 430378
Patch for landing

rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766139</commentid>
    <comment_count>16</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-02 13:46:02 -0700</bug_when>
    <thetext>Committed r278371 (238398@main): &lt;https://commits.webkit.org/238398@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 430378.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767622</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2021-06-07 18:25:26 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 226749</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767916</commentid>
    <comment_count>18</comment_count>
      <attachid>430894</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-06-08 14:51:02 -0700</bug_when>
    <thetext>Created attachment 430894
Patch for re-landing

Re-landing with a fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767984</commentid>
    <comment_count>19</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-08 17:17:44 -0700</bug_when>
    <thetext>Found 1 new test failure: imported/w3c/web-platform-tests/navigation-timing/nav2_test_attributes_values.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769204</commentid>
    <comment_count>20</comment_count>
      <attachid>430894</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-06-12 09:48:18 -0700</bug_when>
    <thetext>Comment on attachment 430894
Patch for re-landing

Trying to get it through the commit queue once more, since the tests were known flakey at the time it failed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769205</commentid>
    <comment_count>21</comment_count>
      <attachid>430894</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-06-12 09:48:53 -0700</bug_when>
    <thetext>Comment on attachment 430894
Patch for re-landing

Does not work, I&apos;ll re-upload the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769206</commentid>
    <comment_count>22</comment_count>
      <attachid>430894</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-06-12 09:49:27 -0700</bug_when>
    <thetext>Comment on attachment 430894
Patch for re-landing

Actually was working, just took a while to update the EWS bubble.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769207</commentid>
    <comment_count>23</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-12 10:17:34 -0700</bug_when>
    <thetext>Committed r278810 (238765@main): &lt;https://commits.webkit.org/238765@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 430894.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429558</attachid>
            <date>2021-05-24 13:46:36 -0700</date>
            <delta_ts>2021-05-24 13:51:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch226187</filename>
            <type>text/plain</type>
            <size>9721</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDUwMDY0YmE1ZTZkZC4uMjZiZWQyYjJkYzk3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAyMS0wNS0yNCAgUm9i
aW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgorCisgICAgICAgIFdlIHNob3VsZCBk
cm9wIEIzIHZhbHVlcyB3aGlsZSBydW5uaW5nIEFpcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MTg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgbXVzdCBrZWVwIHRoZSBmb2xsb3dpbmcgdmFsdWVz
OgorICAgICAgICAtIFdhc21Cb3VuZHNDaGVjaywgdG8ga25vdyB3aGV0aGVyIGl0IGlzIFBpbm5l
ZCBvciBNYXhpbXVtLCBhbmQgaWYgaXQgaXMgcGlubmVkIGZpbmQgaXRzIGFyZ3VtZW50LgorICAg
ICAgICAtIENDYWxsL1BhdGNoL0NoZWNrL0NoZWNrQWRkL0NoZWNrU3ViL0NoZWNrTXVsIGFuZCBh
bGwgb2YgdGhlaXIgY2hpbGRyZW4sIGJlY2F1c2UgYWxsIG9mIHRoZXNlIGFyZSBsb3dlcmVkIHRv
IEFpcjo6UGF0Y2hwb2ludCwgd2hpY2ggbmVlZHMgdG8ga25vdyB0aGUgdHlwZSBvZiBpdHMgYXJn
dW1lbnRzLCBhbmQgZG9lcyBzbyBieSBsb29raW5nIGF0IHRoZSBjaGlsZHJlbiBvZiBpdHMgb3Jp
Z2luLgorICAgICAgICBJIGludGVuZCB0byBmaXggdGhlc2UgaW4gbGF0ZXIgcGF0Y2hlcyBpZiBw
b3NzaWJsZS4KKworICAgICAgICBXZSBhbHNvIG11c3Qga2VlcCB0aGUgU3RhY2tTbG90cyBhbGl2
ZS4gSSBkb24ndCB5ZXQgZnVsbHkgdW5kZXJzdGFuZCB3aHksIGJ1dCB0aGVyZSBhcmUgc29tZSBz
dWJ0bGUgYW5kIGhhcmQgdG8gZGVidWcgYnVncyB3aGVuZXZlciBJIGdldCB0b28gYWdyZXNzaXZl
IHdpdGggdGhvc2UsIHNvIGZvciBub3cgbGV0J3Mga2VlcCB0aGVtLgorICAgICAgICBJIHdpbGwg
YWxzbyB0cnkgdG8gZGVhbCB3aXRoIHRoZW0gaW4gYSBzZXBhcmF0ZSBwYXRjaC4KKworICAgICAg
ICBGaW5hbGx5IHdlIG11c3QgcHJlc2VydmUgYWxsIEIzIHZhbHVlcyBpbiB0aGUgZm9sbG93aW5n
IGNhc2VzOgorICAgICAgICAtIGlmIHdlIGR1bXAgdGhlIGRpc2Fzc2VtYmx5IG9yIHRoZSBBaXIg
Z3JhcGg6IGJlY2F1c2Ugb3RoZXJ3aXNlIHdlIGNhbm5vdCBwcmludCB0aGUgb3JpZ2lucworICAg
ICAgICAtIGlmIHdlIGFyZSB1c2luZyB0aGUgc2FtcGxpbmcgcHJvZmlsZXIsIGJlY2F1c2UgaXQg
cmVsaWVzIG9uIFBDVG9Db2RlT3JpZ2luTWFwIHdoaWNoIHdlIGNhbm5vdCBhY2N1cmF0ZWx5IGZp
bGwgd2l0aG91dCB0aGVzZSBvcmlnaW5zLgorCisgICAgICAgIEkgZG9uJ3QgaGF2ZSBwZXJmb3Jt
YW5jZSBudW1iZXJzIHlldCwgSSBpbnRlbmQgdG8gYWRkIHRoZW0gdG8gdGhlIGJ1Z3ppbGxhIG9u
Y2UgSSBnZXQgdGhlbS4KKworICAgICAgICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6CisgICAgICAg
IChKU0M6OkIzOjpsb3dlclRvQWlyKToKKyAgICAgICAgKiBiMy9CM1Byb2NlZHVyZS5jcHA6Cisg
ICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6OmZyZWVNb3N0QjNWYWx1ZXMpOgorICAgICAgICAq
IGIzL0IzUHJvY2VkdXJlLmg6CisgICAgICAgICogYjMvQjNTcGFyc2VDb2xsZWN0aW9uLmg6Cisg
ICAgICAgIChKU0M6OkIzOjpTcGFyc2VDb2xsZWN0aW9uOjpjbGVhckFsbCk6CisgICAgICAgIChK
U0M6OkIzOjpTcGFyc2VDb2xsZWN0aW9uOjp0cmFuc2Zlck9yRnJlZUFsbCk6CisgICAgICAgICog
YjMvYWlyL0FpckNvZGUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpDb2RlOjpDb2RlKToK
KyAgICAgICAgKiBiMy9haXIvQWlyQ29kZS5oOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpDb2Rl
OjpzaG91bGRQcmVzZXJ2ZUIzT3JpZ2lucyBjb25zdCk6CisgICAgICAgICogYjMvYWlyL0Fpckdl
bmVyYXRlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6Z2VuZXJhdGVXaXRoQWxyZWFkeUFs
bG9jYXRlZFJlZ2lzdGVycyk6CisKIDIwMjEtMDUtMjAgIFR1b21hcyBLYXJra2FpbmVuICA8dHVv
bWFzLndlYmtpdEBhcHBsZS5jb20+CiAKICAgICAgICAgJHZtIHNob3VsZCBoYXZlIGEgZnVuY3Rp
b24gZm9yIGNoZWNraW5nIGlmIEFTYW4gaXMgZW5hYmxlZCBzaW1pbGFyIHRvICR2bS5hc3NlcnRF
bmFibGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWly
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCmluZGV4IGY0
OTNhM2RmYjc2Mi4uZTkyMDliNzEwMTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNMb3dlclRvQWlyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNM
b3dlclRvQWlyLmNwcApAQCAtMzc1MCw2ICszNzUwLDcgQEAgdm9pZCBsb3dlclRvQWlyKFByb2Nl
ZHVyZSYgcHJvY2VkdXJlKQogICAgIFBoYXNlU2NvcGUgcGhhc2VTY29wZShwcm9jZWR1cmUsICJs
b3dlclRvQWlyIik7CiAgICAgTG93ZXJUb0FpciBsb3dlclRvQWlyKHByb2NlZHVyZSk7CiAgICAg
bG93ZXJUb0Fpci5ydW4oKTsKKyAgICBwcm9jZWR1cmUuZnJlZU1vc3RCM1ZhbHVlcygpOwogfQog
CiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9j
ZWR1cmUuY3BwCmluZGV4IGE1MmMwZjdmYWUxMS4uNzRmMDkwZGVjZDdjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAKQEAgLTQzOSw2ICs0MzksNDcgQEAgdm9pZCBQ
cm9jZWR1cmU6OnNldE51bUVudHJ5cG9pbnRzKHVuc2lnbmVkIG51bUVudHJ5cG9pbnRzKQogICAg
IG1fY29kZS0+c2V0TnVtRW50cnlwb2ludHMobnVtRW50cnlwb2ludHMpOwogfQogCit2b2lkIFBy
b2NlZHVyZTo6ZnJlZU1vc3RCM1ZhbHVlcygpCit7CisgICAgaWYgKG1fY29kZS0+c2hvdWxkUHJl
c2VydmVCM09yaWdpbnMoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV92YXJpYWJsZXMuY2xl
YXJBbGwoKTsKKyAgICBtX3R1cGxlcy5jbGVhcigpOworICAgIG1fYmxvY2tzLmNsZWFyKCk7Cisg
ICAgbV9jZmcgPSBudWxscHRyOworICAgIG1fZG9taW5hdG9ycyA9IG51bGxwdHI7CisgICAgbV9u
YXR1cmFsTG9vcHMgPSBudWxscHRyOworICAgIG1fZmFzdENvbnN0YW50cy5jbGVhcigpOworCisg
ICAgQml0VmVjdG9yIHZhbHVlc1RvUHJlc2VydmU7CisgICAgdmFsdWVzVG9QcmVzZXJ2ZS5lbnN1
cmVTaXplKG1fdmFsdWVzLnNpemUoKSk7CisgICAgZm9yIChWYWx1ZSogdmFsdWUgOiBtX3ZhbHVl
cykgeworICAgICAgICBzd2l0Y2godmFsdWUtPm9wY29kZSgpKSB7CisgICAgICAgIC8vIElkZWFs
bHkgd2Ugd291bGQgYWxzbyBiZSBhYmxlIHRvIGdldCByaWQgb2YgYWxsIG9mIHRob3NlLgorICAg
ICAgICAvLyBCdXQgQWlyIGN1cnJlbnRseSByZWxpZXMgb24gdGhlc2Ugb3JpZ2lucyBiZWluZyBw
cmVzZXJ2ZWQsIHNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0
MDQwCisgICAgICAgIGNhc2UgV2FzbUJvdW5kc0NoZWNrOgorICAgICAgICAgICAgdmFsdWVzVG9Q
cmVzZXJ2ZS5xdWlja1NldCh2YWx1ZS0+aW5kZXgoKSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBDQ2FsbDoKKyAgICAgICAgY2FzZSBQYXRjaHBvaW50OgorICAgICAgICBjYXNl
IENoZWNrQWRkOgorICAgICAgICBjYXNlIENoZWNrU3ViOgorICAgICAgICBjYXNlIENoZWNrTXVs
OgorICAgICAgICBjYXNlIENoZWNrOgorICAgICAgICAgICAgdmFsdWVzVG9QcmVzZXJ2ZS5xdWlj
a1NldCh2YWx1ZS0+aW5kZXgoKSk7CisgICAgICAgICAgICBmb3IgKFZhbHVlKiBjaGlsZCA6IHZh
bHVlLT5jaGlsZHJlbigpKQorICAgICAgICAgICAgICAgIHZhbHVlc1RvUHJlc2VydmUucXVpY2tT
ZXQoY2hpbGQtPmluZGV4KCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICBtX3ZhbHVlcy50cmFu
c2Zlck9yRnJlZUFsbChtX2NvZGUtPm1fYjNWYWx1ZXNUb1ByZXNlcnZlLCBbJl0oVmFsdWUqIHZh
bHVlKSB7CisgICAgICAgIHJldHVybiB2YWx1ZXNUb1ByZXNlcnZlLnF1aWNrR2V0KHZhbHVlLT5p
bmRleCgpKTsKKyAgICB9KTsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCiAKICNlbmRp
ZiAvLyBFTkFCTEUoQjNfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzUHJvY2VkdXJlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuaApp
bmRleCAwNmZmNmY1ZmExM2UuLmMzODk0YzM2MGUxMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzUHJvY2VkdXJlLmgKQEAgLTI3Miw2ICsyNzIsMTAgQEAgcHVibGljOgogICAgIEpTX0VYUE9S
VF9QUklWQVRFIFJlZ2lzdGVyU2V0IG11dGFibGVHUFJzKCk7CiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgUmVnaXN0ZXJTZXQgbXV0YWJsZUZQUnMoKTsKIAorICAgIC8vIEZyZWUgYXMgbXVjaCBtZW1v
cnkgYXMgcG9zc2libGUgYWZ0ZXIgbG93ZXJpbmcgdG8gQWlyCisgICAgLy8gTmF0dXJhbGx5LCBj
YWxsaW5nIHRoaXMgYmVmb3JlIGJlaW5nIGRvbmUgbG93ZXJpbmcgdG8gYWlyIGlzIGludmFsaWQg
YXMgaXQgZXJhc2VzIG1vc3QgaW5mb3JtYXRpb24gZnJvbSB0aGUgUHJvY2VkdXJlCisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgdm9pZCBmcmVlTW9zdEIzVmFsdWVzKCk7CisKIHByaXZhdGU6CiAgICAg
ZnJpZW5kIGNsYXNzIEJsb2NrSW5zZXJ0aW9uU2V0OwogCkBAIC0yODksMTMgKzI5MywxMyBAQCBw
cml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxCYWNrd2FyZHNDRkc+IG1fYmFja3dhcmRzQ0ZH
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxCYWNrd2FyZHNEb21pbmF0b3JzPiBtX2JhY2t3YXJkc0Rv
bWluYXRvcnM7CiAgICAgSGFzaFNldDxWYWx1ZUtleT4gbV9mYXN0Q29uc3RhbnRzOwotICAgIHVu
c2lnbmVkIG1fbnVtRW50cnlwb2ludHMgeyAxIH07CiAgICAgY29uc3QgY2hhciogbV9sYXN0UGhh
c2VOYW1lOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxPcGFxdWVCeXByb2R1Y3RzPiBtX2J5cHJvZHVj
dHM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFpcjo6Q29kZT4gbV9jb2RlOwogICAgIFJlZlB0cjxT
aGFyZWRUYXNrPHZvaWQoUHJpbnRTdHJlYW0mLCBPcmlnaW4pPj4gbV9vcmlnaW5QcmludGVyOwog
ICAgIGNvbnN0IHZvaWQqIG1fZnJvbnRlbmREYXRhOwogICAgIFBDVG9PcmlnaW5NYXAgbV9wY1Rv
T3JpZ2luTWFwOworICAgIHVuc2lnbmVkIG1fbnVtRW50cnlwb2ludHMgeyAxIH07CiAgICAgdW5z
aWduZWQgbV9vcHRMZXZlbCB7IGRlZmF1bHRPcHRMZXZlbCgpIH07CiAgICAgYm9vbCBtX25lZWRz
VXNlZFJlZ2lzdGVycyB7IHRydWUgfTsKICAgICBib29sIG1faGFzUXVpcmtzIHsgZmFsc2UgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1NwYXJzZUNvbGxlY3Rpb24u
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1NwYXJzZUNvbGxlY3Rpb24uaAppbmRleCAw
OWEzNjQ3NTI1NTYuLjUzOTFjODZlYTkwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzU3BhcnNlQ29sbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1NwYXJzZUNvbGxlY3Rpb24uaApAQCAtMTExLDYgKzExMSwyMSBAQCBwdWJsaWM6CiAgICAg
ICAgIG1fdmVjdG9yLnNocmluayhlbmRJbmRleCk7CiAgICAgfQogCisgICAgdm9pZCBjbGVhckFs
bCgpCisgICAgeworICAgICAgICBtX2luZGV4RnJlZUxpc3QuY2xlYXIoKTsKKyAgICAgICAgbV92
ZWN0b3IuY2xlYXIoKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgor
ICAgIHZvaWQgdHJhbnNmZXJPckZyZWVBbGwoVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxUPj4mIGRz
dCwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikgeworICAgICAgICBmb3IgKGl0ZXJhdG9yIGl0ID0g
YmVnaW4oKTsgaXQgIT0gZW5kKCk7ICsraXQpIHsKKyAgICAgICAgICAgIGlmIChmdW5jdG9yKCpp
dCkpCisgICAgICAgICAgICAgICAgZHN0LmFwcGVuZChXVEZNb3ZlKG1fdmVjdG9yW2l0Lm1faW5k
ZXhdKSk7CisgICAgICAgIH0KKyAgICAgICAgY2xlYXJBbGwoKTsKKyAgICB9CisKICAgICB1bnNp
Z25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV92ZWN0b3Iuc2l6ZSgpOyB9CiAgICAgYm9vbCBp
c0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV92ZWN0b3IuaXNFbXB0eSgpOyB9CiAgICAgCkBAIC0x
NTQsNiArMTY5LDggQEAgcHVibGljOgogICAgICAgICB9CiAKICAgICBwcml2YXRlOgorICAgICAg
ICBmcmllbmQgY2xhc3MgU3BhcnNlQ29sbGVjdGlvbjsKKwogICAgICAgICB1bnNpZ25lZCBmaW5k
TmV4dCh1bnNpZ25lZCBpbmRleCkKICAgICAgICAgewogICAgICAgICAgICAgd2hpbGUgKGluZGV4
IDwgbV9jb2xsZWN0aW9uLT5zaXplKCkgJiYgIW1fY29sbGVjdGlvbi0+YXQoaW5kZXgpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ29kZS5jcHAKaW5kZXggOTA0MTgxYjU3OTUzLi5j
Y2FlYTg1MjBhYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
Q29kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmNwcApA
QCAtNTcsNiArNTcsNyBAQCBzdGF0aWMgdm9pZCBkZWZhdWx0UHJvbG9ndWVHZW5lcmF0b3IoQ0Nh
bGxIZWxwZXJzJiBqaXQsIENvZGUmIGNvZGUpCiBDb2RlOjpDb2RlKFByb2NlZHVyZSYgcHJvYykK
ICAgICA6IG1fcHJvYyhwcm9jKQogICAgICwgbV9jZmcobmV3IENGRygqdGhpcykpCisgICAgLCBt
X3ByZXNlcnZlQjNPcmlnaW5zKE9wdGlvbnM6OmR1bXBBaXJHcmFwaEF0RWFjaFBoYXNlKCkgfHwg
T3B0aW9uczo6ZHVtcEZUTERpc2Fzc2VtYmx5KCkgfHwgT3B0aW9uczo6dXNlU2FtcGxpbmdQcm9m
aWxlcigpKQogICAgICwgbV9sYXN0UGhhc2VOYW1lKCJpbml0aWFsIikKICAgICAsIG1fZGVmYXVs
dFByb2xvZ3VlR2VuZXJhdG9yKGNyZWF0ZVNoYXJlZFRhc2s8UHJvbG9ndWVHZW5lcmF0b3JGdW5j
dGlvbj4oJmRlZmF1bHRQcm9sb2d1ZUdlbmVyYXRvcikpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyQ29kZS5oCmluZGV4IGQ4ZWU0MTI3YjU3My4uODg4N2UxZjg2ZWY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuaApAQCAtMzU2LDYgKzM1Niw4IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGVtaXRFcGlsb2d1ZShDQ2FsbEhlbHBlcnMmKTsKIAogICAgIHN0ZDo6dW5p
cXVlX3B0cjxHZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzPiBtX2dlbmVyYXRlQW5kQWxsb2Nh
dGVSZWdpc3RlcnM7CisKKyAgICBib29sIHNob3VsZFByZXNlcnZlQjNPcmlnaW5zKCkgY29uc3Qg
eyByZXR1cm4gbV9wcmVzZXJ2ZUIzT3JpZ2luczsgfQogICAgIAogcHJpdmF0ZToKICAgICBmcmll
bmQgY2xhc3MgOjpKU0M6OkIzOjpQcm9jZWR1cmU7CkBAIC0zOTMsNiArMzk1LDcgQEAgcHJpdmF0
ZToKICAgICB1bnNpZ25lZCBtX2ZyYW1lU2l6ZSB7IDAgfTsKICAgICB1bnNpZ25lZCBtX2NhbGxB
cmdBcmVhU2l6ZSB7IDAgfTsKICAgICBib29sIG1fc3RhY2tJc0FsbG9jYXRlZCB7IGZhbHNlIH07
CisgICAgYm9vbCBtX3ByZXNlcnZlQjNPcmlnaW5zIHsgdHJ1ZSB9OwogICAgIFJlZ2lzdGVyQXRP
ZmZzZXRMaXN0IG1fdW5jb3JyZWN0ZWRDYWxsZWVTYXZlUmVnaXN0ZXJBdE9mZnNldExpc3Q7CiAg
ICAgUmVnaXN0ZXJTZXQgbV9jYWxsZWVTYXZlUmVnaXN0ZXJzOwogICAgIFN0YWNrU2xvdCogbV9j
YWxsZWVTYXZlU3RhY2tTbG90IHsgbnVsbHB0ciB9OwpAQCAtNDAwLDYgKzQwMyw3IEBAIHByaXZh
dGU6CiAgICAgVmVjdG9yPE1hY3JvQXNzZW1ibGVyOjpMYWJlbD4gbV9lbnRyeXBvaW50TGFiZWxz
OyAvLyBUaGlzIGlzIGVtcHR5IHVudGlsIGNvZGUgZ2VuZXJhdGlvbi4KICAgICBWZWN0b3I8UmVm
PFByb2xvZ3VlR2VuZXJhdG9yPiwgMT4gbV9wcm9sb2d1ZUdlbmVyYXRvcnM7CiAgICAgUmVmUHRy
PFdhc21Cb3VuZHNDaGVja0dlbmVyYXRvcj4gbV93YXNtQm91bmRzQ2hlY2tHZW5lcmF0b3I7Cisg
ICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCMzo6VmFsdWU+PiBtX2IzVmFsdWVzVG9QcmVzZXJ2
ZTsKICAgICBjb25zdCBjaGFyKiBtX2xhc3RQaGFzZU5hbWU7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PERpc2Fzc2VtYmxlcj4gbV9kaXNhc3NlbWJsZXI7CiAgICAgdW5zaWduZWQgbV9vcHRMZXZlbCB7
IGRlZmF1bHRPcHRMZXZlbCgpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpckdlbmVyYXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
R2VuZXJhdGUuY3BwCmluZGV4IGE4YWE2YzExYmRmMS4uNWQ3MTg5NDU4Yzk1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcApAQCAtMjE0LDExICsyMTQs
MTAgQEAgc3RhdGljIHZvaWQgZ2VuZXJhdGVXaXRoQWxyZWFkeUFsbG9jYXRlZFJlZ2lzdGVycyhD
b2RlJiBjb2RlLCBDQ2FsbEhlbHBlcnMmIGppdCkKIAogICAgIFBDVG9PcmlnaW5NYXAmIHBjVG9P
cmlnaW5NYXAgPSBjb2RlLnByb2MoKS5wY1RvT3JpZ2luTWFwKCk7CiAgICAgYXV0byBhZGRJdGVt
ID0gWyZdIChJbnN0JiBpbnN0KSB7Ci0gICAgICAgIGlmICghaW5zdC5vcmlnaW4pIHsKKyAgICAg
ICAgaWYgKGNvZGUuc2hvdWxkUHJlc2VydmVCM09yaWdpbnMoKSAmJiBpbnN0Lm9yaWdpbikKKyAg
ICAgICAgICAgIHBjVG9PcmlnaW5NYXAuYXBwZW5kSXRlbShqaXQubGFiZWxJZ25vcmluZ1dhdGNo
cG9pbnRzKCksIGluc3Qub3JpZ2luLT5vcmlnaW4oKSk7CisgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIHBjVG9PcmlnaW5NYXAuYXBwZW5kSXRlbShqaXQubGFiZWxJZ25vcmluZ1dhdGNocG9pbnRz
KCksIE9yaWdpbigpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBw
Y1RvT3JpZ2luTWFwLmFwcGVuZEl0ZW0oaml0LmxhYmVsSWdub3JpbmdXYXRjaHBvaW50cygpLCBp
bnN0Lm9yaWdpbi0+b3JpZ2luKCkpOwogICAgIH07CiAKICAgICBEaXNhc3NlbWJsZXIqIGRpc2Fz
c2VtYmxlciA9IGNvZGUuZGlzYXNzZW1ibGVyKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429559</attachid>
            <date>2021-05-24 13:51:07 -0700</date>
            <delta_ts>2021-05-24 16:57:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch226187</filename>
            <type>text/plain</type>
            <size>9727</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDUwMDY0YmE1ZTZkZC4uMjZiZWQyYjJkYzk3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAyMS0wNS0yNCAgUm9i
aW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgorCisgICAgICAgIFdlIHNob3VsZCBk
cm9wIEIzIHZhbHVlcyB3aGlsZSBydW5uaW5nIEFpcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MTg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgbXVzdCBrZWVwIHRoZSBmb2xsb3dpbmcgdmFsdWVz
OgorICAgICAgICAtIFdhc21Cb3VuZHNDaGVjaywgdG8ga25vdyB3aGV0aGVyIGl0IGlzIFBpbm5l
ZCBvciBNYXhpbXVtLCBhbmQgaWYgaXQgaXMgcGlubmVkIGZpbmQgaXRzIGFyZ3VtZW50LgorICAg
ICAgICAtIENDYWxsL1BhdGNoL0NoZWNrL0NoZWNrQWRkL0NoZWNrU3ViL0NoZWNrTXVsIGFuZCBh
bGwgb2YgdGhlaXIgY2hpbGRyZW4sIGJlY2F1c2UgYWxsIG9mIHRoZXNlIGFyZSBsb3dlcmVkIHRv
IEFpcjo6UGF0Y2hwb2ludCwgd2hpY2ggbmVlZHMgdG8ga25vdyB0aGUgdHlwZSBvZiBpdHMgYXJn
dW1lbnRzLCBhbmQgZG9lcyBzbyBieSBsb29raW5nIGF0IHRoZSBjaGlsZHJlbiBvZiBpdHMgb3Jp
Z2luLgorICAgICAgICBJIGludGVuZCB0byBmaXggdGhlc2UgaW4gbGF0ZXIgcGF0Y2hlcyBpZiBw
b3NzaWJsZS4KKworICAgICAgICBXZSBhbHNvIG11c3Qga2VlcCB0aGUgU3RhY2tTbG90cyBhbGl2
ZS4gSSBkb24ndCB5ZXQgZnVsbHkgdW5kZXJzdGFuZCB3aHksIGJ1dCB0aGVyZSBhcmUgc29tZSBz
dWJ0bGUgYW5kIGhhcmQgdG8gZGVidWcgYnVncyB3aGVuZXZlciBJIGdldCB0b28gYWdyZXNzaXZl
IHdpdGggdGhvc2UsIHNvIGZvciBub3cgbGV0J3Mga2VlcCB0aGVtLgorICAgICAgICBJIHdpbGwg
YWxzbyB0cnkgdG8gZGVhbCB3aXRoIHRoZW0gaW4gYSBzZXBhcmF0ZSBwYXRjaC4KKworICAgICAg
ICBGaW5hbGx5IHdlIG11c3QgcHJlc2VydmUgYWxsIEIzIHZhbHVlcyBpbiB0aGUgZm9sbG93aW5n
IGNhc2VzOgorICAgICAgICAtIGlmIHdlIGR1bXAgdGhlIGRpc2Fzc2VtYmx5IG9yIHRoZSBBaXIg
Z3JhcGg6IGJlY2F1c2Ugb3RoZXJ3aXNlIHdlIGNhbm5vdCBwcmludCB0aGUgb3JpZ2lucworICAg
ICAgICAtIGlmIHdlIGFyZSB1c2luZyB0aGUgc2FtcGxpbmcgcHJvZmlsZXIsIGJlY2F1c2UgaXQg
cmVsaWVzIG9uIFBDVG9Db2RlT3JpZ2luTWFwIHdoaWNoIHdlIGNhbm5vdCBhY2N1cmF0ZWx5IGZp
bGwgd2l0aG91dCB0aGVzZSBvcmlnaW5zLgorCisgICAgICAgIEkgZG9uJ3QgaGF2ZSBwZXJmb3Jt
YW5jZSBudW1iZXJzIHlldCwgSSBpbnRlbmQgdG8gYWRkIHRoZW0gdG8gdGhlIGJ1Z3ppbGxhIG9u
Y2UgSSBnZXQgdGhlbS4KKworICAgICAgICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6CisgICAgICAg
IChKU0M6OkIzOjpsb3dlclRvQWlyKToKKyAgICAgICAgKiBiMy9CM1Byb2NlZHVyZS5jcHA6Cisg
ICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6OmZyZWVNb3N0QjNWYWx1ZXMpOgorICAgICAgICAq
IGIzL0IzUHJvY2VkdXJlLmg6CisgICAgICAgICogYjMvQjNTcGFyc2VDb2xsZWN0aW9uLmg6Cisg
ICAgICAgIChKU0M6OkIzOjpTcGFyc2VDb2xsZWN0aW9uOjpjbGVhckFsbCk6CisgICAgICAgIChK
U0M6OkIzOjpTcGFyc2VDb2xsZWN0aW9uOjp0cmFuc2Zlck9yRnJlZUFsbCk6CisgICAgICAgICog
YjMvYWlyL0FpckNvZGUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpDb2RlOjpDb2RlKToK
KyAgICAgICAgKiBiMy9haXIvQWlyQ29kZS5oOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpDb2Rl
OjpzaG91bGRQcmVzZXJ2ZUIzT3JpZ2lucyBjb25zdCk6CisgICAgICAgICogYjMvYWlyL0Fpckdl
bmVyYXRlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6Z2VuZXJhdGVXaXRoQWxyZWFkeUFs
bG9jYXRlZFJlZ2lzdGVycyk6CisKIDIwMjEtMDUtMjAgIFR1b21hcyBLYXJra2FpbmVuICA8dHVv
bWFzLndlYmtpdEBhcHBsZS5jb20+CiAKICAgICAgICAgJHZtIHNob3VsZCBoYXZlIGEgZnVuY3Rp
b24gZm9yIGNoZWNraW5nIGlmIEFTYW4gaXMgZW5hYmxlZCBzaW1pbGFyIHRvICR2bS5hc3NlcnRF
bmFibGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWly
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCmluZGV4IGY0
OTNhM2RmYjc2Mi4uZTkyMDliNzEwMTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNMb3dlclRvQWlyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNM
b3dlclRvQWlyLmNwcApAQCAtMzc1MCw2ICszNzUwLDcgQEAgdm9pZCBsb3dlclRvQWlyKFByb2Nl
ZHVyZSYgcHJvY2VkdXJlKQogICAgIFBoYXNlU2NvcGUgcGhhc2VTY29wZShwcm9jZWR1cmUsICJs
b3dlclRvQWlyIik7CiAgICAgTG93ZXJUb0FpciBsb3dlclRvQWlyKHByb2NlZHVyZSk7CiAgICAg
bG93ZXJUb0Fpci5ydW4oKTsKKyAgICBwcm9jZWR1cmUuZnJlZU1vc3RCM1ZhbHVlcygpOwogfQog
CiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9j
ZWR1cmUuY3BwCmluZGV4IGE1MmMwZjdmYWUxMS4uNDYwYjI4NjllYWVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAKQEAgLTQzOSw2ICs0MzksNDcgQEAgdm9pZCBQ
cm9jZWR1cmU6OnNldE51bUVudHJ5cG9pbnRzKHVuc2lnbmVkIG51bUVudHJ5cG9pbnRzKQogICAg
IG1fY29kZS0+c2V0TnVtRW50cnlwb2ludHMobnVtRW50cnlwb2ludHMpOwogfQogCit2b2lkIFBy
b2NlZHVyZTo6ZnJlZU1vc3RCM1ZhbHVlcygpCit7CisgICAgaWYgKG1fY29kZS0+c2hvdWxkUHJl
c2VydmVCM09yaWdpbnMoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV92YXJpYWJsZXMuY2xl
YXJBbGwoKTsKKyAgICBtX3R1cGxlcy5jbGVhcigpOworICAgIG1fYmxvY2tzLmNsZWFyKCk7Cisg
ICAgbV9jZmcgPSBudWxscHRyOworICAgIG1fZG9taW5hdG9ycyA9IG51bGxwdHI7CisgICAgbV9u
YXR1cmFsTG9vcHMgPSBudWxscHRyOworICAgIG1fZmFzdENvbnN0YW50cy5jbGVhcigpOworCisg
ICAgQml0VmVjdG9yIHZhbHVlc1RvUHJlc2VydmU7CisgICAgdmFsdWVzVG9QcmVzZXJ2ZS5lbnN1
cmVTaXplKG1fdmFsdWVzLnNpemUoKSk7CisgICAgZm9yIChWYWx1ZSogdmFsdWUgOiBtX3ZhbHVl
cykgeworICAgICAgICBzd2l0Y2ggKHZhbHVlLT5vcGNvZGUoKSkgeworICAgICAgICAvLyBJZGVh
bGx5IHdlIHdvdWxkIGFsc28gYmUgYWJsZSB0byBnZXQgcmlkIG9mIGFsbCBvZiB0aG9zZS4KKyAg
ICAgICAgLy8gQnV0IEFpciBjdXJyZW50bHkgcmVsaWVzIG9uIHRoZXNlIG9yaWdpbnMgYmVpbmcg
cHJlc2VydmVkLCBzZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
NDA0MAorICAgICAgICBjYXNlIFdhc21Cb3VuZHNDaGVjazoKKyAgICAgICAgICAgIHZhbHVlc1Rv
UHJlc2VydmUucXVpY2tTZXQodmFsdWUtPmluZGV4KCkpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgQ0NhbGw6CisgICAgICAgIGNhc2UgUGF0Y2hwb2ludDoKKyAgICAgICAgY2Fz
ZSBDaGVja0FkZDoKKyAgICAgICAgY2FzZSBDaGVja1N1YjoKKyAgICAgICAgY2FzZSBDaGVja011
bDoKKyAgICAgICAgY2FzZSBDaGVjazoKKyAgICAgICAgICAgIHZhbHVlc1RvUHJlc2VydmUucXVp
Y2tTZXQodmFsdWUtPmluZGV4KCkpOworICAgICAgICAgICAgZm9yIChWYWx1ZSogY2hpbGQgOiB2
YWx1ZS0+Y2hpbGRyZW4oKSkKKyAgICAgICAgICAgICAgICB2YWx1ZXNUb1ByZXNlcnZlLnF1aWNr
U2V0KGNoaWxkLT5pbmRleCgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgbV92YWx1ZXMudHJh
bnNmZXJPckZyZWVBbGwobV9jb2RlLT5tX2IzVmFsdWVzVG9QcmVzZXJ2ZSwgWyZdKFZhbHVlKiB2
YWx1ZSkgeworICAgICAgICByZXR1cm4gdmFsdWVzVG9QcmVzZXJ2ZS5xdWlja0dldCh2YWx1ZS0+
aW5kZXgoKSk7CisgICAgfSk7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwogCiAjZW5k
aWYgLy8gRU5BQkxFKEIzX0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1Byb2NlZHVyZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmgK
aW5kZXggMDZmZjZmNWZhMTNlLi5jMzg5NGMzNjBlMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1Byb2NlZHVyZS5oCkBAIC0yNzIsNiArMjcyLDEwIEBAIHB1YmxpYzoKICAgICBKU19FWFBP
UlRfUFJJVkFURSBSZWdpc3RlclNldCBtdXRhYmxlR1BScygpOwogICAgIEpTX0VYUE9SVF9QUklW
QVRFIFJlZ2lzdGVyU2V0IG11dGFibGVGUFJzKCk7CiAKKyAgICAvLyBGcmVlIGFzIG11Y2ggbWVt
b3J5IGFzIHBvc3NpYmxlIGFmdGVyIGxvd2VyaW5nIHRvIEFpcgorICAgIC8vIE5hdHVyYWxseSwg
Y2FsbGluZyB0aGlzIGJlZm9yZSBiZWluZyBkb25lIGxvd2VyaW5nIHRvIGFpciBpcyBpbnZhbGlk
IGFzIGl0IGVyYXNlcyBtb3N0IGluZm9ybWF0aW9uIGZyb20gdGhlIFByb2NlZHVyZQorICAgIEpT
X0VYUE9SVF9QUklWQVRFIHZvaWQgZnJlZU1vc3RCM1ZhbHVlcygpOworCiBwcml2YXRlOgogICAg
IGZyaWVuZCBjbGFzcyBCbG9ja0luc2VydGlvblNldDsKIApAQCAtMjg5LDEzICsyOTMsMTMgQEAg
cHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmFja3dhcmRzQ0ZHPiBtX2JhY2t3YXJkc0NG
RzsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmFja3dhcmRzRG9taW5hdG9ycz4gbV9iYWNrd2FyZHNE
b21pbmF0b3JzOwogICAgIEhhc2hTZXQ8VmFsdWVLZXk+IG1fZmFzdENvbnN0YW50czsKLSAgICB1
bnNpZ25lZCBtX251bUVudHJ5cG9pbnRzIHsgMSB9OwogICAgIGNvbnN0IGNoYXIqIG1fbGFzdFBo
YXNlTmFtZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8T3BhcXVlQnlwcm9kdWN0cz4gbV9ieXByb2R1
Y3RzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBaXI6OkNvZGU+IG1fY29kZTsKICAgICBSZWZQdHI8
U2hhcmVkVGFzazx2b2lkKFByaW50U3RyZWFtJiwgT3JpZ2luKT4+IG1fb3JpZ2luUHJpbnRlcjsK
ICAgICBjb25zdCB2b2lkKiBtX2Zyb250ZW5kRGF0YTsKICAgICBQQ1RvT3JpZ2luTWFwIG1fcGNU
b09yaWdpbk1hcDsKKyAgICB1bnNpZ25lZCBtX251bUVudHJ5cG9pbnRzIHsgMSB9OwogICAgIHVu
c2lnbmVkIG1fb3B0TGV2ZWwgeyBkZWZhdWx0T3B0TGV2ZWwoKSB9OwogICAgIGJvb2wgbV9uZWVk
c1VzZWRSZWdpc3RlcnMgeyB0cnVlIH07CiAgICAgYm9vbCBtX2hhc1F1aXJrcyB7IGZhbHNlIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTcGFyc2VDb2xsZWN0aW9u
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTcGFyc2VDb2xsZWN0aW9uLmgKaW5kZXgg
MDlhMzY0NzUyNTU2Li5iYmNiMWM5NzdkMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1NwYXJzZUNvbGxlY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNTcGFyc2VDb2xsZWN0aW9uLmgKQEAgLTExMSw2ICsxMTEsMjIgQEAgcHVibGljOgogICAg
ICAgICBtX3ZlY3Rvci5zaHJpbmsoZW5kSW5kZXgpOwogICAgIH0KIAorICAgIHZvaWQgY2xlYXJB
bGwoKQorICAgIHsKKyAgICAgICAgbV9pbmRleEZyZWVMaXN0LmNsZWFyKCk7CisgICAgICAgIG1f
dmVjdG9yLmNsZWFyKCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4K
KyAgICB2b2lkIHRyYW5zZmVyT3JGcmVlQWxsKFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8VD4+JiBk
c3QsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCisgICAgeworICAgICAgICBmb3IgKGl0ZXJhdG9y
IGl0ID0gYmVnaW4oKTsgaXQgIT0gZW5kKCk7ICsraXQpIHsKKyAgICAgICAgICAgIGlmIChmdW5j
dG9yKCppdCkpCisgICAgICAgICAgICAgICAgZHN0LmFwcGVuZChXVEZNb3ZlKG1fdmVjdG9yW2l0
Lm1faW5kZXhdKSk7CisgICAgICAgIH0KKyAgICAgICAgY2xlYXJBbGwoKTsKKyAgICB9CisKICAg
ICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV92ZWN0b3Iuc2l6ZSgpOyB9CiAgICAg
Ym9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV92ZWN0b3IuaXNFbXB0eSgpOyB9CiAgICAg
CkBAIC0xNTQsNiArMTcwLDggQEAgcHVibGljOgogICAgICAgICB9CiAKICAgICBwcml2YXRlOgor
ICAgICAgICBmcmllbmQgY2xhc3MgU3BhcnNlQ29sbGVjdGlvbjsKKwogICAgICAgICB1bnNpZ25l
ZCBmaW5kTmV4dCh1bnNpZ25lZCBpbmRleCkKICAgICAgICAgewogICAgICAgICAgICAgd2hpbGUg
KGluZGV4IDwgbV9jb2xsZWN0aW9uLT5zaXplKCkgJiYgIW1fY29sbGVjdGlvbi0+YXQoaW5kZXgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ29kZS5jcHAKaW5kZXggOTA0MTgxYjU3
OTUzLi5jY2FlYTg1MjBhYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyQ29kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2Rl
LmNwcApAQCAtNTcsNiArNTcsNyBAQCBzdGF0aWMgdm9pZCBkZWZhdWx0UHJvbG9ndWVHZW5lcmF0
b3IoQ0NhbGxIZWxwZXJzJiBqaXQsIENvZGUmIGNvZGUpCiBDb2RlOjpDb2RlKFByb2NlZHVyZSYg
cHJvYykKICAgICA6IG1fcHJvYyhwcm9jKQogICAgICwgbV9jZmcobmV3IENGRygqdGhpcykpCisg
ICAgLCBtX3ByZXNlcnZlQjNPcmlnaW5zKE9wdGlvbnM6OmR1bXBBaXJHcmFwaEF0RWFjaFBoYXNl
KCkgfHwgT3B0aW9uczo6ZHVtcEZUTERpc2Fzc2VtYmx5KCkgfHwgT3B0aW9uczo6dXNlU2FtcGxp
bmdQcm9maWxlcigpKQogICAgICwgbV9sYXN0UGhhc2VOYW1lKCJpbml0aWFsIikKICAgICAsIG1f
ZGVmYXVsdFByb2xvZ3VlR2VuZXJhdG9yKGNyZWF0ZVNoYXJlZFRhc2s8UHJvbG9ndWVHZW5lcmF0
b3JGdW5jdGlvbj4oJmRlZmF1bHRQcm9sb2d1ZUdlbmVyYXRvcikpCiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlyQ29kZS5oCmluZGV4IGQ4ZWU0MTI3YjU3My4uODg4N2UxZjg2ZWY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuaApAQCAtMzU2LDYgKzM1Niw4IEBA
IHB1YmxpYzoKICAgICB2b2lkIGVtaXRFcGlsb2d1ZShDQ2FsbEhlbHBlcnMmKTsKIAogICAgIHN0
ZDo6dW5pcXVlX3B0cjxHZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzPiBtX2dlbmVyYXRlQW5k
QWxsb2NhdGVSZWdpc3RlcnM7CisKKyAgICBib29sIHNob3VsZFByZXNlcnZlQjNPcmlnaW5zKCkg
Y29uc3QgeyByZXR1cm4gbV9wcmVzZXJ2ZUIzT3JpZ2luczsgfQogICAgIAogcHJpdmF0ZToKICAg
ICBmcmllbmQgY2xhc3MgOjpKU0M6OkIzOjpQcm9jZWR1cmU7CkBAIC0zOTMsNiArMzk1LDcgQEAg
cHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2ZyYW1lU2l6ZSB7IDAgfTsKICAgICB1bnNpZ25lZCBt
X2NhbGxBcmdBcmVhU2l6ZSB7IDAgfTsKICAgICBib29sIG1fc3RhY2tJc0FsbG9jYXRlZCB7IGZh
bHNlIH07CisgICAgYm9vbCBtX3ByZXNlcnZlQjNPcmlnaW5zIHsgdHJ1ZSB9OwogICAgIFJlZ2lz
dGVyQXRPZmZzZXRMaXN0IG1fdW5jb3JyZWN0ZWRDYWxsZWVTYXZlUmVnaXN0ZXJBdE9mZnNldExp
c3Q7CiAgICAgUmVnaXN0ZXJTZXQgbV9jYWxsZWVTYXZlUmVnaXN0ZXJzOwogICAgIFN0YWNrU2xv
dCogbV9jYWxsZWVTYXZlU3RhY2tTbG90IHsgbnVsbHB0ciB9OwpAQCAtNDAwLDYgKzQwMyw3IEBA
IHByaXZhdGU6CiAgICAgVmVjdG9yPE1hY3JvQXNzZW1ibGVyOjpMYWJlbD4gbV9lbnRyeXBvaW50
TGFiZWxzOyAvLyBUaGlzIGlzIGVtcHR5IHVudGlsIGNvZGUgZ2VuZXJhdGlvbi4KICAgICBWZWN0
b3I8UmVmPFByb2xvZ3VlR2VuZXJhdG9yPiwgMT4gbV9wcm9sb2d1ZUdlbmVyYXRvcnM7CiAgICAg
UmVmUHRyPFdhc21Cb3VuZHNDaGVja0dlbmVyYXRvcj4gbV93YXNtQm91bmRzQ2hlY2tHZW5lcmF0
b3I7CisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCMzo6VmFsdWU+PiBtX2IzVmFsdWVzVG9Q
cmVzZXJ2ZTsKICAgICBjb25zdCBjaGFyKiBtX2xhc3RQaGFzZU5hbWU7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPERpc2Fzc2VtYmxlcj4gbV9kaXNhc3NlbWJsZXI7CiAgICAgdW5zaWduZWQgbV9vcHRM
ZXZlbCB7IGRlZmF1bHRPcHRMZXZlbCgpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyR2VuZXJhdGUuY3BwCmluZGV4IGE4YWE2YzExYmRmMS4uNWQ3MTg5NDU4Yzk1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcApAQCAtMjE0LDEx
ICsyMTQsMTAgQEAgc3RhdGljIHZvaWQgZ2VuZXJhdGVXaXRoQWxyZWFkeUFsbG9jYXRlZFJlZ2lz
dGVycyhDb2RlJiBjb2RlLCBDQ2FsbEhlbHBlcnMmIGppdCkKIAogICAgIFBDVG9PcmlnaW5NYXAm
IHBjVG9PcmlnaW5NYXAgPSBjb2RlLnByb2MoKS5wY1RvT3JpZ2luTWFwKCk7CiAgICAgYXV0byBh
ZGRJdGVtID0gWyZdIChJbnN0JiBpbnN0KSB7Ci0gICAgICAgIGlmICghaW5zdC5vcmlnaW4pIHsK
KyAgICAgICAgaWYgKGNvZGUuc2hvdWxkUHJlc2VydmVCM09yaWdpbnMoKSAmJiBpbnN0Lm9yaWdp
bikKKyAgICAgICAgICAgIHBjVG9PcmlnaW5NYXAuYXBwZW5kSXRlbShqaXQubGFiZWxJZ25vcmlu
Z1dhdGNocG9pbnRzKCksIGluc3Qub3JpZ2luLT5vcmlnaW4oKSk7CisgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIHBjVG9PcmlnaW5NYXAuYXBwZW5kSXRlbShqaXQubGFiZWxJZ25vcmluZ1dhdGNo
cG9pbnRzKCksIE9yaWdpbigpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAg
ICAgICBwY1RvT3JpZ2luTWFwLmFwcGVuZEl0ZW0oaml0LmxhYmVsSWdub3JpbmdXYXRjaHBvaW50
cygpLCBpbnN0Lm9yaWdpbi0+b3JpZ2luKCkpOwogICAgIH07CiAKICAgICBEaXNhc3NlbWJsZXIq
IGRpc2Fzc2VtYmxlciA9IGNvZGUuZGlzYXNzZW1ibGVyKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429591</attachid>
            <date>2021-05-24 16:57:35 -0700</date>
            <delta_ts>2021-05-24 17:01:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch226187</filename>
            <type>text/plain</type>
            <size>12034</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDUwMDY0YmE1ZTZkZC4uMjZiZWQyYjJkYzk3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAyMS0wNS0yNCAgUm9i
aW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgorCisgICAgICAgIFdlIHNob3VsZCBk
cm9wIEIzIHZhbHVlcyB3aGlsZSBydW5uaW5nIEFpcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MTg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgbXVzdCBrZWVwIHRoZSBmb2xsb3dpbmcgdmFsdWVz
OgorICAgICAgICAtIFdhc21Cb3VuZHNDaGVjaywgdG8ga25vdyB3aGV0aGVyIGl0IGlzIFBpbm5l
ZCBvciBNYXhpbXVtLCBhbmQgaWYgaXQgaXMgcGlubmVkIGZpbmQgaXRzIGFyZ3VtZW50LgorICAg
ICAgICAtIENDYWxsL1BhdGNoL0NoZWNrL0NoZWNrQWRkL0NoZWNrU3ViL0NoZWNrTXVsIGFuZCBh
bGwgb2YgdGhlaXIgY2hpbGRyZW4sIGJlY2F1c2UgYWxsIG9mIHRoZXNlIGFyZSBsb3dlcmVkIHRv
IEFpcjo6UGF0Y2hwb2ludCwgd2hpY2ggbmVlZHMgdG8ga25vdyB0aGUgdHlwZSBvZiBpdHMgYXJn
dW1lbnRzLCBhbmQgZG9lcyBzbyBieSBsb29raW5nIGF0IHRoZSBjaGlsZHJlbiBvZiBpdHMgb3Jp
Z2luLgorICAgICAgICBJIGludGVuZCB0byBmaXggdGhlc2UgaW4gbGF0ZXIgcGF0Y2hlcyBpZiBw
b3NzaWJsZS4KKworICAgICAgICBXZSBhbHNvIG11c3Qga2VlcCB0aGUgU3RhY2tTbG90cyBhbGl2
ZS4gSSBkb24ndCB5ZXQgZnVsbHkgdW5kZXJzdGFuZCB3aHksIGJ1dCB0aGVyZSBhcmUgc29tZSBz
dWJ0bGUgYW5kIGhhcmQgdG8gZGVidWcgYnVncyB3aGVuZXZlciBJIGdldCB0b28gYWdyZXNzaXZl
IHdpdGggdGhvc2UsIHNvIGZvciBub3cgbGV0J3Mga2VlcCB0aGVtLgorICAgICAgICBJIHdpbGwg
YWxzbyB0cnkgdG8gZGVhbCB3aXRoIHRoZW0gaW4gYSBzZXBhcmF0ZSBwYXRjaC4KKworICAgICAg
ICBGaW5hbGx5IHdlIG11c3QgcHJlc2VydmUgYWxsIEIzIHZhbHVlcyBpbiB0aGUgZm9sbG93aW5n
IGNhc2VzOgorICAgICAgICAtIGlmIHdlIGR1bXAgdGhlIGRpc2Fzc2VtYmx5IG9yIHRoZSBBaXIg
Z3JhcGg6IGJlY2F1c2Ugb3RoZXJ3aXNlIHdlIGNhbm5vdCBwcmludCB0aGUgb3JpZ2lucworICAg
ICAgICAtIGlmIHdlIGFyZSB1c2luZyB0aGUgc2FtcGxpbmcgcHJvZmlsZXIsIGJlY2F1c2UgaXQg
cmVsaWVzIG9uIFBDVG9Db2RlT3JpZ2luTWFwIHdoaWNoIHdlIGNhbm5vdCBhY2N1cmF0ZWx5IGZp
bGwgd2l0aG91dCB0aGVzZSBvcmlnaW5zLgorCisgICAgICAgIEkgZG9uJ3QgaGF2ZSBwZXJmb3Jt
YW5jZSBudW1iZXJzIHlldCwgSSBpbnRlbmQgdG8gYWRkIHRoZW0gdG8gdGhlIGJ1Z3ppbGxhIG9u
Y2UgSSBnZXQgdGhlbS4KKworICAgICAgICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6CisgICAgICAg
IChKU0M6OkIzOjpsb3dlclRvQWlyKToKKyAgICAgICAgKiBiMy9CM1Byb2NlZHVyZS5jcHA6Cisg
ICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6OmZyZWVNb3N0QjNWYWx1ZXMpOgorICAgICAgICAq
IGIzL0IzUHJvY2VkdXJlLmg6CisgICAgICAgICogYjMvQjNTcGFyc2VDb2xsZWN0aW9uLmg6Cisg
ICAgICAgIChKU0M6OkIzOjpTcGFyc2VDb2xsZWN0aW9uOjpjbGVhckFsbCk6CisgICAgICAgIChK
U0M6OkIzOjpTcGFyc2VDb2xsZWN0aW9uOjp0cmFuc2Zlck9yRnJlZUFsbCk6CisgICAgICAgICog
YjMvYWlyL0FpckNvZGUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpDb2RlOjpDb2RlKToK
KyAgICAgICAgKiBiMy9haXIvQWlyQ29kZS5oOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpDb2Rl
OjpzaG91bGRQcmVzZXJ2ZUIzT3JpZ2lucyBjb25zdCk6CisgICAgICAgICogYjMvYWlyL0Fpckdl
bmVyYXRlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6Z2VuZXJhdGVXaXRoQWxyZWFkeUFs
bG9jYXRlZFJlZ2lzdGVycyk6CisKIDIwMjEtMDUtMjAgIFR1b21hcyBLYXJra2FpbmVuICA8dHVv
bWFzLndlYmtpdEBhcHBsZS5jb20+CiAKICAgICAgICAgJHZtIHNob3VsZCBoYXZlIGEgZnVuY3Rp
b24gZm9yIGNoZWNraW5nIGlmIEFTYW4gaXMgZW5hYmxlZCBzaW1pbGFyIHRvICR2bS5hc3NlcnRF
bmFibGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWly
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCmluZGV4IGY0
OTNhM2RmYjc2Mi4uYzJjNzI5NzNhMWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNMb3dlclRvQWlyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNM
b3dlclRvQWlyLmNwcApAQCAtMzc1MCw2ICszNzUwLDcgQEAgdm9pZCBsb3dlclRvQWlyKFByb2Nl
ZHVyZSYgcHJvY2VkdXJlKQogICAgIFBoYXNlU2NvcGUgcGhhc2VTY29wZShwcm9jZWR1cmUsICJs
b3dlclRvQWlyIik7CiAgICAgTG93ZXJUb0FpciBsb3dlclRvQWlyKHByb2NlZHVyZSk7CiAgICAg
bG93ZXJUb0Fpci5ydW4oKTsKKyAgICBwcm9jZWR1cmUuZnJlZVVubmVlZWRlZEIzVmFsdWVzQWZ0
ZXJMb3dlcmluZygpOwogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCmluZGV4IGE1MmMwZjdmYWUxMS4uYzJiM2QzMmE5
NzEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAKQEAgLTQzOSw2
ICs0MzksNDkgQEAgdm9pZCBQcm9jZWR1cmU6OnNldE51bUVudHJ5cG9pbnRzKHVuc2lnbmVkIG51
bUVudHJ5cG9pbnRzKQogICAgIG1fY29kZS0+c2V0TnVtRW50cnlwb2ludHMobnVtRW50cnlwb2lu
dHMpOwogfQogCit2b2lkIFByb2NlZHVyZTo6ZnJlZVVubmVlZWRlZEIzVmFsdWVzQWZ0ZXJMb3dl
cmluZygpCit7CisgICAgbV92YXJpYWJsZXMuY2xlYXJBbGwoKTsKKyAgICBtX3R1cGxlcy5jbGVh
cigpOworICAgIG1fYmxvY2tzLmNsZWFyKCk7CisgICAgbV9jZmcgPSBudWxscHRyOworICAgIG1f
ZG9taW5hdG9ycyA9IG51bGxwdHI7CisgICAgbV9uYXR1cmFsTG9vcHMgPSBudWxscHRyOworICAg
IG1fYmFja3dhcmRzQ0ZHID0gbnVsbHB0cjsKKyAgICBtX2JhY2t3YXJkc0RvbWluYXRvcnMgPSBu
dWxscHRyOworICAgIG1fZmFzdENvbnN0YW50cy5jbGVhcigpOworCisgICAgaWYgKG1fY29kZS0+
c2hvdWxkUHJlc2VydmVCM09yaWdpbnMoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQml0VmVj
dG9yIHZhbHVlc1RvUHJlc2VydmU7CisgICAgdmFsdWVzVG9QcmVzZXJ2ZS5lbnN1cmVTaXplKG1f
dmFsdWVzLnNpemUoKSk7CisgICAgZm9yIChWYWx1ZSogdmFsdWUgOiBtX3ZhbHVlcykgeworICAg
ICAgICBzd2l0Y2ggKHZhbHVlLT5vcGNvZGUoKSkgeworICAgICAgICAvLyBJZGVhbGx5IHdlIHdv
dWxkIGFsc28gYmUgYWJsZSB0byBnZXQgcmlkIG9mIGFsbCBvZiB0aG9zZS4KKyAgICAgICAgLy8g
QnV0IEFpciBjdXJyZW50bHkgcmVsaWVzIG9uIHRoZXNlIG9yaWdpbnMgYmVpbmcgcHJlc2VydmVk
LCBzZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDA0MAorICAg
ICAgICBjYXNlIFdhc21Cb3VuZHNDaGVjazoKKyAgICAgICAgICAgIHZhbHVlc1RvUHJlc2VydmUu
cXVpY2tTZXQodmFsdWUtPmluZGV4KCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgQ0NhbGw6CisgICAgICAgIGNhc2UgUGF0Y2hwb2ludDoKKyAgICAgICAgY2FzZSBDaGVja0Fk
ZDoKKyAgICAgICAgY2FzZSBDaGVja1N1YjoKKyAgICAgICAgY2FzZSBDaGVja011bDoKKyAgICAg
ICAgY2FzZSBDaGVjazoKKyAgICAgICAgICAgIHZhbHVlc1RvUHJlc2VydmUucXVpY2tTZXQodmFs
dWUtPmluZGV4KCkpOworICAgICAgICAgICAgZm9yIChWYWx1ZSogY2hpbGQgOiB2YWx1ZS0+Y2hp
bGRyZW4oKSkKKyAgICAgICAgICAgICAgICB2YWx1ZXNUb1ByZXNlcnZlLnF1aWNrU2V0KGNoaWxk
LT5pbmRleCgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgbV92YWx1ZXMuZmlsdGVyQW5kVHJh
bnNmZXIobV9jb2RlLT5tX2IzVmFsdWVzVG9QcmVzZXJ2ZSwgWyZdKFZhbHVlKiB2YWx1ZSkgewor
ICAgICAgICByZXR1cm4gdmFsdWVzVG9QcmVzZXJ2ZS5xdWlja0dldCh2YWx1ZS0+aW5kZXgoKSk7
CisgICAgfSk7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwogCiAjZW5kaWYgLy8gRU5B
QkxFKEIzX0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2Nl
ZHVyZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmgKaW5kZXggMDZm
ZjZmNWZhMTNlLi5lNWZiNjc3NmM2NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1Byb2NlZHVyZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2Nl
ZHVyZS5oCkBAIC0yNTksNyArMjU5LDExIEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFU
RSBSZWdpc3RlckF0T2Zmc2V0TGlzdCBjYWxsZWVTYXZlUmVnaXN0ZXJBdE9mZnNldExpc3QoKSBj
b25zdDsKIAogICAgIFBDVG9PcmlnaW5NYXAmIHBjVG9PcmlnaW5NYXAoKSB7IHJldHVybiBtX3Bj
VG9PcmlnaW5NYXA7IH0KLSAgICBQQ1RvT3JpZ2luTWFwIHJlbGVhc2VQQ1RvT3JpZ2luTWFwKCkg
eyByZXR1cm4gV1RGTW92ZShtX3BjVG9PcmlnaW5NYXApOyB9CisgICAgUENUb09yaWdpbk1hcCBy
ZWxlYXNlUENUb09yaWdpbk1hcCgpCisgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChuZWVk
c1BDVG9PcmlnaW5NYXAoKSk7CisgICAgICAgIHJldHVybiBXVEZNb3ZlKG1fcGNUb09yaWdpbk1h
cCk7CisgICAgfQogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRXYXNtQm91bmRzQ2hl
Y2tHZW5lcmF0b3IoUmVmUHRyPFdhc21Cb3VuZHNDaGVja0dlbmVyYXRvcj4pOwogCkBAIC0yNzIs
NiArMjc2LDExIEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBSZWdpc3RlclNldCBt
dXRhYmxlR1BScygpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZ2lzdGVyU2V0IG11dGFibGVG
UFJzKCk7CiAKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldE5lZWRzUENUb09yaWdpbk1h
cCgpIHsgbV9uZWVkc1BDVG9PcmlnaW5NYXAgPSB0cnVlOyB9CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgYm9vbCBuZWVkc1BDVG9PcmlnaW5NYXAoKSB7IHJldHVybiBtX25lZWRzUENUb09yaWdpbk1h
cDsgfQorCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmcmVlVW5uZWVlZGVkQjNWYWx1ZXNB
ZnRlckxvd2VyaW5nKCk7CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEJsb2NrSW5zZXJ0
aW9uU2V0OwogCkBAIC0yODksMTYgKzI5OCwxNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVl
X3B0cjxCYWNrd2FyZHNDRkc+IG1fYmFja3dhcmRzQ0ZHOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxC
YWNrd2FyZHNEb21pbmF0b3JzPiBtX2JhY2t3YXJkc0RvbWluYXRvcnM7CiAgICAgSGFzaFNldDxW
YWx1ZUtleT4gbV9mYXN0Q29uc3RhbnRzOwotICAgIHVuc2lnbmVkIG1fbnVtRW50cnlwb2ludHMg
eyAxIH07CiAgICAgY29uc3QgY2hhciogbV9sYXN0UGhhc2VOYW1lOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxPcGFxdWVCeXByb2R1Y3RzPiBtX2J5cHJvZHVjdHM7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PEFpcjo6Q29kZT4gbV9jb2RlOwogICAgIFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQoUHJpbnRTdHJl
YW0mLCBPcmlnaW4pPj4gbV9vcmlnaW5QcmludGVyOwogICAgIGNvbnN0IHZvaWQqIG1fZnJvbnRl
bmREYXRhOwogICAgIFBDVG9PcmlnaW5NYXAgbV9wY1RvT3JpZ2luTWFwOworICAgIHVuc2lnbmVk
IG1fbnVtRW50cnlwb2ludHMgeyAxIH07CiAgICAgdW5zaWduZWQgbV9vcHRMZXZlbCB7IGRlZmF1
bHRPcHRMZXZlbCgpIH07CiAgICAgYm9vbCBtX25lZWRzVXNlZFJlZ2lzdGVycyB7IHRydWUgfTsK
ICAgICBib29sIG1faGFzUXVpcmtzIHsgZmFsc2UgfTsKKyAgICBib29sIG1fbmVlZHNQQ1RvT3Jp
Z2luTWFwIHsgZmFsc2UgfTsKIH07CiAgICAgCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1NwYXJzZUNvbGxlY3Rpb24uaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1NwYXJzZUNvbGxlY3Rpb24uaAppbmRleCAwOWEz
NjQ3NTI1NTYuLmZhNmI0ZTdhZGQzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzU3BhcnNlQ29sbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1NwYXJzZUNvbGxlY3Rpb24uaApAQCAtMTExLDYgKzExMSwyMiBAQCBwdWJsaWM6CiAgICAgICAg
IG1fdmVjdG9yLnNocmluayhlbmRJbmRleCk7CiAgICAgfQogCisgICAgdm9pZCBjbGVhckFsbCgp
CisgICAgeworICAgICAgICBtX2luZGV4RnJlZUxpc3QuY2xlYXIoKTsKKyAgICAgICAgbV92ZWN0
b3IuY2xlYXIoKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgorICAg
IHZvaWQgZmlsdGVyQW5kVHJhbnNmZXIoVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxUPj4mIGRzdCwg
Y29uc3QgRnVuY3RvciYgZnVuY3RvcikKKyAgICB7CisgICAgICAgIGZvciAoaXRlcmF0b3IgaXQg
PSBiZWdpbigpOyBpdCAhPSBlbmQoKTsgKytpdCkgeworICAgICAgICAgICAgaWYgKGZ1bmN0b3Io
Kml0KSkKKyAgICAgICAgICAgICAgICBkc3QuYXBwZW5kKFdURk1vdmUobV92ZWN0b3JbaXQubV9p
bmRleF0pKTsKKyAgICAgICAgfQorICAgICAgICBjbGVhckFsbCgpOworICAgIH0KKwogICAgIHVu
c2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3ZlY3Rvci5zaXplKCk7IH0KICAgICBib29s
IGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3ZlY3Rvci5pc0VtcHR5KCk7IH0KICAgICAKQEAg
LTE1NCw2ICsxNzAsOCBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CisgICAg
ICAgIGZyaWVuZCBjbGFzcyBTcGFyc2VDb2xsZWN0aW9uOworCiAgICAgICAgIHVuc2lnbmVkIGZp
bmROZXh0KHVuc2lnbmVkIGluZGV4KQogICAgICAgICB7CiAgICAgICAgICAgICB3aGlsZSAoaW5k
ZXggPCBtX2NvbGxlY3Rpb24tPnNpemUoKSAmJiAhbV9jb2xsZWN0aW9uLT5hdChpbmRleCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmNwcAppbmRleCA5MDQxODFiNTc5NTMu
LjU2Y2QzYWNmNWM0OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJDb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuY3Bw
CkBAIC01Nyw2ICs1Nyw3IEBAIHN0YXRpYyB2b2lkIGRlZmF1bHRQcm9sb2d1ZUdlbmVyYXRvcihD
Q2FsbEhlbHBlcnMmIGppdCwgQ29kZSYgY29kZSkKIENvZGU6OkNvZGUoUHJvY2VkdXJlJiBwcm9j
KQogICAgIDogbV9wcm9jKHByb2MpCiAgICAgLCBtX2NmZyhuZXcgQ0ZHKCp0aGlzKSkKKyAgICAs
IG1fcHJlc2VydmVCM09yaWdpbnMocHJvYy5uZWVkc1BDVG9PcmlnaW5NYXAoKSB8fCBPcHRpb25z
OjpkdW1wQWlyR3JhcGhBdEVhY2hQaGFzZSgpIHx8IE9wdGlvbnM6OmR1bXBGVExEaXNhc3NlbWJs
eSgpKQogICAgICwgbV9sYXN0UGhhc2VOYW1lKCJpbml0aWFsIikKICAgICAsIG1fZGVmYXVsdFBy
b2xvZ3VlR2VuZXJhdG9yKGNyZWF0ZVNoYXJlZFRhc2s8UHJvbG9ndWVHZW5lcmF0b3JGdW5jdGlv
bj4oJmRlZmF1bHRQcm9sb2d1ZUdlbmVyYXRvcikpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyQ29kZS5oCmluZGV4IGQ4ZWU0MTI3YjU3My4uODg4N2UxZjg2ZWY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuaApAQCAtMzU2LDYgKzM1Niw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGVtaXRFcGlsb2d1ZShDQ2FsbEhlbHBlcnMmKTsKIAogICAgIHN0ZDo6dW5pcXVl
X3B0cjxHZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzPiBtX2dlbmVyYXRlQW5kQWxsb2NhdGVS
ZWdpc3RlcnM7CisKKyAgICBib29sIHNob3VsZFByZXNlcnZlQjNPcmlnaW5zKCkgY29uc3QgeyBy
ZXR1cm4gbV9wcmVzZXJ2ZUIzT3JpZ2luczsgfQogICAgIAogcHJpdmF0ZToKICAgICBmcmllbmQg
Y2xhc3MgOjpKU0M6OkIzOjpQcm9jZWR1cmU7CkBAIC0zOTMsNiArMzk1LDcgQEAgcHJpdmF0ZToK
ICAgICB1bnNpZ25lZCBtX2ZyYW1lU2l6ZSB7IDAgfTsKICAgICB1bnNpZ25lZCBtX2NhbGxBcmdB
cmVhU2l6ZSB7IDAgfTsKICAgICBib29sIG1fc3RhY2tJc0FsbG9jYXRlZCB7IGZhbHNlIH07Cisg
ICAgYm9vbCBtX3ByZXNlcnZlQjNPcmlnaW5zIHsgdHJ1ZSB9OwogICAgIFJlZ2lzdGVyQXRPZmZz
ZXRMaXN0IG1fdW5jb3JyZWN0ZWRDYWxsZWVTYXZlUmVnaXN0ZXJBdE9mZnNldExpc3Q7CiAgICAg
UmVnaXN0ZXJTZXQgbV9jYWxsZWVTYXZlUmVnaXN0ZXJzOwogICAgIFN0YWNrU2xvdCogbV9jYWxs
ZWVTYXZlU3RhY2tTbG90IHsgbnVsbHB0ciB9OwpAQCAtNDAwLDYgKzQwMyw3IEBAIHByaXZhdGU6
CiAgICAgVmVjdG9yPE1hY3JvQXNzZW1ibGVyOjpMYWJlbD4gbV9lbnRyeXBvaW50TGFiZWxzOyAv
LyBUaGlzIGlzIGVtcHR5IHVudGlsIGNvZGUgZ2VuZXJhdGlvbi4KICAgICBWZWN0b3I8UmVmPFBy
b2xvZ3VlR2VuZXJhdG9yPiwgMT4gbV9wcm9sb2d1ZUdlbmVyYXRvcnM7CiAgICAgUmVmUHRyPFdh
c21Cb3VuZHNDaGVja0dlbmVyYXRvcj4gbV93YXNtQm91bmRzQ2hlY2tHZW5lcmF0b3I7CisgICAg
VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCMzo6VmFsdWU+PiBtX2IzVmFsdWVzVG9QcmVzZXJ2ZTsK
ICAgICBjb25zdCBjaGFyKiBtX2xhc3RQaGFzZU5hbWU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPERp
c2Fzc2VtYmxlcj4gbV9kaXNhc3NlbWJsZXI7CiAgICAgdW5zaWduZWQgbV9vcHRMZXZlbCB7IGRl
ZmF1bHRPcHRMZXZlbCgpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpckdlbmVyYXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2Vu
ZXJhdGUuY3BwCmluZGV4IGE4YWE2YzExYmRmMS4uOTNkZDZmYWM5MDcwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcApAQCAtMjE0LDExICsyMTQsMTIg
QEAgc3RhdGljIHZvaWQgZ2VuZXJhdGVXaXRoQWxyZWFkeUFsbG9jYXRlZFJlZ2lzdGVycyhDb2Rl
JiBjb2RlLCBDQ2FsbEhlbHBlcnMmIGppdCkKIAogICAgIFBDVG9PcmlnaW5NYXAmIHBjVG9Pcmln
aW5NYXAgPSBjb2RlLnByb2MoKS5wY1RvT3JpZ2luTWFwKCk7CiAgICAgYXV0byBhZGRJdGVtID0g
WyZdIChJbnN0JiBpbnN0KSB7Ci0gICAgICAgIGlmICghaW5zdC5vcmlnaW4pIHsKLSAgICAgICAg
ICAgIHBjVG9PcmlnaW5NYXAuYXBwZW5kSXRlbShqaXQubGFiZWxJZ25vcmluZ1dhdGNocG9pbnRz
KCksIE9yaWdpbigpKTsKKyAgICAgICAgaWYgKCFjb2RlLnNob3VsZFByZXNlcnZlQjNPcmlnaW5z
KCkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgcGNUb09yaWdpbk1h
cC5hcHBlbmRJdGVtKGppdC5sYWJlbElnbm9yaW5nV2F0Y2hwb2ludHMoKSwgaW5zdC5vcmlnaW4t
Pm9yaWdpbigpKTsKKyAgICAgICAgaWYgKGluc3Qub3JpZ2luKQorICAgICAgICAgICAgcGNUb09y
aWdpbk1hcC5hcHBlbmRJdGVtKGppdC5sYWJlbElnbm9yaW5nV2F0Y2hwb2ludHMoKSwgaW5zdC5v
cmlnaW4tPm9yaWdpbigpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcGNUb09yaWdpbk1h
cC5hcHBlbmRJdGVtKGppdC5sYWJlbElnbm9yaW5nV2F0Y2hwb2ludHMoKSwgT3JpZ2luKCkpOwog
ICAgIH07CiAKICAgICBEaXNhc3NlbWJsZXIqIGRpc2Fzc2VtYmxlciA9IGNvZGUuZGlzYXNzZW1i
bGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAppbmRleCAwNjNm
ZDYwNDNjODguLmRlZjVjMmUwYjQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDb21waWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENv
bXBpbGUuY3BwCkBAIC0xNTAsMTAgKzE1MCwxMSBAQCB2b2lkIGNvbXBpbGUoU3RhdGUmIHN0YXRl
LCBTYWZlcG9pbnQ6OlJlc3VsdCYgc2FmZXBvaW50UmVzdWx0KQogICAgICAgICBzdGF0ZS5hbGxv
Y2F0aW9uRmFpbGVkID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKLSAgICBC
Mzo6UENUb09yaWdpbk1hcCBvcmlnaW5NYXAgPSBzdGF0ZS5wcm9jLT5yZWxlYXNlUENUb09yaWdp
bk1hcCgpOwotICAgIGlmICh2bS5zaG91bGRCdWlsZGVyUENUb0NvZGVPcmlnaW5NYXBwaW5nKCkp
CisKKyAgICBpZiAodm0uc2hvdWxkQnVpbGRlclBDVG9Db2RlT3JpZ2luTWFwcGluZygpKSB7Cisg
ICAgICAgIEIzOjpQQ1RvT3JpZ2luTWFwIG9yaWdpbk1hcCA9IHN0YXRlLnByb2MtPnJlbGVhc2VQ
Q1RvT3JpZ2luTWFwKCk7CiAgICAgICAgIGNvZGVCbG9jay0+c2V0UENUb0NvZGVPcmlnaW5NYXAo
bWFrZVVuaXF1ZTxQQ1RvQ29kZU9yaWdpbk1hcD4oUENUb0NvZGVPcmlnaW5NYXBCdWlsZGVyKHZt
LCBXVEZNb3ZlKG9yaWdpbk1hcCkpLCAqc3RhdGUuZmluYWxpemVyLT5iM0NvZGVMaW5rQnVmZmVy
KSk7CisgICAgfQogCiAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SlNFbnRyeVB0clRhZz4gbGFiZWwg
PSBzdGF0ZS5maW5hbGl6ZXItPmIzQ29kZUxpbmtCdWZmZXItPmxvY2F0aW9uT2Y8SlNFbnRyeVB0
clRhZz4oc3RhdGUucHJvYy0+Y29kZSgpLmVudHJ5cG9pbnRMYWJlbCgwKSk7CiAgICAgc3RhdGUu
Z2VuZXJhdGVkRnVuY3Rpb24gPSBsYWJlbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMU3RhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0
ZS5jcHAKaW5kZXggMTBiODg2MmM1OTU4Li4xODY2MTM5MmMzYWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMU3RhdGUuY3BwCkBAIC02Myw2ICs2Myw5IEBAIFN0YXRlOjpTdGF0ZShHcmFw
aCYgZ3JhcGgpCiAKICAgICBwcm9jID0gbWFrZVVuaXF1ZTxQcm9jZWR1cmU+KCk7CiAKKyAgICBp
ZiAoZ3JhcGgubV92bS5zaG91bGRCdWlsZGVyUENUb0NvZGVPcmlnaW5NYXBwaW5nKCkpCisgICAg
ICAgIHByb2MtPnNldE5lZWRzUENUb09yaWdpbk1hcCgpOworCiAgICAgcHJvYy0+c2V0T3JpZ2lu
UHJpbnRlcigKICAgICAgICAgW10gKFByaW50U3RyZWFtJiBvdXQsIEIzOjpPcmlnaW4gb3JpZ2lu
KSB7CiAgICAgICAgICAgICBvdXQucHJpbnQoYml0d2lzZV9jYXN0PE5vZGUqPihvcmlnaW4uZGF0
YSgpKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429594</attachid>
            <date>2021-05-24 17:01:14 -0700</date>
            <delta_ts>2021-05-24 17:37:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch226187</filename>
            <type>text/plain</type>
            <size>12331</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDUwMDY0YmE1ZTZkZC4uMGYxNWQzYjFiYmM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NiBAQAorMjAyMS0wNS0yNCAgUm9i
aW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgorCisgICAgICAgIFdlIHNob3VsZCBk
cm9wIEIzIHZhbHVlcyB3aGlsZSBydW5uaW5nIEFpcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MTg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgbXVzdCBrZWVwIHRoZSBmb2xsb3dpbmcgdmFsdWVz
OgorICAgICAgICAtIFdhc21Cb3VuZHNDaGVjaywgdG8ga25vdyB3aGV0aGVyIGl0IGlzIFBpbm5l
ZCBvciBNYXhpbXVtLCBhbmQgaWYgaXQgaXMgcGlubmVkIGZpbmQgaXRzIGFyZ3VtZW50LgorICAg
ICAgICAtIENDYWxsL1BhdGNoL0NoZWNrL0NoZWNrQWRkL0NoZWNrU3ViL0NoZWNrTXVsIGFuZCBh
bGwgb2YgdGhlaXIgY2hpbGRyZW4sIGJlY2F1c2UgYWxsIG9mIHRoZXNlIGFyZSBsb3dlcmVkIHRv
IEFpcjo6UGF0Y2hwb2ludCwgd2hpY2ggbmVlZHMgdG8ga25vdyB0aGUgdHlwZSBvZiBpdHMgYXJn
dW1lbnRzLCBhbmQgZG9lcyBzbyBieSBsb29raW5nIGF0IHRoZSBjaGlsZHJlbiBvZiBpdHMgb3Jp
Z2luLgorICAgICAgICBJIGludGVuZCB0byBmaXggdGhlc2UgaW4gbGF0ZXIgcGF0Y2hlcyBpZiBw
b3NzaWJsZS4KKworICAgICAgICBXZSBhbHNvIG11c3Qga2VlcCB0aGUgU3RhY2tTbG90cyBhbGl2
ZS4gSSBkb24ndCB5ZXQgZnVsbHkgdW5kZXJzdGFuZCB3aHksIGJ1dCB0aGVyZSBhcmUgc29tZSBz
dWJ0bGUgYW5kIGhhcmQgdG8gZGVidWcgYnVncyB3aGVuZXZlciBJIGdldCB0b28gYWdyZXNzaXZl
IHdpdGggdGhvc2UsIHNvIGZvciBub3cgbGV0J3Mga2VlcCB0aGVtLgorICAgICAgICBJIHdpbGwg
YWxzbyB0cnkgdG8gZGVhbCB3aXRoIHRoZW0gaW4gYSBzZXBhcmF0ZSBwYXRjaC4KKworICAgICAg
ICBGaW5hbGx5IHdlIG11c3QgcHJlc2VydmUgYWxsIEIzIHZhbHVlcyBpbiB0aGUgZm9sbG93aW5n
IGNhc2VzOgorICAgICAgICAtIGlmIHdlIGR1bXAgdGhlIGRpc2Fzc2VtYmx5IG9yIHRoZSBBaXIg
Z3JhcGg6IGJlY2F1c2Ugb3RoZXJ3aXNlIHdlIGNhbm5vdCBwcmludCB0aGUgb3JpZ2lucworICAg
ICAgICAtIGlmIHdlIGFyZSB1c2luZyB0aGUgc2FtcGxpbmcgcHJvZmlsZXIsIGJlY2F1c2UgaXQg
cmVsaWVzIG9uIFBDVG9Db2RlT3JpZ2luTWFwIHdoaWNoIHdlIGNhbm5vdCBhY2N1cmF0ZWx5IGZp
bGwgd2l0aG91dCB0aGVzZSBvcmlnaW5zLgorCisgICAgICAgIEkgZG9uJ3QgaGF2ZSBwZXJmb3Jt
YW5jZSBudW1iZXJzIHlldCwgSSBpbnRlbmQgdG8gYWRkIHRoZW0gdG8gdGhlIGJ1Z3ppbGxhIG9u
Y2UgSSBnZXQgdGhlbS4KKworICAgICAgICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6CisgICAgICAg
IChKU0M6OkIzOjpsb3dlclRvQWlyKToKKyAgICAgICAgKiBiMy9CM1Byb2NlZHVyZS5jcHA6Cisg
ICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6OmZyZWVVbm5lZWRlZEIzVmFsdWVzQWZ0ZXJMb3dl
cmluZyk6CisgICAgICAgICogYjMvQjNQcm9jZWR1cmUuaDoKKyAgICAgICAgKEpTQzo6QjM6OlBy
b2NlZHVyZTo6cmVsZWFzZVBDVG9PcmlnaW5NYXApOgorICAgICAgICAoSlNDOjpCMzo6UHJvY2Vk
dXJlOjpzZXROZWVkc1BDVG9PcmlnaW5NYXApOgorICAgICAgICAoSlNDOjpCMzo6UHJvY2VkdXJl
OjpuZWVkc1BDVG9PcmlnaW5NYXApOgorICAgICAgICAqIGIzL0IzU3BhcnNlQ29sbGVjdGlvbi5o
OgorICAgICAgICAoSlNDOjpCMzo6U3BhcnNlQ29sbGVjdGlvbjo6Y2xlYXJBbGwpOgorICAgICAg
ICAoSlNDOjpCMzo6U3BhcnNlQ29sbGVjdGlvbjo6ZmlsdGVyQW5kVHJhbnNmZXIpOgorICAgICAg
ICAqIGIzL2Fpci9BaXJDb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6Q29kZTo6Q29k
ZSk6CisgICAgICAgICogYjMvYWlyL0FpckNvZGUuaDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6
Q29kZTo6c2hvdWxkUHJlc2VydmVCM09yaWdpbnMgY29uc3QpOgorICAgICAgICAqIGIzL2Fpci9B
aXJHZW5lcmF0ZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OmdlbmVyYXRlV2l0aEFscmVh
ZHlBbGxvY2F0ZWRSZWdpc3RlcnMpOgorICAgICAgICAqIGZ0bC9GVExDb21waWxlLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpjb21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMU3RhdGUuY3BwOgor
ICAgICAgICAoSlNDOjpGVEw6OlN0YXRlOjpTdGF0ZSk6CisKIDIwMjEtMDUtMjAgIFR1b21hcyBL
YXJra2FpbmVuICA8dHVvbWFzLndlYmtpdEBhcHBsZS5jb20+CiAKICAgICAgICAgJHZtIHNob3Vs
ZCBoYXZlIGEgZnVuY3Rpb24gZm9yIGNoZWNraW5nIGlmIEFTYW4gaXMgZW5hYmxlZCBzaW1pbGFy
IHRvICR2bS5hc3NlcnRFbmFibGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNMb3dlclRvQWlyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9B
aXIuY3BwCmluZGV4IGY0OTNhM2RmYjc2Mi4uMzdiYTVjMWM5N2EzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcApAQCAtMzc1MCw2ICszNzUwLDcgQEAgdm9pZCBs
b3dlclRvQWlyKFByb2NlZHVyZSYgcHJvY2VkdXJlKQogICAgIFBoYXNlU2NvcGUgcGhhc2VTY29w
ZShwcm9jZWR1cmUsICJsb3dlclRvQWlyIik7CiAgICAgTG93ZXJUb0FpciBsb3dlclRvQWlyKHBy
b2NlZHVyZSk7CiAgICAgbG93ZXJUb0Fpci5ydW4oKTsKKyAgICBwcm9jZWR1cmUuZnJlZVVubmVl
ZGVkQjNWYWx1ZXNBZnRlckxvd2VyaW5nKCk7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpC
MwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAKaW5kZXggYTUyYzBmN2Zh
ZTExLi4yYzZiYTg5NDA5ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1Byb2NlZHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJl
LmNwcApAQCAtNDM5LDYgKzQzOSw0OSBAQCB2b2lkIFByb2NlZHVyZTo6c2V0TnVtRW50cnlwb2lu
dHModW5zaWduZWQgbnVtRW50cnlwb2ludHMpCiAgICAgbV9jb2RlLT5zZXROdW1FbnRyeXBvaW50
cyhudW1FbnRyeXBvaW50cyk7CiB9CiAKK3ZvaWQgUHJvY2VkdXJlOjpmcmVlVW5uZWVkZWRCM1Zh
bHVlc0FmdGVyTG93ZXJpbmcoKQoreworICAgIG1fdmFyaWFibGVzLmNsZWFyQWxsKCk7CisgICAg
bV90dXBsZXMuY2xlYXIoKTsKKyAgICBtX2Jsb2Nrcy5jbGVhcigpOworICAgIG1fY2ZnID0gbnVs
bHB0cjsKKyAgICBtX2RvbWluYXRvcnMgPSBudWxscHRyOworICAgIG1fbmF0dXJhbExvb3BzID0g
bnVsbHB0cjsKKyAgICBtX2JhY2t3YXJkc0NGRyA9IG51bGxwdHI7CisgICAgbV9iYWNrd2FyZHNE
b21pbmF0b3JzID0gbnVsbHB0cjsKKyAgICBtX2Zhc3RDb25zdGFudHMuY2xlYXIoKTsKKworICAg
IGlmIChtX2NvZGUtPnNob3VsZFByZXNlcnZlQjNPcmlnaW5zKCkpCisgICAgICAgIHJldHVybjsK
KworICAgIEJpdFZlY3RvciB2YWx1ZXNUb1ByZXNlcnZlOworICAgIHZhbHVlc1RvUHJlc2VydmUu
ZW5zdXJlU2l6ZShtX3ZhbHVlcy5zaXplKCkpOworICAgIGZvciAoVmFsdWUqIHZhbHVlIDogbV92
YWx1ZXMpIHsKKyAgICAgICAgc3dpdGNoICh2YWx1ZS0+b3Bjb2RlKCkpIHsKKyAgICAgICAgLy8g
SWRlYWxseSB3ZSB3b3VsZCBhbHNvIGJlIGFibGUgdG8gZ2V0IHJpZCBvZiBhbGwgb2YgdGhvc2Uu
CisgICAgICAgIC8vIEJ1dCBBaXIgY3VycmVudGx5IHJlbGllcyBvbiB0aGVzZSBvcmlnaW5zIGJl
aW5nIHByZXNlcnZlZCwgc2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTQwNDAKKyAgICAgICAgY2FzZSBXYXNtQm91bmRzQ2hlY2s6CisgICAgICAgICAgICB2YWx1
ZXNUb1ByZXNlcnZlLnF1aWNrU2V0KHZhbHVlLT5pbmRleCgpKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIENDYWxsOgorICAgICAgICBjYXNlIFBhdGNocG9pbnQ6CisgICAgICAg
IGNhc2UgQ2hlY2tBZGQ6CisgICAgICAgIGNhc2UgQ2hlY2tTdWI6CisgICAgICAgIGNhc2UgQ2hl
Y2tNdWw6CisgICAgICAgIGNhc2UgQ2hlY2s6CisgICAgICAgICAgICB2YWx1ZXNUb1ByZXNlcnZl
LnF1aWNrU2V0KHZhbHVlLT5pbmRleCgpKTsKKyAgICAgICAgICAgIGZvciAoVmFsdWUqIGNoaWxk
IDogdmFsdWUtPmNoaWxkcmVuKCkpCisgICAgICAgICAgICAgICAgdmFsdWVzVG9QcmVzZXJ2ZS5x
dWlja1NldChjaGlsZC0+aW5kZXgoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIG1fdmFsdWVz
LmZpbHRlckFuZFRyYW5zZmVyKG1fY29kZS0+bV9iM1ZhbHVlc1RvUHJlc2VydmUsIFsmXShWYWx1
ZSogdmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlc1RvUHJlc2VydmUucXVpY2tHZXQodmFs
dWUtPmluZGV4KCkpOworICAgIH0pOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKIAog
I2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNQcm9jZWR1cmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVy
ZS5oCmluZGV4IDA2ZmY2ZjVmYTEzZS4uN2IzZmI2NzRmMWYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNQcm9jZWR1cmUuaApAQCAtMjU5LDcgKzI1OSwxMSBAQCBwdWJsaWM6CiAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgUmVnaXN0ZXJBdE9mZnNldExpc3QgY2FsbGVlU2F2ZVJlZ2lzdGVyQXRP
ZmZzZXRMaXN0KCkgY29uc3Q7CiAKICAgICBQQ1RvT3JpZ2luTWFwJiBwY1RvT3JpZ2luTWFwKCkg
eyByZXR1cm4gbV9wY1RvT3JpZ2luTWFwOyB9Ci0gICAgUENUb09yaWdpbk1hcCByZWxlYXNlUENU
b09yaWdpbk1hcCgpIHsgcmV0dXJuIFdURk1vdmUobV9wY1RvT3JpZ2luTWFwKTsgfQorICAgIFBD
VG9PcmlnaW5NYXAgcmVsZWFzZVBDVG9PcmlnaW5NYXAoKQorICAgIHsKKyAgICAgICAgUkVMRUFT
RV9BU1NFUlQobmVlZHNQQ1RvT3JpZ2luTWFwKCkpOworICAgICAgICByZXR1cm4gV1RGTW92ZSht
X3BjVG9PcmlnaW5NYXApOworICAgIH0KIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0
V2FzbUJvdW5kc0NoZWNrR2VuZXJhdG9yKFJlZlB0cjxXYXNtQm91bmRzQ2hlY2tHZW5lcmF0b3I+
KTsKIApAQCAtMjcyLDYgKzI3NiwxMSBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
UmVnaXN0ZXJTZXQgbXV0YWJsZUdQUnMoKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBSZWdpc3Rl
clNldCBtdXRhYmxlRlBScygpOwogCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXROZWVk
c1BDVG9PcmlnaW5NYXAoKSB7IG1fbmVlZHNQQ1RvT3JpZ2luTWFwID0gdHJ1ZTsgfQorICAgIEpT
X0VYUE9SVF9QUklWQVRFIGJvb2wgbmVlZHNQQ1RvT3JpZ2luTWFwKCkgeyByZXR1cm4gbV9uZWVk
c1BDVG9PcmlnaW5NYXA7IH0KKworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZnJlZVVubmVl
ZGVkQjNWYWx1ZXNBZnRlckxvd2VyaW5nKCk7CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNz
IEJsb2NrSW5zZXJ0aW9uU2V0OwogCkBAIC0yODksMTYgKzI5OCwxNyBAQCBwcml2YXRlOgogICAg
IHN0ZDo6dW5pcXVlX3B0cjxCYWNrd2FyZHNDRkc+IG1fYmFja3dhcmRzQ0ZHOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxCYWNrd2FyZHNEb21pbmF0b3JzPiBtX2JhY2t3YXJkc0RvbWluYXRvcnM7CiAg
ICAgSGFzaFNldDxWYWx1ZUtleT4gbV9mYXN0Q29uc3RhbnRzOwotICAgIHVuc2lnbmVkIG1fbnVt
RW50cnlwb2ludHMgeyAxIH07CiAgICAgY29uc3QgY2hhciogbV9sYXN0UGhhc2VOYW1lOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxPcGFxdWVCeXByb2R1Y3RzPiBtX2J5cHJvZHVjdHM7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEFpcjo6Q29kZT4gbV9jb2RlOwogICAgIFJlZlB0cjxTaGFyZWRUYXNrPHZv
aWQoUHJpbnRTdHJlYW0mLCBPcmlnaW4pPj4gbV9vcmlnaW5QcmludGVyOwogICAgIGNvbnN0IHZv
aWQqIG1fZnJvbnRlbmREYXRhOwogICAgIFBDVG9PcmlnaW5NYXAgbV9wY1RvT3JpZ2luTWFwOwor
ICAgIHVuc2lnbmVkIG1fbnVtRW50cnlwb2ludHMgeyAxIH07CiAgICAgdW5zaWduZWQgbV9vcHRM
ZXZlbCB7IGRlZmF1bHRPcHRMZXZlbCgpIH07CiAgICAgYm9vbCBtX25lZWRzVXNlZFJlZ2lzdGVy
cyB7IHRydWUgfTsKICAgICBib29sIG1faGFzUXVpcmtzIHsgZmFsc2UgfTsKKyAgICBib29sIG1f
bmVlZHNQQ1RvT3JpZ2luTWFwIHsgZmFsc2UgfTsKIH07CiAgICAgCiB9IH0gLy8gbmFtZXNwYWNl
IEpTQzo6QjMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1NwYXJzZUNv
bGxlY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1NwYXJzZUNvbGxlY3Rpb24u
aAppbmRleCAwOWEzNjQ3NTI1NTYuLmZhNmI0ZTdhZGQzNCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzU3BhcnNlQ29sbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM1NwYXJzZUNvbGxlY3Rpb24uaApAQCAtMTExLDYgKzExMSwyMiBAQCBwdWJs
aWM6CiAgICAgICAgIG1fdmVjdG9yLnNocmluayhlbmRJbmRleCk7CiAgICAgfQogCisgICAgdm9p
ZCBjbGVhckFsbCgpCisgICAgeworICAgICAgICBtX2luZGV4RnJlZUxpc3QuY2xlYXIoKTsKKyAg
ICAgICAgbV92ZWN0b3IuY2xlYXIoKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBG
dW5jdG9yPgorICAgIHZvaWQgZmlsdGVyQW5kVHJhbnNmZXIoVmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxUPj4mIGRzdCwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKKyAgICB7CisgICAgICAgIGZvciAo
aXRlcmF0b3IgaXQgPSBiZWdpbigpOyBpdCAhPSBlbmQoKTsgKytpdCkgeworICAgICAgICAgICAg
aWYgKGZ1bmN0b3IoKml0KSkKKyAgICAgICAgICAgICAgICBkc3QuYXBwZW5kKFdURk1vdmUobV92
ZWN0b3JbaXQubV9pbmRleF0pKTsKKyAgICAgICAgfQorICAgICAgICBjbGVhckFsbCgpOworICAg
IH0KKwogICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3ZlY3Rvci5zaXplKCk7
IH0KICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3ZlY3Rvci5pc0VtcHR5KCk7
IH0KICAgICAKQEAgLTE1NCw2ICsxNzAsOCBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogICAgIHBy
aXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBTcGFyc2VDb2xsZWN0aW9uOworCiAgICAgICAg
IHVuc2lnbmVkIGZpbmROZXh0KHVuc2lnbmVkIGluZGV4KQogICAgICAgICB7CiAgICAgICAgICAg
ICB3aGlsZSAoaW5kZXggPCBtX2NvbGxlY3Rpb24tPnNpemUoKSAmJiAhbV9jb2xsZWN0aW9uLT5h
dChpbmRleCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNv
ZGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmNwcAppbmRleCA5
MDQxODFiNTc5NTMuLjU2Y2QzYWNmNWM0OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJDb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckNvZGUuY3BwCkBAIC01Nyw2ICs1Nyw3IEBAIHN0YXRpYyB2b2lkIGRlZmF1bHRQcm9sb2d1
ZUdlbmVyYXRvcihDQ2FsbEhlbHBlcnMmIGppdCwgQ29kZSYgY29kZSkKIENvZGU6OkNvZGUoUHJv
Y2VkdXJlJiBwcm9jKQogICAgIDogbV9wcm9jKHByb2MpCiAgICAgLCBtX2NmZyhuZXcgQ0ZHKCp0
aGlzKSkKKyAgICAsIG1fcHJlc2VydmVCM09yaWdpbnMocHJvYy5uZWVkc1BDVG9PcmlnaW5NYXAo
KSB8fCBPcHRpb25zOjpkdW1wQWlyR3JhcGhBdEVhY2hQaGFzZSgpIHx8IE9wdGlvbnM6OmR1bXBG
VExEaXNhc3NlbWJseSgpKQogICAgICwgbV9sYXN0UGhhc2VOYW1lKCJpbml0aWFsIikKICAgICAs
IG1fZGVmYXVsdFByb2xvZ3VlR2VuZXJhdG9yKGNyZWF0ZVNoYXJlZFRhc2s8UHJvbG9ndWVHZW5l
cmF0b3JGdW5jdGlvbj4oJmRlZmF1bHRQcm9sb2d1ZUdlbmVyYXRvcikpCiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyQ29kZS5oCmluZGV4IGQ4ZWU0MTI3YjU3My4uODg4N2UxZjg2ZWY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuaApAQCAtMzU2LDYgKzM1Niw4
IEBAIHB1YmxpYzoKICAgICB2b2lkIGVtaXRFcGlsb2d1ZShDQ2FsbEhlbHBlcnMmKTsKIAogICAg
IHN0ZDo6dW5pcXVlX3B0cjxHZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzPiBtX2dlbmVyYXRl
QW5kQWxsb2NhdGVSZWdpc3RlcnM7CisKKyAgICBib29sIHNob3VsZFByZXNlcnZlQjNPcmlnaW5z
KCkgY29uc3QgeyByZXR1cm4gbV9wcmVzZXJ2ZUIzT3JpZ2luczsgfQogICAgIAogcHJpdmF0ZToK
ICAgICBmcmllbmQgY2xhc3MgOjpKU0M6OkIzOjpQcm9jZWR1cmU7CkBAIC0zOTMsNiArMzk1LDcg
QEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2ZyYW1lU2l6ZSB7IDAgfTsKICAgICB1bnNpZ25l
ZCBtX2NhbGxBcmdBcmVhU2l6ZSB7IDAgfTsKICAgICBib29sIG1fc3RhY2tJc0FsbG9jYXRlZCB7
IGZhbHNlIH07CisgICAgYm9vbCBtX3ByZXNlcnZlQjNPcmlnaW5zIHsgdHJ1ZSB9OwogICAgIFJl
Z2lzdGVyQXRPZmZzZXRMaXN0IG1fdW5jb3JyZWN0ZWRDYWxsZWVTYXZlUmVnaXN0ZXJBdE9mZnNl
dExpc3Q7CiAgICAgUmVnaXN0ZXJTZXQgbV9jYWxsZWVTYXZlUmVnaXN0ZXJzOwogICAgIFN0YWNr
U2xvdCogbV9jYWxsZWVTYXZlU3RhY2tTbG90IHsgbnVsbHB0ciB9OwpAQCAtNDAwLDYgKzQwMyw3
IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPE1hY3JvQXNzZW1ibGVyOjpMYWJlbD4gbV9lbnRyeXBv
aW50TGFiZWxzOyAvLyBUaGlzIGlzIGVtcHR5IHVudGlsIGNvZGUgZ2VuZXJhdGlvbi4KICAgICBW
ZWN0b3I8UmVmPFByb2xvZ3VlR2VuZXJhdG9yPiwgMT4gbV9wcm9sb2d1ZUdlbmVyYXRvcnM7CiAg
ICAgUmVmUHRyPFdhc21Cb3VuZHNDaGVja0dlbmVyYXRvcj4gbV93YXNtQm91bmRzQ2hlY2tHZW5l
cmF0b3I7CisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCMzo6VmFsdWU+PiBtX2IzVmFsdWVz
VG9QcmVzZXJ2ZTsKICAgICBjb25zdCBjaGFyKiBtX2xhc3RQaGFzZU5hbWU7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPERpc2Fzc2VtYmxlcj4gbV9kaXNhc3NlbWJsZXI7CiAgICAgdW5zaWduZWQgbV9v
cHRMZXZlbCB7IGRlZmF1bHRPcHRMZXZlbCgpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyR2VuZXJhdGUuY3BwCmluZGV4IGE4YWE2YzExYmRmMS4uOTNkZDZmYWM5MDcwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcApAQCAtMjE0
LDExICsyMTQsMTIgQEAgc3RhdGljIHZvaWQgZ2VuZXJhdGVXaXRoQWxyZWFkeUFsbG9jYXRlZFJl
Z2lzdGVycyhDb2RlJiBjb2RlLCBDQ2FsbEhlbHBlcnMmIGppdCkKIAogICAgIFBDVG9PcmlnaW5N
YXAmIHBjVG9PcmlnaW5NYXAgPSBjb2RlLnByb2MoKS5wY1RvT3JpZ2luTWFwKCk7CiAgICAgYXV0
byBhZGRJdGVtID0gWyZdIChJbnN0JiBpbnN0KSB7Ci0gICAgICAgIGlmICghaW5zdC5vcmlnaW4p
IHsKLSAgICAgICAgICAgIHBjVG9PcmlnaW5NYXAuYXBwZW5kSXRlbShqaXQubGFiZWxJZ25vcmlu
Z1dhdGNocG9pbnRzKCksIE9yaWdpbigpKTsKKyAgICAgICAgaWYgKCFjb2RlLnNob3VsZFByZXNl
cnZlQjNPcmlnaW5zKCkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAg
cGNUb09yaWdpbk1hcC5hcHBlbmRJdGVtKGppdC5sYWJlbElnbm9yaW5nV2F0Y2hwb2ludHMoKSwg
aW5zdC5vcmlnaW4tPm9yaWdpbigpKTsKKyAgICAgICAgaWYgKGluc3Qub3JpZ2luKQorICAgICAg
ICAgICAgcGNUb09yaWdpbk1hcC5hcHBlbmRJdGVtKGppdC5sYWJlbElnbm9yaW5nV2F0Y2hwb2lu
dHMoKSwgaW5zdC5vcmlnaW4tPm9yaWdpbigpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
cGNUb09yaWdpbk1hcC5hcHBlbmRJdGVtKGppdC5sYWJlbElnbm9yaW5nV2F0Y2hwb2ludHMoKSwg
T3JpZ2luKCkpOwogICAgIH07CiAKICAgICBEaXNhc3NlbWJsZXIqIGRpc2Fzc2VtYmxlciA9IGNv
ZGUuZGlzYXNzZW1ibGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTENvbXBpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNw
cAppbmRleCAwNjNmZDYwNDNjODguLmRlZjVjMmUwYjQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTENvbXBpbGUuY3BwCkBAIC0xNTAsMTAgKzE1MCwxMSBAQCB2b2lkIGNvbXBpbGUo
U3RhdGUmIHN0YXRlLCBTYWZlcG9pbnQ6OlJlc3VsdCYgc2FmZXBvaW50UmVzdWx0KQogICAgICAg
ICBzdGF0ZS5hbGxvY2F0aW9uRmFpbGVkID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
LSAgICAKLSAgICBCMzo6UENUb09yaWdpbk1hcCBvcmlnaW5NYXAgPSBzdGF0ZS5wcm9jLT5yZWxl
YXNlUENUb09yaWdpbk1hcCgpOwotICAgIGlmICh2bS5zaG91bGRCdWlsZGVyUENUb0NvZGVPcmln
aW5NYXBwaW5nKCkpCisKKyAgICBpZiAodm0uc2hvdWxkQnVpbGRlclBDVG9Db2RlT3JpZ2luTWFw
cGluZygpKSB7CisgICAgICAgIEIzOjpQQ1RvT3JpZ2luTWFwIG9yaWdpbk1hcCA9IHN0YXRlLnBy
b2MtPnJlbGVhc2VQQ1RvT3JpZ2luTWFwKCk7CiAgICAgICAgIGNvZGVCbG9jay0+c2V0UENUb0Nv
ZGVPcmlnaW5NYXAobWFrZVVuaXF1ZTxQQ1RvQ29kZU9yaWdpbk1hcD4oUENUb0NvZGVPcmlnaW5N
YXBCdWlsZGVyKHZtLCBXVEZNb3ZlKG9yaWdpbk1hcCkpLCAqc3RhdGUuZmluYWxpemVyLT5iM0Nv
ZGVMaW5rQnVmZmVyKSk7CisgICAgfQogCiAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SlNFbnRyeVB0
clRhZz4gbGFiZWwgPSBzdGF0ZS5maW5hbGl6ZXItPmIzQ29kZUxpbmtCdWZmZXItPmxvY2F0aW9u
T2Y8SlNFbnRyeVB0clRhZz4oc3RhdGUucHJvYy0+Y29kZSgpLmVudHJ5cG9pbnRMYWJlbCgwKSk7
CiAgICAgc3RhdGUuZ2VuZXJhdGVkRnVuY3Rpb24gPSBsYWJlbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExTdGF0ZS5jcHAKaW5kZXggMTBiODg2MmM1OTU4Li4xODY2MTM5MmMzYWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuY3BwCkBAIC02Myw2ICs2Myw5IEBAIFN0YXRl
OjpTdGF0ZShHcmFwaCYgZ3JhcGgpCiAKICAgICBwcm9jID0gbWFrZVVuaXF1ZTxQcm9jZWR1cmU+
KCk7CiAKKyAgICBpZiAoZ3JhcGgubV92bS5zaG91bGRCdWlsZGVyUENUb0NvZGVPcmlnaW5NYXBw
aW5nKCkpCisgICAgICAgIHByb2MtPnNldE5lZWRzUENUb09yaWdpbk1hcCgpOworCiAgICAgcHJv
Yy0+c2V0T3JpZ2luUHJpbnRlcigKICAgICAgICAgW10gKFByaW50U3RyZWFtJiBvdXQsIEIzOjpP
cmlnaW4gb3JpZ2luKSB7CiAgICAgICAgICAgICBvdXQucHJpbnQoYml0d2lzZV9jYXN0PE5vZGUq
PihvcmlnaW4uZGF0YSgpKSk7Cg==
</data>
<flag name="review"
          id="450816"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429601</attachid>
            <date>2021-05-24 17:37:37 -0700</date>
            <delta_ts>2021-05-26 16:15:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch226187</filename>
            <type>text/plain</type>
            <size>12292</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDUwMDY0YmE1ZTZkZC4uZTc4MmI0ZDVlMjQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NiBAQAorMjAyMS0wNS0yNCAgUm9i
aW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgorCisgICAgICAgIFdlIHNob3VsZCBk
cm9wIEIzIHZhbHVlcyB3aGlsZSBydW5uaW5nIEFpcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MTg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2Fh
bSBCYXJhdGkuCisKKyAgICAgICAgV2UgbXVzdCBrZWVwIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgor
ICAgICAgICAtIFdhc21Cb3VuZHNDaGVjaywgdG8ga25vdyB3aGV0aGVyIGl0IGlzIFBpbm5lZCBv
ciBNYXhpbXVtLCBhbmQgaWYgaXQgaXMgcGlubmVkIGZpbmQgaXRzIGFyZ3VtZW50LgorICAgICAg
ICAtIENDYWxsL1BhdGNoL0NoZWNrL0NoZWNrQWRkL0NoZWNrU3ViL0NoZWNrTXVsIGFuZCBhbGwg
b2YgdGhlaXIgY2hpbGRyZW4sIGJlY2F1c2UgYWxsIG9mIHRoZXNlIGFyZSBsb3dlcmVkIHRvIEFp
cjo6UGF0Y2hwb2ludCwgd2hpY2ggbmVlZHMgdG8ga25vdyB0aGUgdHlwZSBvZiBpdHMgYXJndW1l
bnRzLCBhbmQgZG9lcyBzbyBieSBsb29raW5nIGF0IHRoZSBjaGlsZHJlbiBvZiBpdHMgb3JpZ2lu
LgorICAgICAgICBJIGludGVuZCB0byBmaXggdGhlc2UgaW4gbGF0ZXIgcGF0Y2hlcyBpZiBwb3Nz
aWJsZS4KKworICAgICAgICBXZSBhbHNvIG11c3Qga2VlcCB0aGUgU3RhY2tTbG90cyBhbGl2ZS4g
SSBkb24ndCB5ZXQgZnVsbHkgdW5kZXJzdGFuZCB3aHksIGJ1dCB0aGVyZSBhcmUgc29tZSBzdWJ0
bGUgYW5kIGhhcmQgdG8gZGVidWcgYnVncyB3aGVuZXZlciBJIGdldCB0b28gYWdyZXNzaXZlIHdp
dGggdGhvc2UsIHNvIGZvciBub3cgbGV0J3Mga2VlcCB0aGVtLgorICAgICAgICBJIHdpbGwgYWxz
byB0cnkgdG8gZGVhbCB3aXRoIHRoZW0gaW4gYSBzZXBhcmF0ZSBwYXRjaC4KKworICAgICAgICBG
aW5hbGx5IHdlIG11c3QgcHJlc2VydmUgYWxsIEIzIHZhbHVlcyBpbiB0aGUgZm9sbG93aW5nIGNh
c2VzOgorICAgICAgICAtIGlmIHdlIGR1bXAgdGhlIGRpc2Fzc2VtYmx5IG9yIHRoZSBBaXIgZ3Jh
cGg6IGJlY2F1c2Ugb3RoZXJ3aXNlIHdlIGNhbm5vdCBwcmludCB0aGUgb3JpZ2lucworICAgICAg
ICAtIGlmIHdlIGFyZSB1c2luZyB0aGUgc2FtcGxpbmcgcHJvZmlsZXIsIGJlY2F1c2UgaXQgcmVs
aWVzIG9uIFBDVG9Db2RlT3JpZ2luTWFwIHdoaWNoIHdlIGNhbm5vdCBhY2N1cmF0ZWx5IGZpbGwg
d2l0aG91dCB0aGVzZSBvcmlnaW5zLgorCisgICAgICAgIEkgZG9uJ3QgaGF2ZSBwZXJmb3JtYW5j
ZSBudW1iZXJzIHlldCwgSSBpbnRlbmQgdG8gYWRkIHRoZW0gdG8gdGhlIGJ1Z3ppbGxhIG9uY2Ug
SSBnZXQgdGhlbS4KKworICAgICAgICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6CisgICAgICAgIChK
U0M6OkIzOjpsb3dlclRvQWlyKToKKyAgICAgICAgKiBiMy9CM1Byb2NlZHVyZS5jcHA6CisgICAg
ICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6OmZyZWVVbm5lZWRlZEIzVmFsdWVzQWZ0ZXJMb3dlcmlu
Zyk6CisgICAgICAgICogYjMvQjNQcm9jZWR1cmUuaDoKKyAgICAgICAgKEpTQzo6QjM6OlByb2Nl
ZHVyZTo6cmVsZWFzZVBDVG9PcmlnaW5NYXApOgorICAgICAgICAoSlNDOjpCMzo6UHJvY2VkdXJl
OjpzZXROZWVkc1BDVG9PcmlnaW5NYXApOgorICAgICAgICAoSlNDOjpCMzo6UHJvY2VkdXJlOjpu
ZWVkc1BDVG9PcmlnaW5NYXApOgorICAgICAgICAqIGIzL0IzU3BhcnNlQ29sbGVjdGlvbi5oOgor
ICAgICAgICAoSlNDOjpCMzo6U3BhcnNlQ29sbGVjdGlvbjo6Y2xlYXJBbGwpOgorICAgICAgICAo
SlNDOjpCMzo6U3BhcnNlQ29sbGVjdGlvbjo6ZmlsdGVyQW5kVHJhbnNmZXIpOgorICAgICAgICAq
IGIzL2Fpci9BaXJDb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6Q29kZTo6Q29kZSk6
CisgICAgICAgICogYjMvYWlyL0FpckNvZGUuaDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6Q29k
ZTo6c2hvdWxkUHJlc2VydmVCM09yaWdpbnMgY29uc3QpOgorICAgICAgICAqIGIzL2Fpci9BaXJH
ZW5lcmF0ZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OmdlbmVyYXRlV2l0aEFscmVhZHlB
bGxvY2F0ZWRSZWdpc3RlcnMpOgorICAgICAgICAqIGZ0bC9GVExDb21waWxlLmNwcDoKKyAgICAg
ICAgKEpTQzo6RlRMOjpjb21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMU3RhdGUuY3BwOgorICAg
ICAgICAoSlNDOjpGVEw6OlN0YXRlOjpTdGF0ZSk6CisKIDIwMjEtMDUtMjAgIFR1b21hcyBLYXJr
a2FpbmVuICA8dHVvbWFzLndlYmtpdEBhcHBsZS5jb20+CiAKICAgICAgICAgJHZtIHNob3VsZCBo
YXZlIGEgZnVuY3Rpb24gZm9yIGNoZWNraW5nIGlmIEFTYW4gaXMgZW5hYmxlZCBzaW1pbGFyIHRv
ICR2bS5hc3NlcnRFbmFibGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNMb3dlclRvQWlyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIu
Y3BwCmluZGV4IGY0OTNhM2RmYjc2Mi4uMzdiYTVjMWM5N2EzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcApAQCAtMzc1MCw2ICszNzUwLDcgQEAgdm9pZCBsb3dl
clRvQWlyKFByb2NlZHVyZSYgcHJvY2VkdXJlKQogICAgIFBoYXNlU2NvcGUgcGhhc2VTY29wZShw
cm9jZWR1cmUsICJsb3dlclRvQWlyIik7CiAgICAgTG93ZXJUb0FpciBsb3dlclRvQWlyKHByb2Nl
ZHVyZSk7CiAgICAgbG93ZXJUb0Fpci5ydW4oKTsKKyAgICBwcm9jZWR1cmUuZnJlZVVubmVlZGVk
QjNWYWx1ZXNBZnRlckxvd2VyaW5nKCk7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAKaW5kZXggYTUyYzBmN2ZhZTEx
Li4yYzZiYTg5NDA5ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1By
b2NlZHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNw
cApAQCAtNDM5LDYgKzQzOSw0OSBAQCB2b2lkIFByb2NlZHVyZTo6c2V0TnVtRW50cnlwb2ludHMo
dW5zaWduZWQgbnVtRW50cnlwb2ludHMpCiAgICAgbV9jb2RlLT5zZXROdW1FbnRyeXBvaW50cyhu
dW1FbnRyeXBvaW50cyk7CiB9CiAKK3ZvaWQgUHJvY2VkdXJlOjpmcmVlVW5uZWVkZWRCM1ZhbHVl
c0FmdGVyTG93ZXJpbmcoKQoreworICAgIG1fdmFyaWFibGVzLmNsZWFyQWxsKCk7CisgICAgbV90
dXBsZXMuY2xlYXIoKTsKKyAgICBtX2Jsb2Nrcy5jbGVhcigpOworICAgIG1fY2ZnID0gbnVsbHB0
cjsKKyAgICBtX2RvbWluYXRvcnMgPSBudWxscHRyOworICAgIG1fbmF0dXJhbExvb3BzID0gbnVs
bHB0cjsKKyAgICBtX2JhY2t3YXJkc0NGRyA9IG51bGxwdHI7CisgICAgbV9iYWNrd2FyZHNEb21p
bmF0b3JzID0gbnVsbHB0cjsKKyAgICBtX2Zhc3RDb25zdGFudHMuY2xlYXIoKTsKKworICAgIGlm
IChtX2NvZGUtPnNob3VsZFByZXNlcnZlQjNPcmlnaW5zKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIEJpdFZlY3RvciB2YWx1ZXNUb1ByZXNlcnZlOworICAgIHZhbHVlc1RvUHJlc2VydmUuZW5z
dXJlU2l6ZShtX3ZhbHVlcy5zaXplKCkpOworICAgIGZvciAoVmFsdWUqIHZhbHVlIDogbV92YWx1
ZXMpIHsKKyAgICAgICAgc3dpdGNoICh2YWx1ZS0+b3Bjb2RlKCkpIHsKKyAgICAgICAgLy8gSWRl
YWxseSB3ZSB3b3VsZCBhbHNvIGJlIGFibGUgdG8gZ2V0IHJpZCBvZiBhbGwgb2YgdGhvc2UuCisg
ICAgICAgIC8vIEJ1dCBBaXIgY3VycmVudGx5IHJlbGllcyBvbiB0aGVzZSBvcmlnaW5zIGJlaW5n
IHByZXNlcnZlZCwgc2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTQwNDAKKyAgICAgICAgY2FzZSBXYXNtQm91bmRzQ2hlY2s6CisgICAgICAgICAgICB2YWx1ZXNU
b1ByZXNlcnZlLnF1aWNrU2V0KHZhbHVlLT5pbmRleCgpKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIENDYWxsOgorICAgICAgICBjYXNlIFBhdGNocG9pbnQ6CisgICAgICAgIGNh
c2UgQ2hlY2tBZGQ6CisgICAgICAgIGNhc2UgQ2hlY2tTdWI6CisgICAgICAgIGNhc2UgQ2hlY2tN
dWw6CisgICAgICAgIGNhc2UgQ2hlY2s6CisgICAgICAgICAgICB2YWx1ZXNUb1ByZXNlcnZlLnF1
aWNrU2V0KHZhbHVlLT5pbmRleCgpKTsKKyAgICAgICAgICAgIGZvciAoVmFsdWUqIGNoaWxkIDog
dmFsdWUtPmNoaWxkcmVuKCkpCisgICAgICAgICAgICAgICAgdmFsdWVzVG9QcmVzZXJ2ZS5xdWlj
a1NldChjaGlsZC0+aW5kZXgoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIG1fdmFsdWVzLmZp
bHRlckFuZFRyYW5zZmVyKG1fY29kZS0+bV9iM1ZhbHVlc1RvUHJlc2VydmUsIFsmXShWYWx1ZSog
dmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlc1RvUHJlc2VydmUucXVpY2tHZXQodmFsdWUt
PmluZGV4KCkpOworICAgIH0pOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKIAogI2Vu
ZGlmIC8vIEVOQUJMRShCM19KSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNQcm9jZWR1cmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5o
CmluZGV4IDA2ZmY2ZjVmYTEzZS4uY2Y4N2Y3ZTA5ODUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNQcm9jZWR1cmUuaApAQCAtMjU5LDcgKzI1OSwxMSBAQCBwdWJsaWM6CiAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgUmVnaXN0ZXJBdE9mZnNldExpc3QgY2FsbGVlU2F2ZVJlZ2lzdGVyQXRPZmZz
ZXRMaXN0KCkgY29uc3Q7CiAKICAgICBQQ1RvT3JpZ2luTWFwJiBwY1RvT3JpZ2luTWFwKCkgeyBy
ZXR1cm4gbV9wY1RvT3JpZ2luTWFwOyB9Ci0gICAgUENUb09yaWdpbk1hcCByZWxlYXNlUENUb09y
aWdpbk1hcCgpIHsgcmV0dXJuIFdURk1vdmUobV9wY1RvT3JpZ2luTWFwKTsgfQorICAgIFBDVG9P
cmlnaW5NYXAgcmVsZWFzZVBDVG9PcmlnaW5NYXAoKQorICAgIHsKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlQobmVlZHNQQ1RvT3JpZ2luTWFwKCkpOworICAgICAgICByZXR1cm4gV1RGTW92ZShtX3Bj
VG9PcmlnaW5NYXApOworICAgIH0KIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0V2Fz
bUJvdW5kc0NoZWNrR2VuZXJhdG9yKFJlZlB0cjxXYXNtQm91bmRzQ2hlY2tHZW5lcmF0b3I+KTsK
IApAQCAtMjcyLDYgKzI3NiwxMSBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVn
aXN0ZXJTZXQgbXV0YWJsZUdQUnMoKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBSZWdpc3RlclNl
dCBtdXRhYmxlRlBScygpOwogCisgICAgdm9pZCBzZXROZWVkc1BDVG9PcmlnaW5NYXAoKSB7IG1f
bmVlZHNQQ1RvT3JpZ2luTWFwID0gdHJ1ZTsgfQorICAgIGJvb2wgbmVlZHNQQ1RvT3JpZ2luTWFw
KCkgeyByZXR1cm4gbV9uZWVkc1BDVG9PcmlnaW5NYXA7IH0KKworICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgZnJlZVVubmVlZGVkQjNWYWx1ZXNBZnRlckxvd2VyaW5nKCk7CisKIHByaXZhdGU6
CiAgICAgZnJpZW5kIGNsYXNzIEJsb2NrSW5zZXJ0aW9uU2V0OwogCkBAIC0yODksMTYgKzI5OCwx
NyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxCYWNrd2FyZHNDRkc+IG1fYmFja3dh
cmRzQ0ZHOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxCYWNrd2FyZHNEb21pbmF0b3JzPiBtX2JhY2t3
YXJkc0RvbWluYXRvcnM7CiAgICAgSGFzaFNldDxWYWx1ZUtleT4gbV9mYXN0Q29uc3RhbnRzOwot
ICAgIHVuc2lnbmVkIG1fbnVtRW50cnlwb2ludHMgeyAxIH07CiAgICAgY29uc3QgY2hhciogbV9s
YXN0UGhhc2VOYW1lOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxPcGFxdWVCeXByb2R1Y3RzPiBtX2J5
cHJvZHVjdHM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFpcjo6Q29kZT4gbV9jb2RlOwogICAgIFJl
ZlB0cjxTaGFyZWRUYXNrPHZvaWQoUHJpbnRTdHJlYW0mLCBPcmlnaW4pPj4gbV9vcmlnaW5Qcmlu
dGVyOwogICAgIGNvbnN0IHZvaWQqIG1fZnJvbnRlbmREYXRhOwogICAgIFBDVG9PcmlnaW5NYXAg
bV9wY1RvT3JpZ2luTWFwOworICAgIHVuc2lnbmVkIG1fbnVtRW50cnlwb2ludHMgeyAxIH07CiAg
ICAgdW5zaWduZWQgbV9vcHRMZXZlbCB7IGRlZmF1bHRPcHRMZXZlbCgpIH07CiAgICAgYm9vbCBt
X25lZWRzVXNlZFJlZ2lzdGVycyB7IHRydWUgfTsKICAgICBib29sIG1faGFzUXVpcmtzIHsgZmFs
c2UgfTsKKyAgICBib29sIG1fbmVlZHNQQ1RvT3JpZ2luTWFwIHsgZmFsc2UgfTsKIH07CiAgICAg
CiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1NwYXJzZUNvbGxlY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1NwYXJzZUNvbGxlY3Rpb24uaAppbmRleCAwOWEzNjQ3NTI1NTYuLmZhNmI0ZTdhZGQzNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3BhcnNlQ29sbGVjdGlvbi5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1NwYXJzZUNvbGxlY3Rpb24uaApAQCAtMTEx
LDYgKzExMSwyMiBAQCBwdWJsaWM6CiAgICAgICAgIG1fdmVjdG9yLnNocmluayhlbmRJbmRleCk7
CiAgICAgfQogCisgICAgdm9pZCBjbGVhckFsbCgpCisgICAgeworICAgICAgICBtX2luZGV4RnJl
ZUxpc3QuY2xlYXIoKTsKKyAgICAgICAgbV92ZWN0b3IuY2xlYXIoKTsKKyAgICB9CisKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgorICAgIHZvaWQgZmlsdGVyQW5kVHJhbnNmZXIoVmVj
dG9yPHN0ZDo6dW5pcXVlX3B0cjxUPj4mIGRzdCwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKKyAg
ICB7CisgICAgICAgIGZvciAoaXRlcmF0b3IgaXQgPSBiZWdpbigpOyBpdCAhPSBlbmQoKTsgKytp
dCkgeworICAgICAgICAgICAgaWYgKGZ1bmN0b3IoKml0KSkKKyAgICAgICAgICAgICAgICBkc3Qu
YXBwZW5kKFdURk1vdmUobV92ZWN0b3JbaXQubV9pbmRleF0pKTsKKyAgICAgICAgfQorICAgICAg
ICBjbGVhckFsbCgpOworICAgIH0KKwogICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVy
biBtX3ZlY3Rvci5zaXplKCk7IH0KICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBt
X3ZlY3Rvci5pc0VtcHR5KCk7IH0KICAgICAKQEAgLTE1NCw2ICsxNzAsOCBAQCBwdWJsaWM6CiAg
ICAgICAgIH0KIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBTcGFyc2VDb2xs
ZWN0aW9uOworCiAgICAgICAgIHVuc2lnbmVkIGZpbmROZXh0KHVuc2lnbmVkIGluZGV4KQogICAg
ICAgICB7CiAgICAgICAgICAgICB3aGlsZSAoaW5kZXggPCBtX2NvbGxlY3Rpb24tPnNpemUoKSAm
JiAhbV9jb2xsZWN0aW9uLT5hdChpbmRleCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpckNvZGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJDb2RlLmNwcAppbmRleCA5MDQxODFiNTc5NTMuLjU2Y2QzYWNmNWM0OCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuY3BwCkBAIC01Nyw2ICs1Nyw3IEBAIHN0YXRpYyB2
b2lkIGRlZmF1bHRQcm9sb2d1ZUdlbmVyYXRvcihDQ2FsbEhlbHBlcnMmIGppdCwgQ29kZSYgY29k
ZSkKIENvZGU6OkNvZGUoUHJvY2VkdXJlJiBwcm9jKQogICAgIDogbV9wcm9jKHByb2MpCiAgICAg
LCBtX2NmZyhuZXcgQ0ZHKCp0aGlzKSkKKyAgICAsIG1fcHJlc2VydmVCM09yaWdpbnMocHJvYy5u
ZWVkc1BDVG9PcmlnaW5NYXAoKSB8fCBPcHRpb25zOjpkdW1wQWlyR3JhcGhBdEVhY2hQaGFzZSgp
IHx8IE9wdGlvbnM6OmR1bXBGVExEaXNhc3NlbWJseSgpKQogICAgICwgbV9sYXN0UGhhc2VOYW1l
KCJpbml0aWFsIikKICAgICAsIG1fZGVmYXVsdFByb2xvZ3VlR2VuZXJhdG9yKGNyZWF0ZVNoYXJl
ZFRhc2s8UHJvbG9ndWVHZW5lcmF0b3JGdW5jdGlvbj4oJmRlZmF1bHRQcm9sb2d1ZUdlbmVyYXRv
cikpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ29kZS5oCmluZGV4IGQ4ZWU0MTI3
YjU3My4uODg4N2UxZjg2ZWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpckNvZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUu
aApAQCAtMzU2LDYgKzM1Niw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGVtaXRFcGlsb2d1ZShDQ2Fs
bEhlbHBlcnMmKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxHZW5lcmF0ZUFuZEFsbG9jYXRlUmVn
aXN0ZXJzPiBtX2dlbmVyYXRlQW5kQWxsb2NhdGVSZWdpc3RlcnM7CisKKyAgICBib29sIHNob3Vs
ZFByZXNlcnZlQjNPcmlnaW5zKCkgY29uc3QgeyByZXR1cm4gbV9wcmVzZXJ2ZUIzT3JpZ2luczsg
fQogICAgIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgOjpKU0M6OkIzOjpQcm9jZWR1cmU7
CkBAIC0zOTMsNiArMzk1LDcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2ZyYW1lU2l6ZSB7
IDAgfTsKICAgICB1bnNpZ25lZCBtX2NhbGxBcmdBcmVhU2l6ZSB7IDAgfTsKICAgICBib29sIG1f
c3RhY2tJc0FsbG9jYXRlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX3ByZXNlcnZlQjNPcmlnaW5z
IHsgdHJ1ZSB9OwogICAgIFJlZ2lzdGVyQXRPZmZzZXRMaXN0IG1fdW5jb3JyZWN0ZWRDYWxsZWVT
YXZlUmVnaXN0ZXJBdE9mZnNldExpc3Q7CiAgICAgUmVnaXN0ZXJTZXQgbV9jYWxsZWVTYXZlUmVn
aXN0ZXJzOwogICAgIFN0YWNrU2xvdCogbV9jYWxsZWVTYXZlU3RhY2tTbG90IHsgbnVsbHB0ciB9
OwpAQCAtNDAwLDYgKzQwMyw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPE1hY3JvQXNzZW1ibGVy
OjpMYWJlbD4gbV9lbnRyeXBvaW50TGFiZWxzOyAvLyBUaGlzIGlzIGVtcHR5IHVudGlsIGNvZGUg
Z2VuZXJhdGlvbi4KICAgICBWZWN0b3I8UmVmPFByb2xvZ3VlR2VuZXJhdG9yPiwgMT4gbV9wcm9s
b2d1ZUdlbmVyYXRvcnM7CiAgICAgUmVmUHRyPFdhc21Cb3VuZHNDaGVja0dlbmVyYXRvcj4gbV93
YXNtQm91bmRzQ2hlY2tHZW5lcmF0b3I7CisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCMzo6
VmFsdWU+PiBtX2IzVmFsdWVzVG9QcmVzZXJ2ZTsKICAgICBjb25zdCBjaGFyKiBtX2xhc3RQaGFz
ZU5hbWU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPERpc2Fzc2VtYmxlcj4gbV9kaXNhc3NlbWJsZXI7
CiAgICAgdW5zaWduZWQgbV9vcHRMZXZlbCB7IGRlZmF1bHRPcHRMZXZlbCgpIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwCmluZGV4IGE4YWE2YzExYmRm
MS4uOTNkZDZmYWM5MDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckdlbmVyYXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckdl
bmVyYXRlLmNwcApAQCAtMjE0LDExICsyMTQsMTIgQEAgc3RhdGljIHZvaWQgZ2VuZXJhdGVXaXRo
QWxyZWFkeUFsbG9jYXRlZFJlZ2lzdGVycyhDb2RlJiBjb2RlLCBDQ2FsbEhlbHBlcnMmIGppdCkK
IAogICAgIFBDVG9PcmlnaW5NYXAmIHBjVG9PcmlnaW5NYXAgPSBjb2RlLnByb2MoKS5wY1RvT3Jp
Z2luTWFwKCk7CiAgICAgYXV0byBhZGRJdGVtID0gWyZdIChJbnN0JiBpbnN0KSB7Ci0gICAgICAg
IGlmICghaW5zdC5vcmlnaW4pIHsKLSAgICAgICAgICAgIHBjVG9PcmlnaW5NYXAuYXBwZW5kSXRl
bShqaXQubGFiZWxJZ25vcmluZ1dhdGNocG9pbnRzKCksIE9yaWdpbigpKTsKKyAgICAgICAgaWYg
KCFjb2RlLnNob3VsZFByZXNlcnZlQjNPcmlnaW5zKCkpCiAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLSAgICAgICAgcGNUb09yaWdpbk1hcC5hcHBlbmRJdGVtKGppdC5sYWJlbElnbm9y
aW5nV2F0Y2hwb2ludHMoKSwgaW5zdC5vcmlnaW4tPm9yaWdpbigpKTsKKyAgICAgICAgaWYgKGlu
c3Qub3JpZ2luKQorICAgICAgICAgICAgcGNUb09yaWdpbk1hcC5hcHBlbmRJdGVtKGppdC5sYWJl
bElnbm9yaW5nV2F0Y2hwb2ludHMoKSwgaW5zdC5vcmlnaW4tPm9yaWdpbigpKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgcGNUb09yaWdpbk1hcC5hcHBlbmRJdGVtKGppdC5sYWJlbElnbm9y
aW5nV2F0Y2hwb2ludHMoKSwgT3JpZ2luKCkpOwogICAgIH07CiAKICAgICBEaXNhc3NlbWJsZXIq
IGRpc2Fzc2VtYmxlciA9IGNvZGUuZGlzYXNzZW1ibGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDb21waWxlLmNwcAppbmRleCAwNjNmZDYwNDNjODguLmRlZjVjMmUwYjQ3MyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCkBAIC0xNTAsMTAgKzE1MCwx
MSBAQCB2b2lkIGNvbXBpbGUoU3RhdGUmIHN0YXRlLCBTYWZlcG9pbnQ6OlJlc3VsdCYgc2FmZXBv
aW50UmVzdWx0KQogICAgICAgICBzdGF0ZS5hbGxvY2F0aW9uRmFpbGVkID0gdHJ1ZTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICAKLSAgICBCMzo6UENUb09yaWdpbk1hcCBvcmlnaW5NYXAg
PSBzdGF0ZS5wcm9jLT5yZWxlYXNlUENUb09yaWdpbk1hcCgpOwotICAgIGlmICh2bS5zaG91bGRC
dWlsZGVyUENUb0NvZGVPcmlnaW5NYXBwaW5nKCkpCisKKyAgICBpZiAodm0uc2hvdWxkQnVpbGRl
clBDVG9Db2RlT3JpZ2luTWFwcGluZygpKSB7CisgICAgICAgIEIzOjpQQ1RvT3JpZ2luTWFwIG9y
aWdpbk1hcCA9IHN0YXRlLnByb2MtPnJlbGVhc2VQQ1RvT3JpZ2luTWFwKCk7CiAgICAgICAgIGNv
ZGVCbG9jay0+c2V0UENUb0NvZGVPcmlnaW5NYXAobWFrZVVuaXF1ZTxQQ1RvQ29kZU9yaWdpbk1h
cD4oUENUb0NvZGVPcmlnaW5NYXBCdWlsZGVyKHZtLCBXVEZNb3ZlKG9yaWdpbk1hcCkpLCAqc3Rh
dGUuZmluYWxpemVyLT5iM0NvZGVMaW5rQnVmZmVyKSk7CisgICAgfQogCiAgICAgQ29kZUxvY2F0
aW9uTGFiZWw8SlNFbnRyeVB0clRhZz4gbGFiZWwgPSBzdGF0ZS5maW5hbGl6ZXItPmIzQ29kZUxp
bmtCdWZmZXItPmxvY2F0aW9uT2Y8SlNFbnRyeVB0clRhZz4oc3RhdGUucHJvYy0+Y29kZSgpLmVu
dHJ5cG9pbnRMYWJlbCgwKSk7CiAgICAgc3RhdGUuZ2VuZXJhdGVkRnVuY3Rpb24gPSBsYWJlbDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5jcHAKaW5kZXggMTBiODg2MmM1OTU4Li4x
ODY2MTM5MmMzYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3Rh
dGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuY3BwCkBAIC02
Myw2ICs2Myw5IEBAIFN0YXRlOjpTdGF0ZShHcmFwaCYgZ3JhcGgpCiAKICAgICBwcm9jID0gbWFr
ZVVuaXF1ZTxQcm9jZWR1cmU+KCk7CiAKKyAgICBpZiAoZ3JhcGgubV92bS5zaG91bGRCdWlsZGVy
UENUb0NvZGVPcmlnaW5NYXBwaW5nKCkpCisgICAgICAgIHByb2MtPnNldE5lZWRzUENUb09yaWdp
bk1hcCgpOworCiAgICAgcHJvYy0+c2V0T3JpZ2luUHJpbnRlcigKICAgICAgICAgW10gKFByaW50
U3RyZWFtJiBvdXQsIEIzOjpPcmlnaW4gb3JpZ2luKSB7CiAgICAgICAgICAgICBvdXQucHJpbnQo
Yml0d2lzZV9jYXN0PE5vZGUqPihvcmlnaW4uZGF0YSgpKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429810</attachid>
            <date>2021-05-26 16:15:22 -0700</date>
            <delta_ts>2021-06-01 15:30:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch226187</filename>
            <type>text/plain</type>
            <size>12837</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDQyYzhkZDg1NDYzYS4uZjdiMGRkMTEzYmIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NiBAQAorMjAyMS0wNS0yNiAgUm9i
aW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgorCisgICAgICAgIFdlIHNob3VsZCBk
cm9wIEIzIHZhbHVlcyB3aGlsZSBydW5uaW5nIEFpcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MTg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2Fh
bSBCYXJhdGkuCisKKyAgICAgICAgV2UgbXVzdCBrZWVwIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgor
ICAgICAgICAtIFdhc21Cb3VuZHNDaGVjaywgdG8ga25vdyB3aGV0aGVyIGl0IGlzIFBpbm5lZCBv
ciBNYXhpbXVtLCBhbmQgaWYgaXQgaXMgcGlubmVkIGZpbmQgaXRzIGFyZ3VtZW50LgorICAgICAg
ICAtIENDYWxsL1BhdGNoL0NoZWNrL0NoZWNrQWRkL0NoZWNrU3ViL0NoZWNrTXVsIGFuZCBhbGwg
b2YgdGhlaXIgY2hpbGRyZW4sIGJlY2F1c2UgYWxsIG9mIHRoZXNlIGFyZSBsb3dlcmVkIHRvIEFp
cjo6UGF0Y2hwb2ludCwgd2hpY2ggbmVlZHMgdG8ga25vdyB0aGUgdHlwZSBvZiBpdHMgYXJndW1l
bnRzLCBhbmQgZG9lcyBzbyBieSBsb29raW5nIGF0IHRoZSBjaGlsZHJlbiBvZiBpdHMgb3JpZ2lu
LgorICAgICAgICBJIGludGVuZCB0byBmaXggdGhlc2UgaW4gbGF0ZXIgcGF0Y2hlcyBpZiBwb3Nz
aWJsZS4KKworICAgICAgICBXZSBhbHNvIG11c3Qga2VlcCB0aGUgU3RhY2tTbG90cyBhbGl2ZS4g
SSBkb24ndCB5ZXQgZnVsbHkgdW5kZXJzdGFuZCB3aHksIGJ1dCB0aGVyZSBhcmUgc29tZSBzdWJ0
bGUgYW5kIGhhcmQgdG8gZGVidWcgYnVncyB3aGVuZXZlciBJIGdldCB0b28gYWdyZXNzaXZlIHdp
dGggdGhvc2UsIHNvIGZvciBub3cgbGV0J3Mga2VlcCB0aGVtLgorICAgICAgICBJIHdpbGwgYWxz
byB0cnkgdG8gZGVhbCB3aXRoIHRoZW0gaW4gYSBzZXBhcmF0ZSBwYXRjaC4KKworICAgICAgICBG
aW5hbGx5IHdlIG11c3QgcHJlc2VydmUgYWxsIEIzIHZhbHVlcyBpbiB0aGUgZm9sbG93aW5nIGNh
c2VzOgorICAgICAgICAtIGlmIHdlIGR1bXAgdGhlIGRpc2Fzc2VtYmx5IG9yIHRoZSBBaXIgZ3Jh
cGg6IGJlY2F1c2Ugb3RoZXJ3aXNlIHdlIGNhbm5vdCBwcmludCB0aGUgb3JpZ2lucworICAgICAg
ICAtIGlmIHdlIGFyZSB1c2luZyB0aGUgc2FtcGxpbmcgcHJvZmlsZXIsIGJlY2F1c2UgaXQgcmVs
aWVzIG9uIFBDVG9Db2RlT3JpZ2luTWFwIHdoaWNoIHdlIGNhbm5vdCBhY2N1cmF0ZWx5IGZpbGwg
d2l0aG91dCB0aGVzZSBvcmlnaW5zLgorCisgICAgICAgIEkgZG9uJ3QgaGF2ZSBwZXJmb3JtYW5j
ZSBudW1iZXJzIHlldCwgSSBpbnRlbmQgdG8gYWRkIHRoZW0gdG8gdGhlIGJ1Z3ppbGxhIG9uY2Ug
SSBnZXQgdGhlbS4KKworICAgICAgICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6CisgICAgICAgIChK
U0M6OkIzOjpsb3dlclRvQWlyKToKKyAgICAgICAgKiBiMy9CM1Byb2NlZHVyZS5jcHA6CisgICAg
ICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6OmZyZWVVbm5lZWRlZEIzVmFsdWVzQWZ0ZXJMb3dlcmlu
Zyk6CisgICAgICAgICogYjMvQjNQcm9jZWR1cmUuaDoKKyAgICAgICAgKEpTQzo6QjM6OlByb2Nl
ZHVyZTo6cmVsZWFzZVBDVG9PcmlnaW5NYXApOgorICAgICAgICAoSlNDOjpCMzo6UHJvY2VkdXJl
OjpzZXROZWVkc1BDVG9PcmlnaW5NYXApOgorICAgICAgICAoSlNDOjpCMzo6UHJvY2VkdXJlOjpu
ZWVkc1BDVG9PcmlnaW5NYXApOgorICAgICAgICAqIGIzL0IzU3BhcnNlQ29sbGVjdGlvbi5oOgor
ICAgICAgICAoSlNDOjpCMzo6U3BhcnNlQ29sbGVjdGlvbjo6Y2xlYXJBbGwpOgorICAgICAgICAo
SlNDOjpCMzo6U3BhcnNlQ29sbGVjdGlvbjo6ZmlsdGVyQW5kVHJhbnNmZXIpOgorICAgICAgICAq
IGIzL2Fpci9BaXJDb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6Q29kZTo6Q29kZSk6
CisgICAgICAgICogYjMvYWlyL0FpckNvZGUuaDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6Q29k
ZTo6c2hvdWxkUHJlc2VydmVCM09yaWdpbnMgY29uc3QpOgorICAgICAgICAqIGIzL2Fpci9BaXJH
ZW5lcmF0ZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OmdlbmVyYXRlV2l0aEFscmVhZHlB
bGxvY2F0ZWRSZWdpc3RlcnMpOgorICAgICAgICAqIGZ0bC9GVExDb21waWxlLmNwcDoKKyAgICAg
ICAgKEpTQzo6RlRMOjpjb21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMU3RhdGUuY3BwOgorICAg
ICAgICAoSlNDOjpGVEw6OlN0YXRlOjpTdGF0ZSk6CisKIDIwMjEtMDUtMjYgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgVW5jaGVja2VkTG9jayBldmVuIGxl
c3MgaW4gSmF2YVNjcmlwdENvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0dlbmVyYXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0dlbmVyYXRlLmNw
cAppbmRleCBkOWY2MWM5OTY0ZTYuLmNkNDRhMjkxNTc3NyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0dlbmVyYXRlLmNwcApAQCAtMTMzLDYgKzEzMyw3IEBAIHZvaWQgZ2VuZXJhdGVUb0Fp
cihQcm9jZWR1cmUmIHByb2NlZHVyZSkKICAgICB9CiAKICAgICBsb3dlclRvQWlyKHByb2NlZHVy
ZSk7CisgICAgcHJvY2VkdXJlLmZyZWVVbm5lZWRlZEIzVmFsdWVzQWZ0ZXJMb3dlcmluZygpOwog
fQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQ
cm9jZWR1cmUuY3BwCmluZGV4IGE1MmMwZjdmYWUxMS4uYTdlMGY5ODk3YjYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAKQEAgLTQzOSw2ICs0MzksNDkgQEAgdm9p
ZCBQcm9jZWR1cmU6OnNldE51bUVudHJ5cG9pbnRzKHVuc2lnbmVkIG51bUVudHJ5cG9pbnRzKQog
ICAgIG1fY29kZS0+c2V0TnVtRW50cnlwb2ludHMobnVtRW50cnlwb2ludHMpOwogfQogCit2b2lk
IFByb2NlZHVyZTo6ZnJlZVVubmVlZGVkQjNWYWx1ZXNBZnRlckxvd2VyaW5nKCkKK3sKKyAgICBt
X3ZhcmlhYmxlcy5jbGVhckFsbCgpOworICAgIC8vIG1fdHVwbGVzLmNsZWFyKCk7CisgICAgbV9i
bG9ja3MuY2xlYXIoKTsKKyAgICBtX2NmZyA9IG51bGxwdHI7CisgICAgbV9kb21pbmF0b3JzID0g
bnVsbHB0cjsKKyAgICBtX25hdHVyYWxMb29wcyA9IG51bGxwdHI7CisgICAgbV9iYWNrd2FyZHND
RkcgPSBudWxscHRyOworICAgIG1fYmFja3dhcmRzRG9taW5hdG9ycyA9IG51bGxwdHI7CisgICAg
bV9mYXN0Q29uc3RhbnRzLmNsZWFyKCk7CisKKyAgICBpZiAobV9jb2RlLT5zaG91bGRQcmVzZXJ2
ZUIzT3JpZ2lucygpKQorICAgICAgICByZXR1cm47CisKKyAgICBCaXRWZWN0b3IgdmFsdWVzVG9Q
cmVzZXJ2ZTsKKyAgICB2YWx1ZXNUb1ByZXNlcnZlLmVuc3VyZVNpemUobV92YWx1ZXMuc2l6ZSgp
KTsKKyAgICBmb3IgKFZhbHVlKiB2YWx1ZSA6IG1fdmFsdWVzKSB7CisgICAgICAgIHN3aXRjaCAo
dmFsdWUtPm9wY29kZSgpKSB7CisgICAgICAgIC8vIElkZWFsbHkgd2Ugd291bGQgYWxzbyBiZSBh
YmxlIHRvIGdldCByaWQgb2YgYWxsIG9mIHRob3NlLgorICAgICAgICAvLyBCdXQgQWlyIGN1cnJl
bnRseSByZWxpZXMgb24gdGhlc2Ugb3JpZ2lucyBiZWluZyBwcmVzZXJ2ZWQsIHNlZSBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0MDQwCisgICAgICAgIGNhc2UgV2Fz
bUJvdW5kc0NoZWNrOgorICAgICAgICAgICAgdmFsdWVzVG9QcmVzZXJ2ZS5xdWlja1NldCh2YWx1
ZS0+aW5kZXgoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDQ2FsbDoKKyAg
ICAgICAgY2FzZSBQYXRjaHBvaW50OgorICAgICAgICBjYXNlIENoZWNrQWRkOgorICAgICAgICBj
YXNlIENoZWNrU3ViOgorICAgICAgICBjYXNlIENoZWNrTXVsOgorICAgICAgICBjYXNlIENoZWNr
OgorICAgICAgICAgICAgdmFsdWVzVG9QcmVzZXJ2ZS5xdWlja1NldCh2YWx1ZS0+aW5kZXgoKSk7
CisgICAgICAgICAgICBmb3IgKFZhbHVlKiBjaGlsZCA6IHZhbHVlLT5jaGlsZHJlbigpKQorICAg
ICAgICAgICAgICAgIHZhbHVlc1RvUHJlc2VydmUucXVpY2tTZXQoY2hpbGQtPmluZGV4KCkpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgIH0KKyAgICBtX3ZhbHVlcy5maWx0ZXJBbmRUcmFuc2ZlcihtX2NvZGUt
Pm1fYjNWYWx1ZXNUb1ByZXNlcnZlLCBbJl0oVmFsdWUqIHZhbHVlKSB7CisgICAgICAgIHJldHVy
biB2YWx1ZXNUb1ByZXNlcnZlLnF1aWNrR2V0KHZhbHVlLT5pbmRleCgpKTsKKyAgICB9KTsKK30K
KwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCiAKICNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuaAppbmRleCAwNmZmNmY1ZmExM2UuLmNm
ODdmN2UwOTg1MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2Vk
dXJlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmgKQEAgLTI1
OSw3ICsyNTksMTEgQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZ2lzdGVyQXRP
ZmZzZXRMaXN0IGNhbGxlZVNhdmVSZWdpc3RlckF0T2Zmc2V0TGlzdCgpIGNvbnN0OwogCiAgICAg
UENUb09yaWdpbk1hcCYgcGNUb09yaWdpbk1hcCgpIHsgcmV0dXJuIG1fcGNUb09yaWdpbk1hcDsg
fQotICAgIFBDVG9PcmlnaW5NYXAgcmVsZWFzZVBDVG9PcmlnaW5NYXAoKSB7IHJldHVybiBXVEZN
b3ZlKG1fcGNUb09yaWdpbk1hcCk7IH0KKyAgICBQQ1RvT3JpZ2luTWFwIHJlbGVhc2VQQ1RvT3Jp
Z2luTWFwKCkKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG5lZWRzUENUb09yaWdpbk1h
cCgpKTsKKyAgICAgICAgcmV0dXJuIFdURk1vdmUobV9wY1RvT3JpZ2luTWFwKTsKKyAgICB9CiAK
ICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldFdhc21Cb3VuZHNDaGVja0dlbmVyYXRvcihS
ZWZQdHI8V2FzbUJvdW5kc0NoZWNrR2VuZXJhdG9yPik7CiAKQEAgLTI3Miw2ICsyNzYsMTEgQEAg
cHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZ2lzdGVyU2V0IG11dGFibGVHUFJzKCk7
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVnaXN0ZXJTZXQgbXV0YWJsZUZQUnMoKTsKIAorICAg
IHZvaWQgc2V0TmVlZHNQQ1RvT3JpZ2luTWFwKCkgeyBtX25lZWRzUENUb09yaWdpbk1hcCA9IHRy
dWU7IH0KKyAgICBib29sIG5lZWRzUENUb09yaWdpbk1hcCgpIHsgcmV0dXJuIG1fbmVlZHNQQ1Rv
T3JpZ2luTWFwOyB9CisKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZyZWVVbm5lZWRlZEIz
VmFsdWVzQWZ0ZXJMb3dlcmluZygpOworCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBCbG9j
a0luc2VydGlvblNldDsKIApAQCAtMjg5LDE2ICsyOTgsMTcgQEAgcHJpdmF0ZToKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8QmFja3dhcmRzQ0ZHPiBtX2JhY2t3YXJkc0NGRzsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8QmFja3dhcmRzRG9taW5hdG9ycz4gbV9iYWNrd2FyZHNEb21pbmF0b3JzOwogICAgIEhh
c2hTZXQ8VmFsdWVLZXk+IG1fZmFzdENvbnN0YW50czsKLSAgICB1bnNpZ25lZCBtX251bUVudHJ5
cG9pbnRzIHsgMSB9OwogICAgIGNvbnN0IGNoYXIqIG1fbGFzdFBoYXNlTmFtZTsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8T3BhcXVlQnlwcm9kdWN0cz4gbV9ieXByb2R1Y3RzOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxBaXI6OkNvZGU+IG1fY29kZTsKICAgICBSZWZQdHI8U2hhcmVkVGFzazx2b2lkKFBy
aW50U3RyZWFtJiwgT3JpZ2luKT4+IG1fb3JpZ2luUHJpbnRlcjsKICAgICBjb25zdCB2b2lkKiBt
X2Zyb250ZW5kRGF0YTsKICAgICBQQ1RvT3JpZ2luTWFwIG1fcGNUb09yaWdpbk1hcDsKKyAgICB1
bnNpZ25lZCBtX251bUVudHJ5cG9pbnRzIHsgMSB9OwogICAgIHVuc2lnbmVkIG1fb3B0TGV2ZWwg
eyBkZWZhdWx0T3B0TGV2ZWwoKSB9OwogICAgIGJvb2wgbV9uZWVkc1VzZWRSZWdpc3RlcnMgeyB0
cnVlIH07CiAgICAgYm9vbCBtX2hhc1F1aXJrcyB7IGZhbHNlIH07CisgICAgYm9vbCBtX25lZWRz
UENUb09yaWdpbk1hcCB7IGZhbHNlIH07CiB9OwogICAgIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTcGFyc2VDb2xsZWN0
aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTcGFyc2VDb2xsZWN0aW9uLmgKaW5k
ZXggMDlhMzY0NzUyNTU2Li5mYTZiNGU3YWRkMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM1NwYXJzZUNvbGxlY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNTcGFyc2VDb2xsZWN0aW9uLmgKQEAgLTExMSw2ICsxMTEsMjIgQEAgcHVibGljOgog
ICAgICAgICBtX3ZlY3Rvci5zaHJpbmsoZW5kSW5kZXgpOwogICAgIH0KIAorICAgIHZvaWQgY2xl
YXJBbGwoKQorICAgIHsKKyAgICAgICAgbV9pbmRleEZyZWVMaXN0LmNsZWFyKCk7CisgICAgICAg
IG1fdmVjdG9yLmNsZWFyKCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rv
cj4KKyAgICB2b2lkIGZpbHRlckFuZFRyYW5zZmVyKFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8VD4+
JiBkc3QsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCisgICAgeworICAgICAgICBmb3IgKGl0ZXJh
dG9yIGl0ID0gYmVnaW4oKTsgaXQgIT0gZW5kKCk7ICsraXQpIHsKKyAgICAgICAgICAgIGlmIChm
dW5jdG9yKCppdCkpCisgICAgICAgICAgICAgICAgZHN0LmFwcGVuZChXVEZNb3ZlKG1fdmVjdG9y
W2l0Lm1faW5kZXhdKSk7CisgICAgICAgIH0KKyAgICAgICAgY2xlYXJBbGwoKTsKKyAgICB9CisK
ICAgICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV92ZWN0b3Iuc2l6ZSgpOyB9CiAg
ICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV92ZWN0b3IuaXNFbXB0eSgpOyB9CiAg
ICAgCkBAIC0xNTQsNiArMTcwLDggQEAgcHVibGljOgogICAgICAgICB9CiAKICAgICBwcml2YXRl
OgorICAgICAgICBmcmllbmQgY2xhc3MgU3BhcnNlQ29sbGVjdGlvbjsKKwogICAgICAgICB1bnNp
Z25lZCBmaW5kTmV4dCh1bnNpZ25lZCBpbmRleCkKICAgICAgICAgewogICAgICAgICAgICAgd2hp
bGUgKGluZGV4IDwgbV9jb2xsZWN0aW9uLT5zaXplKCkgJiYgIW1fY29sbGVjdGlvbi0+YXQoaW5k
ZXgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ29kZS5jcHAKaW5kZXggOTA0MTgx
YjU3OTUzLi41NmNkM2FjZjVjNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyQ29kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJD
b2RlLmNwcApAQCAtNTcsNiArNTcsNyBAQCBzdGF0aWMgdm9pZCBkZWZhdWx0UHJvbG9ndWVHZW5l
cmF0b3IoQ0NhbGxIZWxwZXJzJiBqaXQsIENvZGUmIGNvZGUpCiBDb2RlOjpDb2RlKFByb2NlZHVy
ZSYgcHJvYykKICAgICA6IG1fcHJvYyhwcm9jKQogICAgICwgbV9jZmcobmV3IENGRygqdGhpcykp
CisgICAgLCBtX3ByZXNlcnZlQjNPcmlnaW5zKHByb2MubmVlZHNQQ1RvT3JpZ2luTWFwKCkgfHwg
T3B0aW9uczo6ZHVtcEFpckdyYXBoQXRFYWNoUGhhc2UoKSB8fCBPcHRpb25zOjpkdW1wRlRMRGlz
YXNzZW1ibHkoKSkKICAgICAsIG1fbGFzdFBoYXNlTmFtZSgiaW5pdGlhbCIpCiAgICAgLCBtX2Rl
ZmF1bHRQcm9sb2d1ZUdlbmVyYXRvcihjcmVhdGVTaGFyZWRUYXNrPFByb2xvZ3VlR2VuZXJhdG9y
RnVuY3Rpb24+KCZkZWZhdWx0UHJvbG9ndWVHZW5lcmF0b3IpKQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpckNvZGUuaAppbmRleCBkOGVlNDEyN2I1NzMuLjU1ZjNkZmQ2NTM2OCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmgKQEAgLTM1Niw2ICszNTYsMTAgQEAg
cHVibGljOgogICAgIHZvaWQgZW1pdEVwaWxvZ3VlKENDYWxsSGVscGVycyYpOwogCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEdlbmVyYXRlQW5kQWxsb2NhdGVSZWdpc3RlcnM+IG1fZ2VuZXJhdGVBbmRB
bGxvY2F0ZVJlZ2lzdGVyczsKKworICAgIGJvb2wgc2hvdWxkUHJlc2VydmVCM09yaWdpbnMoKSBj
b25zdCB7IHJldHVybiBtX3ByZXNlcnZlQjNPcmlnaW5zOyB9CisKKyAgICB2b2lkIGZvcmNlUHJl
c2VydmF0aW9uT2ZCM09yaWdpbnMoKSB7IG1fcHJlc2VydmVCM09yaWdpbnMgPSB0cnVlOyB9CiAg
ICAgCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyA6OkpTQzo6QjM6OlByb2NlZHVyZTsKQEAg
LTM5Myw2ICszOTcsNyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fZnJhbWVTaXplIHsgMCB9
OwogICAgIHVuc2lnbmVkIG1fY2FsbEFyZ0FyZWFTaXplIHsgMCB9OwogICAgIGJvb2wgbV9zdGFj
a0lzQWxsb2NhdGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1fcHJlc2VydmVCM09yaWdpbnMgeyB0
cnVlIH07CiAgICAgUmVnaXN0ZXJBdE9mZnNldExpc3QgbV91bmNvcnJlY3RlZENhbGxlZVNhdmVS
ZWdpc3RlckF0T2Zmc2V0TGlzdDsKICAgICBSZWdpc3RlclNldCBtX2NhbGxlZVNhdmVSZWdpc3Rl
cnM7CiAgICAgU3RhY2tTbG90KiBtX2NhbGxlZVNhdmVTdGFja1Nsb3QgeyBudWxscHRyIH07CkBA
IC00MDAsNiArNDA1LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8TWFjcm9Bc3NlbWJsZXI6Okxh
YmVsPiBtX2VudHJ5cG9pbnRMYWJlbHM7IC8vIFRoaXMgaXMgZW1wdHkgdW50aWwgY29kZSBnZW5l
cmF0aW9uLgogICAgIFZlY3RvcjxSZWY8UHJvbG9ndWVHZW5lcmF0b3I+LCAxPiBtX3Byb2xvZ3Vl
R2VuZXJhdG9yczsKICAgICBSZWZQdHI8V2FzbUJvdW5kc0NoZWNrR2VuZXJhdG9yPiBtX3dhc21C
b3VuZHNDaGVja0dlbmVyYXRvcjsKKyAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEIzOjpWYWx1
ZT4+IG1fYjNWYWx1ZXNUb1ByZXNlcnZlOwogICAgIGNvbnN0IGNoYXIqIG1fbGFzdFBoYXNlTmFt
ZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlzYXNzZW1ibGVyPiBtX2Rpc2Fzc2VtYmxlcjsKICAg
ICB1bnNpZ25lZCBtX29wdExldmVsIHsgZGVmYXVsdE9wdExldmVsKCkgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJHZW5lcmF0ZS5jcHAKaW5kZXggYThhYTZjMTFiZGYxLi45
M2RkNmZhYzkwNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
R2VuZXJhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJh
dGUuY3BwCkBAIC0yMTQsMTEgKzIxNCwxMiBAQCBzdGF0aWMgdm9pZCBnZW5lcmF0ZVdpdGhBbHJl
YWR5QWxsb2NhdGVkUmVnaXN0ZXJzKENvZGUmIGNvZGUsIENDYWxsSGVscGVycyYgaml0KQogCiAg
ICAgUENUb09yaWdpbk1hcCYgcGNUb09yaWdpbk1hcCA9IGNvZGUucHJvYygpLnBjVG9PcmlnaW5N
YXAoKTsKICAgICBhdXRvIGFkZEl0ZW0gPSBbJl0gKEluc3QmIGluc3QpIHsKLSAgICAgICAgaWYg
KCFpbnN0Lm9yaWdpbikgewotICAgICAgICAgICAgcGNUb09yaWdpbk1hcC5hcHBlbmRJdGVtKGpp
dC5sYWJlbElnbm9yaW5nV2F0Y2hwb2ludHMoKSwgT3JpZ2luKCkpOworICAgICAgICBpZiAoIWNv
ZGUuc2hvdWxkUHJlc2VydmVCM09yaWdpbnMoKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQotICAgICAgICBwY1RvT3JpZ2luTWFwLmFwcGVuZEl0ZW0oaml0LmxhYmVsSWdub3JpbmdX
YXRjaHBvaW50cygpLCBpbnN0Lm9yaWdpbi0+b3JpZ2luKCkpOworICAgICAgICBpZiAoaW5zdC5v
cmlnaW4pCisgICAgICAgICAgICBwY1RvT3JpZ2luTWFwLmFwcGVuZEl0ZW0oaml0LmxhYmVsSWdu
b3JpbmdXYXRjaHBvaW50cygpLCBpbnN0Lm9yaWdpbi0+b3JpZ2luKCkpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBwY1RvT3JpZ2luTWFwLmFwcGVuZEl0ZW0oaml0LmxhYmVsSWdub3JpbmdX
YXRjaHBvaW50cygpLCBPcmlnaW4oKSk7CiAgICAgfTsKIAogICAgIERpc2Fzc2VtYmxlciogZGlz
YXNzZW1ibGVyID0gY29kZS5kaXNhc3NlbWJsZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy90ZXN0YjNfNi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVz
dGIzXzYuY3BwCmluZGV4IDdiYTMzM2RjMTQwMS4uNmVjOTMyMDdkZWJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy90ZXN0YjNfNi5jcHAKQEAgLTI3NjcsNiArMjc2Nyw4IEBAIHZvaWQgdGVzdFRy
YXBwaW5nU3RvcmVFbGltaW5hdGlvbigpCiAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMy
VmFsdWU+KHByb2MsIE9yaWdpbigpLCA0NCksCiAgICAgICAgIHB0cik7CiAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKyAgICAvLyBXZSdsbCBsb29r
IGF0IHRoZSB2YWx1ZXMgYWZ0ZXIgY29tcGlsaW5nCisgICAgcHJvYy5jb2RlKCkuZm9yY2VQcmVz
ZXJ2YXRpb25PZkIzT3JpZ2lucygpOwogICAgIGNvbXBpbGVBbmRSdW48aW50Pihwcm9jKTsKICAg
ICB1bnNpZ25lZCBzdG9yZUNvdW50ID0gMDsKICAgICBmb3IgKFZhbHVlKiB2YWx1ZSA6IHByb2Mu
dmFsdWVzKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29t
cGlsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCmluZGV4
IDA2M2ZkNjA0M2M4OC4uZGVmNWMyZTBiNDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQ29tcGlsZS5jcHAKQEAgLTE1MCwxMCArMTUwLDExIEBAIHZvaWQgY29tcGlsZShTdGF0ZSYg
c3RhdGUsIFNhZmVwb2ludDo6UmVzdWx0JiBzYWZlcG9pbnRSZXN1bHQpCiAgICAgICAgIHN0YXRl
LmFsbG9jYXRpb25GYWlsZWQgPSB0cnVlOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAot
ICAgIEIzOjpQQ1RvT3JpZ2luTWFwIG9yaWdpbk1hcCA9IHN0YXRlLnByb2MtPnJlbGVhc2VQQ1Rv
T3JpZ2luTWFwKCk7Ci0gICAgaWYgKHZtLnNob3VsZEJ1aWxkZXJQQ1RvQ29kZU9yaWdpbk1hcHBp
bmcoKSkKKworICAgIGlmICh2bS5zaG91bGRCdWlsZGVyUENUb0NvZGVPcmlnaW5NYXBwaW5nKCkp
IHsKKyAgICAgICAgQjM6OlBDVG9PcmlnaW5NYXAgb3JpZ2luTWFwID0gc3RhdGUucHJvYy0+cmVs
ZWFzZVBDVG9PcmlnaW5NYXAoKTsKICAgICAgICAgY29kZUJsb2NrLT5zZXRQQ1RvQ29kZU9yaWdp
bk1hcChtYWtlVW5pcXVlPFBDVG9Db2RlT3JpZ2luTWFwPihQQ1RvQ29kZU9yaWdpbk1hcEJ1aWxk
ZXIodm0sIFdURk1vdmUob3JpZ2luTWFwKSksICpzdGF0ZS5maW5hbGl6ZXItPmIzQ29kZUxpbmtC
dWZmZXIpKTsKKyAgICB9CiAKICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0VudHJ5UHRyVGFnPiBs
YWJlbCA9IHN0YXRlLmZpbmFsaXplci0+YjNDb2RlTGlua0J1ZmZlci0+bG9jYXRpb25PZjxKU0Vu
dHJ5UHRyVGFnPihzdGF0ZS5wcm9jLT5jb2RlKCkuZW50cnlwb2ludExhYmVsKDApKTsKICAgICBz
dGF0ZS5nZW5lcmF0ZWRGdW5jdGlvbiA9IGxhYmVsOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TFN0YXRlLmNwcAppbmRleCAwMWJkZWVjOWZkMzcuLjQ1MWQ1OGFkZTAwYyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5jcHAKQEAgLTYzLDYgKzYzLDkgQEAgU3RhdGU6OlN0YXRl
KEdyYXBoJiBncmFwaCkKIAogICAgIHByb2MgPSBtYWtlVW5pcXVlPFByb2NlZHVyZT4oKTsKIAor
ICAgIGlmIChncmFwaC5tX3ZtLnNob3VsZEJ1aWxkZXJQQ1RvQ29kZU9yaWdpbk1hcHBpbmcoKSkK
KyAgICAgICAgcHJvYy0+c2V0TmVlZHNQQ1RvT3JpZ2luTWFwKCk7CisKICAgICBwcm9jLT5zZXRP
cmlnaW5QcmludGVyKAogICAgICAgICBbXSAoUHJpbnRTdHJlYW0mIG91dCwgQjM6Ok9yaWdpbiBv
cmlnaW4pIHsKICAgICAgICAgICAgIG91dC5wcmludChiaXR3aXNlX2Nhc3Q8Tm9kZSo+KG9yaWdp
bi5kYXRhKCkpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430299</attachid>
            <date>2021-06-01 15:30:25 -0700</date>
            <delta_ts>2021-06-02 11:44:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch226187</filename>
            <type>text/plain</type>
            <size>15022</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDRlOTNmZTY1OTA3My4uYTVmZjhmMDQxMzM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBAQAorMjAyMS0wNi0wMSAgUm9i
aW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgorCisgICAgICAgIFdlIHNob3VsZCBk
cm9wIEIzIHZhbHVlcyB3aGlsZSBydW5uaW5nIEFpcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MTg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2Fh
bSBCYXJhdGkuCisKKyAgICAgICAgV2UgbXVzdCBrZWVwIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgor
ICAgICAgICAtIFdhc21Cb3VuZHNDaGVjaywgdG8ga25vdyB3aGV0aGVyIGl0IGlzIFBpbm5lZCBv
ciBNYXhpbXVtLCBhbmQgaWYgaXQgaXMgcGlubmVkIGZpbmQgaXRzIGFyZ3VtZW50LgorICAgICAg
ICAtIENDYWxsL1BhdGNoL0NoZWNrL0NoZWNrQWRkL0NoZWNrU3ViL0NoZWNrTXVsIGFuZCBhbGwg
b2YgdGhlaXIgY2hpbGRyZW4sIGJlY2F1c2UgYWxsIG9mIHRoZXNlIGFyZSBsb3dlcmVkIHRvIEFp
cjo6UGF0Y2hwb2ludCwgd2hpY2ggbmVlZHMgdG8ga25vdyB0aGUgdHlwZSBvZiBpdHMgYXJndW1l
bnRzLCBhbmQgZG9lcyBzbyBieSBsb29raW5nIGF0IHRoZSBjaGlsZHJlbiBvZiBpdHMgICAgICAg
IG9yaWdpbi4KKyAgICAgICAgSSBpbnRlbmQgdG8gZml4IHRoZXNlIGluIGxhdGVyIHBhdGNoZXMg
aWYgcG9zc2libGUuCisKKyAgICAgICAgRmluYWxseSB3ZSBtdXN0IHByZXNlcnZlIGFsbCBCMyB2
YWx1ZXMgaW4gdGhlIGZvbGxvd2luZyBjYXNlczoKKyAgICAgICAgLSBpZiB3ZSBkdW1wIHRoZSBk
aXNhc3NlbWJseSBvciB0aGUgQWlyIGdyYXBoOiBiZWNhdXNlIG90aGVyd2lzZSB3ZSBjYW5ub3Qg
cHJpbnQgdGhlIG9yaWdpbnMKKyAgICAgICAgLSBpZiB3ZSBhcmUgdXNpbmcgdGhlIHNhbXBsaW5n
IHByb2ZpbGVyLCBiZWNhdXNlIGl0IHJlbGllcyBvbiBQQ1RvQ29kZU9yaWdpbk1hcCB3aGljaCB3
ZSBjYW5ub3QgYWNjdXJhdGVseSBmaWxsIHdpdGhvdXQgdGhlc2Ugb3JpZ2lucy4KKworICAgICAg
ICBXZSBtdXN0IGFsc28ga2VlcCBtX3R1cGxlcyBhbGl2ZSwgYXMgaXQgaXMgdXNlZCBieSBQYXRj
aHBvaW50cyBpbiBBaXIgdG8gdW5kZXJzdGFuZCB0aGUgdHlwZXMgb2YgdGhlaXIgYXJndW1lbnRz
LgorICAgICAgICBXZSBhbHNvIGRvbid0IHRvdWNoIFN0YWNrU2xvdHMgKGluIHRoaXMgcGF0Y2gp
LCBiZWNhdXNlIG9uZSBvZiB0aGVtIGlzIGNhcHR1cmVkIGJ5IEZUTDo6U3RhdGUuCisKKyAgICAg
ICAgQWxzbyBub3cgUENUb09yaWdpbk1hcCBoYXMgYSBWZWN0b3Igd2l0aCBubyBpbmxpbmUgY2Fw
YWNpdHksIHNpbmNlIGl0IGlzIGVpdGhlciBxdWl0ZSBsYXJnZSAoaWYgbmVlZGVkKSBvciBlbXB0
eSAob3RoZXJ3aXNlKS4KKworICAgICAgICBUaGUgcGVyZm9ybWFuY2UgaW1wYWN0IG9mIHRoaXMg
aXMgYSBwcm9ncmVzc2lvbiBvbiB2YXJpb3VzIFJBTWlmaWNhdGlvbiBzdWJ0ZXN0cyBvbiBNYWMs
IGJ1dCBpcyBtb3JlIG1pdGlnYXRlZCBvbiBpUGhvbmU3LCB3aXRoIHZhcmlvdXMgcmVncmVzc2lv
bnMuCisgICAgICAgIEkgc3VzcGVjdCB0aGVzZSB0byBiZSBub2lzZSwgYW5kIHdpbGwgbW9uaXRv
ciB0aGUgcGVyZm9ybWFuY2UgYm90cyBwb3N0LWxhbmRpbmcgdG8gbWFrZSBzdXJlIG9mIGl0Lgor
CisgICAgICAgICogYjMvQjNMb3dlclRvQWlyLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6Omxvd2Vy
VG9BaXIpOgorICAgICAgICAqIGIzL0IzUHJvY2VkdXJlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6
OlByb2NlZHVyZTo6ZnJlZVVubmVlZGVkQjNWYWx1ZXNBZnRlckxvd2VyaW5nKToKKyAgICAgICAg
KiBiMy9CM1Byb2NlZHVyZS5oOgorICAgICAgICAoSlNDOjpCMzo6UHJvY2VkdXJlOjpyZWxlYXNl
UENUb09yaWdpbk1hcCk6CisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6OnNldE5lZWRzUENU
b09yaWdpbk1hcCk6CisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6Om5lZWRzUENUb09yaWdp
bk1hcCk6CisgICAgICAgICogYjMvQjNTcGFyc2VDb2xsZWN0aW9uLmg6CisgICAgICAgIChKU0M6
OkIzOjpTcGFyc2VDb2xsZWN0aW9uOjpjbGVhckFsbCk6CisgICAgICAgIChKU0M6OkIzOjpTcGFy
c2VDb2xsZWN0aW9uOjpmaWx0ZXJBbmRUcmFuc2Zlcik6CisgICAgICAgICogYjMvYWlyL0FpckNv
ZGUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpDb2RlOjpDb2RlKToKKyAgICAgICAgKiBi
My9haXIvQWlyQ29kZS5oOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpDb2RlOjpzaG91bGRQcmVz
ZXJ2ZUIzT3JpZ2lucyBjb25zdCk6CisgICAgICAgICogYjMvYWlyL0FpckdlbmVyYXRlLmNwcDoK
KyAgICAgICAgKEpTQzo6QjM6OkFpcjo6Z2VuZXJhdGVXaXRoQWxyZWFkeUFsbG9jYXRlZFJlZ2lz
dGVycyk6CisgICAgICAgICogZnRsL0ZUTENvbXBpbGUuY3BwOgorICAgICAgICAoSlNDOjpGVEw6
OmNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkZU
TDo6U3RhdGU6OlN0YXRlKToKKwogMjAyMS0wNS0yNCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWls
bGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnQgcjI3NjYxMCBiZWNh
dXNlIGl0IGNhdXNlcyBhIDElIFBMVCByZWdyZXNzaW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzR2VuZXJhdGUuY3BwCmluZGV4IGQ5ZjYxYzk5NjRlNi4uY2Q0NGEyOTE1Nzc3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNHZW5lcmF0ZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJhdGUuY3BwCkBAIC0xMzMsNiArMTMzLDcgQEAgdm9p
ZCBnZW5lcmF0ZVRvQWlyKFByb2NlZHVyZSYgcHJvY2VkdXJlKQogICAgIH0KIAogICAgIGxvd2Vy
VG9BaXIocHJvY2VkdXJlKTsKKyAgICBwcm9jZWR1cmUuZnJlZVVubmVlZGVkQjNWYWx1ZXNBZnRl
ckxvd2VyaW5nKCk7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUENUb09yaWdpbk1hcC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzUENUb09yaWdpbk1hcC5oCmluZGV4IDVlNmNlNDUxZDM5Ny4uNWQ1MTY0
NzU1MmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQQ1RvT3JpZ2lu
TWFwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUENUb09yaWdpbk1hcC5oCkBA
IC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBWZWN0b3I8T3JpZ2luUmFuZ2U+JiBy
YW5nZXMoKSBjb25zdCAgeyByZXR1cm4gbV9yYW5nZXM7IH0KIAogcHJpdmF0ZToKLSAgICBWZWN0
b3I8T3JpZ2luUmFuZ2U+IG1fcmFuZ2VzOworICAgIFZlY3RvcjxPcmlnaW5SYW5nZSwgMD4gbV9y
YW5nZXM7CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNQcm9jZWR1cmUuY3BwCmluZGV4IGE1MmMwZjdmYWUxMS4uMDAyMzNkZjlmN2RlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MzksNiArNDM5
LDUxIEBAIHZvaWQgUHJvY2VkdXJlOjpzZXROdW1FbnRyeXBvaW50cyh1bnNpZ25lZCBudW1FbnRy
eXBvaW50cykKICAgICBtX2NvZGUtPnNldE51bUVudHJ5cG9pbnRzKG51bUVudHJ5cG9pbnRzKTsK
IH0KIAordm9pZCBQcm9jZWR1cmU6OmZyZWVVbm5lZWRlZEIzVmFsdWVzQWZ0ZXJMb3dlcmluZygp
Cit7CisgICAgLy8gV2UgY2Fubm90IGNsZWFyIG1fc3RhY2tTbG90cygpIG9yIG1fdHVwbGVzIGhl
cmUsIGFzIHRoZXkgYXJlIHVuZm9ydHVuYXRlbHkgbW9kaWZpZWQgYW5kIHJlYWQgcmVzcGVjdGl2
ZWx5IGJ5IEFpci4KKyAgICBtX3ZhcmlhYmxlcy5jbGVhckFsbCgpOworICAgIG1fYmxvY2tzLmNs
ZWFyKCk7CisgICAgbV9jZmcgPSBudWxscHRyOworICAgIG1fZG9taW5hdG9ycyA9IG51bGxwdHI7
CisgICAgbV9uYXR1cmFsTG9vcHMgPSBudWxscHRyOworICAgIG1fYmFja3dhcmRzQ0ZHID0gbnVs
bHB0cjsKKyAgICBtX2JhY2t3YXJkc0RvbWluYXRvcnMgPSBudWxscHRyOworICAgIG1fZmFzdENv
bnN0YW50cy5jbGVhcigpOworCisgICAgaWYgKG1fY29kZS0+c2hvdWxkUHJlc2VydmVCM09yaWdp
bnMoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQml0VmVjdG9yIHZhbHVlc1RvUHJlc2VydmU7
CisgICAgdmFsdWVzVG9QcmVzZXJ2ZS5lbnN1cmVTaXplKG1fdmFsdWVzLnNpemUoKSk7CisgICAg
Zm9yIChWYWx1ZSogdmFsdWUgOiBtX3ZhbHVlcykgeworICAgICAgICBzd2l0Y2ggKHZhbHVlLT5v
cGNvZGUoKSkgeworICAgICAgICAvLyBJZGVhbGx5IHdlIHdvdWxkIGFsc28gYmUgYWJsZSB0byBn
ZXQgcmlkIG9mIGFsbCBvZiB0aG9zZS4KKyAgICAgICAgLy8gQnV0IEFpciBjdXJyZW50bHkgcmVs
aWVzIG9uIHRoZXNlIG9yaWdpbnMgYmVpbmcgcHJlc2VydmVkLCBzZWUgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDA0MAorICAgICAgICBjYXNlIFdhc21Cb3VuZHND
aGVjazoKKyAgICAgICAgICAgIHZhbHVlc1RvUHJlc2VydmUucXVpY2tTZXQodmFsdWUtPmluZGV4
KCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ0NhbGw6CisgICAgICAgIGNh
c2UgUGF0Y2hwb2ludDoKKyAgICAgICAgY2FzZSBDaGVja0FkZDoKKyAgICAgICAgY2FzZSBDaGVj
a1N1YjoKKyAgICAgICAgY2FzZSBDaGVja011bDoKKyAgICAgICAgY2FzZSBDaGVjazoKKyAgICAg
ICAgICAgIHZhbHVlc1RvUHJlc2VydmUucXVpY2tTZXQodmFsdWUtPmluZGV4KCkpOworICAgICAg
ICAgICAgZm9yIChWYWx1ZSogY2hpbGQgOiB2YWx1ZS0+Y2hpbGRyZW4oKSkKKyAgICAgICAgICAg
ICAgICB2YWx1ZXNUb1ByZXNlcnZlLnF1aWNrU2V0KGNoaWxkLT5pbmRleCgpKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICB9CisgICAgZm9yIChWYWx1ZSogdmFsdWUgOiBtX3ZhbHVlcykgeworICAgICAgICBp
ZiAoIXZhbHVlc1RvUHJlc2VydmUucXVpY2tHZXQodmFsdWUtPmluZGV4KCkpKQorICAgICAgICAg
ICAgbV92YWx1ZXMucmVtb3ZlKHZhbHVlKTsKKyAgICB9CisgICAgbV92YWx1ZXMucGFja0luZGlj
ZXMoKTsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCiAKICNlbmRpZiAvLyBFTkFCTEUo
QjNfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuaAppbmRleCAwNmZmNmY1
ZmExM2UuLmU0NGMyNjM2MDEyNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzUHJvY2VkdXJlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJl
LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yNTksNyArMjU5LDExIEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBS
ZWdpc3RlckF0T2Zmc2V0TGlzdCBjYWxsZWVTYXZlUmVnaXN0ZXJBdE9mZnNldExpc3QoKSBjb25z
dDsKIAogICAgIFBDVG9PcmlnaW5NYXAmIHBjVG9PcmlnaW5NYXAoKSB7IHJldHVybiBtX3BjVG9P
cmlnaW5NYXA7IH0KLSAgICBQQ1RvT3JpZ2luTWFwIHJlbGVhc2VQQ1RvT3JpZ2luTWFwKCkgeyBy
ZXR1cm4gV1RGTW92ZShtX3BjVG9PcmlnaW5NYXApOyB9CisgICAgUENUb09yaWdpbk1hcCByZWxl
YXNlUENUb09yaWdpbk1hcCgpCisgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChuZWVkc1BD
VG9PcmlnaW5NYXAoKSk7CisgICAgICAgIHJldHVybiBXVEZNb3ZlKG1fcGNUb09yaWdpbk1hcCk7
CisgICAgfQogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRXYXNtQm91bmRzQ2hlY2tH
ZW5lcmF0b3IoUmVmUHRyPFdhc21Cb3VuZHNDaGVja0dlbmVyYXRvcj4pOwogCkBAIC0yNzIsNiAr
Mjc2LDExIEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBSZWdpc3RlclNldCBtdXRh
YmxlR1BScygpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZ2lzdGVyU2V0IG11dGFibGVGUFJz
KCk7CiAKKyAgICB2b2lkIHNldE5lZWRzUENUb09yaWdpbk1hcCgpIHsgbV9uZWVkc1BDVG9Pcmln
aW5NYXAgPSB0cnVlOyB9CisgICAgYm9vbCBuZWVkc1BDVG9PcmlnaW5NYXAoKSB7IHJldHVybiBt
X25lZWRzUENUb09yaWdpbk1hcDsgfQorCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmcmVl
VW5uZWVkZWRCM1ZhbHVlc0FmdGVyTG93ZXJpbmcoKTsKKwogcHJpdmF0ZToKICAgICBmcmllbmQg
Y2xhc3MgQmxvY2tJbnNlcnRpb25TZXQ7CiAKQEAgLTI4OSwxNiArMjk4LDE3IEBAIHByaXZhdGU6
CiAgICAgc3RkOjp1bmlxdWVfcHRyPEJhY2t3YXJkc0NGRz4gbV9iYWNrd2FyZHNDRkc7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPEJhY2t3YXJkc0RvbWluYXRvcnM+IG1fYmFja3dhcmRzRG9taW5hdG9y
czsKICAgICBIYXNoU2V0PFZhbHVlS2V5PiBtX2Zhc3RDb25zdGFudHM7Ci0gICAgdW5zaWduZWQg
bV9udW1FbnRyeXBvaW50cyB7IDEgfTsKICAgICBjb25zdCBjaGFyKiBtX2xhc3RQaGFzZU5hbWU7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPE9wYXF1ZUJ5cHJvZHVjdHM+IG1fYnlwcm9kdWN0czsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8QWlyOjpDb2RlPiBtX2NvZGU7CiAgICAgUmVmUHRyPFNoYXJlZFRh
c2s8dm9pZChQcmludFN0cmVhbSYsIE9yaWdpbik+PiBtX29yaWdpblByaW50ZXI7CiAgICAgY29u
c3Qgdm9pZCogbV9mcm9udGVuZERhdGE7CiAgICAgUENUb09yaWdpbk1hcCBtX3BjVG9PcmlnaW5N
YXA7CisgICAgdW5zaWduZWQgbV9udW1FbnRyeXBvaW50cyB7IDEgfTsKICAgICB1bnNpZ25lZCBt
X29wdExldmVsIHsgZGVmYXVsdE9wdExldmVsKCkgfTsKICAgICBib29sIG1fbmVlZHNVc2VkUmVn
aXN0ZXJzIHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9oYXNRdWlya3MgeyBmYWxzZSB9OworICAgIGJv
b2wgbV9uZWVkc1BDVG9PcmlnaW5NYXAgeyBmYWxzZSB9OwogfTsKICAgICAKIH0gfSAvLyBuYW1l
c3BhY2UgSlNDOjpCMwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3Bh
cnNlQ29sbGVjdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3BhcnNlQ29sbGVj
dGlvbi5oCmluZGV4IDA5YTM2NDc1MjU1Ni4uNDk1Yjk0ZGI5YzU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTcGFyc2VDb2xsZWN0aW9uLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzU3BhcnNlQ29sbGVjdGlvbi5oCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTExMSw2ICsxMTEsMTIgQEAgcHVi
bGljOgogICAgICAgICBtX3ZlY3Rvci5zaHJpbmsoZW5kSW5kZXgpOwogICAgIH0KIAorICAgIHZv
aWQgY2xlYXJBbGwoKQorICAgIHsKKyAgICAgICAgbV9pbmRleEZyZWVMaXN0LmNsZWFyKCk7Cisg
ICAgICAgIG1fdmVjdG9yLmNsZWFyKCk7CisgICAgfQorCiAgICAgdW5zaWduZWQgc2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdmVjdG9yLnNpemUoKTsgfQogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0
IHsgcmV0dXJuIG1fdmVjdG9yLmlzRW1wdHkoKTsgfQogICAgIApAQCAtMTU0LDYgKzE2MCw4IEBA
IHB1YmxpYzoKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNz
IFNwYXJzZUNvbGxlY3Rpb247CisKICAgICAgICAgdW5zaWduZWQgZmluZE5leHQodW5zaWduZWQg
aW5kZXgpCiAgICAgICAgIHsKICAgICAgICAgICAgIHdoaWxlIChpbmRleCA8IG1fY29sbGVjdGlv
bi0+c2l6ZSgpICYmICFtX2NvbGxlY3Rpb24tPmF0KGluZGV4KSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ29kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpckNvZGUuY3BwCmluZGV4IDkwNDE4MWI1Nzk1My4uNTZjZDNhY2Y1YzQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ29kZS5jcHAKQEAgLTU3LDYgKzU3LDcg
QEAgc3RhdGljIHZvaWQgZGVmYXVsdFByb2xvZ3VlR2VuZXJhdG9yKENDYWxsSGVscGVycyYgaml0
LCBDb2RlJiBjb2RlKQogQ29kZTo6Q29kZShQcm9jZWR1cmUmIHByb2MpCiAgICAgOiBtX3Byb2Mo
cHJvYykKICAgICAsIG1fY2ZnKG5ldyBDRkcoKnRoaXMpKQorICAgICwgbV9wcmVzZXJ2ZUIzT3Jp
Z2lucyhwcm9jLm5lZWRzUENUb09yaWdpbk1hcCgpIHx8IE9wdGlvbnM6OmR1bXBBaXJHcmFwaEF0
RWFjaFBoYXNlKCkgfHwgT3B0aW9uczo6ZHVtcEZUTERpc2Fzc2VtYmx5KCkpCiAgICAgLCBtX2xh
c3RQaGFzZU5hbWUoImluaXRpYWwiKQogICAgICwgbV9kZWZhdWx0UHJvbG9ndWVHZW5lcmF0b3Io
Y3JlYXRlU2hhcmVkVGFzazxQcm9sb2d1ZUdlbmVyYXRvckZ1bmN0aW9uPigmZGVmYXVsdFByb2xv
Z3VlR2VuZXJhdG9yKSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyQ29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmgKaW5k
ZXggZDhlZTQxMjdiNTczLi4xNTYzNzMyZWM0NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyQ29kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyQ29kZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
NS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMzU2LDYgKzM1NiwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbWl0
RXBpbG9ndWUoQ0NhbGxIZWxwZXJzJik7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8R2VuZXJhdGVB
bmRBbGxvY2F0ZVJlZ2lzdGVycz4gbV9nZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzOworCisg
ICAgYm9vbCBzaG91bGRQcmVzZXJ2ZUIzT3JpZ2lucygpIGNvbnN0IHsgcmV0dXJuIG1fcHJlc2Vy
dmVCM09yaWdpbnM7IH0KKworICAgIHZvaWQgZm9yY2VQcmVzZXJ2YXRpb25PZkIzT3JpZ2lucygp
IHsgbV9wcmVzZXJ2ZUIzT3JpZ2lucyA9IHRydWU7IH0KICAgICAKIHByaXZhdGU6CiAgICAgZnJp
ZW5kIGNsYXNzIDo6SlNDOjpCMzo6UHJvY2VkdXJlOwpAQCAtMzkyLDcgKzM5Niw5IEBAIHByaXZh
dGU6CiAgICAgdW5zaWduZWQgbV9udW1GUFRtcHMgeyAwIH07CiAgICAgdW5zaWduZWQgbV9mcmFt
ZVNpemUgeyAwIH07CiAgICAgdW5zaWduZWQgbV9jYWxsQXJnQXJlYVNpemUgeyAwIH07CisgICAg
dW5zaWduZWQgbV9vcHRMZXZlbCB7IGRlZmF1bHRPcHRMZXZlbCgpIH07CiAgICAgYm9vbCBtX3N0
YWNrSXNBbGxvY2F0ZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9wcmVzZXJ2ZUIzT3JpZ2lucyB7
IHRydWUgfTsKICAgICBSZWdpc3RlckF0T2Zmc2V0TGlzdCBtX3VuY29ycmVjdGVkQ2FsbGVlU2F2
ZVJlZ2lzdGVyQXRPZmZzZXRMaXN0OwogICAgIFJlZ2lzdGVyU2V0IG1fY2FsbGVlU2F2ZVJlZ2lz
dGVyczsKICAgICBTdGFja1Nsb3QqIG1fY2FsbGVlU2F2ZVN0YWNrU2xvdCB7IG51bGxwdHIgfTsK
QEAgLTQwMiw3ICs0MDgsNiBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxXYXNtQm91bmRzQ2hlY2tH
ZW5lcmF0b3I+IG1fd2FzbUJvdW5kc0NoZWNrR2VuZXJhdG9yOwogICAgIGNvbnN0IGNoYXIqIG1f
bGFzdFBoYXNlTmFtZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlzYXNzZW1ibGVyPiBtX2Rpc2Fz
c2VtYmxlcjsKLSAgICB1bnNpZ25lZCBtX29wdExldmVsIHsgZGVmYXVsdE9wdExldmVsKCkgfTsK
ICAgICBSZWY8UHJvbG9ndWVHZW5lcmF0b3I+IG1fZGVmYXVsdFByb2xvZ3VlR2VuZXJhdG9yOwog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJHZW5lcmF0
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcAppbmRl
eCBhOGFhNmMxMWJkZjEuLjFhZjljNTQwZWI2ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJHZW5lcmF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJHZW5lcmF0ZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE1LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE1LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMTQsMTEgKzIxNCwxMiBAQCBzdGF0aWMgdm9p
ZCBnZW5lcmF0ZVdpdGhBbHJlYWR5QWxsb2NhdGVkUmVnaXN0ZXJzKENvZGUmIGNvZGUsIENDYWxs
SGVscGVycyYgaml0KQogCiAgICAgUENUb09yaWdpbk1hcCYgcGNUb09yaWdpbk1hcCA9IGNvZGUu
cHJvYygpLnBjVG9PcmlnaW5NYXAoKTsKICAgICBhdXRvIGFkZEl0ZW0gPSBbJl0gKEluc3QmIGlu
c3QpIHsKLSAgICAgICAgaWYgKCFpbnN0Lm9yaWdpbikgewotICAgICAgICAgICAgcGNUb09yaWdp
bk1hcC5hcHBlbmRJdGVtKGppdC5sYWJlbElnbm9yaW5nV2F0Y2hwb2ludHMoKSwgT3JpZ2luKCkp
OworICAgICAgICBpZiAoIWNvZGUuc2hvdWxkUHJlc2VydmVCM09yaWdpbnMoKSkKICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBwY1RvT3JpZ2luTWFwLmFwcGVuZEl0ZW0o
aml0LmxhYmVsSWdub3JpbmdXYXRjaHBvaW50cygpLCBpbnN0Lm9yaWdpbi0+b3JpZ2luKCkpOwor
ICAgICAgICBpZiAoaW5zdC5vcmlnaW4pCisgICAgICAgICAgICBwY1RvT3JpZ2luTWFwLmFwcGVu
ZEl0ZW0oaml0LmxhYmVsSWdub3JpbmdXYXRjaHBvaW50cygpLCBpbnN0Lm9yaWdpbi0+b3JpZ2lu
KCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBwY1RvT3JpZ2luTWFwLmFwcGVuZEl0ZW0o
aml0LmxhYmVsSWdub3JpbmdXYXRjaHBvaW50cygpLCBPcmlnaW4oKSk7CiAgICAgfTsKIAogICAg
IERpc2Fzc2VtYmxlciogZGlzYXNzZW1ibGVyID0gY29kZS5kaXNhc3NlbWJsZXIoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfNi5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvdGVzdGIzXzYuY3BwCmluZGV4IDdiYTMzM2RjMTQwMS4uNmVjOTMyMDdk
ZWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzYuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfNi5jcHAKQEAgLTI3NjcsNiArMjc2
Nyw4IEBAIHZvaWQgdGVzdFRyYXBwaW5nU3RvcmVFbGltaW5hdGlvbigpCiAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCA0NCksCiAgICAgICAgIHB0
cik7CiAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsK
KyAgICAvLyBXZSdsbCBsb29rIGF0IHRoZSB2YWx1ZXMgYWZ0ZXIgY29tcGlsaW5nCisgICAgcHJv
Yy5jb2RlKCkuZm9yY2VQcmVzZXJ2YXRpb25PZkIzT3JpZ2lucygpOwogICAgIGNvbXBpbGVBbmRS
dW48aW50Pihwcm9jKTsKICAgICB1bnNpZ25lZCBzdG9yZUNvdW50ID0gMDsKICAgICBmb3IgKFZh
bHVlKiB2YWx1ZSA6IHByb2MudmFsdWVzKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TENvbXBpbGUuY3BwCmluZGV4IDA2M2ZkNjA0M2M4OC4uZGVmNWMyZTBiNDczIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKQEAgLTE1MCwxMCArMTUwLDExIEBAIHZv
aWQgY29tcGlsZShTdGF0ZSYgc3RhdGUsIFNhZmVwb2ludDo6UmVzdWx0JiBzYWZlcG9pbnRSZXN1
bHQpCiAgICAgICAgIHN0YXRlLmFsbG9jYXRpb25GYWlsZWQgPSB0cnVlOwogICAgICAgICByZXR1
cm47CiAgICAgfQotICAgIAotICAgIEIzOjpQQ1RvT3JpZ2luTWFwIG9yaWdpbk1hcCA9IHN0YXRl
LnByb2MtPnJlbGVhc2VQQ1RvT3JpZ2luTWFwKCk7Ci0gICAgaWYgKHZtLnNob3VsZEJ1aWxkZXJQ
Q1RvQ29kZU9yaWdpbk1hcHBpbmcoKSkKKworICAgIGlmICh2bS5zaG91bGRCdWlsZGVyUENUb0Nv
ZGVPcmlnaW5NYXBwaW5nKCkpIHsKKyAgICAgICAgQjM6OlBDVG9PcmlnaW5NYXAgb3JpZ2luTWFw
ID0gc3RhdGUucHJvYy0+cmVsZWFzZVBDVG9PcmlnaW5NYXAoKTsKICAgICAgICAgY29kZUJsb2Nr
LT5zZXRQQ1RvQ29kZU9yaWdpbk1hcChtYWtlVW5pcXVlPFBDVG9Db2RlT3JpZ2luTWFwPihQQ1Rv
Q29kZU9yaWdpbk1hcEJ1aWxkZXIodm0sIFdURk1vdmUob3JpZ2luTWFwKSksICpzdGF0ZS5maW5h
bGl6ZXItPmIzQ29kZUxpbmtCdWZmZXIpKTsKKyAgICB9CiAKICAgICBDb2RlTG9jYXRpb25MYWJl
bDxKU0VudHJ5UHRyVGFnPiBsYWJlbCA9IHN0YXRlLmZpbmFsaXplci0+YjNDb2RlTGlua0J1ZmZl
ci0+bG9jYXRpb25PZjxKU0VudHJ5UHRyVGFnPihzdGF0ZS5wcm9jLT5jb2RlKCkuZW50cnlwb2lu
dExhYmVsKDApKTsKICAgICBzdGF0ZS5nZW5lcmF0ZWRGdW5jdGlvbiA9IGxhYmVsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmNwcAppbmRleCAxMGI4ODYyYzU5NTguLjI0ZmFjMDQ2
YWNmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5jcHAKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02Myw2ICs2
Myw5IEBAIFN0YXRlOjpTdGF0ZShHcmFwaCYgZ3JhcGgpCiAKICAgICBwcm9jID0gbWFrZVVuaXF1
ZTxQcm9jZWR1cmU+KCk7CiAKKyAgICBpZiAoZ3JhcGgubV92bS5zaG91bGRCdWlsZGVyUENUb0Nv
ZGVPcmlnaW5NYXBwaW5nKCkpCisgICAgICAgIHByb2MtPnNldE5lZWRzUENUb09yaWdpbk1hcCgp
OworCiAgICAgcHJvYy0+c2V0T3JpZ2luUHJpbnRlcigKICAgICAgICAgW10gKFByaW50U3RyZWFt
JiBvdXQsIEIzOjpPcmlnaW4gb3JpZ2luKSB7CiAgICAgICAgICAgICBvdXQucHJpbnQoYml0d2lz
ZV9jYXN0PE5vZGUqPihvcmlnaW4uZGF0YSgpKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430378</attachid>
            <date>2021-06-02 11:44:18 -0700</date>
            <delta_ts>2021-06-08 14:51:02 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>patch226187</filename>
            <type>text/plain</type>
            <size>14723</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGE5ZjI0ZmI1ZjhlMy4uMzc2MWNmYzNlYjBiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBAQAorMjAyMS0wNi0wMiAgUm9i
aW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgorCisgICAgICAgIFdlIHNob3VsZCBk
cm9wIEIzIHZhbHVlcyB3aGlsZSBydW5uaW5nIEFpcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MTg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2Fh
bSBCYXJhdGkuCisKKyAgICAgICAgV2UgbXVzdCBrZWVwIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgor
ICAgICAgICAtIFdhc21Cb3VuZHNDaGVjaywgdG8ga25vdyB3aGV0aGVyIGl0IGlzIFBpbm5lZCBv
ciBNYXhpbXVtLCBhbmQgaWYgaXQgaXMgcGlubmVkIGZpbmQgaXRzIGFyZ3VtZW50LgorICAgICAg
ICAtIENDYWxsL1BhdGNoL0NoZWNrL0NoZWNrQWRkL0NoZWNrU3ViL0NoZWNrTXVsIGFuZCBhbGwg
b2YgdGhlaXIgY2hpbGRyZW4sIGJlY2F1c2UgYWxsIG9mIHRoZXNlIGFyZSBsb3dlcmVkIHRvIEFp
cjo6UGF0Y2hwb2ludCwgd2hpY2ggbmVlZHMgdG8ga25vdyB0aGUgdHlwZSBvZiBpdHMgYXJndW1l
bnRzLCBhbmQgZG9lcyBzbyBieSBsb29raW5nIGF0IHRoZSBjaGlsZHJlbiBvZiBpdHMgICAgICAg
IG9yaWdpbi4KKyAgICAgICAgSSBpbnRlbmQgdG8gZml4IHRoZXNlIGluIGxhdGVyIHBhdGNoZXMg
aWYgcG9zc2libGUuCisKKyAgICAgICAgRmluYWxseSB3ZSBtdXN0IHByZXNlcnZlIGFsbCBCMyB2
YWx1ZXMgaW4gdGhlIGZvbGxvd2luZyBjYXNlczoKKyAgICAgICAgLSBpZiB3ZSBkdW1wIHRoZSBk
aXNhc3NlbWJseSBvciB0aGUgQWlyIGdyYXBoOiBiZWNhdXNlIG90aGVyd2lzZSB3ZSBjYW5ub3Qg
cHJpbnQgdGhlIG9yaWdpbnMKKyAgICAgICAgLSBpZiB3ZSBhcmUgdXNpbmcgdGhlIHNhbXBsaW5n
IHByb2ZpbGVyLCBiZWNhdXNlIGl0IHJlbGllcyBvbiBQQ1RvQ29kZU9yaWdpbk1hcCB3aGljaCB3
ZSBjYW5ub3QgYWNjdXJhdGVseSBmaWxsIHdpdGhvdXQgdGhlc2Ugb3JpZ2lucy4KKworICAgICAg
ICBXZSBtdXN0IGFsc28ga2VlcCBtX3R1cGxlcyBhbGl2ZSwgYXMgaXQgaXMgdXNlZCBieSBQYXRj
aHBvaW50cyBpbiBBaXIgdG8gdW5kZXJzdGFuZCB0aGUgdHlwZXMgb2YgdGhlaXIgYXJndW1lbnRz
LgorICAgICAgICBXZSBhbHNvIGRvbid0IHRvdWNoIFN0YWNrU2xvdHMgKGluIHRoaXMgcGF0Y2gp
LCBiZWNhdXNlIG9uZSBvZiB0aGVtIGlzIGNhcHR1cmVkIGJ5IEZUTDo6U3RhdGUuCisKKyAgICAg
ICAgQWxzbyBub3cgUENUb09yaWdpbk1hcCBoYXMgYSBWZWN0b3Igd2l0aCBubyBpbmxpbmUgY2Fw
YWNpdHksIHNpbmNlIGl0IGlzIGVpdGhlciBxdWl0ZSBsYXJnZSAoaWYgbmVlZGVkKSBvciBlbXB0
eSAob3RoZXJ3aXNlKS4KKworICAgICAgICBUaGUgcGVyZm9ybWFuY2UgaW1wYWN0IG9mIHRoaXMg
aXMgYSBwcm9ncmVzc2lvbiBvbiB2YXJpb3VzIFJBTWlmaWNhdGlvbiBzdWJ0ZXN0cyBvbiBNYWMs
IGJ1dCBpcyBtb3JlIG1pdGlnYXRlZCBvbiBpUGhvbmU3LCB3aXRoIHZhcmlvdXMgcmVncmVzc2lv
bnMuCisgICAgICAgIEkgc3VzcGVjdCB0aGVzZSB0byBiZSBub2lzZSwgYW5kIHdpbGwgbW9uaXRv
ciB0aGUgcGVyZm9ybWFuY2UgYm90cyBwb3N0LWxhbmRpbmcgdG8gbWFrZSBzdXJlIG9mIGl0Lgor
CisgICAgICAgICogYjMvQjNMb3dlclRvQWlyLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6Omxvd2Vy
VG9BaXIpOgorICAgICAgICAqIGIzL0IzUHJvY2VkdXJlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6
OlByb2NlZHVyZTo6ZnJlZVVubmVlZGVkQjNWYWx1ZXNBZnRlckxvd2VyaW5nKToKKyAgICAgICAg
KiBiMy9CM1Byb2NlZHVyZS5oOgorICAgICAgICAoSlNDOjpCMzo6UHJvY2VkdXJlOjpyZWxlYXNl
UENUb09yaWdpbk1hcCk6CisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6OnNldE5lZWRzUENU
b09yaWdpbk1hcCk6CisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6Om5lZWRzUENUb09yaWdp
bk1hcCk6CisgICAgICAgICogYjMvQjNTcGFyc2VDb2xsZWN0aW9uLmg6CisgICAgICAgIChKU0M6
OkIzOjpTcGFyc2VDb2xsZWN0aW9uOjpjbGVhckFsbCk6CisgICAgICAgIChKU0M6OkIzOjpTcGFy
c2VDb2xsZWN0aW9uOjpmaWx0ZXJBbmRUcmFuc2Zlcik6CisgICAgICAgICogYjMvYWlyL0FpckNv
ZGUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpDb2RlOjpDb2RlKToKKyAgICAgICAgKiBi
My9haXIvQWlyQ29kZS5oOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpDb2RlOjpzaG91bGRQcmVz
ZXJ2ZUIzT3JpZ2lucyBjb25zdCk6CisgICAgICAgICogYjMvYWlyL0FpckdlbmVyYXRlLmNwcDoK
KyAgICAgICAgKEpTQzo6QjM6OkFpcjo6Z2VuZXJhdGVXaXRoQWxyZWFkeUFsbG9jYXRlZFJlZ2lz
dGVycyk6CisgICAgICAgICogZnRsL0ZUTENvbXBpbGUuY3BwOgorICAgICAgICAoSlNDOjpGVEw6
OmNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkZU
TDo6U3RhdGU6OlN0YXRlKToKKwogMjAyMS0wNi0wMiAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWls
bGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBDb252ZXJ0IHNtYWxsIEpJVCBwb29sIHRlc3RzIGlu
dG8gZXhlY3V0YWJsZSBmdXp6aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNHZW5lcmF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNHZW5lcmF0ZS5j
cHAKaW5kZXggZDlmNjFjOTk2NGU2Li5jZDQ0YTI5MTU3NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0dlbmVyYXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNHZW5lcmF0ZS5jcHAKQEAgLTEzMyw2ICsxMzMsNyBAQCB2b2lkIGdlbmVyYXRlVG9B
aXIoUHJvY2VkdXJlJiBwcm9jZWR1cmUpCiAgICAgfQogCiAgICAgbG93ZXJUb0Fpcihwcm9jZWR1
cmUpOworICAgIHByb2NlZHVyZS5mcmVlVW5uZWVkZWRCM1ZhbHVlc0FmdGVyTG93ZXJpbmcoKTsK
IH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNQQ1RvT3JpZ2luTWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNQQ1RvT3JpZ2luTWFwLmgKaW5kZXggNWU2Y2U0NTFkMzk3Li41ZDUxNjQ3NTUyYjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1BDVG9PcmlnaW5NYXAuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQQ1RvT3JpZ2luTWFwLmgKQEAgLTYxLDcgKzYxLDcg
QEAgcHVibGljOgogICAgIGNvbnN0IFZlY3RvcjxPcmlnaW5SYW5nZT4mIHJhbmdlcygpIGNvbnN0
ICB7IHJldHVybiBtX3JhbmdlczsgfQogCiBwcml2YXRlOgotICAgIFZlY3RvcjxPcmlnaW5SYW5n
ZT4gbV9yYW5nZXM7CisgICAgVmVjdG9yPE9yaWdpblJhbmdlLCAwPiBtX3JhbmdlczsKIH07CiAK
IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzUHJvY2VkdXJlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2Nl
ZHVyZS5jcHAKaW5kZXggYTUyYzBmN2ZhZTExLi4wMDIzM2RmOWY3ZGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTUtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQzOSw2ICs0MzksNTEgQEAgdm9pZCBQ
cm9jZWR1cmU6OnNldE51bUVudHJ5cG9pbnRzKHVuc2lnbmVkIG51bUVudHJ5cG9pbnRzKQogICAg
IG1fY29kZS0+c2V0TnVtRW50cnlwb2ludHMobnVtRW50cnlwb2ludHMpOwogfQogCit2b2lkIFBy
b2NlZHVyZTo6ZnJlZVVubmVlZGVkQjNWYWx1ZXNBZnRlckxvd2VyaW5nKCkKK3sKKyAgICAvLyBX
ZSBjYW5ub3QgY2xlYXIgbV9zdGFja1Nsb3RzKCkgb3IgbV90dXBsZXMgaGVyZSwgYXMgdGhleSBh
cmUgdW5mb3J0dW5hdGVseSBtb2RpZmllZCBhbmQgcmVhZCByZXNwZWN0aXZlbHkgYnkgQWlyLgor
ICAgIG1fdmFyaWFibGVzLmNsZWFyQWxsKCk7CisgICAgbV9ibG9ja3MuY2xlYXIoKTsKKyAgICBt
X2NmZyA9IG51bGxwdHI7CisgICAgbV9kb21pbmF0b3JzID0gbnVsbHB0cjsKKyAgICBtX25hdHVy
YWxMb29wcyA9IG51bGxwdHI7CisgICAgbV9iYWNrd2FyZHNDRkcgPSBudWxscHRyOworICAgIG1f
YmFja3dhcmRzRG9taW5hdG9ycyA9IG51bGxwdHI7CisgICAgbV9mYXN0Q29uc3RhbnRzLmNsZWFy
KCk7CisKKyAgICBpZiAobV9jb2RlLT5zaG91bGRQcmVzZXJ2ZUIzT3JpZ2lucygpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBCaXRWZWN0b3IgdmFsdWVzVG9QcmVzZXJ2ZTsKKyAgICB2YWx1ZXNU
b1ByZXNlcnZlLmVuc3VyZVNpemUobV92YWx1ZXMuc2l6ZSgpKTsKKyAgICBmb3IgKFZhbHVlKiB2
YWx1ZSA6IG1fdmFsdWVzKSB7CisgICAgICAgIHN3aXRjaCAodmFsdWUtPm9wY29kZSgpKSB7Cisg
ICAgICAgIC8vIElkZWFsbHkgd2Ugd291bGQgYWxzbyBiZSBhYmxlIHRvIGdldCByaWQgb2YgYWxs
IG9mIHRob3NlLgorICAgICAgICAvLyBCdXQgQWlyIGN1cnJlbnRseSByZWxpZXMgb24gdGhlc2Ug
b3JpZ2lucyBiZWluZyBwcmVzZXJ2ZWQsIHNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTk0MDQwCisgICAgICAgIGNhc2UgV2FzbUJvdW5kc0NoZWNrOgorICAgICAg
ICAgICAgdmFsdWVzVG9QcmVzZXJ2ZS5xdWlja1NldCh2YWx1ZS0+aW5kZXgoKSk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDQ2FsbDoKKyAgICAgICAgY2FzZSBQYXRjaHBvaW50
OgorICAgICAgICBjYXNlIENoZWNrQWRkOgorICAgICAgICBjYXNlIENoZWNrU3ViOgorICAgICAg
ICBjYXNlIENoZWNrTXVsOgorICAgICAgICBjYXNlIENoZWNrOgorICAgICAgICAgICAgdmFsdWVz
VG9QcmVzZXJ2ZS5xdWlja1NldCh2YWx1ZS0+aW5kZXgoKSk7CisgICAgICAgICAgICBmb3IgKFZh
bHVlKiBjaGlsZCA6IHZhbHVlLT5jaGlsZHJlbigpKQorICAgICAgICAgICAgICAgIHZhbHVlc1Rv
UHJlc2VydmUucXVpY2tTZXQoY2hpbGQtPmluZGV4KCkpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAg
ICBmb3IgKFZhbHVlKiB2YWx1ZSA6IG1fdmFsdWVzKSB7CisgICAgICAgIGlmICghdmFsdWVzVG9Q
cmVzZXJ2ZS5xdWlja0dldCh2YWx1ZS0+aW5kZXgoKSkpCisgICAgICAgICAgICBtX3ZhbHVlcy5y
ZW1vdmUodmFsdWUpOworICAgIH0KKyAgICBtX3ZhbHVlcy5wYWNrSW5kaWNlcygpOworfQorCiB9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKIAogI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5oCmluZGV4IDA2ZmY2ZjVmYTEzZS4uZTQ0YzI2
MzYwMTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuaApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1OSw3
ICsyNTksMTEgQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZ2lzdGVyQXRPZmZz
ZXRMaXN0IGNhbGxlZVNhdmVSZWdpc3RlckF0T2Zmc2V0TGlzdCgpIGNvbnN0OwogCiAgICAgUENU
b09yaWdpbk1hcCYgcGNUb09yaWdpbk1hcCgpIHsgcmV0dXJuIG1fcGNUb09yaWdpbk1hcDsgfQot
ICAgIFBDVG9PcmlnaW5NYXAgcmVsZWFzZVBDVG9PcmlnaW5NYXAoKSB7IHJldHVybiBXVEZNb3Zl
KG1fcGNUb09yaWdpbk1hcCk7IH0KKyAgICBQQ1RvT3JpZ2luTWFwIHJlbGVhc2VQQ1RvT3JpZ2lu
TWFwKCkKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG5lZWRzUENUb09yaWdpbk1hcCgp
KTsKKyAgICAgICAgcmV0dXJuIFdURk1vdmUobV9wY1RvT3JpZ2luTWFwKTsKKyAgICB9CiAKICAg
ICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldFdhc21Cb3VuZHNDaGVja0dlbmVyYXRvcihSZWZQ
dHI8V2FzbUJvdW5kc0NoZWNrR2VuZXJhdG9yPik7CiAKQEAgLTI3Miw2ICsyNzYsMTEgQEAgcHVi
bGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZ2lzdGVyU2V0IG11dGFibGVHUFJzKCk7CiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVnaXN0ZXJTZXQgbXV0YWJsZUZQUnMoKTsKIAorICAgIHZv
aWQgc2V0TmVlZHNQQ1RvT3JpZ2luTWFwKCkgeyBtX25lZWRzUENUb09yaWdpbk1hcCA9IHRydWU7
IH0KKyAgICBib29sIG5lZWRzUENUb09yaWdpbk1hcCgpIHsgcmV0dXJuIG1fbmVlZHNQQ1RvT3Jp
Z2luTWFwOyB9CisKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZyZWVVbm5lZWRlZEIzVmFs
dWVzQWZ0ZXJMb3dlcmluZygpOworCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBCbG9ja0lu
c2VydGlvblNldDsKIApAQCAtMjg5LDE2ICsyOTgsMTcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8QmFja3dhcmRzQ0ZHPiBtX2JhY2t3YXJkc0NGRzsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8QmFja3dhcmRzRG9taW5hdG9ycz4gbV9iYWNrd2FyZHNEb21pbmF0b3JzOwogICAgIEhhc2hT
ZXQ8VmFsdWVLZXk+IG1fZmFzdENvbnN0YW50czsKLSAgICB1bnNpZ25lZCBtX251bUVudHJ5cG9p
bnRzIHsgMSB9OwogICAgIGNvbnN0IGNoYXIqIG1fbGFzdFBoYXNlTmFtZTsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8T3BhcXVlQnlwcm9kdWN0cz4gbV9ieXByb2R1Y3RzOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxBaXI6OkNvZGU+IG1fY29kZTsKICAgICBSZWZQdHI8U2hhcmVkVGFzazx2b2lkKFByaW50
U3RyZWFtJiwgT3JpZ2luKT4+IG1fb3JpZ2luUHJpbnRlcjsKICAgICBjb25zdCB2b2lkKiBtX2Zy
b250ZW5kRGF0YTsKICAgICBQQ1RvT3JpZ2luTWFwIG1fcGNUb09yaWdpbk1hcDsKKyAgICB1bnNp
Z25lZCBtX251bUVudHJ5cG9pbnRzIHsgMSB9OwogICAgIHVuc2lnbmVkIG1fb3B0TGV2ZWwgeyBk
ZWZhdWx0T3B0TGV2ZWwoKSB9OwogICAgIGJvb2wgbV9uZWVkc1VzZWRSZWdpc3RlcnMgeyB0cnVl
IH07CiAgICAgYm9vbCBtX2hhc1F1aXJrcyB7IGZhbHNlIH07CisgICAgYm9vbCBtX25lZWRzUENU
b09yaWdpbk1hcCB7IGZhbHNlIH07CiB9OwogICAgIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTcGFyc2VDb2xsZWN0aW9u
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTcGFyc2VDb2xsZWN0aW9uLmgKaW5kZXgg
MDlhMzY0NzUyNTU2Li40OTViOTRkYjljNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1NwYXJzZUNvbGxlY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNTcGFyc2VDb2xsZWN0aW9uLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTExLDYgKzExMSwxMiBAQCBwdWJsaWM6CiAgICAgICAg
IG1fdmVjdG9yLnNocmluayhlbmRJbmRleCk7CiAgICAgfQogCisgICAgdm9pZCBjbGVhckFsbCgp
CisgICAgeworICAgICAgICBtX2luZGV4RnJlZUxpc3QuY2xlYXIoKTsKKyAgICAgICAgbV92ZWN0
b3IuY2xlYXIoKTsKKyAgICB9CisKICAgICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4g
bV92ZWN0b3Iuc2l6ZSgpOyB9CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV92
ZWN0b3IuaXNFbXB0eSgpOyB9CiAgICAgCkBAIC0xNTQsNiArMTYwLDggQEAgcHVibGljOgogICAg
ICAgICB9CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgU3BhcnNlQ29sbGVj
dGlvbjsKKwogICAgICAgICB1bnNpZ25lZCBmaW5kTmV4dCh1bnNpZ25lZCBpbmRleCkKICAgICAg
ICAgewogICAgICAgICAgICAgd2hpbGUgKGluZGV4IDwgbV9jb2xsZWN0aW9uLT5zaXplKCkgJiYg
IW1fY29sbGVjdGlvbi0+YXQoaW5kZXgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJDb2RlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
Q29kZS5jcHAKaW5kZXggYWNjYWUyZGEyOWY5Li41NmFiNGM4Nzg2ZmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ29kZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmNwcApAQCAtNTcsNiArNTcsNyBAQCBzdGF0aWMgdm9p
ZCBkZWZhdWx0UHJvbG9ndWVHZW5lcmF0b3IoQ0NhbGxIZWxwZXJzJiBqaXQsIENvZGUmIGNvZGUp
CiBDb2RlOjpDb2RlKFByb2NlZHVyZSYgcHJvYykKICAgICA6IG1fcHJvYyhwcm9jKQogICAgICwg
bV9jZmcobmV3IENGRygqdGhpcykpCisgICAgLCBtX3ByZXNlcnZlQjNPcmlnaW5zKHByb2MubmVl
ZHNQQ1RvT3JpZ2luTWFwKCkgfHwgT3B0aW9uczo6ZHVtcEFpckdyYXBoQXRFYWNoUGhhc2UoKSB8
fCBPcHRpb25zOjpkdW1wRlRMRGlzYXNzZW1ibHkoKSkKICAgICAsIG1fbGFzdFBoYXNlTmFtZSgi
aW5pdGlhbCIpCiAgICAgLCBtX2RlZmF1bHRQcm9sb2d1ZUdlbmVyYXRvcihjcmVhdGVTaGFyZWRU
YXNrPFByb2xvZ3VlR2VuZXJhdG9yRnVuY3Rpb24+KCZkZWZhdWx0UHJvbG9ndWVHZW5lcmF0b3Ip
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuaAppbmRleCAzZWM3YzU3ZGE2
NDMuLmMzMThlNTM5ZDA1MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJDb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmgK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0zNTYsNiArMzU2LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGVtaXRFcGlsb2d1ZShDQ2Fs
bEhlbHBlcnMmKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxHZW5lcmF0ZUFuZEFsbG9jYXRlUmVn
aXN0ZXJzPiBtX2dlbmVyYXRlQW5kQWxsb2NhdGVSZWdpc3RlcnM7CisKKyAgICBib29sIHNob3Vs
ZFByZXNlcnZlQjNPcmlnaW5zKCkgY29uc3QgeyByZXR1cm4gbV9wcmVzZXJ2ZUIzT3JpZ2luczsg
fQorCisgICAgdm9pZCBmb3JjZVByZXNlcnZhdGlvbk9mQjNPcmlnaW5zKCkgeyBtX3ByZXNlcnZl
QjNPcmlnaW5zID0gdHJ1ZTsgfQogICAgIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgOjpK
U0M6OkIzOjpQcm9jZWR1cmU7CkBAIC0zOTIsNyArMzk2LDkgQEAgcHJpdmF0ZToKICAgICB1bnNp
Z25lZCBtX251bUZQVG1wcyB7IDAgfTsKICAgICB1bnNpZ25lZCBtX2ZyYW1lU2l6ZSB7IDAgfTsK
ICAgICB1bnNpZ25lZCBtX2NhbGxBcmdBcmVhU2l6ZSB7IDAgfTsKKyAgICB1bnNpZ25lZCBtX29w
dExldmVsIHsgZGVmYXVsdE9wdExldmVsKCkgfTsKICAgICBib29sIG1fc3RhY2tJc0FsbG9jYXRl
ZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX3ByZXNlcnZlQjNPcmlnaW5zIHsgdHJ1ZSB9OwogICAg
IFJlZ2lzdGVyQXRPZmZzZXRMaXN0IG1fdW5jb3JyZWN0ZWRDYWxsZWVTYXZlUmVnaXN0ZXJBdE9m
ZnNldExpc3Q7CiAgICAgUmVnaXN0ZXJTZXQgbV9jYWxsZWVTYXZlUmVnaXN0ZXJzOwogICAgIFN0
YWNrU2xvdCogbV9jYWxsZWVTYXZlU3RhY2tTbG90IHsgbnVsbHB0ciB9OwpAQCAtNDAyLDcgKzQw
OCw2IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFdhc21Cb3VuZHNDaGVja0dlbmVyYXRvcj4gbV93
YXNtQm91bmRzQ2hlY2tHZW5lcmF0b3I7CiAgICAgY29uc3QgY2hhciogbV9sYXN0UGhhc2VOYW1l
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxEaXNhc3NlbWJsZXI+IG1fZGlzYXNzZW1ibGVyOwotICAg
IHVuc2lnbmVkIG1fb3B0TGV2ZWwgeyBkZWZhdWx0T3B0TGV2ZWwoKSB9OwogICAgIFJlZjxQcm9s
b2d1ZUdlbmVyYXRvcj4gbV9kZWZhdWx0UHJvbG9ndWVHZW5lcmF0b3I7CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwCmluZGV4IDRmNWM3NDA4MDBi
Zi4uNTdmOTRlYWYwMzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckdlbmVyYXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckdl
bmVyYXRlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTIxNCwxMSArMjE0LDEyIEBAIHN0YXRpYyB2b2lkIGdlbmVyYXRlV2l0
aEFscmVhZHlBbGxvY2F0ZWRSZWdpc3RlcnMoQ29kZSYgY29kZSwgQ0NhbGxIZWxwZXJzJiBqaXQp
CiAKICAgICBQQ1RvT3JpZ2luTWFwJiBwY1RvT3JpZ2luTWFwID0gY29kZS5wcm9jKCkucGNUb09y
aWdpbk1hcCgpOwogICAgIGF1dG8gYWRkSXRlbSA9IFsmXSAoSW5zdCYgaW5zdCkgewotICAgICAg
ICBpZiAoIWluc3Qub3JpZ2luKSB7Ci0gICAgICAgICAgICBwY1RvT3JpZ2luTWFwLmFwcGVuZEl0
ZW0oaml0LmxhYmVsSWdub3JpbmdXYXRjaHBvaW50cygpLCBPcmlnaW4oKSk7CisgICAgICAgIGlm
ICghY29kZS5zaG91bGRQcmVzZXJ2ZUIzT3JpZ2lucygpKQogICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9Ci0gICAgICAgIHBjVG9PcmlnaW5NYXAuYXBwZW5kSXRlbShqaXQubGFiZWxJZ25v
cmluZ1dhdGNocG9pbnRzKCksIGluc3Qub3JpZ2luLT5vcmlnaW4oKSk7CisgICAgICAgIGlmIChp
bnN0Lm9yaWdpbikKKyAgICAgICAgICAgIHBjVG9PcmlnaW5NYXAuYXBwZW5kSXRlbShqaXQubGFi
ZWxJZ25vcmluZ1dhdGNocG9pbnRzKCksIGluc3Qub3JpZ2luLT5vcmlnaW4oKSk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHBjVG9PcmlnaW5NYXAuYXBwZW5kSXRlbShqaXQubGFiZWxJZ25v
cmluZ1dhdGNocG9pbnRzKCksIE9yaWdpbigpKTsKICAgICB9OwogCiAgICAgRGlzYXNzZW1ibGVy
KiBkaXNhc3NlbWJsZXIgPSBjb2RlLmRpc2Fzc2VtYmxlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM182LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My90ZXN0YjNfNi5jcHAKaW5kZXggN2JhMzMzZGMxNDAxLi42ZWM5MzIwN2RlYmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfNi5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL3Rlc3RiM182LmNwcApAQCAtMjc2Nyw2ICsyNzY3LDggQEAgdm9pZCB0
ZXN0VHJhcHBpbmdTdG9yZUVsaW1pbmF0aW9uKCkKICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENv
bnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQ0KSwKICAgICAgICAgcHRyKTsKICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCkpOworICAgIC8vIFdlJ2xs
IGxvb2sgYXQgdGhlIHZhbHVlcyBhZnRlciBjb21waWxpbmcKKyAgICBwcm9jLmNvZGUoKS5mb3Jj
ZVByZXNlcnZhdGlvbk9mQjNPcmlnaW5zKCk7CiAgICAgY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2Mp
OwogICAgIHVuc2lnbmVkIHN0b3JlQ291bnQgPSAwOwogICAgIGZvciAoVmFsdWUqIHZhbHVlIDog
cHJvYy52YWx1ZXMoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExDb21waWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAK
aW5kZXggMDYzZmQ2MDQzYzg4Li5kZWY1YzJlMGI0NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDb21waWxlLmNwcApAQCAtMTUwLDEwICsxNTAsMTEgQEAgdm9pZCBjb21waWxlKFN0
YXRlJiBzdGF0ZSwgU2FmZXBvaW50OjpSZXN1bHQmIHNhZmVwb2ludFJlc3VsdCkKICAgICAgICAg
c3RhdGUuYWxsb2NhdGlvbkZhaWxlZCA9IHRydWU7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0g
ICAgCi0gICAgQjM6OlBDVG9PcmlnaW5NYXAgb3JpZ2luTWFwID0gc3RhdGUucHJvYy0+cmVsZWFz
ZVBDVG9PcmlnaW5NYXAoKTsKLSAgICBpZiAodm0uc2hvdWxkQnVpbGRlclBDVG9Db2RlT3JpZ2lu
TWFwcGluZygpKQorCisgICAgaWYgKHZtLnNob3VsZEJ1aWxkZXJQQ1RvQ29kZU9yaWdpbk1hcHBp
bmcoKSkgeworICAgICAgICBCMzo6UENUb09yaWdpbk1hcCBvcmlnaW5NYXAgPSBzdGF0ZS5wcm9j
LT5yZWxlYXNlUENUb09yaWdpbk1hcCgpOwogICAgICAgICBjb2RlQmxvY2stPnNldFBDVG9Db2Rl
T3JpZ2luTWFwKG1ha2VVbmlxdWU8UENUb0NvZGVPcmlnaW5NYXA+KFBDVG9Db2RlT3JpZ2luTWFw
QnVpbGRlcih2bSwgV1RGTW92ZShvcmlnaW5NYXApKSwgKnN0YXRlLmZpbmFsaXplci0+YjNDb2Rl
TGlua0J1ZmZlcikpOworICAgIH0KIAogICAgIENvZGVMb2NhdGlvbkxhYmVsPEpTRW50cnlQdHJU
YWc+IGxhYmVsID0gc3RhdGUuZmluYWxpemVyLT5iM0NvZGVMaW5rQnVmZmVyLT5sb2NhdGlvbk9m
PEpTRW50cnlQdHJUYWc+KHN0YXRlLnByb2MtPmNvZGUoKS5lbnRyeXBvaW50TGFiZWwoMCkpOwog
ICAgIHN0YXRlLmdlbmVyYXRlZEZ1bmN0aW9uID0gbGFiZWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMU3RhdGUuY3BwCmluZGV4IDAxYmRlZWM5ZmQzNy4uNDUxZDU4YWRlMDBjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmNwcApAQCAtNjMsNiArNjMsOSBAQCBTdGF0ZTo6
U3RhdGUoR3JhcGgmIGdyYXBoKQogCiAgICAgcHJvYyA9IG1ha2VVbmlxdWU8UHJvY2VkdXJlPigp
OwogCisgICAgaWYgKGdyYXBoLm1fdm0uc2hvdWxkQnVpbGRlclBDVG9Db2RlT3JpZ2luTWFwcGlu
ZygpKQorICAgICAgICBwcm9jLT5zZXROZWVkc1BDVG9PcmlnaW5NYXAoKTsKKwogICAgIHByb2Mt
PnNldE9yaWdpblByaW50ZXIoCiAgICAgICAgIFtdIChQcmludFN0cmVhbSYgb3V0LCBCMzo6T3Jp
Z2luIG9yaWdpbikgewogICAgICAgICAgICAgb3V0LnByaW50KGJpdHdpc2VfY2FzdDxOb2RlKj4o
b3JpZ2luLmRhdGEoKSkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430894</attachid>
            <date>2021-06-08 14:51:02 -0700</date>
            <delta_ts>2021-06-12 10:17:35 -0700</delta_ts>
            <desc>Patch for re-landing</desc>
            <filename>patch226187</filename>
            <type>text/plain</type>
            <size>15263</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDRhZGIwYzhhMmUyZC4uNWNlNGRiNmI1Mjg0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MiBAQAorMjAyMS0wNi0wOCAgUm9i
aW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgorCisgICAgICAgIFdlIHNob3VsZCBk
cm9wIEIzIHZhbHVlcyB3aGlsZSBydW5uaW5nIEFpcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MTg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2Fh
bSBCYXJhdGkuCisKKyAgICAgICAgTkI6IHRoaXMgcGF0Y2ggZmlyc3QgbGFuZGVkIGFzIHIyNzgz
NzEsIHRoZW4gd2FzIHJldmVydGVkIGluIHIyNzg1ODcgYXMgaXQgYnJva2UgLS1kdW1wRGlzYXNz
ZW1ibHkoKS4KKyAgICAgICAgSSBmaXhlZCB0aGUgYnVnIChhIG1pc3NpbmcgbGluZSBzZXREaXNh
c3NlbWJsZXIoKSkgYW5kIGFtIG5vdyByZS1sYW5kaW5nIGl0LiBCZWxvdyBpcyBhIGNvcHkgb2Yg
dGhlIG9yaWdpbmFsIENoYW5nZWxvZy4KKworICAgICAgICBXZSBtdXN0IGtlZXAgdGhlIGZvbGxv
d2luZyB2YWx1ZXM6CisgICAgICAgIC0gV2FzbUJvdW5kc0NoZWNrLCB0byBrbm93IHdoZXRoZXIg
aXQgaXMgUGlubmVkIG9yIE1heGltdW0sIGFuZCBpZiBpdCBpcyBwaW5uZWQgZmluZCBpdHMgYXJn
dW1lbnQuCisgICAgICAgIC0gQ0NhbGwvUGF0Y2gvQ2hlY2svQ2hlY2tBZGQvQ2hlY2tTdWIvQ2hl
Y2tNdWwgYW5kIGFsbCBvZiB0aGVpciBjaGlsZHJlbiwgYmVjYXVzZSBhbGwgb2YgdGhlc2UgYXJl
IGxvd2VyZWQgdG8gQWlyOjpQYXRjaHBvaW50LCB3aGljaCBuZWVkcyB0byBrbm93IHRoZSB0eXBl
IG9mIGl0cyBhcmd1bWVudHMsIGFuZCBkb2VzIHNvIGJ5IGxvb2tpbmcgYXQgdGhlIGNoaWxkcmVu
IG9mIGl0cyAgICAgICAgb3JpZ2luLgorICAgICAgICBJIGludGVuZCB0byBmaXggdGhlc2UgaW4g
bGF0ZXIgcGF0Y2hlcyBpZiBwb3NzaWJsZS4KKworICAgICAgICBGaW5hbGx5IHdlIG11c3QgcHJl
c2VydmUgYWxsIEIzIHZhbHVlcyBpbiB0aGUgZm9sbG93aW5nIGNhc2VzOgorICAgICAgICAtIGlm
IHdlIGR1bXAgdGhlIGRpc2Fzc2VtYmx5IG9yIHRoZSBBaXIgZ3JhcGg6IGJlY2F1c2Ugb3RoZXJ3
aXNlIHdlIGNhbm5vdCBwcmludCB0aGUgb3JpZ2lucworICAgICAgICAtIGlmIHdlIGFyZSB1c2lu
ZyB0aGUgc2FtcGxpbmcgcHJvZmlsZXIsIGJlY2F1c2UgaXQgcmVsaWVzIG9uIFBDVG9Db2RlT3Jp
Z2luTWFwIHdoaWNoIHdlIGNhbm5vdCBhY2N1cmF0ZWx5IGZpbGwgd2l0aG91dCB0aGVzZSBvcmln
aW5zLgorCisgICAgICAgIFdlIG11c3QgYWxzbyBrZWVwIG1fdHVwbGVzIGFsaXZlLCBhcyBpdCBp
cyB1c2VkIGJ5IFBhdGNocG9pbnRzIGluIEFpciB0byB1bmRlcnN0YW5kIHRoZSB0eXBlcyBvZiB0
aGVpciBhcmd1bWVudHMuCisgICAgICAgIFdlIGFsc28gZG9uJ3QgdG91Y2ggU3RhY2tTbG90cyAo
aW4gdGhpcyBwYXRjaCksIGJlY2F1c2Ugb25lIG9mIHRoZW0gaXMgY2FwdHVyZWQgYnkgRlRMOjpT
dGF0ZS4KKworICAgICAgICBBbHNvIG5vdyBQQ1RvT3JpZ2luTWFwIGhhcyBhIFZlY3RvciB3aXRo
IG5vIGlubGluZSBjYXBhY2l0eSwgc2luY2UgaXQgaXMgZWl0aGVyIHF1aXRlIGxhcmdlIChpZiBu
ZWVkZWQpIG9yIGVtcHR5IChvdGhlcndpc2UpLgorCisgICAgICAgIFRoZSBwZXJmb3JtYW5jZSBp
bXBhY3Qgb2YgdGhpcyBpcyBhIHByb2dyZXNzaW9uIG9uIHZhcmlvdXMgUkFNaWZpY2F0aW9uIHN1
YnRlc3RzIG9uIE1hYywgYnV0IGlzIG1vcmUgbWl0aWdhdGVkIG9uIGlQaG9uZTcsIHdpdGggdmFy
aW91cyByZWdyZXNzaW9ucy4KKyAgICAgICAgSSBzdXNwZWN0IHRoZXNlIHRvIGJlIG5vaXNlLCBh
bmQgd2lsbCBtb25pdG9yIHRoZSBwZXJmb3JtYW5jZSBib3RzIHBvc3QtbGFuZGluZyB0byBtYWtl
IHN1cmUgb2YgaXQuCisKKyAgICAgICAgKiBiMy9CM0xvd2VyVG9BaXIuY3BwOgorICAgICAgICAo
SlNDOjpCMzo6bG93ZXJUb0Fpcik6CisgICAgICAgICogYjMvQjNQcm9jZWR1cmUuY3BwOgorICAg
ICAgICAoSlNDOjpCMzo6UHJvY2VkdXJlOjpmcmVlVW5uZWVkZWRCM1ZhbHVlc0FmdGVyTG93ZXJp
bmcpOgorICAgICAgICAqIGIzL0IzUHJvY2VkdXJlLmg6CisgICAgICAgIChKU0M6OkIzOjpQcm9j
ZWR1cmU6OnJlbGVhc2VQQ1RvT3JpZ2luTWFwKToKKyAgICAgICAgKEpTQzo6QjM6OlByb2NlZHVy
ZTo6c2V0TmVlZHNQQ1RvT3JpZ2luTWFwKToKKyAgICAgICAgKEpTQzo6QjM6OlByb2NlZHVyZTo6
bmVlZHNQQ1RvT3JpZ2luTWFwKToKKyAgICAgICAgKiBiMy9CM1NwYXJzZUNvbGxlY3Rpb24uaDoK
KyAgICAgICAgKEpTQzo6QjM6OlNwYXJzZUNvbGxlY3Rpb246OmNsZWFyQWxsKToKKyAgICAgICAg
KEpTQzo6QjM6OlNwYXJzZUNvbGxlY3Rpb246OmZpbHRlckFuZFRyYW5zZmVyKToKKyAgICAgICAg
KiBiMy9haXIvQWlyQ29kZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkNvZGU6OkNvZGUp
OgorICAgICAgICAqIGIzL2Fpci9BaXJDb2RlLmg6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkNv
ZGU6OnNob3VsZFByZXNlcnZlQjNPcmlnaW5zIGNvbnN0KToKKyAgICAgICAgKiBiMy9haXIvQWly
R2VuZXJhdGUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpnZW5lcmF0ZVdpdGhBbHJlYWR5
QWxsb2NhdGVkUmVnaXN0ZXJzKToKKyAgICAgICAgKiBmdGwvRlRMQ29tcGlsZS5jcHA6CisgICAg
ICAgIChKU0M6OkZUTDo6Y29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTFN0YXRlLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpTdGF0ZTo6U3RhdGUpOgorCiAyMDIxLTA2LTA2ICBZdXN1a2UgU3V6
dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gVXNlIFJlc29sdmVkQ2xv
c3VyZVZhciB0byBnZXQgYnJhbmQgZnJvbSBzY29wZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzR2VuZXJhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
R2VuZXJhdGUuY3BwCmluZGV4IGQ5ZjYxYzk5NjRlNi4uY2Q0NGEyOTE1Nzc3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNHZW5lcmF0ZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJhdGUuY3BwCkBAIC0xMzMsNiArMTMzLDcgQEAgdm9pZCBn
ZW5lcmF0ZVRvQWlyKFByb2NlZHVyZSYgcHJvY2VkdXJlKQogICAgIH0KIAogICAgIGxvd2VyVG9B
aXIocHJvY2VkdXJlKTsKKyAgICBwcm9jZWR1cmUuZnJlZVVubmVlZGVkQjNWYWx1ZXNBZnRlckxv
d2VyaW5nKCk7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUENUb09yaWdpbk1hcC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzUENUb09yaWdpbk1hcC5oCmluZGV4IDVlNmNlNDUxZDM5Ny4uNWQ1MTY0NzU1
MmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQQ1RvT3JpZ2luTWFw
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUENUb09yaWdpbk1hcC5oCkBAIC02
MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBWZWN0b3I8T3JpZ2luUmFuZ2U+JiByYW5n
ZXMoKSBjb25zdCAgeyByZXR1cm4gbV9yYW5nZXM7IH0KIAogcHJpdmF0ZToKLSAgICBWZWN0b3I8
T3JpZ2luUmFuZ2U+IG1fcmFuZ2VzOworICAgIFZlY3RvcjxPcmlnaW5SYW5nZSwgMD4gbV9yYW5n
ZXM7CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNQcm9jZWR1cmUuY3BwCmluZGV4IDg2MGU3YTFhZTNjNi4uNzc0NGE2MWUyOTdlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MzQsNiArNDM0LDUx
IEBAIHZvaWQgUHJvY2VkdXJlOjpzZXROdW1FbnRyeXBvaW50cyh1bnNpZ25lZCBudW1FbnRyeXBv
aW50cykKICAgICBtX2NvZGUtPnNldE51bUVudHJ5cG9pbnRzKG51bUVudHJ5cG9pbnRzKTsKIH0K
IAordm9pZCBQcm9jZWR1cmU6OmZyZWVVbm5lZWRlZEIzVmFsdWVzQWZ0ZXJMb3dlcmluZygpCit7
CisgICAgLy8gV2UgY2Fubm90IGNsZWFyIG1fc3RhY2tTbG90cygpIG9yIG1fdHVwbGVzIGhlcmUs
IGFzIHRoZXkgYXJlIHVuZm9ydHVuYXRlbHkgbW9kaWZpZWQgYW5kIHJlYWQgcmVzcGVjdGl2ZWx5
IGJ5IEFpci4KKyAgICBtX3ZhcmlhYmxlcy5jbGVhckFsbCgpOworICAgIG1fYmxvY2tzLmNsZWFy
KCk7CisgICAgbV9jZmcgPSBudWxscHRyOworICAgIG1fZG9taW5hdG9ycyA9IG51bGxwdHI7Cisg
ICAgbV9uYXR1cmFsTG9vcHMgPSBudWxscHRyOworICAgIG1fYmFja3dhcmRzQ0ZHID0gbnVsbHB0
cjsKKyAgICBtX2JhY2t3YXJkc0RvbWluYXRvcnMgPSBudWxscHRyOworICAgIG1fZmFzdENvbnN0
YW50cy5jbGVhcigpOworCisgICAgaWYgKG1fY29kZS0+c2hvdWxkUHJlc2VydmVCM09yaWdpbnMo
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQml0VmVjdG9yIHZhbHVlc1RvUHJlc2VydmU7Cisg
ICAgdmFsdWVzVG9QcmVzZXJ2ZS5lbnN1cmVTaXplKG1fdmFsdWVzLnNpemUoKSk7CisgICAgZm9y
IChWYWx1ZSogdmFsdWUgOiBtX3ZhbHVlcykgeworICAgICAgICBzd2l0Y2ggKHZhbHVlLT5vcGNv
ZGUoKSkgeworICAgICAgICAvLyBJZGVhbGx5IHdlIHdvdWxkIGFsc28gYmUgYWJsZSB0byBnZXQg
cmlkIG9mIGFsbCBvZiB0aG9zZS4KKyAgICAgICAgLy8gQnV0IEFpciBjdXJyZW50bHkgcmVsaWVz
IG9uIHRoZXNlIG9yaWdpbnMgYmVpbmcgcHJlc2VydmVkLCBzZWUgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDA0MAorICAgICAgICBjYXNlIFdhc21Cb3VuZHNDaGVj
azoKKyAgICAgICAgICAgIHZhbHVlc1RvUHJlc2VydmUucXVpY2tTZXQodmFsdWUtPmluZGV4KCkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ0NhbGw6CisgICAgICAgIGNhc2Ug
UGF0Y2hwb2ludDoKKyAgICAgICAgY2FzZSBDaGVja0FkZDoKKyAgICAgICAgY2FzZSBDaGVja1N1
YjoKKyAgICAgICAgY2FzZSBDaGVja011bDoKKyAgICAgICAgY2FzZSBDaGVjazoKKyAgICAgICAg
ICAgIHZhbHVlc1RvUHJlc2VydmUucXVpY2tTZXQodmFsdWUtPmluZGV4KCkpOworICAgICAgICAg
ICAgZm9yIChWYWx1ZSogY2hpbGQgOiB2YWx1ZS0+Y2hpbGRyZW4oKSkKKyAgICAgICAgICAgICAg
ICB2YWx1ZXNUb1ByZXNlcnZlLnF1aWNrU2V0KGNoaWxkLT5pbmRleCgpKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KyAgICB9CisgICAgZm9yIChWYWx1ZSogdmFsdWUgOiBtX3ZhbHVlcykgeworICAgICAgICBpZiAo
IXZhbHVlc1RvUHJlc2VydmUucXVpY2tHZXQodmFsdWUtPmluZGV4KCkpKQorICAgICAgICAgICAg
bV92YWx1ZXMucmVtb3ZlKHZhbHVlKTsKKyAgICB9CisgICAgbV92YWx1ZXMucGFja0luZGljZXMo
KTsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCiAKICNlbmRpZiAvLyBFTkFCTEUoQjNf
SklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuaAppbmRleCA3YzkzOTNjNjJh
NmUuLjg3ODFjMGRlZGFjZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
UHJvY2VkdXJlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmgK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yNTgsNyArMjU4LDExIEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBSZWdp
c3RlckF0T2Zmc2V0TGlzdCBjYWxsZWVTYXZlUmVnaXN0ZXJBdE9mZnNldExpc3QoKSBjb25zdDsK
IAogICAgIFBDVG9PcmlnaW5NYXAmIHBjVG9PcmlnaW5NYXAoKSB7IHJldHVybiBtX3BjVG9Pcmln
aW5NYXA7IH0KLSAgICBQQ1RvT3JpZ2luTWFwIHJlbGVhc2VQQ1RvT3JpZ2luTWFwKCkgeyByZXR1
cm4gV1RGTW92ZShtX3BjVG9PcmlnaW5NYXApOyB9CisgICAgUENUb09yaWdpbk1hcCByZWxlYXNl
UENUb09yaWdpbk1hcCgpCisgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChuZWVkc1BDVG9P
cmlnaW5NYXAoKSk7CisgICAgICAgIHJldHVybiBXVEZNb3ZlKG1fcGNUb09yaWdpbk1hcCk7Cisg
ICAgfQogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRXYXNtQm91bmRzQ2hlY2tHZW5l
cmF0b3IoUmVmUHRyPFdhc21Cb3VuZHNDaGVja0dlbmVyYXRvcj4pOwogCkBAIC0yNzEsNiArMjc1
LDExIEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBSZWdpc3RlclNldCBtdXRhYmxl
R1BScygpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZ2lzdGVyU2V0IG11dGFibGVGUFJzKCk7
CiAKKyAgICB2b2lkIHNldE5lZWRzUENUb09yaWdpbk1hcCgpIHsgbV9uZWVkc1BDVG9PcmlnaW5N
YXAgPSB0cnVlOyB9CisgICAgYm9vbCBuZWVkc1BDVG9PcmlnaW5NYXAoKSB7IHJldHVybiBtX25l
ZWRzUENUb09yaWdpbk1hcDsgfQorCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmcmVlVW5u
ZWVkZWRCM1ZhbHVlc0FmdGVyTG93ZXJpbmcoKTsKKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xh
c3MgQmxvY2tJbnNlcnRpb25TZXQ7CiAKQEAgLTI4NywxNiArMjk2LDE3IEBAIHByaXZhdGU6CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPEJhY2t3YXJkc0NGRz4gbV9iYWNrd2FyZHNDRkc7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEJhY2t3YXJkc0RvbWluYXRvcnM+IG1fYmFja3dhcmRzRG9taW5hdG9yczsK
ICAgICBIYXNoU2V0PFZhbHVlS2V5PiBtX2Zhc3RDb25zdGFudHM7Ci0gICAgdW5zaWduZWQgbV9u
dW1FbnRyeXBvaW50cyB7IDEgfTsKICAgICBjb25zdCBjaGFyKiBtX2xhc3RQaGFzZU5hbWU7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPE9wYXF1ZUJ5cHJvZHVjdHM+IG1fYnlwcm9kdWN0czsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8QWlyOjpDb2RlPiBtX2NvZGU7CiAgICAgUmVmUHRyPFNoYXJlZFRhc2s8
dm9pZChQcmludFN0cmVhbSYsIE9yaWdpbik+PiBtX29yaWdpblByaW50ZXI7CiAgICAgY29uc3Qg
dm9pZCogbV9mcm9udGVuZERhdGE7CiAgICAgUENUb09yaWdpbk1hcCBtX3BjVG9PcmlnaW5NYXA7
CisgICAgdW5zaWduZWQgbV9udW1FbnRyeXBvaW50cyB7IDEgfTsKICAgICB1bnNpZ25lZCBtX29w
dExldmVsIHsgZGVmYXVsdE9wdExldmVsKCkgfTsKICAgICBib29sIG1fbmVlZHNVc2VkUmVnaXN0
ZXJzIHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9oYXNRdWlya3MgeyBmYWxzZSB9OworICAgIGJvb2wg
bV9uZWVkc1BDVG9PcmlnaW5NYXAgeyBmYWxzZSB9OwogfTsKICAgICAKIH0gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpCMwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3BhcnNl
Q29sbGVjdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3BhcnNlQ29sbGVjdGlv
bi5oCmluZGV4IDA5YTM2NDc1MjU1Ni4uNDk1Yjk0ZGI5YzU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNTcGFyc2VDb2xsZWN0aW9uLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzU3BhcnNlQ29sbGVjdGlvbi5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTExMSw2ICsxMTEsMTIgQEAgcHVibGlj
OgogICAgICAgICBtX3ZlY3Rvci5zaHJpbmsoZW5kSW5kZXgpOwogICAgIH0KIAorICAgIHZvaWQg
Y2xlYXJBbGwoKQorICAgIHsKKyAgICAgICAgbV9pbmRleEZyZWVMaXN0LmNsZWFyKCk7CisgICAg
ICAgIG1fdmVjdG9yLmNsZWFyKCk7CisgICAgfQorCiAgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdmVjdG9yLnNpemUoKTsgfQogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsg
cmV0dXJuIG1fdmVjdG9yLmlzRW1wdHkoKTsgfQogICAgIApAQCAtMTU0LDYgKzE2MCw4IEBAIHB1
YmxpYzoKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIFNw
YXJzZUNvbGxlY3Rpb247CisKICAgICAgICAgdW5zaWduZWQgZmluZE5leHQodW5zaWduZWQgaW5k
ZXgpCiAgICAgICAgIHsKICAgICAgICAgICAgIHdoaWxlIChpbmRleCA8IG1fY29sbGVjdGlvbi0+
c2l6ZSgpICYmICFtX2NvbGxlY3Rpb24tPmF0KGluZGV4KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ29kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpckNvZGUuY3BwCmluZGV4IGJkZTFiZjAyYTBjNS4uMTg4NTc4ZDQ4M2FhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ29kZS5jcHAKQEAgLTU2LDYgKzU2LDcgQEAg
c3RhdGljIHZvaWQgZGVmYXVsdFByb2xvZ3VlR2VuZXJhdG9yKENDYWxsSGVscGVycyYgaml0LCBD
b2RlJiBjb2RlKQogQ29kZTo6Q29kZShQcm9jZWR1cmUmIHByb2MpCiAgICAgOiBtX3Byb2MocHJv
YykKICAgICAsIG1fY2ZnKG5ldyBDRkcoKnRoaXMpKQorICAgICwgbV9wcmVzZXJ2ZUIzT3JpZ2lu
cyhwcm9jLm5lZWRzUENUb09yaWdpbk1hcCgpIHx8IE9wdGlvbnM6OmR1bXBBaXJHcmFwaEF0RWFj
aFBoYXNlKCkgfHwgT3B0aW9uczo6ZHVtcEZUTERpc2Fzc2VtYmx5KCkpCiAgICAgLCBtX2xhc3RQ
aGFzZU5hbWUoImluaXRpYWwiKQogICAgICwgbV9kZWZhdWx0UHJvbG9ndWVHZW5lcmF0b3IoY3Jl
YXRlU2hhcmVkVGFzazxQcm9sb2d1ZUdlbmVyYXRvckZ1bmN0aW9uPigmZGVmYXVsdFByb2xvZ3Vl
R2VuZXJhdG9yKSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyQ29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmgKaW5kZXgg
NDg2ZWQwNjMyMmEwLi41NjNjNzU4NjhhYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlyQ29kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyQ29kZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMzQxLDcgKzM0MSwxNCBAQCBwdWJsaWM6CiAgICAgLy8gaXQncyBtYWlu
bHkgZm9yIHZhbGlkYXRpbmcgdGhlIHJlc3VsdHMgZnJvbSBKU0Fpci4KICAgICB1bnNpZ25lZCBq
c0hhc2goKSBjb25zdDsKIAotICAgIHZvaWQgc2V0RGlzYXNzZW1ibGVyKHN0ZDo6dW5pcXVlX3B0
cjxEaXNhc3NlbWJsZXI+JiYgZGlzYXNzZW1ibGVyKSB7IG1fZGlzYXNzZW1ibGVyID0gV1RGTW92
ZShkaXNhc3NlbWJsZXIpOyB9CisgICAgYm9vbCBzaG91bGRQcmVzZXJ2ZUIzT3JpZ2lucygpIGNv
bnN0IHsgcmV0dXJuIG1fcHJlc2VydmVCM09yaWdpbnM7IH0KKyAgICB2b2lkIGZvcmNlUHJlc2Vy
dmF0aW9uT2ZCM09yaWdpbnMoKSB7IG1fcHJlc2VydmVCM09yaWdpbnMgPSB0cnVlOyB9CisKKyAg
ICB2b2lkIHNldERpc2Fzc2VtYmxlcihzdGQ6OnVuaXF1ZV9wdHI8RGlzYXNzZW1ibGVyPiYmIGRp
c2Fzc2VtYmxlcikKKyAgICB7CisgICAgICAgIG1fZGlzYXNzZW1ibGVyID0gV1RGTW92ZShkaXNh
c3NlbWJsZXIpOworICAgICAgICBmb3JjZVByZXNlcnZhdGlvbk9mQjNPcmlnaW5zKCk7CisgICAg
fQogICAgIERpc2Fzc2VtYmxlciogZGlzYXNzZW1ibGVyKCkgeyByZXR1cm4gbV9kaXNhc3NlbWJs
ZXIuZ2V0KCk7IH0KIAogICAgIFJlZ2lzdGVyU2V0IG11dGFibGVHUFJzKCk7CkBAIC0zOTAsNyAr
Mzk3LDkgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX251bUZQVG1wcyB7IDAgfTsKICAgICB1
bnNpZ25lZCBtX2ZyYW1lU2l6ZSB7IDAgfTsKICAgICB1bnNpZ25lZCBtX2NhbGxBcmdBcmVhU2l6
ZSB7IDAgfTsKKyAgICB1bnNpZ25lZCBtX29wdExldmVsIHsgZGVmYXVsdE9wdExldmVsKCkgfTsK
ICAgICBib29sIG1fc3RhY2tJc0FsbG9jYXRlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX3ByZXNl
cnZlQjNPcmlnaW5zIHsgdHJ1ZSB9OwogICAgIFJlZ2lzdGVyQXRPZmZzZXRMaXN0IG1fdW5jb3Jy
ZWN0ZWRDYWxsZWVTYXZlUmVnaXN0ZXJBdE9mZnNldExpc3Q7CiAgICAgUmVnaXN0ZXJTZXQgbV9j
YWxsZWVTYXZlUmVnaXN0ZXJzOwogICAgIFN0YWNrU2xvdCogbV9jYWxsZWVTYXZlU3RhY2tTbG90
IHsgbnVsbHB0ciB9OwpAQCAtNDAwLDcgKzQwOSw2IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFdh
c21Cb3VuZHNDaGVja0dlbmVyYXRvcj4gbV93YXNtQm91bmRzQ2hlY2tHZW5lcmF0b3I7CiAgICAg
Y29uc3QgY2hhciogbV9sYXN0UGhhc2VOYW1lOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxEaXNhc3Nl
bWJsZXI+IG1fZGlzYXNzZW1ibGVyOwotICAgIHVuc2lnbmVkIG1fb3B0TGV2ZWwgeyBkZWZhdWx0
T3B0TGV2ZWwoKSB9OwogICAgIFJlZjxQcm9sb2d1ZUdlbmVyYXRvcj4gbV9kZWZhdWx0UHJvbG9n
dWVHZW5lcmF0b3I7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpckdlbmVyYXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2Vu
ZXJhdGUuY3BwCmluZGV4IDRmNWM3NDA4MDBiZi4uNTdmOTRlYWYwMzQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIxNCwxMSArMjE0LDEy
IEBAIHN0YXRpYyB2b2lkIGdlbmVyYXRlV2l0aEFscmVhZHlBbGxvY2F0ZWRSZWdpc3RlcnMoQ29k
ZSYgY29kZSwgQ0NhbGxIZWxwZXJzJiBqaXQpCiAKICAgICBQQ1RvT3JpZ2luTWFwJiBwY1RvT3Jp
Z2luTWFwID0gY29kZS5wcm9jKCkucGNUb09yaWdpbk1hcCgpOwogICAgIGF1dG8gYWRkSXRlbSA9
IFsmXSAoSW5zdCYgaW5zdCkgewotICAgICAgICBpZiAoIWluc3Qub3JpZ2luKSB7Ci0gICAgICAg
ICAgICBwY1RvT3JpZ2luTWFwLmFwcGVuZEl0ZW0oaml0LmxhYmVsSWdub3JpbmdXYXRjaHBvaW50
cygpLCBPcmlnaW4oKSk7CisgICAgICAgIGlmICghY29kZS5zaG91bGRQcmVzZXJ2ZUIzT3JpZ2lu
cygpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIHBjVG9PcmlnaW5N
YXAuYXBwZW5kSXRlbShqaXQubGFiZWxJZ25vcmluZ1dhdGNocG9pbnRzKCksIGluc3Qub3JpZ2lu
LT5vcmlnaW4oKSk7CisgICAgICAgIGlmIChpbnN0Lm9yaWdpbikKKyAgICAgICAgICAgIHBjVG9P
cmlnaW5NYXAuYXBwZW5kSXRlbShqaXQubGFiZWxJZ25vcmluZ1dhdGNocG9pbnRzKCksIGluc3Qu
b3JpZ2luLT5vcmlnaW4oKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHBjVG9PcmlnaW5N
YXAuYXBwZW5kSXRlbShqaXQubGFiZWxJZ25vcmluZ1dhdGNocG9pbnRzKCksIE9yaWdpbigpKTsK
ICAgICB9OwogCiAgICAgRGlzYXNzZW1ibGVyKiBkaXNhc3NlbWJsZXIgPSBjb2RlLmRpc2Fzc2Vt
YmxlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM182LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfNi5jcHAKaW5kZXggN2JhMzMzZGMx
NDAxLi42ZWM5MzIwN2RlYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90
ZXN0YjNfNi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM182LmNwcApA
QCAtMjc2Nyw2ICsyNzY3LDggQEAgdm9pZCB0ZXN0VHJhcHBpbmdTdG9yZUVsaW1pbmF0aW9uKCkK
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQ0
KSwKICAgICAgICAgcHRyKTsKICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVy
biwgT3JpZ2luKCkpOworICAgIC8vIFdlJ2xsIGxvb2sgYXQgdGhlIHZhbHVlcyBhZnRlciBjb21w
aWxpbmcKKyAgICBwcm9jLmNvZGUoKS5mb3JjZVByZXNlcnZhdGlvbk9mQjNPcmlnaW5zKCk7CiAg
ICAgY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MpOwogICAgIHVuc2lnbmVkIHN0b3JlQ291bnQgPSAw
OwogICAgIGZvciAoVmFsdWUqIHZhbHVlIDogcHJvYy52YWx1ZXMoKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKaW5kZXggZDdjMjdjY2VmOTJmLi4yOGY5ODlhZTcy
NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcApAQCAtMTUwLDEw
ICsxNTAsMTEgQEAgdm9pZCBjb21waWxlKFN0YXRlJiBzdGF0ZSwgU2FmZXBvaW50OjpSZXN1bHQm
IHNhZmVwb2ludFJlc3VsdCkKICAgICAgICAgc3RhdGUuYWxsb2NhdGlvbkZhaWxlZCA9IHRydWU7
CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCi0gICAgQjM6OlBDVG9PcmlnaW5NYXAgb3Jp
Z2luTWFwID0gc3RhdGUucHJvYy0+cmVsZWFzZVBDVG9PcmlnaW5NYXAoKTsKLSAgICBpZiAodm0u
c2hvdWxkQnVpbGRlclBDVG9Db2RlT3JpZ2luTWFwcGluZygpKQorCisgICAgaWYgKHZtLnNob3Vs
ZEJ1aWxkZXJQQ1RvQ29kZU9yaWdpbk1hcHBpbmcoKSkgeworICAgICAgICBCMzo6UENUb09yaWdp
bk1hcCBvcmlnaW5NYXAgPSBzdGF0ZS5wcm9jLT5yZWxlYXNlUENUb09yaWdpbk1hcCgpOwogICAg
ICAgICBjb2RlQmxvY2stPnNldFBDVG9Db2RlT3JpZ2luTWFwKG1ha2VVbmlxdWU8UENUb0NvZGVP
cmlnaW5NYXA+KFBDVG9Db2RlT3JpZ2luTWFwQnVpbGRlcih2bSwgV1RGTW92ZShvcmlnaW5NYXAp
KSwgKnN0YXRlLmZpbmFsaXplci0+YjNDb2RlTGlua0J1ZmZlcikpOworICAgIH0KIAogICAgIENv
ZGVMb2NhdGlvbkxhYmVsPEpTRW50cnlQdHJUYWc+IGxhYmVsID0gc3RhdGUuZmluYWxpemVyLT5i
M0NvZGVMaW5rQnVmZmVyLT5sb2NhdGlvbk9mPEpTRW50cnlQdHJUYWc+KHN0YXRlLnByb2MtPmNv
ZGUoKS5lbnRyeXBvaW50TGFiZWwoMCkpOwogICAgIHN0YXRlLmdlbmVyYXRlZEZ1bmN0aW9uID0g
bGFiZWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuY3BwCmluZGV4IDAxYmRlZWM5
ZmQzNy4uNDUxZDU4YWRlMDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmNw
cApAQCAtNjMsNiArNjMsOSBAQCBTdGF0ZTo6U3RhdGUoR3JhcGgmIGdyYXBoKQogCiAgICAgcHJv
YyA9IG1ha2VVbmlxdWU8UHJvY2VkdXJlPigpOwogCisgICAgaWYgKGdyYXBoLm1fdm0uc2hvdWxk
QnVpbGRlclBDVG9Db2RlT3JpZ2luTWFwcGluZygpKQorICAgICAgICBwcm9jLT5zZXROZWVkc1BD
VG9PcmlnaW5NYXAoKTsKKwogICAgIHByb2MtPnNldE9yaWdpblByaW50ZXIoCiAgICAgICAgIFtd
IChQcmludFN0cmVhbSYgb3V0LCBCMzo6T3JpZ2luIG9yaWdpbikgewogICAgICAgICAgICAgb3V0
LnByaW50KGJpdHdpc2VfY2FzdDxOb2RlKj4ob3JpZ2luLmRhdGEoKSkpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>