<?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>177909</bug_id>
          
          <creation_ts>2017-10-04 18:01:48 -0700</creation_ts>
          <short_desc>Make sure all prototypes under poly proto get added into the VM&apos;s prototype map</short_desc>
          <delta_ts>2017-10-21 00:42:49 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>rniwa</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1356764</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-10-04 18:01:48 -0700</bug_when>
    <thetext>... But they should. This is an invariant I broke.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356776</commentid>
    <comment_count>1</comment_count>
      <attachid>322758</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-10-04 18:48:56 -0700</bug_when>
    <thetext>Created attachment 322758
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356787</commentid>
    <comment_count>2</comment_count>
      <attachid>322758</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-10-04 19:10:17 -0700</bug_when>
    <thetext>Comment on attachment 322758
patch

r=me if you fix the build issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356788</commentid>
    <comment_count>3</comment_count>
      <attachid>322758</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-10-04 19:13:13 -0700</bug_when>
    <thetext>Comment on attachment 322758
patch

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

&gt; Source/JavaScriptCore/runtime/CommonSlowPaths.cpp:242
&gt;          size_t inlineCapacity = pc[3].u.operand;

rs=me on adding struct offset names.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356789</commentid>
    <comment_count>4</comment_count>
      <attachid>322765</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-10-04 19:19:50 -0700</bug_when>
    <thetext>Created attachment 322765
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356797</commentid>
    <comment_count>5</comment_count>
      <attachid>322766</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-10-04 19:57:15 -0700</bug_when>
    <thetext>Created attachment 322766
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356892</commentid>
    <comment_count>6</comment_count>
      <attachid>322766</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-05 00:38:04 -0700</bug_when>
    <thetext>Comment on attachment 322766
patch for landing

Clearing flags on attachment: 322766

Committed r222901: &lt;http://trac.webkit.org/changeset/222901&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356893</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-05 00:38:05 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356894</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-10-05 00:39:02 -0700</bug_when>
    <thetext>&lt;rdar://problem/34829138&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1357053</commentid>
    <comment_count>9</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2017-10-05 09:48:30 -0700</bug_when>
    <thetext>(In reply to WebKit Commit Bot from comment #6)
&gt; Comment on attachment 322766 [details]
&gt; patch for landing
&gt; 
&gt; Clearing flags on attachment: 322766
&gt; 
&gt; Committed r222901: &lt;http://trac.webkit.org/changeset/222901&gt;
The following two tests started timing out on Release JSC bots after this change:
microbenchmarks/direct-construct-arity-mismatch.js.ftl-eager
microbenchmarks/direct-construct.js.ftl-eager

https://build.webkit.org/builders/Apple%20High%20Sierra%20Release%20JSC%20%28Tests%29/builds/187</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1357055</commentid>
    <comment_count>10</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-10-05 09:58:15 -0700</bug_when>
    <thetext>(In reply to Ryan Haddad from comment #9)
&gt; (In reply to WebKit Commit Bot from comment #6)
&gt; &gt; Comment on attachment 322766 [details]
&gt; &gt; patch for landing
&gt; &gt; 
&gt; &gt; Clearing flags on attachment: 322766
&gt; &gt; 
&gt; &gt; Committed r222901: &lt;http://trac.webkit.org/changeset/222901&gt;
&gt; The following two tests started timing out on Release JSC bots after this
&gt; change:
&gt; microbenchmarks/direct-construct-arity-mismatch.js.ftl-eager
&gt; microbenchmarks/direct-construct.js.ftl-eager
&gt; 
&gt; https://build.webkit.org/builders/
&gt; Apple%20High%20Sierra%20Release%20JSC%20%28Tests%29/builds/187

Will look into it</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1357094</commentid>
    <comment_count>11</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-10-05 10:57:56 -0700</bug_when>
    <thetext>(In reply to Ryan Haddad from comment #9)
&gt; (In reply to WebKit Commit Bot from comment #6)
&gt; &gt; Comment on attachment 322766 [details]
&gt; &gt; patch for landing
&gt; &gt; 
&gt; &gt; Clearing flags on attachment: 322766
&gt; &gt; 
&gt; &gt; Committed r222901: &lt;http://trac.webkit.org/changeset/222901&gt;
&gt; The following two tests started timing out on Release JSC bots after this
&gt; change:
&gt; microbenchmarks/direct-construct-arity-mismatch.js.ftl-eager
&gt; microbenchmarks/direct-construct.js.ftl-eager
&gt; 
&gt; https://build.webkit.org/builders/
&gt; Apple%20High%20Sierra%20Release%20JSC%20%28Tests%29/builds/187

Will fix this in:
https://bugs.webkit.org/show_bug.cgi?id=177952</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1357934</commentid>
    <comment_count>12</comment_count>
      <attachid>322766</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-10-07 11:45:53 -0700</bug_when>
    <thetext>Comment on attachment 322766
patch for landing

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

&gt; Source/JavaScriptCore/runtime/CommonSlowPaths.cpp:253
&gt; +        if (structure-&gt;hasPolyProto()) {
&gt; +            JSObject* prototype = constructor-&gt;prototypeForConstruction(vm, exec);
&gt; +            result-&gt;putDirect(vm, structure-&gt;polyProtoOffset(), prototype);
&gt; +            vm.prototypeMap.addPrototype(prototype);
&gt; +        }

I don&apos;t think that this was a good idea.

This means that if we&apos;re using poly proto aggressively (like 1:1 mapping of object and prototype), we&apos;ll have this ginormous HashSet of Weak references hanging around.  If we really need every prototype to be tracked, then it seems a lot better to just use a bit in the object header, instead of growing a ginormous HashSet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1357936</commentid>
    <comment_count>13</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-10-07 11:46:59 -0700</bug_when>
    <thetext>(In reply to Filip Pizlo from comment #12)
&gt; Comment on attachment 322766 [details]
&gt; patch for landing
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=322766&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/CommonSlowPaths.cpp:253
&gt; &gt; +        if (structure-&gt;hasPolyProto()) {
&gt; &gt; +            JSObject* prototype = constructor-&gt;prototypeForConstruction(vm, exec);
&gt; &gt; +            result-&gt;putDirect(vm, structure-&gt;polyProtoOffset(), prototype);
&gt; &gt; +            vm.prototypeMap.addPrototype(prototype);
&gt; &gt; +        }
&gt; 
&gt; I don&apos;t think that this was a good idea.
&gt; 
&gt; This means that if we&apos;re using poly proto aggressively (like 1:1 mapping of
&gt; object and prototype), we&apos;ll have this ginormous HashSet of Weak references
&gt; hanging around.  If we really need every prototype to be tracked, then it
&gt; seems a lot better to just use a bit in the object header, instead of
&gt; growing a ginormous HashSet.

Anyway, I&apos;m tracking fixing this in: https://bugs.webkit.org/show_bug.cgi?id=178051</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363002</commentid>
    <comment_count>14</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-10-20 23:30:45 -0700</bug_when>
    <thetext>Looks like this was ~1% regression on Speedometer 2&apos;s react test case?
https://perf.webkit.org/v3/#/charts?since=1505283360823&amp;zoom=(1506767770443.9912-1507709310260.7344)&amp;paneList=((18-966-28983529-null-(5-2.5-500)))&amp;repository=1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363013</commentid>
    <comment_count>15</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-10-21 00:04:55 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #14)
&gt; Looks like this was ~1% regression on Speedometer 2&apos;s react test case?
&gt; https://perf.webkit.org/v3/#/charts?since=1505283360823&amp;zoom=(1506767770443.
&gt; 9912-1507709310260.7344)&amp;paneList=((18-966-28983529-null-(5-2.5-
&gt; 500)))&amp;repository=1

This code is no longer in the tree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363016</commentid>
    <comment_count>16</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-10-21 00:29:40 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #15)
&gt; (In reply to Ryosuke Niwa from comment #14)
&gt; &gt; Looks like this was ~1% regression on Speedometer 2&apos;s react test case?
&gt; &gt; https://perf.webkit.org/v3/#/charts?since=1505283360823&amp;zoom=(1506767770443.
&gt; &gt; 9912-1507709310260.7344)&amp;paneList=((18-966-28983529-null-(5-2.5-
&gt; &gt; 500)))&amp;repository=1
&gt; 
&gt; This code is no longer in the tree.

Hm... it looks like we never recovered from this :( Maybe there are other regressions looming around.

https://perf.webkit.org/v3/#/charts?since=1505283360823&amp;paneList=((18-966-(1506582270543.6445-1508505237448.509)-null-(5-2.5-500)))&amp;repository=1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363022</commentid>
    <comment_count>17</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-10-21 00:42:49 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #16)
&gt; (In reply to Saam Barati from comment #15)
&gt; &gt; (In reply to Ryosuke Niwa from comment #14)
&gt; &gt; &gt; Looks like this was ~1% regression on Speedometer 2&apos;s react test case?
&gt; &gt; &gt; https://perf.webkit.org/v3/#/charts?since=1505283360823&amp;zoom=(1506767770443.
&gt; &gt; &gt; 9912-1507709310260.7344)&amp;paneList=((18-966-28983529-null-(5-2.5-
&gt; &gt; &gt; 500)))&amp;repository=1
&gt; &gt; 
&gt; &gt; This code is no longer in the tree.
&gt; 
&gt; Hm... it looks like we never recovered from this :( Maybe there are other
&gt; regressions looming around.
&gt; 
&gt; https://perf.webkit.org/v3/#/charts?since=1505283360823&amp;paneList=((18-966-
&gt; (1506582270543.6445-1508505237448.509)-null-(5-2.5-500)))&amp;repository=1

Yeah I think it’s unlikely this is the reason. My original patch was a regression because it forced us to allocate a weak handle and put something in a hashmap. The code in ToT does a CAS on the slow path, and the fast path is just a load and branch.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322758</attachid>
            <date>2017-10-04 18:48:56 -0700</date>
            <delta_ts>2017-10-04 19:19:50 -0700</delta_ts>
            <desc>patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>9818</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMjI4OTApCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE2IEBACisyMDE3LTEwLTA0ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIE1ha2Ugc3VyZSBhbGwgcHJvdG90eXBlcyB1bmRlciBwb2x5IHByb3Rv
IGdldCBhZGRlZCBpbnRvIHRoZSBWTSdzIHByb3RvdHlwZSBtYXAKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NzkwOQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL3BvbHktcHJvdG8tcHJvdG90
eXBlLW1hcC1oYXZpbmctYS1iYWQtdGltZS5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQpOgor
ICAgICAgICAoZm9vLkMpOgorICAgICAgICAoZm9vKToKKyAgICAgICAgKHNldCB4KToKKwogMjAx
Ny0xMC0wNCAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZW1vdmUgZmFpbHVyZSBleHBlY3RhdGlvbiBmb3IgYXN5bmMtZnVuYy1kZWNsLWRzdHItb2JqLWlk
LXB1dC11bnJlc29sdmFibGUtbm8tc3RyaWN0LmpzLgpJbmRleDogSlNUZXN0cy9zdHJlc3MvcG9s
eS1wcm90by1wcm90b3R5cGUtbWFwLWhhdmluZy1hLWJhZC10aW1lLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEpTVGVzdHMvc3RyZXNzL3BvbHktcHJvdG8tcHJvdG90eXBlLW1hcC1oYXZpbmctYS1iYWQtdGlt
ZS5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL3N0cmVzcy9wb2x5LXByb3RvLXByb3RvdHlw
ZS1tYXAtaGF2aW5nLWEtYmFkLXRpbWUuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMCBA
QAorZnVuY3Rpb24gYXNzZXJ0KGIpIHsKKyAgICBpZiAoIWIpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcigiQmFkIGFzc2VydGlvbiIpOworfQorCitmdW5jdGlvbiBmb28oKSB7CisgICAgY2xhc3Mg
QyB7CisgICAgICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICAgICAgdGhpcy54ID0gMjA7Cisg
ICAgICAgIH0KKyAgICB9OworICAgIGxldCBpdGVtID0gbmV3IEM7CisgICAgaXRlbVswXSA9IDQy
OworICAgIHJldHVybiBbaXRlbSwgQy5wcm90b3R5cGVdOworfQorCitmb3IgKGxldCBpID0gMDsg
aSA8IDUwOyArK2kpCisgICAgZm9vKCk7CisKK2xldCBbaXRlbSwgcHJvdG9dID0gZm9vKCk7Cits
ZXQgY2FsbGVkID0gZmFsc2U7CitPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvdG8sICIxIiwgewor
ICAgIHNldCh4KSB7CisgICAgICAgIGNhbGxlZCA9IHRydWU7CisgICAgfQorfSk7CisKK2Fzc2Vy
dCghY2FsbGVkKTsKK2l0ZW1bMV0gPSA0MjsKK2Fzc2VydChjYWxsZWQpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjI4OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTctMTAtMDQg
IFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBzdXJlIGFs
bCBwcm90b3R5cGVzIHVuZGVyIHBvbHkgcHJvdG8gZ2V0IGFkZGVkIGludG8gdGhlIFZNJ3MgcHJv
dG90eXBlIG1hcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTc3OTA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyBpcyBhbiBpbnZhcmlhbnQgb2YgcHJvdG90eXBlcyB0aGF0IEkgYnJva2UuIFRoaXMg
cGF0Y2ggZml4ZXMgaXQuCisKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAg
ICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BB
VEhfREVDTCk6CisgICAgICAgICogcnVudGltZS9KU0NJbmxpbmVzLmg6CisgICAgICAgICogcnVu
dGltZS9Qcm90b3R5cGVNYXAuY3BwOgorICAgICAgICAoSlNDOjpQcm90b3R5cGVNYXA6OmFkZFBy
b3RvdHlwZSk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9Qcm90b3R5cGVNYXAuaDoKKyAg
ICAgICAgKiBydW50aW1lL1Byb3RvdHlwZU1hcElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6UHJv
dG90eXBlTWFwOjppc1Byb3RvdHlwZSBjb25zdCk6CisgICAgICAgIChKU0M6OlByb3RvdHlwZU1h
cDo6YWRkUHJvdG90eXBlKToKKwogMjAxNy0xMC0wNCAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBh
cHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogSW1wcm92ZSBDYW52YXNNYW5hZ2Vy
IHJlY29yZGluZyBldmVudHMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjIyODkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ2LDggKzI0NiwxMSBA
QCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlVGhpCiAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9IHJhcmVEYXRhLT5vYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpLT5zdHJ1Y3R1cmUoKTsK
ICAgICAgICAgSlNPYmplY3QqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIHN0
cnVjdHVyZSk7Ci0gICAgICAgIGlmIChzdHJ1Y3R1cmUtPmhhc1BvbHlQcm90bygpKQotICAgICAg
ICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIHN0cnVjdHVyZS0+cG9seVByb3RvT2Zmc2V0KCks
IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY29uc3RydWN0b3IpLT5wcm90b3R5cGVGb3JDb25zdHJ1Y3Rp
b24odm0sIGV4ZWMpKTsKKyAgICAgICAgaWYgKHN0cnVjdHVyZS0+aGFzUG9seVByb3RvKCkpIHsK
KyAgICAgICAgICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNv
bnN0cnVjdG9yKS0+cHJvdG90eXBlRm9yQ29uc3RydWN0aW9uKHZtLCBleGVjKTsKKyAgICAgICAg
ICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBzdHJ1Y3R1cmUtPnBvbHlQcm90b09mZnNldCgpLCBw
cm90b3R5cGUpOworICAgICAgICAgICAgdm0ucHJvdG90eXBlTWFwLmFkZFByb3RvdHlwZShwcm90
b3R5cGUpOworICAgICAgICB9CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5j
cHAJKHJldmlzaW9uIDIyMjg5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0Miw4ICsyNDIsMTEgQEAgU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV90aGlzKQogICAgICAgICBzaXplX3QgaW5saW5l
Q2FwYWNpdHkgPSBwY1szXS51Lm9wZXJhbmQ7CiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gY29uc3RydWN0b3ItPnJhcmVEYXRhKGV4ZWMsIGlubGluZUNhcGFjaXR5KS0+b2JqZWN0QWxs
b2NhdGlvblByb2ZpbGUoKS0+c3RydWN0dXJlKCk7CiAgICAgICAgIHJlc3VsdCA9IGNvbnN0cnVj
dEVtcHR5T2JqZWN0KGV4ZWMsIHN0cnVjdHVyZSk7Ci0gICAgICAgIGlmIChzdHJ1Y3R1cmUtPmhh
c1BvbHlQcm90bygpKQotICAgICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIHN0cnVjdHVy
ZS0+cG9seVByb3RvT2Zmc2V0KCksIGNvbnN0cnVjdG9yLT5wcm90b3R5cGVGb3JDb25zdHJ1Y3Rp
b24odm0sIGV4ZWMpKTsKKyAgICAgICAgaWYgKHN0cnVjdHVyZS0+aGFzUG9seVByb3RvKCkpIHsK
KyAgICAgICAgICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSBjb25zdHJ1Y3Rvci0+cHJvdG90eXBl
Rm9yQ29uc3RydWN0aW9uKHZtLCBleGVjKTsKKyAgICAgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0
KHZtLCBzdHJ1Y3R1cmUtPnBvbHlQcm90b09mZnNldCgpLCBwcm90b3R5cGUpOworICAgICAgICAg
ICAgdm0ucHJvdG90eXBlTWFwLmFkZFByb3RvdHlwZShwcm90b3R5cGUpOworICAgICAgICB9CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgLy8gaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNt
YS0yNjIvNi4wLyNzZWMtb3JkaW5hcnljcmVhdGVmcm9tY29uc3RydWN0b3IKICAgICAgICAgSlNW
YWx1ZSBwcm90byA9IGNvbnN0cnVjdG9yQXNPYmplY3QtPmdldChleGVjLCB2bS5wcm9wZXJ0eU5h
bWVzLT5wcm90b3R5cGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0lubGluZXMuaAkocmV2aXNpb24gMjIyODkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBACiAjaW5j
bHVkZSAiSlNQcm94eS5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCiAjaW5jbHVkZSAiT3BlcmF0
aW9ucy5oIgorI2luY2x1ZGUgIlByb3RvdHlwZU1hcElubGluZXMuaCIKICNpbmNsdWRlICJTbG90
VmlzaXRvcklubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiVGhyb3dTY29wZS5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
dG90eXBlTWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm90b3R5cGVNYXAuY3BwCShyZXZpc2lvbiAyMjI4OTApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm90b3R5cGVNYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywyNyAr
MzMsNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotdm9pZCBQcm90b3R5cGVNYXA6OmFkZFByb3Rv
dHlwZShKU09iamVjdCogb2JqZWN0KQotewotICAgIG1fcHJvdG90eXBlcy5zZXQob2JqZWN0LCBv
YmplY3QpOwotCi0gICAgLy8gTm90ZSB0aGF0IHRoaXMgbWV0aG9kIG1ha2VzIHRoZSBzb21ld2hh
dCBvZGQgZGVjaXNpb24gdG8gbm90IGNoZWNrIGlmIHRoaXMKLSAgICAvLyBvYmplY3QgY3VycmVu
dGx5IGhhcyBpbmRleGVkIGFjY2Vzc29ycy4gV2UgY291bGQgZG8gdGhhdCBjaGVjayBoZXJlLCBh
bmQgaWYKLSAgICAvLyBpbmRleGVkIGFjY2Vzc29ycyB3ZXJlIGZvdW5kLCB3ZSBjb3VsZCB0ZWxs
IHRoZSBnbG9iYWwgb2JqZWN0IHRvIGhhdmUgYSBiYWQKLSAgICAvLyB0aW1lLiBCdXQgd2UgYXZv
aWQgdGhpcywgdG8gYWxsb3cgdGhlIGZvbGxvd2luZyB0byBiZSBhbHdheXMgZmFzdDoKLSAgICAv
LwotICAgIC8vIDEpIENyZWF0ZSBhbiBvYmplY3QuCi0gICAgLy8gMikgR2l2ZSBpdCBhIHNldHRl
ciBvciByZWFkLW9ubHkgcHJvcGVydHkgdGhhdCBoYXBwZW5zIHRvIGhhdmUgYSBudW1lcmljIG5h
bWUuCi0gICAgLy8gMykgQWxsb2NhdGUgb2JqZWN0cyB0aGF0IHVzZSB0aGlzIG9iamVjdCBhcyBh
IHByb3RvdHlwZS4KLSAgICAvLwotICAgIC8vIFRoaXMgYXZvaWRzIGFueW9uZSBoYXZpbmcgYSBi
YWQgdGltZS4gRXZlbiBpZiB0aGUgaW5zdGFuY2Ugb2JqZWN0cyBlbmQgdXAKLSAgICAvLyBoYXZp
bmcgaW5kZXhlZCBzdG9yYWdlLCB0aGUgY3JlYXRpb24gb2YgaW5kZXhlZCBzdG9yYWdlIGxlYWRz
IHRvIGEgcHJvdG90eXBlCi0gICAgLy8gY2hhaW4gd2FsayB0aGF0IGRldGVjdHMgdGhlIHByZXNl
bmNlIG9mIGluZGV4ZWQgc2V0dGVycyBhbmQgdGhlbiBkb2VzIHRoZQotICAgIC8vIHJpZ2h0IHRo
aW5nLiBBcyBhIHJlc3VsdCwgaGF2aW5nIGEgYmFkIHRpbWUgb25seSBoYXBwZW5zIGlmIHlvdSBh
ZGQgYW4KLSAgICAvLyBpbmRleGVkIHNldHRlciAob3IgZ2V0dGVyLCBvciByZWFkLW9ubHkgZmll
bGQpIHRvIGFuIG9iamVjdCB0aGF0IGlzIGFscmVhZHkKLSAgICAvLyB1c2VkIGFzIGEgcHJvdG90
eXBlLgotfQotCiBpbmxpbmUgU3RydWN0dXJlKiBQcm90b3R5cGVNYXA6OmNyZWF0ZUVtcHR5U3Ry
dWN0dXJlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBwcm90b3R5cGUs
IGNvbnN0IFR5cGVJbmZvJiB0eXBlSW5mbywgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIElu
ZGV4aW5nVHlwZSBpbmRleGluZ1R5cGUsIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5LCBib29sIG1h
a2VQb2x5UHJvdG9TdHJ1Y3R1cmUpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoISFwcm90b3R5cGUp
OyAvLyBXZSB1c2UgbnVsbHB0ciBpbnNpZGUgdGhlIEhhc2hNYXAgZm9yIHByb3RvdHlwZSB0byBt
ZWFuIHBvbHkgcHJvdG8sIHNvIHVzZXIncyBvZiB0aGlzIEFQSSBtdXN0IHByb3ZpZGUgbm9uLW51
bGwgcHJvdG90eXBlcy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Rv
dHlwZU1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3RvdHlwZU1hcC5oCShyZXZpc2lvbiAyMjI4OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm90b3R5cGVNYXAuaAkod29ya2luZyBjb3B5KQpAQCAtNDksOCArNDksOCBAQCBw
dWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgU3RydWN0dXJlKiBlbXB0eU9iamVjdFN0cnVj
dHVyZUZvclByb3RvdHlwZShKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiwgdW5zaWduZWQgaW5s
aW5lQ2FwYWNpdHksIGJvb2wgbWFrZVBvbHlQcm90b1N0cnVjdHVyZSA9IGZhbHNlKTsKICAgICBK
U19FWFBPUlRfUFJJVkFURSBTdHJ1Y3R1cmUqIGVtcHR5U3RydWN0dXJlRm9yUHJvdG90eXBlRnJv
bUJhc2VTdHJ1Y3R1cmUoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCosIFN0cnVjdHVyZSopOwog
ICAgIHZvaWQgY2xlYXJFbXB0eU9iamVjdFN0cnVjdHVyZUZvclByb3RvdHlwZShKU0dsb2JhbE9i
amVjdCosIEpTT2JqZWN0KiwgdW5zaWduZWQgaW5saW5lQ2FwYWNpdHkpOwotICAgIEpTX0VYUE9S
VF9QUklWQVRFIHZvaWQgYWRkUHJvdG90eXBlKEpTT2JqZWN0Kik7Ci0gICAgaW5saW5lIFRyaVN0
YXRlIGlzUHJvdG90eXBlKEpTT2JqZWN0KikgY29uc3Q7IC8vIFJldHVybnMgYSBjb25zZXJ2YXRp
dmUgZXN0aW1hdGUuCisgICAgQUxXQVlTX0lOTElORSB2b2lkIGFkZFByb3RvdHlwZShKU09iamVj
dCopOworICAgIEFMV0FZU19JTkxJTkUgVHJpU3RhdGUgaXNQcm90b3R5cGUoSlNPYmplY3QqKSBj
b25zdDsgLy8gUmV0dXJucyBhIGNvbnNlcnZhdGl2ZSBlc3RpbWF0ZS4KIAogcHJpdmF0ZToKICAg
ICBTdHJ1Y3R1cmUqIGNyZWF0ZUVtcHR5U3RydWN0dXJlKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmpl
Y3QqIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mLCBjb25zdCBDbGFzc0luZm8qLCBJbmRleGlu
Z1R5cGUsIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5LCBib29sIG1ha2VQb2x5UHJvdG9TdHJ1Y3R1
cmUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlTWFwSW5s
aW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Rv
dHlwZU1hcElubGluZXMuaAkocmV2aXNpb24gMjIyODkwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJvdG90eXBlTWFwSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3
ICszMCw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1pbmxpbmUgVHJpU3RhdGUgUHJvdG90eXBl
TWFwOjppc1Byb3RvdHlwZShKU09iamVjdCogb2JqZWN0KSBjb25zdAorQUxXQVlTX0lOTElORSBU
cmlTdGF0ZSBQcm90b3R5cGVNYXA6OmlzUHJvdG90eXBlKEpTT2JqZWN0KiBvYmplY3QpIGNvbnN0
CiB7CiAgICAgaWYgKCFtX3Byb3RvdHlwZXMuY29udGFpbnMob2JqZWN0KSkKICAgICAgICAgcmV0
dXJuIEZhbHNlVHJpU3RhdGU7CkBAIC00Miw1ICs0MiwyNiBAQCBpbmxpbmUgVHJpU3RhdGUgUHJv
dG90eXBlTWFwOjppc1Byb3RvdHlwCiAgICAgcmV0dXJuIE1peGVkVHJpU3RhdGU7CiB9CiAKK0FM
V0FZU19JTkxJTkUgdm9pZCBQcm90b3R5cGVNYXA6OmFkZFByb3RvdHlwZShKU09iamVjdCogb2Jq
ZWN0KQoreworICAgIG1fcHJvdG90eXBlcy5zZXQob2JqZWN0LCBvYmplY3QpOworCisgICAgLy8g
Tm90ZSB0aGF0IHRoaXMgbWV0aG9kIG1ha2VzIHRoZSBzb21ld2hhdCBvZGQgZGVjaXNpb24gdG8g
bm90IGNoZWNrIGlmIHRoaXMKKyAgICAvLyBvYmplY3QgY3VycmVudGx5IGhhcyBpbmRleGVkIGFj
Y2Vzc29ycy4gV2UgY291bGQgZG8gdGhhdCBjaGVjayBoZXJlLCBhbmQgaWYKKyAgICAvLyBpbmRl
eGVkIGFjY2Vzc29ycyB3ZXJlIGZvdW5kLCB3ZSBjb3VsZCB0ZWxsIHRoZSBnbG9iYWwgb2JqZWN0
IHRvIGhhdmUgYSBiYWQKKyAgICAvLyB0aW1lLiBCdXQgd2UgYXZvaWQgdGhpcywgdG8gYWxsb3cg
dGhlIGZvbGxvd2luZyB0byBiZSBhbHdheXMgZmFzdDoKKyAgICAvLworICAgIC8vIDEpIENyZWF0
ZSBhbiBvYmplY3QuCisgICAgLy8gMikgR2l2ZSBpdCBhIHNldHRlciBvciByZWFkLW9ubHkgcHJv
cGVydHkgdGhhdCBoYXBwZW5zIHRvIGhhdmUgYSBudW1lcmljIG5hbWUuCisgICAgLy8gMykgQWxs
b2NhdGUgb2JqZWN0cyB0aGF0IHVzZSB0aGlzIG9iamVjdCBhcyBhIHByb3RvdHlwZS4KKyAgICAv
LworICAgIC8vIFRoaXMgYXZvaWRzIGFueW9uZSBoYXZpbmcgYSBiYWQgdGltZS4gRXZlbiBpZiB0
aGUgaW5zdGFuY2Ugb2JqZWN0cyBlbmQgdXAKKyAgICAvLyBoYXZpbmcgaW5kZXhlZCBzdG9yYWdl
LCB0aGUgY3JlYXRpb24gb2YgaW5kZXhlZCBzdG9yYWdlIGxlYWRzIHRvIGEgcHJvdG90eXBlCisg
ICAgLy8gY2hhaW4gd2FsayB0aGF0IGRldGVjdHMgdGhlIHByZXNlbmNlIG9mIGluZGV4ZWQgc2V0
dGVycyBhbmQgdGhlbiBkb2VzIHRoZQorICAgIC8vIHJpZ2h0IHRoaW5nLiBBcyBhIHJlc3VsdCwg
aGF2aW5nIGEgYmFkIHRpbWUgb25seSBoYXBwZW5zIGlmIHlvdSBhZGQgYW4KKyAgICAvLyBpbmRl
eGVkIHNldHRlciAob3IgZ2V0dGVyLCBvciByZWFkLW9ubHkgZmllbGQpIHRvIGFuIG9iamVjdCB0
aGF0IGlzIGFscmVhZHkKKyAgICAvLyB1c2VkIGFzIGEgcHJvdG90eXBlLgorfQorCiB9IC8vIG5h
bWVzcGFjZSBKU0MKIAo=
</data>
<flag name="review"
          id="342597"
          type_id="1"
          status="+"
          setter="keith_miller"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322765</attachid>
            <date>2017-10-04 19:19:50 -0700</date>
            <delta_ts>2017-10-04 19:57:15 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>16422</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMjI4OTApCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE2IEBACisyMDE3LTEwLTA0ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIE1ha2Ugc3VyZSBhbGwgcHJvdG90eXBlcyB1bmRlciBwb2x5IHByb3Rv
IGdldCBhZGRlZCBpbnRvIHRoZSBWTSdzIHByb3RvdHlwZSBtYXAKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NzkwOQorCisgICAgICAgIFJldmlld2Vk
IGJ5IEtlaXRoIE1pbGxlci4KKworICAgICAgICAqIHN0cmVzcy9wb2x5LXByb3RvLXByb3RvdHlw
ZS1tYXAtaGF2aW5nLWEtYmFkLXRpbWUuanM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAg
ICAgICAgKGZvby5DKToKKyAgICAgICAgKGZvbyk6CisgICAgICAgIChzZXQgeCk6CisKIDIwMTct
MTAtMDQgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgUmVt
b3ZlIGZhaWx1cmUgZXhwZWN0YXRpb24gZm9yIGFzeW5jLWZ1bmMtZGVjbC1kc3RyLW9iai1pZC1w
dXQtdW5yZXNvbHZhYmxlLW5vLXN0cmljdC5qcy4KSW5kZXg6IEpTVGVzdHMvc3RyZXNzL3BvbHkt
cHJvdG8tcHJvdG90eXBlLW1hcC1oYXZpbmctYS1iYWQtdGltZS5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
U1Rlc3RzL3N0cmVzcy9wb2x5LXByb3RvLXByb3RvdHlwZS1tYXAtaGF2aW5nLWEtYmFkLXRpbWUu
anMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9zdHJlc3MvcG9seS1wcm90by1wcm90b3R5cGUt
bWFwLWhhdmluZy1hLWJhZC10aW1lLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzAgQEAK
K2Z1bmN0aW9uIGFzc2VydChiKSB7CisgICAgaWYgKCFiKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoIkJhZCBhc3NlcnRpb24iKTsKK30KKworZnVuY3Rpb24gZm9vKCkgeworICAgIGNsYXNzIEMg
eworICAgICAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgICAgIHRoaXMueCA9IDIwOworICAg
ICAgICB9CisgICAgfTsKKyAgICBsZXQgaXRlbSA9IG5ldyBDOworICAgIGl0ZW1bMF0gPSA0MjsK
KyAgICByZXR1cm4gW2l0ZW0sIEMucHJvdG90eXBlXTsKK30KKworZm9yIChsZXQgaSA9IDA7IGkg
PCA1MDsgKytpKQorICAgIGZvbygpOworCitsZXQgW2l0ZW0sIHByb3RvXSA9IGZvbygpOworbGV0
IGNhbGxlZCA9IGZhbHNlOworT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3RvLCAiMSIsIHsKKyAg
ICBzZXQoeCkgeworICAgICAgICBjYWxsZWQgPSB0cnVlOworICAgIH0KK30pOworCithc3NlcnQo
IWNhbGxlZCk7CitpdGVtWzFdID0gNDI7Cithc3NlcnQoY2FsbGVkKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjIyODkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDE3LTEwLTA0ICBT
YWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2Ugc3VyZSBhbGwg
cHJvdG90eXBlcyB1bmRlciBwb2x5IHByb3RvIGdldCBhZGRlZCBpbnRvIHRoZSBWTSdzIHByb3Rv
dHlwZSBtYXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3NzkwOQorCisgICAgICAgIFJldmlld2VkIGJ5IEtlaXRoIE1pbGxlci4KKworICAgICAgICBU
aGlzIGlzIGFuIGludmFyaWFudCBvZiBwcm90b3R5cGVzIHRoYXQgSSBicm9rZSB3aGVuIGRvaW5n
IHBvbHkgcHJvdG8uIFRoaXMgcGF0Y2ggZml4ZXMgaXQuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVj
b2RlTGlzdC5qc29uOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRm
Zy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5j
cHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1lL0pT
Q0lubGluZXMuaDoKKyAgICAgICAgKiBydW50aW1lL1Byb3RvdHlwZU1hcC5jcHA6CisgICAgICAg
IChKU0M6OlByb3RvdHlwZU1hcDo6YWRkUHJvdG90eXBlKTogRGVsZXRlZC4KKyAgICAgICAgKiBy
dW50aW1lL1Byb3RvdHlwZU1hcC5oOgorICAgICAgICAqIHJ1bnRpbWUvUHJvdG90eXBlTWFwSW5s
aW5lcy5oOgorICAgICAgICAoSlNDOjpQcm90b3R5cGVNYXA6OmlzUHJvdG90eXBlIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6UHJvdG90eXBlTWFwOjphZGRQcm90b3R5cGUpOgorCiAyMDE3LTEwLTA0
ICBNYXR0IEJha2VyICA8bWF0dGJha2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVj
dG9yOiBJbXByb3ZlIENhbnZhc01hbmFnZXIgcmVjb3JkaW5nIGV2ZW50cwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIyMjg5MCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC00NDcsNyArNDQ3LDcgQEAKIAkJMEY5RTMyNjQxQjA1QUIwNDAwODAxRUQ1IC8q
IERGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjlFMzI2MjFCMDVBQjA0MDA4MDFFRDUgLyogREZHU3Rv
cmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuaCAqLzsgfTsKIAkJMEY5RkI0RjUxN0ZDQjkxNzAwQ0I2
N0Y4IC8qIERGR1N0YWNrTGF5b3V0UGhhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGOUZCNEYzMTdGQ0I5MTcwMENCNjdGOCAvKiBERkdTdGFja0xh
eW91dFBoYXNlLmggKi87IH07CiAJCTBGOUZDOEM1MTRFMUI2MDQwMEQ1MkFFMCAvKiBQdXRLaW5k
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjlGQzhD
MTE0RTFCNUZCMDBENTJBRTAgLyogUHV0S2luZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTBGQTEzMTcxMUQ4REQ3MkIwMEVDMTMwQSAvKiBQcm90
b3R5cGVNYXBJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkExMzE3MDFEOERENzI5MDBFQzEzMEEgLyogUHJvdG90eXBlTWFwSW5saW5lcy5o
ICovOyB9OworCQkwRkExMzE3MTFEOERENzJCMDBFQzEzMEEgLyogUHJvdG90eXBlTWFwSW5saW5l
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZBMTMx
NzAxRDhERDcyOTAwRUMxMzBBIC8qIFByb3RvdHlwZU1hcElubGluZXMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkEyQzE3QzE3RDdDRjg0MDA5
RDAxNUYgLyogVGVzdFJ1bm5lclV0aWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRkEyQzE3QTE3RDdDRjg0MDA5RDAxNUYgLyogVGVzdFJ1bm5lclV0
aWxzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEZBNTgxQkIxNTBFOTUzMDAwQjlBMkQ5IC8qIERGR05vZGVGbGFncy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZBNTgxQjgxNTBFOTUyQTAwQjlBMkQ5
IC8qIERGR05vZGVGbGFncy5oICovOyB9OwogCQkwRkE1ODFCQzE1MEU5NTMwMDBCOUEyRDkgLyog
REZHTm9kZVR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGQTU4MUI5MTUwRTk1MkEwMEI5QTJEOSAvKiBERkdOb2RlVHlwZS5oICovOyB9OwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNv
bgkocmV2aXNpb24gMjIyODkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGlzdC5qc29uCSh3b3JraW5nIGNvcHkpCkBAIC04LDcgKzgsMTEgQEAKICAgICAgICAg
ICAgIHsgIm5hbWUiIDogIm9wX2NyZWF0ZV9kaXJlY3RfYXJndW1lbnRzIiwgImxlbmd0aCIgOiAy
IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jcmVhdGVfc2NvcGVkX2FyZ3VtZW50cyIs
ICJsZW5ndGgiIDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY3JlYXRlX2Nsb25l
ZF9hcmd1bWVudHMiLCAibGVuZ3RoIiA6IDIgfSwKLSAgICAgICAgICAgIHsgIm5hbWUiIDogIm9w
X2NyZWF0ZV90aGlzIiwgImxlbmd0aCIgOiA1IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJv
cF9jcmVhdGVfdGhpcyIsICJvZmZzZXRzIiA6CisgICAgICAgICAgICAgICAgICAgICAgIFt7ImRz
dCIgOiAiaW50In0sCisgICAgICAgICAgICAgICAgICAgICAgICB7ImNhbGxlZSIgOiAiaW50In0s
CisgICAgICAgICAgICAgICAgICAgICAgICB7ImlubGluZUNhcGFjaXR5IiA6ICJpbnQifSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHsiY2FjaGVkQ2FsbGVlIiA6ICJXcml0ZUJhcnJpZXI8SlND
ZWxsPiJ9XX0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9nZXRfYXJndW1lbnQiLCAibGVu
Z3RoIiA6IDQgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2FyZ3VtZW50X2NvdW50Iiwg
Imxlbmd0aCIgOiAyIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90b190aGlzIiwgImxl
bmd0aCIgOiA0IH0sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMjIyODkwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzMjQsMTIg
KzQzMjQsMTIgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAg
ICAgICB9CiAKICAgICAgICAgY2FzZSBvcF9jcmVhdGVfdGhpczogewotICAgICAgICAgICAgaW50
IGNhbGxlZU9wZXJhbmQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwotICAgICAg
ICAgICAgTm9kZSogY2FsbGVlID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjYWxsZWVPcGVyYW5kKSk7
CisgICAgICAgICAgICBhdXRvJiBieXRlY29kZSA9ICpyZWludGVycHJldF9jYXN0PE9wQ3JlYXRl
VGhpcyo+KGN1cnJlbnRJbnN0cnVjdGlvbik7CisgICAgICAgICAgICBOb2RlKiBjYWxsZWUgPSBn
ZXQoVmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLmNhbGxlZSgpKSk7CiAKICAgICAgICAgICAgIEpT
RnVuY3Rpb24qIGZ1bmN0aW9uID0gY2FsbGVlLT5keW5hbWljQ2FzdENvbnN0YW50PEpTRnVuY3Rp
b24qPigqbV92bSk7CiAgICAgICAgICAgICBpZiAoIWZ1bmN0aW9uKSB7Ci0gICAgICAgICAgICAg
ICAgSlNDZWxsKiBjYWNoZWRGdW5jdGlvbiA9IGN1cnJlbnRJbnN0cnVjdGlvbls0XS51LmpzQ2Vs
bC51bnZhbGlkYXRlZEdldCgpOworICAgICAgICAgICAgICAgIEpTQ2VsbCogY2FjaGVkRnVuY3Rp
b24gPSBieXRlY29kZS5jYWNoZWRDYWxsZWUoKS51bnZhbGlkYXRlZEdldCgpOwogICAgICAgICAg
ICAgICAgIGlmIChjYWNoZWRGdW5jdGlvbgogICAgICAgICAgICAgICAgICAgICAmJiBjYWNoZWRG
dW5jdGlvbiAhPSBKU0NlbGw6OnNlZW5NdWx0aXBsZUNhbGxlZU9iamVjdHMoKQogICAgICAgICAg
ICAgICAgICAgICAmJiAhbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0
ZShtX2N1cnJlbnRJbmRleCwgQmFkQ2VsbCkpIHsKQEAgLTQzNTMsMTUgKzQzNTMsMTUgQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fZ3JhcGgud2F0Y2hwb2ludHMoKS5hZGRMYXppbHkocmFyZURhdGEtPmFsbG9j
YXRpb25Qcm9maWxlV2F0Y2hwb2ludFNldCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBUaGUgY2FsbGVlIGlzIHN0aWxsIGxpdmUgdXAgdG8gdGhpcyBwb2ludC4KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGNhbGxlZSk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kKSwgYWRkVG9HcmFwaChOZXdPYmplY3QsIE9wSW5mbyhtX2dyYXBoLnJl
Z2lzdGVyU3RydWN0dXJlKHN0cnVjdHVyZSkpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2V0KFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5kc3QoKSksIGFkZFRvR3JhcGgoTmV3T2Jq
ZWN0LCBPcEluZm8obV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShzdHJ1Y3R1cmUpKSkpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFscmVhZHlFbWl0dGVkID0gdHJ1ZTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICghYWxyZWFkeUVtaXR0ZWQpIHsKLSAg
ICAgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQpLAotICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKENyZWF0ZVRoaXMsIE9w
SW5mbyhjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKSwgY2FsbGVlKSk7CisgICAgICAg
ICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5kc3QoKSksCisgICAgICAgICAg
ICAgICAgICAgIGFkZFRvR3JhcGgoQ3JlYXRlVGhpcywgT3BJbmZvKGJ5dGVjb2RlLmlubGluZUNh
cGFjaXR5KCkpLCBjYWxsZWUpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIE5FWFRfT1BD
T0RFKG9wX2NyZWF0ZV90aGlzKTsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyMjI4OTApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NDYsOCArMjQ2LDExIEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVUaGkK
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAgICAgICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlID0gcmFyZURhdGEtPm9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkt
PnN0cnVjdHVyZSgpOwogICAgICAgICBKU09iamVjdCogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlP
YmplY3QoZXhlYywgc3RydWN0dXJlKTsKLSAgICAgICAgaWYgKHN0cnVjdHVyZS0+aGFzUG9seVBy
b3RvKCkpCi0gICAgICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgc3RydWN0dXJlLT5wb2x5
UHJvdG9PZmZzZXQoKSwganNDYXN0PEpTRnVuY3Rpb24qPihjb25zdHJ1Y3RvciktPnByb3RvdHlw
ZUZvckNvbnN0cnVjdGlvbih2bSwgZXhlYykpOworICAgICAgICBpZiAoc3RydWN0dXJlLT5oYXNQ
b2x5UHJvdG8oKSkgeworICAgICAgICAgICAgSlNPYmplY3QqIHByb3RvdHlwZSA9IGpzQ2FzdDxK
U0Z1bmN0aW9uKj4oY29uc3RydWN0b3IpLT5wcm90b3R5cGVGb3JDb25zdHJ1Y3Rpb24odm0sIGV4
ZWMpOworICAgICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIHN0cnVjdHVyZS0+cG9seVBy
b3RvT2Zmc2V0KCksIHByb3RvdHlwZSk7CisgICAgICAgICAgICB2bS5wcm90b3R5cGVNYXAuYWRk
UHJvdG90eXBlKHByb3RvdHlwZSk7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMjIyODkwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiAr
MjksNyBAQAogI2luY2x1ZGUgIkFyaXRoUHJvZmlsZS5oIgogI2luY2x1ZGUgIkFycmF5Q29uc3Ry
dWN0b3IuaCIKICNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIKKyNpbmNsdWRlICJCeXRlY29kZVN0
cnVjdHMuaCIKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJDbG9uZWRBcmd1bWVu
dHMuaCIKICNpbmNsdWRlICJDb2RlUHJvZmlsaW5nLmgiCkBAIC0yMjksMjEgKzIzMCwyNSBAQCBT
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfY3JlYXRlX2Nsb25lZF9hCiBTTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfY3JlYXRlX3RoaXMpCiB7CiAgICAgQkVHSU4oKTsKKyAgICBhdXRvJiBieXRlY29k
ZSA9ICpyZWludGVycHJldF9jYXN0PE9wQ3JlYXRlVGhpcyo+KHBjKTsKICAgICBKU09iamVjdCog
cmVzdWx0OwotICAgIEpTT2JqZWN0KiBjb25zdHJ1Y3RvckFzT2JqZWN0ID0gYXNPYmplY3QoT1Ao
MikuanNWYWx1ZSgpKTsKKyAgICBKU09iamVjdCogY29uc3RydWN0b3JBc09iamVjdCA9IGFzT2Jq
ZWN0KE9QKGJ5dGVjb2RlLmNhbGxlZSgpKS5qc1ZhbHVlKCkpOwogICAgIGlmIChjb25zdHJ1Y3Rv
ckFzT2JqZWN0LT50eXBlKCkgPT0gSlNGdW5jdGlvblR5cGUpIHsKICAgICAgICAgSlNGdW5jdGlv
biogY29uc3RydWN0b3IgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNvbnN0cnVjdG9yQXNPYmplY3Qp
OwotICAgICAgICBhdXRvJiBjYWNoZVdyaXRlQmFycmllciA9IHBjWzRdLnUuanNDZWxsOwotICAg
ICAgICBpZiAoIWNhY2hlV3JpdGVCYXJyaWVyKQotICAgICAgICAgICAgY2FjaGVXcml0ZUJhcnJp
ZXIuc2V0KHZtLCBleGVjLT5jb2RlQmxvY2soKSwgY29uc3RydWN0b3IpOwotICAgICAgICBlbHNl
IGlmIChjYWNoZVdyaXRlQmFycmllci51bnZhbGlkYXRlZEdldCgpICE9IEpTQ2VsbDo6c2Vlbk11
bHRpcGxlQ2FsbGVlT2JqZWN0cygpICYmIGNhY2hlV3JpdGVCYXJyaWVyLmdldCgpICE9IGNvbnN0
cnVjdG9yKQotICAgICAgICAgICAgY2FjaGVXcml0ZUJhcnJpZXIuc2V0V2l0aG91dFdyaXRlQmFy
cmllcihKU0NlbGw6OnNlZW5NdWx0aXBsZUNhbGxlZU9iamVjdHMoKSk7CisgICAgICAgIFdyaXRl
QmFycmllcjxKU0NlbGw+JiBjYWNoZWRDYWxsZWUgPSBieXRlY29kZS5jYWNoZWRDYWxsZWUoKTsK
KyAgICAgICAgaWYgKCFjYWNoZWRDYWxsZWUpCisgICAgICAgICAgICBjYWNoZWRDYWxsZWUuc2V0
KHZtLCBleGVjLT5jb2RlQmxvY2soKSwgY29uc3RydWN0b3IpOworICAgICAgICBlbHNlIGlmIChj
YWNoZWRDYWxsZWUudW52YWxpZGF0ZWRHZXQoKSAhPSBKU0NlbGw6OnNlZW5NdWx0aXBsZUNhbGxl
ZU9iamVjdHMoKSAmJiBjYWNoZWRDYWxsZWUuZ2V0KCkgIT0gY29uc3RydWN0b3IpCisgICAgICAg
ICAgICBjYWNoZWRDYWxsZWUuc2V0V2l0aG91dFdyaXRlQmFycmllcihKU0NlbGw6OnNlZW5NdWx0
aXBsZUNhbGxlZU9iamVjdHMoKSk7CiAKLSAgICAgICAgc2l6ZV90IGlubGluZUNhcGFjaXR5ID0g
cGNbM10udS5vcGVyYW5kOworICAgICAgICBzaXplX3QgaW5saW5lQ2FwYWNpdHkgPSBieXRlY29k
ZS5pbmxpbmVDYXBhY2l0eSgpOwogICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNvbnN0
cnVjdG9yLT5yYXJlRGF0YShleGVjLCBpbmxpbmVDYXBhY2l0eSktPm9iamVjdEFsbG9jYXRpb25Q
cm9maWxlKCktPnN0cnVjdHVyZSgpOwogICAgICAgICByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eU9i
amVjdChleGVjLCBzdHJ1Y3R1cmUpOwotICAgICAgICBpZiAoc3RydWN0dXJlLT5oYXNQb2x5UHJv
dG8oKSkKLSAgICAgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBzdHJ1Y3R1cmUtPnBvbHlQ
cm90b09mZnNldCgpLCBjb25zdHJ1Y3Rvci0+cHJvdG90eXBlRm9yQ29uc3RydWN0aW9uKHZtLCBl
eGVjKSk7CisgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmhhc1BvbHlQcm90bygpKSB7CisgICAgICAg
ICAgICBKU09iamVjdCogcHJvdG90eXBlID0gY29uc3RydWN0b3ItPnByb3RvdHlwZUZvckNvbnN0
cnVjdGlvbih2bSwgZXhlYyk7CisgICAgICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgc3Ry
dWN0dXJlLT5wb2x5UHJvdG9PZmZzZXQoKSwgcHJvdG90eXBlKTsKKyAgICAgICAgICAgIHZtLnBy
b3RvdHlwZU1hcC5hZGRQcm90b3R5cGUocHJvdG90eXBlKTsKKyAgICAgICAgfQogICAgIH0gZWxz
ZSB7CiAgICAgICAgIC8vIGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYu
MC8jc2VjLW9yZGluYXJ5Y3JlYXRlZnJvbWNvbnN0cnVjdG9yCiAgICAgICAgIEpTVmFsdWUgcHJv
dG8gPSBjb25zdHJ1Y3RvckFzT2JqZWN0LT5nZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+cHJv
dG90eXBlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0lubGluZXMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NJbmxpbmVz
LmgJKHJldmlzaW9uIDIyMjg5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0lubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUgIkpT
UHJveHkuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIK
KyNpbmNsdWRlICJQcm90b3R5cGVNYXBJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU2xvdFZpc2l0b3JJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgogI2luY2x1ZGUgIlRocm93
U2NvcGUuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZU1h
cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90
eXBlTWFwLmNwcAkocmV2aXNpb24gMjIyODkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJvdG90eXBlTWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsMjcgKzMzLDYgQEAK
IAogbmFtZXNwYWNlIEpTQyB7CiAKLXZvaWQgUHJvdG90eXBlTWFwOjphZGRQcm90b3R5cGUoSlNP
YmplY3QqIG9iamVjdCkKLXsKLSAgICBtX3Byb3RvdHlwZXMuc2V0KG9iamVjdCwgb2JqZWN0KTsK
LQotICAgIC8vIE5vdGUgdGhhdCB0aGlzIG1ldGhvZCBtYWtlcyB0aGUgc29tZXdoYXQgb2RkIGRl
Y2lzaW9uIHRvIG5vdCBjaGVjayBpZiB0aGlzCi0gICAgLy8gb2JqZWN0IGN1cnJlbnRseSBoYXMg
aW5kZXhlZCBhY2Nlc3NvcnMuIFdlIGNvdWxkIGRvIHRoYXQgY2hlY2sgaGVyZSwgYW5kIGlmCi0g
ICAgLy8gaW5kZXhlZCBhY2Nlc3NvcnMgd2VyZSBmb3VuZCwgd2UgY291bGQgdGVsbCB0aGUgZ2xv
YmFsIG9iamVjdCB0byBoYXZlIGEgYmFkCi0gICAgLy8gdGltZS4gQnV0IHdlIGF2b2lkIHRoaXMs
IHRvIGFsbG93IHRoZSBmb2xsb3dpbmcgdG8gYmUgYWx3YXlzIGZhc3Q6Ci0gICAgLy8KLSAgICAv
LyAxKSBDcmVhdGUgYW4gb2JqZWN0LgotICAgIC8vIDIpIEdpdmUgaXQgYSBzZXR0ZXIgb3IgcmVh
ZC1vbmx5IHByb3BlcnR5IHRoYXQgaGFwcGVucyB0byBoYXZlIGEgbnVtZXJpYyBuYW1lLgotICAg
IC8vIDMpIEFsbG9jYXRlIG9iamVjdHMgdGhhdCB1c2UgdGhpcyBvYmplY3QgYXMgYSBwcm90b3R5
cGUuCi0gICAgLy8KLSAgICAvLyBUaGlzIGF2b2lkcyBhbnlvbmUgaGF2aW5nIGEgYmFkIHRpbWUu
IEV2ZW4gaWYgdGhlIGluc3RhbmNlIG9iamVjdHMgZW5kIHVwCi0gICAgLy8gaGF2aW5nIGluZGV4
ZWQgc3RvcmFnZSwgdGhlIGNyZWF0aW9uIG9mIGluZGV4ZWQgc3RvcmFnZSBsZWFkcyB0byBhIHBy
b3RvdHlwZQotICAgIC8vIGNoYWluIHdhbGsgdGhhdCBkZXRlY3RzIHRoZSBwcmVzZW5jZSBvZiBp
bmRleGVkIHNldHRlcnMgYW5kIHRoZW4gZG9lcyB0aGUKLSAgICAvLyByaWdodCB0aGluZy4gQXMg
YSByZXN1bHQsIGhhdmluZyBhIGJhZCB0aW1lIG9ubHkgaGFwcGVucyBpZiB5b3UgYWRkIGFuCi0g
ICAgLy8gaW5kZXhlZCBzZXR0ZXIgKG9yIGdldHRlciwgb3IgcmVhZC1vbmx5IGZpZWxkKSB0byBh
biBvYmplY3QgdGhhdCBpcyBhbHJlYWR5Ci0gICAgLy8gdXNlZCBhcyBhIHByb3RvdHlwZS4KLX0K
LQogaW5saW5lIFN0cnVjdHVyZSogUHJvdG90eXBlTWFwOjpjcmVhdGVFbXB0eVN0cnVjdHVyZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogcHJvdG90eXBlLCBjb25zdCBU
eXBlSW5mbyYgdHlwZUluZm8sIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBJbmRleGluZ1R5
cGUgaW5kZXhpbmdUeXBlLCB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSwgYm9vbCBtYWtlUG9seVBy
b3RvU3RydWN0dXJlKQogewogICAgIFJFTEVBU0VfQVNTRVJUKCEhcHJvdG90eXBlKTsgLy8gV2Ug
dXNlIG51bGxwdHIgaW5zaWRlIHRoZSBIYXNoTWFwIGZvciBwcm90b3R5cGUgdG8gbWVhbiBwb2x5
IHByb3RvLCBzbyB1c2VyJ3Mgb2YgdGhpcyBBUEkgbXVzdCBwcm92aWRlIG5vbi1udWxsIHByb3Rv
dHlwZXMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5cGVNYXAu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5cGVN
YXAuaAkocmV2aXNpb24gMjIyODkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJvdG90eXBlTWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDggKzQ5LDggQEAgcHVibGljOgog
ICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0cnVjdHVyZSogZW1wdHlPYmplY3RTdHJ1Y3R1cmVGb3JQ
cm90b3R5cGUoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCosIHVuc2lnbmVkIGlubGluZUNhcGFj
aXR5LCBib29sIG1ha2VQb2x5UHJvdG9TdHJ1Y3R1cmUgPSBmYWxzZSk7CiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgU3RydWN0dXJlKiBlbXB0eVN0cnVjdHVyZUZvclByb3RvdHlwZUZyb21CYXNlU3Ry
dWN0dXJlKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKICAgICB2b2lk
IGNsZWFyRW1wdHlPYmplY3RTdHJ1Y3R1cmVGb3JQcm90b3R5cGUoSlNHbG9iYWxPYmplY3QqLCBK
U09iamVjdCosIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5KTsKLSAgICBKU19FWFBPUlRfUFJJVkFU
RSB2b2lkIGFkZFByb3RvdHlwZShKU09iamVjdCopOwotICAgIGlubGluZSBUcmlTdGF0ZSBpc1By
b3RvdHlwZShKU09iamVjdCopIGNvbnN0OyAvLyBSZXR1cm5zIGEgY29uc2VydmF0aXZlIGVzdGlt
YXRlLgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBhZGRQcm90b3R5cGUoSlNPYmplY3QqKTsKKyAg
ICBBTFdBWVNfSU5MSU5FIFRyaVN0YXRlIGlzUHJvdG90eXBlKEpTT2JqZWN0KikgY29uc3Q7IC8v
IFJldHVybnMgYSBjb25zZXJ2YXRpdmUgZXN0aW1hdGUuCiAKIHByaXZhdGU6CiAgICAgU3RydWN0
dXJlKiBjcmVhdGVFbXB0eVN0cnVjdHVyZShKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiBwcm90
b3R5cGUsIGNvbnN0IFR5cGVJbmZvJiwgY29uc3QgQ2xhc3NJbmZvKiwgSW5kZXhpbmdUeXBlLCB1
bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSwgYm9vbCBtYWtlUG9seVByb3RvU3RydWN0dXJlKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZU1hcElubGluZXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5cGVNYXBJ
bmxpbmVzLmgJKHJldmlzaW9uIDIyMjg5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3RvdHlwZU1hcElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBA
QAogCiBuYW1lc3BhY2UgSlNDIHsKIAotaW5saW5lIFRyaVN0YXRlIFByb3RvdHlwZU1hcDo6aXNQ
cm90b3R5cGUoSlNPYmplY3QqIG9iamVjdCkgY29uc3QKK0FMV0FZU19JTkxJTkUgVHJpU3RhdGUg
UHJvdG90eXBlTWFwOjppc1Byb3RvdHlwZShKU09iamVjdCogb2JqZWN0KSBjb25zdAogewogICAg
IGlmICghbV9wcm90b3R5cGVzLmNvbnRhaW5zKG9iamVjdCkpCiAgICAgICAgIHJldHVybiBGYWxz
ZVRyaVN0YXRlOwpAQCAtNDIsNSArNDIsMjYgQEAgaW5saW5lIFRyaVN0YXRlIFByb3RvdHlwZU1h
cDo6aXNQcm90b3R5cAogICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOwogfQogCitBTFdBWVNfSU5M
SU5FIHZvaWQgUHJvdG90eXBlTWFwOjphZGRQcm90b3R5cGUoSlNPYmplY3QqIG9iamVjdCkKK3sK
KyAgICBtX3Byb3RvdHlwZXMuc2V0KG9iamVjdCwgb2JqZWN0KTsKKworICAgIC8vIE5vdGUgdGhh
dCB0aGlzIG1ldGhvZCBtYWtlcyB0aGUgc29tZXdoYXQgb2RkIGRlY2lzaW9uIHRvIG5vdCBjaGVj
ayBpZiB0aGlzCisgICAgLy8gb2JqZWN0IGN1cnJlbnRseSBoYXMgaW5kZXhlZCBhY2Nlc3NvcnMu
IFdlIGNvdWxkIGRvIHRoYXQgY2hlY2sgaGVyZSwgYW5kIGlmCisgICAgLy8gaW5kZXhlZCBhY2Nl
c3NvcnMgd2VyZSBmb3VuZCwgd2UgY291bGQgdGVsbCB0aGUgZ2xvYmFsIG9iamVjdCB0byBoYXZl
IGEgYmFkCisgICAgLy8gdGltZS4gQnV0IHdlIGF2b2lkIHRoaXMsIHRvIGFsbG93IHRoZSBmb2xs
b3dpbmcgdG8gYmUgYWx3YXlzIGZhc3Q6CisgICAgLy8KKyAgICAvLyAxKSBDcmVhdGUgYW4gb2Jq
ZWN0LgorICAgIC8vIDIpIEdpdmUgaXQgYSBzZXR0ZXIgb3IgcmVhZC1vbmx5IHByb3BlcnR5IHRo
YXQgaGFwcGVucyB0byBoYXZlIGEgbnVtZXJpYyBuYW1lLgorICAgIC8vIDMpIEFsbG9jYXRlIG9i
amVjdHMgdGhhdCB1c2UgdGhpcyBvYmplY3QgYXMgYSBwcm90b3R5cGUuCisgICAgLy8KKyAgICAv
LyBUaGlzIGF2b2lkcyBhbnlvbmUgaGF2aW5nIGEgYmFkIHRpbWUuIEV2ZW4gaWYgdGhlIGluc3Rh
bmNlIG9iamVjdHMgZW5kIHVwCisgICAgLy8gaGF2aW5nIGluZGV4ZWQgc3RvcmFnZSwgdGhlIGNy
ZWF0aW9uIG9mIGluZGV4ZWQgc3RvcmFnZSBsZWFkcyB0byBhIHByb3RvdHlwZQorICAgIC8vIGNo
YWluIHdhbGsgdGhhdCBkZXRlY3RzIHRoZSBwcmVzZW5jZSBvZiBpbmRleGVkIHNldHRlcnMgYW5k
IHRoZW4gZG9lcyB0aGUKKyAgICAvLyByaWdodCB0aGluZy4gQXMgYSByZXN1bHQsIGhhdmluZyBh
IGJhZCB0aW1lIG9ubHkgaGFwcGVucyBpZiB5b3UgYWRkIGFuCisgICAgLy8gaW5kZXhlZCBzZXR0
ZXIgKG9yIGdldHRlciwgb3IgcmVhZC1vbmx5IGZpZWxkKSB0byBhbiBvYmplY3QgdGhhdCBpcyBh
bHJlYWR5CisgICAgLy8gdXNlZCBhcyBhIHByb3RvdHlwZS4KK30KKwogfSAvLyBuYW1lc3BhY2Ug
SlNDCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322766</attachid>
            <date>2017-10-04 19:57:15 -0700</date>
            <delta_ts>2017-10-05 00:38:04 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>16745</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMjI4OTApCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE2IEBACisyMDE3LTEwLTA0ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIE1ha2Ugc3VyZSBhbGwgcHJvdG90eXBlcyB1bmRlciBwb2x5IHByb3Rv
IGdldCBhZGRlZCBpbnRvIHRoZSBWTSdzIHByb3RvdHlwZSBtYXAKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NzkwOQorCisgICAgICAgIFJldmlld2Vk
IGJ5IEtlaXRoIE1pbGxlci4KKworICAgICAgICAqIHN0cmVzcy9wb2x5LXByb3RvLXByb3RvdHlw
ZS1tYXAtaGF2aW5nLWEtYmFkLXRpbWUuanM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAg
ICAgICAgKGZvby5DKToKKyAgICAgICAgKGZvbyk6CisgICAgICAgIChzZXQgeCk6CisKIDIwMTct
MTAtMDQgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgUmVt
b3ZlIGZhaWx1cmUgZXhwZWN0YXRpb24gZm9yIGFzeW5jLWZ1bmMtZGVjbC1kc3RyLW9iai1pZC1w
dXQtdW5yZXNvbHZhYmxlLW5vLXN0cmljdC5qcy4KSW5kZXg6IEpTVGVzdHMvc3RyZXNzL3BvbHkt
cHJvdG8tcHJvdG90eXBlLW1hcC1oYXZpbmctYS1iYWQtdGltZS5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
U1Rlc3RzL3N0cmVzcy9wb2x5LXByb3RvLXByb3RvdHlwZS1tYXAtaGF2aW5nLWEtYmFkLXRpbWUu
anMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9zdHJlc3MvcG9seS1wcm90by1wcm90b3R5cGUt
bWFwLWhhdmluZy1hLWJhZC10aW1lLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzAgQEAK
K2Z1bmN0aW9uIGFzc2VydChiKSB7CisgICAgaWYgKCFiKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoIkJhZCBhc3NlcnRpb24iKTsKK30KKworZnVuY3Rpb24gZm9vKCkgeworICAgIGNsYXNzIEMg
eworICAgICAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgICAgIHRoaXMueCA9IDIwOworICAg
ICAgICB9CisgICAgfTsKKyAgICBsZXQgaXRlbSA9IG5ldyBDOworICAgIGl0ZW1bMF0gPSA0MjsK
KyAgICByZXR1cm4gW2l0ZW0sIEMucHJvdG90eXBlXTsKK30KKworZm9yIChsZXQgaSA9IDA7IGkg
PCA1MDsgKytpKQorICAgIGZvbygpOworCitsZXQgW2l0ZW0sIHByb3RvXSA9IGZvbygpOworbGV0
IGNhbGxlZCA9IGZhbHNlOworT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3RvLCAiMSIsIHsKKyAg
ICBzZXQoeCkgeworICAgICAgICBjYWxsZWQgPSB0cnVlOworICAgIH0KK30pOworCithc3NlcnQo
IWNhbGxlZCk7CitpdGVtWzFdID0gNDI7Cithc3NlcnQoY2FsbGVkKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjIyODkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDE3LTEwLTA0ICBT
YWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2Ugc3VyZSBhbGwg
cHJvdG90eXBlcyB1bmRlciBwb2x5IHByb3RvIGdldCBhZGRlZCBpbnRvIHRoZSBWTSdzIHByb3Rv
dHlwZSBtYXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3NzkwOQorCisgICAgICAgIFJldmlld2VkIGJ5IEtlaXRoIE1pbGxlci4KKworICAgICAgICBU
aGlzIGlzIGFuIGludmFyaWFudCBvZiBwcm90b3R5cGVzIHRoYXQgSSBicm9rZSB3aGVuIGRvaW5n
IHBvbHkgcHJvdG8uIFRoaXMgcGF0Y2ggZml4ZXMgaXQuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVj
b2RlTGlzdC5qc29uOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRm
Zy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5j
cHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1lL0pT
Q0lubGluZXMuaDoKKyAgICAgICAgKiBydW50aW1lL1Byb3RvdHlwZU1hcC5jcHA6CisgICAgICAg
IChKU0M6OlByb3RvdHlwZU1hcDo6YWRkUHJvdG90eXBlKTogRGVsZXRlZC4KKyAgICAgICAgKiBy
dW50aW1lL1Byb3RvdHlwZU1hcC5oOgorICAgICAgICAqIHJ1bnRpbWUvUHJvdG90eXBlTWFwSW5s
aW5lcy5oOgorICAgICAgICAoSlNDOjpQcm90b3R5cGVNYXA6OmlzUHJvdG90eXBlIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6UHJvdG90eXBlTWFwOjphZGRQcm90b3R5cGUpOgorCiAyMDE3LTEwLTA0
ICBNYXR0IEJha2VyICA8bWF0dGJha2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVj
dG9yOiBJbXByb3ZlIENhbnZhc01hbmFnZXIgcmVjb3JkaW5nIGV2ZW50cwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIyMjg5MCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC00NDcsNyArNDQ3LDcgQEAKIAkJMEY5RTMyNjQxQjA1QUIwNDAwODAxRUQ1IC8q
IERGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjlFMzI2MjFCMDVBQjA0MDA4MDFFRDUgLyogREZHU3Rv
cmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuaCAqLzsgfTsKIAkJMEY5RkI0RjUxN0ZDQjkxNzAwQ0I2
N0Y4IC8qIERGR1N0YWNrTGF5b3V0UGhhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGOUZCNEYzMTdGQ0I5MTcwMENCNjdGOCAvKiBERkdTdGFja0xh
eW91dFBoYXNlLmggKi87IH07CiAJCTBGOUZDOEM1MTRFMUI2MDQwMEQ1MkFFMCAvKiBQdXRLaW5k
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjlGQzhD
MTE0RTFCNUZCMDBENTJBRTAgLyogUHV0S2luZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTBGQTEzMTcxMUQ4REQ3MkIwMEVDMTMwQSAvKiBQcm90
b3R5cGVNYXBJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkExMzE3MDFEOERENzI5MDBFQzEzMEEgLyogUHJvdG90eXBlTWFwSW5saW5lcy5o
ICovOyB9OworCQkwRkExMzE3MTFEOERENzJCMDBFQzEzMEEgLyogUHJvdG90eXBlTWFwSW5saW5l
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZBMTMx
NzAxRDhERDcyOTAwRUMxMzBBIC8qIFByb3RvdHlwZU1hcElubGluZXMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkEyQzE3QzE3RDdDRjg0MDA5
RDAxNUYgLyogVGVzdFJ1bm5lclV0aWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRkEyQzE3QTE3RDdDRjg0MDA5RDAxNUYgLyogVGVzdFJ1bm5lclV0
aWxzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEZBNTgxQkIxNTBFOTUzMDAwQjlBMkQ5IC8qIERGR05vZGVGbGFncy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZBNTgxQjgxNTBFOTUyQTAwQjlBMkQ5
IC8qIERGR05vZGVGbGFncy5oICovOyB9OwogCQkwRkE1ODFCQzE1MEU5NTMwMDBCOUEyRDkgLyog
REZHTm9kZVR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGQTU4MUI5MTUwRTk1MkEwMEI5QTJEOSAvKiBERkdOb2RlVHlwZS5oICovOyB9OwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNv
bgkocmV2aXNpb24gMjIyODkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGlzdC5qc29uCSh3b3JraW5nIGNvcHkpCkBAIC04LDcgKzgsMTEgQEAKICAgICAgICAg
ICAgIHsgIm5hbWUiIDogIm9wX2NyZWF0ZV9kaXJlY3RfYXJndW1lbnRzIiwgImxlbmd0aCIgOiAy
IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jcmVhdGVfc2NvcGVkX2FyZ3VtZW50cyIs
ICJsZW5ndGgiIDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY3JlYXRlX2Nsb25l
ZF9hcmd1bWVudHMiLCAibGVuZ3RoIiA6IDIgfSwKLSAgICAgICAgICAgIHsgIm5hbWUiIDogIm9w
X2NyZWF0ZV90aGlzIiwgImxlbmd0aCIgOiA1IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJv
cF9jcmVhdGVfdGhpcyIsICJvZmZzZXRzIiA6CisgICAgICAgICAgICAgICAgICAgICAgIFt7ImRz
dCIgOiAiaW50In0sCisgICAgICAgICAgICAgICAgICAgICAgICB7ImNhbGxlZSIgOiAiaW50In0s
CisgICAgICAgICAgICAgICAgICAgICAgICB7ImlubGluZUNhcGFjaXR5IiA6ICJpbnQifSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHsiY2FjaGVkQ2FsbGVlIiA6ICJXcml0ZUJhcnJpZXI8SlND
ZWxsPiJ9XX0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9nZXRfYXJndW1lbnQiLCAibGVu
Z3RoIiA6IDQgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2FyZ3VtZW50X2NvdW50Iiwg
Imxlbmd0aCIgOiAyIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90b190aGlzIiwgImxl
bmd0aCIgOiA0IH0sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMjIyODkwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzMjQsMTIg
KzQzMjQsMTIgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAg
ICAgICB9CiAKICAgICAgICAgY2FzZSBvcF9jcmVhdGVfdGhpczogewotICAgICAgICAgICAgaW50
IGNhbGxlZU9wZXJhbmQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwotICAgICAg
ICAgICAgTm9kZSogY2FsbGVlID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjYWxsZWVPcGVyYW5kKSk7
CisgICAgICAgICAgICBhdXRvJiBieXRlY29kZSA9ICpyZWludGVycHJldF9jYXN0PE9wQ3JlYXRl
VGhpcyo+KGN1cnJlbnRJbnN0cnVjdGlvbik7CisgICAgICAgICAgICBOb2RlKiBjYWxsZWUgPSBn
ZXQoVmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLmNhbGxlZSgpKSk7CiAKICAgICAgICAgICAgIEpT
RnVuY3Rpb24qIGZ1bmN0aW9uID0gY2FsbGVlLT5keW5hbWljQ2FzdENvbnN0YW50PEpTRnVuY3Rp
b24qPigqbV92bSk7CiAgICAgICAgICAgICBpZiAoIWZ1bmN0aW9uKSB7Ci0gICAgICAgICAgICAg
ICAgSlNDZWxsKiBjYWNoZWRGdW5jdGlvbiA9IGN1cnJlbnRJbnN0cnVjdGlvbls0XS51LmpzQ2Vs
bC51bnZhbGlkYXRlZEdldCgpOworICAgICAgICAgICAgICAgIEpTQ2VsbCogY2FjaGVkRnVuY3Rp
b24gPSBieXRlY29kZS5jYWNoZWRDYWxsZWUoKS51bnZhbGlkYXRlZEdldCgpOwogICAgICAgICAg
ICAgICAgIGlmIChjYWNoZWRGdW5jdGlvbgogICAgICAgICAgICAgICAgICAgICAmJiBjYWNoZWRG
dW5jdGlvbiAhPSBKU0NlbGw6OnNlZW5NdWx0aXBsZUNhbGxlZU9iamVjdHMoKQogICAgICAgICAg
ICAgICAgICAgICAmJiAhbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0
ZShtX2N1cnJlbnRJbmRleCwgQmFkQ2VsbCkpIHsKQEAgLTQzNTMsMTUgKzQzNTMsMTUgQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fZ3JhcGgud2F0Y2hwb2ludHMoKS5hZGRMYXppbHkocmFyZURhdGEtPmFsbG9j
YXRpb25Qcm9maWxlV2F0Y2hwb2ludFNldCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBUaGUgY2FsbGVlIGlzIHN0aWxsIGxpdmUgdXAgdG8gdGhpcyBwb2ludC4KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGNhbGxlZSk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kKSwgYWRkVG9HcmFwaChOZXdPYmplY3QsIE9wSW5mbyhtX2dyYXBoLnJl
Z2lzdGVyU3RydWN0dXJlKHN0cnVjdHVyZSkpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2V0KFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5kc3QoKSksIGFkZFRvR3JhcGgoTmV3T2Jq
ZWN0LCBPcEluZm8obV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShzdHJ1Y3R1cmUpKSkpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFscmVhZHlFbWl0dGVkID0gdHJ1ZTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICghYWxyZWFkeUVtaXR0ZWQpIHsKLSAg
ICAgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQpLAotICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKENyZWF0ZVRoaXMsIE9w
SW5mbyhjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKSwgY2FsbGVlKSk7CisgICAgICAg
ICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5kc3QoKSksCisgICAgICAgICAg
ICAgICAgICAgIGFkZFRvR3JhcGgoQ3JlYXRlVGhpcywgT3BJbmZvKGJ5dGVjb2RlLmlubGluZUNh
cGFjaXR5KCkpLCBjYWxsZWUpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIE5FWFRfT1BD
T0RFKG9wX2NyZWF0ZV90aGlzKTsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyMjI4OTApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NDYsOCArMjQ2LDExIEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVUaGkK
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAgICAgICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlID0gcmFyZURhdGEtPm9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkt
PnN0cnVjdHVyZSgpOwogICAgICAgICBKU09iamVjdCogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlP
YmplY3QoZXhlYywgc3RydWN0dXJlKTsKLSAgICAgICAgaWYgKHN0cnVjdHVyZS0+aGFzUG9seVBy
b3RvKCkpCi0gICAgICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgc3RydWN0dXJlLT5wb2x5
UHJvdG9PZmZzZXQoKSwganNDYXN0PEpTRnVuY3Rpb24qPihjb25zdHJ1Y3RvciktPnByb3RvdHlw
ZUZvckNvbnN0cnVjdGlvbih2bSwgZXhlYykpOworICAgICAgICBpZiAoc3RydWN0dXJlLT5oYXNQ
b2x5UHJvdG8oKSkgeworICAgICAgICAgICAgSlNPYmplY3QqIHByb3RvdHlwZSA9IGpzQ2FzdDxK
U0Z1bmN0aW9uKj4oY29uc3RydWN0b3IpLT5wcm90b3R5cGVGb3JDb25zdHJ1Y3Rpb24odm0sIGV4
ZWMpOworICAgICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIHN0cnVjdHVyZS0+cG9seVBy
b3RvT2Zmc2V0KCksIHByb3RvdHlwZSk7CisgICAgICAgICAgICB2bS5wcm90b3R5cGVNYXAuYWRk
UHJvdG90eXBlKHByb3RvdHlwZSk7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMjIyODkwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiAr
MjksNyBAQAogI2luY2x1ZGUgIkFyaXRoUHJvZmlsZS5oIgogI2luY2x1ZGUgIkFycmF5Q29uc3Ry
dWN0b3IuaCIKICNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIKKyNpbmNsdWRlICJCeXRlY29kZVN0
cnVjdHMuaCIKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJDbG9uZWRBcmd1bWVu
dHMuaCIKICNpbmNsdWRlICJDb2RlUHJvZmlsaW5nLmgiCkBAIC05Myw2ICs5NCw4IEBAIG5hbWVz
cGFjZSBKU0MgewogI2RlZmluZSBPUChpbmRleCkgKGV4ZWMtPnVuY2hlY2tlZFIocGNbaW5kZXhd
LnUub3BlcmFuZCkpCiAjZGVmaW5lIE9QX0MoaW5kZXgpIChleGVjLT5yKHBjW2luZGV4XS51Lm9w
ZXJhbmQpKQogCisjZGVmaW5lIEdFVChvcGVyYW5kKSAoZXhlYy0+dW5jaGVja2VkUihvcGVyYW5k
KSkKKwogI2RlZmluZSBSRVRVUk5fVFdPKGZpcnN0LCBzZWNvbmQpIGRvIHsgICAgICAgXAogICAg
ICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KGZpcnN0LCBzZWNvbmQpOyAgICAgICAgXAogICAgIH0g
d2hpbGUgKGZhbHNlKQpAQCAtMjI5LDIxICsyMzIsMjUgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX2NyZWF0ZV9jbG9uZWRfYQogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV90aGlz
KQogewogICAgIEJFR0lOKCk7CisgICAgYXV0byYgYnl0ZWNvZGUgPSAqcmVpbnRlcnByZXRfY2Fz
dDxPcENyZWF0ZVRoaXMqPihwYyk7CiAgICAgSlNPYmplY3QqIHJlc3VsdDsKLSAgICBKU09iamVj
dCogY29uc3RydWN0b3JBc09iamVjdCA9IGFzT2JqZWN0KE9QKDIpLmpzVmFsdWUoKSk7CisgICAg
SlNPYmplY3QqIGNvbnN0cnVjdG9yQXNPYmplY3QgPSBhc09iamVjdChHRVQoYnl0ZWNvZGUuY2Fs
bGVlKCkpLmpzVmFsdWUoKSk7CiAgICAgaWYgKGNvbnN0cnVjdG9yQXNPYmplY3QtPnR5cGUoKSA9
PSBKU0Z1bmN0aW9uVHlwZSkgewogICAgICAgICBKU0Z1bmN0aW9uKiBjb25zdHJ1Y3RvciA9IGpz
Q2FzdDxKU0Z1bmN0aW9uKj4oY29uc3RydWN0b3JBc09iamVjdCk7Ci0gICAgICAgIGF1dG8mIGNh
Y2hlV3JpdGVCYXJyaWVyID0gcGNbNF0udS5qc0NlbGw7Ci0gICAgICAgIGlmICghY2FjaGVXcml0
ZUJhcnJpZXIpCi0gICAgICAgICAgICBjYWNoZVdyaXRlQmFycmllci5zZXQodm0sIGV4ZWMtPmNv
ZGVCbG9jaygpLCBjb25zdHJ1Y3Rvcik7Ci0gICAgICAgIGVsc2UgaWYgKGNhY2hlV3JpdGVCYXJy
aWVyLnVudmFsaWRhdGVkR2V0KCkgIT0gSlNDZWxsOjpzZWVuTXVsdGlwbGVDYWxsZWVPYmplY3Rz
KCkgJiYgY2FjaGVXcml0ZUJhcnJpZXIuZ2V0KCkgIT0gY29uc3RydWN0b3IpCi0gICAgICAgICAg
ICBjYWNoZVdyaXRlQmFycmllci5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKEpTQ2VsbDo6c2Vlbk11
bHRpcGxlQ2FsbGVlT2JqZWN0cygpKTsKKyAgICAgICAgV3JpdGVCYXJyaWVyPEpTQ2VsbD4mIGNh
Y2hlZENhbGxlZSA9IGJ5dGVjb2RlLmNhY2hlZENhbGxlZSgpOworICAgICAgICBpZiAoIWNhY2hl
ZENhbGxlZSkKKyAgICAgICAgICAgIGNhY2hlZENhbGxlZS5zZXQodm0sIGV4ZWMtPmNvZGVCbG9j
aygpLCBjb25zdHJ1Y3Rvcik7CisgICAgICAgIGVsc2UgaWYgKGNhY2hlZENhbGxlZS51bnZhbGlk
YXRlZEdldCgpICE9IEpTQ2VsbDo6c2Vlbk11bHRpcGxlQ2FsbGVlT2JqZWN0cygpICYmIGNhY2hl
ZENhbGxlZS5nZXQoKSAhPSBjb25zdHJ1Y3RvcikKKyAgICAgICAgICAgIGNhY2hlZENhbGxlZS5z
ZXRXaXRob3V0V3JpdGVCYXJyaWVyKEpTQ2VsbDo6c2Vlbk11bHRpcGxlQ2FsbGVlT2JqZWN0cygp
KTsKIAotICAgICAgICBzaXplX3QgaW5saW5lQ2FwYWNpdHkgPSBwY1szXS51Lm9wZXJhbmQ7Cisg
ICAgICAgIHNpemVfdCBpbmxpbmVDYXBhY2l0eSA9IGJ5dGVjb2RlLmlubGluZUNhcGFjaXR5KCk7
CiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gY29uc3RydWN0b3ItPnJhcmVEYXRhKGV4
ZWMsIGlubGluZUNhcGFjaXR5KS0+b2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKS0+c3RydWN0dXJl
KCk7CiAgICAgICAgIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIHN0cnVjdHVy
ZSk7Ci0gICAgICAgIGlmIChzdHJ1Y3R1cmUtPmhhc1BvbHlQcm90bygpKQotICAgICAgICAgICAg
cmVzdWx0LT5wdXREaXJlY3Qodm0sIHN0cnVjdHVyZS0+cG9seVByb3RvT2Zmc2V0KCksIGNvbnN0
cnVjdG9yLT5wcm90b3R5cGVGb3JDb25zdHJ1Y3Rpb24odm0sIGV4ZWMpKTsKKyAgICAgICAgaWYg
KHN0cnVjdHVyZS0+aGFzUG9seVByb3RvKCkpIHsKKyAgICAgICAgICAgIEpTT2JqZWN0KiBwcm90
b3R5cGUgPSBjb25zdHJ1Y3Rvci0+cHJvdG90eXBlRm9yQ29uc3RydWN0aW9uKHZtLCBleGVjKTsK
KyAgICAgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBzdHJ1Y3R1cmUtPnBvbHlQcm90b09m
ZnNldCgpLCBwcm90b3R5cGUpOworICAgICAgICAgICAgdm0ucHJvdG90eXBlTWFwLmFkZFByb3Rv
dHlwZShwcm90b3R5cGUpOworICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gaHR0
cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtb3JkaW5hcnljcmVh
dGVmcm9tY29uc3RydWN0b3IKICAgICAgICAgSlNWYWx1ZSBwcm90byA9IGNvbnN0cnVjdG9yQXNP
YmplY3QtPmdldChleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSW5saW5lcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0lubGluZXMuaAkocmV2aXNpb24gMjIyODkw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSW5saW5lcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAiSlNQcm94eS5oIgogI2luY2x1ZGUg
IkpTU3RyaW5nLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgorI2luY2x1ZGUgIlByb3RvdHlw
ZU1hcElubGluZXMuaCIKICNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKICNpbmNsdWRl
ICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiVGhyb3dTY29wZS5oIgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlTWFwLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5cGVNYXAuY3BwCShyZXZpc2lv
biAyMjI4OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5cGVNYXAu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywyNyArMzMsNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsK
IAotdm9pZCBQcm90b3R5cGVNYXA6OmFkZFByb3RvdHlwZShKU09iamVjdCogb2JqZWN0KQotewot
ICAgIG1fcHJvdG90eXBlcy5zZXQob2JqZWN0LCBvYmplY3QpOwotCi0gICAgLy8gTm90ZSB0aGF0
IHRoaXMgbWV0aG9kIG1ha2VzIHRoZSBzb21ld2hhdCBvZGQgZGVjaXNpb24gdG8gbm90IGNoZWNr
IGlmIHRoaXMKLSAgICAvLyBvYmplY3QgY3VycmVudGx5IGhhcyBpbmRleGVkIGFjY2Vzc29ycy4g
V2UgY291bGQgZG8gdGhhdCBjaGVjayBoZXJlLCBhbmQgaWYKLSAgICAvLyBpbmRleGVkIGFjY2Vz
c29ycyB3ZXJlIGZvdW5kLCB3ZSBjb3VsZCB0ZWxsIHRoZSBnbG9iYWwgb2JqZWN0IHRvIGhhdmUg
YSBiYWQKLSAgICAvLyB0aW1lLiBCdXQgd2UgYXZvaWQgdGhpcywgdG8gYWxsb3cgdGhlIGZvbGxv
d2luZyB0byBiZSBhbHdheXMgZmFzdDoKLSAgICAvLwotICAgIC8vIDEpIENyZWF0ZSBhbiBvYmpl
Y3QuCi0gICAgLy8gMikgR2l2ZSBpdCBhIHNldHRlciBvciByZWFkLW9ubHkgcHJvcGVydHkgdGhh
dCBoYXBwZW5zIHRvIGhhdmUgYSBudW1lcmljIG5hbWUuCi0gICAgLy8gMykgQWxsb2NhdGUgb2Jq
ZWN0cyB0aGF0IHVzZSB0aGlzIG9iamVjdCBhcyBhIHByb3RvdHlwZS4KLSAgICAvLwotICAgIC8v
IFRoaXMgYXZvaWRzIGFueW9uZSBoYXZpbmcgYSBiYWQgdGltZS4gRXZlbiBpZiB0aGUgaW5zdGFu
Y2Ugb2JqZWN0cyBlbmQgdXAKLSAgICAvLyBoYXZpbmcgaW5kZXhlZCBzdG9yYWdlLCB0aGUgY3Jl
YXRpb24gb2YgaW5kZXhlZCBzdG9yYWdlIGxlYWRzIHRvIGEgcHJvdG90eXBlCi0gICAgLy8gY2hh
aW4gd2FsayB0aGF0IGRldGVjdHMgdGhlIHByZXNlbmNlIG9mIGluZGV4ZWQgc2V0dGVycyBhbmQg
dGhlbiBkb2VzIHRoZQotICAgIC8vIHJpZ2h0IHRoaW5nLiBBcyBhIHJlc3VsdCwgaGF2aW5nIGEg
YmFkIHRpbWUgb25seSBoYXBwZW5zIGlmIHlvdSBhZGQgYW4KLSAgICAvLyBpbmRleGVkIHNldHRl
ciAob3IgZ2V0dGVyLCBvciByZWFkLW9ubHkgZmllbGQpIHRvIGFuIG9iamVjdCB0aGF0IGlzIGFs
cmVhZHkKLSAgICAvLyB1c2VkIGFzIGEgcHJvdG90eXBlLgotfQotCiBpbmxpbmUgU3RydWN0dXJl
KiBQcm90b3R5cGVNYXA6OmNyZWF0ZUVtcHR5U3RydWN0dXJlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTT2JqZWN0KiBwcm90b3R5cGUsIGNvbnN0IFR5cGVJbmZvJiB0eXBlSW5mbywg
Y29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGUsIHVu
c2lnbmVkIGlubGluZUNhcGFjaXR5LCBib29sIG1ha2VQb2x5UHJvdG9TdHJ1Y3R1cmUpCiB7CiAg
ICAgUkVMRUFTRV9BU1NFUlQoISFwcm90b3R5cGUpOyAvLyBXZSB1c2UgbnVsbHB0ciBpbnNpZGUg
dGhlIEhhc2hNYXAgZm9yIHByb3RvdHlwZSB0byBtZWFuIHBvbHkgcHJvdG8sIHNvIHVzZXIncyBv
ZiB0aGlzIEFQSSBtdXN0IHByb3ZpZGUgbm9uLW51bGwgcHJvdG90eXBlcy4KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZU1hcC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZU1hcC5oCShyZXZpc2lvbiAyMjI4
OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5cGVNYXAuaAkod29y
a2luZyBjb3B5KQpAQCAtNDksOCArNDksOCBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgU3RydWN0dXJlKiBlbXB0eU9iamVjdFN0cnVjdHVyZUZvclByb3RvdHlwZShKU0dsb2JhbE9i
amVjdCosIEpTT2JqZWN0KiwgdW5zaWduZWQgaW5saW5lQ2FwYWNpdHksIGJvb2wgbWFrZVBvbHlQ
cm90b1N0cnVjdHVyZSA9IGZhbHNlKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBTdHJ1Y3R1cmUq
IGVtcHR5U3RydWN0dXJlRm9yUHJvdG90eXBlRnJvbUJhc2VTdHJ1Y3R1cmUoSlNHbG9iYWxPYmpl
Y3QqLCBKU09iamVjdCosIFN0cnVjdHVyZSopOwogICAgIHZvaWQgY2xlYXJFbXB0eU9iamVjdFN0
cnVjdHVyZUZvclByb3RvdHlwZShKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiwgdW5zaWduZWQg
aW5saW5lQ2FwYWNpdHkpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgYWRkUHJvdG90eXBl
KEpTT2JqZWN0Kik7Ci0gICAgaW5saW5lIFRyaVN0YXRlIGlzUHJvdG90eXBlKEpTT2JqZWN0Kikg
Y29uc3Q7IC8vIFJldHVybnMgYSBjb25zZXJ2YXRpdmUgZXN0aW1hdGUuCisgICAgQUxXQVlTX0lO
TElORSB2b2lkIGFkZFByb3RvdHlwZShKU09iamVjdCopOworICAgIEFMV0FZU19JTkxJTkUgVHJp
U3RhdGUgaXNQcm90b3R5cGUoSlNPYmplY3QqKSBjb25zdDsgLy8gUmV0dXJucyBhIGNvbnNlcnZh
dGl2ZSBlc3RpbWF0ZS4KIAogcHJpdmF0ZToKICAgICBTdHJ1Y3R1cmUqIGNyZWF0ZUVtcHR5U3Ry
dWN0dXJlKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIHByb3RvdHlwZSwgY29uc3QgVHlwZUlu
Zm8mLCBjb25zdCBDbGFzc0luZm8qLCBJbmRleGluZ1R5cGUsIHVuc2lnbmVkIGlubGluZUNhcGFj
aXR5LCBib29sIG1ha2VQb2x5UHJvdG9TdHJ1Y3R1cmUpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlTWFwSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZU1hcElubGluZXMuaAkocmV2aXNpb24g
MjIyODkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlTWFwSW5s
aW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBKU0Mg
ewogCi1pbmxpbmUgVHJpU3RhdGUgUHJvdG90eXBlTWFwOjppc1Byb3RvdHlwZShKU09iamVjdCog
b2JqZWN0KSBjb25zdAorQUxXQVlTX0lOTElORSBUcmlTdGF0ZSBQcm90b3R5cGVNYXA6OmlzUHJv
dG90eXBlKEpTT2JqZWN0KiBvYmplY3QpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3Byb3RvdHlwZXMu
Y29udGFpbnMob2JqZWN0KSkKICAgICAgICAgcmV0dXJuIEZhbHNlVHJpU3RhdGU7CkBAIC00Miw1
ICs0MiwyNiBAQCBpbmxpbmUgVHJpU3RhdGUgUHJvdG90eXBlTWFwOjppc1Byb3RvdHlwCiAgICAg
cmV0dXJuIE1peGVkVHJpU3RhdGU7CiB9CiAKK0FMV0FZU19JTkxJTkUgdm9pZCBQcm90b3R5cGVN
YXA6OmFkZFByb3RvdHlwZShKU09iamVjdCogb2JqZWN0KQoreworICAgIG1fcHJvdG90eXBlcy5z
ZXQob2JqZWN0LCBvYmplY3QpOworCisgICAgLy8gTm90ZSB0aGF0IHRoaXMgbWV0aG9kIG1ha2Vz
IHRoZSBzb21ld2hhdCBvZGQgZGVjaXNpb24gdG8gbm90IGNoZWNrIGlmIHRoaXMKKyAgICAvLyBv
YmplY3QgY3VycmVudGx5IGhhcyBpbmRleGVkIGFjY2Vzc29ycy4gV2UgY291bGQgZG8gdGhhdCBj
aGVjayBoZXJlLCBhbmQgaWYKKyAgICAvLyBpbmRleGVkIGFjY2Vzc29ycyB3ZXJlIGZvdW5kLCB3
ZSBjb3VsZCB0ZWxsIHRoZSBnbG9iYWwgb2JqZWN0IHRvIGhhdmUgYSBiYWQKKyAgICAvLyB0aW1l
LiBCdXQgd2UgYXZvaWQgdGhpcywgdG8gYWxsb3cgdGhlIGZvbGxvd2luZyB0byBiZSBhbHdheXMg
ZmFzdDoKKyAgICAvLworICAgIC8vIDEpIENyZWF0ZSBhbiBvYmplY3QuCisgICAgLy8gMikgR2l2
ZSBpdCBhIHNldHRlciBvciByZWFkLW9ubHkgcHJvcGVydHkgdGhhdCBoYXBwZW5zIHRvIGhhdmUg
YSBudW1lcmljIG5hbWUuCisgICAgLy8gMykgQWxsb2NhdGUgb2JqZWN0cyB0aGF0IHVzZSB0aGlz
IG9iamVjdCBhcyBhIHByb3RvdHlwZS4KKyAgICAvLworICAgIC8vIFRoaXMgYXZvaWRzIGFueW9u
ZSBoYXZpbmcgYSBiYWQgdGltZS4gRXZlbiBpZiB0aGUgaW5zdGFuY2Ugb2JqZWN0cyBlbmQgdXAK
KyAgICAvLyBoYXZpbmcgaW5kZXhlZCBzdG9yYWdlLCB0aGUgY3JlYXRpb24gb2YgaW5kZXhlZCBz
dG9yYWdlIGxlYWRzIHRvIGEgcHJvdG90eXBlCisgICAgLy8gY2hhaW4gd2FsayB0aGF0IGRldGVj
dHMgdGhlIHByZXNlbmNlIG9mIGluZGV4ZWQgc2V0dGVycyBhbmQgdGhlbiBkb2VzIHRoZQorICAg
IC8vIHJpZ2h0IHRoaW5nLiBBcyBhIHJlc3VsdCwgaGF2aW5nIGEgYmFkIHRpbWUgb25seSBoYXBw
ZW5zIGlmIHlvdSBhZGQgYW4KKyAgICAvLyBpbmRleGVkIHNldHRlciAob3IgZ2V0dGVyLCBvciBy
ZWFkLW9ubHkgZmllbGQpIHRvIGFuIG9iamVjdCB0aGF0IGlzIGFscmVhZHkKKyAgICAvLyB1c2Vk
IGFzIGEgcHJvdG90eXBlLgorfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>