<?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>173342</bug_id>
          
          <creation_ts>2017-06-13 16:53:06 -0700</creation_ts>
          <short_desc>Add SPI for immediate injection of user scripts</short_desc>
          <delta_ts>2018-07-11 19:33:22 -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>New Bugs</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>173391</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>beidson</cc>
    
    <cc>berto</cc>
    
    <cc>buildbot</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gustavo</cc>
    
    <cc>jberlin</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1318898</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-06-13 16:53:06 -0700</bug_when>
    <thetext>Add SPI for immediate injection of user scripts</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1318902</commentid>
    <comment_count>1</comment_count>
      <attachid>312831</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-06-13 16:58:37 -0700</bug_when>
    <thetext>Created attachment 312831
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1318947</commentid>
    <comment_count>2</comment_count>
      <attachid>312844</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-06-13 18:18:11 -0700</bug_when>
    <thetext>Created attachment 312844
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1318950</commentid>
    <comment_count>3</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-06-13 18:21:04 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1318965</commentid>
    <comment_count>4</comment_count>
      <attachid>312844</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-06-13 19:02:43 -0700</bug_when>
    <thetext>Comment on attachment 312844
Patch

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

&gt; Source/WebKit2/UIProcess/API/C/WKPageGroup.cpp:101
&gt; +    const bool immediately = false;

Are you doing all of these const bool variables to make the code more readable?

Because, if so, we usually prefer to create a 2-state enum class.

(This pattern is weird...)

&gt; Source/WebKit2/UIProcess/API/C/WKUserContentControllerRef.cpp:55
&gt; +    const bool immediately = false;

Ditto...

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKUserContentController.mm:87
&gt; +    const bool immediately = false;

Ditto...

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKUserContentController.mm:178
&gt; +    const bool immediately = true;

Ditto...

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitUserContentManager.cpp:162
&gt; +    const bool immediately = false;

Ditto...

&gt; Source/WebKit2/UIProcess/UserContent/WebUserContentControllerProxy.cpp:157
&gt; +void WebUserContentControllerProxy::addUserScript(API::UserScript&amp; userScript, bool immediately)

Should be that same enum class mentioned above.

&gt; Source/WebKit2/WebProcess/UserContent/WebUserContentController.cpp:388
&gt; +    const bool immediately = false;

Ditto...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1319000</commentid>
    <comment_count>5</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-06-13 21:59:31 -0700</bug_when>
    <thetext>Yes. Any other comments?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1319008</commentid>
    <comment_count>6</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-06-13 22:54:49 -0700</bug_when>
    <thetext>Nah</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1319212</commentid>
    <comment_count>7</comment_count>
      <attachid>312904</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-06-14 10:42:53 -0700</bug_when>
    <thetext>Created attachment 312904
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1319263</commentid>
    <comment_count>8</comment_count>
      <attachid>312904</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-06-14 11:46:06 -0700</bug_when>
    <thetext>Comment on attachment 312904
Patch

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

r+ with one change (and green bots)

&gt; Source/WebCore/page/Frame.cpp:721
&gt; +    if (script.injectedFrames() == InjectInTopFrameOnly &amp;&amp; ownerElement())
&gt; +        return;

Checking ownerElement() is not a valid check for main-frameness

Use !isMainFrame() instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1319266</commentid>
    <comment_count>9</comment_count>
      <attachid>312911</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-06-14 12:00:24 -0700</bug_when>
    <thetext>Created attachment 312911
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1319290</commentid>
    <comment_count>10</comment_count>
      <attachid>312911</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-14 12:51:04 -0700</bug_when>
    <thetext>Comment on attachment 312911
Patch

Clearing flags on attachment: 312911

Committed r218285: &lt;http://trac.webkit.org/changeset/218285&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1319291</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-14 12:51:06 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1319390</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-14 17:37:01 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 173391</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441183</commentid>
    <comment_count>13</comment_count>
      <attachid>344770</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-07-11 10:44:11 -0700</bug_when>
    <thetext>Created attachment 344770
WIP Rebasing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441267</commentid>
    <comment_count>14</comment_count>
      <attachid>344785</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-07-11 16:10:34 -0700</bug_when>
    <thetext>Created attachment 344785
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441290</commentid>
    <comment_count>15</comment_count>
      <attachid>344785</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-07-11 17:07:52 -0700</bug_when>
    <thetext>Comment on attachment 344785
Patch

LGTM with happy bots.

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

&gt; Source/WebKit/UIProcess/UserContent/WebUserContentControllerProxy.cpp:180
&gt; +        process-&gt;send(Messages::WebUserContentController::AddUserScripts({ { userScript.identifier(), world-&gt;identifier(), userScript.userScript() } }, immediately), m_identifier.toUInt64());

s/m_identifier/Identifier()/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441295</commentid>
    <comment_count>16</comment_count>
      <attachid>344790</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-07-11 17:10:19 -0700</bug_when>
    <thetext>Created attachment 344790
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441302</commentid>
    <comment_count>17</comment_count>
      <attachid>344785</attachid>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2018-07-11 17:25:19 -0700</bug_when>
    <thetext>Comment on attachment 344785
Patch

From Geoff: AddUserScriptImmediately -&gt; InjectUserScriptImmediately</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441306</commentid>
    <comment_count>18</comment_count>
      <attachid>344795</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-07-11 17:33:45 -0700</bug_when>
    <thetext>Created attachment 344795
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441312</commentid>
    <comment_count>19</comment_count>
      <attachid>344798</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-07-11 17:47:25 -0700</bug_when>
    <thetext>Created attachment 344798
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441323</commentid>
    <comment_count>20</comment_count>
      <attachid>344802</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-07-11 18:05:30 -0700</bug_when>
    <thetext>Created attachment 344802
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441341</commentid>
    <comment_count>21</comment_count>
      <attachid>344802</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-07-11 19:32:25 -0700</bug_when>
    <thetext>Comment on attachment 344802
Patch

Clearing flags on attachment: 344802

Committed r233752: &lt;https://trac.webkit.org/changeset/233752&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441342</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-07-11 19:32:28 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441343</commentid>
    <comment_count>23</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-07-11 19:33:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/42101041&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>312831</attachid>
            <date>2017-06-13 16:58:37 -0700</date>
            <delta_ts>2017-06-13 18:18:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173342-20170613165836.patch</filename>
            <type>text/plain</type>
            <size>22265</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxODE0NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDE3LTA2LTEzICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSBm
b3IgaW1tZWRpYXRlIGluamVjdGlvbiBvZiB1c2VyIHNjcmlwdHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzM0MgorICAgICAgICA8cmRhcjovL3By
b2JsZW0vMjkyMDIyODU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhlIG5ldyBTUEkgaXMgV0tVc2VyQ29udGVudENvbnRyb2xsZXIuX2FkZFVzZXJT
Y3JpcHRJbW1lZGlhdGVseS4KKyAgICAgICAgSXQgaXMgY292ZXJlZCBieSBuZXcgQVBJIHRlc3Rz
LgorCisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6
aW5qZWN0VXNlclNjcmlwdHMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmluamVjdFVzZXJT
Y3JpcHRJbW1lZGlhdGVseSk6CisgICAgICAgIE1vdmUgaW5qZWN0aW9uIGZ1bmN0aW9uYWxpdHkg
dG8gYWxsb3cgdXMgdG8gY2FsbCBpdCBkaXJlY3RseSBmcm9tIHRoZSBuZXcgU1BJLgorICAgICAg
ICAqIHBhZ2UvRnJhbWUuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZTo6Zm9yRWFjaFBhZ2UpOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorCiAyMDE3
LTA2LTEyICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgTW9kZXJuaXplIFVzZXJTY3JpcHQuaApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAJKHJl
dmlzaW9uIDIxODE0NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03MDcsMjAgKzcwNywyNSBAQCB2b2lkIEZyYW1lOjppbmplY3RVc2VyU2NyaXB0
cyhVc2VyU2NyaXB0CiAgICAgICAgIHJldHVybjsKIAogICAgIG1fcGFnZS0+dXNlckNvbnRlbnRQ
cm92aWRlcigpLmZvckVhY2hVc2VyU2NyaXB0KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIGluamVjdGlvblRpbWVdKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFVz
ZXJTY3JpcHQmIHNjcmlwdCkgewotICAgICAgICBhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRvY3Vt
ZW50KCk7Ci0gICAgICAgIGlmICghZG9jdW1lbnQpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIGlmIChzY3JpcHQuaW5qZWN0ZWRGcmFtZXMoKSA9PSBJbmplY3RJblRvcEZyYW1lT25seSAm
JiBvd25lckVsZW1lbnQoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiAoc2Ny
aXB0LmluamVjdGlvblRpbWUoKSA9PSBpbmplY3Rpb25UaW1lICYmIFVzZXJDb250ZW50VVJMUGF0
dGVybjo6bWF0Y2hlc1BhdHRlcm5zKGRvY3VtZW50LT51cmwoKSwgc2NyaXB0LndoaXRlbGlzdCgp
LCBzY3JpcHQuYmxhY2tsaXN0KCkpKSB7Ci0gICAgICAgICAgICBpZiAobV9wYWdlKQotICAgICAg
ICAgICAgICAgIG1fcGFnZS0+c2V0QXNSdW5uaW5nVXNlclNjcmlwdHMoKTsKLSAgICAgICAgICAg
IG1fc2NyaXB0LT5ldmFsdWF0ZUluV29ybGQoU2NyaXB0U291cmNlQ29kZShzY3JpcHQuc291cmNl
KCksIHNjcmlwdC51cmwoKSksIHdvcmxkKTsKLSAgICAgICAgfQorICAgICAgICBpZiAoc2NyaXB0
LmluamVjdGlvblRpbWUoKSA9PSBpbmplY3Rpb25UaW1lKQorICAgICAgICAgICAgaW5qZWN0VXNl
clNjcmlwdEltbWVkaWF0ZWx5KHdvcmxkLCBzY3JpcHQpOwogICAgIH0pOwogfQogCit2b2lkIEZy
YW1lOjppbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwg
Y29uc3QgVXNlclNjcmlwdCYgc2NyaXB0KQoreworICAgIGF1dG8qIGRvY3VtZW50ID0gdGhpcy0+
ZG9jdW1lbnQoKTsKKyAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1cm47CisgICAgaWYg
KHNjcmlwdC5pbmplY3RlZEZyYW1lcygpID09IEluamVjdEluVG9wRnJhbWVPbmx5ICYmIG93bmVy
RWxlbWVudCgpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKCFVc2VyQ29udGVudFVSTFBhdHRl
cm46Om1hdGNoZXNQYXR0ZXJucyhkb2N1bWVudC0+dXJsKCksIHNjcmlwdC53aGl0ZWxpc3QoKSwg
c2NyaXB0LmJsYWNrbGlzdCgpKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChtX3BhZ2UpCisg
ICAgICAgIG1fcGFnZS0+c2V0QXNSdW5uaW5nVXNlclNjcmlwdHMoKTsKKyAgICBtX3NjcmlwdC0+
ZXZhbHVhdGVJbldvcmxkKFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0LnNvdXJjZSgpLCBzY3JpcHQu
dXJsKCkpLCB3b3JsZCk7Cit9CisKIFJlbmRlclZpZXcqIEZyYW1lOjpjb250ZW50UmVuZGVyZXIo
KSBjb25zdAogewogICAgIHJldHVybiBkb2N1bWVudCgpID8gZG9jdW1lbnQoKS0+cmVuZGVyVmll
dygpIDogbnVsbHB0cjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgJKHJldmlzaW9uIDIxODE0NSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMTY1LDcgKzE2
NSw4IEBAIHB1YmxpYzoKIAogLy8gPT09PT09PT0gQWxsIHB1YmxpYyBmdW5jdGlvbnMgYmVsb3cg
dGhpcyBwb2ludCBhcmUgY2FuZGlkYXRlcyB0byBtb3ZlIG91dCBvZiBGcmFtZSBpbnRvIGFub3Ro
ZXIgY2xhc3MuID09PT09PT09CiAKLSAgICB2b2lkIGluamVjdFVzZXJTY3JpcHRzKFVzZXJTY3Jp
cHRJbmplY3Rpb25UaW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluamVjdFVzZXJTY3Jp
cHRzKFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGlu
amVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseShET01XcmFwcGVyV29ybGQmLCBjb25zdCBVc2VyU2Ny
aXB0Jik7CiAgICAgCiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGxheWVyVHJlZUFzVGV4dChM
YXllclRyZWVGbGFncyA9IDApIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyB0cmFj
a2VkUmVwYWludFJlY3RzQXNUZXh0KCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHJl
dmlzaW9uIDIxODE0NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE1MCw3ICsxNTAsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNVdGlsaXR5UGFn
ZUNocm9tZUNsCiAKIERFRklORV9ERUJVR19PTkxZX0dMT0JBTChXVEY6OlJlZkNvdW50ZWRMZWFr
Q291bnRlciwgcGFnZUNvdW50ZXIsICgiUGFnZSIpKTsKIAotdm9pZCBQYWdlOjpmb3JFYWNoUGFn
ZShzdGQ6OmZ1bmN0aW9uPHZvaWQoUGFnZSYpPiBmdW5jdGlvbikKK3ZvaWQgUGFnZTo6Zm9yRWFj
aFBhZ2UoRnVuY3Rpb248dm9pZChQYWdlJik+JiYgZnVuY3Rpb24pCiB7CiAgICAgaWYgKCFhbGxQ
YWdlcykKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHJldmlzaW9uIDIxODE0
NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTMs
NyArMTkzLDcgQEAgcHVibGljOgogCiAgICAgUGFnZUdyb3VwJiBncm91cCgpOwogCi0gICAgc3Rh
dGljIHZvaWQgZm9yRWFjaFBhZ2Uoc3RkOjpmdW5jdGlvbjx2b2lkKFBhZ2UmKT4pOworICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGZvckVhY2hQYWdlKEZ1bmN0aW9uPHZvaWQoUGFnZSYp
PiYmKTsKIAogICAgIHZvaWQgaW5jcmVtZW50U3ViZnJhbWVDb3VudCgpIHsgKyttX3N1YmZyYW1l
Q291bnQ7IH0KICAgICB2b2lkIGRlY3JlbWVudFN1YmZyYW1lQ291bnQoKSB7IEFTU0VSVChtX3N1
YmZyYW1lQ291bnQpOyAtLW1fc3ViZnJhbWVDb3VudDsgfQpAQCAtNTE1LDcgKzUxNSw3IEBAIHB1
YmxpYzoKIAogICAgIFBsdWdpbkluZm9Qcm92aWRlciYgcGx1Z2luSW5mb1Byb3ZpZGVyKCk7CiAK
LSAgICBVc2VyQ29udGVudFByb3ZpZGVyJiB1c2VyQ29udGVudFByb3ZpZGVyKCk7CisgICAgV0VC
Q09SRV9FWFBPUlQgVXNlckNvbnRlbnRQcm92aWRlciYgdXNlckNvbnRlbnRQcm92aWRlcigpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VXNlckNvbnRlbnRQcm92aWRlcihSZWY8VXNlckNv
bnRlbnRQcm92aWRlcj4mJik7CiAKICAgICBWaXNpdGVkTGlua1N0b3JlJiB2aXNpdGVkTGlua1N0
b3JlKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMTgxNDYpCisrKyBTb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMyBAQAorMjAxNy0wNi0xMyAg
QWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEFk
ZCBTUEkgZm9yIGltbWVkaWF0ZSBpbmplY3Rpb24gb2YgdXNlciBzY3JpcHRzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzMzNDIKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzI5MjAyMjg1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUdyb3VwLmNwcDoKKyAgICAg
ICAgKFdLUGFnZUdyb3VwQWRkVXNlclNjcmlwdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L1dLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmLmNwcDoKKyAgICAgICAgKFdLVXNlckNvbnRlbnRD
b250cm9sbGVyQWRkVXNlclNjcmlwdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1VzZXJDb250ZW50Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tVc2VyQ29udGVudENvbnRy
b2xsZXIgYWRkVXNlclNjcmlwdDpdKToKKyAgICAgICAgKC1bV0tVc2VyQ29udGVudENvbnRyb2xs
ZXIgX2FkZFVzZXJTY3JpcHRJbW1lZGlhdGVseTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyU2NyaXB0
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250
ZW50Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJv
bGxlcjo6YWRkVXNlclNjcmlwdHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENv
bnRyb2xsZXI6OmFkZFVzZXJTY3JpcHRJbnRlcm5hbCk6CisgICAgICAgIElmIHdlIGFyZSB0byBp
bmplY3QgdGhlIHNjcmlwdCBpbnRlcm5hbGx5LCBpbmplY3QgaXQgaW50byB0aGUgYXBwcm9wcmlh
dGUgcGFnZXMuCisgICAgICAgIElmIHdlJ3JlIGluamVjdGluZyBpbnRvIHRoZSB0b3AgZnJhbWUg
b25seSwgdGhlcmUncyBubyBuZWVkIHRvIHRyYXZlcnNlIHRoZSBmcmFtZSB0cmVlLgorICAgICAg
ICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJTY3JpcHQpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xs
ZXIubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
OgorICAgICAgICAoV2ViS2l0OjptX2NwdUxpbWl0KToKKwogMjAxNy0wNi0xMiAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIE1vZGVybml6ZSBV
c2VyU2NyaXB0LmgKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VH
cm91cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
UGFnZUdyb3VwLmNwcAkocmV2aXNpb24gMjE4MTQ2KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLUGFnZUdyb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTgsNyArOTgsOCBA
QCB2b2lkIFdLUGFnZUdyb3VwQWRkVXNlclNjcmlwdChXS1BhZ2VHcm91CiAgICAgCiAgICAgYXV0
byB1cmwgPSBiYXNlVVJMU3RyaW5nLmlzRW1wdHkoKSA/IFdlYkNvcmU6OmJsYW5rVVJMKCkgOiBX
ZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIGJhc2VVUkxTdHJpbmcpOwogICAgIFJlZjxBUEk6
OlVzZXJTY3JpcHQ+IHVzZXJTY3JpcHQgPSBBUEk6OlVzZXJTY3JpcHQ6OmNyZWF0ZShXZWJDb3Jl
OjpVc2VyU2NyaXB0IHsgV1RGTW92ZShzb3VyY2UpLCBXVEZNb3ZlKHVybCksIHdoaXRlbGlzdCA/
IHdoaXRlbGlzdC0+dG9TdHJpbmdWZWN0b3IoKSA6IFZlY3RvcjxTdHJpbmc+KCksIGJsYWNrbGlz
dCA/IGJsYWNrbGlzdC0+dG9TdHJpbmdWZWN0b3IoKSA6IFZlY3RvcjxTdHJpbmc+KCksIHRvVXNl
clNjcmlwdEluamVjdGlvblRpbWUoaW5qZWN0aW9uVGltZSksIHRvVXNlckNvbnRlbnRJbmplY3Rl
ZEZyYW1lcyhpbmplY3RlZEZyYW1lcykgfSwgQVBJOjpVc2VyQ29udGVudFdvcmxkOjpub3JtYWxX
b3JsZCgpKTsKLSAgICB0b0ltcGwocGFnZUdyb3VwUmVmKS0+dXNlckNvbnRlbnRDb250cm9sbGVy
KCkuYWRkVXNlclNjcmlwdCh1c2VyU2NyaXB0LmdldCgpKTsKKyAgICBjb25zdCBib29sIGltbWVk
aWF0ZWx5ID0gZmFsc2U7CisgICAgdG9JbXBsKHBhZ2VHcm91cFJlZiktPnVzZXJDb250ZW50Q29u
dHJvbGxlcigpLmFkZFVzZXJTY3JpcHQodXNlclNjcmlwdC5nZXQoKSwgaW1tZWRpYXRlbHkpOwog
fQogCiB2b2lkIFdLUGFnZUdyb3VwUmVtb3ZlQWxsVXNlclNjcmlwdHMoV0tQYWdlR3JvdXBSZWYg
cGFnZUdyb3VwUmVmKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLVXNl
ckNvbnRlbnRDb250cm9sbGVyUmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWYuY3BwCShyZXZpc2lvbiAy
MTgxNDUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tVc2VyQ29udGVudENv
bnRyb2xsZXJSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw4IEBAIFdLQXJyYXlS
ZWYgV0tVc2VyQ29udGVudENvbnRyb2xsZXJDb3B5VXMKIAogdm9pZCBXS1VzZXJDb250ZW50Q29u
dHJvbGxlckFkZFVzZXJTY3JpcHQoV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWYgdXNlckNvbnRl
bnRDb250cm9sbGVyUmVmLCBXS1VzZXJTY3JpcHRSZWYgdXNlclNjcmlwdFJlZikKIHsKLSAgICB0
b0ltcGwodXNlckNvbnRlbnRDb250cm9sbGVyUmVmKS0+YWRkVXNlclNjcmlwdCgqdG9JbXBsKHVz
ZXJTY3JpcHRSZWYpKTsKKyAgICBjb25zdCBib29sIGltbWVkaWF0ZWx5ID0gZmFsc2U7CisgICAg
dG9JbXBsKHVzZXJDb250ZW50Q29udHJvbGxlclJlZiktPmFkZFVzZXJTY3JpcHQoKnRvSW1wbCh1
c2VyU2NyaXB0UmVmKSwgaW1tZWRpYXRlbHkpOwogfQogCiB2b2lkIFdLVXNlckNvbnRlbnRDb250
cm9sbGVyUmVtb3ZlQWxsVXNlclNjcmlwdHMoV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWYgdXNl
ckNvbnRlbnRDb250cm9sbGVyUmVmKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyLm1tCShy
ZXZpc2lvbiAyMTgxNDUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
VXNlckNvbnRlbnRDb250cm9sbGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC04NCw3ICs4NCw4IEBA
IC0gKE5TQXJyYXkgKil1c2VyU2NyaXB0cwogCiAtICh2b2lkKWFkZFVzZXJTY3JpcHQ6KFdLVXNl
clNjcmlwdCAqKXVzZXJTY3JpcHQKIHsKLSAgICBfdXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkt
PmFkZFVzZXJTY3JpcHQoKnVzZXJTY3JpcHQtPl91c2VyU2NyaXB0KTsKKyAgICBjb25zdCBib29s
IGltbWVkaWF0ZWx5ID0gZmFsc2U7CisgICAgX3VzZXJDb250ZW50Q29udHJvbGxlclByb3h5LT5h
ZGRVc2VyU2NyaXB0KCp1c2VyU2NyaXB0LT5fdXNlclNjcmlwdCwgaW1tZWRpYXRlbHkpOwogfQog
CiAtICh2b2lkKXJlbW92ZUFsbFVzZXJTY3JpcHRzCkBAIC0xNzIsNiArMTczLDEyIEBAIC0gKHZv
aWQpX3JlbW92ZUFsbFVzZXJTY3JpcHRzQXNzb2NpYXRlZFcKICAgICBfdXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHktPnJlbW92ZUFsbFVzZXJTY3JpcHRzKCp1c2VyQ29udGVudFdvcmxkLT5fdXNl
ckNvbnRlbnRXb3JsZCk7CiB9CiAKKy0gKHZvaWQpX2FkZFVzZXJTY3JpcHRJbW1lZGlhdGVseToo
V0tVc2VyU2NyaXB0ICopdXNlclNjcmlwdAoreworICAgIGNvbnN0IGJvb2wgaW1tZWRpYXRlbHkg
PSB0cnVlOworICAgIF91c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS0+YWRkVXNlclNjcmlwdCgq
dXNlclNjcmlwdC0+X3VzZXJTY3JpcHQsIGltbWVkaWF0ZWx5KTsKK30KKwogLSAodm9pZClfYWRk
VXNlckNvbnRlbnRGaWx0ZXI6KF9XS1VzZXJDb250ZW50RmlsdGVyICopdXNlckNvbnRlbnRGaWx0
ZXIKIHsKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpJbmRleDogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlclByaXZhdGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNv
bnRlbnRDb250cm9sbGVyUHJpdmF0ZS5oCShyZXZpc2lvbiAyMTgxNDUpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyUHJpdmF0ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAKIC0gKHZvaWQpX3JlbW92ZVVzZXJT
Y3JpcHQ6KFdLVXNlclNjcmlwdCAqKXVzZXJTY3JpcHQgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3go
MTAuMTIpLCBpb3MoMTAuMCkpOwogLSAodm9pZClfcmVtb3ZlQWxsVXNlclNjcmlwdHNBc3NvY2lh
dGVkV2l0aFVzZXJDb250ZW50V29ybGQ6KF9XS1VzZXJDb250ZW50V29ybGQgKil1c2VyQ29udGVu
dFdvcmxkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEyKSwgaW9zKDEwLjApKTsKKy0gKHZv
aWQpX2FkZFVzZXJTY3JpcHRJbW1lZGlhdGVseTooV0tVc2VyU2NyaXB0ICopdXNlclNjcmlwdCBX
S19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAog
LSAodm9pZClfYWRkVXNlckNvbnRlbnRGaWx0ZXI6KF9XS1VzZXJDb250ZW50RmlsdGVyICopdXNl
ckNvbnRlbnRGaWx0ZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTEpLCBpb3MoOS4wKSk7
CiAtICh2b2lkKV9yZW1vdmVVc2VyQ29udGVudEZpbHRlcjooTlNTdHJpbmcgKil1c2VyQ29udGVu
dEZpbHRlck5hbWUgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTEpLCBpb3MoOS4wKSk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAJKHJldmlzaW9u
IDIxODE0NSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NCw3ICsxNTQs
NyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vCiAgICAgICAgIHBy
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNl
ckNvbnRlbnRXb3JsZHMod29ybGRzVG9SZW1vdmUpLCBtX2lkZW50aWZpZXIpOwogfQogCi12b2lk
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyU2NyaXB0KEFQSTo6VXNlclNj
cmlwdCYgdXNlclNjcmlwdCkKK3ZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFk
ZFVzZXJTY3JpcHQoQVBJOjpVc2VyU2NyaXB0JiB1c2VyU2NyaXB0LCBib29sIGltbWVkaWF0ZWx5
KQogewogICAgIFJlZjxBUEk6OlVzZXJDb250ZW50V29ybGQ+IHdvcmxkID0gdXNlclNjcmlwdC51
c2VyQ29udGVudFdvcmxkKCk7CiAKQEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lkIFdlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5OjphZGRVCiAgICAgbV91c2VyU2NyaXB0cy0+ZWxlbWVudHMoKS5h
cHBlbmQoJnVzZXJTY3JpcHQpOwogCiAgICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3Mg
OiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNv
bnRlbnRDb250cm9sbGVyOjpBZGRVc2VyU2NyaXB0cyh7IHsgdXNlclNjcmlwdC5pZGVudGlmaWVy
KCksIHdvcmxkLT5pZGVudGlmaWVyKCksIHVzZXJTY3JpcHQudXNlclNjcmlwdCgpIH0gfSksIG1f
aWRlbnRpZmllcik7CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250
ZW50Q29udHJvbGxlcjo6QWRkVXNlclNjcmlwdHMoeyB7IHVzZXJTY3JpcHQuaWRlbnRpZmllcigp
LCB3b3JsZC0+aWRlbnRpZmllcigpLCB1c2VyU2NyaXB0LnVzZXJTY3JpcHQoKSB9IH0sIGltbWVk
aWF0ZWx5KSwgbV9pZGVudGlmaWVyKTsKIH0KIAogdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eTo6cmVtb3ZlVXNlclNjcmlwdChBUEk6OlVzZXJTY3JpcHQmIHVzZXJTY3JpcHQpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
VXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaAkocmV2aXNpb24gMjE4
MTQ1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzczLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgcmVtb3ZlUHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmKTsKIAogICAgIEFQ
STo6QXJyYXkmIHVzZXJTY3JpcHRzKCkgeyByZXR1cm4gbV91c2VyU2NyaXB0cy5nZXQoKTsgfQot
ICAgIHZvaWQgYWRkVXNlclNjcmlwdChBUEk6OlVzZXJTY3JpcHQmKTsKKyAgICB2b2lkIGFkZFVz
ZXJTY3JpcHQoQVBJOjpVc2VyU2NyaXB0JiwgYm9vbCBpbW1lZGlhdGVseSk7CiAgICAgdm9pZCBy
ZW1vdmVVc2VyU2NyaXB0KEFQSTo6VXNlclNjcmlwdCYpOwogICAgIHZvaWQgcmVtb3ZlQWxsVXNl
clNjcmlwdHMoQVBJOjpVc2VyQ29udGVudFdvcmxkJik7CiAgICAgdm9pZCByZW1vdmVBbGxVc2Vy
U2NyaXB0cygpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcAkocmV2
aXNpb24gMjE4MTQ1KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3
IEBACiAjaW5jbHVkZSAiV2ViVXNlckNvbnRlbnRDb250cm9sbGVyTWVzc2FnZXMuaCIKICNpbmNs
dWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9ET01XcmFwcGVyV29ybGQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01haW5GcmFtZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJTdHls
ZVNoZWV0Lmg+CkBAIC0xMjIsNyArMTIzLDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXI6OnJlbW92ZVVzZQogICAgIH0KIH0KIAotdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6
OmFkZFVzZXJTY3JpcHRzKGNvbnN0IFZlY3RvcjxXZWJVc2VyU2NyaXB0RGF0YT4mIHVzZXJTY3Jp
cHRzKQordm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJTY3JpcHRzKFZlY3Rv
cjxXZWJVc2VyU2NyaXB0RGF0YT4mJiB1c2VyU2NyaXB0cywgYm9vbCBpbW1lZGlhdGVseSkKIHsK
ICAgICBmb3IgKGNvbnN0IGF1dG8mIHVzZXJTY3JpcHREYXRhIDogdXNlclNjcmlwdHMpIHsKICAg
ICAgICAgYXV0byBpdCA9IHdvcmxkTWFwKCkuZmluZCh1c2VyU2NyaXB0RGF0YS53b3JsZElkZW50
aWZpZXIpOwpAQCAtMTMyLDcgKzEzMyw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
OjphZGRVc2VyU2MKICAgICAgICAgfQogCiAgICAgICAgIFVzZXJTY3JpcHQgc2NyaXB0ID0gdXNl
clNjcmlwdERhdGEudXNlclNjcmlwdDsKLSAgICAgICAgYWRkVXNlclNjcmlwdEludGVybmFsKCpp
dC0+dmFsdWUuZmlyc3QsIHVzZXJTY3JpcHREYXRhLmlkZW50aWZpZXIsIFdURk1vdmUoc2NyaXB0
KSk7CisgICAgICAgIGFkZFVzZXJTY3JpcHRJbnRlcm5hbCgqaXQtPnZhbHVlLmZpcnN0LCB1c2Vy
U2NyaXB0RGF0YS5pZGVudGlmaWVyLCBXVEZNb3ZlKHNjcmlwdCksIGltbWVkaWF0ZWx5KTsKICAg
ICB9CiB9CiAKQEAgLTM2MCwxNSArMzYxLDMyIEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyOjpyZW1vdmVBbGwKIH0KICNlbmRpZgogCi12b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxl
cjo6YWRkVXNlclNjcmlwdEludGVybmFsKEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQmIHdvcmxk
LCB1aW50NjRfdCB1c2VyU2NyaXB0SWRlbnRpZmllciwgVXNlclNjcmlwdCYmIHVzZXJTY3JpcHQp
Cit2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRkVXNlclNjcmlwdEludGVybmFsKElu
amVjdGVkQnVuZGxlU2NyaXB0V29ybGQmIHdvcmxkLCB1aW50NjRfdCB1c2VyU2NyaXB0SWRlbnRp
ZmllciwgVXNlclNjcmlwdCYmIHVzZXJTY3JpcHQsIGJvb2wgaW1tZWRpYXRlbHkpCiB7CisgICAg
aWYgKGltbWVkaWF0ZWx5KSB7CisgICAgICAgIFBhZ2U6OmZvckVhY2hQYWdlKFsmXSAoUGFnZSYg
cGFnZSkgeworICAgICAgICAgICAgaWYgKCZwYWdlLnVzZXJDb250ZW50UHJvdmlkZXIoKSAhPSB0
aGlzKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
YXV0byYgbWFpbkZyYW1lID0gcGFnZS5tYWluRnJhbWUoKTsKKyAgICAgICAgICAgIGlmICh1c2Vy
U2NyaXB0LmluamVjdGVkRnJhbWVzKCkgPT0gSW5qZWN0SW5Ub3BGcmFtZU9ubHkpIHsKKyAgICAg
ICAgICAgICAgICBtYWluRnJhbWUuaW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KHdvcmxkLmNv
cmVXb3JsZCgpLCB1c2VyU2NyaXB0KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1haW5GcmFtZTsgZnJh
bWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoJm1haW5GcmFtZSkpCisgICAg
ICAgICAgICAgICAgZnJhbWUtPmluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseSh3b3JsZC5jb3Jl
V29ybGQoKSwgdXNlclNjcmlwdCk7CisgICAgICAgIH0pOworICAgIH0KKwogICAgIGF1dG8mIHNj
cmlwdHNJbldvcmxkID0gbV91c2VyU2NyaXB0cy5lbnN1cmUoJndvcmxkLCBbXSB7IHJldHVybiBW
ZWN0b3I8c3RkOjpwYWlyPHVpbnQ2NF90LCBXZWJDb3JlOjpVc2VyU2NyaXB0Pj4oKTsgfSkuaXRl
cmF0b3ItPnZhbHVlOwogICAgIHNjcmlwdHNJbldvcmxkLmFwcGVuZChzdGQ6Om1ha2VfcGFpcih1
c2VyU2NyaXB0SWRlbnRpZmllciwgV1RGTW92ZSh1c2VyU2NyaXB0KSkpOwogfQogCiB2b2lkIFdl
YlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRkVXNlclNjcmlwdChJbmplY3RlZEJ1bmRsZVNjcmlw
dFdvcmxkJiB3b3JsZCwgVXNlclNjcmlwdCYmIHVzZXJTY3JpcHQpCiB7Ci0gICAgYWRkVXNlclNj
cmlwdEludGVybmFsKHdvcmxkLCAwLCBXVEZNb3ZlKHVzZXJTY3JpcHQpKTsKKyAgICBjb25zdCBi
b29sIGltbWVkaWF0ZWx5ID0gZmFsc2U7CisgICAgYWRkVXNlclNjcmlwdEludGVybmFsKHdvcmxk
LCAwLCBXVEZNb3ZlKHVzZXJTY3JpcHQpLCBpbW1lZGlhdGVseSk7CiB9CiAKIHZvaWQgV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVVc2VyU2NyaXB0V2l0aFVSTChJbmplY3RlZEJ1bmRs
ZVNjcmlwdFdvcmxkJiB3b3JsZCwgY29uc3QgVVJMJiB1cmwpCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyLmgJKHJldmlzaW9uIDIxODE0NSkKKysrIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlQWxsVXNlckNv
bnRlbnQoKTsKIAogICAgIHZvaWQgYWRkVXNlckNvbnRlbnRXb3JsZHMoY29uc3QgVmVjdG9yPHN0
ZDo6cGFpcjx1aW50NjRfdCwgU3RyaW5nPj4mKTsKLSAgICB2b2lkIGFkZFVzZXJTY3JpcHRzKGNv
bnN0IFZlY3RvcjxXZWJVc2VyU2NyaXB0RGF0YT4mKTsKKyAgICB2b2lkIGFkZFVzZXJTY3JpcHRz
KFZlY3RvcjxXZWJVc2VyU2NyaXB0RGF0YT4mJiwgYm9vbCBpbW1lZGlhdGVseSk7CiAgICAgdm9p
ZCBhZGRVc2VyU3R5bGVTaGVldHMoY29uc3QgVmVjdG9yPFdlYlVzZXJTdHlsZVNoZWV0RGF0YT4m
KTsKICAgICB2b2lkIGFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnMoY29uc3QgVmVjdG9yPFdl
YlNjcmlwdE1lc3NhZ2VIYW5kbGVyRGF0YT4mKTsKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJ
T05TKQpAQCAtMTAyLDcgKzEwMiw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZW1vdmVBbGxDb250
ZW50UnVsZUxpc3RzKCk7CiAjZW5kaWYKIAotICAgIHZvaWQgYWRkVXNlclNjcmlwdEludGVybmFs
KEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQmLCB1aW50NjRfdCB1c2VyU2NyaXB0SWRlbnRpZmll
ciwgV2ViQ29yZTo6VXNlclNjcmlwdCYmKTsKKyAgICB2b2lkIGFkZFVzZXJTY3JpcHRJbnRlcm5h
bChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiwgdWludDY0X3QgdXNlclNjcmlwdElkZW50aWZp
ZXIsIFdlYkNvcmU6OlVzZXJTY3JpcHQmJiwgYm9vbCBpbW1lZGlhdGVseSk7CiAgICAgdm9pZCBy
ZW1vdmVVc2VyU2NyaXB0SW50ZXJuYWwoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYsIHVpbnQ2
NF90IHVzZXJTY3JpcHRJZGVudGlmaWVyKTsKICAgICB2b2lkIGFkZFVzZXJTdHlsZVNoZWV0SW50
ZXJuYWwoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYsIHVpbnQ2NF90IHVzZXJTdHlsZVNoZWV0
SWRlbnRpZmllciwgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQmJik7CiAgICAgdm9pZCByZW1vdmVV
c2VyU3R5bGVTaGVldEludGVybmFsKEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQmLCB1aW50NjRf
dCB1c2VyU3R5bGVTaGVldElkZW50aWZpZXIpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIubWVzc2FnZXMuaW4KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2Vy
Q29udGVudENvbnRyb2xsZXIubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIxODE0NSkKKysrIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBAIG1lc3NhZ2VzIC0+
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlciB7CiAgICAgQWRkVXNlckNvbnRlbnRXb3JsZHMoVmVj
dG9yPHN0ZDo6cGFpcjx1aW50NjRfdCwgU3RyaW5nPj4gd29ybGRzKTsKICAgICBSZW1vdmVVc2Vy
Q29udGVudFdvcmxkcyhWZWN0b3I8dWludDY0X3Q+IHdvcmxkSWRlbnRpZmllcnMpOwogCi0gICAg
QWRkVXNlclNjcmlwdHMoVmVjdG9yPHN0cnVjdCBXZWJLaXQ6OldlYlVzZXJTY3JpcHREYXRhPiB1
c2VyU2NyaXB0cyk7CisgICAgQWRkVXNlclNjcmlwdHMoVmVjdG9yPHN0cnVjdCBXZWJLaXQ6Oldl
YlVzZXJTY3JpcHREYXRhPiB1c2VyU2NyaXB0cywgYm9vbCBpbW1lZGlhdGVseSk7CiAgICAgUmVt
b3ZlVXNlclNjcmlwdCh1aW50NjRfdCB3b3JsZElkZW50aWZpZXIsIHVpbnQ2NF90IGlkZW50aWZp
ZXIpOwogICAgIFJlbW92ZUFsbFVzZXJTY3JpcHRzKFZlY3Rvcjx1aW50NjRfdD4gd29ybGRJZGVu
dGlmaWVycyk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAJKHJldmlzaW9uIDIxODE0NikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcxLDcgKzU3MSw4IEBA
IFdlYlBhZ2U6OldlYlBhZ2UodWludDY0X3QgcGFnZUlELCBXZWJQYWcKICAgICAgICAgcmVnaXN0
ZXJVUkxTY2hlbWVIYW5kbGVyKGl0ZXJhdG9yLnZhbHVlLCBpdGVyYXRvci5rZXkpOwogCiAgICAg
bV91c2VyQ29udGVudENvbnRyb2xsZXItPmFkZFVzZXJDb250ZW50V29ybGRzKHBhcmFtZXRlcnMu
dXNlckNvbnRlbnRXb3JsZHMpOwotICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT5hZGRVc2Vy
U2NyaXB0cyhwYXJhbWV0ZXJzLnVzZXJTY3JpcHRzKTsKKyAgICBjb25zdCBib29sIGltbWVkaWF0
ZWx5ID0gZmFsc2U7CisgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXItPmFkZFVzZXJTY3JpcHRz
KFdURk1vdmUocGFyYW1ldGVycy51c2VyU2NyaXB0cyksIGltbWVkaWF0ZWx5KTsKICAgICBtX3Vz
ZXJDb250ZW50Q29udHJvbGxlci0+YWRkVXNlclN0eWxlU2hlZXRzKHBhcmFtZXRlcnMudXNlclN0
eWxlU2hlZXRzKTsKICAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+YWRkVXNlclNjcmlwdE1l
c3NhZ2VIYW5kbGVycyhwYXJhbWV0ZXJzLm1lc3NhZ2VIYW5kbGVycyk7CiAjaWYgRU5BQkxFKENP
TlRFTlRfRVhURU5TSU9OUykKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxODIyMikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE3LTA2LTEzICBBbGV4IENocmlzdGVuc2Vu
ICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSBmb3IgaW1tZWRp
YXRlIGluamVjdGlvbiBvZiB1c2VyIHNjcmlwdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzM0MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjky
MDIyODU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9Vc2VyQ29udGVudENvbnRyb2xsZXIu
bW06CisgICAgICAgICh3YWl0Rm9yTWVzc2FnZSk6CisgICAgICAgIChURVNUKToKKwogMjAxNy0w
Ni0xMyAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVt
ZW50IFczQyBTZWN1cmUgQ29udGV4dHMgRHJhZnQgU3BlY2lmaWNhdGlvbgpJbmRleDogVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvVXNlckNvbnRlbnRDb250cm9sbGVyLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1Vz
ZXJDb250ZW50Q29udHJvbGxlci5tbQkocmV2aXNpb24gMjE4MTQ1KQorKysgVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvVXNlckNvbnRlbnRDb250cm9sbGVyLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDAsNiArMTQwLDQ3IEBAIFRFU1QoV0tVc2VyQ29udGVudENvbnRyb2xs
ZXIsIFNjcmlwdE1lc3MKICAgICBFWFBFQ1RfV0tfU1RSRVEoQCJQQVNTIiwgcmVzdWx0VmFsdWUp
OwogfQogCitzdGF0aWMgdm9pZCB3YWl0Rm9yTWVzc2FnZShjb25zdCBjaGFyKiBleHBlY3RlZE1l
c3NhZ2UpCit7CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1l
c3NhZ2UpOworICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOworICAgIEVYUEVDVF9T
VFJFUShleHBlY3RlZE1lc3NhZ2UsIFsoTlNTdHJpbmcgKilbbGFzdFNjcmlwdE1lc3NhZ2UgYm9k
eV0gVVRGOFN0cmluZ10pOworfQorCitURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBBZGRV
c2VyU2NyaXB0SW1tZWRpYXRlbHkpCit7CisgICAgUmV0YWluUHRyPFNjcmlwdE1lc3NhZ2VIYW5k
bGVyPiBoYW5kbGVyID0gYWRvcHROUyhbW1NjcmlwdE1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0
XSk7CisgICAgUmV0YWluUHRyPFdLVXNlclNjcmlwdD4gc3RhcnRBbGxGcmFtZXMgPSBhZG9wdE5T
KFtbV0tVc2VyU2NyaXB0IGFsbG9jXSBpbml0V2l0aFNvdXJjZTpAIndpbmRvdy53ZWJraXQubWVz
c2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCdzdGFydCBhbGwnKSIgaW5qZWN0
aW9uVGltZTpXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lQXREb2N1bWVudFN0YXJ0IGZvck1haW5G
cmFtZU9ubHk6Tk9dKTsKKyAgICBSZXRhaW5QdHI8V0tVc2VyU2NyaXB0PiBlbmRNYWluRnJhbWVP
bmx5ID0gYWRvcHROUyhbW1dLVXNlclNjcmlwdCBhbGxvY10gaW5pdFdpdGhTb3VyY2U6QCJ3aW5k
b3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgnZW5kIG1h
aW4nKSIgaW5qZWN0aW9uVGltZTpXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lQXREb2N1bWVudEVu
ZCBmb3JNYWluRnJhbWVPbmx5OllFU10pOworICAgIAorICAgIFJldGFpblB0cjxXS1dlYlZpZXdD
b25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250
cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdldCgpIG5hbWU6QCJ0ZXN0
SGFuZGxlciJdOworICAgIAorICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9w
dE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAw
LCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIAorICAgIFJl
dGFpblB0cjxTaW1wbGVOYXZpZ2F0aW9uRGVsZWdhdGU+IGRlbGVnYXRlID0gYWRvcHROUyhbW1Np
bXBsZU5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3IHNldE5h
dmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisgICAgCisgICAgTlNVUkxSZXF1ZXN0
ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5C
dW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlLWlmcmFtZSIgd2l0aEV4dGVuc2lvbjpAImh0
bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOworICAgIAorICAg
IGlzRG9uZVdpdGhOYXZpZ2F0aW9uID0gZmFsc2U7CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6
cmVxdWVzdF07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmVXaXRoTmF2aWdh
dGlvbik7CisgICAgCisgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7CisgICAgW1tj
b25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gX2FkZFVzZXJTY3JpcHRJbW1lZGlh
dGVseTpzdGFydEFsbEZyYW1lcy5nZXQoKV07CisgICAgLy8gc2ltcGxlLWlmcmFtZS5odG1sIGhh
cyBhIG1haW4gZnJhbWUgYW5kIG9uZSBpZnJhbWUuCisgICAgd2FpdEZvck1lc3NhZ2UoInN0YXJ0
IGFsbCIpOworICAgIHdhaXRGb3JNZXNzYWdlKCJzdGFydCBhbGwiKTsKKyAgICBbW2NvbmZpZ3Vy
YXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBfYWRkVXNlclNjcmlwdEltbWVkaWF0ZWx5OmVu
ZE1haW5GcmFtZU9ubHkuZ2V0KCldOworICAgIHdhaXRGb3JNZXNzYWdlKCJlbmQgbWFpbiIpOwor
ICAgIFt3ZWJWaWV3IHJlbG9hZF07CisgICAgd2FpdEZvck1lc3NhZ2UoInN0YXJ0IGFsbCIpOwor
ICAgIHdhaXRGb3JNZXNzYWdlKCJlbmQgbWFpbiIpOworICAgIC8vIFdoZW4gcmVsb2FkaW5nLCBh
biBpZnJhbWUgZG9lc24ndCBleGlzdCBiZWZvcmUgdGhlIGRvY3VtZW50IGhhcyBzdGFydGVkIHRv
IGxvYWQuCisgICAgd2FpdEZvck1lc3NhZ2UoInN0YXJ0IGFsbCIpOworfQorCiBURVNUKFdLVXNl
ckNvbnRlbnRDb250cm9sbGVyLCBTY3JpcHRNZXNzYWdlSGFuZGxlckJhc2ljUmVtb3ZlKQogewog
ICAgIFJldGFpblB0cjxTY3JpcHRNZXNzYWdlSGFuZGxlcj4gaGFuZGxlciA9IGFkb3B0TlMoW1tT
Y3JpcHRNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>312844</attachid>
            <date>2017-06-13 18:18:11 -0700</date>
            <delta_ts>2017-06-14 10:42:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173342-20170613181811.patch</filename>
            <type>text/plain</type>
            <size>22985</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxODE0NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDE3LTA2LTEzICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSBm
b3IgaW1tZWRpYXRlIGluamVjdGlvbiBvZiB1c2VyIHNjcmlwdHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzM0MgorICAgICAgICA8cmRhcjovL3By
b2JsZW0vMjkyMDIyODU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhlIG5ldyBTUEkgaXMgV0tVc2VyQ29udGVudENvbnRyb2xsZXIuX2FkZFVzZXJT
Y3JpcHRJbW1lZGlhdGVseS4KKyAgICAgICAgSXQgaXMgY292ZXJlZCBieSBuZXcgQVBJIHRlc3Rz
LgorCisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6
aW5qZWN0VXNlclNjcmlwdHMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmluamVjdFVzZXJT
Y3JpcHRJbW1lZGlhdGVseSk6CisgICAgICAgIE1vdmUgaW5qZWN0aW9uIGZ1bmN0aW9uYWxpdHkg
dG8gYWxsb3cgdXMgdG8gY2FsbCBpdCBkaXJlY3RseSBmcm9tIHRoZSBuZXcgU1BJLgorICAgICAg
ICAqIHBhZ2UvRnJhbWUuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZTo6Zm9yRWFjaFBhZ2UpOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorCiAyMDE3
LTA2LTEyICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgTW9kZXJuaXplIFVzZXJTY3JpcHQuaApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAJKHJl
dmlzaW9uIDIxODE0NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03MDcsMjAgKzcwNywyNSBAQCB2b2lkIEZyYW1lOjppbmplY3RVc2VyU2NyaXB0
cyhVc2VyU2NyaXB0CiAgICAgICAgIHJldHVybjsKIAogICAgIG1fcGFnZS0+dXNlckNvbnRlbnRQ
cm92aWRlcigpLmZvckVhY2hVc2VyU2NyaXB0KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIGluamVjdGlvblRpbWVdKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFVz
ZXJTY3JpcHQmIHNjcmlwdCkgewotICAgICAgICBhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRvY3Vt
ZW50KCk7Ci0gICAgICAgIGlmICghZG9jdW1lbnQpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIGlmIChzY3JpcHQuaW5qZWN0ZWRGcmFtZXMoKSA9PSBJbmplY3RJblRvcEZyYW1lT25seSAm
JiBvd25lckVsZW1lbnQoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiAoc2Ny
aXB0LmluamVjdGlvblRpbWUoKSA9PSBpbmplY3Rpb25UaW1lICYmIFVzZXJDb250ZW50VVJMUGF0
dGVybjo6bWF0Y2hlc1BhdHRlcm5zKGRvY3VtZW50LT51cmwoKSwgc2NyaXB0LndoaXRlbGlzdCgp
LCBzY3JpcHQuYmxhY2tsaXN0KCkpKSB7Ci0gICAgICAgICAgICBpZiAobV9wYWdlKQotICAgICAg
ICAgICAgICAgIG1fcGFnZS0+c2V0QXNSdW5uaW5nVXNlclNjcmlwdHMoKTsKLSAgICAgICAgICAg
IG1fc2NyaXB0LT5ldmFsdWF0ZUluV29ybGQoU2NyaXB0U291cmNlQ29kZShzY3JpcHQuc291cmNl
KCksIHNjcmlwdC51cmwoKSksIHdvcmxkKTsKLSAgICAgICAgfQorICAgICAgICBpZiAoc2NyaXB0
LmluamVjdGlvblRpbWUoKSA9PSBpbmplY3Rpb25UaW1lKQorICAgICAgICAgICAgaW5qZWN0VXNl
clNjcmlwdEltbWVkaWF0ZWx5KHdvcmxkLCBzY3JpcHQpOwogICAgIH0pOwogfQogCit2b2lkIEZy
YW1lOjppbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwg
Y29uc3QgVXNlclNjcmlwdCYgc2NyaXB0KQoreworICAgIGF1dG8qIGRvY3VtZW50ID0gdGhpcy0+
ZG9jdW1lbnQoKTsKKyAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1cm47CisgICAgaWYg
KHNjcmlwdC5pbmplY3RlZEZyYW1lcygpID09IEluamVjdEluVG9wRnJhbWVPbmx5ICYmIG93bmVy
RWxlbWVudCgpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKCFVc2VyQ29udGVudFVSTFBhdHRl
cm46Om1hdGNoZXNQYXR0ZXJucyhkb2N1bWVudC0+dXJsKCksIHNjcmlwdC53aGl0ZWxpc3QoKSwg
c2NyaXB0LmJsYWNrbGlzdCgpKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChtX3BhZ2UpCisg
ICAgICAgIG1fcGFnZS0+c2V0QXNSdW5uaW5nVXNlclNjcmlwdHMoKTsKKyAgICBtX3NjcmlwdC0+
ZXZhbHVhdGVJbldvcmxkKFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0LnNvdXJjZSgpLCBzY3JpcHQu
dXJsKCkpLCB3b3JsZCk7Cit9CisKIFJlbmRlclZpZXcqIEZyYW1lOjpjb250ZW50UmVuZGVyZXIo
KSBjb25zdAogewogICAgIHJldHVybiBkb2N1bWVudCgpID8gZG9jdW1lbnQoKS0+cmVuZGVyVmll
dygpIDogbnVsbHB0cjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgJKHJldmlzaW9uIDIxODE0NSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMTY1LDcgKzE2
NSw4IEBAIHB1YmxpYzoKIAogLy8gPT09PT09PT0gQWxsIHB1YmxpYyBmdW5jdGlvbnMgYmVsb3cg
dGhpcyBwb2ludCBhcmUgY2FuZGlkYXRlcyB0byBtb3ZlIG91dCBvZiBGcmFtZSBpbnRvIGFub3Ro
ZXIgY2xhc3MuID09PT09PT09CiAKLSAgICB2b2lkIGluamVjdFVzZXJTY3JpcHRzKFVzZXJTY3Jp
cHRJbmplY3Rpb25UaW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluamVjdFVzZXJTY3Jp
cHRzKFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGlu
amVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseShET01XcmFwcGVyV29ybGQmLCBjb25zdCBVc2VyU2Ny
aXB0Jik7CiAgICAgCiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGxheWVyVHJlZUFzVGV4dChM
YXllclRyZWVGbGFncyA9IDApIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyB0cmFj
a2VkUmVwYWludFJlY3RzQXNUZXh0KCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHJl
dmlzaW9uIDIxODE0NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE1MCw3ICsxNTAsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNVdGlsaXR5UGFn
ZUNocm9tZUNsCiAKIERFRklORV9ERUJVR19PTkxZX0dMT0JBTChXVEY6OlJlZkNvdW50ZWRMZWFr
Q291bnRlciwgcGFnZUNvdW50ZXIsICgiUGFnZSIpKTsKIAotdm9pZCBQYWdlOjpmb3JFYWNoUGFn
ZShzdGQ6OmZ1bmN0aW9uPHZvaWQoUGFnZSYpPiBmdW5jdGlvbikKK3ZvaWQgUGFnZTo6Zm9yRWFj
aFBhZ2UoRnVuY3Rpb248dm9pZChQYWdlJik+JiYgZnVuY3Rpb24pCiB7CiAgICAgaWYgKCFhbGxQ
YWdlcykKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHJldmlzaW9uIDIxODE0
NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTMs
NyArMTkzLDcgQEAgcHVibGljOgogCiAgICAgUGFnZUdyb3VwJiBncm91cCgpOwogCi0gICAgc3Rh
dGljIHZvaWQgZm9yRWFjaFBhZ2Uoc3RkOjpmdW5jdGlvbjx2b2lkKFBhZ2UmKT4pOworICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGZvckVhY2hQYWdlKFdURjo6RnVuY3Rpb248dm9pZChQ
YWdlJik+JiYpOwogCiAgICAgdm9pZCBpbmNyZW1lbnRTdWJmcmFtZUNvdW50KCkgeyArK21fc3Vi
ZnJhbWVDb3VudDsgfQogICAgIHZvaWQgZGVjcmVtZW50U3ViZnJhbWVDb3VudCgpIHsgQVNTRVJU
KG1fc3ViZnJhbWVDb3VudCk7IC0tbV9zdWJmcmFtZUNvdW50OyB9CkBAIC01MTUsNyArNTE1LDcg
QEAgcHVibGljOgogCiAgICAgUGx1Z2luSW5mb1Byb3ZpZGVyJiBwbHVnaW5JbmZvUHJvdmlkZXIo
KTsKIAotICAgIFVzZXJDb250ZW50UHJvdmlkZXImIHVzZXJDb250ZW50UHJvdmlkZXIoKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBVc2VyQ29udGVudFByb3ZpZGVyJiB1c2VyQ29udGVudFByb3ZpZGVy
KCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRVc2VyQ29udGVudFByb3ZpZGVyKFJlZjxV
c2VyQ29udGVudFByb3ZpZGVyPiYmKTsKIAogICAgIFZpc2l0ZWRMaW5rU3RvcmUmIHZpc2l0ZWRM
aW5rU3RvcmUoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxODE0NikKKysrIFNvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisyMDE3LTA2
LTEzICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgQWRkIFNQSSBmb3IgaW1tZWRpYXRlIGluamVjdGlvbiBvZiB1c2VyIHNjcmlwdHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzM0MgorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMjkyMDIyODU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwOgor
ICAgICAgICAoV0tQYWdlR3JvdXBBZGRVc2VyU2NyaXB0KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0MvV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWYuY3BwOgorICAgICAgICAoV0tVc2VyQ29u
dGVudENvbnRyb2xsZXJBZGRVc2VyU2NyaXB0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS1VzZXJDb250ZW50
Q29udHJvbGxlciBhZGRVc2VyU2NyaXB0Ol0pOgorICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29u
dHJvbGxlciBfYWRkVXNlclNjcmlwdEltbWVkaWF0ZWx5Ol0pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRlLmg6CisgICAgICAgICog
VUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJT
Y3JpcHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRD
b250cm9sbGVyOjphZGRVc2VyU2NyaXB0cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250
ZW50Q29udHJvbGxlcjo6YWRkVXNlclNjcmlwdEludGVybmFsKToKKyAgICAgICAgSWYgd2UgYXJl
IHRvIGluamVjdCB0aGUgc2NyaXB0IGludGVybmFsbHksIGluamVjdCBpdCBpbnRvIHRoZSBhcHBy
b3ByaWF0ZSBwYWdlcy4KKyAgICAgICAgSWYgd2UncmUgaW5qZWN0aW5nIGludG8gdGhlIHRvcCBm
cmFtZSBvbmx5LCB0aGVyZSdzIG5vIG5lZWQgdG8gdHJhdmVyc2UgdGhlIGZyYW1lIHRyZWUuCisg
ICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRkVXNlclNjcmlwdCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29u
dHJvbGxlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fY3B1TGltaXQpOgorCiAyMDE3LTA2LTEyICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTW9kZXJu
aXplIFVzZXJTY3JpcHQuaApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
UGFnZUdyb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlR3JvdXAuY3BwCShyZXZpc2lvbiAyMTgxNDYpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OCw3ICs5
OCw4IEBAIHZvaWQgV0tQYWdlR3JvdXBBZGRVc2VyU2NyaXB0KFdLUGFnZUdyb3UKICAgICAKICAg
ICBhdXRvIHVybCA9IGJhc2VVUkxTdHJpbmcuaXNFbXB0eSgpID8gV2ViQ29yZTo6YmxhbmtVUkwo
KSA6IFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgYmFzZVVSTFN0cmluZyk7CiAgICAgUmVm
PEFQSTo6VXNlclNjcmlwdD4gdXNlclNjcmlwdCA9IEFQSTo6VXNlclNjcmlwdDo6Y3JlYXRlKFdl
YkNvcmU6OlVzZXJTY3JpcHQgeyBXVEZNb3ZlKHNvdXJjZSksIFdURk1vdmUodXJsKSwgd2hpdGVs
aXN0ID8gd2hpdGVsaXN0LT50b1N0cmluZ1ZlY3RvcigpIDogVmVjdG9yPFN0cmluZz4oKSwgYmxh
Y2tsaXN0ID8gYmxhY2tsaXN0LT50b1N0cmluZ1ZlY3RvcigpIDogVmVjdG9yPFN0cmluZz4oKSwg
dG9Vc2VyU2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rpb25UaW1lKSwgdG9Vc2VyQ29udGVudElu
amVjdGVkRnJhbWVzKGluamVjdGVkRnJhbWVzKSB9LCBBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5v
cm1hbFdvcmxkKCkpOwotICAgIHRvSW1wbChwYWdlR3JvdXBSZWYpLT51c2VyQ29udGVudENvbnRy
b2xsZXIoKS5hZGRVc2VyU2NyaXB0KHVzZXJTY3JpcHQuZ2V0KCkpOworICAgIGNvbnN0IGJvb2wg
aW1tZWRpYXRlbHkgPSBmYWxzZTsKKyAgICB0b0ltcGwocGFnZUdyb3VwUmVmKS0+dXNlckNvbnRl
bnRDb250cm9sbGVyKCkuYWRkVXNlclNjcmlwdCh1c2VyU2NyaXB0LmdldCgpLCBpbW1lZGlhdGVs
eSk7CiB9CiAKIHZvaWQgV0tQYWdlR3JvdXBSZW1vdmVBbGxVc2VyU2NyaXB0cyhXS1BhZ2VHcm91
cFJlZiBwYWdlR3JvdXBSZWYpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1VzZXJDb250ZW50Q29udHJvbGxlclJlZi5jcHAJKHJldmlz
aW9uIDIxODE0NSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1VzZXJDb250
ZW50Q29udHJvbGxlclJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDggQEAgV0tB
cnJheVJlZiBXS1VzZXJDb250ZW50Q29udHJvbGxlckNvcHlVcwogCiB2b2lkIFdLVXNlckNvbnRl
bnRDb250cm9sbGVyQWRkVXNlclNjcmlwdChXS1VzZXJDb250ZW50Q29udHJvbGxlclJlZiB1c2Vy
Q29udGVudENvbnRyb2xsZXJSZWYsIFdLVXNlclNjcmlwdFJlZiB1c2VyU2NyaXB0UmVmKQogewot
ICAgIHRvSW1wbCh1c2VyQ29udGVudENvbnRyb2xsZXJSZWYpLT5hZGRVc2VyU2NyaXB0KCp0b0lt
cGwodXNlclNjcmlwdFJlZikpOworICAgIGNvbnN0IGJvb2wgaW1tZWRpYXRlbHkgPSBmYWxzZTsK
KyAgICB0b0ltcGwodXNlckNvbnRlbnRDb250cm9sbGVyUmVmKS0+YWRkVXNlclNjcmlwdCgqdG9J
bXBsKHVzZXJTY3JpcHRSZWYpLCBpbW1lZGlhdGVseSk7CiB9CiAKIHZvaWQgV0tVc2VyQ29udGVu
dENvbnRyb2xsZXJSZW1vdmVBbGxVc2VyU2NyaXB0cyhXS1VzZXJDb250ZW50Q29udHJvbGxlclJl
ZiB1c2VyQ29udGVudENvbnRyb2xsZXJSZWYpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIu
bW0JKHJldmlzaW9uIDIxODE0NSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTg0LDcgKzg0
LDggQEAgLSAoTlNBcnJheSAqKXVzZXJTY3JpcHRzCiAKIC0gKHZvaWQpYWRkVXNlclNjcmlwdDoo
V0tVc2VyU2NyaXB0ICopdXNlclNjcmlwdAogewotICAgIF91c2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eS0+YWRkVXNlclNjcmlwdCgqdXNlclNjcmlwdC0+X3VzZXJTY3JpcHQpOworICAgIGNvbnN0
IGJvb2wgaW1tZWRpYXRlbHkgPSBmYWxzZTsKKyAgICBfdXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHktPmFkZFVzZXJTY3JpcHQoKnVzZXJTY3JpcHQtPl91c2VyU2NyaXB0LCBpbW1lZGlhdGVseSk7
CiB9CiAKIC0gKHZvaWQpcmVtb3ZlQWxsVXNlclNjcmlwdHMKQEAgLTE3Miw2ICsxNzMsMTIgQEAg
LSAodm9pZClfcmVtb3ZlQWxsVXNlclNjcmlwdHNBc3NvY2lhdGVkVwogICAgIF91c2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eS0+cmVtb3ZlQWxsVXNlclNjcmlwdHMoKnVzZXJDb250ZW50V29ybGQt
Pl91c2VyQ29udGVudFdvcmxkKTsKIH0KIAorLSAodm9pZClfYWRkVXNlclNjcmlwdEltbWVkaWF0
ZWx5OihXS1VzZXJTY3JpcHQgKil1c2VyU2NyaXB0Cit7CisgICAgY29uc3QgYm9vbCBpbW1lZGlh
dGVseSA9IHRydWU7CisgICAgX3VzZXJDb250ZW50Q29udHJvbGxlclByb3h5LT5hZGRVc2VyU2Ny
aXB0KCp1c2VyU2NyaXB0LT5fdXNlclNjcmlwdCwgaW1tZWRpYXRlbHkpOworfQorCiAtICh2b2lk
KV9hZGRVc2VyQ29udGVudEZpbHRlcjooX1dLVXNlckNvbnRlbnRGaWx0ZXIgKil1c2VyQ29udGVu
dEZpbHRlcgogewogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyUHJpdmF0
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tV
c2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRlLmgJKHJldmlzaW9uIDIxODE0NSkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXJQcml2
YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKIAogLSAodm9pZClfcmVtb3Zl
VXNlclNjcmlwdDooV0tVc2VyU2NyaXB0ICopdXNlclNjcmlwdCBXS19BUElfQVZBSUxBQkxFKG1h
Y29zeCgxMC4xMiksIGlvcygxMC4wKSk7CiAtICh2b2lkKV9yZW1vdmVBbGxVc2VyU2NyaXB0c0Fz
c29jaWF0ZWRXaXRoVXNlckNvbnRlbnRXb3JsZDooX1dLVXNlckNvbnRlbnRXb3JsZCAqKXVzZXJD
b250ZW50V29ybGQgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTIpLCBpb3MoMTAuMCkpOwor
LSAodm9pZClfYWRkVXNlclNjcmlwdEltbWVkaWF0ZWx5OihXS1VzZXJTY3JpcHQgKil1c2VyU2Ny
aXB0IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkp
OwogCiAtICh2b2lkKV9hZGRVc2VyQ29udGVudEZpbHRlcjooX1dLVXNlckNvbnRlbnRGaWx0ZXIg
Kil1c2VyQ29udGVudEZpbHRlciBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMSksIGlvcyg5
LjApKTsKIC0gKHZvaWQpX3JlbW92ZVVzZXJDb250ZW50RmlsdGVyOihOU1N0cmluZyAqKXVzZXJD
b250ZW50RmlsdGVyTmFtZSBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMSksIGlvcyg5LjAp
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJDb250
ZW50TWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjE4MTQ1KQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2Vy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDcgKzE1OSw4IEBAIHZvaWQgd2Via2l0X3VzZXJf
Y29udGVudF9tYW5hZ2VyX2FkZF9zY3IKIHsKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9J
U19VU0VSX0NPTlRFTlRfTUFOQUdFUihtYW5hZ2VyKSk7CiAgICAgZ19yZXR1cm5faWZfZmFpbChz
Y3JpcHQpOwotICAgIG1hbmFnZXItPnByaXYtPnVzZXJDb250ZW50Q29udHJvbGxlci0+YWRkVXNl
clNjcmlwdCh3ZWJraXRVc2VyU2NyaXB0R2V0VXNlclNjcmlwdChzY3JpcHQpKTsKKyAgICBjb25z
dCBib29sIGltbWVkaWF0ZWx5ID0gZmFsc2U7CisgICAgbWFuYWdlci0+cHJpdi0+dXNlckNvbnRl
bnRDb250cm9sbGVyLT5hZGRVc2VyU2NyaXB0KHdlYmtpdFVzZXJTY3JpcHRHZXRVc2VyU2NyaXB0
KHNjcmlwdCksIGltbWVkaWF0ZWx5KTsKIH0KIAogLyoqCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eS5jcHAJKHJldmlzaW9uIDIxODE0NSkKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NCw3ICsxNTQsNyBAQCB2b2lkIFdlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5OjpyZW1vCiAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNlckNvbnRlbnRXb3JsZHMod29ybGRz
VG9SZW1vdmUpLCBtX2lkZW50aWZpZXIpOwogfQogCi12b2lkIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5OjphZGRVc2VyU2NyaXB0KEFQSTo6VXNlclNjcmlwdCYgdXNlclNjcmlwdCkKK3Zv
aWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJTY3JpcHQoQVBJOjpVc2Vy
U2NyaXB0JiB1c2VyU2NyaXB0LCBib29sIGltbWVkaWF0ZWx5KQogewogICAgIFJlZjxBUEk6OlVz
ZXJDb250ZW50V29ybGQ+IHdvcmxkID0gdXNlclNjcmlwdC51c2VyQ29udGVudFdvcmxkKCk7CiAK
QEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Ojph
ZGRVCiAgICAgbV91c2VyU2NyaXB0cy0+ZWxlbWVudHMoKS5hcHBlbmQoJnVzZXJTY3JpcHQpOwog
CiAgICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAg
ICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRV
c2VyU2NyaXB0cyh7IHsgdXNlclNjcmlwdC5pZGVudGlmaWVyKCksIHdvcmxkLT5pZGVudGlmaWVy
KCksIHVzZXJTY3JpcHQudXNlclNjcmlwdCgpIH0gfSksIG1faWRlbnRpZmllcik7CisgICAgICAg
IHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNl
clNjcmlwdHMoeyB7IHVzZXJTY3JpcHQuaWRlbnRpZmllcigpLCB3b3JsZC0+aWRlbnRpZmllcigp
LCB1c2VyU2NyaXB0LnVzZXJTY3JpcHQoKSB9IH0sIGltbWVkaWF0ZWx5KSwgbV9pZGVudGlmaWVy
KTsKIH0KIAogdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlclNj
cmlwdChBUEk6OlVzZXJTY3JpcHQmIHVzZXJTY3JpcHQpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHkuaAkocmV2aXNpb24gMjE4MTQ1KQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3Zl
UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmKTsKIAogICAgIEFQSTo6QXJyYXkmIHVzZXJTY3JpcHRz
KCkgeyByZXR1cm4gbV91c2VyU2NyaXB0cy5nZXQoKTsgfQotICAgIHZvaWQgYWRkVXNlclNjcmlw
dChBUEk6OlVzZXJTY3JpcHQmKTsKKyAgICB2b2lkIGFkZFVzZXJTY3JpcHQoQVBJOjpVc2VyU2Ny
aXB0JiwgYm9vbCBpbW1lZGlhdGVseSk7CiAgICAgdm9pZCByZW1vdmVVc2VyU2NyaXB0KEFQSTo6
VXNlclNjcmlwdCYpOwogICAgIHZvaWQgcmVtb3ZlQWxsVXNlclNjcmlwdHMoQVBJOjpVc2VyQ29u
dGVudFdvcmxkJik7CiAgICAgdm9pZCByZW1vdmVBbGxVc2VyU2NyaXB0cygpOwpJbmRleDogU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xs
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvVXNlckNvbnRl
bnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjE4MTQ1KQorKysgU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xs
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9ET01XcmFwcGVyV29y
bGQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01haW5GcmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2VjdXJpdHlPcmlnaW5EYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJTdHlsZVNoZWV0Lmg+CkBAIC0xMjIsNyAr
MTIzLDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZVVzZQogICAgIH0K
IH0KIAotdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJTY3JpcHRzKGNvbnN0
IFZlY3RvcjxXZWJVc2VyU2NyaXB0RGF0YT4mIHVzZXJTY3JpcHRzKQordm9pZCBXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXI6OmFkZFVzZXJTY3JpcHRzKFZlY3RvcjxXZWJVc2VyU2NyaXB0RGF0YT4m
JiB1c2VyU2NyaXB0cywgYm9vbCBpbW1lZGlhdGVseSkKIHsKICAgICBmb3IgKGNvbnN0IGF1dG8m
IHVzZXJTY3JpcHREYXRhIDogdXNlclNjcmlwdHMpIHsKICAgICAgICAgYXV0byBpdCA9IHdvcmxk
TWFwKCkuZmluZCh1c2VyU2NyaXB0RGF0YS53b3JsZElkZW50aWZpZXIpOwpAQCAtMTMyLDcgKzEz
Myw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyU2MKICAgICAgICAg
fQogCiAgICAgICAgIFVzZXJTY3JpcHQgc2NyaXB0ID0gdXNlclNjcmlwdERhdGEudXNlclNjcmlw
dDsKLSAgICAgICAgYWRkVXNlclNjcmlwdEludGVybmFsKCppdC0+dmFsdWUuZmlyc3QsIHVzZXJT
Y3JpcHREYXRhLmlkZW50aWZpZXIsIFdURk1vdmUoc2NyaXB0KSk7CisgICAgICAgIGFkZFVzZXJT
Y3JpcHRJbnRlcm5hbCgqaXQtPnZhbHVlLmZpcnN0LCB1c2VyU2NyaXB0RGF0YS5pZGVudGlmaWVy
LCBXVEZNb3ZlKHNjcmlwdCksIGltbWVkaWF0ZWx5KTsKICAgICB9CiB9CiAKQEAgLTM2MCwxNSAr
MzYxLDMyIEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVBbGwKIH0KICNl
bmRpZgogCi12b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRkVXNlclNjcmlwdEludGVy
bmFsKEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQmIHdvcmxkLCB1aW50NjRfdCB1c2VyU2NyaXB0
SWRlbnRpZmllciwgVXNlclNjcmlwdCYmIHVzZXJTY3JpcHQpCit2b2lkIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlcjo6YWRkVXNlclNjcmlwdEludGVybmFsKEluamVjdGVkQnVuZGxlU2NyaXB0V29y
bGQmIHdvcmxkLCB1aW50NjRfdCB1c2VyU2NyaXB0SWRlbnRpZmllciwgVXNlclNjcmlwdCYmIHVz
ZXJTY3JpcHQsIGJvb2wgaW1tZWRpYXRlbHkpCiB7CisgICAgaWYgKGltbWVkaWF0ZWx5KSB7Cisg
ICAgICAgIFBhZ2U6OmZvckVhY2hQYWdlKFsmXSAoUGFnZSYgcGFnZSkgeworICAgICAgICAgICAg
aWYgKCZwYWdlLnVzZXJDb250ZW50UHJvdmlkZXIoKSAhPSB0aGlzKQorICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgYXV0byYgbWFpbkZyYW1lID0gcGFn
ZS5tYWluRnJhbWUoKTsKKyAgICAgICAgICAgIGlmICh1c2VyU2NyaXB0LmluamVjdGVkRnJhbWVz
KCkgPT0gSW5qZWN0SW5Ub3BGcmFtZU9ubHkpIHsKKyAgICAgICAgICAgICAgICBtYWluRnJhbWUu
aW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KHdvcmxkLmNvcmVXb3JsZCgpLCB1c2VyU2NyaXB0
KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGZvciAoRnJhbWUqIGZyYW1lID0gJm1haW5GcmFtZTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRy
ZWUoKS50cmF2ZXJzZU5leHQoJm1haW5GcmFtZSkpCisgICAgICAgICAgICAgICAgZnJhbWUtPmlu
amVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseSh3b3JsZC5jb3JlV29ybGQoKSwgdXNlclNjcmlwdCk7
CisgICAgICAgIH0pOworICAgIH0KKwogICAgIGF1dG8mIHNjcmlwdHNJbldvcmxkID0gbV91c2Vy
U2NyaXB0cy5lbnN1cmUoJndvcmxkLCBbXSB7IHJldHVybiBWZWN0b3I8c3RkOjpwYWlyPHVpbnQ2
NF90LCBXZWJDb3JlOjpVc2VyU2NyaXB0Pj4oKTsgfSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIHNj
cmlwdHNJbldvcmxkLmFwcGVuZChzdGQ6Om1ha2VfcGFpcih1c2VyU2NyaXB0SWRlbnRpZmllciwg
V1RGTW92ZSh1c2VyU2NyaXB0KSkpOwogfQogCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxl
cjo6YWRkVXNlclNjcmlwdChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiB3b3JsZCwgVXNlclNj
cmlwdCYmIHVzZXJTY3JpcHQpCiB7Ci0gICAgYWRkVXNlclNjcmlwdEludGVybmFsKHdvcmxkLCAw
LCBXVEZNb3ZlKHVzZXJTY3JpcHQpKTsKKyAgICBjb25zdCBib29sIGltbWVkaWF0ZWx5ID0gZmFs
c2U7CisgICAgYWRkVXNlclNjcmlwdEludGVybmFsKHdvcmxkLCAwLCBXVEZNb3ZlKHVzZXJTY3Jp
cHQpLCBpbW1lZGlhdGVseSk7CiB9CiAKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpy
ZW1vdmVVc2VyU2NyaXB0V2l0aFVSTChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiB3b3JsZCwg
Y29uc3QgVVJMJiB1cmwpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1VzZXJDb250
ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgJKHJl
dmlzaW9uIDIxODE0NSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvVXNlckNvbnRlbnQv
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYzLDcg
QEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlQWxsVXNlckNvbnRlbnQoKTsKIAogICAgIHZvaWQg
YWRkVXNlckNvbnRlbnRXb3JsZHMoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjx1aW50NjRfdCwgU3Ry
aW5nPj4mKTsKLSAgICB2b2lkIGFkZFVzZXJTY3JpcHRzKGNvbnN0IFZlY3RvcjxXZWJVc2VyU2Ny
aXB0RGF0YT4mKTsKKyAgICB2b2lkIGFkZFVzZXJTY3JpcHRzKFZlY3RvcjxXZWJVc2VyU2NyaXB0
RGF0YT4mJiwgYm9vbCBpbW1lZGlhdGVseSk7CiAgICAgdm9pZCBhZGRVc2VyU3R5bGVTaGVldHMo
Y29uc3QgVmVjdG9yPFdlYlVzZXJTdHlsZVNoZWV0RGF0YT4mKTsKICAgICB2b2lkIGFkZFVzZXJT
Y3JpcHRNZXNzYWdlSGFuZGxlcnMoY29uc3QgVmVjdG9yPFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVy
RGF0YT4mKTsKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpAQCAtMTAyLDcgKzEwMiw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZW1vdmVBbGxDb250ZW50UnVsZUxpc3RzKCk7CiAjZW5k
aWYKIAotICAgIHZvaWQgYWRkVXNlclNjcmlwdEludGVybmFsKEluamVjdGVkQnVuZGxlU2NyaXB0
V29ybGQmLCB1aW50NjRfdCB1c2VyU2NyaXB0SWRlbnRpZmllciwgV2ViQ29yZTo6VXNlclNjcmlw
dCYmKTsKKyAgICB2b2lkIGFkZFVzZXJTY3JpcHRJbnRlcm5hbChJbmplY3RlZEJ1bmRsZVNjcmlw
dFdvcmxkJiwgdWludDY0X3QgdXNlclNjcmlwdElkZW50aWZpZXIsIFdlYkNvcmU6OlVzZXJTY3Jp
cHQmJiwgYm9vbCBpbW1lZGlhdGVseSk7CiAgICAgdm9pZCByZW1vdmVVc2VyU2NyaXB0SW50ZXJu
YWwoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYsIHVpbnQ2NF90IHVzZXJTY3JpcHRJZGVudGlm
aWVyKTsKICAgICB2b2lkIGFkZFVzZXJTdHlsZVNoZWV0SW50ZXJuYWwoSW5qZWN0ZWRCdW5kbGVT
Y3JpcHRXb3JsZCYsIHVpbnQ2NF90IHVzZXJTdHlsZVNoZWV0SWRlbnRpZmllciwgV2ViQ29yZTo6
VXNlclN0eWxlU2hlZXQmJik7CiAgICAgdm9pZCByZW1vdmVVc2VyU3R5bGVTaGVldEludGVybmFs
KEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQmLCB1aW50NjRfdCB1c2VyU3R5bGVTaGVldElkZW50
aWZpZXIpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJV
c2VyQ29udGVudENvbnRyb2xsZXIubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIubWVz
c2FnZXMuaW4JKHJldmlzaW9uIDIxODE0NSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
VXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3NhZ2VzLmluCSh3b3JraW5n
IGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBAIG1lc3NhZ2VzIC0+IFdlYlVzZXJDb250ZW50Q29udHJv
bGxlciB7CiAgICAgQWRkVXNlckNvbnRlbnRXb3JsZHMoVmVjdG9yPHN0ZDo6cGFpcjx1aW50NjRf
dCwgU3RyaW5nPj4gd29ybGRzKTsKICAgICBSZW1vdmVVc2VyQ29udGVudFdvcmxkcyhWZWN0b3I8
dWludDY0X3Q+IHdvcmxkSWRlbnRpZmllcnMpOwogCi0gICAgQWRkVXNlclNjcmlwdHMoVmVjdG9y
PHN0cnVjdCBXZWJLaXQ6OldlYlVzZXJTY3JpcHREYXRhPiB1c2VyU2NyaXB0cyk7CisgICAgQWRk
VXNlclNjcmlwdHMoVmVjdG9yPHN0cnVjdCBXZWJLaXQ6OldlYlVzZXJTY3JpcHREYXRhPiB1c2Vy
U2NyaXB0cywgYm9vbCBpbW1lZGlhdGVseSk7CiAgICAgUmVtb3ZlVXNlclNjcmlwdCh1aW50NjRf
dCB3b3JsZElkZW50aWZpZXIsIHVpbnQ2NF90IGlkZW50aWZpZXIpOwogICAgIFJlbW92ZUFsbFVz
ZXJTY3JpcHRzKFZlY3Rvcjx1aW50NjRfdD4gd29ybGRJZGVudGlmaWVycyk7CiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9u
IDIxODE0NikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTcxLDcgKzU3MSw4IEBAIFdlYlBhZ2U6OldlYlBhZ2UodWlu
dDY0X3QgcGFnZUlELCBXZWJQYWcKICAgICAgICAgcmVnaXN0ZXJVUkxTY2hlbWVIYW5kbGVyKGl0
ZXJhdG9yLnZhbHVlLCBpdGVyYXRvci5rZXkpOwogCiAgICAgbV91c2VyQ29udGVudENvbnRyb2xs
ZXItPmFkZFVzZXJDb250ZW50V29ybGRzKHBhcmFtZXRlcnMudXNlckNvbnRlbnRXb3JsZHMpOwot
ICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT5hZGRVc2VyU2NyaXB0cyhwYXJhbWV0ZXJzLnVz
ZXJTY3JpcHRzKTsKKyAgICBjb25zdCBib29sIGltbWVkaWF0ZWx5ID0gZmFsc2U7CisgICAgbV91
c2VyQ29udGVudENvbnRyb2xsZXItPmFkZFVzZXJTY3JpcHRzKFdURk1vdmUocGFyYW1ldGVycy51
c2VyU2NyaXB0cyksIGltbWVkaWF0ZWx5KTsKICAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+
YWRkVXNlclN0eWxlU2hlZXRzKHBhcmFtZXRlcnMudXNlclN0eWxlU2hlZXRzKTsKICAgICBtX3Vz
ZXJDb250ZW50Q29udHJvbGxlci0+YWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVycyhwYXJhbWV0
ZXJzLm1lc3NhZ2VIYW5kbGVycyk7CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKSW5k
ZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDIxODIyMikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDE1IEBACisyMDE3LTA2LTEzICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSBmb3IgaW1tZWRpYXRlIGluamVjdGlvbiBvZiB1c2Vy
IHNjcmlwdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3MzM0MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjkyMDIyODU+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDJDb2NvYS9Vc2VyQ29udGVudENvbnRyb2xsZXIubW06CisgICAgICAgICh3YWl0Rm9y
TWVzc2FnZSk6CisgICAgICAgIChURVNUKToKKwogMjAxNy0wNi0xMyAgRGFuaWVsIEJhdGVzICA8
ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IFczQyBTZWN1cmUgQ29udGV4
dHMgRHJhZnQgU3BlY2lmaWNhdGlvbgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyQ29jb2EvVXNlckNvbnRlbnRDb250cm9sbGVyLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1VzZXJDb250ZW50Q29udHJvbGxlci5t
bQkocmV2aXNpb24gMjE4MTQ1KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
Q29jb2EvVXNlckNvbnRlbnRDb250cm9sbGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNDAsNiAr
MTQwLDQ3IEBAIFRFU1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIFNjcmlwdE1lc3MKICAgICBF
WFBFQ1RfV0tfU1RSRVEoQCJQQVNTIiwgcmVzdWx0VmFsdWUpOwogfQogCitzdGF0aWMgdm9pZCB3
YWl0Rm9yTWVzc2FnZShjb25zdCBjaGFyKiBleHBlY3RlZE1lc3NhZ2UpCit7CisgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOworICAgIHJlY2VpdmVk
U2NyaXB0TWVzc2FnZSA9IGZhbHNlOworICAgIEVYUEVDVF9TVFJFUShleHBlY3RlZE1lc3NhZ2Us
IFsoTlNTdHJpbmcgKilbbGFzdFNjcmlwdE1lc3NhZ2UgYm9keV0gVVRGOFN0cmluZ10pOworfQor
CitURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBBZGRVc2VyU2NyaXB0SW1tZWRpYXRlbHkp
Cit7CisgICAgUmV0YWluUHRyPFNjcmlwdE1lc3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHRO
UyhbW1NjcmlwdE1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CisgICAgUmV0YWluUHRyPFdL
VXNlclNjcmlwdD4gc3RhcnRBbGxGcmFtZXMgPSBhZG9wdE5TKFtbV0tVc2VyU2NyaXB0IGFsbG9j
XSBpbml0V2l0aFNvdXJjZTpAIndpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5k
bGVyLnBvc3RNZXNzYWdlKCdzdGFydCBhbGwnKSIgaW5qZWN0aW9uVGltZTpXS1VzZXJTY3JpcHRJ
bmplY3Rpb25UaW1lQXREb2N1bWVudFN0YXJ0IGZvck1haW5GcmFtZU9ubHk6Tk9dKTsKKyAgICBS
ZXRhaW5QdHI8V0tVc2VyU2NyaXB0PiBlbmRNYWluRnJhbWVPbmx5ID0gYWRvcHROUyhbW1dLVXNl
clNjcmlwdCBhbGxvY10gaW5pdFdpdGhTb3VyY2U6QCJ3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5k
bGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgnZW5kIG1haW4nKSIgaW5qZWN0aW9uVGltZTpX
S1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lQXREb2N1bWVudEVuZCBmb3JNYWluRnJhbWVPbmx5OllF
U10pOworICAgIAorICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1
cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsK
KyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNz
YWdlSGFuZGxlcjpoYW5kbGVyLmdldCgpIG5hbWU6QCJ0ZXN0SGFuZGxlciJdOworICAgIAorICAg
IFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246
Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIAorICAgIFJldGFpblB0cjxTaW1wbGVOYXZpZ2F0
aW9uRGVsZWdhdGU+IGRlbGVnYXRlID0gYWRvcHROUyhbW1NpbXBsZU5hdmlnYXRpb25EZWxlZ2F0
ZSBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxl
Z2F0ZS5nZXQoKV07CisgICAgCisgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVx
dWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNl
OkAic2ltcGxlLWlmcmFtZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRl
c3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOworICAgIAorICAgIGlzRG9uZVdpdGhOYXZpZ2F0aW9u
ID0gZmFsc2U7CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CisgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmVXaXRoTmF2aWdhdGlvbik7CisgICAgCisgICAgcmVj
ZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250
ZW50Q29udHJvbGxlcl0gX2FkZFVzZXJTY3JpcHRJbW1lZGlhdGVseTpzdGFydEFsbEZyYW1lcy5n
ZXQoKV07CisgICAgLy8gc2ltcGxlLWlmcmFtZS5odG1sIGhhcyBhIG1haW4gZnJhbWUgYW5kIG9u
ZSBpZnJhbWUuCisgICAgd2FpdEZvck1lc3NhZ2UoInN0YXJ0IGFsbCIpOworICAgIHdhaXRGb3JN
ZXNzYWdlKCJzdGFydCBhbGwiKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250
cm9sbGVyXSBfYWRkVXNlclNjcmlwdEltbWVkaWF0ZWx5OmVuZE1haW5GcmFtZU9ubHkuZ2V0KCld
OworICAgIHdhaXRGb3JNZXNzYWdlKCJlbmQgbWFpbiIpOworICAgIFt3ZWJWaWV3IHJlbG9hZF07
CisgICAgd2FpdEZvck1lc3NhZ2UoInN0YXJ0IGFsbCIpOworICAgIHdhaXRGb3JNZXNzYWdlKCJl
bmQgbWFpbiIpOworICAgIC8vIFdoZW4gcmVsb2FkaW5nLCBhbiBpZnJhbWUgZG9lc24ndCBleGlz
dCBiZWZvcmUgdGhlIGRvY3VtZW50IGhhcyBzdGFydGVkIHRvIGxvYWQuCisgICAgd2FpdEZvck1l
c3NhZ2UoInN0YXJ0IGFsbCIpOworfQorCiBURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBT
Y3JpcHRNZXNzYWdlSGFuZGxlckJhc2ljUmVtb3ZlKQogewogICAgIFJldGFpblB0cjxTY3JpcHRN
ZXNzYWdlSGFuZGxlcj4gaGFuZGxlciA9IGFkb3B0TlMoW1tTY3JpcHRNZXNzYWdlSGFuZGxlciBh
bGxvY10gaW5pdF0pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>312904</attachid>
            <date>2017-06-14 10:42:53 -0700</date>
            <delta_ts>2017-06-14 12:00:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173342-20170614104254.patch</filename>
            <type>text/plain</type>
            <size>30260</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxODE0NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDE3LTA2LTEzICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSBm
b3IgaW1tZWRpYXRlIGluamVjdGlvbiBvZiB1c2VyIHNjcmlwdHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzM0MgorICAgICAgICA8cmRhcjovL3By
b2JsZW0vMjkyMDIyODU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhlIG5ldyBTUEkgaXMgV0tVc2VyQ29udGVudENvbnRyb2xsZXIuX2FkZFVzZXJT
Y3JpcHRJbW1lZGlhdGVseS4KKyAgICAgICAgSXQgaXMgY292ZXJlZCBieSBuZXcgQVBJIHRlc3Rz
LgorCisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6
aW5qZWN0VXNlclNjcmlwdHMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmluamVjdFVzZXJT
Y3JpcHRJbW1lZGlhdGVseSk6CisgICAgICAgIE1vdmUgaW5qZWN0aW9uIGZ1bmN0aW9uYWxpdHkg
dG8gYWxsb3cgdXMgdG8gY2FsbCBpdCBkaXJlY3RseSBmcm9tIHRoZSBuZXcgU1BJLgorICAgICAg
ICAqIHBhZ2UvRnJhbWUuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZTo6Zm9yRWFjaFBhZ2UpOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorCiAyMDE3
LTA2LTEyICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgTW9kZXJuaXplIFVzZXJTY3JpcHQuaApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAJKHJl
dmlzaW9uIDIxODE0NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03MDcsMjAgKzcwNywyNSBAQCB2b2lkIEZyYW1lOjppbmplY3RVc2VyU2NyaXB0
cyhVc2VyU2NyaXB0CiAgICAgICAgIHJldHVybjsKIAogICAgIG1fcGFnZS0+dXNlckNvbnRlbnRQ
cm92aWRlcigpLmZvckVhY2hVc2VyU2NyaXB0KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIGluamVjdGlvblRpbWVdKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFVz
ZXJTY3JpcHQmIHNjcmlwdCkgewotICAgICAgICBhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRvY3Vt
ZW50KCk7Ci0gICAgICAgIGlmICghZG9jdW1lbnQpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIGlmIChzY3JpcHQuaW5qZWN0ZWRGcmFtZXMoKSA9PSBJbmplY3RJblRvcEZyYW1lT25seSAm
JiBvd25lckVsZW1lbnQoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiAoc2Ny
aXB0LmluamVjdGlvblRpbWUoKSA9PSBpbmplY3Rpb25UaW1lICYmIFVzZXJDb250ZW50VVJMUGF0
dGVybjo6bWF0Y2hlc1BhdHRlcm5zKGRvY3VtZW50LT51cmwoKSwgc2NyaXB0LndoaXRlbGlzdCgp
LCBzY3JpcHQuYmxhY2tsaXN0KCkpKSB7Ci0gICAgICAgICAgICBpZiAobV9wYWdlKQotICAgICAg
ICAgICAgICAgIG1fcGFnZS0+c2V0QXNSdW5uaW5nVXNlclNjcmlwdHMoKTsKLSAgICAgICAgICAg
IG1fc2NyaXB0LT5ldmFsdWF0ZUluV29ybGQoU2NyaXB0U291cmNlQ29kZShzY3JpcHQuc291cmNl
KCksIHNjcmlwdC51cmwoKSksIHdvcmxkKTsKLSAgICAgICAgfQorICAgICAgICBpZiAoc2NyaXB0
LmluamVjdGlvblRpbWUoKSA9PSBpbmplY3Rpb25UaW1lKQorICAgICAgICAgICAgaW5qZWN0VXNl
clNjcmlwdEltbWVkaWF0ZWx5KHdvcmxkLCBzY3JpcHQpOwogICAgIH0pOwogfQogCit2b2lkIEZy
YW1lOjppbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwg
Y29uc3QgVXNlclNjcmlwdCYgc2NyaXB0KQoreworICAgIGF1dG8qIGRvY3VtZW50ID0gdGhpcy0+
ZG9jdW1lbnQoKTsKKyAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1cm47CisgICAgaWYg
KHNjcmlwdC5pbmplY3RlZEZyYW1lcygpID09IEluamVjdEluVG9wRnJhbWVPbmx5ICYmIG93bmVy
RWxlbWVudCgpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKCFVc2VyQ29udGVudFVSTFBhdHRl
cm46Om1hdGNoZXNQYXR0ZXJucyhkb2N1bWVudC0+dXJsKCksIHNjcmlwdC53aGl0ZWxpc3QoKSwg
c2NyaXB0LmJsYWNrbGlzdCgpKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChtX3BhZ2UpCisg
ICAgICAgIG1fcGFnZS0+c2V0QXNSdW5uaW5nVXNlclNjcmlwdHMoKTsKKyAgICBtX3NjcmlwdC0+
ZXZhbHVhdGVJbldvcmxkKFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0LnNvdXJjZSgpLCBzY3JpcHQu
dXJsKCkpLCB3b3JsZCk7Cit9CisKIFJlbmRlclZpZXcqIEZyYW1lOjpjb250ZW50UmVuZGVyZXIo
KSBjb25zdAogewogICAgIHJldHVybiBkb2N1bWVudCgpID8gZG9jdW1lbnQoKS0+cmVuZGVyVmll
dygpIDogbnVsbHB0cjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgJKHJldmlzaW9uIDIxODE0NSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMTY1LDcgKzE2
NSw4IEBAIHB1YmxpYzoKIAogLy8gPT09PT09PT0gQWxsIHB1YmxpYyBmdW5jdGlvbnMgYmVsb3cg
dGhpcyBwb2ludCBhcmUgY2FuZGlkYXRlcyB0byBtb3ZlIG91dCBvZiBGcmFtZSBpbnRvIGFub3Ro
ZXIgY2xhc3MuID09PT09PT09CiAKLSAgICB2b2lkIGluamVjdFVzZXJTY3JpcHRzKFVzZXJTY3Jp
cHRJbmplY3Rpb25UaW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluamVjdFVzZXJTY3Jp
cHRzKFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGlu
amVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseShET01XcmFwcGVyV29ybGQmLCBjb25zdCBVc2VyU2Ny
aXB0Jik7CiAgICAgCiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGxheWVyVHJlZUFzVGV4dChM
YXllclRyZWVGbGFncyA9IDApIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyB0cmFj
a2VkUmVwYWludFJlY3RzQXNUZXh0KCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHJl
dmlzaW9uIDIxODE0NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE1MCw3ICsxNTAsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNVdGlsaXR5UGFn
ZUNocm9tZUNsCiAKIERFRklORV9ERUJVR19PTkxZX0dMT0JBTChXVEY6OlJlZkNvdW50ZWRMZWFr
Q291bnRlciwgcGFnZUNvdW50ZXIsICgiUGFnZSIpKTsKIAotdm9pZCBQYWdlOjpmb3JFYWNoUGFn
ZShzdGQ6OmZ1bmN0aW9uPHZvaWQoUGFnZSYpPiBmdW5jdGlvbikKK3ZvaWQgUGFnZTo6Zm9yRWFj
aFBhZ2UoRnVuY3Rpb248dm9pZChQYWdlJik+JiYgZnVuY3Rpb24pCiB7CiAgICAgaWYgKCFhbGxQ
YWdlcykKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHJldmlzaW9uIDIxODE0
NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTMs
NyArMTkzLDcgQEAgcHVibGljOgogCiAgICAgUGFnZUdyb3VwJiBncm91cCgpOwogCi0gICAgc3Rh
dGljIHZvaWQgZm9yRWFjaFBhZ2Uoc3RkOjpmdW5jdGlvbjx2b2lkKFBhZ2UmKT4pOworICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGZvckVhY2hQYWdlKFdURjo6RnVuY3Rpb248dm9pZChQ
YWdlJik+JiYpOwogCiAgICAgdm9pZCBpbmNyZW1lbnRTdWJmcmFtZUNvdW50KCkgeyArK21fc3Vi
ZnJhbWVDb3VudDsgfQogICAgIHZvaWQgZGVjcmVtZW50U3ViZnJhbWVDb3VudCgpIHsgQVNTRVJU
KG1fc3ViZnJhbWVDb3VudCk7IC0tbV9zdWJmcmFtZUNvdW50OyB9CkBAIC01MTUsNyArNTE1LDcg
QEAgcHVibGljOgogCiAgICAgUGx1Z2luSW5mb1Byb3ZpZGVyJiBwbHVnaW5JbmZvUHJvdmlkZXIo
KTsKIAotICAgIFVzZXJDb250ZW50UHJvdmlkZXImIHVzZXJDb250ZW50UHJvdmlkZXIoKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBVc2VyQ29udGVudFByb3ZpZGVyJiB1c2VyQ29udGVudFByb3ZpZGVy
KCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRVc2VyQ29udGVudFByb3ZpZGVyKFJlZjxV
c2VyQ29udGVudFByb3ZpZGVyPiYmKTsKIAogICAgIFZpc2l0ZWRMaW5rU3RvcmUmIHZpc2l0ZWRM
aW5rU3RvcmUoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxODE0NikKKysrIFNvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisyMDE3LTA2
LTEzICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgQWRkIFNQSSBmb3IgaW1tZWRpYXRlIGluamVjdGlvbiBvZiB1c2VyIHNjcmlwdHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzM0MgorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMjkyMDIyODU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwOgor
ICAgICAgICAoV0tQYWdlR3JvdXBBZGRVc2VyU2NyaXB0KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0MvV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWYuY3BwOgorICAgICAgICAoV0tVc2VyQ29u
dGVudENvbnRyb2xsZXJBZGRVc2VyU2NyaXB0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS1VzZXJDb250ZW50
Q29udHJvbGxlciBhZGRVc2VyU2NyaXB0Ol0pOgorICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29u
dHJvbGxlciBfYWRkVXNlclNjcmlwdEltbWVkaWF0ZWx5Ol0pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRlLmg6CisgICAgICAgICog
VUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJT
Y3JpcHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRD
b250cm9sbGVyOjphZGRVc2VyU2NyaXB0cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250
ZW50Q29udHJvbGxlcjo6YWRkVXNlclNjcmlwdEludGVybmFsKToKKyAgICAgICAgSWYgd2UgYXJl
IHRvIGluamVjdCB0aGUgc2NyaXB0IGludGVybmFsbHksIGluamVjdCBpdCBpbnRvIHRoZSBhcHBy
b3ByaWF0ZSBwYWdlcy4KKyAgICAgICAgSWYgd2UncmUgaW5qZWN0aW5nIGludG8gdGhlIHRvcCBm
cmFtZSBvbmx5LCB0aGVyZSdzIG5vIG5lZWQgdG8gdHJhdmVyc2UgdGhlIGZyYW1lIHRyZWUuCisg
ICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRkVXNlclNjcmlwdCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29u
dHJvbGxlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fY3B1TGltaXQpOgorCiAyMDE3LTA2LTEyICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTW9kZXJu
aXplIFVzZXJTY3JpcHQuaApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlVzZXJDb250
ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaAkocmV2aXNpb24gMjE4MTQ1
KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFU
eXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJEYXRhVHlwZXNfaAotI2RlZmluZSBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXNf
aAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJTY3JpcHQuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1VzZXJTdHlsZVNoZWV0Lmg+CkBAIC02NCw1ICs2MywzIEBAIHN0cnVjdCBX
ZWJTY3JpcHRNZXNzYWdlSGFuZGxlckRhdGEgewogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
Ci0KLSNlbmRpZiAvLyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXNfaApJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUdyb3VwLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwCShyZXZp
c2lvbiAyMTgxNDYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3Jv
dXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw5ICszMSwxMSBAQAogI2luY2x1ZGUgIkFQSVVz
ZXJDb250ZW50V29ybGQuaCIKICNpbmNsdWRlICJBUElVc2VyU2NyaXB0LmgiCiAjaW5jbHVkZSAi
QVBJVXNlclN0eWxlU2hlZXQuaCIKKyNpbmNsdWRlICJBZGRVc2VyU2NyaXB0SW1tZWRpYXRlbHku
aCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXZWJQYWdlR3JvdXAuaCIKICNp
bmNsdWRlICJXZWJQcmVmZXJlbmNlcy5oIgorI2luY2x1ZGUgIldlYlVzZXJDb250ZW50Q29udHJv
bGxlci5oIgogI2luY2x1ZGUgIldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgiCiAKIHVz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7CkBAIC05OCw3ICsxMDAsNyBAQCB2b2lkIFdLUGFnZUdyb3Vw
QWRkVXNlclNjcmlwdChXS1BhZ2VHcm91CiAgICAgCiAgICAgYXV0byB1cmwgPSBiYXNlVVJMU3Ry
aW5nLmlzRW1wdHkoKSA/IFdlYkNvcmU6OmJsYW5rVVJMKCkgOiBXZWJDb3JlOjpVUkwoV2ViQ29y
ZTo6VVJMKCksIGJhc2VVUkxTdHJpbmcpOwogICAgIFJlZjxBUEk6OlVzZXJTY3JpcHQ+IHVzZXJT
Y3JpcHQgPSBBUEk6OlVzZXJTY3JpcHQ6OmNyZWF0ZShXZWJDb3JlOjpVc2VyU2NyaXB0IHsgV1RG
TW92ZShzb3VyY2UpLCBXVEZNb3ZlKHVybCksIHdoaXRlbGlzdCA/IHdoaXRlbGlzdC0+dG9TdHJp
bmdWZWN0b3IoKSA6IFZlY3RvcjxTdHJpbmc+KCksIGJsYWNrbGlzdCA/IGJsYWNrbGlzdC0+dG9T
dHJpbmdWZWN0b3IoKSA6IFZlY3RvcjxTdHJpbmc+KCksIHRvVXNlclNjcmlwdEluamVjdGlvblRp
bWUoaW5qZWN0aW9uVGltZSksIHRvVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyhpbmplY3RlZEZy
YW1lcykgfSwgQVBJOjpVc2VyQ29udGVudFdvcmxkOjpub3JtYWxXb3JsZCgpKTsKLSAgICB0b0lt
cGwocGFnZUdyb3VwUmVmKS0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkuYWRkVXNlclNjcmlwdCh1
c2VyU2NyaXB0LmdldCgpKTsKKyAgICB0b0ltcGwocGFnZUdyb3VwUmVmKS0+dXNlckNvbnRlbnRD
b250cm9sbGVyKCkuYWRkVXNlclNjcmlwdCh1c2VyU2NyaXB0LmdldCgpLCBBZGRVc2VyU2NyaXB0
SW1tZWRpYXRlbHk6Ok5vKTsKIH0KIAogdm9pZCBXS1BhZ2VHcm91cFJlbW92ZUFsbFVzZXJTY3Jp
cHRzKFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZikKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS1VzZXJDb250ZW50Q29udHJvbGxlclJlZi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLVXNlckNvbnRlbnRDb250cm9sbGVy
UmVmLmNwcAkocmV2aXNpb24gMjE4MTQ1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjks
NiArMjksNyBAQAogI2luY2x1ZGUgIkFQSUFycmF5LmgiCiAjaW5jbHVkZSAiQVBJQ29udGVudFJ1
bGVMaXN0LmgiCiAjaW5jbHVkZSAiQVBJVXNlclNjcmlwdC5oIgorI2luY2x1ZGUgIkFkZFVzZXJT
Y3JpcHRJbW1lZGlhdGVseS5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgiCiAKQEAgLTUyLDcgKzUzLDcgQEAgV0tBcnJh
eVJlZiBXS1VzZXJDb250ZW50Q29udHJvbGxlckNvcHlVcwogCiB2b2lkIFdLVXNlckNvbnRlbnRD
b250cm9sbGVyQWRkVXNlclNjcmlwdChXS1VzZXJDb250ZW50Q29udHJvbGxlclJlZiB1c2VyQ29u
dGVudENvbnRyb2xsZXJSZWYsIFdLVXNlclNjcmlwdFJlZiB1c2VyU2NyaXB0UmVmKQogewotICAg
IHRvSW1wbCh1c2VyQ29udGVudENvbnRyb2xsZXJSZWYpLT5hZGRVc2VyU2NyaXB0KCp0b0ltcGwo
dXNlclNjcmlwdFJlZikpOworICAgIHRvSW1wbCh1c2VyQ29udGVudENvbnRyb2xsZXJSZWYpLT5h
ZGRVc2VyU2NyaXB0KCp0b0ltcGwodXNlclNjcmlwdFJlZiksIEFkZFVzZXJTY3JpcHRJbW1lZGlh
dGVseTo6Tm8pOwogfQogCiB2b2lkIFdLVXNlckNvbnRlbnRDb250cm9sbGVyUmVtb3ZlQWxsVXNl
clNjcmlwdHMoV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWYgdXNlckNvbnRlbnRDb250cm9sbGVy
UmVmKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250
ZW50Q29udHJvbGxlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyLm1tCShyZXZpc2lvbiAyMTgxNDUpCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9s
bGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbXBvcnQgIkFQSVNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2ltcG9ydCAiQVBJVXNlckNvbnRlbnRXb3JsZC5oIgor
I2ltcG9ydCAiQWRkVXNlclNjcmlwdEltbWVkaWF0ZWx5LmgiCiAjaW1wb3J0ICJXS0NvbnRlbnRS
dWxlTGlzdEludGVybmFsLmgiCiAjaW1wb3J0ICJXS0ZyYW1lSW5mb0ludGVybmFsLmgiCiAjaW1w
b3J0ICJXS05TQXJyYXkuaCIKQEAgLTg0LDcgKzg1LDcgQEAgLSAoTlNBcnJheSAqKXVzZXJTY3Jp
cHRzCiAKIC0gKHZvaWQpYWRkVXNlclNjcmlwdDooV0tVc2VyU2NyaXB0ICopdXNlclNjcmlwdAog
ewotICAgIF91c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS0+YWRkVXNlclNjcmlwdCgqdXNlclNj
cmlwdC0+X3VzZXJTY3JpcHQpOworICAgIF91c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS0+YWRk
VXNlclNjcmlwdCgqdXNlclNjcmlwdC0+X3VzZXJTY3JpcHQsIFdlYktpdDo6QWRkVXNlclNjcmlw
dEltbWVkaWF0ZWx5OjpObyk7CiB9CiAKIC0gKHZvaWQpcmVtb3ZlQWxsVXNlclNjcmlwdHMKQEAg
LTE3Miw2ICsxNzMsMTEgQEAgLSAodm9pZClfcmVtb3ZlQWxsVXNlclNjcmlwdHNBc3NvY2lhdGVk
VwogICAgIF91c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS0+cmVtb3ZlQWxsVXNlclNjcmlwdHMo
KnVzZXJDb250ZW50V29ybGQtPl91c2VyQ29udGVudFdvcmxkKTsKIH0KIAorLSAodm9pZClfYWRk
VXNlclNjcmlwdEltbWVkaWF0ZWx5OihXS1VzZXJTY3JpcHQgKil1c2VyU2NyaXB0Cit7CisgICAg
X3VzZXJDb250ZW50Q29udHJvbGxlclByb3h5LT5hZGRVc2VyU2NyaXB0KCp1c2VyU2NyaXB0LT5f
dXNlclNjcmlwdCwgV2ViS2l0OjpBZGRVc2VyU2NyaXB0SW1tZWRpYXRlbHk6Olllcyk7Cit9CisK
IC0gKHZvaWQpX2FkZFVzZXJDb250ZW50RmlsdGVyOihfV0tVc2VyQ29udGVudEZpbHRlciAqKXVz
ZXJDb250ZW50RmlsdGVyCiB7CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xs
ZXJQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlclByaXZhdGUuaAkocmV2aXNpb24gMjE4MTQ1KQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJv
bGxlclByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQAogCiAtICh2b2lk
KV9yZW1vdmVVc2VyU2NyaXB0OihXS1VzZXJTY3JpcHQgKil1c2VyU2NyaXB0IFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3N4KDEwLjEyKSwgaW9zKDEwLjApKTsKIC0gKHZvaWQpX3JlbW92ZUFsbFVzZXJT
Y3JpcHRzQXNzb2NpYXRlZFdpdGhVc2VyQ29udGVudFdvcmxkOihfV0tVc2VyQ29udGVudFdvcmxk
ICopdXNlckNvbnRlbnRXb3JsZCBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMiksIGlvcygx
MC4wKSk7CistICh2b2lkKV9hZGRVc2VyU2NyaXB0SW1tZWRpYXRlbHk6KFdLVXNlclNjcmlwdCAq
KXVzZXJTY3JpcHQgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19J
T1NfVEJBKSk7CiAKIC0gKHZvaWQpX2FkZFVzZXJDb250ZW50RmlsdGVyOihfV0tVc2VyQ29udGVu
dEZpbHRlciAqKXVzZXJDb250ZW50RmlsdGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEx
KSwgaW9zKDkuMCkpOwogLSAodm9pZClfcmVtb3ZlVXNlckNvbnRlbnRGaWx0ZXI6KE5TU3RyaW5n
ICopdXNlckNvbnRlbnRGaWx0ZXJOYW1lIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjExKSwg
aW9zKDkuMCkpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
VXNlckNvbnRlbnRNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwCShyZXZpc2lvbiAyMTgx
NDUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVu
dE1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSAi
V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmgiCiAKICNpbmNsdWRlICJBUElTZXJpYWxpemVkU2Ny
aXB0VmFsdWUuaCIKKyNpbmNsdWRlICJBZGRVc2VyU2NyaXB0SW1tZWRpYXRlbHkuaCIKICNpbmNs
dWRlICJXZWJLaXRKYXZhc2NyaXB0UmVzdWx0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFBy
aXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRVc2VyQ29udGVudE1hbmFnZXJQcml2YXRlLmgiCkBA
IC0xNTksNyArMTYwLDcgQEAgdm9pZCB3ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfYWRkX3Nj
cgogewogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1VTRVJfQ09OVEVOVF9NQU5BR0VS
KG1hbmFnZXIpKTsKICAgICBnX3JldHVybl9pZl9mYWlsKHNjcmlwdCk7Ci0gICAgbWFuYWdlci0+
cHJpdi0+dXNlckNvbnRlbnRDb250cm9sbGVyLT5hZGRVc2VyU2NyaXB0KHdlYmtpdFVzZXJTY3Jp
cHRHZXRVc2VyU2NyaXB0KHNjcmlwdCkpOworICAgIG1hbmFnZXItPnByaXYtPnVzZXJDb250ZW50
Q29udHJvbGxlci0+YWRkVXNlclNjcmlwdCh3ZWJraXRVc2VyU2NyaXB0R2V0VXNlclNjcmlwdChz
Y3JpcHQpLCBBZGRVc2VyU2NyaXB0SW1tZWRpYXRlbHk6Ok5vKTsKIH0KIAogLyoqCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2Vy
Q29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAJKHJldmlzaW9uIDIxODE0
NSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNp
bmNsdWRlICJBUElVc2VyQ29udGVudFdvcmxkLmgiCiAjaW5jbHVkZSAiQVBJVXNlclNjcmlwdC5o
IgogI2luY2x1ZGUgIkFQSVVzZXJTdHlsZVNoZWV0LmgiCisjaW5jbHVkZSAiQWRkVXNlclNjcmlw
dEltbWVkaWF0ZWx5LmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIldl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIK
QEAgLTE1NCw3ICsxNTUsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Ojpy
ZW1vCiAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJv
bGxlcjo6UmVtb3ZlVXNlckNvbnRlbnRXb3JsZHMod29ybGRzVG9SZW1vdmUpLCBtX2lkZW50aWZp
ZXIpOwogfQogCi12b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyU2Ny
aXB0KEFQSTo6VXNlclNjcmlwdCYgdXNlclNjcmlwdCkKK3ZvaWQgV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHk6OmFkZFVzZXJTY3JpcHQoQVBJOjpVc2VyU2NyaXB0JiB1c2VyU2NyaXB0LCBB
ZGRVc2VyU2NyaXB0SW1tZWRpYXRlbHkgaW1tZWRpYXRlbHkpCiB7CiAgICAgUmVmPEFQSTo6VXNl
ckNvbnRlbnRXb3JsZD4gd29ybGQgPSB1c2VyU2NyaXB0LnVzZXJDb250ZW50V29ybGQoKTsKIApA
QCAtMTYzLDcgKzE2NCw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFk
ZFUKICAgICBtX3VzZXJTY3JpcHRzLT5lbGVtZW50cygpLmFwcGVuZCgmdXNlclNjcmlwdCk7CiAK
ICAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAg
ICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZFVz
ZXJTY3JpcHRzKHsgeyB1c2VyU2NyaXB0LmlkZW50aWZpZXIoKSwgd29ybGQtPmlkZW50aWZpZXIo
KSwgdXNlclNjcmlwdC51c2VyU2NyaXB0KCkgfSB9KSwgbV9pZGVudGlmaWVyKTsKKyAgICAgICAg
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRVc2Vy
U2NyaXB0cyh7IHsgdXNlclNjcmlwdC5pZGVudGlmaWVyKCksIHdvcmxkLT5pZGVudGlmaWVyKCks
IHVzZXJTY3JpcHQudXNlclNjcmlwdCgpIH0gfSwgaW1tZWRpYXRlbHkpLCBtX2lkZW50aWZpZXIp
OwogfQogCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyU2Ny
aXB0KEFQSTo6VXNlclNjcmlwdCYgdXNlclNjcmlwdCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eS5oCShyZXZpc2lvbiAyMTgxNDUpCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaAko
d29ya2luZyBjb3B5KQpAQCAtNTcsNiArNTcsNyBAQCBjbGFzcyBXZWJQcm9jZXNzUHJveHk7CiBj
bGFzcyBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjsKIHN0cnVjdCBGcmFtZUluZm9EYXRhOwogc3Ry
dWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM7CitlbnVtIGNsYXNzIEFkZFVzZXJTY3JpcHRJ
bW1lZGlhdGVseTsKIAogY2xhc3MgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkgOiBwdWJs
aWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpVc2VyQ29udGVudENvbnRyb2xs
ZXI+LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKQEAgLTczLDcgKzc0
LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlUHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmKTsK
IAogICAgIEFQSTo6QXJyYXkmIHVzZXJTY3JpcHRzKCkgeyByZXR1cm4gbV91c2VyU2NyaXB0cy5n
ZXQoKTsgfQotICAgIHZvaWQgYWRkVXNlclNjcmlwdChBUEk6OlVzZXJTY3JpcHQmKTsKKyAgICB2
b2lkIGFkZFVzZXJTY3JpcHQoQVBJOjpVc2VyU2NyaXB0JiwgQWRkVXNlclNjcmlwdEltbWVkaWF0
ZWx5KTsKICAgICB2b2lkIHJlbW92ZVVzZXJTY3JpcHQoQVBJOjpVc2VyU2NyaXB0Jik7CiAgICAg
dm9pZCByZW1vdmVBbGxVc2VyU2NyaXB0cyhBUEk6OlVzZXJDb250ZW50V29ybGQmKTsKICAgICB2
b2lkIHJlbW92ZUFsbFVzZXJTY3JpcHRzKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
V2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMTgxNDUpCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTM0NDAsNiArMzQ0MCw3IEBACiAJCTVDNzcwNjczMUQxMTFEOEIwMDEyNzAwRiAv
KiBXZWJTb2NrZXRQcm92aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBXZWJTb2NrZXRQcm92aWRlci5jcHA7IHBhdGggPSBOZXR3b3JrL1dlYlNvY2tldFByb3Zp
ZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM3Qzg4REMxRDBGNDFBMDAw
OUQyRjZEIC8qIFdlYlNvY2tldFByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IFdlYlNvY2tldFByb3ZpZGVyLmg7IHBhdGggPSBOZXR3b3JrL1dlYlNvY2tldFByb3Zp
ZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDODVDNzg2MUMzRjIzQzUwMDYx
QTRGQSAvKiBQZW5kaW5nRG93bmxvYWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gUGVuZGluZ0Rvd25sb2FkLmNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9QZW5kaW5nRG93bmxvYWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
QzkyNDEyRDFFRjFBNjdBMDA1QUY4OTcgLyogQWRkVXNlclNjcmlwdEltbWVkaWF0ZWx5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFkZFVzZXJTY3JpcHRJbW1lZGlhdGVseS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzlFNTY3RjFERjc5MzA5MDBDOUVFMzMg
LyogV2Vic2l0ZVBvbGljaWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YnNpdGVQb2xpY2llcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzlFNTY4MDFE
RjdGMDU1MDBDOUVFMzMgLyogV0tXZWJzaXRlUG9saWNpZXMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV0tXZWJzaXRlUG9saWNpZXMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1QzlFNTY4MTFERjdGMDU1MDBDOUVFMzMgLyogV0tXZWJzaXRlUG9s
aWNpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tXZWJzaXRlUG9saWNp
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUwODYsNiArNTA4Nyw3IEBACiAJ
CTFBQUYwOEFBMTkyNjkzMEIwMEI2MzkwQyAvKiBVc2VyQ29udGVudCAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNUM5MjQxMkQxRUYxQTY3QTAwNUFGODk3
IC8qIEFkZFVzZXJTY3JpcHRJbW1lZGlhdGVseS5oICovLAogCQkJCTFBQUYwOEFCMTkyNjkzNjcw
MEI2MzkwQyAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwICovLAogCQkJCTFBQUYwOEFD
MTkyNjkzNjcwMEI2MzkwQyAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaCAqLywKIAkJCQkx
QUFGMDhCNDE5MjY5RTI0MDBCNjM5MEMgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3Nh
Z2VzLmluICovLApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9B
ZGRVc2VyU2NyaXB0SW1tZWRpYXRlbHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1VzZXJDb250ZW50L0FkZFVzZXJTY3JpcHRJbW1lZGlhdGVseS5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9BZGRVc2VyU2Ny
aXB0SW1tZWRpYXRlbHkuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKyAgICAKK2Vu
dW0gY2xhc3MgQWRkVXNlclNjcmlwdEltbWVkaWF0ZWx5IHsgTm8sIFllcyB9OworICAgIAorfQor
CituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJLaXQ6
OkFkZFVzZXJTY3JpcHRJbW1lZGlhdGVseT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1
ZXM8CisgICAgV2ViS2l0OjpBZGRVc2VyU2NyaXB0SW1tZWRpYXRlbHksCisgICAgV2ViS2l0OjpB
ZGRVc2VyU2NyaXB0SW1tZWRpYXRlbHk6Ok5vLAorICAgIFdlYktpdDo6QWRkVXNlclNjcmlwdElt
bWVkaWF0ZWx5OjpZZXMKKyAgICA+OworfTsKKworfQpJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjE4MTQ1KQorKysgU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgiCiAKKyNpbmNsdWRlICJBZGRVc2VyU2NyaXB0SW1t
ZWRpYXRlbHkuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRnJhbWVJ
bmZvRGF0YS5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQuaCIKQEAgLTM2
LDYgKzM3LDcgQEAKICNpbmNsdWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5TWVzc2FnZXMuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0RPTVdyYXBwZXJXb3JsZC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTWFp
bkZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
VXNlclN0eWxlU2hlZXQuaD4KQEAgLTEyMiw3ICsxMjQsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlcjo6cmVtb3ZlVXNlCiAgICAgfQogfQogCi12b2lkIFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlcjo6YWRkVXNlclNjcmlwdHMoY29uc3QgVmVjdG9yPFdlYlVzZXJTY3JpcHREYXRhPiYg
dXNlclNjcmlwdHMpCit2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRkVXNlclNjcmlw
dHMoVmVjdG9yPFdlYlVzZXJTY3JpcHREYXRhPiYmIHVzZXJTY3JpcHRzLCBBZGRVc2VyU2NyaXB0
SW1tZWRpYXRlbHkgaW1tZWRpYXRlbHkpCiB7CiAgICAgZm9yIChjb25zdCBhdXRvJiB1c2VyU2Ny
aXB0RGF0YSA6IHVzZXJTY3JpcHRzKSB7CiAgICAgICAgIGF1dG8gaXQgPSB3b3JsZE1hcCgpLmZp
bmQodXNlclNjcmlwdERhdGEud29ybGRJZGVudGlmaWVyKTsKQEAgLTEzMiw3ICsxMzQsNyBAQCB2
b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRkVXNlclNjCiAgICAgICAgIH0KIAogICAg
ICAgICBVc2VyU2NyaXB0IHNjcmlwdCA9IHVzZXJTY3JpcHREYXRhLnVzZXJTY3JpcHQ7Ci0gICAg
ICAgIGFkZFVzZXJTY3JpcHRJbnRlcm5hbCgqaXQtPnZhbHVlLmZpcnN0LCB1c2VyU2NyaXB0RGF0
YS5pZGVudGlmaWVyLCBXVEZNb3ZlKHNjcmlwdCkpOworICAgICAgICBhZGRVc2VyU2NyaXB0SW50
ZXJuYWwoKml0LT52YWx1ZS5maXJzdCwgdXNlclNjcmlwdERhdGEuaWRlbnRpZmllciwgV1RGTW92
ZShzY3JpcHQpLCBpbW1lZGlhdGVseSk7CiAgICAgfQogfQogCkBAIC0zNjAsMTUgKzM2MiwzMSBA
QCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlQWxsCiB9CiAjZW5kaWYKIAot
dm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJTY3JpcHRJbnRlcm5hbChJbmpl
Y3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiB3b3JsZCwgdWludDY0X3QgdXNlclNjcmlwdElkZW50aWZp
ZXIsIFVzZXJTY3JpcHQmJiB1c2VyU2NyaXB0KQordm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXI6OmFkZFVzZXJTY3JpcHRJbnRlcm5hbChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiB3b3Js
ZCwgdWludDY0X3QgdXNlclNjcmlwdElkZW50aWZpZXIsIFVzZXJTY3JpcHQmJiB1c2VyU2NyaXB0
LCBBZGRVc2VyU2NyaXB0SW1tZWRpYXRlbHkgaW1tZWRpYXRlbHkpCiB7CisgICAgaWYgKGltbWVk
aWF0ZWx5ID09IEFkZFVzZXJTY3JpcHRJbW1lZGlhdGVseTo6WWVzKSB7CisgICAgICAgIFBhZ2U6
OmZvckVhY2hQYWdlKFsmXSAoUGFnZSYgcGFnZSkgeworICAgICAgICAgICAgaWYgKCZwYWdlLnVz
ZXJDb250ZW50UHJvdmlkZXIoKSAhPSB0aGlzKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgYXV0byYgbWFpbkZyYW1lID0gcGFnZS5tYWluRnJhbWUo
KTsKKyAgICAgICAgICAgIGlmICh1c2VyU2NyaXB0LmluamVjdGVkRnJhbWVzKCkgPT0gSW5qZWN0
SW5Ub3BGcmFtZU9ubHkpIHsKKyAgICAgICAgICAgICAgICBtYWluRnJhbWUuaW5qZWN0VXNlclNj
cmlwdEltbWVkaWF0ZWx5KHdvcmxkLmNvcmVXb3JsZCgpLCB1c2VyU2NyaXB0KTsKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZvciAoRnJhbWUq
IGZyYW1lID0gJm1haW5GcmFtZTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJz
ZU5leHQoJm1haW5GcmFtZSkpCisgICAgICAgICAgICAgICAgZnJhbWUtPmluamVjdFVzZXJTY3Jp
cHRJbW1lZGlhdGVseSh3b3JsZC5jb3JlV29ybGQoKSwgdXNlclNjcmlwdCk7CisgICAgICAgIH0p
OworICAgIH0KKwogICAgIGF1dG8mIHNjcmlwdHNJbldvcmxkID0gbV91c2VyU2NyaXB0cy5lbnN1
cmUoJndvcmxkLCBbXSB7IHJldHVybiBWZWN0b3I8c3RkOjpwYWlyPHVpbnQ2NF90LCBXZWJDb3Jl
OjpVc2VyU2NyaXB0Pj4oKTsgfSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIHNjcmlwdHNJbldvcmxk
LmFwcGVuZChzdGQ6Om1ha2VfcGFpcih1c2VyU2NyaXB0SWRlbnRpZmllciwgV1RGTW92ZSh1c2Vy
U2NyaXB0KSkpOwogfQogCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRkVXNlclNj
cmlwdChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiB3b3JsZCwgVXNlclNjcmlwdCYmIHVzZXJT
Y3JpcHQpCiB7Ci0gICAgYWRkVXNlclNjcmlwdEludGVybmFsKHdvcmxkLCAwLCBXVEZNb3ZlKHVz
ZXJTY3JpcHQpKTsKKyAgICBhZGRVc2VyU2NyaXB0SW50ZXJuYWwod29ybGQsIDAsIFdURk1vdmUo
dXNlclNjcmlwdCksIEFkZFVzZXJTY3JpcHRJbW1lZGlhdGVseTo6Tm8pOwogfQogCiB2b2lkIFdl
YlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlVXNlclNjcmlwdFdpdGhVUkwoSW5qZWN0ZWRC
dW5kbGVTY3JpcHRXb3JsZCYgd29ybGQsIGNvbnN0IFVSTCYgdXJsKQpJbmRleDogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVz
ZXJDb250ZW50Q29udHJvbGxlci5oCShyZXZpc2lvbiAyMTgxNDUpCisrKyBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgSW5q
ZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDsKIGNsYXNzIFdlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0
RGF0YTsKIGNsYXNzIFdlYlVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JQcm94eTsKK2VudW0g
Y2xhc3MgQWRkVXNlclNjcmlwdEltbWVkaWF0ZWx5OwogCiBjbGFzcyBXZWJVc2VyQ29udGVudENv
bnRyb2xsZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6VXNlckNvbnRlbnRQcm92aWRlciwgcHJp
dmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6CkBAIC02Myw3ICs2NCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHJlbW92ZUFsbFVzZXJDb250ZW50KCk7CiAKICAgICB2b2lkIGFkZFVz
ZXJDb250ZW50V29ybGRzKGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8dWludDY0X3QsIFN0cmluZz4+
Jik7Ci0gICAgdm9pZCBhZGRVc2VyU2NyaXB0cyhjb25zdCBWZWN0b3I8V2ViVXNlclNjcmlwdERh
dGE+Jik7CisgICAgdm9pZCBhZGRVc2VyU2NyaXB0cyhWZWN0b3I8V2ViVXNlclNjcmlwdERhdGE+
JiYsIEFkZFVzZXJTY3JpcHRJbW1lZGlhdGVseSk7CiAgICAgdm9pZCBhZGRVc2VyU3R5bGVTaGVl
dHMoY29uc3QgVmVjdG9yPFdlYlVzZXJTdHlsZVNoZWV0RGF0YT4mKTsKICAgICB2b2lkIGFkZFVz
ZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnMoY29uc3QgVmVjdG9yPFdlYlNjcmlwdE1lc3NhZ2VIYW5k
bGVyRGF0YT4mKTsKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpAQCAtMTAyLDcgKzEw
Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZW1vdmVBbGxDb250ZW50UnVsZUxpc3RzKCk7CiAj
ZW5kaWYKIAotICAgIHZvaWQgYWRkVXNlclNjcmlwdEludGVybmFsKEluamVjdGVkQnVuZGxlU2Ny
aXB0V29ybGQmLCB1aW50NjRfdCB1c2VyU2NyaXB0SWRlbnRpZmllciwgV2ViQ29yZTo6VXNlclNj
cmlwdCYmKTsKKyAgICB2b2lkIGFkZFVzZXJTY3JpcHRJbnRlcm5hbChJbmplY3RlZEJ1bmRsZVNj
cmlwdFdvcmxkJiwgdWludDY0X3QgdXNlclNjcmlwdElkZW50aWZpZXIsIFdlYkNvcmU6OlVzZXJT
Y3JpcHQmJiwgQWRkVXNlclNjcmlwdEltbWVkaWF0ZWx5KTsKICAgICB2b2lkIHJlbW92ZVVzZXJT
Y3JpcHRJbnRlcm5hbChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiwgdWludDY0X3QgdXNlclNj
cmlwdElkZW50aWZpZXIpOwogICAgIHZvaWQgYWRkVXNlclN0eWxlU2hlZXRJbnRlcm5hbChJbmpl
Y3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiwgdWludDY0X3QgdXNlclN0eWxlU2hlZXRJZGVudGlmaWVy
LCBXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCYmKTsKICAgICB2b2lkIHJlbW92ZVVzZXJTdHlsZVNo
ZWV0SW50ZXJuYWwoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYsIHVpbnQ2NF90IHVzZXJTdHls
ZVNoZWV0SWRlbnRpZmllcik7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1VzZXJD
b250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29u
dHJvbGxlci5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjE4MTQ1KQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIubWVzc2FnZXMu
aW4JKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAgbWVzc2FnZXMgLT4gV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyIHsKICAgICBBZGRVc2VyQ29udGVudFdvcmxkcyhWZWN0b3I8c3RkOjpw
YWlyPHVpbnQ2NF90LCBTdHJpbmc+PiB3b3JsZHMpOwogICAgIFJlbW92ZVVzZXJDb250ZW50V29y
bGRzKFZlY3Rvcjx1aW50NjRfdD4gd29ybGRJZGVudGlmaWVycyk7CiAKLSAgICBBZGRVc2VyU2Ny
aXB0cyhWZWN0b3I8c3RydWN0IFdlYktpdDo6V2ViVXNlclNjcmlwdERhdGE+IHVzZXJTY3JpcHRz
KTsKKyAgICBBZGRVc2VyU2NyaXB0cyhWZWN0b3I8c3RydWN0IFdlYktpdDo6V2ViVXNlclNjcmlw
dERhdGE+IHVzZXJTY3JpcHRzLCBlbnVtIFdlYktpdDo6QWRkVXNlclNjcmlwdEltbWVkaWF0ZWx5
IGltbWVkaWF0ZWx5KTsKICAgICBSZW1vdmVVc2VyU2NyaXB0KHVpbnQ2NF90IHdvcmxkSWRlbnRp
ZmllciwgdWludDY0X3QgaWRlbnRpZmllcik7CiAgICAgUmVtb3ZlQWxsVXNlclNjcmlwdHMoVmVj
dG9yPHVpbnQ2NF90PiB3b3JsZElkZW50aWZpZXJzKTsKIApJbmRleDogU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjE4MTQ2KQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQVBJQXJyYXkuaCIKICNpbmNsdWRlICJB
UElHZW9tZXRyeS5oIgogI2luY2x1ZGUgIkFQSVdlYnNpdGVQb2xpY2llcy5oIgorI2luY2x1ZGUg
IkFkZFVzZXJTY3JpcHRJbW1lZGlhdGVseS5oIgogI2luY2x1ZGUgIkFzc2lzdGVkTm9kZUluZm9y
bWF0aW9uLmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRyYWdDb250
cm9sbGVyQWN0aW9uLmgiCkBAIC01NzEsNyArNTcyLDcgQEAgV2ViUGFnZTo6V2ViUGFnZSh1aW50
NjRfdCBwYWdlSUQsIFdlYlBhZwogICAgICAgICByZWdpc3RlclVSTFNjaGVtZUhhbmRsZXIoaXRl
cmF0b3IudmFsdWUsIGl0ZXJhdG9yLmtleSk7CiAKICAgICBtX3VzZXJDb250ZW50Q29udHJvbGxl
ci0+YWRkVXNlckNvbnRlbnRXb3JsZHMocGFyYW1ldGVycy51c2VyQ29udGVudFdvcmxkcyk7Ci0g
ICAgbV91c2VyQ29udGVudENvbnRyb2xsZXItPmFkZFVzZXJTY3JpcHRzKHBhcmFtZXRlcnMudXNl
clNjcmlwdHMpOworICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT5hZGRVc2VyU2NyaXB0cyhX
VEZNb3ZlKHBhcmFtZXRlcnMudXNlclNjcmlwdHMpLCBBZGRVc2VyU2NyaXB0SW1tZWRpYXRlbHk6
Ok5vKTsKICAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+YWRkVXNlclN0eWxlU2hlZXRzKHBh
cmFtZXRlcnMudXNlclN0eWxlU2hlZXRzKTsKICAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+
YWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVycyhwYXJhbWV0ZXJzLm1lc3NhZ2VIYW5kbGVycyk7
CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxODIyMikKKysrIFRvb2xz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE3LTA2LTEzICBB
bGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRk
IFNQSSBmb3IgaW1tZWRpYXRlIGluamVjdGlvbiBvZiB1c2VyIHNjcmlwdHMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzM0MgorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMjkyMDIyODU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9Vc2VyQ29u
dGVudENvbnRyb2xsZXIubW06CisgICAgICAgICh3YWl0Rm9yTWVzc2FnZSk6CisgICAgICAgIChU
RVNUKToKKwogMjAxNy0wNi0xMyAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAK
ICAgICAgICAgSW1wbGVtZW50IFczQyBTZWN1cmUgQ29udGV4dHMgRHJhZnQgU3BlY2lmaWNhdGlv
bgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvVXNlckNvbnRl
bnRDb250cm9sbGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0MkNvY29hL1VzZXJDb250ZW50Q29udHJvbGxlci5tbQkocmV2aXNpb24gMjE4MTQ1KQor
KysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvVXNlckNvbnRlbnRDb250
cm9sbGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNDAsNiArMTQwLDQ3IEBAIFRFU1QoV0tVc2Vy
Q29udGVudENvbnRyb2xsZXIsIFNjcmlwdE1lc3MKICAgICBFWFBFQ1RfV0tfU1RSRVEoQCJQQVNT
IiwgcmVzdWx0VmFsdWUpOwogfQogCitzdGF0aWMgdm9pZCB3YWl0Rm9yTWVzc2FnZShjb25zdCBj
aGFyKiBleHBlY3RlZE1lc3NhZ2UpCit7CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZy
ZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOworICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNl
OworICAgIEVYUEVDVF9TVFJFUShleHBlY3RlZE1lc3NhZ2UsIFsoTlNTdHJpbmcgKilbbGFzdFNj
cmlwdE1lc3NhZ2UgYm9keV0gVVRGOFN0cmluZ10pOworfQorCitURVNUKFdLVXNlckNvbnRlbnRD
b250cm9sbGVyLCBBZGRVc2VyU2NyaXB0SW1tZWRpYXRlbHkpCit7CisgICAgUmV0YWluUHRyPFNj
cmlwdE1lc3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHROUyhbW1NjcmlwdE1lc3NhZ2VIYW5k
bGVyIGFsbG9jXSBpbml0XSk7CisgICAgUmV0YWluUHRyPFdLVXNlclNjcmlwdD4gc3RhcnRBbGxG
cmFtZXMgPSBhZG9wdE5TKFtbV0tVc2VyU2NyaXB0IGFsbG9jXSBpbml0V2l0aFNvdXJjZTpAIndp
bmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCdzdGFy
dCBhbGwnKSIgaW5qZWN0aW9uVGltZTpXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lQXREb2N1bWVu
dFN0YXJ0IGZvck1haW5GcmFtZU9ubHk6Tk9dKTsKKyAgICBSZXRhaW5QdHI8V0tVc2VyU2NyaXB0
PiBlbmRNYWluRnJhbWVPbmx5ID0gYWRvcHROUyhbW1dLVXNlclNjcmlwdCBhbGxvY10gaW5pdFdp
dGhTb3VyY2U6QCJ3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0
TWVzc2FnZSgnZW5kIG1haW4nKSIgaW5qZWN0aW9uVGltZTpXS1VzZXJTY3JpcHRJbmplY3Rpb25U
aW1lQXREb2N1bWVudEVuZCBmb3JNYWluRnJhbWVPbmx5OllFU10pOworICAgIAorICAgIFJldGFp
blB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24g
dXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdl
dCgpIG5hbWU6QCJ0ZXN0SGFuZGxlciJdOworICAgIAorICAgIFJldGFpblB0cjxXS1dlYlZpZXc+
IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFr
ZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0p
OworICAgIAorICAgIFJldGFpblB0cjxTaW1wbGVOYXZpZ2F0aW9uRGVsZWdhdGU+IGRlbGVnYXRl
ID0gYWRvcHROUyhbW1NpbXBsZU5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAg
IFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisgICAgCisg
ICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpb
W05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlLWlmcmFtZSIgd2l0
aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2Vz
Il1dOworICAgIAorICAgIGlzRG9uZVdpdGhOYXZpZ2F0aW9uID0gZmFsc2U7CisgICAgW3dlYlZp
ZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZp
c0RvbmVXaXRoTmF2aWdhdGlvbik7CisgICAgCisgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0g
ZmFsc2U7CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gX2FkZFVz
ZXJTY3JpcHRJbW1lZGlhdGVseTpzdGFydEFsbEZyYW1lcy5nZXQoKV07CisgICAgLy8gc2ltcGxl
LWlmcmFtZS5odG1sIGhhcyBhIG1haW4gZnJhbWUgYW5kIG9uZSBpZnJhbWUuCisgICAgd2FpdEZv
ck1lc3NhZ2UoInN0YXJ0IGFsbCIpOworICAgIHdhaXRGb3JNZXNzYWdlKCJzdGFydCBhbGwiKTsK
KyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBfYWRkVXNlclNjcmlw
dEltbWVkaWF0ZWx5OmVuZE1haW5GcmFtZU9ubHkuZ2V0KCldOworICAgIHdhaXRGb3JNZXNzYWdl
KCJlbmQgbWFpbiIpOworICAgIFt3ZWJWaWV3IHJlbG9hZF07CisgICAgd2FpdEZvck1lc3NhZ2Uo
InN0YXJ0IGFsbCIpOworICAgIHdhaXRGb3JNZXNzYWdlKCJlbmQgbWFpbiIpOworICAgIC8vIFdo
ZW4gcmVsb2FkaW5nLCBhbiBpZnJhbWUgZG9lc24ndCBleGlzdCBiZWZvcmUgdGhlIGRvY3VtZW50
IGhhcyBzdGFydGVkIHRvIGxvYWQuCisgICAgd2FpdEZvck1lc3NhZ2UoInN0YXJ0IGFsbCIpOwor
fQorCiBURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBTY3JpcHRNZXNzYWdlSGFuZGxlckJh
c2ljUmVtb3ZlKQogewogICAgIFJldGFpblB0cjxTY3JpcHRNZXNzYWdlSGFuZGxlcj4gaGFuZGxl
ciA9IGFkb3B0TlMoW1tTY3JpcHRNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>312911</attachid>
            <date>2017-06-14 12:00:24 -0700</date>
            <delta_ts>2018-07-11 10:44:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173342-20170614120025.patch</filename>
            <type>text/plain</type>
            <size>30254</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxODE0NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDE3LTA2LTE0ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSBm
b3IgaW1tZWRpYXRlIGluamVjdGlvbiBvZiB1c2VyIHNjcmlwdHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzM0MgorICAgICAgICA8cmRhcjovL3By
b2JsZW0vMjkyMDIyODU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJhZHkgRWlkc29uLgorCisg
ICAgICAgIFRoZSBuZXcgU1BJIGlzIFdLVXNlckNvbnRlbnRDb250cm9sbGVyLl9hZGRVc2VyU2Ny
aXB0SW1tZWRpYXRlbHkuCisgICAgICAgIEl0IGlzIGNvdmVyZWQgYnkgbmV3IEFQSSB0ZXN0cy4K
KworICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6Omlu
amVjdFVzZXJTY3JpcHRzKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjppbmplY3RVc2VyU2Ny
aXB0SW1tZWRpYXRlbHkpOgorICAgICAgICBNb3ZlIGluamVjdGlvbiBmdW5jdGlvbmFsaXR5IHRv
IGFsbG93IHVzIHRvIGNhbGwgaXQgZGlyZWN0bHkgZnJvbSB0aGUgbmV3IFNQSS4KKyAgICAgICAg
KiBwYWdlL0ZyYW1lLmg6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBhZ2U6OmZvckVhY2hQYWdlKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKwogMjAxNy0w
Ni0xMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAg
ICAgIE1vZGVybml6ZSBVc2VyU2NyaXB0LmgKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCShyZXZp
c2lvbiAyMTgxNDUpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzA3LDIwICs3MDcsMjUgQEAgdm9pZCBGcmFtZTo6aW5qZWN0VXNlclNjcmlwdHMo
VXNlclNjcmlwdAogICAgICAgICByZXR1cm47CiAKICAgICBtX3BhZ2UtPnVzZXJDb250ZW50UHJv
dmlkZXIoKS5mb3JFYWNoVXNlclNjcmlwdChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCBpbmplY3Rpb25UaW1lXShET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBVc2Vy
U2NyaXB0JiBzY3JpcHQpIHsKLSAgICAgICAgYXV0byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVu
dCgpOwotICAgICAgICBpZiAoIWRvY3VtZW50KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICBpZiAoc2NyaXB0LmluamVjdGVkRnJhbWVzKCkgPT0gSW5qZWN0SW5Ub3BGcmFtZU9ubHkgJiYg
b3duZXJFbGVtZW50KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKHNjcmlw
dC5pbmplY3Rpb25UaW1lKCkgPT0gaW5qZWN0aW9uVGltZSAmJiBVc2VyQ29udGVudFVSTFBhdHRl
cm46Om1hdGNoZXNQYXR0ZXJucyhkb2N1bWVudC0+dXJsKCksIHNjcmlwdC53aGl0ZWxpc3QoKSwg
c2NyaXB0LmJsYWNrbGlzdCgpKSkgewotICAgICAgICAgICAgaWYgKG1fcGFnZSkKLSAgICAgICAg
ICAgICAgICBtX3BhZ2UtPnNldEFzUnVubmluZ1VzZXJTY3JpcHRzKCk7Ci0gICAgICAgICAgICBt
X3NjcmlwdC0+ZXZhbHVhdGVJbldvcmxkKFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0LnNvdXJjZSgp
LCBzY3JpcHQudXJsKCkpLCB3b3JsZCk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKHNjcmlwdC5p
bmplY3Rpb25UaW1lKCkgPT0gaW5qZWN0aW9uVGltZSkKKyAgICAgICAgICAgIGluamVjdFVzZXJT
Y3JpcHRJbW1lZGlhdGVseSh3b3JsZCwgc2NyaXB0KTsKICAgICB9KTsKIH0KIAordm9pZCBGcmFt
ZTo6aW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNv
bnN0IFVzZXJTY3JpcHQmIHNjcmlwdCkKK3sKKyAgICBhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRv
Y3VtZW50KCk7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChz
Y3JpcHQuaW5qZWN0ZWRGcmFtZXMoKSA9PSBJbmplY3RJblRvcEZyYW1lT25seSAmJiAhaXNNYWlu
RnJhbWUoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmICghVXNlckNvbnRlbnRVUkxQYXR0ZXJu
OjptYXRjaGVzUGF0dGVybnMoZG9jdW1lbnQtPnVybCgpLCBzY3JpcHQud2hpdGVsaXN0KCksIHNj
cmlwdC5ibGFja2xpc3QoKSkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAobV9wYWdlKQorICAg
ICAgICBtX3BhZ2UtPnNldEFzUnVubmluZ1VzZXJTY3JpcHRzKCk7CisgICAgbV9zY3JpcHQtPmV2
YWx1YXRlSW5Xb3JsZChTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdC5zb3VyY2UoKSwgc2NyaXB0LnVy
bCgpKSwgd29ybGQpOworfQorCiBSZW5kZXJWaWV3KiBGcmFtZTo6Y29udGVudFJlbmRlcmVyKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gZG9jdW1lbnQoKSA/IGRvY3VtZW50KCktPnJlbmRlclZpZXco
KSA6IG51bGxwdHI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCShyZXZpc2lvbiAyMTgxNDUpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2NSw3ICsxNjUs
OCBAQCBwdWJsaWM6CiAKIC8vID09PT09PT09IEFsbCBwdWJsaWMgZnVuY3Rpb25zIGJlbG93IHRo
aXMgcG9pbnQgYXJlIGNhbmRpZGF0ZXMgdG8gbW92ZSBvdXQgb2YgRnJhbWUgaW50byBhbm90aGVy
IGNsYXNzLiA9PT09PT09PQogCi0gICAgdm9pZCBpbmplY3RVc2VyU2NyaXB0cyhVc2VyU2NyaXB0
SW5qZWN0aW9uVGltZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbmplY3RVc2VyU2NyaXB0
cyhVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbmpl
Y3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkoRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgVXNlclNjcmlw
dCYpOwogICAgIAogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBsYXllclRyZWVBc1RleHQoTGF5
ZXJUcmVlRmxhZ3MgPSAwKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgdHJhY2tl
ZFJlcGFpbnRSZWN0c0FzVGV4dCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShyZXZp
c2lvbiAyMTgxNDUpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTAsNyArMTUwLDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzVXRpbGl0eVBhZ2VD
aHJvbWVDbAogCiBERUZJTkVfREVCVUdfT05MWV9HTE9CQUwoV1RGOjpSZWZDb3VudGVkTGVha0Nv
dW50ZXIsIHBhZ2VDb3VudGVyLCAoIlBhZ2UiKSk7CiAKLXZvaWQgUGFnZTo6Zm9yRWFjaFBhZ2Uo
c3RkOjpmdW5jdGlvbjx2b2lkKFBhZ2UmKT4gZnVuY3Rpb24pCit2b2lkIFBhZ2U6OmZvckVhY2hQ
YWdlKEZ1bmN0aW9uPHZvaWQoUGFnZSYpPiYmIGZ1bmN0aW9uKQogewogICAgIGlmICghYWxsUGFn
ZXMpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCShyZXZpc2lvbiAyMTgxNDUp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTkzLDcg
KzE5Myw3IEBAIHB1YmxpYzoKIAogICAgIFBhZ2VHcm91cCYgZ3JvdXAoKTsKIAotICAgIHN0YXRp
YyB2b2lkIGZvckVhY2hQYWdlKHN0ZDo6ZnVuY3Rpb248dm9pZChQYWdlJik+KTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBmb3JFYWNoUGFnZShXVEY6OkZ1bmN0aW9uPHZvaWQoUGFn
ZSYpPiYmKTsKIAogICAgIHZvaWQgaW5jcmVtZW50U3ViZnJhbWVDb3VudCgpIHsgKyttX3N1YmZy
YW1lQ291bnQ7IH0KICAgICB2b2lkIGRlY3JlbWVudFN1YmZyYW1lQ291bnQoKSB7IEFTU0VSVCht
X3N1YmZyYW1lQ291bnQpOyAtLW1fc3ViZnJhbWVDb3VudDsgfQpAQCAtNTE1LDcgKzUxNSw3IEBA
IHB1YmxpYzoKIAogICAgIFBsdWdpbkluZm9Qcm92aWRlciYgcGx1Z2luSW5mb1Byb3ZpZGVyKCk7
CiAKLSAgICBVc2VyQ29udGVudFByb3ZpZGVyJiB1c2VyQ29udGVudFByb3ZpZGVyKCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgVXNlckNvbnRlbnRQcm92aWRlciYgdXNlckNvbnRlbnRQcm92aWRlcigp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VXNlckNvbnRlbnRQcm92aWRlcihSZWY8VXNl
ckNvbnRlbnRQcm92aWRlcj4mJik7CiAKICAgICBWaXNpdGVkTGlua1N0b3JlJiB2aXNpdGVkTGlu
a1N0b3JlKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMTgxNDYpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMyBAQAorMjAxNy0wNi0x
NCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAg
IEFkZCBTUEkgZm9yIGltbWVkaWF0ZSBpbmplY3Rpb24gb2YgdXNlciBzY3JpcHRzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzMzNDIKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzI5MjAyMjg1PgorCisgICAgICAgIFJldmlld2VkIGJ5IEJyYWR5IEVp
ZHNvbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VHcm91cC5jcHA6CisgICAg
ICAgIChXS1BhZ2VHcm91cEFkZFVzZXJTY3JpcHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Qy9XS1VzZXJDb250ZW50Q29udHJvbGxlclJlZi5jcHA6CisgICAgICAgIChXS1VzZXJDb250ZW50
Q29udHJvbGxlckFkZFVzZXJTY3JpcHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tVc2VyQ29udGVudENvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLVXNlckNvbnRlbnRDb250
cm9sbGVyIGFkZFVzZXJTY3JpcHQ6XSk6CisgICAgICAgICgtW1dLVXNlckNvbnRlbnRDb250cm9s
bGVyIF9hZGRVc2VyU2NyaXB0SW1tZWRpYXRlbHk6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlclByaXZhdGUuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNlclNjcmlw
dCk6CisgICAgICAgICogVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29u
dGVudENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRy
b2xsZXI6OmFkZFVzZXJTY3JpcHRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRD
b250cm9sbGVyOjphZGRVc2VyU2NyaXB0SW50ZXJuYWwpOgorICAgICAgICBJZiB3ZSBhcmUgdG8g
aW5qZWN0IHRoZSBzY3JpcHQgaW50ZXJuYWxseSwgaW5qZWN0IGl0IGludG8gdGhlIGFwcHJvcHJp
YXRlIHBhZ2VzLgorICAgICAgICBJZiB3ZSdyZSBpbmplY3RpbmcgaW50byB0aGUgdG9wIGZyYW1l
IG9ubHksIHRoZXJlJ3Mgbm8gbmVlZCB0byB0cmF2ZXJzZSB0aGUgZnJhbWUgdHJlZS4KKyAgICAg
ICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyU2NyaXB0KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6bV9jcHVMaW1pdCk6CisKIDIwMTctMDYtMTIgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBNb2Rlcm5pemUg
VXNlclNjcmlwdC5oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyRGF0YVR5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oCShyZXZpc2lvbiAyMTgxNDUpCisr
KyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDggKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRh
dGFUeXBlc19oCi0jZGVmaW5lIFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlc19oCisj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPFdlYkNvcmUvVXNlclNjcmlwdC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvVXNlclN0eWxlU2hlZXQuaD4KQEAgLTY0LDUgKzYzLDMgQEAgc3RydWN0IFdlYlNj
cmlwdE1lc3NhZ2VIYW5kbGVyRGF0YSB7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQot
I2VuZGlmIC8vIFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlc19oCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VHcm91cC5jcHAJKHJldmlzaW9u
IDIxODE0NikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VHcm91cC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDkgKzMxLDExIEBACiAjaW5jbHVkZSAiQVBJVXNlckNv
bnRlbnRXb3JsZC5oIgogI2luY2x1ZGUgIkFQSVVzZXJTY3JpcHQuaCIKICNpbmNsdWRlICJBUElV
c2VyU3R5bGVTaGVldC5oIgorI2luY2x1ZGUgIkFkZFVzZXJTY3JpcHRJbW1lZGlhdGVseS5oIgog
I2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldlYlBhZ2VHcm91cC5oIgogI2luY2x1
ZGUgIldlYlByZWZlcmVuY2VzLmgiCisjaW5jbHVkZSAiV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
LmgiCiAjaW5jbHVkZSAiV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaCIKIAogdXNpbmcg
bmFtZXNwYWNlIFdlYktpdDsKQEAgLTk4LDcgKzEwMCw3IEBAIHZvaWQgV0tQYWdlR3JvdXBBZGRV
c2VyU2NyaXB0KFdLUGFnZUdyb3UKICAgICAKICAgICBhdXRvIHVybCA9IGJhc2VVUkxTdHJpbmcu
aXNFbXB0eSgpID8gV2ViQ29yZTo6YmxhbmtVUkwoKSA6IFdlYkNvcmU6OlVSTChXZWJDb3JlOjpV
UkwoKSwgYmFzZVVSTFN0cmluZyk7CiAgICAgUmVmPEFQSTo6VXNlclNjcmlwdD4gdXNlclNjcmlw
dCA9IEFQSTo6VXNlclNjcmlwdDo6Y3JlYXRlKFdlYkNvcmU6OlVzZXJTY3JpcHQgeyBXVEZNb3Zl
KHNvdXJjZSksIFdURk1vdmUodXJsKSwgd2hpdGVsaXN0ID8gd2hpdGVsaXN0LT50b1N0cmluZ1Zl
Y3RvcigpIDogVmVjdG9yPFN0cmluZz4oKSwgYmxhY2tsaXN0ID8gYmxhY2tsaXN0LT50b1N0cmlu
Z1ZlY3RvcigpIDogVmVjdG9yPFN0cmluZz4oKSwgdG9Vc2VyU2NyaXB0SW5qZWN0aW9uVGltZShp
bmplY3Rpb25UaW1lKSwgdG9Vc2VyQ29udGVudEluamVjdGVkRnJhbWVzKGluamVjdGVkRnJhbWVz
KSB9LCBBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpOwotICAgIHRvSW1wbChw
YWdlR3JvdXBSZWYpLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU2NyaXB0KHVzZXJT
Y3JpcHQuZ2V0KCkpOworICAgIHRvSW1wbChwYWdlR3JvdXBSZWYpLT51c2VyQ29udGVudENvbnRy
b2xsZXIoKS5hZGRVc2VyU2NyaXB0KHVzZXJTY3JpcHQuZ2V0KCksIEFkZFVzZXJTY3JpcHRJbW1l
ZGlhdGVseTo6Tm8pOwogfQogCiB2b2lkIFdLUGFnZUdyb3VwUmVtb3ZlQWxsVXNlclNjcmlwdHMo
V0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWYu
Y3BwCShyZXZpc2lvbiAyMTgxNDUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsy
OSw3IEBACiAjaW5jbHVkZSAiQVBJQXJyYXkuaCIKICNpbmNsdWRlICJBUElDb250ZW50UnVsZUxp
c3QuaCIKICNpbmNsdWRlICJBUElVc2VyU2NyaXB0LmgiCisjaW5jbHVkZSAiQWRkVXNlclNjcmlw
dEltbWVkaWF0ZWx5LmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHkuaCIKIApAQCAtNTIsNyArNTMsNyBAQCBXS0FycmF5UmVm
IFdLVXNlckNvbnRlbnRDb250cm9sbGVyQ29weVVzCiAKIHZvaWQgV0tVc2VyQ29udGVudENvbnRy
b2xsZXJBZGRVc2VyU2NyaXB0KFdLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmIHVzZXJDb250ZW50
Q29udHJvbGxlclJlZiwgV0tVc2VyU2NyaXB0UmVmIHVzZXJTY3JpcHRSZWYpCiB7Ci0gICAgdG9J
bXBsKHVzZXJDb250ZW50Q29udHJvbGxlclJlZiktPmFkZFVzZXJTY3JpcHQoKnRvSW1wbCh1c2Vy
U2NyaXB0UmVmKSk7CisgICAgdG9JbXBsKHVzZXJDb250ZW50Q29udHJvbGxlclJlZiktPmFkZFVz
ZXJTY3JpcHQoKnRvSW1wbCh1c2VyU2NyaXB0UmVmKSwgQWRkVXNlclNjcmlwdEltbWVkaWF0ZWx5
OjpObyk7CiB9CiAKIHZvaWQgV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZW1vdmVBbGxVc2VyU2Ny
aXB0cyhXS1VzZXJDb250ZW50Q29udHJvbGxlclJlZiB1c2VyQ29udGVudENvbnRyb2xsZXJSZWYp
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRD
b250cm9sbGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW0JKHJldmlzaW9uIDIxODE0NSkKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2ltcG9ydCAiQVBJU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmgiCiAjaW1wb3J0ICJBUElVc2VyQ29udGVudFdvcmxkLmgiCisjaW1w
b3J0ICJBZGRVc2VyU2NyaXB0SW1tZWRpYXRlbHkuaCIKICNpbXBvcnQgIldLQ29udGVudFJ1bGVM
aXN0SW50ZXJuYWwuaCIKICNpbXBvcnQgIldLRnJhbWVJbmZvSW50ZXJuYWwuaCIKICNpbXBvcnQg
IldLTlNBcnJheS5oIgpAQCAtODQsNyArODUsNyBAQCAtIChOU0FycmF5ICopdXNlclNjcmlwdHMK
IAogLSAodm9pZClhZGRVc2VyU2NyaXB0OihXS1VzZXJTY3JpcHQgKil1c2VyU2NyaXB0CiB7Ci0g
ICAgX3VzZXJDb250ZW50Q29udHJvbGxlclByb3h5LT5hZGRVc2VyU2NyaXB0KCp1c2VyU2NyaXB0
LT5fdXNlclNjcmlwdCk7CisgICAgX3VzZXJDb250ZW50Q29udHJvbGxlclByb3h5LT5hZGRVc2Vy
U2NyaXB0KCp1c2VyU2NyaXB0LT5fdXNlclNjcmlwdCwgV2ViS2l0OjpBZGRVc2VyU2NyaXB0SW1t
ZWRpYXRlbHk6Ok5vKTsKIH0KIAogLSAodm9pZClyZW1vdmVBbGxVc2VyU2NyaXB0cwpAQCAtMTcy
LDYgKzE3MywxMSBAQCAtICh2b2lkKV9yZW1vdmVBbGxVc2VyU2NyaXB0c0Fzc29jaWF0ZWRXCiAg
ICAgX3VzZXJDb250ZW50Q29udHJvbGxlclByb3h5LT5yZW1vdmVBbGxVc2VyU2NyaXB0cygqdXNl
ckNvbnRlbnRXb3JsZC0+X3VzZXJDb250ZW50V29ybGQpOwogfQogCistICh2b2lkKV9hZGRVc2Vy
U2NyaXB0SW1tZWRpYXRlbHk6KFdLVXNlclNjcmlwdCAqKXVzZXJTY3JpcHQKK3sKKyAgICBfdXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHktPmFkZFVzZXJTY3JpcHQoKnVzZXJTY3JpcHQtPl91c2Vy
U2NyaXB0LCBXZWJLaXQ6OkFkZFVzZXJTY3JpcHRJbW1lZGlhdGVseTo6WWVzKTsKK30KKwogLSAo
dm9pZClfYWRkVXNlckNvbnRlbnRGaWx0ZXI6KF9XS1VzZXJDb250ZW50RmlsdGVyICopdXNlckNv
bnRlbnRGaWx0ZXIKIHsKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlclBy
aXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLVXNlckNvbnRlbnRDb250cm9sbGVyUHJpdmF0ZS5oCShyZXZpc2lvbiAyMTgxNDUpCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVy
UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAKIC0gKHZvaWQpX3Jl
bW92ZVVzZXJTY3JpcHQ6KFdLVXNlclNjcmlwdCAqKXVzZXJTY3JpcHQgV0tfQVBJX0FWQUlMQUJM
RShtYWNvc3goMTAuMTIpLCBpb3MoMTAuMCkpOwogLSAodm9pZClfcmVtb3ZlQWxsVXNlclNjcmlw
dHNBc3NvY2lhdGVkV2l0aFVzZXJDb250ZW50V29ybGQ6KF9XS1VzZXJDb250ZW50V29ybGQgKil1
c2VyQ29udGVudFdvcmxkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEyKSwgaW9zKDEwLjAp
KTsKKy0gKHZvaWQpX2FkZFVzZXJTY3JpcHRJbW1lZGlhdGVseTooV0tVc2VyU2NyaXB0ICopdXNl
clNjcmlwdCBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19U
QkEpKTsKIAogLSAodm9pZClfYWRkVXNlckNvbnRlbnRGaWx0ZXI6KF9XS1VzZXJDb250ZW50Rmls
dGVyICopdXNlckNvbnRlbnRGaWx0ZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTEpLCBp
b3MoOS4wKSk7CiAtICh2b2lkKV9yZW1vdmVVc2VyQ29udGVudEZpbHRlcjooTlNTdHJpbmcgKil1
c2VyQ29udGVudEZpbHRlck5hbWUgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTEpLCBpb3Mo
OS4wKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2Vy
Q29udGVudE1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5jcHAJKHJldmlzaW9uIDIxODE0NSkK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJDb250ZW50TWFu
YWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJXZWJL
aXRVc2VyQ29udGVudE1hbmFnZXIuaCIKIAogI2luY2x1ZGUgIkFQSVNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5oIgorI2luY2x1ZGUgIkFkZFVzZXJTY3JpcHRJbW1lZGlhdGVseS5oIgogI2luY2x1ZGUg
IldlYktpdEphdmFzY3JpcHRSZXN1bHRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0UHJpdmF0
ZS5oIgogI2luY2x1ZGUgIldlYktpdFVzZXJDb250ZW50TWFuYWdlclByaXZhdGUuaCIKQEAgLTE1
OSw3ICsxNjAsNyBAQCB2b2lkIHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9hZGRfc2NyCiB7
CiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfVVNFUl9DT05URU5UX01BTkFHRVIobWFu
YWdlcikpOwogICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2NyaXB0KTsKLSAgICBtYW5hZ2VyLT5wcml2
LT51c2VyQ29udGVudENvbnRyb2xsZXItPmFkZFVzZXJTY3JpcHQod2Via2l0VXNlclNjcmlwdEdl
dFVzZXJTY3JpcHQoc2NyaXB0KSk7CisgICAgbWFuYWdlci0+cHJpdi0+dXNlckNvbnRlbnRDb250
cm9sbGVyLT5hZGRVc2VyU2NyaXB0KHdlYmtpdFVzZXJTY3JpcHRHZXRVc2VyU2NyaXB0KHNjcmlw
dCksIEFkZFVzZXJTY3JpcHRJbW1lZGlhdGVseTo6Tm8pOwogfQogCiAvKioKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJDb250
ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcAkocmV2aXNpb24gMjE4MTQ1KQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1
ZGUgIkFQSVVzZXJDb250ZW50V29ybGQuaCIKICNpbmNsdWRlICJBUElVc2VyU2NyaXB0LmgiCiAj
aW5jbHVkZSAiQVBJVXNlclN0eWxlU2hlZXQuaCIKKyNpbmNsdWRlICJBZGRVc2VyU2NyaXB0SW1t
ZWRpYXRlbHkuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiV2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgpAQCAt
MTU0LDcgKzE1NSw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW8K
ICAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVy
OjpSZW1vdmVVc2VyQ29udGVudFdvcmxkcyh3b3JsZHNUb1JlbW92ZSksIG1faWRlbnRpZmllcik7
CiB9CiAKLXZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJTY3JpcHQo
QVBJOjpVc2VyU2NyaXB0JiB1c2VyU2NyaXB0KQordm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eTo6YWRkVXNlclNjcmlwdChBUEk6OlVzZXJTY3JpcHQmIHVzZXJTY3JpcHQsIEFkZFVz
ZXJTY3JpcHRJbW1lZGlhdGVseSBpbW1lZGlhdGVseSkKIHsKICAgICBSZWY8QVBJOjpVc2VyQ29u
dGVudFdvcmxkPiB3b3JsZCA9IHVzZXJTY3JpcHQudXNlckNvbnRlbnRXb3JsZCgpOwogCkBAIC0x
NjMsNyArMTY0LDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkVQog
ICAgIG1fdXNlclNjcmlwdHMtPmVsZW1lbnRzKCkuYXBwZW5kKCZ1c2VyU2NyaXB0KTsKIAogICAg
IGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHBy
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNlclNj
cmlwdHMoeyB7IHVzZXJTY3JpcHQuaWRlbnRpZmllcigpLCB3b3JsZC0+aWRlbnRpZmllcigpLCB1
c2VyU2NyaXB0LnVzZXJTY3JpcHQoKSB9IH0pLCBtX2lkZW50aWZpZXIpOworICAgICAgICBwcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZFVzZXJTY3Jp
cHRzKHsgeyB1c2VyU2NyaXB0LmlkZW50aWZpZXIoKSwgd29ybGQtPmlkZW50aWZpZXIoKSwgdXNl
clNjcmlwdC51c2VyU2NyaXB0KCkgfSB9LCBpbW1lZGlhdGVseSksIG1faWRlbnRpZmllcik7CiB9
CiAKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJTY3JpcHQo
QVBJOjpVc2VyU2NyaXB0JiB1c2VyU2NyaXB0KQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5LmgJKHJldmlzaW9uIDIxODE0NSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01Nyw2ICs1Nyw3IEBAIGNsYXNzIFdlYlByb2Nlc3NQcm94eTsKIGNsYXNz
IFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOwogc3RydWN0IEZyYW1lSW5mb0RhdGE7CiBzdHJ1Y3Qg
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczsKK2VudW0gY2xhc3MgQWRkVXNlclNjcmlwdEltbWVk
aWF0ZWx5OwogCiBjbGFzcyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSA6IHB1YmxpYyBB
UEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlVzZXJDb250ZW50Q29udHJvbGxlcj4s
IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgpAQCAtNzMsNyArNzQsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYpOwogCiAg
ICAgQVBJOjpBcnJheSYgdXNlclNjcmlwdHMoKSB7IHJldHVybiBtX3VzZXJTY3JpcHRzLmdldCgp
OyB9Ci0gICAgdm9pZCBhZGRVc2VyU2NyaXB0KEFQSTo6VXNlclNjcmlwdCYpOworICAgIHZvaWQg
YWRkVXNlclNjcmlwdChBUEk6OlVzZXJTY3JpcHQmLCBBZGRVc2VyU2NyaXB0SW1tZWRpYXRlbHkp
OwogICAgIHZvaWQgcmVtb3ZlVXNlclNjcmlwdChBUEk6OlVzZXJTY3JpcHQmKTsKICAgICB2b2lk
IHJlbW92ZUFsbFVzZXJTY3JpcHRzKEFQSTo6VXNlckNvbnRlbnRXb3JsZCYpOwogICAgIHZvaWQg
cmVtb3ZlQWxsVXNlclNjcmlwdHMoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJL
aXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIxODE0NSkKKysrIFNvdXJj
ZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtMzQ0MCw2ICszNDQwLDcgQEAKIAkJNUM3NzA2NzMxRDExMUQ4QjAwMTI3MDBGIC8qIFdl
YlNvY2tldFByb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IFdlYlNvY2tldFByb3ZpZGVyLmNwcDsgcGF0aCA9IE5ldHdvcmsvV2ViU29ja2V0UHJvdmlkZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzdDODhEQzFEMEY0MUEwMDA5RDJG
NkQgLyogV2ViU29ja2V0UHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gV2ViU29ja2V0UHJvdmlkZXIuaDsgcGF0aCA9IE5ldHdvcmsvV2ViU29ja2V0UHJvdmlkZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM4NUM3ODYxQzNGMjNDNTAwNjFBNEZB
IC8qIFBlbmRpbmdEb3dubG9hZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBQZW5kaW5nRG93bmxvYWQuY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L1BlbmRpbmdEb3dubG9hZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDOTI0
MTJEMUVGMUE2N0EwMDVBRjg5NyAvKiBBZGRVc2VyU2NyaXB0SW1tZWRpYXRlbHkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWRkVXNlclNjcmlwdEltbWVkaWF0ZWx5Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDOUU1NjdGMURGNzkzMDkwMEM5RUUzMyAvKiBX
ZWJzaXRlUG9saWNpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vic2l0
ZVBvbGljaWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDOUU1NjgwMURGN0Yw
NTUwMEM5RUUzMyAvKiBXS1dlYnNpdGVQb2xpY2llcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXS1dlYnNpdGVQb2xpY2llcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTVDOUU1NjgxMURGN0YwNTUwMEM5RUUzMyAvKiBXS1dlYnNpdGVQb2xpY2ll
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1dlYnNpdGVQb2xpY2llcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTA4Niw2ICs1MDg3LDcgQEAKIAkJMUFB
RjA4QUExOTI2OTMwQjAwQjYzOTBDIC8qIFVzZXJDb250ZW50ICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk1QzkyNDEyRDFFRjFBNjdBMDA1QUY4OTcgLyog
QWRkVXNlclNjcmlwdEltbWVkaWF0ZWx5LmggKi8sCiAJCQkJMUFBRjA4QUIxOTI2OTM2NzAwQjYz
OTBDIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAgKi8sCiAJCQkJMUFBRjA4QUMxOTI2
OTM2NzAwQjYzOTBDIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlci5oICovLAogCQkJCTFBQUYw
OEI0MTkyNjlFMjQwMEI2MzkwQyAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXIubWVzc2FnZXMu
aW4gKi8sCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1VzZXJDb250ZW50L0FkZFVz
ZXJTY3JpcHRJbW1lZGlhdGVseS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvVXNlckNvbnRlbnQvQWRkVXNlclNjcmlwdEltbWVkaWF0ZWx5LmgJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1VzZXJDb250ZW50L0FkZFVzZXJTY3JpcHRJ
bW1lZGlhdGVseS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworICAgIAorZW51bSBj
bGFzcyBBZGRVc2VyU2NyaXB0SW1tZWRpYXRlbHkgeyBObywgWWVzIH07CisgICAgCit9CisKK25h
bWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYktpdDo6QWRk
VXNlclNjcmlwdEltbWVkaWF0ZWx5PiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwK
KyAgICBXZWJLaXQ6OkFkZFVzZXJTY3JpcHRJbW1lZGlhdGVseSwKKyAgICBXZWJLaXQ6OkFkZFVz
ZXJTY3JpcHRJbW1lZGlhdGVseTo6Tm8sCisgICAgV2ViS2l0OjpBZGRVc2VyU2NyaXB0SW1tZWRp
YXRlbHk6OlllcworICAgID47Cit9OworCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENv
bnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyMTgxNDUpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJV
c2VyQ29udGVudENvbnRyb2xsZXIuaCIKIAorI2luY2x1ZGUgIkFkZFVzZXJTY3JpcHRJbW1lZGlh
dGVseS5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJGcmFtZUluZm9E
YXRhLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZC5oIgpAQCAtMzYsNiAr
MzcsNyBAQAogI2luY2x1ZGUgIldlYlVzZXJDb250ZW50Q29udHJvbGxlck1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHlNZXNzYWdlcy5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvRE9NV3JhcHBlcldvcmxkLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9NYWluRnJh
bWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2Vy
U3R5bGVTaGVldC5oPgpAQCAtMTIyLDcgKzEyNCw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyOjpyZW1vdmVVc2UKICAgICB9CiB9CiAKLXZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyOjphZGRVc2VyU2NyaXB0cyhjb25zdCBWZWN0b3I8V2ViVXNlclNjcmlwdERhdGE+JiB1c2Vy
U2NyaXB0cykKK3ZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyU2NyaXB0cyhW
ZWN0b3I8V2ViVXNlclNjcmlwdERhdGE+JiYgdXNlclNjcmlwdHMsIEFkZFVzZXJTY3JpcHRJbW1l
ZGlhdGVseSBpbW1lZGlhdGVseSkKIHsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHVzZXJTY3JpcHRE
YXRhIDogdXNlclNjcmlwdHMpIHsKICAgICAgICAgYXV0byBpdCA9IHdvcmxkTWFwKCkuZmluZCh1
c2VyU2NyaXB0RGF0YS53b3JsZElkZW50aWZpZXIpOwpAQCAtMTMyLDcgKzEzNCw3IEBAIHZvaWQg
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyU2MKICAgICAgICAgfQogCiAgICAgICAg
IFVzZXJTY3JpcHQgc2NyaXB0ID0gdXNlclNjcmlwdERhdGEudXNlclNjcmlwdDsKLSAgICAgICAg
YWRkVXNlclNjcmlwdEludGVybmFsKCppdC0+dmFsdWUuZmlyc3QsIHVzZXJTY3JpcHREYXRhLmlk
ZW50aWZpZXIsIFdURk1vdmUoc2NyaXB0KSk7CisgICAgICAgIGFkZFVzZXJTY3JpcHRJbnRlcm5h
bCgqaXQtPnZhbHVlLmZpcnN0LCB1c2VyU2NyaXB0RGF0YS5pZGVudGlmaWVyLCBXVEZNb3ZlKHNj
cmlwdCksIGltbWVkaWF0ZWx5KTsKICAgICB9CiB9CiAKQEAgLTM2MCwxNSArMzYyLDMxIEBAIHZv
aWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVBbGwKIH0KICNlbmRpZgogCi12b2lk
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRkVXNlclNjcmlwdEludGVybmFsKEluamVjdGVk
QnVuZGxlU2NyaXB0V29ybGQmIHdvcmxkLCB1aW50NjRfdCB1c2VyU2NyaXB0SWRlbnRpZmllciwg
VXNlclNjcmlwdCYmIHVzZXJTY3JpcHQpCit2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6
YWRkVXNlclNjcmlwdEludGVybmFsKEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQmIHdvcmxkLCB1
aW50NjRfdCB1c2VyU2NyaXB0SWRlbnRpZmllciwgVXNlclNjcmlwdCYmIHVzZXJTY3JpcHQsIEFk
ZFVzZXJTY3JpcHRJbW1lZGlhdGVseSBpbW1lZGlhdGVseSkKIHsKKyAgICBpZiAoaW1tZWRpYXRl
bHkgPT0gQWRkVXNlclNjcmlwdEltbWVkaWF0ZWx5OjpZZXMpIHsKKyAgICAgICAgUGFnZTo6Zm9y
RWFjaFBhZ2UoWyZdIChQYWdlJiBwYWdlKSB7CisgICAgICAgICAgICBpZiAoJnBhZ2UudXNlckNv
bnRlbnRQcm92aWRlcigpICE9IHRoaXMpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgCisgICAgICAgICAgICBhdXRvJiBtYWluRnJhbWUgPSBwYWdlLm1haW5GcmFtZSgpOwor
ICAgICAgICAgICAgaWYgKHVzZXJTY3JpcHQuaW5qZWN0ZWRGcmFtZXMoKSA9PSBJbmplY3RJblRv
cEZyYW1lT25seSkgeworICAgICAgICAgICAgICAgIG1haW5GcmFtZS5pbmplY3RVc2VyU2NyaXB0
SW1tZWRpYXRlbHkod29ybGQuY29yZVdvcmxkKCksIHVzZXJTY3JpcHQpOworICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZm9yIChGcmFtZSogZnJh
bWUgPSAmbWFpbkZyYW1lOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4
dCgmbWFpbkZyYW1lKSkKKyAgICAgICAgICAgICAgICBmcmFtZS0+aW5qZWN0VXNlclNjcmlwdElt
bWVkaWF0ZWx5KHdvcmxkLmNvcmVXb3JsZCgpLCB1c2VyU2NyaXB0KTsKKyAgICAgICAgfSk7Cisg
ICAgfQorCiAgICAgYXV0byYgc2NyaXB0c0luV29ybGQgPSBtX3VzZXJTY3JpcHRzLmVuc3VyZSgm
d29ybGQsIFtdIHsgcmV0dXJuIFZlY3RvcjxzdGQ6OnBhaXI8dWludDY0X3QsIFdlYkNvcmU6OlVz
ZXJTY3JpcHQ+PigpOyB9KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgc2NyaXB0c0luV29ybGQuYXBw
ZW5kKHN0ZDo6bWFrZV9wYWlyKHVzZXJTY3JpcHRJZGVudGlmaWVyLCBXVEZNb3ZlKHVzZXJTY3Jp
cHQpKSk7CiB9CiAKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyU2NyaXB0
KEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQmIHdvcmxkLCBVc2VyU2NyaXB0JiYgdXNlclNjcmlw
dCkKIHsKLSAgICBhZGRVc2VyU2NyaXB0SW50ZXJuYWwod29ybGQsIDAsIFdURk1vdmUodXNlclNj
cmlwdCkpOworICAgIGFkZFVzZXJTY3JpcHRJbnRlcm5hbCh3b3JsZCwgMCwgV1RGTW92ZSh1c2Vy
U2NyaXB0KSwgQWRkVXNlclNjcmlwdEltbWVkaWF0ZWx5OjpObyk7CiB9CiAKIHZvaWQgV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVVc2VyU2NyaXB0V2l0aFVSTChJbmplY3RlZEJ1bmRs
ZVNjcmlwdFdvcmxkJiB3b3JsZCwgY29uc3QgVVJMJiB1cmwpCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyLmgJKHJldmlzaW9uIDIxODE0NSkKKysrIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBJbmplY3Rl
ZEJ1bmRsZVNjcmlwdFdvcmxkOwogY2xhc3MgV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRh
OwogY2xhc3MgV2ViVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvclByb3h5OworZW51bSBjbGFz
cyBBZGRVc2VyU2NyaXB0SW1tZWRpYXRlbHk7CiAKIGNsYXNzIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpVc2VyQ29udGVudFByb3ZpZGVyLCBwcml2YXRl
IElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKQEAgLTYzLDcgKzY0LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgcmVtb3ZlQWxsVXNlckNvbnRlbnQoKTsKIAogICAgIHZvaWQgYWRkVXNlckNv
bnRlbnRXb3JsZHMoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjx1aW50NjRfdCwgU3RyaW5nPj4mKTsK
LSAgICB2b2lkIGFkZFVzZXJTY3JpcHRzKGNvbnN0IFZlY3RvcjxXZWJVc2VyU2NyaXB0RGF0YT4m
KTsKKyAgICB2b2lkIGFkZFVzZXJTY3JpcHRzKFZlY3RvcjxXZWJVc2VyU2NyaXB0RGF0YT4mJiwg
QWRkVXNlclNjcmlwdEltbWVkaWF0ZWx5KTsKICAgICB2b2lkIGFkZFVzZXJTdHlsZVNoZWV0cyhj
b25zdCBWZWN0b3I8V2ViVXNlclN0eWxlU2hlZXREYXRhPiYpOwogICAgIHZvaWQgYWRkVXNlclNj
cmlwdE1lc3NhZ2VIYW5kbGVycyhjb25zdCBWZWN0b3I8V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXJE
YXRhPiYpOwogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCkBAIC0xMDIsNyArMTAzLDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZUFsbENvbnRlbnRSdWxlTGlzdHMoKTsKICNlbmRp
ZgogCi0gICAgdm9pZCBhZGRVc2VyU2NyaXB0SW50ZXJuYWwoSW5qZWN0ZWRCdW5kbGVTY3JpcHRX
b3JsZCYsIHVpbnQ2NF90IHVzZXJTY3JpcHRJZGVudGlmaWVyLCBXZWJDb3JlOjpVc2VyU2NyaXB0
JiYpOworICAgIHZvaWQgYWRkVXNlclNjcmlwdEludGVybmFsKEluamVjdGVkQnVuZGxlU2NyaXB0
V29ybGQmLCB1aW50NjRfdCB1c2VyU2NyaXB0SWRlbnRpZmllciwgV2ViQ29yZTo6VXNlclNjcmlw
dCYmLCBBZGRVc2VyU2NyaXB0SW1tZWRpYXRlbHkpOwogICAgIHZvaWQgcmVtb3ZlVXNlclNjcmlw
dEludGVybmFsKEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQmLCB1aW50NjRfdCB1c2VyU2NyaXB0
SWRlbnRpZmllcik7CiAgICAgdm9pZCBhZGRVc2VyU3R5bGVTaGVldEludGVybmFsKEluamVjdGVk
QnVuZGxlU2NyaXB0V29ybGQmLCB1aW50NjRfdCB1c2VyU3R5bGVTaGVldElkZW50aWZpZXIsIFdl
YkNvcmU6OlVzZXJTdHlsZVNoZWV0JiYpOwogICAgIHZvaWQgcmVtb3ZlVXNlclN0eWxlU2hlZXRJ
bnRlcm5hbChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiwgdWludDY0X3QgdXNlclN0eWxlU2hl
ZXRJZGVudGlmaWVyKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvVXNlckNvbnRl
bnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyMTgxNDUpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5tZXNzYWdlcy5pbgko
d29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQCBtZXNzYWdlcyAtPiBXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXIgewogICAgIEFkZFVzZXJDb250ZW50V29ybGRzKFZlY3RvcjxzdGQ6OnBhaXI8
dWludDY0X3QsIFN0cmluZz4+IHdvcmxkcyk7CiAgICAgUmVtb3ZlVXNlckNvbnRlbnRXb3JsZHMo
VmVjdG9yPHVpbnQ2NF90PiB3b3JsZElkZW50aWZpZXJzKTsKIAotICAgIEFkZFVzZXJTY3JpcHRz
KFZlY3RvcjxzdHJ1Y3QgV2ViS2l0OjpXZWJVc2VyU2NyaXB0RGF0YT4gdXNlclNjcmlwdHMpOwor
ICAgIEFkZFVzZXJTY3JpcHRzKFZlY3RvcjxzdHJ1Y3QgV2ViS2l0OjpXZWJVc2VyU2NyaXB0RGF0
YT4gdXNlclNjcmlwdHMsIGVudW0gV2ViS2l0OjpBZGRVc2VyU2NyaXB0SW1tZWRpYXRlbHkgaW1t
ZWRpYXRlbHkpOwogICAgIFJlbW92ZVVzZXJTY3JpcHQodWludDY0X3Qgd29ybGRJZGVudGlmaWVy
LCB1aW50NjRfdCBpZGVudGlmaWVyKTsKICAgICBSZW1vdmVBbGxVc2VyU2NyaXB0cyhWZWN0b3I8
dWludDY0X3Q+IHdvcmxkSWRlbnRpZmllcnMpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAyMTgxNDYpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJBUElBcnJheS5oIgogI2luY2x1ZGUgIkFQSUdl
b21ldHJ5LmgiCiAjaW5jbHVkZSAiQVBJV2Vic2l0ZVBvbGljaWVzLmgiCisjaW5jbHVkZSAiQWRk
VXNlclNjcmlwdEltbWVkaWF0ZWx5LmgiCiAjaW5jbHVkZSAiQXNzaXN0ZWROb2RlSW5mb3JtYXRp
b24uaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRHJhZ0NvbnRyb2xs
ZXJBY3Rpb24uaCIKQEAgLTU3MSw3ICs1NzIsNyBAQCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90
IHBhZ2VJRCwgV2ViUGFnCiAgICAgICAgIHJlZ2lzdGVyVVJMU2NoZW1lSGFuZGxlcihpdGVyYXRv
ci52YWx1ZSwgaXRlcmF0b3Iua2V5KTsKIAogICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT5h
ZGRVc2VyQ29udGVudFdvcmxkcyhwYXJhbWV0ZXJzLnVzZXJDb250ZW50V29ybGRzKTsKLSAgICBt
X3VzZXJDb250ZW50Q29udHJvbGxlci0+YWRkVXNlclNjcmlwdHMocGFyYW1ldGVycy51c2VyU2Ny
aXB0cyk7CisgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXItPmFkZFVzZXJTY3JpcHRzKFdURk1v
dmUocGFyYW1ldGVycy51c2VyU2NyaXB0cyksIEFkZFVzZXJTY3JpcHRJbW1lZGlhdGVseTo6Tm8p
OwogICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT5hZGRVc2VyU3R5bGVTaGVldHMocGFyYW1l
dGVycy51c2VyU3R5bGVTaGVldHMpOwogICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT5hZGRV
c2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzKHBhcmFtZXRlcnMubWVzc2FnZUhhbmRsZXJzKTsKICNp
ZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjE4MjIyKQorKysgVG9vbHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTctMDYtMTQgIEFsZXgg
Q2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgU1BJ
IGZvciBpbW1lZGlhdGUgaW5qZWN0aW9uIG9mIHVzZXIgc2NyaXB0cworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczMzQyCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8yOTIwMjI4NT4KKworICAgICAgICBSZXZpZXdlZCBieSBCcmFkeSBFaWRzb24uCisK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9Vc2VyQ29udGVudENv
bnRyb2xsZXIubW06CisgICAgICAgICh3YWl0Rm9yTWVzc2FnZSk6CisgICAgICAgIChURVNUKToK
KwogMjAxNy0wNi0xMyAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAg
ICAgSW1wbGVtZW50IFczQyBTZWN1cmUgQ29udGV4dHMgRHJhZnQgU3BlY2lmaWNhdGlvbgpJbmRl
eDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvVXNlckNvbnRlbnRDb250
cm9sbGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
MkNvY29hL1VzZXJDb250ZW50Q29udHJvbGxlci5tbQkocmV2aXNpb24gMjE4MTQ1KQorKysgVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvVXNlckNvbnRlbnRDb250cm9sbGVy
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNDAsNiArMTQwLDQ3IEBAIFRFU1QoV0tVc2VyQ29udGVu
dENvbnRyb2xsZXIsIFNjcmlwdE1lc3MKICAgICBFWFBFQ1RfV0tfU1RSRVEoQCJQQVNTIiwgcmVz
dWx0VmFsdWUpOwogfQogCitzdGF0aWMgdm9pZCB3YWl0Rm9yTWVzc2FnZShjb25zdCBjaGFyKiBl
eHBlY3RlZE1lc3NhZ2UpCit7CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZl
ZFNjcmlwdE1lc3NhZ2UpOworICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOworICAg
IEVYUEVDVF9TVFJFUShleHBlY3RlZE1lc3NhZ2UsIFsoTlNTdHJpbmcgKilbbGFzdFNjcmlwdE1l
c3NhZ2UgYm9keV0gVVRGOFN0cmluZ10pOworfQorCitURVNUKFdLVXNlckNvbnRlbnRDb250cm9s
bGVyLCBBZGRVc2VyU2NyaXB0SW1tZWRpYXRlbHkpCit7CisgICAgUmV0YWluUHRyPFNjcmlwdE1l
c3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHROUyhbW1NjcmlwdE1lc3NhZ2VIYW5kbGVyIGFs
bG9jXSBpbml0XSk7CisgICAgUmV0YWluUHRyPFdLVXNlclNjcmlwdD4gc3RhcnRBbGxGcmFtZXMg
PSBhZG9wdE5TKFtbV0tVc2VyU2NyaXB0IGFsbG9jXSBpbml0V2l0aFNvdXJjZTpAIndpbmRvdy53
ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCdzdGFydCBhbGwn
KSIgaW5qZWN0aW9uVGltZTpXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lQXREb2N1bWVudFN0YXJ0
IGZvck1haW5GcmFtZU9ubHk6Tk9dKTsKKyAgICBSZXRhaW5QdHI8V0tVc2VyU2NyaXB0PiBlbmRN
YWluRnJhbWVPbmx5ID0gYWRvcHROUyhbW1dLVXNlclNjcmlwdCBhbGxvY10gaW5pdFdpdGhTb3Vy
Y2U6QCJ3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2Fn
ZSgnZW5kIG1haW4nKSIgaW5qZWN0aW9uVGltZTpXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lQXRE
b2N1bWVudEVuZCBmb3JNYWluRnJhbWVPbmx5OllFU10pOworICAgIAorICAgIFJldGFpblB0cjxX
S1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNv
bnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdldCgpIG5h
bWU6QCJ0ZXN0SGFuZGxlciJdOworICAgIAorICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZp
ZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3Qo
MCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAg
IAorICAgIFJldGFpblB0cjxTaW1wbGVOYXZpZ2F0aW9uRGVsZWdhdGU+IGRlbGVnYXRlID0gYWRv
cHROUyhbW1NpbXBsZU5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJW
aWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisgICAgCisgICAgTlNV
UkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVu
ZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlLWlmcmFtZSIgd2l0aEV4dGVu
c2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOwor
ICAgIAorICAgIGlzRG9uZVdpdGhOYXZpZ2F0aW9uID0gZmFsc2U7CisgICAgW3dlYlZpZXcgbG9h
ZFJlcXVlc3Q6cmVxdWVzdF07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmVX
aXRoTmF2aWdhdGlvbik7CisgICAgCisgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7
CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gX2FkZFVzZXJTY3Jp
cHRJbW1lZGlhdGVseTpzdGFydEFsbEZyYW1lcy5nZXQoKV07CisgICAgLy8gc2ltcGxlLWlmcmFt
ZS5odG1sIGhhcyBhIG1haW4gZnJhbWUgYW5kIG9uZSBpZnJhbWUuCisgICAgd2FpdEZvck1lc3Nh
Z2UoInN0YXJ0IGFsbCIpOworICAgIHdhaXRGb3JNZXNzYWdlKCJzdGFydCBhbGwiKTsKKyAgICBb
W2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBfYWRkVXNlclNjcmlwdEltbWVk
aWF0ZWx5OmVuZE1haW5GcmFtZU9ubHkuZ2V0KCldOworICAgIHdhaXRGb3JNZXNzYWdlKCJlbmQg
bWFpbiIpOworICAgIFt3ZWJWaWV3IHJlbG9hZF07CisgICAgd2FpdEZvck1lc3NhZ2UoInN0YXJ0
IGFsbCIpOworICAgIHdhaXRGb3JNZXNzYWdlKCJlbmQgbWFpbiIpOworICAgIC8vIFdoZW4gcmVs
b2FkaW5nLCBhbiBpZnJhbWUgZG9lc24ndCBleGlzdCBiZWZvcmUgdGhlIGRvY3VtZW50IGhhcyBz
dGFydGVkIHRvIGxvYWQuCisgICAgd2FpdEZvck1lc3NhZ2UoInN0YXJ0IGFsbCIpOworfQorCiBU
RVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBTY3JpcHRNZXNzYWdlSGFuZGxlckJhc2ljUmVt
b3ZlKQogewogICAgIFJldGFpblB0cjxTY3JpcHRNZXNzYWdlSGFuZGxlcj4gaGFuZGxlciA9IGFk
b3B0TlMoW1tTY3JpcHRNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>344770</attachid>
            <date>2018-07-11 10:44:11 -0700</date>
            <delta_ts>2018-07-11 16:10:32 -0700</delta_ts>
            <desc>WIP Rebasing</desc>
            <filename>bug-173342-20180711104411.patch</filename>
            <type>text/plain</type>
            <size>29347</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMzNzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODIyMjgwNmY5ODU0MmFj
MmZmMDhjNTA2NDc3OWRhY2ZjMDE0NDQwYy4uNTFiYmY0ZDUwN2NkMDUwYTYyZjk1MDkzYzFiMTQx
MTY2ZjRmMTU2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE4LTA3LTExICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQ
SSBmb3IgaW1tZWRpYXRlIGluamVjdGlvbiBvZiB1c2VyIHNjcmlwdHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzM0MgorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMjkyMDIyODU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJhZHkgRWlkc29uLgor
CisgICAgICAgIFRoZSBuZXcgU1BJIGlzIFdLVXNlckNvbnRlbnRDb250cm9sbGVyLl9hZGRVc2Vy
U2NyaXB0SW1tZWRpYXRlbHkuCisgICAgICAgIEl0IGlzIGNvdmVyZWQgYnkgbmV3IEFQSSB0ZXN0
cy4KKworICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6
OmluamVjdFVzZXJTY3JpcHRzKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjppbmplY3RVc2Vy
U2NyaXB0SW1tZWRpYXRlbHkpOgorICAgICAgICBNb3ZlIGluamVjdGlvbiBmdW5jdGlvbmFsaXR5
IHRvIGFsbG93IHVzIHRvIGNhbGwgaXQgZGlyZWN0bHkgZnJvbSB0aGUgbmV3IFNQSS4KKyAgICAg
ICAgKiBwYWdlL0ZyYW1lLmg6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBhZ2U6OmZvckVhY2hQYWdlKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKwogMjAx
OC0wNy0xMSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFNpbXBs
ZUxpbmVMYXlvdXQ6OkZsb3dDb250ZW50cyB3YXN0ZXMgNTRLQiBvZiBWZWN0b3IgY2FwYWNpdHkg
b24gbnl0aW1lcy5jb20KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggM2YxMmQ0YmM4MzFkYmYxNzVlOWQ3MWM4NzY1MTdm
ZTYwYTdjNzdjYi4uZmU4NjljMWNhNjAzNzVmMzUxZmIxOWQwZTAyNzk4MjE4MjgwYWFjNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxNy0wNi0xNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFj
aHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBTUEkgZm9yIGltbWVkaWF0ZSBp
bmplY3Rpb24gb2YgdXNlciBzY3JpcHRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzMzNDIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI5MjAyMjg1
PgorCisgICAgICAgIFJldmlld2VkIGJ5IEJyYWR5IEVpZHNvbi4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQy9XS1BhZ2VHcm91cC5jcHA6CisgICAgICAgIChXS1BhZ2VHcm91cEFkZFVzZXJT
Y3JpcHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1VzZXJDb250ZW50Q29udHJvbGxl
clJlZi5jcHA6CisgICAgICAgIChXS1VzZXJDb250ZW50Q29udHJvbGxlckFkZFVzZXJTY3JpcHQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIu
bW06CisgICAgICAgICgtW1dLVXNlckNvbnRlbnRDb250cm9sbGVyIGFkZFVzZXJTY3JpcHQ6XSk6
CisgICAgICAgICgtW1dLVXNlckNvbnRlbnRDb250cm9sbGVyIF9hZGRVc2VyU2NyaXB0SW1tZWRp
YXRlbHk6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29u
dHJvbGxlclByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNlclNjcmlwdCk6CisgICAgICAgICogVUlQcm9jZXNz
L1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJTY3JpcHRzKToK
KyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyU2NyaXB0
SW50ZXJuYWwpOgorICAgICAgICBJZiB3ZSBhcmUgdG8gaW5qZWN0IHRoZSBzY3JpcHQgaW50ZXJu
YWxseSwgaW5qZWN0IGl0IGludG8gdGhlIGFwcHJvcHJpYXRlIHBhZ2VzLgorICAgICAgICBJZiB3
ZSdyZSBpbmplY3RpbmcgaW50byB0aGUgdG9wIGZyYW1lIG9ubHksIHRoZXJlJ3Mgbm8gbmVlZCB0
byB0cmF2ZXJzZSB0aGUgZnJhbWUgdHJlZS4KKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRl
bnRDb250cm9sbGVyOjphZGRVc2VyU2NyaXB0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1VzZXJD
b250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
VXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9j
cHVMaW1pdCk6CisKIDIwMTgtMDctMTEgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtXUEVdIEFDIGZvciBmaXhlZC1wb3NpdGlvbiBlbGVtZW50cyBpcyBu
b3QgZW5hYmxlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCAwYjY4MmIyZjFlY2JiYTAwNTFhNmMw
ZTc2YzQ4NDkxMjc1MzA5NDVmLi5kMjMwOTMwNzAwOGMwOTllZmI5NmY1NGE4ODAyNGY0YzVjYzlm
NjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtNzM1LDIwICs3MzUsMjUgQEAgdm9pZCBGcmFt
ZTo6aW5qZWN0VXNlclNjcmlwdHMoVXNlclNjcmlwdEluamVjdGlvblRpbWUgaW5qZWN0aW9uVGlt
ZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9wYWdlLT51c2VyQ29udGVudFByb3ZpZGVyKCku
Zm9yRWFjaFVzZXJTY3JpcHQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
aW5qZWN0aW9uVGltZV0oRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgVXNlclNjcmlwdCYg
c2NyaXB0KSB7Ci0gICAgICAgIGF1dG8qIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKTsKLSAg
ICAgICAgaWYgKCFkb2N1bWVudCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKHNj
cmlwdC5pbmplY3RlZEZyYW1lcygpID09IEluamVjdEluVG9wRnJhbWVPbmx5ICYmIG93bmVyRWxl
bWVudCgpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmIChzY3JpcHQuaW5qZWN0
aW9uVGltZSgpID09IGluamVjdGlvblRpbWUgJiYgVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjptYXRj
aGVzUGF0dGVybnMoZG9jdW1lbnQtPnVybCgpLCBzY3JpcHQud2hpdGVsaXN0KCksIHNjcmlwdC5i
bGFja2xpc3QoKSkpIHsKLSAgICAgICAgICAgIGlmIChtX3BhZ2UpCi0gICAgICAgICAgICAgICAg
bV9wYWdlLT5zZXRBc1J1bm5pbmdVc2VyU2NyaXB0cygpOwotICAgICAgICAgICAgbV9zY3JpcHQt
PmV2YWx1YXRlSW5Xb3JsZChTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdC5zb3VyY2UoKSwgc2NyaXB0
LnVybCgpKSwgd29ybGQpOwotICAgICAgICB9CisgICAgICAgIGlmIChzY3JpcHQuaW5qZWN0aW9u
VGltZSgpID09IGluamVjdGlvblRpbWUpCisgICAgICAgICAgICBpbmplY3RVc2VyU2NyaXB0SW1t
ZWRpYXRlbHkod29ybGQsIHNjcmlwdCk7CiAgICAgfSk7CiB9CiAKK3ZvaWQgRnJhbWU6OmluamVj
dFVzZXJTY3JpcHRJbW1lZGlhdGVseShET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBVc2Vy
U2NyaXB0JiBzY3JpcHQpCit7CisgICAgYXV0byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgp
OworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoc2NyaXB0Lmlu
amVjdGVkRnJhbWVzKCkgPT0gSW5qZWN0SW5Ub3BGcmFtZU9ubHkgJiYgIWlzTWFpbkZyYW1lKCkp
CisgICAgICAgIHJldHVybjsKKyAgICBpZiAoIVVzZXJDb250ZW50VVJMUGF0dGVybjo6bWF0Y2hl
c1BhdHRlcm5zKGRvY3VtZW50LT51cmwoKSwgc2NyaXB0LndoaXRlbGlzdCgpLCBzY3JpcHQuYmxh
Y2tsaXN0KCkpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKG1fcGFnZSkKKyAgICAgICAgbV9w
YWdlLT5zZXRBc1J1bm5pbmdVc2VyU2NyaXB0cygpOworICAgIG1fc2NyaXB0LT5ldmFsdWF0ZUlu
V29ybGQoU2NyaXB0U291cmNlQ29kZShzY3JpcHQuc291cmNlKCksIHNjcmlwdC51cmwoKSksIHdv
cmxkKTsKK30KKwogUmVuZGVyVmlldyogRnJhbWU6OmNvbnRlbnRSZW5kZXJlcigpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIGRvY3VtZW50KCkgPyBkb2N1bWVudCgpLT5yZW5kZXJWaWV3KCkgOiBudWxs
cHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZS5oCmluZGV4IDI1YTM0ZjhhM2RkYzIxMGQ5NWQxYjU4OWZkZDE5MDYy
ZDk0OGEwZmMuLmU4ODZiOTBmYzA4MWJhN2IzZjMwZWMzNDE0YjJmY2JiZTllZjE1YTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lLmgKQEAgLTE3NSw3ICsxNzUsOCBAQCBwdWJsaWM6CiAKIC8vID09PT09PT09IEFs
bCBwdWJsaWMgZnVuY3Rpb25zIGJlbG93IHRoaXMgcG9pbnQgYXJlIGNhbmRpZGF0ZXMgdG8gbW92
ZSBvdXQgb2YgRnJhbWUgaW50byBhbm90aGVyIGNsYXNzLiA9PT09PT09PQogCi0gICAgdm9pZCBp
bmplY3RVc2VyU2NyaXB0cyhVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSk7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBpbmplY3RVc2VyU2NyaXB0cyhVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkoRE9NV3Jh
cHBlcldvcmxkJiwgY29uc3QgVXNlclNjcmlwdCYpOwogICAgIAogICAgIFdFQkNPUkVfRVhQT1JU
IFN0cmluZyBsYXllclRyZWVBc1RleHQoTGF5ZXJUcmVlRmxhZ3MgPSAwKSBjb25zdDsKICAgICBX
RUJDT1JFX0VYUE9SVCBTdHJpbmcgdHJhY2tlZFJlcGFpbnRSZWN0c0FzVGV4dCgpIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuaAppbmRleCBiMTk0YTg1MGQ1ZWI2NjYxMWYzMjM5NGFmODNhMWEwNGMyNTQ1OTg1
Li4wZDE2OTYzZGRlYTFkZDAyZDJjZGY3YjhmZGM1OWIwMDRkM2VjMTM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
aApAQCAtMjAzLDcgKzIwMyw3IEBAIHB1YmxpYzoKIAogICAgIFBhZ2VHcm91cCYgZ3JvdXAoKTsK
IAotICAgIHN0YXRpYyB2b2lkIGZvckVhY2hQYWdlKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChQ
YWdlJik+Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgZm9yRWFjaFBhZ2UoY29u
c3QgV1RGOjpGdW5jdGlvbjx2b2lkKFBhZ2UmKT4mKTsKIAogICAgIHZvaWQgaW5jcmVtZW50U3Vi
ZnJhbWVDb3VudCgpIHsgKyttX3N1YmZyYW1lQ291bnQ7IH0KICAgICB2b2lkIGRlY3JlbWVudFN1
YmZyYW1lQ291bnQoKSB7IEFTU0VSVChtX3N1YmZyYW1lQ291bnQpOyAtLW1fc3ViZnJhbWVDb3Vu
dDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3Jv
dXAuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwCmlu
ZGV4IDEwNzgzNGFlYWJhZDc2NmNjM2U5YTQzYWFiNzM2NjA1MDcwOGNmMGYuLmRlYzBkMDc3N2Y3
MWMyMTQ2ZDViY2E0NmY0ZGE1Nzc4ZDRhNDkzZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZUdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS1BhZ2VHcm91cC5jcHAKQEAgLTMxLDkgKzMxLDExIEBACiAjaW5jbHVkZSAi
QVBJVXNlckNvbnRlbnRXb3JsZC5oIgogI2luY2x1ZGUgIkFQSVVzZXJTY3JpcHQuaCIKICNpbmNs
dWRlICJBUElVc2VyU3R5bGVTaGVldC5oIgorI2luY2x1ZGUgIkFkZFVzZXJTY3JpcHRJbW1lZGlh
dGVseS5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldlYlBhZ2VHcm91cC5o
IgogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzLmgiCisjaW5jbHVkZSAiV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyLmgiCiAjaW5jbHVkZSAiV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaCIK
IAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKQEAgLTk4LDcgKzEwMCw3IEBAIHZvaWQgV0tQYWdl
R3JvdXBBZGRVc2VyU2NyaXB0KFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZiwgV0tTdHJpbmdS
ZWYgc291cmNlUmVmCiAgICAgCiAgICAgYXV0byB1cmwgPSBiYXNlVVJMU3RyaW5nLmlzRW1wdHko
KSA/IFdlYkNvcmU6OmJsYW5rVVJMKCkgOiBXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIGJh
c2VVUkxTdHJpbmcpOwogICAgIFJlZjxBUEk6OlVzZXJTY3JpcHQ+IHVzZXJTY3JpcHQgPSBBUEk6
OlVzZXJTY3JpcHQ6OmNyZWF0ZShXZWJDb3JlOjpVc2VyU2NyaXB0IHsgV1RGTW92ZShzb3VyY2Up
LCBXVEZNb3ZlKHVybCksIHdoaXRlbGlzdCA/IHdoaXRlbGlzdC0+dG9TdHJpbmdWZWN0b3IoKSA6
IFZlY3RvcjxTdHJpbmc+KCksIGJsYWNrbGlzdCA/IGJsYWNrbGlzdC0+dG9TdHJpbmdWZWN0b3Io
KSA6IFZlY3RvcjxTdHJpbmc+KCksIHRvVXNlclNjcmlwdEluamVjdGlvblRpbWUoaW5qZWN0aW9u
VGltZSksIHRvVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyhpbmplY3RlZEZyYW1lcykgfSwgQVBJ
OjpVc2VyQ29udGVudFdvcmxkOjpub3JtYWxXb3JsZCgpKTsKLSAgICB0b0ltcGwocGFnZUdyb3Vw
UmVmKS0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkuYWRkVXNlclNjcmlwdCh1c2VyU2NyaXB0Lmdl
dCgpKTsKKyAgICB0b0ltcGwocGFnZUdyb3VwUmVmKS0+dXNlckNvbnRlbnRDb250cm9sbGVyKCku
YWRkVXNlclNjcmlwdCh1c2VyU2NyaXB0LmdldCgpLCBBZGRVc2VyU2NyaXB0SW1tZWRpYXRlbHk6
Ok5vKTsKIH0KIAogdm9pZCBXS1BhZ2VHcm91cFJlbW92ZUFsbFVzZXJTY3JpcHRzKFdLUGFnZUdy
b3VwUmVmIHBhZ2VHcm91cFJlZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmLmNwcAppbmRleCBiNDY4Nzc0
MDE2NjI5MzNiODQzZjk5ZGQ4OWQzMWM4ODg2ZGU3NTc0Li5hYTUzOWZhNTdhYmZjNGNkOWNhZWMw
ZDdiZmMwYzhiMTMyYjI1Mjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS1VzZXJDb250ZW50Q29udHJvbGxlclJlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWYuY3BwCkBAIC0yOSw2ICsy
OSw3IEBACiAjaW5jbHVkZSAiQVBJQXJyYXkuaCIKICNpbmNsdWRlICJBUElDb250ZW50UnVsZUxp
c3QuaCIKICNpbmNsdWRlICJBUElVc2VyU2NyaXB0LmgiCisjaW5jbHVkZSAiQWRkVXNlclNjcmlw
dEltbWVkaWF0ZWx5LmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHkuaCIKIApAQCAtNTIsNyArNTMsNyBAQCBXS0FycmF5UmVm
IFdLVXNlckNvbnRlbnRDb250cm9sbGVyQ29weVVzZXJTY3JpcHRzKFdLVXNlckNvbnRlbnRDb250
cm9sbGVyUmVmIHVzZQogCiB2b2lkIFdLVXNlckNvbnRlbnRDb250cm9sbGVyQWRkVXNlclNjcmlw
dChXS1VzZXJDb250ZW50Q29udHJvbGxlclJlZiB1c2VyQ29udGVudENvbnRyb2xsZXJSZWYsIFdL
VXNlclNjcmlwdFJlZiB1c2VyU2NyaXB0UmVmKQogewotICAgIHRvSW1wbCh1c2VyQ29udGVudENv
bnRyb2xsZXJSZWYpLT5hZGRVc2VyU2NyaXB0KCp0b0ltcGwodXNlclNjcmlwdFJlZikpOworICAg
IHRvSW1wbCh1c2VyQ29udGVudENvbnRyb2xsZXJSZWYpLT5hZGRVc2VyU2NyaXB0KCp0b0ltcGwo
dXNlclNjcmlwdFJlZiksIEFkZFVzZXJTY3JpcHRJbW1lZGlhdGVseTo6Tm8pOwogfQogCiB2b2lk
IFdLVXNlckNvbnRlbnRDb250cm9sbGVyUmVtb3ZlQWxsVXNlclNjcmlwdHMoV0tVc2VyQ29udGVu
dENvbnRyb2xsZXJSZWYgdXNlckNvbnRlbnRDb250cm9sbGVyUmVmKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9s
bGVyLm1tCmluZGV4IDYyNDYzZjA0ZDk5ZGI1ZGJmYTI2M2E3ZmI5MjljNTJlYzMzZmEzOWMuLmRk
MTVlYjNmYzE2YjFkZTg0ZDE5NmNjMzE4Y2I0NzAwMjI4YzU2ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRy
b2xsZXIubW0KQEAgLTMwLDYgKzMwLDcgQEAKIAogI2ltcG9ydCAiQVBJU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmgiCiAjaW1wb3J0ICJBUElVc2VyQ29udGVudFdvcmxkLmgiCisjaW1wb3J0ICJBZGRV
c2VyU2NyaXB0SW1tZWRpYXRlbHkuaCIKICNpbXBvcnQgIldLQ29udGVudFJ1bGVMaXN0SW50ZXJu
YWwuaCIKICNpbXBvcnQgIldLRnJhbWVJbmZvSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLTlNBcnJh
eS5oIgpAQCAtODksNyArOTAsNyBAQCAtIChOU0FycmF5ICopdXNlclNjcmlwdHMKIAogLSAodm9p
ZClhZGRVc2VyU2NyaXB0OihXS1VzZXJTY3JpcHQgKil1c2VyU2NyaXB0CiB7Ci0gICAgX3VzZXJD
b250ZW50Q29udHJvbGxlclByb3h5LT5hZGRVc2VyU2NyaXB0KCp1c2VyU2NyaXB0LT5fdXNlclNj
cmlwdCk7CisgICAgX3VzZXJDb250ZW50Q29udHJvbGxlclByb3h5LT5hZGRVc2VyU2NyaXB0KCp1
c2VyU2NyaXB0LT5fdXNlclNjcmlwdCwgV2ViS2l0OjpBZGRVc2VyU2NyaXB0SW1tZWRpYXRlbHk6
Ok5vKTsKIH0KIAogLSAodm9pZClyZW1vdmVBbGxVc2VyU2NyaXB0cwpAQCAtMTc3LDYgKzE3OCwx
MSBAQCAtICh2b2lkKV9yZW1vdmVBbGxVc2VyU2NyaXB0c0Fzc29jaWF0ZWRXaXRoVXNlckNvbnRl
bnRXb3JsZDooX1dLVXNlckNvbnRlbnRXb3JsZAogICAgIF91c2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eS0+cmVtb3ZlQWxsVXNlclNjcmlwdHMoKnVzZXJDb250ZW50V29ybGQtPl91c2VyQ29udGVu
dFdvcmxkKTsKIH0KIAorLSAodm9pZClfYWRkVXNlclNjcmlwdEltbWVkaWF0ZWx5OihXS1VzZXJT
Y3JpcHQgKil1c2VyU2NyaXB0Cit7CisgICAgX3VzZXJDb250ZW50Q29udHJvbGxlclByb3h5LT5h
ZGRVc2VyU2NyaXB0KCp1c2VyU2NyaXB0LT5fdXNlclNjcmlwdCwgV2ViS2l0OjpBZGRVc2VyU2Ny
aXB0SW1tZWRpYXRlbHk6Olllcyk7Cit9CisKIC0gKHZvaWQpX2FkZFVzZXJDb250ZW50RmlsdGVy
OihfV0tVc2VyQ29udGVudEZpbHRlciAqKXVzZXJDb250ZW50RmlsdGVyCiB7CiAjaWYgRU5BQkxF
KENPTlRFTlRfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlclByaXZhdGUuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlclByaXZhdGUuaApp
bmRleCA0NjY4ZDk4N2RkMjQwZjhlMDNhNzAwMzdmNWE1NWI1NDlkMGEwNTExLi40ZjI5MjEyMzE0
YjJkY2EwZjBlNzA5ZDc4ZmRkOThiMjRhYTNjMzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRlLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9s
bGVyUHJpdmF0ZS5oCkBAIC0zNyw2ICszNyw4IEBACiAtICh2b2lkKV9yZW1vdmVVc2VyU2NyaXB0
OihXS1VzZXJTY3JpcHQgKil1c2VyU2NyaXB0IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEy
KSwgaW9zKDEwLjApKTsKIC0gKHZvaWQpX3JlbW92ZUFsbFVzZXJTY3JpcHRzQXNzb2NpYXRlZFdp
dGhVc2VyQ29udGVudFdvcmxkOihfV0tVc2VyQ29udGVudFdvcmxkICopdXNlckNvbnRlbnRXb3Js
ZCBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMiksIGlvcygxMC4wKSk7CiAKKy0gKHZvaWQp
X2FkZFVzZXJTY3JpcHRJbW1lZGlhdGVseTooV0tVc2VyU2NyaXB0ICopdXNlclNjcmlwdCBXS19B
UElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogLSAo
dm9pZClfYWRkVXNlckNvbnRlbnRGaWx0ZXI6KF9XS1VzZXJDb250ZW50RmlsdGVyICopdXNlckNv
bnRlbnRGaWx0ZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTEpLCBpb3MoOS4wKSk7CiAt
ICh2b2lkKV9yZW1vdmVVc2VyQ29udGVudEZpbHRlcjooTlNTdHJpbmcgKil1c2VyQ29udGVudEZp
bHRlck5hbWUgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTEpLCBpb3MoOS4wKSk7CiAtICh2
b2lkKV9yZW1vdmVBbGxVc2VyQ29udGVudEZpbHRlcnMgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3go
MTAuMTEpLCBpb3MoOS4wKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9V
c2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5j
cHAKaW5kZXggNDJmYjhlYWUzZGIyZGRmZjkyNGUwMTlkNjcxNGIyNjgyNDgyYThlZS4uZTQ3YzY5
OTViNWY2N2Q4OGE2NGQ0OGYzOWExYmM4ZGMzYTliNjkxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5LmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkFQSVVz
ZXJDb250ZW50V29ybGQuaCIKICNpbmNsdWRlICJBUElVc2VyU2NyaXB0LmgiCiAjaW5jbHVkZSAi
QVBJVXNlclN0eWxlU2hlZXQuaCIKKyNpbmNsdWRlICJBZGRVc2VyU2NyaXB0SW1tZWRpYXRlbHku
aCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTmV0d29ya0NvbnRlbnRS
dWxlTGlzdE1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHku
aCIKQEAgLTE2Nyw3ICsxNjgsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
OjpyZW1vdmVVc2VyQ29udGVudFdvcmxkVXNlcyhIYXNoQ291bnRlZFNldDxSZQogICAgICAgICBw
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZVVz
ZXJDb250ZW50V29ybGRzKHdvcmxkc1RvUmVtb3ZlKSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkp
OwogfQogCi12b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyU2NyaXB0
KEFQSTo6VXNlclNjcmlwdCYgdXNlclNjcmlwdCkKK3ZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHk6OmFkZFVzZXJTY3JpcHQoQVBJOjpVc2VyU2NyaXB0JiB1c2VyU2NyaXB0LCBBZGRV
c2VyU2NyaXB0SW1tZWRpYXRlbHkgaW1tZWRpYXRlbHkpCiB7CiAgICAgUmVmPEFQSTo6VXNlckNv
bnRlbnRXb3JsZD4gd29ybGQgPSB1c2VyU2NyaXB0LnVzZXJDb250ZW50V29ybGQoKTsKIApAQCAt
MTc2LDcgKzE3Nyw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVz
ZXJTY3JpcHQoQVBJOjpVc2VyU2NyaXB0JiB1c2VyU2NyaXB0KQogICAgIG1fdXNlclNjcmlwdHMt
PmVsZW1lbnRzKCkuYXBwZW5kKCZ1c2VyU2NyaXB0KTsKIAogICAgIGZvciAoV2ViUHJvY2Vzc1By
b3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNlclNjcmlwdHMoeyB7IHVzZXJTY3Jp
cHQuaWRlbnRpZmllcigpLCB3b3JsZC0+aWRlbnRpZmllcigpLCB1c2VyU2NyaXB0LnVzZXJTY3Jp
cHQoKSB9IH0pLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgICAgIHByb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNlclNjcmlwdHMoeyB7
IHVzZXJTY3JpcHQuaWRlbnRpZmllcigpLCB3b3JsZC0+aWRlbnRpZmllcigpLCB1c2VyU2NyaXB0
LnVzZXJTY3JpcHQoKSB9IH0sIGltbWVkaWF0ZWx5KSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkp
OwogfQogCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyU2Ny
aXB0KEFQSTo6VXNlclNjcmlwdCYgdXNlclNjcmlwdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eS5oCmluZGV4IDMxNjlkZDljYzk0NzE0YzMxZmEyNTRlMzg4MTY3NTUwYmUxZmU4
MWYuLjlhNDU0MjkzNjQ2MDdiYThhNDRmOTIyMjM1OTY3ZDg5ZTBmZGZjYWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaApAQCAtNTksNiArNTksNyBAQCBjbGFzcyBXZWJQ
cm9jZXNzUHJveHk7CiBjbGFzcyBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjsKIHN0cnVjdCBGcmFt
ZUluZm9EYXRhOwogc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM7CitlbnVtIGNsYXNz
IEFkZFVzZXJTY3JpcHRJbW1lZGlhdGVseTsKIAogY2xhc3MgV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpVc2Vy
Q29udGVudENvbnRyb2xsZXI+LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1Ymxp
YzoKQEAgLTc1LDcgKzc2LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlUHJvY2VzcyhXZWJQ
cm9jZXNzUHJveHkmKTsKIAogICAgIEFQSTo6QXJyYXkmIHVzZXJTY3JpcHRzKCkgeyByZXR1cm4g
bV91c2VyU2NyaXB0cy5nZXQoKTsgfQotICAgIHZvaWQgYWRkVXNlclNjcmlwdChBUEk6OlVzZXJT
Y3JpcHQmKTsKKyAgICB2b2lkIGFkZFVzZXJTY3JpcHQoQVBJOjpVc2VyU2NyaXB0JiwgQWRkVXNl
clNjcmlwdEltbWVkaWF0ZWx5KTsKICAgICB2b2lkIHJlbW92ZVVzZXJTY3JpcHQoQVBJOjpVc2Vy
U2NyaXB0Jik7CiAgICAgdm9pZCByZW1vdmVBbGxVc2VyU2NyaXB0cyhBUEk6OlVzZXJDb250ZW50
V29ybGQmKTsKICAgICB2b2lkIHJlbW92ZUFsbFVzZXJTY3JpcHRzKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmZjBjMmIyNjM5NzU4
Njg4NTcyOWE1ZmY2Njk5OTVlYmI2ZmQ2Yjg4Li4zMWFjMzZmMzhiZmViMTY5NTk3MDFmMmJlNjgw
ZTFlOWUzZWE5MWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTMzMTgsNiArMzMxOCw3IEBACiAJCTQxMDNGQkEyMjA2MUJEQjgwMEMy
RUFGOCAvKiBOZXR3b3JrTG9hZENoZWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gTmV0d29ya0xvYWRDaGVja2VyLmNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkQ2hlY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQx
MDQ4MkNCMURERDJGQjUwMEYwMDZEMCAvKiBSVENOZXR3b3JrLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJUQ05ldHdvcmsuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MTA0ODJDQzFEREQyRkI1MDBGMDA2RDAgLyogUlRDTmV0d29yay5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSVENOZXR3b3JrLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQxMTE0MzYzMjBGNjc3QjEwMDI2RjkxMiAvKiBBZGRVc2VyU2NyaXB0
SW1tZWRpYXRlbHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWRkVXNlclNj
cmlwdEltbWVkaWF0ZWx5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTJCNTQ3
MUY5RkQzQUIwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya1JUQ1Jlc29sdmVyLmNwcDsgcGF0aCA9IE5l
dHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MTEyQjU0NzFGOUZEM0FCMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jl
c29sdmVyQ29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0
d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05l
dHdvcmtSVENSZXNvbHZlckNvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDExMkI1NDgxRjlGRDNBQzAwRTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrUlRDUmVzb2x2ZXIuaDsgcGF0aCA9IE5l
dHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTU0NjcsNiArNTQ2OCw3IEBACiAJCTFBQUYwOEFBMTkyNjkzMEIwMEI2
MzkwQyAvKiBVc2VyQ29udGVudCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCisJCQkJNDExMTQzNjMyMEY2NzdCMTAwMjZGOTEyIC8qIEFkZFVzZXJTY3JpcHRJbW1l
ZGlhdGVseS5oICovLAogCQkJCTFBQUYwOEFCMTkyNjkzNjcwMEI2MzkwQyAvKiBXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXIuY3BwICovLAogCQkJCTFBQUYwOEFDMTkyNjkzNjcwMEI2MzkwQyAvKiBX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaCAqLywKIAkJCQkxQUFGMDhCNDE5MjY5RTI0MDBCNjM5
MEMgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3NhZ2VzLmluICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L0FkZFVzZXJTY3JpcHRJbW1l
ZGlhdGVseS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L0FkZFVzZXJT
Y3JpcHRJbW1lZGlhdGVseS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzMmZhNDE3NzcwMjBiNzUxNGUyOTIxN2Vk
NjRkM2FlNWRhMjBiMTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvVXNlckNvbnRlbnQvQWRkVXNlclNjcmlwdEltbWVkaWF0ZWx5LmgKQEAgLTAsMCArMSw0NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CisgICAgCitlbnVtIGNsYXNzIEFkZFVzZXJTY3JpcHRJbW1lZGlhdGVseSB7IE5vLCBZZXMgfTsK
KyAgICAKK30KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFp
dHM8V2ViS2l0OjpBZGRVc2VyU2NyaXB0SW1tZWRpYXRlbHk+IHsKKyAgICB1c2luZyB2YWx1ZXMg
PSBFbnVtVmFsdWVzPAorICAgIFdlYktpdDo6QWRkVXNlclNjcmlwdEltbWVkaWF0ZWx5LAorICAg
IFdlYktpdDo6QWRkVXNlclNjcmlwdEltbWVkaWF0ZWx5OjpObywKKyAgICBXZWJLaXQ6OkFkZFVz
ZXJTY3JpcHRJbW1lZGlhdGVseTo6WWVzCisgICAgPjsKK307CisKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250
ZW50Q29udHJvbGxlci5jcHAKaW5kZXggYjllNTg1ODM1ZmUzMDhhODUwYTNkODUyN2Q4YWUwYjIz
YzBmZjM3Yi4uZGRjMDQ2MmNlOWRmNmQ0MWU2NGE1YWUyNjc4ZTY5YTY3ZGZmMDY5NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50
Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50
L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaCIKIAorI2lu
Y2x1ZGUgIkFkZFVzZXJTY3JpcHRJbW1lZGlhdGVseS5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVu
Y2UuaCIKICNpbmNsdWRlICJGcmFtZUluZm9EYXRhLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5k
bGVTY3JpcHRXb3JsZC5oIgpAQCAtMzYsNiArMzcsNyBAQAogI2luY2x1ZGUgIldlYlVzZXJDb250
ZW50Q29udHJvbGxlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRE9NV3JhcHBlcldvcmxkLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlP
cmlnaW5EYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJTdHlsZVNoZWV0Lmg+CkBAIC0xMjIsNyArMTI0LDcgQEAg
dm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZVVzZXJDb250ZW50V29ybGRzKGNv
bnN0IFZlY3Rvcjx1aW50NjRfdD4mIHcKICAgICB9CiB9CiAKLXZvaWQgV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyOjphZGRVc2VyU2NyaXB0cyhjb25zdCBWZWN0b3I8V2ViVXNlclNjcmlwdERhdGE+
JiB1c2VyU2NyaXB0cykKK3ZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyU2Ny
aXB0cyhWZWN0b3I8V2ViVXNlclNjcmlwdERhdGE+JiYgdXNlclNjcmlwdHMsIEFkZFVzZXJTY3Jp
cHRJbW1lZGlhdGVseSBpbW1lZGlhdGVseSkKIHsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHVzZXJT
Y3JpcHREYXRhIDogdXNlclNjcmlwdHMpIHsKICAgICAgICAgYXV0byBpdCA9IHdvcmxkTWFwKCku
ZmluZCh1c2VyU2NyaXB0RGF0YS53b3JsZElkZW50aWZpZXIpOwpAQCAtMTMyLDcgKzEzNCw3IEBA
IHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyU2NyaXB0cyhjb25zdCBWZWN0
b3I8V2ViVXNlclNjcmlwdERhdGE+JiB1CiAgICAgICAgIH0KIAogICAgICAgICBVc2VyU2NyaXB0
IHNjcmlwdCA9IHVzZXJTY3JpcHREYXRhLnVzZXJTY3JpcHQ7Ci0gICAgICAgIGFkZFVzZXJTY3Jp
cHRJbnRlcm5hbCgqaXQtPnZhbHVlLmZpcnN0LCB1c2VyU2NyaXB0RGF0YS5pZGVudGlmaWVyLCBX
VEZNb3ZlKHNjcmlwdCkpOworICAgICAgICBhZGRVc2VyU2NyaXB0SW50ZXJuYWwoKml0LT52YWx1
ZS5maXJzdCwgdXNlclNjcmlwdERhdGEuaWRlbnRpZmllciwgV1RGTW92ZShzY3JpcHQpLCBpbW1l
ZGlhdGVseSk7CiAgICAgfQogfQogCkBAIC0zNjAsMTUgKzM2MiwzMSBAQCB2b2lkIFdlYlVzZXJD
b250ZW50Q29udHJvbGxlcjo6cmVtb3ZlQWxsQ29udGVudFJ1bGVMaXN0cygpCiB9CiAjZW5kaWYK
IAotdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJTY3JpcHRJbnRlcm5hbChJ
bmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiB3b3JsZCwgdWludDY0X3QgdXNlclNjcmlwdElkZW50
aWZpZXIsIFVzZXJTY3JpcHQmJiB1c2VyU2NyaXB0KQordm9pZCBXZWJVc2VyQ29udGVudENvbnRy
b2xsZXI6OmFkZFVzZXJTY3JpcHRJbnRlcm5hbChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiB3
b3JsZCwgdWludDY0X3QgdXNlclNjcmlwdElkZW50aWZpZXIsIFVzZXJTY3JpcHQmJiB1c2VyU2Ny
aXB0LCBBZGRVc2VyU2NyaXB0SW1tZWRpYXRlbHkgaW1tZWRpYXRlbHkpCiB7CisgICAgaWYgKGlt
bWVkaWF0ZWx5ID09IEFkZFVzZXJTY3JpcHRJbW1lZGlhdGVseTo6WWVzKSB7CisgICAgICAgIFBh
Z2U6OmZvckVhY2hQYWdlKFsmXSAoUGFnZSYgcGFnZSkgeworICAgICAgICAgICAgaWYgKCZwYWdl
LnVzZXJDb250ZW50UHJvdmlkZXIoKSAhPSB0aGlzKQorICAgICAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICAgICAgYXV0byYgbWFpbkZyYW1lID0gcGFnZS5tYWluRnJhbWUoKTsKKyAgICAg
ICAgICAgIGlmICh1c2VyU2NyaXB0LmluamVjdGVkRnJhbWVzKCkgPT0gSW5qZWN0SW5Ub3BGcmFt
ZU9ubHkpIHsKKyAgICAgICAgICAgICAgICBtYWluRnJhbWUuaW5qZWN0VXNlclNjcmlwdEltbWVk
aWF0ZWx5KHdvcmxkLmNvcmVXb3JsZCgpLCB1c2VyU2NyaXB0KTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZvciAoRnJhbWUqIGZyYW1lID0g
Jm1haW5GcmFtZTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoJm1h
aW5GcmFtZSkpCisgICAgICAgICAgICAgICAgZnJhbWUtPmluamVjdFVzZXJTY3JpcHRJbW1lZGlh
dGVseSh3b3JsZC5jb3JlV29ybGQoKSwgdXNlclNjcmlwdCk7CisgICAgICAgIH0pOworICAgIH0K
KwogICAgIGF1dG8mIHNjcmlwdHNJbldvcmxkID0gbV91c2VyU2NyaXB0cy5lbnN1cmUoJndvcmxk
LCBbXSB7IHJldHVybiBWZWN0b3I8c3RkOjpwYWlyPHVpbnQ2NF90LCBXZWJDb3JlOjpVc2VyU2Ny
aXB0Pj4oKTsgfSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIHNjcmlwdHNJbldvcmxkLmFwcGVuZChz
dGQ6Om1ha2VfcGFpcih1c2VyU2NyaXB0SWRlbnRpZmllciwgV1RGTW92ZSh1c2VyU2NyaXB0KSkp
OwogfQogCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRkVXNlclNjcmlwdChJbmpl
Y3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiB3b3JsZCwgVXNlclNjcmlwdCYmIHVzZXJTY3JpcHQpCiB7
Ci0gICAgYWRkVXNlclNjcmlwdEludGVybmFsKHdvcmxkLCAwLCBXVEZNb3ZlKHVzZXJTY3JpcHQp
KTsKKyAgICBhZGRVc2VyU2NyaXB0SW50ZXJuYWwod29ybGQsIDAsIFdURk1vdmUodXNlclNjcmlw
dCksIEFkZFVzZXJTY3JpcHRJbW1lZGlhdGVseTo6Tm8pOwogfQogCiB2b2lkIFdlYlVzZXJDb250
ZW50Q29udHJvbGxlcjo6cmVtb3ZlVXNlclNjcmlwdFdpdGhVUkwoSW5qZWN0ZWRCdW5kbGVTY3Jp
cHRXb3JsZCYgd29ybGQsIGNvbnN0IFVSTCYgdXJsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxl
ci5oCmluZGV4IGY1OGQyMWU4Y2RmYzZiZWQ5YzA0OWRkMmRjMzBhZjk0OWQwOGFiZDEuLjQxNmM3
MzZkYTdjY2QzZTE4NDBlYjU1OTcwMjA5YjFjYzJmNzAxMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBJ
bmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOwogY2xhc3MgV2ViQ29tcGlsZWRDb250ZW50UnVsZUxp
c3REYXRhOwogY2xhc3MgV2ViVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvclByb3h5OworZW51
bSBjbGFzcyBBZGRVc2VyU2NyaXB0SW1tZWRpYXRlbHk7CiAKIGNsYXNzIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpVc2VyQ29udGVudFByb3ZpZGVyLCBw
cml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKQEAgLTY0LDcgKzY1LDcgQEAg
cHVibGljOgogICAgIHZvaWQgcmVtb3ZlQWxsVXNlckNvbnRlbnQoKTsKIAogICAgIHZvaWQgYWRk
VXNlckNvbnRlbnRXb3JsZHMoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjx1aW50NjRfdCwgU3RyaW5n
Pj4mKTsKLSAgICB2b2lkIGFkZFVzZXJTY3JpcHRzKGNvbnN0IFZlY3RvcjxXZWJVc2VyU2NyaXB0
RGF0YT4mKTsKKyAgICB2b2lkIGFkZFVzZXJTY3JpcHRzKFZlY3RvcjxXZWJVc2VyU2NyaXB0RGF0
YT4mJiwgQWRkVXNlclNjcmlwdEltbWVkaWF0ZWx5KTsKICAgICB2b2lkIGFkZFVzZXJTdHlsZVNo
ZWV0cyhjb25zdCBWZWN0b3I8V2ViVXNlclN0eWxlU2hlZXREYXRhPiYpOwogICAgIHZvaWQgYWRk
VXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVycyhjb25zdCBWZWN0b3I8V2ViU2NyaXB0TWVzc2FnZUhh
bmRsZXJEYXRhPiYpOwogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCkBAIC0xMDMsNyAr
MTA0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZUFsbENvbnRlbnRSdWxlTGlzdHMoKTsK
ICNlbmRpZgogCi0gICAgdm9pZCBhZGRVc2VyU2NyaXB0SW50ZXJuYWwoSW5qZWN0ZWRCdW5kbGVT
Y3JpcHRXb3JsZCYsIHVpbnQ2NF90IHVzZXJTY3JpcHRJZGVudGlmaWVyLCBXZWJDb3JlOjpVc2Vy
U2NyaXB0JiYpOworICAgIHZvaWQgYWRkVXNlclNjcmlwdEludGVybmFsKEluamVjdGVkQnVuZGxl
U2NyaXB0V29ybGQmLCB1aW50NjRfdCB1c2VyU2NyaXB0SWRlbnRpZmllciwgV2ViQ29yZTo6VXNl
clNjcmlwdCYmLCBBZGRVc2VyU2NyaXB0SW1tZWRpYXRlbHkpOwogICAgIHZvaWQgcmVtb3ZlVXNl
clNjcmlwdEludGVybmFsKEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQmLCB1aW50NjRfdCB1c2Vy
U2NyaXB0SWRlbnRpZmllcik7CiAgICAgdm9pZCBhZGRVc2VyU3R5bGVTaGVldEludGVybmFsKElu
amVjdGVkQnVuZGxlU2NyaXB0V29ybGQmLCB1aW50NjRfdCB1c2VyU3R5bGVTaGVldElkZW50aWZp
ZXIsIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0JiYpOwogICAgIHZvaWQgcmVtb3ZlVXNlclN0eWxl
U2hlZXRJbnRlcm5hbChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiwgdWludDY0X3QgdXNlclN0
eWxlU2hlZXRJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
Lm1lc3NhZ2VzLmluCmluZGV4IDlhYzc1MTQwMDczOTczNWUyZjI3ZDI4Y2I2ODA4Yzg1ODlhY2Qz
ZDIuLmI1ZDRjYTAyNTdkZjMyZTlmZjcyM2M5OTRjMThmMTU0NDdjOGQ4NzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRy
b2xsZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250
ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5tZXNzYWdlcy5pbgpAQCAtMjcsNyArMjcsNyBA
QCBtZXNzYWdlcyAtPiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXIgewogICAgIEFkZFVzZXJDb250
ZW50V29ybGRzKFZlY3RvcjxzdGQ6OnBhaXI8dWludDY0X3QsIFN0cmluZz4+IHdvcmxkcyk7CiAg
ICAgUmVtb3ZlVXNlckNvbnRlbnRXb3JsZHMoVmVjdG9yPHVpbnQ2NF90PiB3b3JsZElkZW50aWZp
ZXJzKTsKIAotICAgIEFkZFVzZXJTY3JpcHRzKFZlY3RvcjxzdHJ1Y3QgV2ViS2l0OjpXZWJVc2Vy
U2NyaXB0RGF0YT4gdXNlclNjcmlwdHMpOworICAgIEFkZFVzZXJTY3JpcHRzKFZlY3RvcjxzdHJ1
Y3QgV2ViS2l0OjpXZWJVc2VyU2NyaXB0RGF0YT4gdXNlclNjcmlwdHMsIGVudW0gV2ViS2l0OjpB
ZGRVc2VyU2NyaXB0SW1tZWRpYXRlbHkgaW1tZWRpYXRlbHkpOwogICAgIFJlbW92ZVVzZXJTY3Jp
cHQodWludDY0X3Qgd29ybGRJZGVudGlmaWVyLCB1aW50NjRfdCBpZGVudGlmaWVyKTsKICAgICBS
ZW1vdmVBbGxVc2VyU2NyaXB0cyhWZWN0b3I8dWludDY0X3Q+IHdvcmxkSWRlbnRpZmllcnMpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGI5
YzBkM2JkNTU1Y2VkYjBlNjAyMTE0MGExNzE3NGIyNDZmZWQ3OTMuLjNlMzYzYjk3MmM3NjQ2OWVi
ZjNhZmRjNGNmZjJhNjNmNTIyNDg2YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJBUElBcnJh
eS5oIgogI2luY2x1ZGUgIkFQSUdlb21ldHJ5LmgiCisjaW5jbHVkZSAiQWRkVXNlclNjcmlwdElt
bWVkaWF0ZWx5LmgiCiAjaW5jbHVkZSAiQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uaCIKICNpbmNs
dWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRHJhZ0NvbnRyb2xsZXJBY3Rpb24uaCIK
QEAgLTYxMiw3ICs2MTMsNyBAQCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgICAgIHJlZ2lzdGVyVVJM
U2NoZW1lSGFuZGxlcihpdGVyYXRvci52YWx1ZSwgaXRlcmF0b3Iua2V5KTsKIAogICAgIG1fdXNl
ckNvbnRlbnRDb250cm9sbGVyLT5hZGRVc2VyQ29udGVudFdvcmxkcyhwYXJhbWV0ZXJzLnVzZXJD
b250ZW50V29ybGRzKTsKLSAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+YWRkVXNlclNjcmlw
dHMocGFyYW1ldGVycy51c2VyU2NyaXB0cyk7CisgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXIt
PmFkZFVzZXJTY3JpcHRzKFdURk1vdmUocGFyYW1ldGVycy51c2VyU2NyaXB0cyksIEFkZFVzZXJT
Y3JpcHRJbW1lZGlhdGVseTo6Tm8pOwogICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT5hZGRV
c2VyU3R5bGVTaGVldHMocGFyYW1ldGVycy51c2VyU3R5bGVTaGVldHMpOwogICAgIG1fdXNlckNv
bnRlbnRDb250cm9sbGVyLT5hZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzKHBhcmFtZXRlcnMu
bWVzc2FnZUhhbmRsZXJzKTsKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGZmMjU5MDM2ZGY0
Zjc2ZTgyYTI5NzdmM2I4NjEyMmEyNjYyNDk1MDEuLjg3YTJhM2Y4MTA3ZWIwYzhlMDcwNjJlZTg4
YWM1NTE4MjkzZTdkYTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxOC0wNy0xMSAgQWxleCBDaHJpc3RlbnNlbiAg
PGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBTUEkgZm9yIGltbWVkaWF0
ZSBpbmplY3Rpb24gb2YgdXNlciBzY3JpcHRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzMzNDIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI5MjAy
Mjg1PgorCisgICAgICAgIFJldmlld2VkIGJ5IEJyYWR5IEVpZHNvbi4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1VzZXJDb250ZW50Q29udHJvbGxlci5tbToK
KyAgICAgICAgKHdhaXRGb3JNZXNzYWdlKToKKyAgICAgICAgKFRFU1QpOgorCiAyMDE4LTA3LTEw
ICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBbZXdzLWJ1
aWxkXSBBZGQgYnVpbGQgc3RlcCB0byBVbkFwcGx5IHBhdGNoCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VzZXJDb250ZW50Q29udHJvbGxlci5tbSBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlckNvbnRlbnRDb250cm9s
bGVyLm1tCmluZGV4IDg3ZDFkNDQ2ZjUxNTg1NjMzOTRiY2EwZjM3NjQxZTYwMjBlODVlYjQuLjY5
MWEzOWE1ZTE2MWM2NGU3OWViOTJkZjgyMjFlNDIyYWNhNDZhNzMgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlckNvbnRlbnRDb250cm9sbGVyLm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlckNvbnRlbnRD
b250cm9sbGVyLm1tCkBAIC01OTIsNCArNTkyLDQ1IEBAIFRFU1QoV0tVc2VyQ29udGVudENvbnRy
b2xsZXIsIFVzZXJTY3JpcHRSZW1vdmVBbGxCeU5vcm1hbFdvcmxkKQogICAgIEVYUEVDVF9FUSh1
c2VyU2NyaXB0QXNzb2NpYXRlZFdpdGhXb3JsZDIuZ2V0KCksIFt1c2VyQ29udGVudENvbnRyb2xs
ZXIgdXNlclNjcmlwdHNdWzFdKTsKIH0KIAorc3RhdGljIHZvaWQgd2FpdEZvck1lc3NhZ2UoY29u
c3QgY2hhciogZXhwZWN0ZWRNZXNzYWdlKQoreworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKKyAgICByZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSBm
YWxzZTsKKyAgICBFWFBFQ1RfU1RSRVEoZXhwZWN0ZWRNZXNzYWdlLCBbKE5TU3RyaW5nICopW2xh
c3RTY3JpcHRNZXNzYWdlIGJvZHldIFVURjhTdHJpbmddKTsKK30KKworVEVTVChXS1VzZXJDb250
ZW50Q29udHJvbGxlciwgQWRkVXNlclNjcmlwdEltbWVkaWF0ZWx5KQoreworICAgIFJldGFpblB0
cjxTY3JpcHRNZXNzYWdlSGFuZGxlcj4gaGFuZGxlciA9IGFkb3B0TlMoW1tTY3JpcHRNZXNzYWdl
SGFuZGxlciBhbGxvY10gaW5pdF0pOworICAgIFJldGFpblB0cjxXS1VzZXJTY3JpcHQ+IHN0YXJ0
QWxsRnJhbWVzID0gYWRvcHROUyhbW1dLVXNlclNjcmlwdCBhbGxvY10gaW5pdFdpdGhTb3VyY2U6
QCJ3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgn
c3RhcnQgYWxsJykiIGluamVjdGlvblRpbWU6V0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZUF0RG9j
dW1lbnRTdGFydCBmb3JNYWluRnJhbWVPbmx5Ok5PXSk7CisgICAgUmV0YWluUHRyPFdLVXNlclNj
cmlwdD4gZW5kTWFpbkZyYW1lT25seSA9IGFkb3B0TlMoW1tXS1VzZXJTY3JpcHQgYWxsb2NdIGlu
aXRXaXRoU291cmNlOkAid2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIu
cG9zdE1lc3NhZ2UoJ2VuZCBtYWluJykiIGluamVjdGlvblRpbWU6V0tVc2VyU2NyaXB0SW5qZWN0
aW9uVGltZUF0RG9jdW1lbnRFbmQgZm9yTWFpbkZyYW1lT25seTpZRVNdKTsKKworICAgIFJldGFp
blB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24g
dXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdl
dCgpIG5hbWU6QCJ0ZXN0SGFuZGxlciJdOworCisgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2Vi
VmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVj
dCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisK
KyAgICBSZXRhaW5QdHI8U2ltcGxlTmF2aWdhdGlvbkRlbGVnYXRlPiBkZWxlZ2F0ZSA9IGFkb3B0
TlMoW1tTaW1wbGVOYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmll
dyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworCisgICAgTlNVUkxSZXF1
ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1h
aW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlLWlmcmFtZSIgd2l0aEV4dGVuc2lvbjpA
Imh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOworCisgICAg
aXNEb25lV2l0aE5hdmlnYXRpb24gPSBmYWxzZTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpy
ZXF1ZXN0XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZVdpdGhOYXZpZ2F0
aW9uKTsKKworICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOworICAgIFtbY29uZmln
dXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIF9hZGRVc2VyU2NyaXB0SW1tZWRpYXRlbHk6
c3RhcnRBbGxGcmFtZXMuZ2V0KCldOworICAgIC8vIHNpbXBsZS1pZnJhbWUuaHRtbCBoYXMgYSBt
YWluIGZyYW1lIGFuZCBvbmUgaWZyYW1lLgorICAgIHdhaXRGb3JNZXNzYWdlKCJzdGFydCBhbGwi
KTsKKyAgICB3YWl0Rm9yTWVzc2FnZSgic3RhcnQgYWxsIik7CisgICAgW1tjb25maWd1cmF0aW9u
IHVzZXJDb250ZW50Q29udHJvbGxlcl0gX2FkZFVzZXJTY3JpcHRJbW1lZGlhdGVseTplbmRNYWlu
RnJhbWVPbmx5LmdldCgpXTsKKyAgICB3YWl0Rm9yTWVzc2FnZSgiZW5kIG1haW4iKTsKKyAgICBb
d2ViVmlldyByZWxvYWRdOworICAgIHdhaXRGb3JNZXNzYWdlKCJzdGFydCBhbGwiKTsKKyAgICB3
YWl0Rm9yTWVzc2FnZSgiZW5kIG1haW4iKTsKKyAgICAvLyBXaGVuIHJlbG9hZGluZywgYW4gaWZy
YW1lIGRvZXNuJ3QgZXhpc3QgYmVmb3JlIHRoZSBkb2N1bWVudCBoYXMgc3RhcnRlZCB0byBsb2Fk
LgorICAgIHdhaXRGb3JNZXNzYWdlKCJzdGFydCBhbGwiKTsKK30KKwogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>344785</attachid>
            <date>2018-07-11 16:10:34 -0700</date>
            <delta_ts>2018-07-11 17:10:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173342-20180711161033.patch</filename>
            <type>text/plain</type>
            <size>32533</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzMzczOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDE4LTA3LTExICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSBm
b3IgaW1tZWRpYXRlIGluamVjdGlvbiBvZiB1c2VyIHNjcmlwdHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzM0MgorICAgICAgICA8cmRhcjovL3By
b2JsZW0vMjkyMDIyODU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJhZHkgRWlkc29uLgorCisg
ICAgICAgIFRoZSBuZXcgU1BJIGlzIFdLVXNlckNvbnRlbnRDb250cm9sbGVyLl9hZGRVc2VyU2Ny
aXB0SW1tZWRpYXRlbHkuCisgICAgICAgIEl0IGlzIGNvdmVyZWQgYnkgbmV3IEFQSSB0ZXN0cy4K
KworICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6Omlu
amVjdFVzZXJTY3JpcHRzKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjppbmplY3RVc2VyU2Ny
aXB0SW1tZWRpYXRlbHkpOgorICAgICAgICBNb3ZlIGluamVjdGlvbiBmdW5jdGlvbmFsaXR5IHRv
IGFsbG93IHVzIHRvIGNhbGwgaXQgZGlyZWN0bHkgZnJvbSB0aGUgbmV3IFNQSS4KKyAgICAgICAg
KiBwYWdlL0ZyYW1lLmg6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBhZ2U6OmZvckVhY2hQYWdlKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKwogMjAxOC0w
Ny0xMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHJl
bWFpbmluZyBDcm9zcy1PcmlnaW4tUmVzb3VyY2UtUG9saWN5IGZhaWx1cmVzLCBpZiBhbnkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCShyZXZpc2lvbiAyMzM3MzkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzM1LDIwICs3MzUsMjUgQEAgdm9p
ZCBGcmFtZTo6aW5qZWN0VXNlclNjcmlwdHMoVXNlclNjcmlwdAogICAgICAgICByZXR1cm47CiAK
ICAgICBtX3BhZ2UtPnVzZXJDb250ZW50UHJvdmlkZXIoKS5mb3JFYWNoVXNlclNjcmlwdChbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpbmplY3Rpb25UaW1lXShET01XcmFw
cGVyV29ybGQmIHdvcmxkLCBjb25zdCBVc2VyU2NyaXB0JiBzY3JpcHQpIHsKLSAgICAgICAgYXV0
byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOwotICAgICAgICBpZiAoIWRvY3VtZW50KQot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZiAoc2NyaXB0LmluamVjdGVkRnJhbWVzKCkg
PT0gSW5qZWN0SW5Ub3BGcmFtZU9ubHkgJiYgb3duZXJFbGVtZW50KCkpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0KLSAgICAgICAgaWYgKHNjcmlwdC5pbmplY3Rpb25UaW1lKCkgPT0gaW5qZWN0aW9u
VGltZSAmJiBVc2VyQ29udGVudFVSTFBhdHRlcm46Om1hdGNoZXNQYXR0ZXJucyhkb2N1bWVudC0+
dXJsKCksIHNjcmlwdC53aGl0ZWxpc3QoKSwgc2NyaXB0LmJsYWNrbGlzdCgpKSkgewotICAgICAg
ICAgICAgaWYgKG1fcGFnZSkKLSAgICAgICAgICAgICAgICBtX3BhZ2UtPnNldEFzUnVubmluZ1Vz
ZXJTY3JpcHRzKCk7Ci0gICAgICAgICAgICBtX3NjcmlwdC0+ZXZhbHVhdGVJbldvcmxkKFNjcmlw
dFNvdXJjZUNvZGUoc2NyaXB0LnNvdXJjZSgpLCBzY3JpcHQudXJsKCkpLCB3b3JsZCk7Ci0gICAg
ICAgIH0KKyAgICAgICAgaWYgKHNjcmlwdC5pbmplY3Rpb25UaW1lKCkgPT0gaW5qZWN0aW9uVGlt
ZSkKKyAgICAgICAgICAgIGluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseSh3b3JsZCwgc2NyaXB0
KTsKICAgICB9KTsKIH0KIAordm9pZCBGcmFtZTo6aW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5
KERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFVzZXJTY3JpcHQmIHNjcmlwdCkKK3sKKyAg
ICBhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7CisgICAgaWYgKCFkb2N1bWVudCkK
KyAgICAgICAgcmV0dXJuOworICAgIGlmIChzY3JpcHQuaW5qZWN0ZWRGcmFtZXMoKSA9PSBJbmpl
Y3RJblRvcEZyYW1lT25seSAmJiAhaXNNYWluRnJhbWUoKSkKKyAgICAgICAgcmV0dXJuOworICAg
IGlmICghVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjptYXRjaGVzUGF0dGVybnMoZG9jdW1lbnQtPnVy
bCgpLCBzY3JpcHQud2hpdGVsaXN0KCksIHNjcmlwdC5ibGFja2xpc3QoKSkpCisgICAgICAgIHJl
dHVybjsKKyAgICBpZiAobV9wYWdlKQorICAgICAgICBtX3BhZ2UtPnNldEFzUnVubmluZ1VzZXJT
Y3JpcHRzKCk7CisgICAgbV9zY3JpcHQtPmV2YWx1YXRlSW5Xb3JsZChTY3JpcHRTb3VyY2VDb2Rl
KHNjcmlwdC5zb3VyY2UoKSwgc2NyaXB0LnVybCgpKSwgd29ybGQpOworfQorCiBSZW5kZXJWaWV3
KiBGcmFtZTo6Y29udGVudFJlbmRlcmVyKCkgY29uc3QKIHsKICAgICByZXR1cm4gZG9jdW1lbnQo
KSA/IGRvY3VtZW50KCktPnJlbmRlclZpZXcoKSA6IG51bGxwdHI7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZS5oCShyZXZpc2lvbiAyMzM3MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgJKHdv
cmtpbmcgY29weSkKQEAgLTE3NSw3ICsxNzUsOCBAQCBwdWJsaWM6CiAKIC8vID09PT09PT09IEFs
bCBwdWJsaWMgZnVuY3Rpb25zIGJlbG93IHRoaXMgcG9pbnQgYXJlIGNhbmRpZGF0ZXMgdG8gbW92
ZSBvdXQgb2YgRnJhbWUgaW50byBhbm90aGVyIGNsYXNzLiA9PT09PT09PQogCi0gICAgdm9pZCBp
bmplY3RVc2VyU2NyaXB0cyhVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSk7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBpbmplY3RVc2VyU2NyaXB0cyhVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkoRE9NV3Jh
cHBlcldvcmxkJiwgY29uc3QgVXNlclNjcmlwdCYpOwogICAgIAogICAgIFdFQkNPUkVfRVhQT1JU
IFN0cmluZyBsYXllclRyZWVBc1RleHQoTGF5ZXJUcmVlRmxhZ3MgPSAwKSBjb25zdDsKICAgICBX
RUJDT1JFX0VYUE9SVCBTdHJpbmcgdHJhY2tlZFJlcGFpbnRSZWN0c0FzVGV4dCgpIGNvbnN0OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmgJKHJldmlzaW9uIDIzMzczOSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDMsNyArMjAzLDcgQEAgcHVibGljOgogCiAg
ICAgUGFnZUdyb3VwJiBncm91cCgpOwogCi0gICAgc3RhdGljIHZvaWQgZm9yRWFjaFBhZ2UoY29u
c3QgV1RGOjpGdW5jdGlvbjx2b2lkKFBhZ2UmKT4mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgdm9pZCBmb3JFYWNoUGFnZShjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoUGFnZSYpPiYpOwog
CiAgICAgdm9pZCBpbmNyZW1lbnRTdWJmcmFtZUNvdW50KCkgeyArK21fc3ViZnJhbWVDb3VudDsg
fQogICAgIHZvaWQgZGVjcmVtZW50U3ViZnJhbWVDb3VudCgpIHsgQVNTRVJUKG1fc3ViZnJhbWVD
b3VudCk7IC0tbV9zdWJmcmFtZUNvdW50OyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjMzNzM5
KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwz
MyBAQAorMjAxOC0wNy0xMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQu
b3JnPgorCisgICAgICAgIEFkZCBTUEkgZm9yIGltbWVkaWF0ZSBpbmplY3Rpb24gb2YgdXNlciBz
Y3JpcHRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NzMzNDIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI5MjAyMjg1PgorCisgICAgICAgIFJldmll
d2VkIGJ5IEJyYWR5IEVpZHNvbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VH
cm91cC5jcHA6CisgICAgICAgIChXS1BhZ2VHcm91cEFkZFVzZXJTY3JpcHQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS1VzZXJDb250ZW50Q29udHJvbGxlclJlZi5jcHA6CisgICAgICAg
IChXS1VzZXJDb250ZW50Q29udHJvbGxlckFkZFVzZXJTY3JpcHQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dL
VXNlckNvbnRlbnRDb250cm9sbGVyIGFkZFVzZXJTY3JpcHQ6XSk6CisgICAgICAgICgtW1dLVXNl
ckNvbnRlbnRDb250cm9sbGVyIF9hZGRVc2VyU2NyaXB0SW1tZWRpYXRlbHk6XSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlclByaXZhdGUuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eTo6YWRkVXNlclNjcmlwdCk6CisgICAgICAgICogVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9Vc2VyQ29u
dGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJV
c2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJTY3JpcHRzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyU2NyaXB0SW50ZXJuYWwpOgorICAgICAg
ICBJZiB3ZSBhcmUgdG8gaW5qZWN0IHRoZSBzY3JpcHQgaW50ZXJuYWxseSwgaW5qZWN0IGl0IGlu
dG8gdGhlIGFwcHJvcHJpYXRlIHBhZ2VzLgorICAgICAgICBJZiB3ZSdyZSBpbmplY3RpbmcgaW50
byB0aGUgdG9wIGZyYW1lIG9ubHksIHRoZXJlJ3Mgbm8gbmVlZCB0byB0cmF2ZXJzZSB0aGUgZnJh
bWUgdHJlZS4KKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRV
c2VyU2NyaXB0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250
ZW50Q29udHJvbGxlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9jcHVMaW1pdCk6CisKIDIwMTgt
MDctMTEgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgRGlzYWJs
ZSBhbGwgbmV0d29yayBjYWNoaW5nIGZvciBITFMgc3RyZWFtcy4KSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUdyb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VHcm91cC5jcHAJKHJldmlzaW9uIDIzMzczOSkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUdyb3VwLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzEsOSArMzEsMTEgQEAKICNpbmNsdWRlICJBUElVc2VyQ29udGVudFdvcmxk
LmgiCiAjaW5jbHVkZSAiQVBJVXNlclNjcmlwdC5oIgogI2luY2x1ZGUgIkFQSVVzZXJTdHlsZVNo
ZWV0LmgiCisjaW5jbHVkZSAiQWRkVXNlclNjcmlwdEltbWVkaWF0ZWx5LmgiCiAjaW5jbHVkZSAi
V0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV2ViUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiV2ViUHJl
ZmVyZW5jZXMuaCIKKyNpbmNsdWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaCIKICNpbmNs
dWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oIgogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViS2l0OwpAQCAtOTgsNyArMTAwLDcgQEAgdm9pZCBXS1BhZ2VHcm91cEFkZFVzZXJTY3JpcHQo
V0tQYWdlR3JvdQogICAgIAogICAgIGF1dG8gdXJsID0gYmFzZVVSTFN0cmluZy5pc0VtcHR5KCkg
PyBXZWJDb3JlOjpibGFua1VSTCgpIDogV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBiYXNl
VVJMU3RyaW5nKTsKICAgICBSZWY8QVBJOjpVc2VyU2NyaXB0PiB1c2VyU2NyaXB0ID0gQVBJOjpV
c2VyU2NyaXB0OjpjcmVhdGUoV2ViQ29yZTo6VXNlclNjcmlwdCB7IFdURk1vdmUoc291cmNlKSwg
V1RGTW92ZSh1cmwpLCB3aGl0ZWxpc3QgPyB3aGl0ZWxpc3QtPnRvU3RyaW5nVmVjdG9yKCkgOiBW
ZWN0b3I8U3RyaW5nPigpLCBibGFja2xpc3QgPyBibGFja2xpc3QtPnRvU3RyaW5nVmVjdG9yKCkg
OiBWZWN0b3I8U3RyaW5nPigpLCB0b1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lKGluamVjdGlvblRp
bWUpLCB0b1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMoaW5qZWN0ZWRGcmFtZXMpIH0sIEFQSTo6
VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGQoKSk7Ci0gICAgdG9JbXBsKHBhZ2VHcm91cFJl
ZiktPnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTY3JpcHQodXNlclNjcmlwdC5nZXQo
KSk7CisgICAgdG9JbXBsKHBhZ2VHcm91cFJlZiktPnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFk
ZFVzZXJTY3JpcHQodXNlclNjcmlwdC5nZXQoKSwgQWRkVXNlclNjcmlwdEltbWVkaWF0ZWx5OjpO
byk7CiB9CiAKIHZvaWQgV0tQYWdlR3JvdXBSZW1vdmVBbGxVc2VyU2NyaXB0cyhXS1BhZ2VHcm91
cFJlZiBwYWdlR3JvdXBSZWYpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1VzZXJDb250ZW50Q29udHJvbGxlclJlZi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWYuY3BwCShyZXZpc2lv
biAyMzM3MzkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1VzZXJDb250ZW50
Q29udHJvbGxlclJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNs
dWRlICJBUElBcnJheS5oIgogI2luY2x1ZGUgIkFQSUNvbnRlbnRSdWxlTGlzdC5oIgogI2luY2x1
ZGUgIkFQSVVzZXJTY3JpcHQuaCIKKyNpbmNsdWRlICJBZGRVc2VyU2NyaXB0SW1tZWRpYXRlbHku
aCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eS5oIgogCkBAIC01Miw3ICs1Myw3IEBAIFdLQXJyYXlSZWYgV0tVc2VyQ29udGVu
dENvbnRyb2xsZXJDb3B5VXMKIAogdm9pZCBXS1VzZXJDb250ZW50Q29udHJvbGxlckFkZFVzZXJT
Y3JpcHQoV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWYgdXNlckNvbnRlbnRDb250cm9sbGVyUmVm
LCBXS1VzZXJTY3JpcHRSZWYgdXNlclNjcmlwdFJlZikKIHsKLSAgICB0b0ltcGwodXNlckNvbnRl
bnRDb250cm9sbGVyUmVmKS0+YWRkVXNlclNjcmlwdCgqdG9JbXBsKHVzZXJTY3JpcHRSZWYpKTsK
KyAgICB0b0ltcGwodXNlckNvbnRlbnRDb250cm9sbGVyUmVmKS0+YWRkVXNlclNjcmlwdCgqdG9J
bXBsKHVzZXJTY3JpcHRSZWYpLCBBZGRVc2VyU2NyaXB0SW1tZWRpYXRlbHk6Ok5vKTsKIH0KIAog
dm9pZCBXS1VzZXJDb250ZW50Q29udHJvbGxlclJlbW92ZUFsbFVzZXJTY3JpcHRzKFdLVXNlckNv
bnRlbnRDb250cm9sbGVyUmVmIHVzZXJDb250ZW50Q29udHJvbGxlclJlZikKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29u
dGVudENvbnRyb2xsZXIubW0JKHJldmlzaW9uIDIzMzczOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbQkod29ya2luZyBjb3B5
KQpAQCAtMzAsNiArMzAsNyBAQAogCiAjaW1wb3J0ICJBUElTZXJpYWxpemVkU2NyaXB0VmFsdWUu
aCIKICNpbXBvcnQgIkFQSVVzZXJDb250ZW50V29ybGQuaCIKKyNpbXBvcnQgIkFkZFVzZXJTY3Jp
cHRJbW1lZGlhdGVseS5oIgogI2ltcG9ydCAiV0tDb250ZW50UnVsZUxpc3RJbnRlcm5hbC5oIgog
I2ltcG9ydCAiV0tGcmFtZUluZm9JbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tOU0FycmF5LmgiCkBA
IC04OSw3ICs5MCw3IEBAIC0gKE5TQXJyYXkgKil1c2VyU2NyaXB0cwogCiAtICh2b2lkKWFkZFVz
ZXJTY3JpcHQ6KFdLVXNlclNjcmlwdCAqKXVzZXJTY3JpcHQKIHsKLSAgICBfdXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHktPmFkZFVzZXJTY3JpcHQoKnVzZXJTY3JpcHQtPl91c2VyU2NyaXB0KTsK
KyAgICBfdXNlckNvbnRlbnRDb250cm9sbGVyUHJveHktPmFkZFVzZXJTY3JpcHQoKnVzZXJTY3Jp
cHQtPl91c2VyU2NyaXB0LCBXZWJLaXQ6OkFkZFVzZXJTY3JpcHRJbW1lZGlhdGVseTo6Tm8pOwog
fQogCiAtICh2b2lkKXJlbW92ZUFsbFVzZXJTY3JpcHRzCkBAIC0xNzcsNiArMTc4LDExIEBAIC0g
KHZvaWQpX3JlbW92ZUFsbFVzZXJTY3JpcHRzQXNzb2NpYXRlZFcKICAgICBfdXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHktPnJlbW92ZUFsbFVzZXJTY3JpcHRzKCp1c2VyQ29udGVudFdvcmxkLT5f
dXNlckNvbnRlbnRXb3JsZCk7CiB9CiAKKy0gKHZvaWQpX2FkZFVzZXJTY3JpcHRJbW1lZGlhdGVs
eTooV0tVc2VyU2NyaXB0ICopdXNlclNjcmlwdAoreworICAgIF91c2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eS0+YWRkVXNlclNjcmlwdCgqdXNlclNjcmlwdC0+X3VzZXJTY3JpcHQsIFdlYktpdDo6
QWRkVXNlclNjcmlwdEltbWVkaWF0ZWx5OjpZZXMpOworfQorCiAtICh2b2lkKV9hZGRVc2VyQ29u
dGVudEZpbHRlcjooX1dLVXNlckNvbnRlbnRGaWx0ZXIgKil1c2VyQ29udGVudEZpbHRlcgogewog
I2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250
cm9sbGVyUHJpdmF0ZS5oCShyZXZpc2lvbiAyMzM3MzkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM3LDYgKzM3LDggQEAKIC0gKHZvaWQpX3JlbW92ZVVzZXJTY3JpcHQ6KFdLVXNl
clNjcmlwdCAqKXVzZXJTY3JpcHQgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTIpLCBpb3Mo
MTAuMCkpOwogLSAodm9pZClfcmVtb3ZlQWxsVXNlclNjcmlwdHNBc3NvY2lhdGVkV2l0aFVzZXJD
b250ZW50V29ybGQ6KF9XS1VzZXJDb250ZW50V29ybGQgKil1c2VyQ29udGVudFdvcmxkIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3N4KDEwLjEyKSwgaW9zKDEwLjApKTsKIAorLSAodm9pZClfYWRkVXNl
clNjcmlwdEltbWVkaWF0ZWx5OihXS1VzZXJTY3JpcHQgKil1c2VyU2NyaXB0IFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiAtICh2b2lkKV9h
ZGRVc2VyQ29udGVudEZpbHRlcjooX1dLVXNlckNvbnRlbnRGaWx0ZXIgKil1c2VyQ29udGVudEZp
bHRlciBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMSksIGlvcyg5LjApKTsKIC0gKHZvaWQp
X3JlbW92ZVVzZXJDb250ZW50RmlsdGVyOihOU1N0cmluZyAqKXVzZXJDb250ZW50RmlsdGVyTmFt
ZSBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMSksIGlvcyg5LjApKTsKIC0gKHZvaWQpX3Jl
bW92ZUFsbFVzZXJDb250ZW50RmlsdGVycyBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMSks
IGlvcyg5LjApKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5j
cHAJKHJldmlzaW9uIDIzMzczOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250
ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkFQSVVzZXJDb250ZW50V29ybGQuaCIKICNpbmNsdWRl
ICJBUElVc2VyU2NyaXB0LmgiCiAjaW5jbHVkZSAiQVBJVXNlclN0eWxlU2hlZXQuaCIKKyNpbmNs
dWRlICJBZGRVc2VyU2NyaXB0SW1tZWRpYXRlbHkuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNl
LmgiCiAjaW5jbHVkZSAiTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXJNZXNzYWdlcy5oIgog
I2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHkuaCIKQEAgLTE2Nyw3ICsxNjgsNyBAQCB2b2lk
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vCiAgICAgICAgIHByb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNlckNvbnRlbnRX
b3JsZHMod29ybGRzVG9SZW1vdmUpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CiB9CiAKLXZv
aWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJTY3JpcHQoQVBJOjpVc2Vy
U2NyaXB0JiB1c2VyU2NyaXB0KQordm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6
YWRkVXNlclNjcmlwdChBUEk6OlVzZXJTY3JpcHQmIHVzZXJTY3JpcHQsIEFkZFVzZXJTY3JpcHRJ
bW1lZGlhdGVseSBpbW1lZGlhdGVseSkKIHsKICAgICBSZWY8QVBJOjpVc2VyQ29udGVudFdvcmxk
PiB3b3JsZCA9IHVzZXJTY3JpcHQudXNlckNvbnRlbnRXb3JsZCgpOwogCkBAIC0xNzYsNyArMTc3
LDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkVQogICAgIG1fdXNl
clNjcmlwdHMtPmVsZW1lbnRzKCkuYXBwZW5kKCZ1c2VyU2NyaXB0KTsKIAogICAgIGZvciAoV2Vi
UHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNlclNjcmlwdHMoeyB7
IHVzZXJTY3JpcHQuaWRlbnRpZmllcigpLCB3b3JsZC0+aWRlbnRpZmllcigpLCB1c2VyU2NyaXB0
LnVzZXJTY3JpcHQoKSB9IH0pLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgICAgIHBy
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNlclNj
cmlwdHMoeyB7IHVzZXJTY3JpcHQuaWRlbnRpZmllcigpLCB3b3JsZC0+aWRlbnRpZmllcigpLCB1
c2VyU2NyaXB0LnVzZXJTY3JpcHQoKSB9IH0sIGltbWVkaWF0ZWx5KSwgbV9pZGVudGlmaWVyLnRv
VUludDY0KCkpOwogfQogCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1v
dmVVc2VyU2NyaXB0KEFQSTo6VXNlclNjcmlwdCYgdXNlclNjcmlwdCkKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaAkocmV2aXNpb24gMjMzNzM5KQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHkuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTksNyBAQCBjbGFzcyBXZWJQcm9jZXNzUHJv
eHk7CiBjbGFzcyBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjsKIHN0cnVjdCBGcmFtZUluZm9EYXRh
Owogc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM7CitlbnVtIGNsYXNzIEFkZFVzZXJT
Y3JpcHRJbW1lZGlhdGVseTsKIAogY2xhc3MgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkg
OiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpVc2VyQ29udGVudENv
bnRyb2xsZXI+LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKQEAgLTc1
LDcgKzc2LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlUHJvY2VzcyhXZWJQcm9jZXNzUHJv
eHkmKTsKIAogICAgIEFQSTo6QXJyYXkmIHVzZXJTY3JpcHRzKCkgeyByZXR1cm4gbV91c2VyU2Ny
aXB0cy5nZXQoKTsgfQotICAgIHZvaWQgYWRkVXNlclNjcmlwdChBUEk6OlVzZXJTY3JpcHQmKTsK
KyAgICB2b2lkIGFkZFVzZXJTY3JpcHQoQVBJOjpVc2VyU2NyaXB0JiwgQWRkVXNlclNjcmlwdElt
bWVkaWF0ZWx5KTsKICAgICB2b2lkIHJlbW92ZVVzZXJTY3JpcHQoQVBJOjpVc2VyU2NyaXB0Jik7
CiAgICAgdm9pZCByZW1vdmVBbGxVc2VyU2NyaXB0cyhBUEk6OlVzZXJDb250ZW50V29ybGQmKTsK
ICAgICB2b2lkIHJlbW92ZUFsbFVzZXJTY3JpcHRzKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIzMzczOSkKKysr
IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTMzMTgsNiArMzMxOCw3IEBACiAJCTQxMDNGQkEyMjA2MUJEQjgwMEMyRUFGOCAv
KiBOZXR3b3JrTG9hZENoZWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gTmV0d29ya0xvYWRDaGVja2VyLmNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkQ2hlY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMDQ4MkNC
MURERDJGQjUwMEYwMDZEMCAvKiBSVENOZXR3b3JrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFJUQ05ldHdvcmsuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MTA0ODJDQzFEREQyRkI1MDBGMDA2RDAgLyogUlRDTmV0d29yay5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSVENOZXR3b3JrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQxMTE0MzYzMjBGNjc3QjEwMDI2RjkxMiAvKiBBZGRVc2VyU2NyaXB0SW1tZWRp
YXRlbHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWRkVXNlclNjcmlwdElt
bWVkaWF0ZWx5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTJCNTQ3MUY5RkQz
QUIwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya1JUQ1Jlc29sdmVyLmNwcDsgcGF0aCA9IE5ldHdvcmtQ
cm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MTEyQjU0NzFGOUZEM0FCMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVy
Q29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya1JU
Q1Jlc29sdmVyQ29jb2EuY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtS
VENSZXNvbHZlckNvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExMkI1
NDgxRjlGRDNBQzAwRTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrUlRDUmVzb2x2ZXIuaDsgcGF0aCA9IE5ldHdvcmtQ
cm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTU0NjcsNiArNTQ2OCw3IEBACiAJCTFBQUYwOEFBMTkyNjkzMEIwMEI2MzkwQyAv
KiBVc2VyQ29udGVudCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CisJCQkJNDExMTQzNjMyMEY2NzdCMTAwMjZGOTEyIC8qIEFkZFVzZXJTY3JpcHRJbW1lZGlhdGVs
eS5oICovLAogCQkJCTFBQUYwOEFCMTkyNjkzNjcwMEI2MzkwQyAvKiBXZWJVc2VyQ29udGVudENv
bnRyb2xsZXIuY3BwICovLAogCQkJCTFBQUYwOEFDMTkyNjkzNjcwMEI2MzkwQyAvKiBXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXIuaCAqLywKIAkJCQkxQUFGMDhCNDE5MjY5RTI0MDBCNjM5MEMgLyog
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3NhZ2VzLmluICovLApJbmRleDogU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L0FkZFVzZXJTY3JpcHRJbW1lZGlhdGVseS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9BZGRVc2Vy
U2NyaXB0SW1tZWRpYXRlbHkuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvVXNlckNvbnRlbnQvQWRkVXNlclNjcmlwdEltbWVkaWF0ZWx5LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisgICAgCitlbnVtIGNsYXNzIEFkZFVzZXJTY3JpcHRJbW1lZGlh
dGVseSB7IE5vLCBZZXMgfTsKKyAgICAKK30KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRl
PD4gc3RydWN0IEVudW1UcmFpdHM8V2ViS2l0OjpBZGRVc2VyU2NyaXB0SW1tZWRpYXRlbHk+IHsK
KyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgIFdlYktpdDo6QWRkVXNlclNjcmlw
dEltbWVkaWF0ZWx5LAorICAgIFdlYktpdDo6QWRkVXNlclNjcmlwdEltbWVkaWF0ZWx5OjpObywK
KyAgICBXZWJLaXQ6OkFkZFVzZXJTY3JpcHRJbW1lZGlhdGVseTo6WWVzCisgICAgPjsKK307CisK
K30KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29u
dGVudENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyMzM3
MzkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlVzZXJDb250ZW50Q29udHJvbGxlci5oIgogCisj
aW5jbHVkZSAiQWRkVXNlclNjcmlwdEltbWVkaWF0ZWx5LmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVy
ZW5jZS5oIgogI2luY2x1ZGUgIkZyYW1lSW5mb0RhdGEuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1
bmRsZVNjcmlwdFdvcmxkLmgiCkBAIC0zNiw2ICszNyw3IEBACiAjaW5jbHVkZSAiV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9ET01XcmFwcGVyV29ybGQu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0
eU9yaWdpbkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlclN0eWxlU2hlZXQuaD4KQEAgLTEyMiw3ICsxMjQsNyBA
QCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlVXNlCiAgICAgfQogfQogCi12
b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRkVXNlclNjcmlwdHMoY29uc3QgVmVjdG9y
PFdlYlVzZXJTY3JpcHREYXRhPiYgdXNlclNjcmlwdHMpCit2b2lkIFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlcjo6YWRkVXNlclNjcmlwdHMoVmVjdG9yPFdlYlVzZXJTY3JpcHREYXRhPiYmIHVzZXJT
Y3JpcHRzLCBBZGRVc2VyU2NyaXB0SW1tZWRpYXRlbHkgaW1tZWRpYXRlbHkpCiB7CiAgICAgZm9y
IChjb25zdCBhdXRvJiB1c2VyU2NyaXB0RGF0YSA6IHVzZXJTY3JpcHRzKSB7CiAgICAgICAgIGF1
dG8gaXQgPSB3b3JsZE1hcCgpLmZpbmQodXNlclNjcmlwdERhdGEud29ybGRJZGVudGlmaWVyKTsK
QEAgLTEzMiw3ICsxMzQsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRkVXNl
clNjCiAgICAgICAgIH0KIAogICAgICAgICBVc2VyU2NyaXB0IHNjcmlwdCA9IHVzZXJTY3JpcHRE
YXRhLnVzZXJTY3JpcHQ7Ci0gICAgICAgIGFkZFVzZXJTY3JpcHRJbnRlcm5hbCgqaXQtPnZhbHVl
LmZpcnN0LCB1c2VyU2NyaXB0RGF0YS5pZGVudGlmaWVyLCBXVEZNb3ZlKHNjcmlwdCkpOworICAg
ICAgICBhZGRVc2VyU2NyaXB0SW50ZXJuYWwoKml0LT52YWx1ZS5maXJzdCwgdXNlclNjcmlwdERh
dGEuaWRlbnRpZmllciwgV1RGTW92ZShzY3JpcHQpLCBpbW1lZGlhdGVseSk7CiAgICAgfQogfQog
CkBAIC0zNjAsMTUgKzM2MiwzMSBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVt
b3ZlQWxsCiB9CiAjZW5kaWYKIAotdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVz
ZXJTY3JpcHRJbnRlcm5hbChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiB3b3JsZCwgdWludDY0
X3QgdXNlclNjcmlwdElkZW50aWZpZXIsIFVzZXJTY3JpcHQmJiB1c2VyU2NyaXB0KQordm9pZCBX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJTY3JpcHRJbnRlcm5hbChJbmplY3RlZEJ1
bmRsZVNjcmlwdFdvcmxkJiB3b3JsZCwgdWludDY0X3QgdXNlclNjcmlwdElkZW50aWZpZXIsIFVz
ZXJTY3JpcHQmJiB1c2VyU2NyaXB0LCBBZGRVc2VyU2NyaXB0SW1tZWRpYXRlbHkgaW1tZWRpYXRl
bHkpCiB7CisgICAgaWYgKGltbWVkaWF0ZWx5ID09IEFkZFVzZXJTY3JpcHRJbW1lZGlhdGVseTo6
WWVzKSB7CisgICAgICAgIFBhZ2U6OmZvckVhY2hQYWdlKFsmXSAoUGFnZSYgcGFnZSkgeworICAg
ICAgICAgICAgaWYgKCZwYWdlLnVzZXJDb250ZW50UHJvdmlkZXIoKSAhPSB0aGlzKQorICAgICAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgYXV0byYgbWFpbkZyYW1lID0gcGFnZS5t
YWluRnJhbWUoKTsKKyAgICAgICAgICAgIGlmICh1c2VyU2NyaXB0LmluamVjdGVkRnJhbWVzKCkg
PT0gSW5qZWN0SW5Ub3BGcmFtZU9ubHkpIHsKKyAgICAgICAgICAgICAgICBtYWluRnJhbWUuaW5q
ZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KHdvcmxkLmNvcmVXb3JsZCgpLCB1c2VyU2NyaXB0KTsK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZv
ciAoRnJhbWUqIGZyYW1lID0gJm1haW5GcmFtZTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUo
KS50cmF2ZXJzZU5leHQoJm1haW5GcmFtZSkpCisgICAgICAgICAgICAgICAgZnJhbWUtPmluamVj
dFVzZXJTY3JpcHRJbW1lZGlhdGVseSh3b3JsZC5jb3JlV29ybGQoKSwgdXNlclNjcmlwdCk7Cisg
ICAgICAgIH0pOworICAgIH0KKwogICAgIGF1dG8mIHNjcmlwdHNJbldvcmxkID0gbV91c2VyU2Ny
aXB0cy5lbnN1cmUoJndvcmxkLCBbXSB7IHJldHVybiBWZWN0b3I8c3RkOjpwYWlyPHVpbnQ2NF90
LCBXZWJDb3JlOjpVc2VyU2NyaXB0Pj4oKTsgfSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIHNjcmlw
dHNJbldvcmxkLmFwcGVuZChzdGQ6Om1ha2VfcGFpcih1c2VyU2NyaXB0SWRlbnRpZmllciwgV1RG
TW92ZSh1c2VyU2NyaXB0KSkpOwogfQogCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6
YWRkVXNlclNjcmlwdChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiB3b3JsZCwgVXNlclNjcmlw
dCYmIHVzZXJTY3JpcHQpCiB7Ci0gICAgYWRkVXNlclNjcmlwdEludGVybmFsKHdvcmxkLCAwLCBX
VEZNb3ZlKHVzZXJTY3JpcHQpKTsKKyAgICBhZGRVc2VyU2NyaXB0SW50ZXJuYWwod29ybGQsIDAs
IFdURk1vdmUodXNlclNjcmlwdCksIEFkZFVzZXJTY3JpcHRJbW1lZGlhdGVseTo6Tm8pOwogfQog
CiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlVXNlclNjcmlwdFdpdGhVUkwo
SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYgd29ybGQsIGNvbnN0IFVSTCYgdXJsKQpJbmRleDog
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJv
bGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVu
dC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaAkocmV2aXNpb24gMjMzNzM5KQorKysgU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xh
c3MgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDsKIGNsYXNzIFdlYkNvbXBpbGVkQ29udGVudFJ1
bGVMaXN0RGF0YTsKIGNsYXNzIFdlYlVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JQcm94eTsK
K2VudW0gY2xhc3MgQWRkVXNlclNjcmlwdEltbWVkaWF0ZWx5OwogCiBjbGFzcyBXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6VXNlckNvbnRlbnRQcm92aWRl
ciwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6CkBAIC02NCw3ICs2NSw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZUFsbFVzZXJDb250ZW50KCk7CiAKICAgICB2b2lk
IGFkZFVzZXJDb250ZW50V29ybGRzKGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8dWludDY0X3QsIFN0
cmluZz4+Jik7Ci0gICAgdm9pZCBhZGRVc2VyU2NyaXB0cyhjb25zdCBWZWN0b3I8V2ViVXNlclNj
cmlwdERhdGE+Jik7CisgICAgdm9pZCBhZGRVc2VyU2NyaXB0cyhWZWN0b3I8V2ViVXNlclNjcmlw
dERhdGE+JiYsIEFkZFVzZXJTY3JpcHRJbW1lZGlhdGVseSk7CiAgICAgdm9pZCBhZGRVc2VyU3R5
bGVTaGVldHMoY29uc3QgVmVjdG9yPFdlYlVzZXJTdHlsZVNoZWV0RGF0YT4mKTsKICAgICB2b2lk
IGFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnMoY29uc3QgVmVjdG9yPFdlYlNjcmlwdE1lc3Nh
Z2VIYW5kbGVyRGF0YT4mKTsKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpAQCAtMTAz
LDcgKzEwNCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZW1vdmVBbGxDb250ZW50UnVsZUxpc3Rz
KCk7CiAjZW5kaWYKIAotICAgIHZvaWQgYWRkVXNlclNjcmlwdEludGVybmFsKEluamVjdGVkQnVu
ZGxlU2NyaXB0V29ybGQmLCB1aW50NjRfdCB1c2VyU2NyaXB0SWRlbnRpZmllciwgV2ViQ29yZTo6
VXNlclNjcmlwdCYmKTsKKyAgICB2b2lkIGFkZFVzZXJTY3JpcHRJbnRlcm5hbChJbmplY3RlZEJ1
bmRsZVNjcmlwdFdvcmxkJiwgdWludDY0X3QgdXNlclNjcmlwdElkZW50aWZpZXIsIFdlYkNvcmU6
OlVzZXJTY3JpcHQmJiwgQWRkVXNlclNjcmlwdEltbWVkaWF0ZWx5KTsKICAgICB2b2lkIHJlbW92
ZVVzZXJTY3JpcHRJbnRlcm5hbChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiwgdWludDY0X3Qg
dXNlclNjcmlwdElkZW50aWZpZXIpOwogICAgIHZvaWQgYWRkVXNlclN0eWxlU2hlZXRJbnRlcm5h
bChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiwgdWludDY0X3QgdXNlclN0eWxlU2hlZXRJZGVu
dGlmaWVyLCBXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCYmKTsKICAgICB2b2lkIHJlbW92ZVVzZXJT
dHlsZVNoZWV0SW50ZXJuYWwoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYsIHVpbnQ2NF90IHVz
ZXJTdHlsZVNoZWV0SWRlbnRpZmllcik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
VXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3NhZ2VzLmluCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVu
dENvbnRyb2xsZXIubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIzMzczOSkKKysrIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIubWVzc2Fn
ZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAgbWVzc2FnZXMgLT4gV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyIHsKICAgICBBZGRVc2VyQ29udGVudFdvcmxkcyhWZWN0b3I8c3Rk
OjpwYWlyPHVpbnQ2NF90LCBTdHJpbmc+PiB3b3JsZHMpOwogICAgIFJlbW92ZVVzZXJDb250ZW50
V29ybGRzKFZlY3Rvcjx1aW50NjRfdD4gd29ybGRJZGVudGlmaWVycyk7CiAKLSAgICBBZGRVc2Vy
U2NyaXB0cyhWZWN0b3I8c3RydWN0IFdlYktpdDo6V2ViVXNlclNjcmlwdERhdGE+IHVzZXJTY3Jp
cHRzKTsKKyAgICBBZGRVc2VyU2NyaXB0cyhWZWN0b3I8c3RydWN0IFdlYktpdDo6V2ViVXNlclNj
cmlwdERhdGE+IHVzZXJTY3JpcHRzLCBlbnVtIFdlYktpdDo6QWRkVXNlclNjcmlwdEltbWVkaWF0
ZWx5IGltbWVkaWF0ZWx5KTsKICAgICBSZW1vdmVVc2VyU2NyaXB0KHVpbnQ2NF90IHdvcmxkSWRl
bnRpZmllciwgdWludDY0X3QgaWRlbnRpZmllcik7CiAgICAgUmVtb3ZlQWxsVXNlclNjcmlwdHMo
VmVjdG9yPHVpbnQ2NF90PiB3b3JsZElkZW50aWZpZXJzKTsKIApJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDIzMzczOSkKKysr
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJBUElBcnJheS5oIgogI2luY2x1ZGUg
IkFQSUdlb21ldHJ5LmgiCisjaW5jbHVkZSAiQWRkVXNlclNjcmlwdEltbWVkaWF0ZWx5LmgiCiAj
aW5jbHVkZSAiQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uaCIKICNpbmNsdWRlICJEYXRhUmVmZXJl
bmNlLmgiCiAjaW5jbHVkZSAiRHJhZ0NvbnRyb2xsZXJBY3Rpb24uaCIKQEAgLTYxMiw3ICs2MTMs
NyBAQCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnCiAgICAgICAgIHJl
Z2lzdGVyVVJMU2NoZW1lSGFuZGxlcihpdGVyYXRvci52YWx1ZSwgaXRlcmF0b3Iua2V5KTsKIAog
ICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT5hZGRVc2VyQ29udGVudFdvcmxkcyhwYXJhbWV0
ZXJzLnVzZXJDb250ZW50V29ybGRzKTsKLSAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+YWRk
VXNlclNjcmlwdHMocGFyYW1ldGVycy51c2VyU2NyaXB0cyk7CisgICAgbV91c2VyQ29udGVudENv
bnRyb2xsZXItPmFkZFVzZXJTY3JpcHRzKFdURk1vdmUocGFyYW1ldGVycy51c2VyU2NyaXB0cyks
IEFkZFVzZXJTY3JpcHRJbW1lZGlhdGVseTo6Tm8pOwogICAgIG1fdXNlckNvbnRlbnRDb250cm9s
bGVyLT5hZGRVc2VyU3R5bGVTaGVldHMocGFyYW1ldGVycy51c2VyU3R5bGVTaGVldHMpOwogICAg
IG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT5hZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzKHBh
cmFtZXRlcnMubWVzc2FnZUhhbmRsZXJzKTsKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05T
KQpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwko
cmV2aXNpb24gMjMzNzM5KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMTgtMDctMTEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5A
d2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgU1BJIGZvciBpbW1lZGlhdGUgaW5qZWN0aW9uIG9m
IHVzZXIgc2NyaXB0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTczMzQyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yOTIwMjI4NT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBCcmFkeSBFaWRzb24uCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJDb2NvYS9Vc2VyQ29udGVudENvbnRyb2xsZXIubW06CisgICAgICAgICh3YWl0
Rm9yTWVzc2FnZSk6CisgICAgICAgIChURVNUKToKKwogMjAxOC0wNy0xMSAgWW91ZW5uIEZhYmxl
dCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHJlbWFpbmluZyBDcm9zcy1Pcmln
aW4tUmVzb3VyY2UtUG9saWN5IGZhaWx1cmVzLCBpZiBhbnkKSW5kZXg6IFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlckNvbnRlbnRDb250cm9sbGVyLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlckNvbnRlbnRD
b250cm9sbGVyLm1tCShyZXZpc2lvbiAyMzM3MzkpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1VzZXJDb250ZW50Q29udHJvbGxlci5tbQkod29ya2luZyBjb3B5KQpA
QCAtMzcsNiArMzcsNyBAQAogI2ltcG9ydCA8V2ViS2l0L19XS1VzZXJDb250ZW50V29ybGQuaD4K
ICNpbXBvcnQgPFdlYktpdC9fV0tVc2VyU3R5bGVTaGVldC5oPgogI2ltcG9ydCA8d3RmL1JldGFp
blB0ci5oPgorI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgogCiAjaWYgV0tfQVBJX0VOQUJMRUQKIApA
QCAtNTUsNyArNTYsNyBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlk
CiBAZW5kCiAKIHN0YXRpYyBib29sIHJlY2VpdmVkU2NyaXB0TWVzc2FnZTsKLXN0YXRpYyBSZXRh
aW5QdHI8V0tTY3JpcHRNZXNzYWdlPiBsYXN0U2NyaXB0TWVzc2FnZTsKK3N0YXRpYyBWZWN0b3I8
UmV0YWluUHRyPFdLU2NyaXB0TWVzc2FnZT4+IHNjcmlwdE1lc3NhZ2VzOwogCiBAaW50ZXJmYWNl
IFNjcmlwdE1lc3NhZ2VIYW5kbGVyIDogTlNPYmplY3QgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+
CiBAZW5kCkBAIC02NSw3ICs2Niw3IEBAIEBpbnRlcmZhY2UgU2NyaXB0TWVzc2FnZUhhbmRsZXIg
OiBOU09iamUKIC0gKHZvaWQpdXNlckNvbnRlbnRDb250cm9sbGVyOihXS1VzZXJDb250ZW50Q29u
dHJvbGxlciAqKXVzZXJDb250ZW50Q29udHJvbGxlciBkaWRSZWNlaXZlU2NyaXB0TWVzc2FnZToo
V0tTY3JpcHRNZXNzYWdlICopbWVzc2FnZQogewogICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9
IHRydWU7Ci0gICAgbGFzdFNjcmlwdE1lc3NhZ2UgPSBtZXNzYWdlOworICAgIHNjcmlwdE1lc3Nh
Z2VzLmFwcGVuZChtZXNzYWdlKTsKIH0KIAogQGVuZApAQCAtODgsNyArODksNyBAQCBURVNUKFdL
VXNlckNvbnRlbnRDb250cm9sbGVyLCBTY3JpcHRNZXNzCiAgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOwogICAgIHJlY2VpdmVkU2NyaXB0TWVzc2Fn
ZSA9IGZhbHNlOwogCi0gICAgRVhQRUNUX1dLX1NUUkVRKEAiSGVsbG8iLCAoTlNTdHJpbmcgKilb
bGFzdFNjcmlwdE1lc3NhZ2UgYm9keV0pOworICAgIEVYUEVDVF9XS19TVFJFUShAIkhlbGxvIiwg
KE5TU3RyaW5nICopW3NjcmlwdE1lc3NhZ2VzWzBdIGJvZHldKTsKIH0KIAogVEVTVChXS1VzZXJD
b250ZW50Q29udHJvbGxlciwgU2NyaXB0TWVzc2FnZUhhbmRsZXJCYXNpY1Bvc3RJc29sYXRlZFdv
cmxkKQpAQCAtMTE1LDcgKzExNiw3IEBAIFRFU1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIFNj
cmlwdE1lc3MKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVz
c2FnZSk7CiAgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7CiAKLSAgICBFWFBFQ1Rf
V0tfU1RSRVEoQCJIZWxsbyIsIChOU1N0cmluZyAqKVtsYXN0U2NyaXB0TWVzc2FnZSBib2R5XSk7
CisgICAgRVhQRUNUX1dLX1NUUkVRKEAiSGVsbG8iLCAoTlNTdHJpbmcgKilbc2NyaXB0TWVzc2Fn
ZXNbMF0gYm9keV0pOwogCiAgICAgaWYgKCFpc0RvbmVXaXRoTmF2aWdhdGlvbikKICAgICAgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmVXaXRoTmF2aWdhdGlvbik7CkBAIC0xNjYs
NyArMTY3LDcgQEAgVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgU2NyaXB0TWVzcwogICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKICAgICBy
ZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsKIAotICAgIEVYUEVDVF9XS19TVFJFUShAIlBB
U1MiLCAoTlNTdHJpbmcgKilbbGFzdFNjcmlwdE1lc3NhZ2UgYm9keV0pOworICAgIEVYUEVDVF9X
S19TVFJFUShAIlBBU1MiLCAoTlNTdHJpbmcgKilbc2NyaXB0TWVzc2FnZXNbMF0gYm9keV0pOwog
CiAgICAgW3VzZXJDb250ZW50Q29udHJvbGxlciByZW1vdmVTY3JpcHRNZXNzYWdlSGFuZGxlckZv
ck5hbWU6QCJoYW5kbGVyVG9SZW1vdmUiXTsKIApAQCAtMTgxLDcgKzE4Miw3IEBAIFRFU1QoV0tV
c2VyQ29udGVudENvbnRyb2xsZXIsIFNjcmlwdE1lc3MKICAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CiAgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdl
ID0gZmFsc2U7CiAKLSAgICBFWFBFQ1RfV0tfU1RSRVEoQCJQQVNTIiwgKE5TU3RyaW5nICopW2xh
c3RTY3JpcHRNZXNzYWdlIGJvZHldKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoQCJQQVNTIiwgKE5T
U3RyaW5nICopW3NjcmlwdE1lc3NhZ2VzWzBdIGJvZHldKTsKIH0KIAogVEVTVChXS1VzZXJDb250
ZW50Q29udHJvbGxlciwgU2NyaXB0TWVzc2FnZUhhbmRsZXJDYWxsUmVtb3ZlZEhhbmRsZXIpCkBA
IC0yMTQsNyArMjE1LDcgQEAgVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgU2NyaXB0TWVz
cwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsK
ICAgICByZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsKIAotICAgIEVYUEVDVF9XS19TVFJF
UShAIlBBU1MiLCAoTlNTdHJpbmcgKilbbGFzdFNjcmlwdE1lc3NhZ2UgYm9keV0pOworICAgIEVY
UEVDVF9XS19TVFJFUShAIlBBU1MiLCAoTlNTdHJpbmcgKilbc2NyaXB0TWVzc2FnZXNbMF0gYm9k
eV0pOwogfQogCiBzdGF0aWMgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlld0ZvclNjcmlwdE1l
c3NhZ2VIYW5kbGVyTXVsdGlwbGVIYW5kbGVyUmVtb3ZhbFRlc3QoV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiAqY29uZmlndXJhdGlvbikKQEAgLTI1NSw3ICsyNTYsNyBAQCBURVNUKFdLVXNlckNvbnRl
bnRDb250cm9sbGVyLCBTY3JpcHRNZXNzCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZy
ZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOwogICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNl
OwogCi0gICAgRVhQRUNUX1dLX1NUUkVRKEAiUEFTUyIsIChOU1N0cmluZyAqKVtsYXN0U2NyaXB0
TWVzc2FnZSBib2R5XSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKEAiUEFTUyIsIChOU1N0cmluZyAq
KVtzY3JpcHRNZXNzYWdlc1swXSBib2R5XSk7CiB9CiAKICNpZiAhUExBVEZPUk0oSU9TKSAvLyBG
SVhNRTogaGFuZ3MgaW4gdGhlIGlPUyBzaW11bGF0b3IKQEAgLTI3NSwxMCArMjc2LDkgQEAgVEVT
VChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgU2NyaXB0TWVzcwogCiAgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOwogCi0gICAgRVhQRUNUX1dLX1NU
UkVRKEAiRmlyc3QgTWVzc2FnZSIsIChOU1N0cmluZyAqKVtsYXN0U2NyaXB0TWVzc2FnZSBib2R5
XSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKEAiRmlyc3QgTWVzc2FnZSIsIChOU1N0cmluZyAqKVtz
Y3JpcHRNZXNzYWdlc1swXSBib2R5XSk7CiAgICAgCiAgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdl
ID0gZmFsc2U7Ci0gICAgbGFzdFNjcmlwdE1lc3NhZ2UgPSBudWxscHRyOwogCiAgICAgW3dlYlZp
ZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CiAgICAgW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZp
bmlzaE5hdmlnYXRpb25dOwpAQCAtMjg3LDcgKzI4Nyw3IEBAIFRFU1QoV0tVc2VyQ29udGVudENv
bnRyb2xsZXIsIFNjcmlwdE1lc3MKIAogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVj
ZWl2ZWRTY3JpcHRNZXNzYWdlKTsKIAotICAgIEVYUEVDVF9XS19TVFJFUShAIlNlY29uZCBNZXNz
YWdlIiwgKE5TU3RyaW5nICopW2xhc3RTY3JpcHRNZXNzYWdlIGJvZHldKTsgICAgCisgICAgRVhQ
RUNUX1dLX1NUUkVRKEAiU2Vjb25kIE1lc3NhZ2UiLCAoTlNTdHJpbmcgKilbc2NyaXB0TWVzc2Fn
ZXNbMV0gYm9keV0pOwogfQogI2VuZGlmCiAKQEAgLTMxMSw3ICszMTEsNyBAQCBURVNUKFdLVXNl
ckNvbnRlbnRDb250cm9sbGVyLCBTY3JpcHRNZXNzCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOwogICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9
IGZhbHNlOwogCi0gICAgRVhQRUNUX1dLX1NUUkVRKEAiUEFTUzEiLCAoTlNTdHJpbmcgKilbbGFz
dFNjcmlwdE1lc3NhZ2UgYm9keV0pOworICAgIEVYUEVDVF9XS19TVFJFUShAIlBBU1MxIiwgKE5T
U3RyaW5nICopW3NjcmlwdE1lc3NhZ2VzWzBdIGJvZHldKTsKIAogICAgIFt1c2VyQ29udGVudENv
bnRyb2xsZXIgcmVtb3ZlU2NyaXB0TWVzc2FnZUhhbmRsZXJGb3JOYW1lOkAiaGFuZGxlclRvUmVw
bGFjZSJdOwogICAgIFt1c2VyQ29udGVudENvbnRyb2xsZXIgYWRkU2NyaXB0TWVzc2FnZUhhbmRs
ZXI6aGFuZGxlci5nZXQoKSBuYW1lOkAiaGFuZGxlclRvUmVwbGFjZSJdOwpAQCAtMzIyLDcgKzMy
Miw3IEBAIFRFU1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIFNjcmlwdE1lc3MKICAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CiAgICAgcmVjZWl2
ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7CiAKLSAgICBFWFBFQ1RfV0tfU1RSRVEoQCJQQVNTMiIs
IChOU1N0cmluZyAqKVtsYXN0U2NyaXB0TWVzc2FnZSBib2R5XSk7CisgICAgRVhQRUNUX1dLX1NU
UkVRKEAiUEFTUzIiLCAoTlNTdHJpbmcgKilbc2NyaXB0TWVzc2FnZXNbMV0gYm9keV0pOwogfQog
CiBzdGF0aWMgTlNTdHJpbmcgKnN0eWxlU2hlZXRTb3VyY2UgPSBAImJvZHkgeyBiYWNrZ3JvdW5k
LWNvbG9yOiBncmVlbiAhaW1wb3J0YW50OyB9IjsKQEAgLTU5Miw0ICs1OTIsNTAgQEAgVEVTVChX
S1VzZXJDb250ZW50Q29udHJvbGxlciwgVXNlclNjcmlwdAogICAgIEVYUEVDVF9FUSh1c2VyU2Ny
aXB0QXNzb2NpYXRlZFdpdGhXb3JsZDIuZ2V0KCksIFt1c2VyQ29udGVudENvbnRyb2xsZXIgdXNl
clNjcmlwdHNdWzFdKTsKIH0KIAorc3RhdGljIHZvaWQgd2FpdEZvck1lc3NhZ2VzKHNpemVfdCBl
eHBlY3RlZENvdW50KQoreworICAgIHdoaWxlIChzY3JpcHRNZXNzYWdlcy5zaXplKCkgPCBleHBl
Y3RlZENvdW50KSB7CisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRT
Y3JpcHRNZXNzYWdlKTsKKyAgICAgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7Cisg
ICAgfQorfQorCitzdGF0aWMgdm9pZCBjb21wYXJlTWVzc2FnZXMoVmVjdG9yPGNvbnN0IGNoYXIq
PiYmIGV4cGVjdGVkTWVzc2FnZXMpCit7CisgICAgRVhQRUNUX0VRKGV4cGVjdGVkTWVzc2FnZXMu
c2l6ZSgpLCBzY3JpcHRNZXNzYWdlcy5zaXplKCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgZXhwZWN0ZWRNZXNzYWdlcy5zaXplKCk7ICsraSkKKyAgICAgICAgRVhQRUNUX1NUUkVRKFtb
c2NyaXB0TWVzc2FnZXNbaV0gYm9keV0gVVRGOFN0cmluZ10sIGV4cGVjdGVkTWVzc2FnZXNbaV0p
OworfQorCitURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBBZGRVc2VyU2NyaXB0SW1tZWRp
YXRlbHkpCit7CisgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbW1NjcmlwdE1lc3NhZ2VIYW5k
bGVyIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBzdGFydEFsbEZyYW1lcyA9IGFkb3B0TlMoW1tX
S1VzZXJTY3JpcHQgYWxsb2NdIGluaXRXaXRoU291cmNlOkAid2luZG93LndlYmtpdC5tZXNzYWdl
SGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoJ3N0YXJ0IGFsbCcpIiBpbmplY3Rpb25U
aW1lOldLVXNlclNjcmlwdEluamVjdGlvblRpbWVBdERvY3VtZW50U3RhcnQgZm9yTWFpbkZyYW1l
T25seTpOT10pOworICAgIGF1dG8gZW5kTWFpbkZyYW1lT25seSA9IGFkb3B0TlMoW1tXS1VzZXJT
Y3JpcHQgYWxsb2NdIGluaXRXaXRoU291cmNlOkAid2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxl
cnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoJ2VuZCBtYWluJykiIGluamVjdGlvblRpbWU6V0tV
c2VyU2NyaXB0SW5qZWN0aW9uVGltZUF0RG9jdW1lbnRFbmQgZm9yTWFpbkZyYW1lT25seTpZRVNd
KTsKKworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29u
dHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBuYW1lOkAidGVz
dEhhbmRsZXIiXTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlv
bjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhb
W1NpbXBsZU5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3IHNl
dE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBOU1VSTFJlcXVlc3Qg
KnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1
bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUtaWZyYW1lIiB3aXRoRXh0ZW5zaW9uOkAiaHRt
bCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07CisKKyAgICBpc0Rv
bmVXaXRoTmF2aWdhdGlvbiA9IGZhbHNlOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVl
c3RdOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lV2l0aE5hdmlnYXRpb24p
OworCisgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7CisgICAgW1tjb25maWd1cmF0
aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gX2FkZFVzZXJTY3JpcHRJbW1lZGlhdGVseTpzdGFy
dEFsbEZyYW1lcy5nZXQoKV07CisgICAgLy8gc2ltcGxlLWlmcmFtZS5odG1sIGhhcyBhIG1haW4g
ZnJhbWUgYW5kIG9uZSBpZnJhbWUuCisgICAgd2FpdEZvck1lc3NhZ2VzKDIpOworICAgIFtbY29u
ZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIF9hZGRVc2VyU2NyaXB0SW1tZWRpYXRl
bHk6ZW5kTWFpbkZyYW1lT25seS5nZXQoKV07CisgICAgd2FpdEZvck1lc3NhZ2VzKDMpOworICAg
IFt3ZWJWaWV3IHJlbG9hZF07CisgICAgd2FpdEZvck1lc3NhZ2VzKDYpOworICAgIGNvbXBhcmVN
ZXNzYWdlcyh7InN0YXJ0IGFsbCIsICJzdGFydCBhbGwiLCAiZW5kIG1haW4iLCAic3RhcnQgYWxs
IiwgImVuZCBtYWluIiwgInN0YXJ0IGFsbCJ9KTsKK30KKwogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>344790</attachid>
            <date>2018-07-11 17:10:19 -0700</date>
            <delta_ts>2018-07-11 17:33:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173342-20180711171018.patch</filename>
            <type>text/plain</type>
            <size>33264</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzMzczOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDE4LTA3LTExICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSBm
b3IgaW1tZWRpYXRlIGluamVjdGlvbiBvZiB1c2VyIHNjcmlwdHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzM0MgorICAgICAgICA8cmRhcjovL3By
b2JsZW0vMjkyMDIyODU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJhZHkgRWlkc29uIGFuZCBZ
b3Vlbm4gRmFibGV0LgorCisgICAgICAgIFRoZSBuZXcgU1BJIGlzIFdLVXNlckNvbnRlbnRDb250
cm9sbGVyLl9hZGRVc2VyU2NyaXB0SW1tZWRpYXRlbHkuCisgICAgICAgIEl0IGlzIGNvdmVyZWQg
YnkgbmV3IEFQSSB0ZXN0cy4KKworICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWU6OmluamVjdFVzZXJTY3JpcHRzKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lOjppbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkpOgorICAgICAgICBNb3ZlIGluamVjdGlv
biBmdW5jdGlvbmFsaXR5IHRvIGFsbG93IHVzIHRvIGNhbGwgaXQgZGlyZWN0bHkgZnJvbSB0aGUg
bmV3IFNQSS4KKyAgICAgICAgKiBwYWdlL0ZyYW1lLmg6CisgICAgICAgICogcGFnZS9QYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmZvckVhY2hQYWdlKToKKyAgICAgICAgKiBwYWdl
L1BhZ2UuaDoKKwogMjAxOC0wNy0xMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+
CiAKICAgICAgICAgRml4IHJlbWFpbmluZyBDcm9zcy1PcmlnaW4tUmVzb3VyY2UtUG9saWN5IGZh
aWx1cmVzLCBpZiBhbnkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCShyZXZpc2lvbiAyMzM3Mzkp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzM1
LDIwICs3MzUsMjUgQEAgdm9pZCBGcmFtZTo6aW5qZWN0VXNlclNjcmlwdHMoVXNlclNjcmlwdAog
ICAgICAgICByZXR1cm47CiAKICAgICBtX3BhZ2UtPnVzZXJDb250ZW50UHJvdmlkZXIoKS5mb3JF
YWNoVXNlclNjcmlwdChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpbmpl
Y3Rpb25UaW1lXShET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBVc2VyU2NyaXB0JiBzY3Jp
cHQpIHsKLSAgICAgICAgYXV0byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOwotICAgICAg
ICBpZiAoIWRvY3VtZW50KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZiAoc2NyaXB0
LmluamVjdGVkRnJhbWVzKCkgPT0gSW5qZWN0SW5Ub3BGcmFtZU9ubHkgJiYgb3duZXJFbGVtZW50
KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKHNjcmlwdC5pbmplY3Rpb25U
aW1lKCkgPT0gaW5qZWN0aW9uVGltZSAmJiBVc2VyQ29udGVudFVSTFBhdHRlcm46Om1hdGNoZXNQ
YXR0ZXJucyhkb2N1bWVudC0+dXJsKCksIHNjcmlwdC53aGl0ZWxpc3QoKSwgc2NyaXB0LmJsYWNr
bGlzdCgpKSkgewotICAgICAgICAgICAgaWYgKG1fcGFnZSkKLSAgICAgICAgICAgICAgICBtX3Bh
Z2UtPnNldEFzUnVubmluZ1VzZXJTY3JpcHRzKCk7Ci0gICAgICAgICAgICBtX3NjcmlwdC0+ZXZh
bHVhdGVJbldvcmxkKFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0LnNvdXJjZSgpLCBzY3JpcHQudXJs
KCkpLCB3b3JsZCk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKHNjcmlwdC5pbmplY3Rpb25UaW1l
KCkgPT0gaW5qZWN0aW9uVGltZSkKKyAgICAgICAgICAgIGluamVjdFVzZXJTY3JpcHRJbW1lZGlh
dGVseSh3b3JsZCwgc2NyaXB0KTsKICAgICB9KTsKIH0KIAordm9pZCBGcmFtZTo6aW5qZWN0VXNl
clNjcmlwdEltbWVkaWF0ZWx5KERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFVzZXJTY3Jp
cHQmIHNjcmlwdCkKK3sKKyAgICBhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7Cisg
ICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChzY3JpcHQuaW5qZWN0
ZWRGcmFtZXMoKSA9PSBJbmplY3RJblRvcEZyYW1lT25seSAmJiAhaXNNYWluRnJhbWUoKSkKKyAg
ICAgICAgcmV0dXJuOworICAgIGlmICghVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjptYXRjaGVzUGF0
dGVybnMoZG9jdW1lbnQtPnVybCgpLCBzY3JpcHQud2hpdGVsaXN0KCksIHNjcmlwdC5ibGFja2xp
c3QoKSkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAobV9wYWdlKQorICAgICAgICBtX3BhZ2Ut
PnNldEFzUnVubmluZ1VzZXJTY3JpcHRzKCk7CisgICAgbV9zY3JpcHQtPmV2YWx1YXRlSW5Xb3Js
ZChTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdC5zb3VyY2UoKSwgc2NyaXB0LnVybCgpKSwgd29ybGQp
OworfQorCiBSZW5kZXJWaWV3KiBGcmFtZTo6Y29udGVudFJlbmRlcmVyKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gZG9jdW1lbnQoKSA/IGRvY3VtZW50KCktPnJlbmRlclZpZXcoKSA6IG51bGxwdHI7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZS5oCShyZXZpc2lvbiAyMzM3MzkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3NSw3ICsxNzUsOCBAQCBwdWJsaWM6
CiAKIC8vID09PT09PT09IEFsbCBwdWJsaWMgZnVuY3Rpb25zIGJlbG93IHRoaXMgcG9pbnQgYXJl
IGNhbmRpZGF0ZXMgdG8gbW92ZSBvdXQgb2YgRnJhbWUgaW50byBhbm90aGVyIGNsYXNzLiA9PT09
PT09PQogCi0gICAgdm9pZCBpbmplY3RVc2VyU2NyaXB0cyhVc2VyU2NyaXB0SW5qZWN0aW9uVGlt
ZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbmplY3RVc2VyU2NyaXB0cyhVc2VyU2NyaXB0
SW5qZWN0aW9uVGltZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbmplY3RVc2VyU2NyaXB0
SW1tZWRpYXRlbHkoRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgVXNlclNjcmlwdCYpOwogICAgIAog
ICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBsYXllclRyZWVBc1RleHQoTGF5ZXJUcmVlRmxhZ3Mg
PSAwKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgdHJhY2tlZFJlcGFpbnRSZWN0
c0FzVGV4dCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHJldmlzaW9uIDIzMzczOSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDMsNyArMjAz
LDcgQEAgcHVibGljOgogCiAgICAgUGFnZUdyb3VwJiBncm91cCgpOwogCi0gICAgc3RhdGljIHZv
aWQgZm9yRWFjaFBhZ2UoY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKFBhZ2UmKT4mKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBmb3JFYWNoUGFnZShjb25zdCBXVEY6OkZ1bmN0aW9u
PHZvaWQoUGFnZSYpPiYpOwogCiAgICAgdm9pZCBpbmNyZW1lbnRTdWJmcmFtZUNvdW50KCkgeyAr
K21fc3ViZnJhbWVDb3VudDsgfQogICAgIHZvaWQgZGVjcmVtZW50U3ViZnJhbWVDb3VudCgpIHsg
QVNTRVJUKG1fc3ViZnJhbWVDb3VudCk7IC0tbV9zdWJmcmFtZUNvdW50OyB9CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwkocmV2aXNpb24gMjMzNzM5KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwzMyBAQAorMjAxOC0wNy0xMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFj
aHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBTUEkgZm9yIGltbWVkaWF0ZSBp
bmplY3Rpb24gb2YgdXNlciBzY3JpcHRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzMzNDIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI5MjAyMjg1
PgorCisgICAgICAgIFJldmlld2VkIGJ5IEJyYWR5IEVpZHNvbi4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQy9XS1BhZ2VHcm91cC5jcHA6CisgICAgICAgIChXS1BhZ2VHcm91cEFkZFVzZXJT
Y3JpcHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1VzZXJDb250ZW50Q29udHJvbGxl
clJlZi5jcHA6CisgICAgICAgIChXS1VzZXJDb250ZW50Q29udHJvbGxlckFkZFVzZXJTY3JpcHQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIu
bW06CisgICAgICAgICgtW1dLVXNlckNvbnRlbnRDb250cm9sbGVyIGFkZFVzZXJTY3JpcHQ6XSk6
CisgICAgICAgICgtW1dLVXNlckNvbnRlbnRDb250cm9sbGVyIF9hZGRVc2VyU2NyaXB0SW1tZWRp
YXRlbHk6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29u
dHJvbGxlclByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNlclNjcmlwdCk6CisgICAgICAgICogVUlQcm9jZXNz
L1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJTY3JpcHRzKToK
KyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyU2NyaXB0
SW50ZXJuYWwpOgorICAgICAgICBJZiB3ZSBhcmUgdG8gaW5qZWN0IHRoZSBzY3JpcHQgaW50ZXJu
YWxseSwgaW5qZWN0IGl0IGludG8gdGhlIGFwcHJvcHJpYXRlIHBhZ2VzLgorICAgICAgICBJZiB3
ZSdyZSBpbmplY3RpbmcgaW50byB0aGUgdG9wIGZyYW1lIG9ubHksIHRoZXJlJ3Mgbm8gbmVlZCB0
byB0cmF2ZXJzZSB0aGUgZnJhbWUgdHJlZS4KKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRl
bnRDb250cm9sbGVyOjphZGRVc2VyU2NyaXB0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1VzZXJD
b250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
VXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9j
cHVMaW1pdCk6CisKIDIwMTgtMDctMTEgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+
CiAKICAgICAgICAgRGlzYWJsZSBhbGwgbmV0d29yayBjYWNoaW5nIGZvciBITFMgc3RyZWFtcy4K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUdyb3VwLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VHcm91cC5jcHAJ
KHJldmlzaW9uIDIzMzczOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZUdyb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsOSArMzEsMTEgQEAKICNpbmNsdWRlICJB
UElVc2VyQ29udGVudFdvcmxkLmgiCiAjaW5jbHVkZSAiQVBJVXNlclNjcmlwdC5oIgogI2luY2x1
ZGUgIkFQSVVzZXJTdHlsZVNoZWV0LmgiCisjaW5jbHVkZSAiQWRkVXNlclNjcmlwdEltbWVkaWF0
ZWx5LmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV2ViUGFnZUdyb3VwLmgi
CiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKKyNpbmNsdWRlICJXZWJVc2VyQ29udGVudENv
bnRyb2xsZXIuaCIKICNpbmNsdWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oIgog
CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwpAQCAtOTgsNyArMTAwLDcgQEAgdm9pZCBXS1BhZ2VH
cm91cEFkZFVzZXJTY3JpcHQoV0tQYWdlR3JvdQogICAgIAogICAgIGF1dG8gdXJsID0gYmFzZVVS
TFN0cmluZy5pc0VtcHR5KCkgPyBXZWJDb3JlOjpibGFua1VSTCgpIDogV2ViQ29yZTo6VVJMKFdl
YkNvcmU6OlVSTCgpLCBiYXNlVVJMU3RyaW5nKTsKICAgICBSZWY8QVBJOjpVc2VyU2NyaXB0PiB1
c2VyU2NyaXB0ID0gQVBJOjpVc2VyU2NyaXB0OjpjcmVhdGUoV2ViQ29yZTo6VXNlclNjcmlwdCB7
IFdURk1vdmUoc291cmNlKSwgV1RGTW92ZSh1cmwpLCB3aGl0ZWxpc3QgPyB3aGl0ZWxpc3QtPnRv
U3RyaW5nVmVjdG9yKCkgOiBWZWN0b3I8U3RyaW5nPigpLCBibGFja2xpc3QgPyBibGFja2xpc3Qt
PnRvU3RyaW5nVmVjdG9yKCkgOiBWZWN0b3I8U3RyaW5nPigpLCB0b1VzZXJTY3JpcHRJbmplY3Rp
b25UaW1lKGluamVjdGlvblRpbWUpLCB0b1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMoaW5qZWN0
ZWRGcmFtZXMpIH0sIEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGQoKSk7Ci0gICAg
dG9JbXBsKHBhZ2VHcm91cFJlZiktPnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTY3Jp
cHQodXNlclNjcmlwdC5nZXQoKSk7CisgICAgdG9JbXBsKHBhZ2VHcm91cFJlZiktPnVzZXJDb250
ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTY3JpcHQodXNlclNjcmlwdC5nZXQoKSwgQWRkVXNlclNj
cmlwdEltbWVkaWF0ZWx5OjpObyk7CiB9CiAKIHZvaWQgV0tQYWdlR3JvdXBSZW1vdmVBbGxVc2Vy
U2NyaXB0cyhXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1VzZXJDb250ZW50Q29udHJvbGxlclJlZi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tVc2VyQ29udGVudENvbnRyb2xs
ZXJSZWYuY3BwCShyZXZpc2lvbiAyMzM3MzkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS1VzZXJDb250ZW50Q29udHJvbGxlclJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5
LDYgKzI5LDcgQEAKICNpbmNsdWRlICJBUElBcnJheS5oIgogI2luY2x1ZGUgIkFQSUNvbnRlbnRS
dWxlTGlzdC5oIgogI2luY2x1ZGUgIkFQSVVzZXJTY3JpcHQuaCIKKyNpbmNsdWRlICJBZGRVc2Vy
U2NyaXB0SW1tZWRpYXRlbHkuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oIgogCkBAIC01Miw3ICs1Myw3IEBAIFdLQXJy
YXlSZWYgV0tVc2VyQ29udGVudENvbnRyb2xsZXJDb3B5VXMKIAogdm9pZCBXS1VzZXJDb250ZW50
Q29udHJvbGxlckFkZFVzZXJTY3JpcHQoV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWYgdXNlckNv
bnRlbnRDb250cm9sbGVyUmVmLCBXS1VzZXJTY3JpcHRSZWYgdXNlclNjcmlwdFJlZikKIHsKLSAg
ICB0b0ltcGwodXNlckNvbnRlbnRDb250cm9sbGVyUmVmKS0+YWRkVXNlclNjcmlwdCgqdG9JbXBs
KHVzZXJTY3JpcHRSZWYpKTsKKyAgICB0b0ltcGwodXNlckNvbnRlbnRDb250cm9sbGVyUmVmKS0+
YWRkVXNlclNjcmlwdCgqdG9JbXBsKHVzZXJTY3JpcHRSZWYpLCBBZGRVc2VyU2NyaXB0SW1tZWRp
YXRlbHk6Ok5vKTsKIH0KIAogdm9pZCBXS1VzZXJDb250ZW50Q29udHJvbGxlclJlbW92ZUFsbFVz
ZXJTY3JpcHRzKFdLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmIHVzZXJDb250ZW50Q29udHJvbGxl
clJlZikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250
ZW50Q29udHJvbGxlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW0JKHJldmlzaW9uIDIzMzczOSkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxl
ci5tbQkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogCiAjaW1wb3J0ICJBUElTZXJp
YWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbXBvcnQgIkFQSVVzZXJDb250ZW50V29ybGQuaCIKKyNp
bXBvcnQgIkFkZFVzZXJTY3JpcHRJbW1lZGlhdGVseS5oIgogI2ltcG9ydCAiV0tDb250ZW50UnVs
ZUxpc3RJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tGcmFtZUluZm9JbnRlcm5hbC5oIgogI2ltcG9y
dCAiV0tOU0FycmF5LmgiCkBAIC04OSw3ICs5MCw3IEBAIC0gKE5TQXJyYXkgKil1c2VyU2NyaXB0
cwogCiAtICh2b2lkKWFkZFVzZXJTY3JpcHQ6KFdLVXNlclNjcmlwdCAqKXVzZXJTY3JpcHQKIHsK
LSAgICBfdXNlckNvbnRlbnRDb250cm9sbGVyUHJveHktPmFkZFVzZXJTY3JpcHQoKnVzZXJTY3Jp
cHQtPl91c2VyU2NyaXB0KTsKKyAgICBfdXNlckNvbnRlbnRDb250cm9sbGVyUHJveHktPmFkZFVz
ZXJTY3JpcHQoKnVzZXJTY3JpcHQtPl91c2VyU2NyaXB0LCBXZWJLaXQ6OkFkZFVzZXJTY3JpcHRJ
bW1lZGlhdGVseTo6Tm8pOwogfQogCiAtICh2b2lkKXJlbW92ZUFsbFVzZXJTY3JpcHRzCkBAIC0x
NzcsNiArMTc4LDExIEBAIC0gKHZvaWQpX3JlbW92ZUFsbFVzZXJTY3JpcHRzQXNzb2NpYXRlZFcK
ICAgICBfdXNlckNvbnRlbnRDb250cm9sbGVyUHJveHktPnJlbW92ZUFsbFVzZXJTY3JpcHRzKCp1
c2VyQ29udGVudFdvcmxkLT5fdXNlckNvbnRlbnRXb3JsZCk7CiB9CiAKKy0gKHZvaWQpX2FkZFVz
ZXJTY3JpcHRJbW1lZGlhdGVseTooV0tVc2VyU2NyaXB0ICopdXNlclNjcmlwdAoreworICAgIF91
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS0+YWRkVXNlclNjcmlwdCgqdXNlclNjcmlwdC0+X3Vz
ZXJTY3JpcHQsIFdlYktpdDo6QWRkVXNlclNjcmlwdEltbWVkaWF0ZWx5OjpZZXMpOworfQorCiAt
ICh2b2lkKV9hZGRVc2VyQ29udGVudEZpbHRlcjooX1dLVXNlckNvbnRlbnRGaWx0ZXIgKil1c2Vy
Q29udGVudEZpbHRlcgogewogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXJQ
cml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLVXNlckNvbnRlbnRDb250cm9sbGVyUHJpdmF0ZS5oCShyZXZpc2lvbiAyMzM3MzkpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXJQ
cml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDggQEAKIC0gKHZvaWQpX3JlbW92
ZVVzZXJTY3JpcHQ6KFdLVXNlclNjcmlwdCAqKXVzZXJTY3JpcHQgV0tfQVBJX0FWQUlMQUJMRSht
YWNvc3goMTAuMTIpLCBpb3MoMTAuMCkpOwogLSAodm9pZClfcmVtb3ZlQWxsVXNlclNjcmlwdHNB
c3NvY2lhdGVkV2l0aFVzZXJDb250ZW50V29ybGQ6KF9XS1VzZXJDb250ZW50V29ybGQgKil1c2Vy
Q29udGVudFdvcmxkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEyKSwgaW9zKDEwLjApKTsK
IAorLSAodm9pZClfYWRkVXNlclNjcmlwdEltbWVkaWF0ZWx5OihXS1VzZXJTY3JpcHQgKil1c2Vy
U2NyaXB0IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RC
QSkpOworCiAtICh2b2lkKV9hZGRVc2VyQ29udGVudEZpbHRlcjooX1dLVXNlckNvbnRlbnRGaWx0
ZXIgKil1c2VyQ29udGVudEZpbHRlciBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMSksIGlv
cyg5LjApKTsKIC0gKHZvaWQpX3JlbW92ZVVzZXJDb250ZW50RmlsdGVyOihOU1N0cmluZyAqKXVz
ZXJDb250ZW50RmlsdGVyTmFtZSBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMSksIGlvcyg5
LjApKTsKIC0gKHZvaWQpX3JlbW92ZUFsbFVzZXJDb250ZW50RmlsdGVycyBXS19BUElfQVZBSUxB
QkxFKG1hY29zeCgxMC4xMSksIGlvcyg5LjApKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2Vy
LmNwcAkocmV2aXNpb24gMjMzNzM5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYzLDcg
KzE2Myw3IEBAIHZvaWQgd2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX2FkZF9zY3IKIHsKICAg
ICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19VU0VSX0NPTlRFTlRfTUFOQUdFUihtYW5hZ2Vy
KSk7CiAgICAgZ19yZXR1cm5faWZfZmFpbChzY3JpcHQpOwotICAgIG1hbmFnZXItPnByaXYtPnVz
ZXJDb250ZW50Q29udHJvbGxlci0+YWRkVXNlclNjcmlwdCh3ZWJraXRVc2VyU2NyaXB0R2V0VXNl
clNjcmlwdChzY3JpcHQpKTsKKyAgICBtYW5hZ2VyLT5wcml2LT51c2VyQ29udGVudENvbnRyb2xs
ZXItPmFkZFVzZXJTY3JpcHQod2Via2l0VXNlclNjcmlwdEdldFVzZXJTY3JpcHQoc2NyaXB0KSwg
QWRkVXNlclNjcmlwdEltbWVkaWF0ZWx5OjpObyk7CiB9CiAKIC8qKgpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHku
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcAkocmV2aXNpb24gMjMzNzM5KQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQVBJ
VXNlckNvbnRlbnRXb3JsZC5oIgogI2luY2x1ZGUgIkFQSVVzZXJTY3JpcHQuaCIKICNpbmNsdWRl
ICJBUElVc2VyU3R5bGVTaGVldC5oIgorI2luY2x1ZGUgIkFkZFVzZXJTY3JpcHRJbW1lZGlhdGVs
eS5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29udGVu
dFJ1bGVMaXN0TWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94
eS5oIgpAQCAtMTY3LDcgKzE2OCw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHk6OnJlbW8KICAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRD
b250cm9sbGVyOjpSZW1vdmVVc2VyQ29udGVudFdvcmxkcyh3b3JsZHNUb1JlbW92ZSksIGlkZW50
aWZpZXIoKS50b1VJbnQ2NCgpKTsKIH0KIAotdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eTo6YWRkVXNlclNjcmlwdChBUEk6OlVzZXJTY3JpcHQmIHVzZXJTY3JpcHQpCit2b2lkIFdl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyU2NyaXB0KEFQSTo6VXNlclNjcmlw
dCYgdXNlclNjcmlwdCwgQWRkVXNlclNjcmlwdEltbWVkaWF0ZWx5IGltbWVkaWF0ZWx5KQogewog
ICAgIFJlZjxBUEk6OlVzZXJDb250ZW50V29ybGQ+IHdvcmxkID0gdXNlclNjcmlwdC51c2VyQ29u
dGVudFdvcmxkKCk7CiAKQEAgLTE3Niw3ICsxNzcsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5OjphZGRVCiAgICAgbV91c2VyU2NyaXB0cy0+ZWxlbWVudHMoKS5hcHBlbmQo
JnVzZXJTY3JpcHQpOwogCiAgICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3By
b2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRD
b250cm9sbGVyOjpBZGRVc2VyU2NyaXB0cyh7IHsgdXNlclNjcmlwdC5pZGVudGlmaWVyKCksIHdv
cmxkLT5pZGVudGlmaWVyKCksIHVzZXJTY3JpcHQudXNlclNjcmlwdCgpIH0gfSksIGlkZW50aWZp
ZXIoKS50b1VJbnQ2NCgpKTsKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyOjpBZGRVc2VyU2NyaXB0cyh7IHsgdXNlclNjcmlwdC5pZGVudGlm
aWVyKCksIHdvcmxkLT5pZGVudGlmaWVyKCksIHVzZXJTY3JpcHQudXNlclNjcmlwdCgpIH0gfSwg
aW1tZWRpYXRlbHkpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CiB9CiAKIHZvaWQgV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJTY3JpcHQoQVBJOjpVc2VyU2NyaXB0
JiB1c2VyU2NyaXB0KQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQv
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5o
CShyZXZpc2lvbiAyMzM3MzkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVu
dC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw2
ICs1OSw3IEBAIGNsYXNzIFdlYlByb2Nlc3NQcm94eTsKIGNsYXNzIFdlYlNjcmlwdE1lc3NhZ2VI
YW5kbGVyOwogc3RydWN0IEZyYW1lSW5mb0RhdGE7CiBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVyczsKK2VudW0gY2xhc3MgQWRkVXNlclNjcmlwdEltbWVkaWF0ZWx5OwogCiBjbGFzcyBX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJ
OjpPYmplY3Q6OlR5cGU6OlVzZXJDb250ZW50Q29udHJvbGxlcj4sIHByaXZhdGUgSVBDOjpNZXNz
YWdlUmVjZWl2ZXIgewogcHVibGljOgpAQCAtNzUsNyArNzYsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCByZW1vdmVQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYpOwogCiAgICAgQVBJOjpBcnJheSYgdXNl
clNjcmlwdHMoKSB7IHJldHVybiBtX3VzZXJTY3JpcHRzLmdldCgpOyB9Ci0gICAgdm9pZCBhZGRV
c2VyU2NyaXB0KEFQSTo6VXNlclNjcmlwdCYpOworICAgIHZvaWQgYWRkVXNlclNjcmlwdChBUEk6
OlVzZXJTY3JpcHQmLCBBZGRVc2VyU2NyaXB0SW1tZWRpYXRlbHkpOwogICAgIHZvaWQgcmVtb3Zl
VXNlclNjcmlwdChBUEk6OlVzZXJTY3JpcHQmKTsKICAgICB2b2lkIHJlbW92ZUFsbFVzZXJTY3Jp
cHRzKEFQSTo6VXNlckNvbnRlbnRXb3JsZCYpOwogICAgIHZvaWQgcmVtb3ZlQWxsVXNlclNjcmlw
dHMoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gMjMzNzM5KQorKysgU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzMxOCw2ICszMzE4LDcgQEAK
IAkJNDEwM0ZCQTIyMDYxQkRCODAwQzJFQUY4IC8qIE5ldHdvcmtMb2FkQ2hlY2tlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBOZXR3b3JrTG9hZENoZWNrZXIuY3Bw
OyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEwNDgyQ0IxREREMkZCNTAwRjAwNkQwIC8qIFJUQ05ldHdv
cmsuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUlRDTmV0d29yay5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMDQ4MkNDMURERDJGQjUwMEYwMDZE
MCAvKiBSVENOZXR3b3JrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ05l
dHdvcmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDExMTQzNjMyMEY2NzdCMTAw
MjZGOTEyIC8qIEFkZFVzZXJTY3JpcHRJbW1lZGlhdGVseS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBBZGRVc2VyU2NyaXB0SW1tZWRpYXRlbHkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDExMkI1NDcxRjlGRDNBQjAwRTY3ODc1IC8qIE5ldHdvcmtSVENSZXNv
bHZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBOZXR3b3JrUlRD
UmVzb2x2ZXIuY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNv
bHZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTJCNTQ3MUY5RkQzQUIw
MEU2Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHA7IHBhdGggPSBO
ZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MTEyQjU0ODFGOUZEM0FDMDBFNjc4NzUgLyogTmV0d29y
a1JUQ1Jlc29sdmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtS
VENSZXNvbHZlci5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNv
bHZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTQ2Nyw2ICs1NDY4LDcgQEAK
IAkJMUFBRjA4QUExOTI2OTMwQjAwQjYzOTBDIC8qIFVzZXJDb250ZW50ICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0MTExNDM2MzIwRjY3N0IxMDAyNkY5
MTIgLyogQWRkVXNlclNjcmlwdEltbWVkaWF0ZWx5LmggKi8sCiAJCQkJMUFBRjA4QUIxOTI2OTM2
NzAwQjYzOTBDIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAgKi8sCiAJCQkJMUFBRjA4
QUMxOTI2OTM2NzAwQjYzOTBDIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlci5oICovLAogCQkJ
CTFBQUYwOEI0MTkyNjlFMjQwMEI2MzkwQyAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXIubWVz
c2FnZXMuaW4gKi8sCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQv
QWRkVXNlclNjcmlwdEltbWVkaWF0ZWx5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1VzZXJDb250ZW50L0FkZFVzZXJTY3JpcHRJbW1lZGlhdGVseS5oCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9BZGRVc2VyU2Ny
aXB0SW1tZWRpYXRlbHkuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKyAgICAKK2Vu
dW0gY2xhc3MgQWRkVXNlclNjcmlwdEltbWVkaWF0ZWx5IHsgTm8sIFllcyB9OworICAgIAorfQor
CituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJLaXQ6
OkFkZFVzZXJTY3JpcHRJbW1lZGlhdGVseT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1
ZXM8CisgICAgV2ViS2l0OjpBZGRVc2VyU2NyaXB0SW1tZWRpYXRlbHksCisgICAgV2ViS2l0OjpB
ZGRVc2VyU2NyaXB0SW1tZWRpYXRlbHk6Ok5vLAorICAgIFdlYktpdDo6QWRkVXNlclNjcmlwdElt
bWVkaWF0ZWx5OjpZZXMKKyAgICA+OworfTsKKworfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50
Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDIzMzczOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyLmgiCiAKKyNpbmNsdWRlICJBZGRVc2VyU2NyaXB0SW1tZWRp
YXRlbHkuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRnJhbWVJbmZv
RGF0YS5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQuaCIKQEAgLTM2LDYg
KzM3LDcgQEAKICNpbmNsdWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJNZXNzYWdlcy5oIgog
I2luY2x1ZGUgIldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5TWVzc2FnZXMuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL0RPTVdyYXBwZXJXb3JsZC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyU3R5
bGVTaGVldC5oPgpAQCAtMTIyLDcgKzEyNCw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyOjpyZW1vdmVVc2UKICAgICB9CiB9CiAKLXZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
OjphZGRVc2VyU2NyaXB0cyhjb25zdCBWZWN0b3I8V2ViVXNlclNjcmlwdERhdGE+JiB1c2VyU2Ny
aXB0cykKK3ZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyU2NyaXB0cyhWZWN0
b3I8V2ViVXNlclNjcmlwdERhdGE+JiYgdXNlclNjcmlwdHMsIEFkZFVzZXJTY3JpcHRJbW1lZGlh
dGVseSBpbW1lZGlhdGVseSkKIHsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHVzZXJTY3JpcHREYXRh
IDogdXNlclNjcmlwdHMpIHsKICAgICAgICAgYXV0byBpdCA9IHdvcmxkTWFwKCkuZmluZCh1c2Vy
U2NyaXB0RGF0YS53b3JsZElkZW50aWZpZXIpOwpAQCAtMTMyLDcgKzEzNCw3IEBAIHZvaWQgV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyU2MKICAgICAgICAgfQogCiAgICAgICAgIFVz
ZXJTY3JpcHQgc2NyaXB0ID0gdXNlclNjcmlwdERhdGEudXNlclNjcmlwdDsKLSAgICAgICAgYWRk
VXNlclNjcmlwdEludGVybmFsKCppdC0+dmFsdWUuZmlyc3QsIHVzZXJTY3JpcHREYXRhLmlkZW50
aWZpZXIsIFdURk1vdmUoc2NyaXB0KSk7CisgICAgICAgIGFkZFVzZXJTY3JpcHRJbnRlcm5hbCgq
aXQtPnZhbHVlLmZpcnN0LCB1c2VyU2NyaXB0RGF0YS5pZGVudGlmaWVyLCBXVEZNb3ZlKHNjcmlw
dCksIGltbWVkaWF0ZWx5KTsKICAgICB9CiB9CiAKQEAgLTM2MCwxNSArMzYyLDMxIEBAIHZvaWQg
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVBbGwKIH0KICNlbmRpZgogCi12b2lkIFdl
YlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRkVXNlclNjcmlwdEludGVybmFsKEluamVjdGVkQnVu
ZGxlU2NyaXB0V29ybGQmIHdvcmxkLCB1aW50NjRfdCB1c2VyU2NyaXB0SWRlbnRpZmllciwgVXNl
clNjcmlwdCYmIHVzZXJTY3JpcHQpCit2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRk
VXNlclNjcmlwdEludGVybmFsKEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQmIHdvcmxkLCB1aW50
NjRfdCB1c2VyU2NyaXB0SWRlbnRpZmllciwgVXNlclNjcmlwdCYmIHVzZXJTY3JpcHQsIEFkZFVz
ZXJTY3JpcHRJbW1lZGlhdGVseSBpbW1lZGlhdGVseSkKIHsKKyAgICBpZiAoaW1tZWRpYXRlbHkg
PT0gQWRkVXNlclNjcmlwdEltbWVkaWF0ZWx5OjpZZXMpIHsKKyAgICAgICAgUGFnZTo6Zm9yRWFj
aFBhZ2UoWyZdIChQYWdlJiBwYWdlKSB7CisgICAgICAgICAgICBpZiAoJnBhZ2UudXNlckNvbnRl
bnRQcm92aWRlcigpICE9IHRoaXMpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
ICAgICBhdXRvJiBtYWluRnJhbWUgPSBwYWdlLm1haW5GcmFtZSgpOworICAgICAgICAgICAgaWYg
KHVzZXJTY3JpcHQuaW5qZWN0ZWRGcmFtZXMoKSA9PSBJbmplY3RJblRvcEZyYW1lT25seSkgewor
ICAgICAgICAgICAgICAgIG1haW5GcmFtZS5pbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkod29y
bGQuY29yZVdvcmxkKCksIHVzZXJTY3JpcHQpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbWFpbkZyYW1l
OyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgmbWFpbkZyYW1lKSkK
KyAgICAgICAgICAgICAgICBmcmFtZS0+aW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KHdvcmxk
LmNvcmVXb3JsZCgpLCB1c2VyU2NyaXB0KTsKKyAgICAgICAgfSk7CisgICAgfQorCiAgICAgYXV0
byYgc2NyaXB0c0luV29ybGQgPSBtX3VzZXJTY3JpcHRzLmVuc3VyZSgmd29ybGQsIFtdIHsgcmV0
dXJuIFZlY3RvcjxzdGQ6OnBhaXI8dWludDY0X3QsIFdlYkNvcmU6OlVzZXJTY3JpcHQ+PigpOyB9
KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgc2NyaXB0c0luV29ybGQuYXBwZW5kKHN0ZDo6bWFrZV9w
YWlyKHVzZXJTY3JpcHRJZGVudGlmaWVyLCBXVEZNb3ZlKHVzZXJTY3JpcHQpKSk7CiB9CiAKIHZv
aWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyU2NyaXB0KEluamVjdGVkQnVuZGxl
U2NyaXB0V29ybGQmIHdvcmxkLCBVc2VyU2NyaXB0JiYgdXNlclNjcmlwdCkKIHsKLSAgICBhZGRV
c2VyU2NyaXB0SW50ZXJuYWwod29ybGQsIDAsIFdURk1vdmUodXNlclNjcmlwdCkpOworICAgIGFk
ZFVzZXJTY3JpcHRJbnRlcm5hbCh3b3JsZCwgMCwgV1RGTW92ZSh1c2VyU2NyaXB0KSwgQWRkVXNl
clNjcmlwdEltbWVkaWF0ZWx5OjpObyk7CiB9CiAKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyOjpyZW1vdmVVc2VyU2NyaXB0V2l0aFVSTChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiB3
b3JsZCwgY29uc3QgVVJMJiB1cmwpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNl
ckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5o
CShyZXZpc2lvbiAyMzM3MzkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRl
bnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3
LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxk
OwogY2xhc3MgV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhOwogY2xhc3MgV2ViVXNlck1l
c3NhZ2VIYW5kbGVyRGVzY3JpcHRvclByb3h5OworZW51bSBjbGFzcyBBZGRVc2VyU2NyaXB0SW1t
ZWRpYXRlbHk7CiAKIGNsYXNzIFdlYlVzZXJDb250ZW50Q29udHJvbGxlciBmaW5hbCA6IHB1Ymxp
YyBXZWJDb3JlOjpVc2VyQ29udGVudFByb3ZpZGVyLCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2Vp
dmVyIHsKIHB1YmxpYzoKQEAgLTY0LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3Zl
QWxsVXNlckNvbnRlbnQoKTsKIAogICAgIHZvaWQgYWRkVXNlckNvbnRlbnRXb3JsZHMoY29uc3Qg
VmVjdG9yPHN0ZDo6cGFpcjx1aW50NjRfdCwgU3RyaW5nPj4mKTsKLSAgICB2b2lkIGFkZFVzZXJT
Y3JpcHRzKGNvbnN0IFZlY3RvcjxXZWJVc2VyU2NyaXB0RGF0YT4mKTsKKyAgICB2b2lkIGFkZFVz
ZXJTY3JpcHRzKFZlY3RvcjxXZWJVc2VyU2NyaXB0RGF0YT4mJiwgQWRkVXNlclNjcmlwdEltbWVk
aWF0ZWx5KTsKICAgICB2b2lkIGFkZFVzZXJTdHlsZVNoZWV0cyhjb25zdCBWZWN0b3I8V2ViVXNl
clN0eWxlU2hlZXREYXRhPiYpOwogICAgIHZvaWQgYWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVy
cyhjb25zdCBWZWN0b3I8V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXJEYXRhPiYpOwogI2lmIEVOQUJM
RShDT05URU5UX0VYVEVOU0lPTlMpCkBAIC0xMDMsNyArMTA0LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHJlbW92ZUFsbENvbnRlbnRSdWxlTGlzdHMoKTsKICNlbmRpZgogCi0gICAgdm9pZCBhZGRV
c2VyU2NyaXB0SW50ZXJuYWwoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYsIHVpbnQ2NF90IHVz
ZXJTY3JpcHRJZGVudGlmaWVyLCBXZWJDb3JlOjpVc2VyU2NyaXB0JiYpOworICAgIHZvaWQgYWRk
VXNlclNjcmlwdEludGVybmFsKEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQmLCB1aW50NjRfdCB1
c2VyU2NyaXB0SWRlbnRpZmllciwgV2ViQ29yZTo6VXNlclNjcmlwdCYmLCBBZGRVc2VyU2NyaXB0
SW1tZWRpYXRlbHkpOwogICAgIHZvaWQgcmVtb3ZlVXNlclNjcmlwdEludGVybmFsKEluamVjdGVk
QnVuZGxlU2NyaXB0V29ybGQmLCB1aW50NjRfdCB1c2VyU2NyaXB0SWRlbnRpZmllcik7CiAgICAg
dm9pZCBhZGRVc2VyU3R5bGVTaGVldEludGVybmFsKEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQm
LCB1aW50NjRfdCB1c2VyU3R5bGVTaGVldElkZW50aWZpZXIsIFdlYkNvcmU6OlVzZXJTdHlsZVNo
ZWV0JiYpOwogICAgIHZvaWQgcmVtb3ZlVXNlclN0eWxlU2hlZXRJbnRlcm5hbChJbmplY3RlZEJ1
bmRsZVNjcmlwdFdvcmxkJiwgdWludDY0X3QgdXNlclN0eWxlU2hlZXRJZGVudGlmaWVyKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENv
bnRyb2xsZXIubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5tZXNzYWdlcy5pbgkocmV2
aXNpb24gMjMzNzM5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dl
YlVzZXJDb250ZW50Q29udHJvbGxlci5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjcs
NyArMjcsNyBAQCBtZXNzYWdlcyAtPiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXIgewogICAgIEFk
ZFVzZXJDb250ZW50V29ybGRzKFZlY3RvcjxzdGQ6OnBhaXI8dWludDY0X3QsIFN0cmluZz4+IHdv
cmxkcyk7CiAgICAgUmVtb3ZlVXNlckNvbnRlbnRXb3JsZHMoVmVjdG9yPHVpbnQ2NF90PiB3b3Js
ZElkZW50aWZpZXJzKTsKIAotICAgIEFkZFVzZXJTY3JpcHRzKFZlY3RvcjxzdHJ1Y3QgV2ViS2l0
OjpXZWJVc2VyU2NyaXB0RGF0YT4gdXNlclNjcmlwdHMpOworICAgIEFkZFVzZXJTY3JpcHRzKFZl
Y3RvcjxzdHJ1Y3QgV2ViS2l0OjpXZWJVc2VyU2NyaXB0RGF0YT4gdXNlclNjcmlwdHMsIGVudW0g
V2ViS2l0OjpBZGRVc2VyU2NyaXB0SW1tZWRpYXRlbHkgaW1tZWRpYXRlbHkpOwogICAgIFJlbW92
ZVVzZXJTY3JpcHQodWludDY0X3Qgd29ybGRJZGVudGlmaWVyLCB1aW50NjRfdCBpZGVudGlmaWVy
KTsKICAgICBSZW1vdmVBbGxVc2VyU2NyaXB0cyhWZWN0b3I8dWludDY0X3Q+IHdvcmxkSWRlbnRp
ZmllcnMpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAkocmV2aXNpb24gMjMzNzM5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2lu
Y2x1ZGUgIkFQSUFycmF5LmgiCiAjaW5jbHVkZSAiQVBJR2VvbWV0cnkuaCIKKyNpbmNsdWRlICJB
ZGRVc2VyU2NyaXB0SW1tZWRpYXRlbHkuaCIKICNpbmNsdWRlICJBc3Npc3RlZE5vZGVJbmZvcm1h
dGlvbi5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEcmFnQ29udHJv
bGxlckFjdGlvbi5oIgpAQCAtNjEyLDcgKzYxMyw3IEBAIFdlYlBhZ2U6OldlYlBhZ2UodWludDY0
X3QgcGFnZUlELCBXZWJQYWcKICAgICAgICAgcmVnaXN0ZXJVUkxTY2hlbWVIYW5kbGVyKGl0ZXJh
dG9yLnZhbHVlLCBpdGVyYXRvci5rZXkpOwogCiAgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXIt
PmFkZFVzZXJDb250ZW50V29ybGRzKHBhcmFtZXRlcnMudXNlckNvbnRlbnRXb3JsZHMpOwotICAg
IG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT5hZGRVc2VyU2NyaXB0cyhwYXJhbWV0ZXJzLnVzZXJT
Y3JpcHRzKTsKKyAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+YWRkVXNlclNjcmlwdHMoV1RG
TW92ZShwYXJhbWV0ZXJzLnVzZXJTY3JpcHRzKSwgQWRkVXNlclNjcmlwdEltbWVkaWF0ZWx5OjpO
byk7CiAgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXItPmFkZFVzZXJTdHlsZVNoZWV0cyhwYXJh
bWV0ZXJzLnVzZXJTdHlsZVNoZWV0cyk7CiAgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXItPmFk
ZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnMocGFyYW1ldGVycy5tZXNzYWdlSGFuZGxlcnMpOwog
I2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzM3MzkpCisrKyBUb29scy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxOC0wNy0xMSAgQWxl
eCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBT
UEkgZm9yIGltbWVkaWF0ZSBpbmplY3Rpb24gb2YgdXNlciBzY3JpcHRzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzMzNDIKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzI5MjAyMjg1PgorCisgICAgICAgIFJldmlld2VkIGJ5IEJyYWR5IEVpZHNvbiBh
bmQgWW91ZW5uIEZhYmxldC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
MkNvY29hL1VzZXJDb250ZW50Q29udHJvbGxlci5tbToKKyAgICAgICAgKHdhaXRGb3JNZXNzYWdl
KToKKyAgICAgICAgKFRFU1QpOgorCiAyMDE4LTA3LTExICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5u
QGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggcmVtYWluaW5nIENyb3NzLU9yaWdpbi1SZXNvdXJj
ZS1Qb2xpY3kgZmFpbHVyZXMsIGlmIGFueQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Vc2VyQ29udGVudENvbnRyb2xsZXIubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Vc2VyQ29udGVudENvbnRyb2xsZXIu
bW0JKHJldmlzaW9uIDIzMzczOSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvVXNlckNvbnRlbnRDb250cm9sbGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICsz
Nyw3IEBACiAjaW1wb3J0IDxXZWJLaXQvX1dLVXNlckNvbnRlbnRXb3JsZC5oPgogI2ltcG9ydCA8
V2ViS2l0L19XS1VzZXJTdHlsZVNoZWV0Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+Cisj
aW1wb3J0IDx3dGYvVmVjdG9yLmg+CiAKICNpZiBXS19BUElfRU5BQkxFRAogCkBAIC01NSw3ICs1
Niw3IEBAIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWQKIEBlbmQKIAog
c3RhdGljIGJvb2wgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlOwotc3RhdGljIFJldGFpblB0cjxXS1Nj
cmlwdE1lc3NhZ2U+IGxhc3RTY3JpcHRNZXNzYWdlOworc3RhdGljIFZlY3RvcjxSZXRhaW5QdHI8
V0tTY3JpcHRNZXNzYWdlPj4gc2NyaXB0TWVzc2FnZXM7CiAKIEBpbnRlcmZhY2UgU2NyaXB0TWVz
c2FnZUhhbmRsZXIgOiBOU09iamVjdCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4KIEBlbmQKQEAg
LTY1LDcgKzY2LDcgQEAgQGludGVyZmFjZSBTY3JpcHRNZXNzYWdlSGFuZGxlciA6IE5TT2JqZQog
LSAodm9pZCl1c2VyQ29udGVudENvbnRyb2xsZXI6KFdLVXNlckNvbnRlbnRDb250cm9sbGVyICop
dXNlckNvbnRlbnRDb250cm9sbGVyIGRpZFJlY2VpdmVTY3JpcHRNZXNzYWdlOihXS1NjcmlwdE1l
c3NhZ2UgKiltZXNzYWdlCiB7CiAgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gdHJ1ZTsKLSAg
ICBsYXN0U2NyaXB0TWVzc2FnZSA9IG1lc3NhZ2U7CisgICAgc2NyaXB0TWVzc2FnZXMuYXBwZW5k
KG1lc3NhZ2UpOwogfQogCiBAZW5kCkBAIC04OCw3ICs4OSw3IEBAIFRFU1QoV0tVc2VyQ29udGVu
dENvbnRyb2xsZXIsIFNjcmlwdE1lc3MKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJl
Y2VpdmVkU2NyaXB0TWVzc2FnZSk7CiAgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7
CiAKLSAgICBFWFBFQ1RfV0tfU1RSRVEoQCJIZWxsbyIsIChOU1N0cmluZyAqKVtsYXN0U2NyaXB0
TWVzc2FnZSBib2R5XSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKEAiSGVsbG8iLCAoTlNTdHJpbmcg
Kilbc2NyaXB0TWVzc2FnZXNbMF0gYm9keV0pOwogfQogCiBURVNUKFdLVXNlckNvbnRlbnRDb250
cm9sbGVyLCBTY3JpcHRNZXNzYWdlSGFuZGxlckJhc2ljUG9zdElzb2xhdGVkV29ybGQpCkBAIC0x
MTUsNyArMTE2LDcgQEAgVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgU2NyaXB0TWVzcwog
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKICAg
ICByZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsKIAotICAgIEVYUEVDVF9XS19TVFJFUShA
IkhlbGxvIiwgKE5TU3RyaW5nICopW2xhc3RTY3JpcHRNZXNzYWdlIGJvZHldKTsKKyAgICBFWFBF
Q1RfV0tfU1RSRVEoQCJIZWxsbyIsIChOU1N0cmluZyAqKVtzY3JpcHRNZXNzYWdlc1swXSBib2R5
XSk7CiAKICAgICBpZiAoIWlzRG9uZVdpdGhOYXZpZ2F0aW9uKQogICAgICAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmlzRG9uZVdpdGhOYXZpZ2F0aW9uKTsKQEAgLTE2Niw3ICsxNjcsNyBA
QCBURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBTY3JpcHRNZXNzCiAgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOwogICAgIHJlY2VpdmVkU2Ny
aXB0TWVzc2FnZSA9IGZhbHNlOwogCi0gICAgRVhQRUNUX1dLX1NUUkVRKEAiUEFTUyIsIChOU1N0
cmluZyAqKVtsYXN0U2NyaXB0TWVzc2FnZSBib2R5XSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKEAi
UEFTUyIsIChOU1N0cmluZyAqKVtzY3JpcHRNZXNzYWdlc1swXSBib2R5XSk7CiAKICAgICBbdXNl
ckNvbnRlbnRDb250cm9sbGVyIHJlbW92ZVNjcmlwdE1lc3NhZ2VIYW5kbGVyRm9yTmFtZTpAImhh
bmRsZXJUb1JlbW92ZSJdOwogCkBAIC0xODEsNyArMTgyLDcgQEAgVEVTVChXS1VzZXJDb250ZW50
Q29udHJvbGxlciwgU2NyaXB0TWVzcwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVj
ZWl2ZWRTY3JpcHRNZXNzYWdlKTsKICAgICByZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsK
IAotICAgIEVYUEVDVF9XS19TVFJFUShAIlBBU1MiLCAoTlNTdHJpbmcgKilbbGFzdFNjcmlwdE1l
c3NhZ2UgYm9keV0pOworICAgIEVYUEVDVF9XS19TVFJFUShAIlBBU1MiLCAoTlNTdHJpbmcgKilb
c2NyaXB0TWVzc2FnZXNbMF0gYm9keV0pOwogfQogCiBURVNUKFdLVXNlckNvbnRlbnRDb250cm9s
bGVyLCBTY3JpcHRNZXNzYWdlSGFuZGxlckNhbGxSZW1vdmVkSGFuZGxlcikKQEAgLTIxNCw3ICsy
MTUsNyBAQCBURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBTY3JpcHRNZXNzCiAgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOwogICAgIHJlY2Vp
dmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOwogCi0gICAgRVhQRUNUX1dLX1NUUkVRKEAiUEFTUyIs
IChOU1N0cmluZyAqKVtsYXN0U2NyaXB0TWVzc2FnZSBib2R5XSk7CisgICAgRVhQRUNUX1dLX1NU
UkVRKEAiUEFTUyIsIChOU1N0cmluZyAqKVtzY3JpcHRNZXNzYWdlc1swXSBib2R5XSk7CiB9CiAK
IHN0YXRpYyBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3Rm9yU2NyaXB0TWVzc2FnZUhhbmRs
ZXJNdWx0aXBsZUhhbmRsZXJSZW1vdmFsVGVzdChXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25m
aWd1cmF0aW9uKQpAQCAtMjU1LDcgKzI1Niw3IEBAIFRFU1QoV0tVc2VyQ29udGVudENvbnRyb2xs
ZXIsIFNjcmlwdE1lc3MKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2Ny
aXB0TWVzc2FnZSk7CiAgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7CiAKLSAgICBF
WFBFQ1RfV0tfU1RSRVEoQCJQQVNTIiwgKE5TU3RyaW5nICopW2xhc3RTY3JpcHRNZXNzYWdlIGJv
ZHldKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoQCJQQVNTIiwgKE5TU3RyaW5nICopW3NjcmlwdE1l
c3NhZ2VzWzBdIGJvZHldKTsKIH0KIAogI2lmICFQTEFURk9STShJT1MpIC8vIEZJWE1FOiBoYW5n
cyBpbiB0aGUgaU9TIHNpbXVsYXRvcgpAQCAtMjc1LDEwICsyNzYsOSBAQCBURVNUKFdLVXNlckNv
bnRlbnRDb250cm9sbGVyLCBTY3JpcHRNZXNzCiAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CiAKLSAgICBFWFBFQ1RfV0tfU1RSRVEoQCJGaXJz
dCBNZXNzYWdlIiwgKE5TU3RyaW5nICopW2xhc3RTY3JpcHRNZXNzYWdlIGJvZHldKTsKKyAgICBF
WFBFQ1RfV0tfU1RSRVEoQCJGaXJzdCBNZXNzYWdlIiwgKE5TU3RyaW5nICopW3NjcmlwdE1lc3Nh
Z2VzWzBdIGJvZHldKTsKICAgICAKICAgICByZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsK
LSAgICBsYXN0U2NyaXB0TWVzc2FnZSA9IG51bGxwdHI7CiAKICAgICBbd2ViVmlldyBsb2FkUmVx
dWVzdDpyZXF1ZXN0XTsKICAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdh
dGlvbl07CkBAIC0yODcsNyArMjg3LDcgQEAgVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwg
U2NyaXB0TWVzcwogCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlw
dE1lc3NhZ2UpOwogCi0gICAgRVhQRUNUX1dLX1NUUkVRKEAiU2Vjb25kIE1lc3NhZ2UiLCAoTlNT
dHJpbmcgKilbbGFzdFNjcmlwdE1lc3NhZ2UgYm9keV0pOyAgICAKKyAgICBFWFBFQ1RfV0tfU1RS
RVEoQCJTZWNvbmQgTWVzc2FnZSIsIChOU1N0cmluZyAqKVtzY3JpcHRNZXNzYWdlc1sxXSBib2R5
XSk7CiB9CiAjZW5kaWYKIApAQCAtMzExLDcgKzMxMSw3IEBAIFRFU1QoV0tVc2VyQ29udGVudENv
bnRyb2xsZXIsIFNjcmlwdE1lc3MKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2Vp
dmVkU2NyaXB0TWVzc2FnZSk7CiAgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7CiAK
LSAgICBFWFBFQ1RfV0tfU1RSRVEoQCJQQVNTMSIsIChOU1N0cmluZyAqKVtsYXN0U2NyaXB0TWVz
c2FnZSBib2R5XSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKEAiUEFTUzEiLCAoTlNTdHJpbmcgKilb
c2NyaXB0TWVzc2FnZXNbMF0gYm9keV0pOwogCiAgICAgW3VzZXJDb250ZW50Q29udHJvbGxlciBy
ZW1vdmVTY3JpcHRNZXNzYWdlSGFuZGxlckZvck5hbWU6QCJoYW5kbGVyVG9SZXBsYWNlIl07CiAg
ICAgW3VzZXJDb250ZW50Q29udHJvbGxlciBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVy
LmdldCgpIG5hbWU6QCJoYW5kbGVyVG9SZXBsYWNlIl07CkBAIC0zMjIsNyArMzIyLDcgQEAgVEVT
VChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgU2NyaXB0TWVzcwogICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKICAgICByZWNlaXZlZFNjcmlwdE1l
c3NhZ2UgPSBmYWxzZTsKIAotICAgIEVYUEVDVF9XS19TVFJFUShAIlBBU1MyIiwgKE5TU3RyaW5n
ICopW2xhc3RTY3JpcHRNZXNzYWdlIGJvZHldKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoQCJQQVNT
MiIsIChOU1N0cmluZyAqKVtzY3JpcHRNZXNzYWdlc1sxXSBib2R5XSk7CiB9CiAKIHN0YXRpYyBO
U1N0cmluZyAqc3R5bGVTaGVldFNvdXJjZSA9IEAiYm9keSB7IGJhY2tncm91bmQtY29sb3I6IGdy
ZWVuICFpbXBvcnRhbnQ7IH0iOwpAQCAtNTkyLDQgKzU5Miw1MCBAQCBURVNUKFdLVXNlckNvbnRl
bnRDb250cm9sbGVyLCBVc2VyU2NyaXB0CiAgICAgRVhQRUNUX0VRKHVzZXJTY3JpcHRBc3NvY2lh
dGVkV2l0aFdvcmxkMi5nZXQoKSwgW3VzZXJDb250ZW50Q29udHJvbGxlciB1c2VyU2NyaXB0c11b
MV0pOwogfQogCitzdGF0aWMgdm9pZCB3YWl0Rm9yTWVzc2FnZXMoc2l6ZV90IGV4cGVjdGVkQ291
bnQpCit7CisgICAgd2hpbGUgKHNjcmlwdE1lc3NhZ2VzLnNpemUoKSA8IGV4cGVjdGVkQ291bnQp
IHsKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3Nh
Z2UpOworICAgICAgICByZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsKKyAgICB9Cit9CisK
K3N0YXRpYyB2b2lkIGNvbXBhcmVNZXNzYWdlcyhWZWN0b3I8Y29uc3QgY2hhcio+JiYgZXhwZWN0
ZWRNZXNzYWdlcykKK3sKKyAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRNZXNzYWdlcy5zaXplKCksIHNj
cmlwdE1lc3NhZ2VzLnNpemUoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBleHBlY3Rl
ZE1lc3NhZ2VzLnNpemUoKTsgKytpKQorICAgICAgICBFWFBFQ1RfU1RSRVEoW1tzY3JpcHRNZXNz
YWdlc1tpXSBib2R5XSBVVEY4U3RyaW5nXSwgZXhwZWN0ZWRNZXNzYWdlc1tpXSk7Cit9CisKK1RF
U1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIEFkZFVzZXJTY3JpcHRJbW1lZGlhdGVseSkKK3sK
KyAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtbU2NyaXB0TWVzc2FnZUhhbmRsZXIgYWxsb2Nd
IGluaXRdKTsKKyAgICBhdXRvIHN0YXJ0QWxsRnJhbWVzID0gYWRvcHROUyhbW1dLVXNlclNjcmlw
dCBhbGxvY10gaW5pdFdpdGhTb3VyY2U6QCJ3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50
ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgnc3RhcnQgYWxsJykiIGluamVjdGlvblRpbWU6V0tVc2Vy
U2NyaXB0SW5qZWN0aW9uVGltZUF0RG9jdW1lbnRTdGFydCBmb3JNYWluRnJhbWVPbmx5Ok5PXSk7
CisgICAgYXV0byBlbmRNYWluRnJhbWVPbmx5ID0gYWRvcHROUyhbW1dLVXNlclNjcmlwdCBhbGxv
Y10gaW5pdFdpdGhTb3VyY2U6QCJ3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFu
ZGxlci5wb3N0TWVzc2FnZSgnZW5kIG1haW4nKSIgaW5qZWN0aW9uVGltZTpXS1VzZXJTY3JpcHRJ
bmplY3Rpb25UaW1lQXREb2N1bWVudEVuZCBmb3JNYWluRnJhbWVPbmx5OllFU10pOworCisgICAg
YXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxs
b2NdIGluaXRdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBh
ZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdldCgpIG5hbWU6QCJ0ZXN0SGFuZGxlciJd
OworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3Vy
YXRpb24uZ2V0KCldKTsKKworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbU2ltcGxlTmF2
aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlv
bkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKworICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9
IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxG
b3JSZXNvdXJjZTpAInNpbXBsZS1pZnJhbWUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJl
Y3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKKworICAgIGlzRG9uZVdpdGhOYXZp
Z2F0aW9uID0gZmFsc2U7CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CisgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmVXaXRoTmF2aWdhdGlvbik7CisKKyAgICBy
ZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNv
bnRlbnRDb250cm9sbGVyXSBfYWRkVXNlclNjcmlwdEltbWVkaWF0ZWx5OnN0YXJ0QWxsRnJhbWVz
LmdldCgpXTsKKyAgICAvLyBzaW1wbGUtaWZyYW1lLmh0bWwgaGFzIGEgbWFpbiBmcmFtZSBhbmQg
b25lIGlmcmFtZS4KKyAgICB3YWl0Rm9yTWVzc2FnZXMoMik7CisgICAgW1tjb25maWd1cmF0aW9u
IHVzZXJDb250ZW50Q29udHJvbGxlcl0gX2FkZFVzZXJTY3JpcHRJbW1lZGlhdGVseTplbmRNYWlu
RnJhbWVPbmx5LmdldCgpXTsKKyAgICB3YWl0Rm9yTWVzc2FnZXMoMyk7CisgICAgW3dlYlZpZXcg
cmVsb2FkXTsKKyAgICB3YWl0Rm9yTWVzc2FnZXMoNik7CisgICAgY29tcGFyZU1lc3NhZ2VzKHsi
c3RhcnQgYWxsIiwgInN0YXJ0IGFsbCIsICJlbmQgbWFpbiIsICJzdGFydCBhbGwiLCAiZW5kIG1h
aW4iLCAic3RhcnQgYWxsIn0pOworfQorCiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>344795</attachid>
            <date>2018-07-11 17:33:45 -0700</date>
            <delta_ts>2018-07-11 17:47:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173342-20180711173344.patch</filename>
            <type>text/plain</type>
            <size>31415</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzMzczOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDE4LTA3LTExICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSBm
b3IgaW1tZWRpYXRlIGluamVjdGlvbiBvZiB1c2VyIHNjcmlwdHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzM0MgorICAgICAgICA8cmRhcjovL3By
b2JsZW0vMjkyMDIyODU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJhZHkgRWlkc29uLCBZb3Vl
bm4gRmFibGV0LCBhbmQgR2VvZmYgR2FyZW4uCisKKyAgICAgICAgVGhlIG5ldyBTUEkgaXMgV0tV
c2VyQ29udGVudENvbnRyb2xsZXIuX2FkZFVzZXJTY3JpcHRJbW1lZGlhdGVseS4KKyAgICAgICAg
SXQgaXMgY292ZXJlZCBieSBuZXcgQVBJIHRlc3RzLgorCisgICAgICAgICogcGFnZS9GcmFtZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6aW5qZWN0VXNlclNjcmlwdHMpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWU6OmluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseSk6CisgICAgICAg
IE1vdmUgaW5qZWN0aW9uIGZ1bmN0aW9uYWxpdHkgdG8gYWxsb3cgdXMgdG8gY2FsbCBpdCBkaXJl
Y3RseSBmcm9tIHRoZSBuZXcgU1BJLgorICAgICAgICAqIHBhZ2UvRnJhbWUuaDoKKyAgICAgICAg
KiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6Zm9yRWFjaFBhZ2UpOgor
ICAgICAgICAqIHBhZ2UvUGFnZS5oOgorCiAyMDE4LTA3LTExICBZb3Vlbm4gRmFibGV0ICA8eW91
ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggcmVtYWluaW5nIENyb3NzLU9yaWdpbi1SZXNv
dXJjZS1Qb2xpY3kgZmFpbHVyZXMsIGlmIGFueQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAJKHJl
dmlzaW9uIDIzMzczOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03MzUsMjAgKzczNSwyNSBAQCB2b2lkIEZyYW1lOjppbmplY3RVc2VyU2NyaXB0
cyhVc2VyU2NyaXB0CiAgICAgICAgIHJldHVybjsKIAogICAgIG1fcGFnZS0+dXNlckNvbnRlbnRQ
cm92aWRlcigpLmZvckVhY2hVc2VyU2NyaXB0KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIGluamVjdGlvblRpbWVdKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFVz
ZXJTY3JpcHQmIHNjcmlwdCkgewotICAgICAgICBhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRvY3Vt
ZW50KCk7Ci0gICAgICAgIGlmICghZG9jdW1lbnQpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIGlmIChzY3JpcHQuaW5qZWN0ZWRGcmFtZXMoKSA9PSBJbmplY3RJblRvcEZyYW1lT25seSAm
JiBvd25lckVsZW1lbnQoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiAoc2Ny
aXB0LmluamVjdGlvblRpbWUoKSA9PSBpbmplY3Rpb25UaW1lICYmIFVzZXJDb250ZW50VVJMUGF0
dGVybjo6bWF0Y2hlc1BhdHRlcm5zKGRvY3VtZW50LT51cmwoKSwgc2NyaXB0LndoaXRlbGlzdCgp
LCBzY3JpcHQuYmxhY2tsaXN0KCkpKSB7Ci0gICAgICAgICAgICBpZiAobV9wYWdlKQotICAgICAg
ICAgICAgICAgIG1fcGFnZS0+c2V0QXNSdW5uaW5nVXNlclNjcmlwdHMoKTsKLSAgICAgICAgICAg
IG1fc2NyaXB0LT5ldmFsdWF0ZUluV29ybGQoU2NyaXB0U291cmNlQ29kZShzY3JpcHQuc291cmNl
KCksIHNjcmlwdC51cmwoKSksIHdvcmxkKTsKLSAgICAgICAgfQorICAgICAgICBpZiAoc2NyaXB0
LmluamVjdGlvblRpbWUoKSA9PSBpbmplY3Rpb25UaW1lKQorICAgICAgICAgICAgaW5qZWN0VXNl
clNjcmlwdEltbWVkaWF0ZWx5KHdvcmxkLCBzY3JpcHQpOwogICAgIH0pOwogfQogCit2b2lkIEZy
YW1lOjppbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwg
Y29uc3QgVXNlclNjcmlwdCYgc2NyaXB0KQoreworICAgIGF1dG8qIGRvY3VtZW50ID0gdGhpcy0+
ZG9jdW1lbnQoKTsKKyAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1cm47CisgICAgaWYg
KHNjcmlwdC5pbmplY3RlZEZyYW1lcygpID09IEluamVjdEluVG9wRnJhbWVPbmx5ICYmICFpc01h
aW5GcmFtZSgpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKCFVc2VyQ29udGVudFVSTFBhdHRl
cm46Om1hdGNoZXNQYXR0ZXJucyhkb2N1bWVudC0+dXJsKCksIHNjcmlwdC53aGl0ZWxpc3QoKSwg
c2NyaXB0LmJsYWNrbGlzdCgpKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChtX3BhZ2UpCisg
ICAgICAgIG1fcGFnZS0+c2V0QXNSdW5uaW5nVXNlclNjcmlwdHMoKTsKKyAgICBtX3NjcmlwdC0+
ZXZhbHVhdGVJbldvcmxkKFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0LnNvdXJjZSgpLCBzY3JpcHQu
dXJsKCkpLCB3b3JsZCk7Cit9CisKIFJlbmRlclZpZXcqIEZyYW1lOjpjb250ZW50UmVuZGVyZXIo
KSBjb25zdAogewogICAgIHJldHVybiBkb2N1bWVudCgpID8gZG9jdW1lbnQoKS0+cmVuZGVyVmll
dygpIDogbnVsbHB0cjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgJKHJldmlzaW9uIDIzMzczOSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMTc1LDcgKzE3
NSw4IEBAIHB1YmxpYzoKIAogLy8gPT09PT09PT0gQWxsIHB1YmxpYyBmdW5jdGlvbnMgYmVsb3cg
dGhpcyBwb2ludCBhcmUgY2FuZGlkYXRlcyB0byBtb3ZlIG91dCBvZiBGcmFtZSBpbnRvIGFub3Ro
ZXIgY2xhc3MuID09PT09PT09CiAKLSAgICB2b2lkIGluamVjdFVzZXJTY3JpcHRzKFVzZXJTY3Jp
cHRJbmplY3Rpb25UaW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluamVjdFVzZXJTY3Jp
cHRzKFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGlu
amVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseShET01XcmFwcGVyV29ybGQmLCBjb25zdCBVc2VyU2Ny
aXB0Jik7CiAgICAgCiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGxheWVyVHJlZUFzVGV4dChM
YXllclRyZWVGbGFncyA9IDApIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyB0cmFj
a2VkUmVwYWludFJlY3RzQXNUZXh0KCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkocmV2aXNp
b24gMjMzNzM5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTIwMyw3ICsyMDMsNyBAQCBwdWJsaWM6CiAKICAgICBQYWdlR3JvdXAmIGdyb3VwKCk7CiAK
LSAgICBzdGF0aWMgdm9pZCBmb3JFYWNoUGFnZShjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoUGFn
ZSYpPiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGZvckVhY2hQYWdlKGNvbnN0
IFdURjo6RnVuY3Rpb248dm9pZChQYWdlJik+Jik7CiAKICAgICB2b2lkIGluY3JlbWVudFN1YmZy
YW1lQ291bnQoKSB7ICsrbV9zdWJmcmFtZUNvdW50OyB9CiAgICAgdm9pZCBkZWNyZW1lbnRTdWJm
cmFtZUNvdW50KCkgeyBBU1NFUlQobV9zdWJmcmFtZUNvdW50KTsgLS1tX3N1YmZyYW1lQ291bnQ7
IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzM3MzkpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisyMDE4LTA3LTExICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSBm
b3IgaW1tZWRpYXRlIGluamVjdGlvbiBvZiB1c2VyIHNjcmlwdHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzM0MgorICAgICAgICA8cmRhcjovL3By
b2JsZW0vMjkyMDIyODU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJhZHkgRWlkc29uLCBZb3Vl
bm4gRmFibGV0LCBhbmQgR2VvZmYgR2FyZW4uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlR3JvdXAuY3BwOgorICAgICAgICAoV0tQYWdlR3JvdXBBZGRVc2VyU2NyaXB0KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWYuY3BwOgor
ICAgICAgICAoV0tVc2VyQ29udGVudENvbnRyb2xsZXJBZGRVc2VyU2NyaXB0KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyLm1tOgorICAgICAg
ICAoLVtXS1VzZXJDb250ZW50Q29udHJvbGxlciBhZGRVc2VyU2NyaXB0Ol0pOgorICAgICAgICAo
LVtXS1VzZXJDb250ZW50Q29udHJvbGxlciBfYWRkVXNlclNjcmlwdEltbWVkaWF0ZWx5Ol0pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXJQcml2
YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHk6OmFkZFVzZXJTY3JpcHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyQ29udGVu
dC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
VXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyU2NyaXB0cyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRkVXNlclNjcmlwdEludGVybmFsKToK
KyAgICAgICAgSWYgd2UgYXJlIHRvIGluamVjdCB0aGUgc2NyaXB0IGludGVybmFsbHksIGluamVj
dCBpdCBpbnRvIHRoZSBhcHByb3ByaWF0ZSBwYWdlcy4KKyAgICAgICAgSWYgd2UncmUgaW5qZWN0
aW5nIGludG8gdGhlIHRvcCBmcmFtZSBvbmx5LCB0aGVyZSdzIG5vIG5lZWQgdG8gdHJhdmVyc2Ug
dGhlIGZyYW1lIHRyZWUuCisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxl
cjo6YWRkVXNlclNjcmlwdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJV
c2VyQ29udGVudENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1VzZXJDb250ZW50
L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fY3B1TGltaXQpOgor
CiAyMDE4LTA3LTExICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAg
IERpc2FibGUgYWxsIG5ldHdvcmsgY2FjaGluZyBmb3IgSExTIHN0cmVhbXMuCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VHcm91cC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwCShyZXZpc2lvbiAy
MzM3MzkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VHcm91cC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMxLDkgKzMxLDExIEBACiAjaW5jbHVkZSAiQVBJVXNlckNvbnRl
bnRXb3JsZC5oIgogI2luY2x1ZGUgIkFQSVVzZXJTY3JpcHQuaCIKICNpbmNsdWRlICJBUElVc2Vy
U3R5bGVTaGVldC5oIgorI2luY2x1ZGUgIkluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseS5oIgog
I2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldlYlBhZ2VHcm91cC5oIgogI2luY2x1
ZGUgIldlYlByZWZlcmVuY2VzLmgiCisjaW5jbHVkZSAiV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
LmgiCiAjaW5jbHVkZSAiV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaCIKIAogdXNpbmcg
bmFtZXNwYWNlIFdlYktpdDsKQEAgLTk4LDcgKzEwMCw3IEBAIHZvaWQgV0tQYWdlR3JvdXBBZGRV
c2VyU2NyaXB0KFdLUGFnZUdyb3UKICAgICAKICAgICBhdXRvIHVybCA9IGJhc2VVUkxTdHJpbmcu
aXNFbXB0eSgpID8gV2ViQ29yZTo6YmxhbmtVUkwoKSA6IFdlYkNvcmU6OlVSTChXZWJDb3JlOjpV
UkwoKSwgYmFzZVVSTFN0cmluZyk7CiAgICAgUmVmPEFQSTo6VXNlclNjcmlwdD4gdXNlclNjcmlw
dCA9IEFQSTo6VXNlclNjcmlwdDo6Y3JlYXRlKFdlYkNvcmU6OlVzZXJTY3JpcHQgeyBXVEZNb3Zl
KHNvdXJjZSksIFdURk1vdmUodXJsKSwgd2hpdGVsaXN0ID8gd2hpdGVsaXN0LT50b1N0cmluZ1Zl
Y3RvcigpIDogVmVjdG9yPFN0cmluZz4oKSwgYmxhY2tsaXN0ID8gYmxhY2tsaXN0LT50b1N0cmlu
Z1ZlY3RvcigpIDogVmVjdG9yPFN0cmluZz4oKSwgdG9Vc2VyU2NyaXB0SW5qZWN0aW9uVGltZShp
bmplY3Rpb25UaW1lKSwgdG9Vc2VyQ29udGVudEluamVjdGVkRnJhbWVzKGluamVjdGVkRnJhbWVz
KSB9LCBBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpOwotICAgIHRvSW1wbChw
YWdlR3JvdXBSZWYpLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU2NyaXB0KHVzZXJT
Y3JpcHQuZ2V0KCkpOworICAgIHRvSW1wbChwYWdlR3JvdXBSZWYpLT51c2VyQ29udGVudENvbnRy
b2xsZXIoKS5hZGRVc2VyU2NyaXB0KHVzZXJTY3JpcHQuZ2V0KCksIEluamVjdFVzZXJTY3JpcHRJ
bW1lZGlhdGVseTo6Tm8pOwogfQogCiB2b2lkIFdLUGFnZUdyb3VwUmVtb3ZlQWxsVXNlclNjcmlw
dHMoV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmKQpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWYuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLVXNlckNvbnRlbnRDb250cm9sbGVyUmVm
LmNwcAkocmV2aXNpb24gMjMzNzM5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsy
OSw3IEBACiAjaW5jbHVkZSAiQVBJQXJyYXkuaCIKICNpbmNsdWRlICJBUElDb250ZW50UnVsZUxp
c3QuaCIKICNpbmNsdWRlICJBUElVc2VyU2NyaXB0LmgiCisjaW5jbHVkZSAiSW5qZWN0VXNlclNj
cmlwdEltbWVkaWF0ZWx5LmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaCIKIApAQCAtNTIsNyArNTMsNyBAQCBXS0FycmF5
UmVmIFdLVXNlckNvbnRlbnRDb250cm9sbGVyQ29weVVzCiAKIHZvaWQgV0tVc2VyQ29udGVudENv
bnRyb2xsZXJBZGRVc2VyU2NyaXB0KFdLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmIHVzZXJDb250
ZW50Q29udHJvbGxlclJlZiwgV0tVc2VyU2NyaXB0UmVmIHVzZXJTY3JpcHRSZWYpCiB7Ci0gICAg
dG9JbXBsKHVzZXJDb250ZW50Q29udHJvbGxlclJlZiktPmFkZFVzZXJTY3JpcHQoKnRvSW1wbCh1
c2VyU2NyaXB0UmVmKSk7CisgICAgdG9JbXBsKHVzZXJDb250ZW50Q29udHJvbGxlclJlZiktPmFk
ZFVzZXJTY3JpcHQoKnRvSW1wbCh1c2VyU2NyaXB0UmVmKSwgSW5qZWN0VXNlclNjcmlwdEltbWVk
aWF0ZWx5OjpObyk7CiB9CiAKIHZvaWQgV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZW1vdmVBbGxV
c2VyU2NyaXB0cyhXS1VzZXJDb250ZW50Q29udHJvbGxlclJlZiB1c2VyQ29udGVudENvbnRyb2xs
ZXJSZWYpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29u
dGVudENvbnRyb2xsZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyLm1tCShyZXZpc2lvbiAyMzM3MzkpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xs
ZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2ltcG9ydCAiQVBJU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmgiCiAjaW1wb3J0ICJBUElVc2VyQ29udGVudFdvcmxkLmgiCisj
aW1wb3J0ICJJbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkuaCIKICNpbXBvcnQgIldLQ29udGVu
dFJ1bGVMaXN0SW50ZXJuYWwuaCIKICNpbXBvcnQgIldLRnJhbWVJbmZvSW50ZXJuYWwuaCIKICNp
bXBvcnQgIldLTlNBcnJheS5oIgpAQCAtODksNyArOTAsNyBAQCAtIChOU0FycmF5ICopdXNlclNj
cmlwdHMKIAogLSAodm9pZClhZGRVc2VyU2NyaXB0OihXS1VzZXJTY3JpcHQgKil1c2VyU2NyaXB0
CiB7Ci0gICAgX3VzZXJDb250ZW50Q29udHJvbGxlclByb3h5LT5hZGRVc2VyU2NyaXB0KCp1c2Vy
U2NyaXB0LT5fdXNlclNjcmlwdCk7CisgICAgX3VzZXJDb250ZW50Q29udHJvbGxlclByb3h5LT5h
ZGRVc2VyU2NyaXB0KCp1c2VyU2NyaXB0LT5fdXNlclNjcmlwdCwgV2ViS2l0OjpJbmplY3RVc2Vy
U2NyaXB0SW1tZWRpYXRlbHk6Ok5vKTsKIH0KIAogLSAodm9pZClyZW1vdmVBbGxVc2VyU2NyaXB0
cwpAQCAtMTc3LDYgKzE3OCwxMSBAQCAtICh2b2lkKV9yZW1vdmVBbGxVc2VyU2NyaXB0c0Fzc29j
aWF0ZWRXCiAgICAgX3VzZXJDb250ZW50Q29udHJvbGxlclByb3h5LT5yZW1vdmVBbGxVc2VyU2Ny
aXB0cygqdXNlckNvbnRlbnRXb3JsZC0+X3VzZXJDb250ZW50V29ybGQpOwogfQogCistICh2b2lk
KV9hZGRVc2VyU2NyaXB0SW1tZWRpYXRlbHk6KFdLVXNlclNjcmlwdCAqKXVzZXJTY3JpcHQKK3sK
KyAgICBfdXNlckNvbnRlbnRDb250cm9sbGVyUHJveHktPmFkZFVzZXJTY3JpcHQoKnVzZXJTY3Jp
cHQtPl91c2VyU2NyaXB0LCBXZWJLaXQ6OkluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseTo6WWVz
KTsKK30KKwogLSAodm9pZClfYWRkVXNlckNvbnRlbnRGaWx0ZXI6KF9XS1VzZXJDb250ZW50Rmls
dGVyICopdXNlckNvbnRlbnRGaWx0ZXIKIHsKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05T
KQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRD
b250cm9sbGVyUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlclByaXZhdGUuaAkocmV2aXNpb24gMjMz
NzM5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRD
b250cm9sbGVyUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw4IEBACiAtICh2
b2lkKV9yZW1vdmVVc2VyU2NyaXB0OihXS1VzZXJTY3JpcHQgKil1c2VyU2NyaXB0IFdLX0FQSV9B
VkFJTEFCTEUobWFjb3N4KDEwLjEyKSwgaW9zKDEwLjApKTsKIC0gKHZvaWQpX3JlbW92ZUFsbFVz
ZXJTY3JpcHRzQXNzb2NpYXRlZFdpdGhVc2VyQ29udGVudFdvcmxkOihfV0tVc2VyQ29udGVudFdv
cmxkICopdXNlckNvbnRlbnRXb3JsZCBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMiksIGlv
cygxMC4wKSk7CiAKKy0gKHZvaWQpX2FkZFVzZXJTY3JpcHRJbW1lZGlhdGVseTooV0tVc2VyU2Ny
aXB0ICopdXNlclNjcmlwdCBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9z
KFdLX0lPU19UQkEpKTsKKwogLSAodm9pZClfYWRkVXNlckNvbnRlbnRGaWx0ZXI6KF9XS1VzZXJD
b250ZW50RmlsdGVyICopdXNlckNvbnRlbnRGaWx0ZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3go
MTAuMTEpLCBpb3MoOS4wKSk7CiAtICh2b2lkKV9yZW1vdmVVc2VyQ29udGVudEZpbHRlcjooTlNT
dHJpbmcgKil1c2VyQ29udGVudEZpbHRlck5hbWUgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAu
MTEpLCBpb3MoOS4wKSk7CiAtICh2b2lkKV9yZW1vdmVBbGxVc2VyQ29udGVudEZpbHRlcnMgV0tf
QVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTEpLCBpb3MoOS4wKSk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVzZXJDb250
ZW50TWFuYWdlci5jcHAJKHJldmlzaW9uIDIzMzczOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lkIHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9hZGRf
c2NyCiB7CiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfVVNFUl9DT05URU5UX01BTkFH
RVIobWFuYWdlcikpOwogICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2NyaXB0KTsKLSAgICBtYW5hZ2Vy
LT5wcml2LT51c2VyQ29udGVudENvbnRyb2xsZXItPmFkZFVzZXJTY3JpcHQod2Via2l0VXNlclNj
cmlwdEdldFVzZXJTY3JpcHQoc2NyaXB0KSk7CisgICAgbWFuYWdlci0+cHJpdi0+dXNlckNvbnRl
bnRDb250cm9sbGVyLT5hZGRVc2VyU2NyaXB0KHdlYmtpdFVzZXJTY3JpcHRHZXRVc2VyU2NyaXB0
KHNjcmlwdCksIEluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseTo6Tm8pOwogfQogCiAvKioKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9V
c2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAJKHJldmlzaW9uIDIz
MzczOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAog
I2luY2x1ZGUgIkFQSVVzZXJTY3JpcHQuaCIKICNpbmNsdWRlICJBUElVc2VyU3R5bGVTaGVldC5o
IgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJJbmplY3RVc2VyU2NyaXB0
SW1tZWRpYXRlbHkuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlck1l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIldl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaCIKQEAgLTE2Nyw3ICsxNjgsNyBAQCB2b2lkIFdlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vCiAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNlckNvbnRlbnRXb3JsZHMo
d29ybGRzVG9SZW1vdmUpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CiB9CiAKLXZvaWQgV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJTY3JpcHQoQVBJOjpVc2VyU2NyaXB0
JiB1c2VyU2NyaXB0KQordm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNl
clNjcmlwdChBUEk6OlVzZXJTY3JpcHQmIHVzZXJTY3JpcHQsIEluamVjdFVzZXJTY3JpcHRJbW1l
ZGlhdGVseSBpbW1lZGlhdGVseSkKIHsKICAgICBSZWY8QVBJOjpVc2VyQ29udGVudFdvcmxkPiB3
b3JsZCA9IHVzZXJTY3JpcHQudXNlckNvbnRlbnRXb3JsZCgpOwogCkBAIC0xNzYsNyArMTc3LDcg
QEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkVQogICAgIG1fdXNlclNj
cmlwdHMtPmVsZW1lbnRzKCkuYXBwZW5kKCZ1c2VyU2NyaXB0KTsKIAogICAgIGZvciAoV2ViUHJv
Y2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNlclNjcmlwdHMoeyB7IHVz
ZXJTY3JpcHQuaWRlbnRpZmllcigpLCB3b3JsZC0+aWRlbnRpZmllcigpLCB1c2VyU2NyaXB0LnVz
ZXJTY3JpcHQoKSB9IH0pLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgICAgIHByb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNlclNjcmlw
dHMoeyB7IHVzZXJTY3JpcHQuaWRlbnRpZmllcigpLCB3b3JsZC0+aWRlbnRpZmllcigpLCB1c2Vy
U2NyaXB0LnVzZXJTY3JpcHQoKSB9IH0sIGltbWVkaWF0ZWx5KSwgaWRlbnRpZmllcigpLnRvVUlu
dDY0KCkpOwogfQogCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVV
c2VyU2NyaXB0KEFQSTo6VXNlclNjcmlwdCYgdXNlclNjcmlwdCkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHkuaAkocmV2aXNpb24gMjMzNzM5KQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHku
aAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTksNyBAQCBjbGFzcyBXZWJQcm9jZXNzUHJveHk7
CiBjbGFzcyBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjsKIHN0cnVjdCBGcmFtZUluZm9EYXRhOwog
c3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM7CitlbnVtIGNsYXNzIEluamVjdFVzZXJT
Y3JpcHRJbW1lZGlhdGVseTsKIAogY2xhc3MgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkg
OiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpVc2VyQ29udGVudENv
bnRyb2xsZXI+LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKQEAgLTc1
LDcgKzc2LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlUHJvY2VzcyhXZWJQcm9jZXNzUHJv
eHkmKTsKIAogICAgIEFQSTo6QXJyYXkmIHVzZXJTY3JpcHRzKCkgeyByZXR1cm4gbV91c2VyU2Ny
aXB0cy5nZXQoKTsgfQotICAgIHZvaWQgYWRkVXNlclNjcmlwdChBUEk6OlVzZXJTY3JpcHQmKTsK
KyAgICB2b2lkIGFkZFVzZXJTY3JpcHQoQVBJOjpVc2VyU2NyaXB0JiwgSW5qZWN0VXNlclNjcmlw
dEltbWVkaWF0ZWx5KTsKICAgICB2b2lkIHJlbW92ZVVzZXJTY3JpcHQoQVBJOjpVc2VyU2NyaXB0
Jik7CiAgICAgdm9pZCByZW1vdmVBbGxVc2VyU2NyaXB0cyhBUEk6OlVzZXJDb250ZW50V29ybGQm
KTsKICAgICB2b2lkIHJlbW92ZUFsbFVzZXJTY3JpcHRzKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIzMzczOSkK
KysrIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtp
bmcgY29weSkKQEAgLTMzMTgsNiArMzMxOCw3IEBACiAJCTQxMDNGQkEyMjA2MUJEQjgwMEMyRUFG
OCAvKiBOZXR3b3JrTG9hZENoZWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gTmV0d29ya0xvYWRDaGVja2VyLmNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtMb2FkQ2hlY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMDQ4
MkNCMURERDJGQjUwMEYwMDZEMCAvKiBSVENOZXR3b3JrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJUQ05ldHdvcmsuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MTA0ODJDQzFEREQyRkI1MDBGMDA2RDAgLyogUlRDTmV0d29yay5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSVENOZXR3b3JrLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTQxMTE0MzYzMjBGNjc3QjEwMDI2RjkxMiAvKiBJbmplY3RVc2VyU2NyaXB0
SW1tZWRpYXRlbHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5qZWN0VXNl
clNjcmlwdEltbWVkaWF0ZWx5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTJC
NTQ3MUY5RkQzQUIwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya1JUQ1Jlc29sdmVyLmNwcDsgcGF0aCA9
IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTEyQjU0NzFGOUZEM0FCMDBFNjc5ODYgLyogTmV0d29ya1JU
Q1Jlc29sdmVyQ29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRj
L05ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDExMkI1NDgxRjlGRDNBQzAwRTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrUlRDUmVzb2x2ZXIuaDsgcGF0aCA9
IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTU0NjcsNiArNTQ2OCw3IEBACiAJCTFBQUYwOEFBMTkyNjkzMEIw
MEI2MzkwQyAvKiBVc2VyQ29udGVudCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCisJCQkJNDExMTQzNjMyMEY2NzdCMTAwMjZGOTEyIC8qIEluamVjdFVzZXJTY3Jp
cHRJbW1lZGlhdGVseS5oICovLAogCQkJCTFBQUYwOEFCMTkyNjkzNjcwMEI2MzkwQyAvKiBXZWJV
c2VyQ29udGVudENvbnRyb2xsZXIuY3BwICovLAogCQkJCTFBQUYwOEFDMTkyNjkzNjcwMEI2Mzkw
QyAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaCAqLywKIAkJCQkxQUFGMDhCNDE5MjY5RTI0
MDBCNjM5MEMgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3NhZ2VzLmluICovLApJbmRl
eDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29u
dHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJD
b250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDIzMzczOSkKKysr
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRy
b2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJE
YXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRnJhbWVJbmZvRGF0YS5oIgorI2luY2x1ZGUgIklu
amVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseS5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlU2Ny
aXB0V29ybGQuaCIKICNpbmNsdWRlICJXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdC5oIgogI2lu
Y2x1ZGUgIldlYkZyYW1lLmgiCkBAIC0zNiw2ICszNyw3IEBACiAjaW5jbHVkZSAiV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9ET01XcmFwcGVyV29ybGQu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0
eU9yaWdpbkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlclN0eWxlU2hlZXQuaD4KQEAgLTEyMiw3ICsxMjQsNyBA
QCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlVXNlCiAgICAgfQogfQogCi12
b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRkVXNlclNjcmlwdHMoY29uc3QgVmVjdG9y
PFdlYlVzZXJTY3JpcHREYXRhPiYgdXNlclNjcmlwdHMpCit2b2lkIFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlcjo6YWRkVXNlclNjcmlwdHMoVmVjdG9yPFdlYlVzZXJTY3JpcHREYXRhPiYmIHVzZXJT
Y3JpcHRzLCBJbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkgaW1tZWRpYXRlbHkpCiB7CiAgICAg
Zm9yIChjb25zdCBhdXRvJiB1c2VyU2NyaXB0RGF0YSA6IHVzZXJTY3JpcHRzKSB7CiAgICAgICAg
IGF1dG8gaXQgPSB3b3JsZE1hcCgpLmZpbmQodXNlclNjcmlwdERhdGEud29ybGRJZGVudGlmaWVy
KTsKQEAgLTEzMiw3ICsxMzQsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRk
VXNlclNjCiAgICAgICAgIH0KIAogICAgICAgICBVc2VyU2NyaXB0IHNjcmlwdCA9IHVzZXJTY3Jp
cHREYXRhLnVzZXJTY3JpcHQ7Ci0gICAgICAgIGFkZFVzZXJTY3JpcHRJbnRlcm5hbCgqaXQtPnZh
bHVlLmZpcnN0LCB1c2VyU2NyaXB0RGF0YS5pZGVudGlmaWVyLCBXVEZNb3ZlKHNjcmlwdCkpOwor
ICAgICAgICBhZGRVc2VyU2NyaXB0SW50ZXJuYWwoKml0LT52YWx1ZS5maXJzdCwgdXNlclNjcmlw
dERhdGEuaWRlbnRpZmllciwgV1RGTW92ZShzY3JpcHQpLCBpbW1lZGlhdGVseSk7CiAgICAgfQog
fQogCkBAIC0zNjAsMTUgKzM2MiwzMSBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6
cmVtb3ZlQWxsCiB9CiAjZW5kaWYKIAotdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmFk
ZFVzZXJTY3JpcHRJbnRlcm5hbChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiB3b3JsZCwgdWlu
dDY0X3QgdXNlclNjcmlwdElkZW50aWZpZXIsIFVzZXJTY3JpcHQmJiB1c2VyU2NyaXB0KQordm9p
ZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJTY3JpcHRJbnRlcm5hbChJbmplY3Rl
ZEJ1bmRsZVNjcmlwdFdvcmxkJiB3b3JsZCwgdWludDY0X3QgdXNlclNjcmlwdElkZW50aWZpZXIs
IFVzZXJTY3JpcHQmJiB1c2VyU2NyaXB0LCBJbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkgaW1t
ZWRpYXRlbHkpCiB7CisgICAgaWYgKGltbWVkaWF0ZWx5ID09IEluamVjdFVzZXJTY3JpcHRJbW1l
ZGlhdGVseTo6WWVzKSB7CisgICAgICAgIFBhZ2U6OmZvckVhY2hQYWdlKFsmXSAoYXV0byYgcGFn
ZSkgeworICAgICAgICAgICAgaWYgKCZwYWdlLnVzZXJDb250ZW50UHJvdmlkZXIoKSAhPSB0aGlz
KQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgYXV0byYgbWFpbkZyYW1l
ID0gcGFnZS5tYWluRnJhbWUoKTsKKyAgICAgICAgICAgIGlmICh1c2VyU2NyaXB0LmluamVjdGVk
RnJhbWVzKCkgPT0gSW5qZWN0SW5Ub3BGcmFtZU9ubHkpIHsKKyAgICAgICAgICAgICAgICBtYWlu
RnJhbWUuaW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KHdvcmxkLmNvcmVXb3JsZCgpLCB1c2Vy
U2NyaXB0KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGZvciAoYXV0byogZnJhbWUgPSAmbWFpbkZyYW1lOyBmcmFtZTsgZnJhbWUgPSBmcmFt
ZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgmbWFpbkZyYW1lKSkKKyAgICAgICAgICAgICAgICBmcmFt
ZS0+aW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KHdvcmxkLmNvcmVXb3JsZCgpLCB1c2VyU2Ny
aXB0KTsKKyAgICAgICAgfSk7CisgICAgfQorCiAgICAgYXV0byYgc2NyaXB0c0luV29ybGQgPSBt
X3VzZXJTY3JpcHRzLmVuc3VyZSgmd29ybGQsIFtdIHsgcmV0dXJuIFZlY3RvcjxzdGQ6OnBhaXI8
dWludDY0X3QsIFdlYkNvcmU6OlVzZXJTY3JpcHQ+PigpOyB9KS5pdGVyYXRvci0+dmFsdWU7CiAg
ICAgc2NyaXB0c0luV29ybGQuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKHVzZXJTY3JpcHRJZGVudGlm
aWVyLCBXVEZNb3ZlKHVzZXJTY3JpcHQpKSk7CiB9CiAKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyOjphZGRVc2VyU2NyaXB0KEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQmIHdvcmxkLCBV
c2VyU2NyaXB0JiYgdXNlclNjcmlwdCkKIHsKLSAgICBhZGRVc2VyU2NyaXB0SW50ZXJuYWwod29y
bGQsIDAsIFdURk1vdmUodXNlclNjcmlwdCkpOworICAgIGFkZFVzZXJTY3JpcHRJbnRlcm5hbCh3
b3JsZCwgMCwgV1RGTW92ZSh1c2VyU2NyaXB0KSwgSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5
OjpObyk7CiB9CiAKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVVc2VyU2Ny
aXB0V2l0aFVSTChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiB3b3JsZCwgY29uc3QgVVJMJiB1
cmwpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5oCShyZXZpc2lvbiAyMzM3Mzkp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDcgQEAgbmFtZXNwYWNlIFdl
YktpdCB7CiBjbGFzcyBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOwogY2xhc3MgV2ViQ29tcGls
ZWRDb250ZW50UnVsZUxpc3REYXRhOwogY2xhc3MgV2ViVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3Jp
cHRvclByb3h5OworZW51bSBjbGFzcyBJbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHk7CiAKIGNs
YXNzIFdlYlVzZXJDb250ZW50Q29udHJvbGxlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpVc2Vy
Q29udGVudFByb3ZpZGVyLCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoK
QEAgLTY0LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlQWxsVXNlckNvbnRlbnQo
KTsKIAogICAgIHZvaWQgYWRkVXNlckNvbnRlbnRXb3JsZHMoY29uc3QgVmVjdG9yPHN0ZDo6cGFp
cjx1aW50NjRfdCwgU3RyaW5nPj4mKTsKLSAgICB2b2lkIGFkZFVzZXJTY3JpcHRzKGNvbnN0IFZl
Y3RvcjxXZWJVc2VyU2NyaXB0RGF0YT4mKTsKKyAgICB2b2lkIGFkZFVzZXJTY3JpcHRzKFZlY3Rv
cjxXZWJVc2VyU2NyaXB0RGF0YT4mJiwgSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KTsKICAg
ICB2b2lkIGFkZFVzZXJTdHlsZVNoZWV0cyhjb25zdCBWZWN0b3I8V2ViVXNlclN0eWxlU2hlZXRE
YXRhPiYpOwogICAgIHZvaWQgYWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVycyhjb25zdCBWZWN0
b3I8V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXJEYXRhPiYpOwogI2lmIEVOQUJMRShDT05URU5UX0VY
VEVOU0lPTlMpCkBAIC0xMDMsNyArMTA0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZUFs
bENvbnRlbnRSdWxlTGlzdHMoKTsKICNlbmRpZgogCi0gICAgdm9pZCBhZGRVc2VyU2NyaXB0SW50
ZXJuYWwoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYsIHVpbnQ2NF90IHVzZXJTY3JpcHRJZGVu
dGlmaWVyLCBXZWJDb3JlOjpVc2VyU2NyaXB0JiYpOworICAgIHZvaWQgYWRkVXNlclNjcmlwdElu
dGVybmFsKEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQmLCB1aW50NjRfdCB1c2VyU2NyaXB0SWRl
bnRpZmllciwgV2ViQ29yZTo6VXNlclNjcmlwdCYmLCBJbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRl
bHkpOwogICAgIHZvaWQgcmVtb3ZlVXNlclNjcmlwdEludGVybmFsKEluamVjdGVkQnVuZGxlU2Ny
aXB0V29ybGQmLCB1aW50NjRfdCB1c2VyU2NyaXB0SWRlbnRpZmllcik7CiAgICAgdm9pZCBhZGRV
c2VyU3R5bGVTaGVldEludGVybmFsKEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQmLCB1aW50NjRf
dCB1c2VyU3R5bGVTaGVldElkZW50aWZpZXIsIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0JiYpOwog
ICAgIHZvaWQgcmVtb3ZlVXNlclN0eWxlU2hlZXRJbnRlcm5hbChJbmplY3RlZEJ1bmRsZVNjcmlw
dFdvcmxkJiwgdWludDY0X3QgdXNlclN0eWxlU2hlZXRJZGVudGlmaWVyKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIu
bWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJD
b250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjMz
NzM5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250
ZW50Q29udHJvbGxlci5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBA
QCBtZXNzYWdlcyAtPiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXIgewogICAgIEFkZFVzZXJDb250
ZW50V29ybGRzKFZlY3RvcjxzdGQ6OnBhaXI8dWludDY0X3QsIFN0cmluZz4+IHdvcmxkcyk7CiAg
ICAgUmVtb3ZlVXNlckNvbnRlbnRXb3JsZHMoVmVjdG9yPHVpbnQ2NF90PiB3b3JsZElkZW50aWZp
ZXJzKTsKIAotICAgIEFkZFVzZXJTY3JpcHRzKFZlY3RvcjxzdHJ1Y3QgV2ViS2l0OjpXZWJVc2Vy
U2NyaXB0RGF0YT4gdXNlclNjcmlwdHMpOworICAgIEFkZFVzZXJTY3JpcHRzKFZlY3RvcjxzdHJ1
Y3QgV2ViS2l0OjpXZWJVc2VyU2NyaXB0RGF0YT4gdXNlclNjcmlwdHMsIGVudW0gV2ViS2l0OjpJ
bmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkgaW1tZWRpYXRlbHkpOwogICAgIFJlbW92ZVVzZXJT
Y3JpcHQodWludDY0X3Qgd29ybGRJZGVudGlmaWVyLCB1aW50NjRfdCBpZGVudGlmaWVyKTsKICAg
ICBSZW1vdmVBbGxVc2VyU2NyaXB0cyhWZWN0b3I8dWludDY0X3Q+IHdvcmxkSWRlbnRpZmllcnMp
OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAkocmV2aXNpb24gMjMzNzM5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJG
aW5kQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkZvcm1EYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVk
ZSAiR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCIKKyNpbmNsdWRlICJJbmpl
Y3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZS5oIgog
I2luY2x1ZGUgIkluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0LmgiCiAjaW5jbHVkZSAiSW5q
ZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZC5oIgpAQCAtNjEyLDcgKzYxMyw3IEBAIFdlYlBhZ2U6Oldl
YlBhZ2UodWludDY0X3QgcGFnZUlELCBXZWJQYWcKICAgICAgICAgcmVnaXN0ZXJVUkxTY2hlbWVI
YW5kbGVyKGl0ZXJhdG9yLnZhbHVlLCBpdGVyYXRvci5rZXkpOwogCiAgICAgbV91c2VyQ29udGVu
dENvbnRyb2xsZXItPmFkZFVzZXJDb250ZW50V29ybGRzKHBhcmFtZXRlcnMudXNlckNvbnRlbnRX
b3JsZHMpOwotICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT5hZGRVc2VyU2NyaXB0cyhwYXJh
bWV0ZXJzLnVzZXJTY3JpcHRzKTsKKyAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+YWRkVXNl
clNjcmlwdHMoV1RGTW92ZShwYXJhbWV0ZXJzLnVzZXJTY3JpcHRzKSwgSW5qZWN0VXNlclNjcmlw
dEltbWVkaWF0ZWx5OjpObyk7CiAgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXItPmFkZFVzZXJT
dHlsZVNoZWV0cyhwYXJhbWV0ZXJzLnVzZXJTdHlsZVNoZWV0cyk7CiAgICAgbV91c2VyQ29udGVu
dENvbnRyb2xsZXItPmFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnMocGFyYW1ldGVycy5tZXNz
YWdlSGFuZGxlcnMpOwogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCkluZGV4OiBUb29s
cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzM3
MzkpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAor
MjAxOC0wNy0xMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgor
CisgICAgICAgIEFkZCBTUEkgZm9yIGltbWVkaWF0ZSBpbmplY3Rpb24gb2YgdXNlciBzY3JpcHRz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzMzNDIK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI5MjAyMjg1PgorCisgICAgICAgIFJldmlld2VkIGJ5
IEJyYWR5IEVpZHNvbiwgWW91ZW5uIEZhYmxldCwgYW5kIEdlb2ZmIEdhcmVuLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvVXNlckNvbnRlbnRDb250cm9sbGVy
Lm1tOgorICAgICAgICAod2FpdEZvck1lc3NhZ2UpOgorICAgICAgICAoVEVTVCk6CisKIDIwMTgt
MDctMTEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBy
ZW1haW5pbmcgQ3Jvc3MtT3JpZ2luLVJlc291cmNlLVBvbGljeSBmYWlsdXJlcywgaWYgYW55Cklu
ZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VzZXJDb250ZW50Q29u
dHJvbGxlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1VzZXJDb250ZW50Q29udHJvbGxlci5tbQkocmV2aXNpb24gMjMzNzM5KQorKysgVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Vc2VyQ29udGVudENvbnRyb2xsZXIu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKICNpbXBvcnQgPFdlYktpdC9fV0tV
c2VyQ29udGVudFdvcmxkLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLVXNlclN0eWxlU2hlZXQuaD4K
ICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KIAogI2lm
IFdLX0FQSV9FTkFCTEVECiAKQEAgLTU1LDcgKzU2LDcgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dl
YlZpZXcgKil3ZWJWaWV3IGRpZAogQGVuZAogCiBzdGF0aWMgYm9vbCByZWNlaXZlZFNjcmlwdE1l
c3NhZ2U7Ci1zdGF0aWMgUmV0YWluUHRyPFdLU2NyaXB0TWVzc2FnZT4gbGFzdFNjcmlwdE1lc3Nh
Z2U7CitzdGF0aWMgVmVjdG9yPFJldGFpblB0cjxXS1NjcmlwdE1lc3NhZ2U+PiBzY3JpcHRNZXNz
YWdlczsKIAogQGludGVyZmFjZSBTY3JpcHRNZXNzYWdlSGFuZGxlciA6IE5TT2JqZWN0IDxXS1Nj
cmlwdE1lc3NhZ2VIYW5kbGVyPgogQGVuZApAQCAtNjUsNyArNjYsNyBAQCBAaW50ZXJmYWNlIFNj
cmlwdE1lc3NhZ2VIYW5kbGVyIDogTlNPYmplCiAtICh2b2lkKXVzZXJDb250ZW50Q29udHJvbGxl
cjooV0tVc2VyQ29udGVudENvbnRyb2xsZXIgKil1c2VyQ29udGVudENvbnRyb2xsZXIgZGlkUmVj
ZWl2ZVNjcmlwdE1lc3NhZ2U6KFdLU2NyaXB0TWVzc2FnZSAqKW1lc3NhZ2UKIHsKICAgICByZWNl
aXZlZFNjcmlwdE1lc3NhZ2UgPSB0cnVlOwotICAgIGxhc3RTY3JpcHRNZXNzYWdlID0gbWVzc2Fn
ZTsKKyAgICBzY3JpcHRNZXNzYWdlcy5hcHBlbmQobWVzc2FnZSk7CiB9CiAKIEBlbmQKQEAgLTg4
LDcgKzg5LDcgQEAgVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgU2NyaXB0TWVzcwogICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKICAgICBy
ZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsKIAotICAgIEVYUEVDVF9XS19TVFJFUShAIkhl
bGxvIiwgKE5TU3RyaW5nICopW2xhc3RTY3JpcHRNZXNzYWdlIGJvZHldKTsKKyAgICBFWFBFQ1Rf
V0tfU1RSRVEoQCJIZWxsbyIsIChOU1N0cmluZyAqKVtzY3JpcHRNZXNzYWdlc1swXSBib2R5XSk7
CiB9CiAKIFRFU1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIFNjcmlwdE1lc3NhZ2VIYW5kbGVy
QmFzaWNQb3N0SXNvbGF0ZWRXb3JsZCkKQEAgLTExNSw3ICsxMTYsNyBAQCBURVNUKFdLVXNlckNv
bnRlbnRDb250cm9sbGVyLCBTY3JpcHRNZXNzCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOwogICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZh
bHNlOwogCi0gICAgRVhQRUNUX1dLX1NUUkVRKEAiSGVsbG8iLCAoTlNTdHJpbmcgKilbbGFzdFNj
cmlwdE1lc3NhZ2UgYm9keV0pOworICAgIEVYUEVDVF9XS19TVFJFUShAIkhlbGxvIiwgKE5TU3Ry
aW5nICopW3NjcmlwdE1lc3NhZ2VzWzBdIGJvZHldKTsKIAogICAgIGlmICghaXNEb25lV2l0aE5h
dmlnYXRpb24pCiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lV2l0aE5h
dmlnYXRpb24pOwpAQCAtMTY2LDcgKzE2Nyw3IEBAIFRFU1QoV0tVc2VyQ29udGVudENvbnRyb2xs
ZXIsIFNjcmlwdE1lc3MKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2Ny
aXB0TWVzc2FnZSk7CiAgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7CiAKLSAgICBF
WFBFQ1RfV0tfU1RSRVEoQCJQQVNTIiwgKE5TU3RyaW5nICopW2xhc3RTY3JpcHRNZXNzYWdlIGJv
ZHldKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoQCJQQVNTIiwgKE5TU3RyaW5nICopW3NjcmlwdE1l
c3NhZ2VzWzBdIGJvZHldKTsKIAogICAgIFt1c2VyQ29udGVudENvbnRyb2xsZXIgcmVtb3ZlU2Ny
aXB0TWVzc2FnZUhhbmRsZXJGb3JOYW1lOkAiaGFuZGxlclRvUmVtb3ZlIl07CiAKQEAgLTE4MSw3
ICsxODIsNyBAQCBURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBTY3JpcHRNZXNzCiAgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOwogICAgIHJl
Y2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOwogCi0gICAgRVhQRUNUX1dLX1NUUkVRKEAiUEFT
UyIsIChOU1N0cmluZyAqKVtsYXN0U2NyaXB0TWVzc2FnZSBib2R5XSk7CisgICAgRVhQRUNUX1dL
X1NUUkVRKEAiUEFTUyIsIChOU1N0cmluZyAqKVtzY3JpcHRNZXNzYWdlc1swXSBib2R5XSk7CiB9
CiAKIFRFU1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIFNjcmlwdE1lc3NhZ2VIYW5kbGVyQ2Fs
bFJlbW92ZWRIYW5kbGVyKQpAQCAtMjE0LDcgKzIxNSw3IEBAIFRFU1QoV0tVc2VyQ29udGVudENv
bnRyb2xsZXIsIFNjcmlwdE1lc3MKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2Vp
dmVkU2NyaXB0TWVzc2FnZSk7CiAgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7CiAK
LSAgICBFWFBFQ1RfV0tfU1RSRVEoQCJQQVNTIiwgKE5TU3RyaW5nICopW2xhc3RTY3JpcHRNZXNz
YWdlIGJvZHldKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoQCJQQVNTIiwgKE5TU3RyaW5nICopW3Nj
cmlwdE1lc3NhZ2VzWzBdIGJvZHldKTsKIH0KIAogc3RhdGljIFJldGFpblB0cjxXS1dlYlZpZXc+
IHdlYlZpZXdGb3JTY3JpcHRNZXNzYWdlSGFuZGxlck11bHRpcGxlSGFuZGxlclJlbW92YWxUZXN0
KFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24pCkBAIC0yNTUsNyArMjU2LDcg
QEAgVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgU2NyaXB0TWVzcwogICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKICAgICByZWNlaXZlZFNj
cmlwdE1lc3NhZ2UgPSBmYWxzZTsKIAotICAgIEVYUEVDVF9XS19TVFJFUShAIlBBU1MiLCAoTlNT
dHJpbmcgKilbbGFzdFNjcmlwdE1lc3NhZ2UgYm9keV0pOworICAgIEVYUEVDVF9XS19TVFJFUShA
IlBBU1MiLCAoTlNTdHJpbmcgKilbc2NyaXB0TWVzc2FnZXNbMF0gYm9keV0pOwogfQogCiAjaWYg
IVBMQVRGT1JNKElPUykgLy8gRklYTUU6IGhhbmdzIGluIHRoZSBpT1Mgc2ltdWxhdG9yCkBAIC0y
NzUsMTAgKzI3Niw5IEBAIFRFU1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIFNjcmlwdE1lc3MK
IAogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsK
IAotICAgIEVYUEVDVF9XS19TVFJFUShAIkZpcnN0IE1lc3NhZ2UiLCAoTlNTdHJpbmcgKilbbGFz
dFNjcmlwdE1lc3NhZ2UgYm9keV0pOworICAgIEVYUEVDVF9XS19TVFJFUShAIkZpcnN0IE1lc3Nh
Z2UiLCAoTlNTdHJpbmcgKilbc2NyaXB0TWVzc2FnZXNbMF0gYm9keV0pOwogICAgIAogICAgIHJl
Y2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOwotICAgIGxhc3RTY3JpcHRNZXNzYWdlID0gbnVs
bHB0cjsKIAogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOwogICAgIFt3ZWJWaWV3
IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKQEAgLTI4Nyw3ICsyODcsNyBAQCBU
RVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBTY3JpcHRNZXNzCiAKICAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CiAKLSAgICBFWFBFQ1RfV0tf
U1RSRVEoQCJTZWNvbmQgTWVzc2FnZSIsIChOU1N0cmluZyAqKVtsYXN0U2NyaXB0TWVzc2FnZSBi
b2R5XSk7ICAgIAorICAgIEVYUEVDVF9XS19TVFJFUShAIlNlY29uZCBNZXNzYWdlIiwgKE5TU3Ry
aW5nICopW3NjcmlwdE1lc3NhZ2VzWzFdIGJvZHldKTsKIH0KICNlbmRpZgogCkBAIC0zMTEsNyAr
MzExLDcgQEAgVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgU2NyaXB0TWVzcwogICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKICAgICByZWNl
aXZlZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsKIAotICAgIEVYUEVDVF9XS19TVFJFUShAIlBBU1Mx
IiwgKE5TU3RyaW5nICopW2xhc3RTY3JpcHRNZXNzYWdlIGJvZHldKTsKKyAgICBFWFBFQ1RfV0tf
U1RSRVEoQCJQQVNTMSIsIChOU1N0cmluZyAqKVtzY3JpcHRNZXNzYWdlc1swXSBib2R5XSk7CiAK
ICAgICBbdXNlckNvbnRlbnRDb250cm9sbGVyIHJlbW92ZVNjcmlwdE1lc3NhZ2VIYW5kbGVyRm9y
TmFtZTpAImhhbmRsZXJUb1JlcGxhY2UiXTsKICAgICBbdXNlckNvbnRlbnRDb250cm9sbGVyIGFk
ZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpAImhhbmRsZXJUb1JlcGxh
Y2UiXTsKQEAgLTMyMiw3ICszMjIsNyBAQCBURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBT
Y3JpcHRNZXNzCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1l
c3NhZ2UpOwogICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOwogCi0gICAgRVhQRUNU
X1dLX1NUUkVRKEAiUEFTUzIiLCAoTlNTdHJpbmcgKilbbGFzdFNjcmlwdE1lc3NhZ2UgYm9keV0p
OworICAgIEVYUEVDVF9XS19TVFJFUShAIlBBU1MyIiwgKE5TU3RyaW5nICopW3NjcmlwdE1lc3Nh
Z2VzWzFdIGJvZHldKTsKIH0KIAogc3RhdGljIE5TU3RyaW5nICpzdHlsZVNoZWV0U291cmNlID0g
QCJib2R5IHsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW4gIWltcG9ydGFudDsgfSI7CkBAIC01OTIs
NCArNTkyLDUwIEBAIFRFU1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIFVzZXJTY3JpcHQKICAg
ICBFWFBFQ1RfRVEodXNlclNjcmlwdEFzc29jaWF0ZWRXaXRoV29ybGQyLmdldCgpLCBbdXNlckNv
bnRlbnRDb250cm9sbGVyIHVzZXJTY3JpcHRzXVsxXSk7CiB9CiAKK3N0YXRpYyB2b2lkIHdhaXRG
b3JNZXNzYWdlcyhzaXplX3QgZXhwZWN0ZWRDb3VudCkKK3sKKyAgICB3aGlsZSAoc2NyaXB0TWVz
c2FnZXMuc2l6ZSgpIDwgZXhwZWN0ZWRDb3VudCkgeworICAgICAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CisgICAgICAgIHJlY2VpdmVkU2NyaXB0
TWVzc2FnZSA9IGZhbHNlOworICAgIH0KK30KKworc3RhdGljIHZvaWQgY29tcGFyZU1lc3NhZ2Vz
KFZlY3Rvcjxjb25zdCBjaGFyKj4mJiBleHBlY3RlZE1lc3NhZ2VzKQoreworICAgIEVYUEVDVF9F
UShleHBlY3RlZE1lc3NhZ2VzLnNpemUoKSwgc2NyaXB0TWVzc2FnZXMuc2l6ZSgpKTsKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGV4cGVjdGVkTWVzc2FnZXMuc2l6ZSgpOyArK2kpCisgICAg
ICAgIEVYUEVDVF9TVFJFUShbW3NjcmlwdE1lc3NhZ2VzW2ldIGJvZHldIFVURjhTdHJpbmddLCBl
eHBlY3RlZE1lc3NhZ2VzW2ldKTsKK30KKworVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwg
SW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KQoreworICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0
TlMoW1tTY3JpcHRNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gc3RhcnRB
bGxGcmFtZXMgPSBhZG9wdE5TKFtbV0tVc2VyU2NyaXB0IGFsbG9jXSBpbml0V2l0aFNvdXJjZTpA
IndpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCdz
dGFydCBhbGwnKSIgaW5qZWN0aW9uVGltZTpXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lQXREb2N1
bWVudFN0YXJ0IGZvck1haW5GcmFtZU9ubHk6Tk9dKTsKKyAgICBhdXRvIGVuZE1haW5GcmFtZU9u
bHkgPSBhZG9wdE5TKFtbV0tVc2VyU2NyaXB0IGFsbG9jXSBpbml0V2l0aFNvdXJjZTpAIndpbmRv
dy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCdlbmQgbWFp
bicpIiBpbmplY3Rpb25UaW1lOldLVXNlclNjcmlwdEluamVjdGlvblRpbWVBdERvY3VtZW50RW5k
IGZvck1haW5GcmFtZU9ubHk6WUVTXSk7CisKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtbY29uZmln
dXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhh
bmRsZXIuZ2V0KCkgbmFtZTpAInRlc3RIYW5kbGVyIl07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBh
ZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwg
ODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworCisgICAgYXV0
byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tTaW1wbGVOYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGlu
aXRdKTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCld
OworCisgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0
aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlLWlmcmFt
ZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVz
b3VyY2VzIl1dOworCisgICAgaXNEb25lV2l0aE5hdmlnYXRpb24gPSBmYWxzZTsKKyAgICBbd2Vi
VmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JmlzRG9uZVdpdGhOYXZpZ2F0aW9uKTsKKworICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZh
bHNlOworICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIF9hZGRVc2Vy
U2NyaXB0SW1tZWRpYXRlbHk6c3RhcnRBbGxGcmFtZXMuZ2V0KCldOworICAgIC8vIHNpbXBsZS1p
ZnJhbWUuaHRtbCBoYXMgYSBtYWluIGZyYW1lIGFuZCBvbmUgaWZyYW1lLgorICAgIHdhaXRGb3JN
ZXNzYWdlcygyKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBf
YWRkVXNlclNjcmlwdEltbWVkaWF0ZWx5OmVuZE1haW5GcmFtZU9ubHkuZ2V0KCldOworICAgIHdh
aXRGb3JNZXNzYWdlcygzKTsKKyAgICBbd2ViVmlldyByZWxvYWRdOworICAgIHdhaXRGb3JNZXNz
YWdlcyg2KTsKKyAgICBjb21wYXJlTWVzc2FnZXMoeyJzdGFydCBhbGwiLCAic3RhcnQgYWxsIiwg
ImVuZCBtYWluIiwgInN0YXJ0IGFsbCIsICJlbmQgbWFpbiIsICJzdGFydCBhbGwifSk7Cit9CisK
ICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>344798</attachid>
            <date>2018-07-11 17:47:25 -0700</date>
            <delta_ts>2018-07-11 18:05:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173342-20180711174724.patch</filename>
            <type>text/plain</type>
            <size>33591</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzMzczOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDE4LTA3LTExICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSBm
b3IgaW1tZWRpYXRlIGluamVjdGlvbiBvZiB1c2VyIHNjcmlwdHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzM0MgorICAgICAgICA8cmRhcjovL3By
b2JsZW0vMjkyMDIyODU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJhZHkgRWlkc29uLCBZb3Vl
bm4gRmFibGV0LCBhbmQgR2VvZmYgR2FyZW4uCisKKyAgICAgICAgVGhlIG5ldyBTUEkgaXMgV0tV
c2VyQ29udGVudENvbnRyb2xsZXIuX2FkZFVzZXJTY3JpcHRJbW1lZGlhdGVseS4KKyAgICAgICAg
SXQgaXMgY292ZXJlZCBieSBuZXcgQVBJIHRlc3RzLgorICAgICAgICBFeGlzdGluZyBmdW5jdGlv
bmFsaXR5IHJlbWFpbnMgdW5jaGFuZ2VkIHVubGVzcyB0aGUgbmV3IFNQSSBpcyBhZG9wdGVkLgor
CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6aW5q
ZWN0VXNlclNjcmlwdHMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmluamVjdFVzZXJTY3Jp
cHRJbW1lZGlhdGVseSk6CisgICAgICAgIE1vdmUgaW5qZWN0aW9uIGZ1bmN0aW9uYWxpdHkgdG8g
YWxsb3cgdXMgdG8gY2FsbCBpdCBkaXJlY3RseSBmcm9tIHRoZSBuZXcgU1BJLgorICAgICAgICAq
IHBhZ2UvRnJhbWUuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZTo6Zm9yRWFjaFBhZ2UpOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorCiAyMDE4LTA3
LTExICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggcmVt
YWluaW5nIENyb3NzLU9yaWdpbi1SZXNvdXJjZS1Qb2xpY3kgZmFpbHVyZXMsIGlmIGFueQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZS5jcHAJKHJldmlzaW9uIDIzMzczOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MzUsMjAgKzczNSwyNSBAQCB2b2lk
IEZyYW1lOjppbmplY3RVc2VyU2NyaXB0cyhVc2VyU2NyaXB0CiAgICAgICAgIHJldHVybjsKIAog
ICAgIG1fcGFnZS0+dXNlckNvbnRlbnRQcm92aWRlcigpLmZvckVhY2hVc2VyU2NyaXB0KFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGluamVjdGlvblRpbWVdKERPTVdyYXBw
ZXJXb3JsZCYgd29ybGQsIGNvbnN0IFVzZXJTY3JpcHQmIHNjcmlwdCkgewotICAgICAgICBhdXRv
KiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7Ci0gICAgICAgIGlmICghZG9jdW1lbnQpCi0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmIChzY3JpcHQuaW5qZWN0ZWRGcmFtZXMoKSA9
PSBJbmplY3RJblRvcEZyYW1lT25seSAmJiBvd25lckVsZW1lbnQoKSkKLSAgICAgICAgICAgIHJl
dHVybjsKLQotICAgICAgICBpZiAoc2NyaXB0LmluamVjdGlvblRpbWUoKSA9PSBpbmplY3Rpb25U
aW1lICYmIFVzZXJDb250ZW50VVJMUGF0dGVybjo6bWF0Y2hlc1BhdHRlcm5zKGRvY3VtZW50LT51
cmwoKSwgc2NyaXB0LndoaXRlbGlzdCgpLCBzY3JpcHQuYmxhY2tsaXN0KCkpKSB7Ci0gICAgICAg
ICAgICBpZiAobV9wYWdlKQotICAgICAgICAgICAgICAgIG1fcGFnZS0+c2V0QXNSdW5uaW5nVXNl
clNjcmlwdHMoKTsKLSAgICAgICAgICAgIG1fc2NyaXB0LT5ldmFsdWF0ZUluV29ybGQoU2NyaXB0
U291cmNlQ29kZShzY3JpcHQuc291cmNlKCksIHNjcmlwdC51cmwoKSksIHdvcmxkKTsKLSAgICAg
ICAgfQorICAgICAgICBpZiAoc2NyaXB0LmluamVjdGlvblRpbWUoKSA9PSBpbmplY3Rpb25UaW1l
KQorICAgICAgICAgICAgaW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KHdvcmxkLCBzY3JpcHQp
OwogICAgIH0pOwogfQogCit2b2lkIEZyYW1lOjppbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHko
RE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgVXNlclNjcmlwdCYgc2NyaXB0KQoreworICAg
IGF1dG8qIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKTsKKyAgICBpZiAoIWRvY3VtZW50KQor
ICAgICAgICByZXR1cm47CisgICAgaWYgKHNjcmlwdC5pbmplY3RlZEZyYW1lcygpID09IEluamVj
dEluVG9wRnJhbWVPbmx5ICYmICFpc01haW5GcmFtZSgpKQorICAgICAgICByZXR1cm47CisgICAg
aWYgKCFVc2VyQ29udGVudFVSTFBhdHRlcm46Om1hdGNoZXNQYXR0ZXJucyhkb2N1bWVudC0+dXJs
KCksIHNjcmlwdC53aGl0ZWxpc3QoKSwgc2NyaXB0LmJsYWNrbGlzdCgpKSkKKyAgICAgICAgcmV0
dXJuOworICAgIGlmIChtX3BhZ2UpCisgICAgICAgIG1fcGFnZS0+c2V0QXNSdW5uaW5nVXNlclNj
cmlwdHMoKTsKKyAgICBtX3NjcmlwdC0+ZXZhbHVhdGVJbldvcmxkKFNjcmlwdFNvdXJjZUNvZGUo
c2NyaXB0LnNvdXJjZSgpLCBzY3JpcHQudXJsKCkpLCB3b3JsZCk7Cit9CisKIFJlbmRlclZpZXcq
IEZyYW1lOjpjb250ZW50UmVuZGVyZXIoKSBjb25zdAogewogICAgIHJldHVybiBkb2N1bWVudCgp
ID8gZG9jdW1lbnQoKS0+cmVuZGVyVmlldygpIDogbnVsbHB0cjsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
LmgJKHJldmlzaW9uIDIzMzczOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAkod29y
a2luZyBjb3B5KQpAQCAtMTc1LDcgKzE3NSw4IEBAIHB1YmxpYzoKIAogLy8gPT09PT09PT0gQWxs
IHB1YmxpYyBmdW5jdGlvbnMgYmVsb3cgdGhpcyBwb2ludCBhcmUgY2FuZGlkYXRlcyB0byBtb3Zl
IG91dCBvZiBGcmFtZSBpbnRvIGFub3RoZXIgY2xhc3MuID09PT09PT09CiAKLSAgICB2b2lkIGlu
amVjdFVzZXJTY3JpcHRzKFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGluamVjdFVzZXJTY3JpcHRzKFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseShET01XcmFw
cGVyV29ybGQmLCBjb25zdCBVc2VyU2NyaXB0Jik7CiAgICAgCiAgICAgV0VCQ09SRV9FWFBPUlQg
U3RyaW5nIGxheWVyVHJlZUFzVGV4dChMYXllclRyZWVGbGFncyA9IDApIGNvbnN0OwogICAgIFdF
QkNPUkVfRVhQT1JUIFN0cmluZyB0cmFja2VkUmVwYWludFJlY3RzQXNUZXh0KCkgY29uc3Q7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuaAkocmV2aXNpb24gMjMzNzM5KQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwMyw3ICsyMDMsNyBAQCBwdWJsaWM6CiAKICAg
ICBQYWdlR3JvdXAmIGdyb3VwKCk7CiAKLSAgICBzdGF0aWMgdm9pZCBmb3JFYWNoUGFnZShjb25z
dCBXVEY6OkZ1bmN0aW9uPHZvaWQoUGFnZSYpPiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyB2b2lkIGZvckVhY2hQYWdlKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChQYWdlJik+Jik7CiAK
ICAgICB2b2lkIGluY3JlbWVudFN1YmZyYW1lQ291bnQoKSB7ICsrbV9zdWJmcmFtZUNvdW50OyB9
CiAgICAgdm9pZCBkZWNyZW1lbnRTdWJmcmFtZUNvdW50KCkgeyBBU1NFUlQobV9zdWJmcmFtZUNv
dW50KTsgLS1tX3N1YmZyYW1lQ291bnQ7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzM3Mzkp
CisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMz
IEBACisyMDE4LTA3LTExICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgQWRkIFNQSSBmb3IgaW1tZWRpYXRlIGluamVjdGlvbiBvZiB1c2VyIHNj
cmlwdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
MzM0MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjkyMDIyODU+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgQnJhZHkgRWlkc29uLCBZb3Vlbm4gRmFibGV0LCBhbmQgR2VvZmYgR2FyZW4uCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwOgorICAgICAgICAoV0tQYWdl
R3JvdXBBZGRVc2VyU2NyaXB0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tVc2VyQ29u
dGVudENvbnRyb2xsZXJSZWYuY3BwOgorICAgICAgICAoV0tVc2VyQ29udGVudENvbnRyb2xsZXJB
ZGRVc2VyU2NyaXB0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRl
bnRDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29udHJvbGxlciBhZGRV
c2VyU2NyaXB0Ol0pOgorICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29udHJvbGxlciBfYWRkVXNl
clNjcmlwdEltbWVkaWF0ZWx5Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tV
c2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1VzZXJD
b250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJTY3JpcHQpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRV
c2VyU2NyaXB0cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6
YWRkVXNlclNjcmlwdEludGVybmFsKToKKyAgICAgICAgSWYgd2UgYXJlIHRvIGluamVjdCB0aGUg
c2NyaXB0IGludGVybmFsbHksIGluamVjdCBpdCBpbnRvIHRoZSBhcHByb3ByaWF0ZSBwYWdlcy4K
KyAgICAgICAgSWYgd2UncmUgaW5qZWN0aW5nIGludG8gdGhlIHRvcCBmcmFtZSBvbmx5LCB0aGVy
ZSdzIG5vIG5lZWQgdG8gdHJhdmVyc2UgdGhlIGZyYW1lIHRyZWUuCisgICAgICAgIChXZWJLaXQ6
OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRkVXNlclNjcmlwdCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6Om1fY3B1TGltaXQpOgorCiAyMDE4LTA3LTExICBKZXIgTm9ibGUgIDxqZXIubm9i
bGVAYXBwbGUuY29tPgogCiAgICAgICAgIERpc2FibGUgYWxsIG5ldHdvcmsgY2FjaGluZyBmb3Ig
SExTIHN0cmVhbXMuCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VH
cm91cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQ
YWdlR3JvdXAuY3BwCShyZXZpc2lvbiAyMzM3MzkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS1BhZ2VHcm91cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDkgKzMxLDExIEBA
CiAjaW5jbHVkZSAiQVBJVXNlckNvbnRlbnRXb3JsZC5oIgogI2luY2x1ZGUgIkFQSVVzZXJTY3Jp
cHQuaCIKICNpbmNsdWRlICJBUElVc2VyU3R5bGVTaGVldC5oIgorI2luY2x1ZGUgIkluamVjdFVz
ZXJTY3JpcHRJbW1lZGlhdGVseS5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUg
IldlYlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzLmgiCisjaW5jbHVkZSAi
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHkuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKQEAgLTk4LDcgKzEwMCw3
IEBAIHZvaWQgV0tQYWdlR3JvdXBBZGRVc2VyU2NyaXB0KFdLUGFnZUdyb3UKICAgICAKICAgICBh
dXRvIHVybCA9IGJhc2VVUkxTdHJpbmcuaXNFbXB0eSgpID8gV2ViQ29yZTo6YmxhbmtVUkwoKSA6
IFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgYmFzZVVSTFN0cmluZyk7CiAgICAgUmVmPEFQ
STo6VXNlclNjcmlwdD4gdXNlclNjcmlwdCA9IEFQSTo6VXNlclNjcmlwdDo6Y3JlYXRlKFdlYkNv
cmU6OlVzZXJTY3JpcHQgeyBXVEZNb3ZlKHNvdXJjZSksIFdURk1vdmUodXJsKSwgd2hpdGVsaXN0
ID8gd2hpdGVsaXN0LT50b1N0cmluZ1ZlY3RvcigpIDogVmVjdG9yPFN0cmluZz4oKSwgYmxhY2ts
aXN0ID8gYmxhY2tsaXN0LT50b1N0cmluZ1ZlY3RvcigpIDogVmVjdG9yPFN0cmluZz4oKSwgdG9V
c2VyU2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rpb25UaW1lKSwgdG9Vc2VyQ29udGVudEluamVj
dGVkRnJhbWVzKGluamVjdGVkRnJhbWVzKSB9LCBBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1h
bFdvcmxkKCkpOwotICAgIHRvSW1wbChwYWdlR3JvdXBSZWYpLT51c2VyQ29udGVudENvbnRyb2xs
ZXIoKS5hZGRVc2VyU2NyaXB0KHVzZXJTY3JpcHQuZ2V0KCkpOworICAgIHRvSW1wbChwYWdlR3Jv
dXBSZWYpLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU2NyaXB0KHVzZXJTY3JpcHQu
Z2V0KCksIEluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseTo6Tm8pOwogfQogCiB2b2lkIFdLUGFn
ZUdyb3VwUmVtb3ZlQWxsVXNlclNjcmlwdHMoV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmKQpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tVc2VyQ29udGVudENvbnRyb2xs
ZXJSZWYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
VXNlckNvbnRlbnRDb250cm9sbGVyUmVmLmNwcAkocmV2aXNpb24gMjMzNzM5KQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWYuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQVBJQXJyYXkuaCIKICNp
bmNsdWRlICJBUElDb250ZW50UnVsZUxpc3QuaCIKICNpbmNsdWRlICJBUElVc2VyU2NyaXB0Lmgi
CisjaW5jbHVkZSAiSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5LmgiCiAjaW5jbHVkZSAiV0tB
UElDYXN0LmgiCiAjaW5jbHVkZSAiV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaCIKIApA
QCAtNTIsNyArNTMsNyBAQCBXS0FycmF5UmVmIFdLVXNlckNvbnRlbnRDb250cm9sbGVyQ29weVVz
CiAKIHZvaWQgV0tVc2VyQ29udGVudENvbnRyb2xsZXJBZGRVc2VyU2NyaXB0KFdLVXNlckNvbnRl
bnRDb250cm9sbGVyUmVmIHVzZXJDb250ZW50Q29udHJvbGxlclJlZiwgV0tVc2VyU2NyaXB0UmVm
IHVzZXJTY3JpcHRSZWYpCiB7Ci0gICAgdG9JbXBsKHVzZXJDb250ZW50Q29udHJvbGxlclJlZikt
PmFkZFVzZXJTY3JpcHQoKnRvSW1wbCh1c2VyU2NyaXB0UmVmKSk7CisgICAgdG9JbXBsKHVzZXJD
b250ZW50Q29udHJvbGxlclJlZiktPmFkZFVzZXJTY3JpcHQoKnRvSW1wbCh1c2VyU2NyaXB0UmVm
KSwgSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5OjpObyk7CiB9CiAKIHZvaWQgV0tVc2VyQ29u
dGVudENvbnRyb2xsZXJSZW1vdmVBbGxVc2VyU2NyaXB0cyhXS1VzZXJDb250ZW50Q29udHJvbGxl
clJlZiB1c2VyQ29udGVudENvbnRyb2xsZXJSZWYpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVy
Lm1tCShyZXZpc2lvbiAyMzM3MzkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMw
LDcgQEAKIAogI2ltcG9ydCAiQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAjaW1wb3J0ICJB
UElVc2VyQ29udGVudFdvcmxkLmgiCisjaW1wb3J0ICJJbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRl
bHkuaCIKICNpbXBvcnQgIldLQ29udGVudFJ1bGVMaXN0SW50ZXJuYWwuaCIKICNpbXBvcnQgIldL
RnJhbWVJbmZvSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLTlNBcnJheS5oIgpAQCAtODksNyArOTAs
NyBAQCAtIChOU0FycmF5ICopdXNlclNjcmlwdHMKIAogLSAodm9pZClhZGRVc2VyU2NyaXB0OihX
S1VzZXJTY3JpcHQgKil1c2VyU2NyaXB0CiB7Ci0gICAgX3VzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5LT5hZGRVc2VyU2NyaXB0KCp1c2VyU2NyaXB0LT5fdXNlclNjcmlwdCk7CisgICAgX3VzZXJD
b250ZW50Q29udHJvbGxlclByb3h5LT5hZGRVc2VyU2NyaXB0KCp1c2VyU2NyaXB0LT5fdXNlclNj
cmlwdCwgV2ViS2l0OjpJbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHk6Ok5vKTsKIH0KIAogLSAo
dm9pZClyZW1vdmVBbGxVc2VyU2NyaXB0cwpAQCAtMTc3LDYgKzE3OCwxMSBAQCAtICh2b2lkKV9y
ZW1vdmVBbGxVc2VyU2NyaXB0c0Fzc29jaWF0ZWRXCiAgICAgX3VzZXJDb250ZW50Q29udHJvbGxl
clByb3h5LT5yZW1vdmVBbGxVc2VyU2NyaXB0cygqdXNlckNvbnRlbnRXb3JsZC0+X3VzZXJDb250
ZW50V29ybGQpOwogfQogCistICh2b2lkKV9hZGRVc2VyU2NyaXB0SW1tZWRpYXRlbHk6KFdLVXNl
clNjcmlwdCAqKXVzZXJTY3JpcHQKK3sKKyAgICBfdXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkt
PmFkZFVzZXJTY3JpcHQoKnVzZXJTY3JpcHQtPl91c2VyU2NyaXB0LCBXZWJLaXQ6OkluamVjdFVz
ZXJTY3JpcHRJbW1lZGlhdGVseTo6WWVzKTsKK30KKwogLSAodm9pZClfYWRkVXNlckNvbnRlbnRG
aWx0ZXI6KF9XS1VzZXJDb250ZW50RmlsdGVyICopdXNlckNvbnRlbnRGaWx0ZXIKIHsKICNpZiBF
TkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyUHJpdmF0ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxl
clByaXZhdGUuaAkocmV2aXNpb24gMjMzNzM5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNyw2ICszNyw4IEBACiAtICh2b2lkKV9yZW1vdmVVc2VyU2NyaXB0OihXS1VzZXJTY3Jp
cHQgKil1c2VyU2NyaXB0IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEyKSwgaW9zKDEwLjAp
KTsKIC0gKHZvaWQpX3JlbW92ZUFsbFVzZXJTY3JpcHRzQXNzb2NpYXRlZFdpdGhVc2VyQ29udGVu
dFdvcmxkOihfV0tVc2VyQ29udGVudFdvcmxkICopdXNlckNvbnRlbnRXb3JsZCBXS19BUElfQVZB
SUxBQkxFKG1hY29zeCgxMC4xMiksIGlvcygxMC4wKSk7CiAKKy0gKHZvaWQpX2FkZFVzZXJTY3Jp
cHRJbW1lZGlhdGVseTooV0tVc2VyU2NyaXB0ICopdXNlclNjcmlwdCBXS19BUElfQVZBSUxBQkxF
KG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogLSAodm9pZClfYWRkVXNl
ckNvbnRlbnRGaWx0ZXI6KF9XS1VzZXJDb250ZW50RmlsdGVyICopdXNlckNvbnRlbnRGaWx0ZXIg
V0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTEpLCBpb3MoOS4wKSk7CiAtICh2b2lkKV9yZW1v
dmVVc2VyQ29udGVudEZpbHRlcjooTlNTdHJpbmcgKil1c2VyQ29udGVudEZpbHRlck5hbWUgV0tf
QVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTEpLCBpb3MoOS4wKSk7CiAtICh2b2lkKV9yZW1vdmVB
bGxVc2VyQ29udGVudEZpbHRlcnMgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTEpLCBpb3Mo
OS4wKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2Vy
Q29udGVudE1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5jcHAJKHJldmlzaW9uIDIzMzczOSkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50TWFu
YWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lkIHdlYmtpdF91
c2VyX2NvbnRlbnRfbWFuYWdlcl9hZGRfc2NyCiB7CiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJL
SVRfSVNfVVNFUl9DT05URU5UX01BTkFHRVIobWFuYWdlcikpOwogICAgIGdfcmV0dXJuX2lmX2Zh
aWwoc2NyaXB0KTsKLSAgICBtYW5hZ2VyLT5wcml2LT51c2VyQ29udGVudENvbnRyb2xsZXItPmFk
ZFVzZXJTY3JpcHQod2Via2l0VXNlclNjcmlwdEdldFVzZXJTY3JpcHQoc2NyaXB0KSk7CisgICAg
bWFuYWdlci0+cHJpdi0+dXNlckNvbnRlbnRDb250cm9sbGVyLT5hZGRVc2VyU2NyaXB0KHdlYmtp
dFVzZXJTY3JpcHRHZXRVc2VyU2NyaXB0KHNjcmlwdCksIEluamVjdFVzZXJTY3JpcHRJbW1lZGlh
dGVseTo6Tm8pOwogfQogCiAvKioKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJD
b250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eS5jcHAJKHJldmlzaW9uIDIzMzczOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkFQSVVzZXJTY3JpcHQuaCIKICNpbmNs
dWRlICJBUElVc2VyU3R5bGVTaGVldC5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNp
bmNsdWRlICJJbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkuaCIKICNpbmNsdWRlICJOZXR3b3Jr
Q29udGVudFJ1bGVMaXN0TWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nl
c3NQcm94eS5oIgogI2luY2x1ZGUgIldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaCIKQEAgLTE2
Nyw3ICsxNjgsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vCiAg
ICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6
UmVtb3ZlVXNlckNvbnRlbnRXb3JsZHMod29ybGRzVG9SZW1vdmUpLCBpZGVudGlmaWVyKCkudG9V
SW50NjQoKSk7CiB9CiAKLXZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVz
ZXJTY3JpcHQoQVBJOjpVc2VyU2NyaXB0JiB1c2VyU2NyaXB0KQordm9pZCBXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eTo6YWRkVXNlclNjcmlwdChBUEk6OlVzZXJTY3JpcHQmIHVzZXJTY3Jp
cHQsIEluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseSBpbW1lZGlhdGVseSkKIHsKICAgICBSZWY8
QVBJOjpVc2VyQ29udGVudFdvcmxkPiB3b3JsZCA9IHVzZXJTY3JpcHQudXNlckNvbnRlbnRXb3Js
ZCgpOwogCkBAIC0xNzYsNyArMTc3LDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eTo6YWRkVQogICAgIG1fdXNlclNjcmlwdHMtPmVsZW1lbnRzKCkuYXBwZW5kKCZ1c2VyU2Ny
aXB0KTsKIAogICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMp
Ci0gICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxl
cjo6QWRkVXNlclNjcmlwdHMoeyB7IHVzZXJTY3JpcHQuaWRlbnRpZmllcigpLCB3b3JsZC0+aWRl
bnRpZmllcigpLCB1c2VyU2NyaXB0LnVzZXJTY3JpcHQoKSB9IH0pLCBpZGVudGlmaWVyKCkudG9V
SW50NjQoKSk7CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50
Q29udHJvbGxlcjo6QWRkVXNlclNjcmlwdHMoeyB7IHVzZXJTY3JpcHQuaWRlbnRpZmllcigpLCB3
b3JsZC0+aWRlbnRpZmllcigpLCB1c2VyU2NyaXB0LnVzZXJTY3JpcHQoKSB9IH0sIGltbWVkaWF0
ZWx5KSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogfQogCiB2b2lkIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyU2NyaXB0KEFQSTo6VXNlclNjcmlwdCYgdXNlclNj
cmlwdCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaAkocmV2aXNp
b24gMjMzNzM5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTksNyBA
QCBjbGFzcyBXZWJQcm9jZXNzUHJveHk7CiBjbGFzcyBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjsK
IHN0cnVjdCBGcmFtZUluZm9EYXRhOwogc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM7
CitlbnVtIGNsYXNzIEluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseTsKIAogY2xhc3MgV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2Jq
ZWN0OjpUeXBlOjpVc2VyQ29udGVudENvbnRyb2xsZXI+LCBwcml2YXRlIElQQzo6TWVzc2FnZVJl
Y2VpdmVyIHsKIHB1YmxpYzoKQEAgLTc1LDcgKzc2LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVt
b3ZlUHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmKTsKIAogICAgIEFQSTo6QXJyYXkmIHVzZXJTY3Jp
cHRzKCkgeyByZXR1cm4gbV91c2VyU2NyaXB0cy5nZXQoKTsgfQotICAgIHZvaWQgYWRkVXNlclNj
cmlwdChBUEk6OlVzZXJTY3JpcHQmKTsKKyAgICB2b2lkIGFkZFVzZXJTY3JpcHQoQVBJOjpVc2Vy
U2NyaXB0JiwgSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KTsKICAgICB2b2lkIHJlbW92ZVVz
ZXJTY3JpcHQoQVBJOjpVc2VyU2NyaXB0Jik7CiAgICAgdm9pZCByZW1vdmVBbGxVc2VyU2NyaXB0
cyhBUEk6OlVzZXJDb250ZW50V29ybGQmKTsKICAgICB2b2lkIHJlbW92ZUFsbFVzZXJTY3JpcHRz
KCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDIzMzczOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTMzMTgsNiArMzMxOCw3IEBACiAJ
CTQxMDNGQkEyMjA2MUJEQjgwMEMyRUFGOCAvKiBOZXR3b3JrTG9hZENoZWNrZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya0xvYWRDaGVja2VyLmNwcDsg
cGF0aCA9IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxMDQ4MkNCMURERDJGQjUwMEYwMDZEMCAvKiBSVENOZXR3b3Jr
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJUQ05ldHdvcmsuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTA0ODJDQzFEREQyRkI1MDBGMDA2RDAg
LyogUlRDTmV0d29yay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSVENOZXR3
b3JrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMTE0MzYzMjBGNjc3QjEwMDI2
RjkxMiAvKiBJbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzg3NSAvKiBOZXR3b3JrUlRD
UmVzb2x2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29y
a1JUQ1Jlc29sdmVyLmNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRD
UmVzb2x2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTEyQjU0NzFGOUZE
M0FCMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwOyBwYXRo
ID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExMkI1NDgxRjlGRDNBQzAwRTY3ODc1IC8qIE5l
dHdvcmtSVENSZXNvbHZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3
b3JrUlRDUmVzb2x2ZXIuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRD
UmVzb2x2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU0NjcsNiArNTQ2OCw3
IEBACiAJCTFBQUYwOEFBMTkyNjkzMEIwMEI2MzkwQyAvKiBVc2VyQ29udGVudCAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNDExMTQzNjMyMEY2NzdCMTAw
MjZGOTEyIC8qIEluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseS5oICovLAogCQkJCTFBQUYwOEFC
MTkyNjkzNjcwMEI2MzkwQyAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwICovLAogCQkJ
CTFBQUYwOEFDMTkyNjkzNjcwMEI2MzkwQyAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaCAq
LywKIAkJCQkxQUFGMDhCNDE5MjY5RTI0MDBCNjM5MEMgLyogV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyLm1lc3NhZ2VzLmluICovLApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJD
b250ZW50L0luamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9JbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRl
bHkuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRl
bnQvSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CisgICAgCitlbnVtIGNsYXNzIEluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseSB7IE5v
LCBZZXMgfTsKKyAgICAKK30KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0
IEVudW1UcmFpdHM8V2ViS2l0OjpJbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHk+IHsKKyAgICB1
c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgIFdlYktpdDo6SW5qZWN0VXNlclNjcmlwdElt
bWVkaWF0ZWx5LAorICAgIFdlYktpdDo6SW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5OjpObywK
KyAgICBXZWJLaXQ6OkluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseTo6WWVzCisgICAgPjsKK307
CisKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2Vy
Q29udGVudENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAy
MzM3MzkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAj
aW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkZyYW1lSW5mb0RhdGEuaCIKKyNp
bmNsdWRlICJJbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkuaCIKICNpbmNsdWRlICJJbmplY3Rl
ZEJ1bmRsZVNjcmlwdFdvcmxkLmgiCiAjaW5jbHVkZSAiV2ViQ29tcGlsZWRDb250ZW50UnVsZUxp
c3QuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgpAQCAtMzYsNiArMzcsNyBAQAogI2luY2x1ZGUg
IldlYlVzZXJDb250ZW50Q29udHJvbGxlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRE9NV3Jh
cHBlcldvcmxkLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJTdHlsZVNoZWV0Lmg+CkBAIC0xMjIs
NyArMTI0LDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZVVzZQogICAg
IH0KIH0KIAotdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJTY3JpcHRzKGNv
bnN0IFZlY3RvcjxXZWJVc2VyU2NyaXB0RGF0YT4mIHVzZXJTY3JpcHRzKQordm9pZCBXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJTY3JpcHRzKFZlY3RvcjxXZWJVc2VyU2NyaXB0RGF0
YT4mJiB1c2VyU2NyaXB0cywgSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5IGltbWVkaWF0ZWx5
KQogewogICAgIGZvciAoY29uc3QgYXV0byYgdXNlclNjcmlwdERhdGEgOiB1c2VyU2NyaXB0cykg
ewogICAgICAgICBhdXRvIGl0ID0gd29ybGRNYXAoKS5maW5kKHVzZXJTY3JpcHREYXRhLndvcmxk
SWRlbnRpZmllcik7CkBAIC0xMzIsNyArMTM0LDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRy
b2xsZXI6OmFkZFVzZXJTYwogICAgICAgICB9CiAKICAgICAgICAgVXNlclNjcmlwdCBzY3JpcHQg
PSB1c2VyU2NyaXB0RGF0YS51c2VyU2NyaXB0OwotICAgICAgICBhZGRVc2VyU2NyaXB0SW50ZXJu
YWwoKml0LT52YWx1ZS5maXJzdCwgdXNlclNjcmlwdERhdGEuaWRlbnRpZmllciwgV1RGTW92ZShz
Y3JpcHQpKTsKKyAgICAgICAgYWRkVXNlclNjcmlwdEludGVybmFsKCppdC0+dmFsdWUuZmlyc3Qs
IHVzZXJTY3JpcHREYXRhLmlkZW50aWZpZXIsIFdURk1vdmUoc2NyaXB0KSwgaW1tZWRpYXRlbHkp
OwogICAgIH0KIH0KIApAQCAtMzYwLDE1ICszNjIsMzEgQEAgdm9pZCBXZWJVc2VyQ29udGVudENv
bnRyb2xsZXI6OnJlbW92ZUFsbAogfQogI2VuZGlmCiAKLXZvaWQgV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyOjphZGRVc2VyU2NyaXB0SW50ZXJuYWwoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYg
d29ybGQsIHVpbnQ2NF90IHVzZXJTY3JpcHRJZGVudGlmaWVyLCBVc2VyU2NyaXB0JiYgdXNlclNj
cmlwdCkKK3ZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyU2NyaXB0SW50ZXJu
YWwoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYgd29ybGQsIHVpbnQ2NF90IHVzZXJTY3JpcHRJ
ZGVudGlmaWVyLCBVc2VyU2NyaXB0JiYgdXNlclNjcmlwdCwgSW5qZWN0VXNlclNjcmlwdEltbWVk
aWF0ZWx5IGltbWVkaWF0ZWx5KQogeworICAgIGlmIChpbW1lZGlhdGVseSA9PSBJbmplY3RVc2Vy
U2NyaXB0SW1tZWRpYXRlbHk6OlllcykgeworICAgICAgICBQYWdlOjpmb3JFYWNoUGFnZShbJl0g
KGF1dG8mIHBhZ2UpIHsKKyAgICAgICAgICAgIGlmICgmcGFnZS51c2VyQ29udGVudFByb3ZpZGVy
KCkgIT0gdGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGF1dG8m
IG1haW5GcmFtZSA9IHBhZ2UubWFpbkZyYW1lKCk7CisgICAgICAgICAgICBpZiAodXNlclNjcmlw
dC5pbmplY3RlZEZyYW1lcygpID09IEluamVjdEluVG9wRnJhbWVPbmx5KSB7CisgICAgICAgICAg
ICAgICAgbWFpbkZyYW1lLmluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseSh3b3JsZC5jb3JlV29y
bGQoKSwgdXNlclNjcmlwdCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBmb3IgKGF1dG8qIGZyYW1lID0gJm1haW5GcmFtZTsgZnJhbWU7IGZy
YW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoJm1haW5GcmFtZSkpCisgICAgICAgICAg
ICAgICAgZnJhbWUtPmluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseSh3b3JsZC5jb3JlV29ybGQo
KSwgdXNlclNjcmlwdCk7CisgICAgICAgIH0pOworICAgIH0KKwogICAgIGF1dG8mIHNjcmlwdHNJ
bldvcmxkID0gbV91c2VyU2NyaXB0cy5lbnN1cmUoJndvcmxkLCBbXSB7IHJldHVybiBWZWN0b3I8
c3RkOjpwYWlyPHVpbnQ2NF90LCBXZWJDb3JlOjpVc2VyU2NyaXB0Pj4oKTsgfSkuaXRlcmF0b3It
PnZhbHVlOwogICAgIHNjcmlwdHNJbldvcmxkLmFwcGVuZChzdGQ6Om1ha2VfcGFpcih1c2VyU2Ny
aXB0SWRlbnRpZmllciwgV1RGTW92ZSh1c2VyU2NyaXB0KSkpOwogfQogCiB2b2lkIFdlYlVzZXJD
b250ZW50Q29udHJvbGxlcjo6YWRkVXNlclNjcmlwdChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxk
JiB3b3JsZCwgVXNlclNjcmlwdCYmIHVzZXJTY3JpcHQpCiB7Ci0gICAgYWRkVXNlclNjcmlwdElu
dGVybmFsKHdvcmxkLCAwLCBXVEZNb3ZlKHVzZXJTY3JpcHQpKTsKKyAgICBhZGRVc2VyU2NyaXB0
SW50ZXJuYWwod29ybGQsIDAsIFdURk1vdmUodXNlclNjcmlwdCksIEluamVjdFVzZXJTY3JpcHRJ
bW1lZGlhdGVseTo6Tm8pOwogfQogCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVt
b3ZlVXNlclNjcmlwdFdpdGhVUkwoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYgd29ybGQsIGNv
bnN0IFVSTCYgdXJsKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50
L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaAkocmV2aXNp
b24gMjMzNzM5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVz
ZXJDb250ZW50Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw3IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogY2xhc3MgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDsKIGNsYXNz
IFdlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YTsKIGNsYXNzIFdlYlVzZXJNZXNzYWdlSGFu
ZGxlckRlc2NyaXB0b3JQcm94eTsKK2VudW0gY2xhc3MgSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0
ZWx5OwogCiBjbGFzcyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXIgZmluYWwgOiBwdWJsaWMgV2Vi
Q29yZTo6VXNlckNvbnRlbnRQcm92aWRlciwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7
CiBwdWJsaWM6CkBAIC02NCw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZUFsbFVz
ZXJDb250ZW50KCk7CiAKICAgICB2b2lkIGFkZFVzZXJDb250ZW50V29ybGRzKGNvbnN0IFZlY3Rv
cjxzdGQ6OnBhaXI8dWludDY0X3QsIFN0cmluZz4+Jik7Ci0gICAgdm9pZCBhZGRVc2VyU2NyaXB0
cyhjb25zdCBWZWN0b3I8V2ViVXNlclNjcmlwdERhdGE+Jik7CisgICAgdm9pZCBhZGRVc2VyU2Ny
aXB0cyhWZWN0b3I8V2ViVXNlclNjcmlwdERhdGE+JiYsIEluamVjdFVzZXJTY3JpcHRJbW1lZGlh
dGVseSk7CiAgICAgdm9pZCBhZGRVc2VyU3R5bGVTaGVldHMoY29uc3QgVmVjdG9yPFdlYlVzZXJT
dHlsZVNoZWV0RGF0YT4mKTsKICAgICB2b2lkIGFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnMo
Y29uc3QgVmVjdG9yPFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyRGF0YT4mKTsKICNpZiBFTkFCTEUo
Q09OVEVOVF9FWFRFTlNJT05TKQpAQCAtMTAzLDcgKzEwNCw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCByZW1vdmVBbGxDb250ZW50UnVsZUxpc3RzKCk7CiAjZW5kaWYKIAotICAgIHZvaWQgYWRkVXNl
clNjcmlwdEludGVybmFsKEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQmLCB1aW50NjRfdCB1c2Vy
U2NyaXB0SWRlbnRpZmllciwgV2ViQ29yZTo6VXNlclNjcmlwdCYmKTsKKyAgICB2b2lkIGFkZFVz
ZXJTY3JpcHRJbnRlcm5hbChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiwgdWludDY0X3QgdXNl
clNjcmlwdElkZW50aWZpZXIsIFdlYkNvcmU6OlVzZXJTY3JpcHQmJiwgSW5qZWN0VXNlclNjcmlw
dEltbWVkaWF0ZWx5KTsKICAgICB2b2lkIHJlbW92ZVVzZXJTY3JpcHRJbnRlcm5hbChJbmplY3Rl
ZEJ1bmRsZVNjcmlwdFdvcmxkJiwgdWludDY0X3QgdXNlclNjcmlwdElkZW50aWZpZXIpOwogICAg
IHZvaWQgYWRkVXNlclN0eWxlU2hlZXRJbnRlcm5hbChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxk
JiwgdWludDY0X3QgdXNlclN0eWxlU2hlZXRJZGVudGlmaWVyLCBXZWJDb3JlOjpVc2VyU3R5bGVT
aGVldCYmKTsKICAgICB2b2lkIHJlbW92ZVVzZXJTdHlsZVNoZWV0SW50ZXJuYWwoSW5qZWN0ZWRC
dW5kbGVTY3JpcHRXb3JsZCYsIHVpbnQ2NF90IHVzZXJTdHlsZVNoZWV0SWRlbnRpZmllcik7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIubWVzc2FnZXMuaW4JKHJl
dmlzaW9uIDIzMzczOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXIubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTI3
LDcgKzI3LDcgQEAgbWVzc2FnZXMgLT4gV2ViVXNlckNvbnRlbnRDb250cm9sbGVyIHsKICAgICBB
ZGRVc2VyQ29udGVudFdvcmxkcyhWZWN0b3I8c3RkOjpwYWlyPHVpbnQ2NF90LCBTdHJpbmc+PiB3
b3JsZHMpOwogICAgIFJlbW92ZVVzZXJDb250ZW50V29ybGRzKFZlY3Rvcjx1aW50NjRfdD4gd29y
bGRJZGVudGlmaWVycyk7CiAKLSAgICBBZGRVc2VyU2NyaXB0cyhWZWN0b3I8c3RydWN0IFdlYktp
dDo6V2ViVXNlclNjcmlwdERhdGE+IHVzZXJTY3JpcHRzKTsKKyAgICBBZGRVc2VyU2NyaXB0cyhW
ZWN0b3I8c3RydWN0IFdlYktpdDo6V2ViVXNlclNjcmlwdERhdGE+IHVzZXJTY3JpcHRzLCBlbnVt
IFdlYktpdDo6SW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5IGltbWVkaWF0ZWx5KTsKICAgICBS
ZW1vdmVVc2VyU2NyaXB0KHVpbnQ2NF90IHdvcmxkSWRlbnRpZmllciwgdWludDY0X3QgaWRlbnRp
Zmllcik7CiAgICAgUmVtb3ZlQWxsVXNlclNjcmlwdHMoVmVjdG9yPHVpbnQ2NF90PiB3b3JsZElk
ZW50aWZpZXJzKTsKIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAJKHJldmlzaW9uIDIzMzczOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBACiAj
aW5jbHVkZSAiRmluZENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJGb3JtRGF0YVJlZmVyZW5jZS5o
IgogI2luY2x1ZGUgIkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgiCisjaW5j
bHVkZSAiSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRC
dW5kbGUuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdC5oIgogI2lu
Y2x1ZGUgIkluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQuaCIKQEAgLTYxMiw3ICs2MTMsNyBAQCBX
ZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnCiAgICAgICAgIHJlZ2lzdGVy
VVJMU2NoZW1lSGFuZGxlcihpdGVyYXRvci52YWx1ZSwgaXRlcmF0b3Iua2V5KTsKIAogICAgIG1f
dXNlckNvbnRlbnRDb250cm9sbGVyLT5hZGRVc2VyQ29udGVudFdvcmxkcyhwYXJhbWV0ZXJzLnVz
ZXJDb250ZW50V29ybGRzKTsKLSAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+YWRkVXNlclNj
cmlwdHMocGFyYW1ldGVycy51c2VyU2NyaXB0cyk7CisgICAgbV91c2VyQ29udGVudENvbnRyb2xs
ZXItPmFkZFVzZXJTY3JpcHRzKFdURk1vdmUocGFyYW1ldGVycy51c2VyU2NyaXB0cyksIEluamVj
dFVzZXJTY3JpcHRJbW1lZGlhdGVseTo6Tm8pOwogICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVy
LT5hZGRVc2VyU3R5bGVTaGVldHMocGFyYW1ldGVycy51c2VyU3R5bGVTaGVldHMpOwogICAgIG1f
dXNlckNvbnRlbnRDb250cm9sbGVyLT5hZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzKHBhcmFt
ZXRlcnMubWVzc2FnZUhhbmRsZXJzKTsKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpJ
bmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2
aXNpb24gMjMzNzM5KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTUgQEAKKzIwMTgtMDctMTEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Vi
a2l0Lm9yZz4KKworICAgICAgICBBZGQgU1BJIGZvciBpbW1lZGlhdGUgaW5qZWN0aW9uIG9mIHVz
ZXIgc2NyaXB0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTczMzQyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yOTIwMjI4NT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBCcmFkeSBFaWRzb24sIFlvdWVubiBGYWJsZXQsIGFuZCBHZW9mZiBHYXJlbi4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1VzZXJDb250ZW50
Q29udHJvbGxlci5tbToKKyAgICAgICAgKHdhaXRGb3JNZXNzYWdlKToKKyAgICAgICAgKFRFU1Qp
OgorCiAyMDE4LTA3LTExICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBGaXggcmVtYWluaW5nIENyb3NzLU9yaWdpbi1SZXNvdXJjZS1Qb2xpY3kgZmFpbHVyZXMs
IGlmIGFueQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Vc2Vy
Q29udGVudENvbnRyb2xsZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9Vc2VyQ29udGVudENvbnRyb2xsZXIubW0JKHJldmlzaW9uIDIzMzcz
OSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlckNvbnRlbnRD
b250cm9sbGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAjaW1wb3J0IDxX
ZWJLaXQvX1dLVXNlckNvbnRlbnRXb3JsZC5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1VzZXJTdHls
ZVNoZWV0Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvVmVjdG9y
Lmg+CiAKICNpZiBXS19BUElfRU5BQkxFRAogCkBAIC01NSw3ICs1Niw3IEBAIC0gKHZvaWQpd2Vi
VmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWQKIEBlbmQKIAogc3RhdGljIGJvb2wgcmVjZWl2
ZWRTY3JpcHRNZXNzYWdlOwotc3RhdGljIFJldGFpblB0cjxXS1NjcmlwdE1lc3NhZ2U+IGxhc3RT
Y3JpcHRNZXNzYWdlOworc3RhdGljIFZlY3RvcjxSZXRhaW5QdHI8V0tTY3JpcHRNZXNzYWdlPj4g
c2NyaXB0TWVzc2FnZXM7CiAKIEBpbnRlcmZhY2UgU2NyaXB0TWVzc2FnZUhhbmRsZXIgOiBOU09i
amVjdCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4KIEBlbmQKQEAgLTY1LDcgKzY2LDcgQEAgQGlu
dGVyZmFjZSBTY3JpcHRNZXNzYWdlSGFuZGxlciA6IE5TT2JqZQogLSAodm9pZCl1c2VyQ29udGVu
dENvbnRyb2xsZXI6KFdLVXNlckNvbnRlbnRDb250cm9sbGVyICopdXNlckNvbnRlbnRDb250cm9s
bGVyIGRpZFJlY2VpdmVTY3JpcHRNZXNzYWdlOihXS1NjcmlwdE1lc3NhZ2UgKiltZXNzYWdlCiB7
CiAgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gdHJ1ZTsKLSAgICBsYXN0U2NyaXB0TWVzc2Fn
ZSA9IG1lc3NhZ2U7CisgICAgc2NyaXB0TWVzc2FnZXMuYXBwZW5kKG1lc3NhZ2UpOwogfQogCiBA
ZW5kCkBAIC04OCw3ICs4OSw3IEBAIFRFU1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIFNjcmlw
dE1lc3MKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2Fn
ZSk7CiAgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7CiAKLSAgICBFWFBFQ1RfV0tf
U1RSRVEoQCJIZWxsbyIsIChOU1N0cmluZyAqKVtsYXN0U2NyaXB0TWVzc2FnZSBib2R5XSk7Cisg
ICAgRVhQRUNUX1dLX1NUUkVRKEAiSGVsbG8iLCAoTlNTdHJpbmcgKilbc2NyaXB0TWVzc2FnZXNb
MF0gYm9keV0pOwogfQogCiBURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBTY3JpcHRNZXNz
YWdlSGFuZGxlckJhc2ljUG9zdElzb2xhdGVkV29ybGQpCkBAIC0xMTUsNyArMTE2LDcgQEAgVEVT
VChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgU2NyaXB0TWVzcwogICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKICAgICByZWNlaXZlZFNjcmlwdE1l
c3NhZ2UgPSBmYWxzZTsKIAotICAgIEVYUEVDVF9XS19TVFJFUShAIkhlbGxvIiwgKE5TU3RyaW5n
ICopW2xhc3RTY3JpcHRNZXNzYWdlIGJvZHldKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoQCJIZWxs
byIsIChOU1N0cmluZyAqKVtzY3JpcHRNZXNzYWdlc1swXSBib2R5XSk7CiAKICAgICBpZiAoIWlz
RG9uZVdpdGhOYXZpZ2F0aW9uKQogICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlz
RG9uZVdpdGhOYXZpZ2F0aW9uKTsKQEAgLTE2Niw3ICsxNjcsNyBAQCBURVNUKFdLVXNlckNvbnRl
bnRDb250cm9sbGVyLCBTY3JpcHRNZXNzCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZy
ZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOwogICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNl
OwogCi0gICAgRVhQRUNUX1dLX1NUUkVRKEAiUEFTUyIsIChOU1N0cmluZyAqKVtsYXN0U2NyaXB0
TWVzc2FnZSBib2R5XSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKEAiUEFTUyIsIChOU1N0cmluZyAq
KVtzY3JpcHRNZXNzYWdlc1swXSBib2R5XSk7CiAKICAgICBbdXNlckNvbnRlbnRDb250cm9sbGVy
IHJlbW92ZVNjcmlwdE1lc3NhZ2VIYW5kbGVyRm9yTmFtZTpAImhhbmRsZXJUb1JlbW92ZSJdOwog
CkBAIC0xODEsNyArMTgyLDcgQEAgVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgU2NyaXB0
TWVzcwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdl
KTsKICAgICByZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsKIAotICAgIEVYUEVDVF9XS19T
VFJFUShAIlBBU1MiLCAoTlNTdHJpbmcgKilbbGFzdFNjcmlwdE1lc3NhZ2UgYm9keV0pOworICAg
IEVYUEVDVF9XS19TVFJFUShAIlBBU1MiLCAoTlNTdHJpbmcgKilbc2NyaXB0TWVzc2FnZXNbMF0g
Ym9keV0pOwogfQogCiBURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBTY3JpcHRNZXNzYWdl
SGFuZGxlckNhbGxSZW1vdmVkSGFuZGxlcikKQEAgLTIxNCw3ICsyMTUsNyBAQCBURVNUKFdLVXNl
ckNvbnRlbnRDb250cm9sbGVyLCBTY3JpcHRNZXNzCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOwogICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9
IGZhbHNlOwogCi0gICAgRVhQRUNUX1dLX1NUUkVRKEAiUEFTUyIsIChOU1N0cmluZyAqKVtsYXN0
U2NyaXB0TWVzc2FnZSBib2R5XSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKEAiUEFTUyIsIChOU1N0
cmluZyAqKVtzY3JpcHRNZXNzYWdlc1swXSBib2R5XSk7CiB9CiAKIHN0YXRpYyBSZXRhaW5QdHI8
V0tXZWJWaWV3PiB3ZWJWaWV3Rm9yU2NyaXB0TWVzc2FnZUhhbmRsZXJNdWx0aXBsZUhhbmRsZXJS
ZW1vdmFsVGVzdChXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uKQpAQCAtMjU1
LDcgKzI1Niw3IEBAIFRFU1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIFNjcmlwdE1lc3MKICAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CiAgICAg
cmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7CiAKLSAgICBFWFBFQ1RfV0tfU1RSRVEoQCJQ
QVNTIiwgKE5TU3RyaW5nICopW2xhc3RTY3JpcHRNZXNzYWdlIGJvZHldKTsKKyAgICBFWFBFQ1Rf
V0tfU1RSRVEoQCJQQVNTIiwgKE5TU3RyaW5nICopW3NjcmlwdE1lc3NhZ2VzWzBdIGJvZHldKTsK
IH0KIAogI2lmICFQTEFURk9STShJT1MpIC8vIEZJWE1FOiBoYW5ncyBpbiB0aGUgaU9TIHNpbXVs
YXRvcgpAQCAtMjc1LDEwICsyNzYsOSBAQCBURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBT
Y3JpcHRNZXNzCiAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0
TWVzc2FnZSk7CiAKLSAgICBFWFBFQ1RfV0tfU1RSRVEoQCJGaXJzdCBNZXNzYWdlIiwgKE5TU3Ry
aW5nICopW2xhc3RTY3JpcHRNZXNzYWdlIGJvZHldKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoQCJG
aXJzdCBNZXNzYWdlIiwgKE5TU3RyaW5nICopW3NjcmlwdE1lc3NhZ2VzWzBdIGJvZHldKTsKICAg
ICAKICAgICByZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsKLSAgICBsYXN0U2NyaXB0TWVz
c2FnZSA9IG51bGxwdHI7CiAKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKICAg
ICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CkBAIC0yODcsNyAr
Mjg3LDcgQEAgVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgU2NyaXB0TWVzcwogCiAgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOwogCi0gICAg
RVhQRUNUX1dLX1NUUkVRKEAiU2Vjb25kIE1lc3NhZ2UiLCAoTlNTdHJpbmcgKilbbGFzdFNjcmlw
dE1lc3NhZ2UgYm9keV0pOyAgICAKKyAgICBFWFBFQ1RfV0tfU1RSRVEoQCJTZWNvbmQgTWVzc2Fn
ZSIsIChOU1N0cmluZyAqKVtzY3JpcHRNZXNzYWdlc1sxXSBib2R5XSk7CiB9CiAjZW5kaWYKIApA
QCAtMzExLDcgKzMxMSw3IEBAIFRFU1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIFNjcmlwdE1l
c3MKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7
CiAgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7CiAKLSAgICBFWFBFQ1RfV0tfU1RS
RVEoQCJQQVNTMSIsIChOU1N0cmluZyAqKVtsYXN0U2NyaXB0TWVzc2FnZSBib2R5XSk7CisgICAg
RVhQRUNUX1dLX1NUUkVRKEAiUEFTUzEiLCAoTlNTdHJpbmcgKilbc2NyaXB0TWVzc2FnZXNbMF0g
Ym9keV0pOwogCiAgICAgW3VzZXJDb250ZW50Q29udHJvbGxlciByZW1vdmVTY3JpcHRNZXNzYWdl
SGFuZGxlckZvck5hbWU6QCJoYW5kbGVyVG9SZXBsYWNlIl07CiAgICAgW3VzZXJDb250ZW50Q29u
dHJvbGxlciBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdldCgpIG5hbWU6QCJoYW5k
bGVyVG9SZXBsYWNlIl07CkBAIC0zMjIsNyArMzIyLDcgQEAgVEVTVChXS1VzZXJDb250ZW50Q29u
dHJvbGxlciwgU2NyaXB0TWVzcwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2
ZWRTY3JpcHRNZXNzYWdlKTsKICAgICByZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsKIAot
ICAgIEVYUEVDVF9XS19TVFJFUShAIlBBU1MyIiwgKE5TU3RyaW5nICopW2xhc3RTY3JpcHRNZXNz
YWdlIGJvZHldKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoQCJQQVNTMiIsIChOU1N0cmluZyAqKVtz
Y3JpcHRNZXNzYWdlc1sxXSBib2R5XSk7CiB9CiAKIHN0YXRpYyBOU1N0cmluZyAqc3R5bGVTaGVl
dFNvdXJjZSA9IEAiYm9keSB7IGJhY2tncm91bmQtY29sb3I6IGdyZWVuICFpbXBvcnRhbnQ7IH0i
OwpAQCAtNTkyLDQgKzU5Miw1MCBAQCBURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBVc2Vy
U2NyaXB0CiAgICAgRVhQRUNUX0VRKHVzZXJTY3JpcHRBc3NvY2lhdGVkV2l0aFdvcmxkMi5nZXQo
KSwgW3VzZXJDb250ZW50Q29udHJvbGxlciB1c2VyU2NyaXB0c11bMV0pOwogfQogCitzdGF0aWMg
dm9pZCB3YWl0Rm9yTWVzc2FnZXMoc2l6ZV90IGV4cGVjdGVkQ291bnQpCit7CisgICAgd2hpbGUg
KHNjcmlwdE1lc3NhZ2VzLnNpemUoKSA8IGV4cGVjdGVkQ291bnQpIHsKKyAgICAgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOworICAgICAgICByZWNl
aXZlZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGNvbXBh
cmVNZXNzYWdlcyhWZWN0b3I8Y29uc3QgY2hhcio+JiYgZXhwZWN0ZWRNZXNzYWdlcykKK3sKKyAg
ICBFWFBFQ1RfRVEoZXhwZWN0ZWRNZXNzYWdlcy5zaXplKCksIHNjcmlwdE1lc3NhZ2VzLnNpemUo
KSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBleHBlY3RlZE1lc3NhZ2VzLnNpemUoKTsg
KytpKQorICAgICAgICBFWFBFQ1RfU1RSRVEoW1tzY3JpcHRNZXNzYWdlc1tpXSBib2R5XSBVVEY4
U3RyaW5nXSwgZXhwZWN0ZWRNZXNzYWdlc1tpXSk7Cit9CisKK1RFU1QoV0tVc2VyQ29udGVudENv
bnRyb2xsZXIsIEluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseSkKK3sKKyAgICBhdXRvIGhhbmRs
ZXIgPSBhZG9wdE5TKFtbU2NyaXB0TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBh
dXRvIHN0YXJ0QWxsRnJhbWVzID0gYWRvcHROUyhbW1dLVXNlclNjcmlwdCBhbGxvY10gaW5pdFdp
dGhTb3VyY2U6QCJ3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0
TWVzc2FnZSgnc3RhcnQgYWxsJykiIGluamVjdGlvblRpbWU6V0tVc2VyU2NyaXB0SW5qZWN0aW9u
VGltZUF0RG9jdW1lbnRTdGFydCBmb3JNYWluRnJhbWVPbmx5Ok5PXSk7CisgICAgYXV0byBlbmRN
YWluRnJhbWVPbmx5ID0gYWRvcHROUyhbW1dLVXNlclNjcmlwdCBhbGxvY10gaW5pdFdpdGhTb3Vy
Y2U6QCJ3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2Fn
ZSgnZW5kIG1haW4nKSIgaW5qZWN0aW9uVGltZTpXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lQXRE
b2N1bWVudEVuZCBmb3JNYWluRnJhbWVPbmx5OllFU10pOworCisgICAgYXV0byBjb25maWd1cmF0
aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAg
ICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdl
SGFuZGxlcjpoYW5kbGVyLmdldCgpIG5hbWU6QCJ0ZXN0SGFuZGxlciJdOworCisgICAgYXV0byB3
ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VS
ZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsK
KworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbU2ltcGxlTmF2aWdhdGlvbkRlbGVnYXRl
IGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVn
YXRlLmdldCgpXTsKKworICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3Qg
cmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNp
bXBsZS1pZnJhbWUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2Vi
S2l0QVBJLnJlc291cmNlcyJdXTsKKworICAgIGlzRG9uZVdpdGhOYXZpZ2F0aW9uID0gZmFsc2U7
CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CisgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZpc0RvbmVXaXRoTmF2aWdhdGlvbik7CisKKyAgICByZWNlaXZlZFNjcmlwdE1l
c3NhZ2UgPSBmYWxzZTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVy
XSBfYWRkVXNlclNjcmlwdEltbWVkaWF0ZWx5OnN0YXJ0QWxsRnJhbWVzLmdldCgpXTsKKyAgICAv
LyBzaW1wbGUtaWZyYW1lLmh0bWwgaGFzIGEgbWFpbiBmcmFtZSBhbmQgb25lIGlmcmFtZS4KKyAg
ICB3YWl0Rm9yTWVzc2FnZXMoMik7CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29u
dHJvbGxlcl0gX2FkZFVzZXJTY3JpcHRJbW1lZGlhdGVseTplbmRNYWluRnJhbWVPbmx5LmdldCgp
XTsKKyAgICB3YWl0Rm9yTWVzc2FnZXMoMyk7CisgICAgW3dlYlZpZXcgcmVsb2FkXTsKKyAgICB3
YWl0Rm9yTWVzc2FnZXMoNik7CisgICAgY29tcGFyZU1lc3NhZ2VzKHsic3RhcnQgYWxsIiwgInN0
YXJ0IGFsbCIsICJlbmQgbWFpbiIsICJzdGFydCBhbGwiLCAiZW5kIG1haW4iLCAic3RhcnQgYWxs
In0pOworfQorCiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>344802</attachid>
            <date>2018-07-11 18:05:30 -0700</date>
            <delta_ts>2018-07-11 19:32:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173342-20180711180529.patch</filename>
            <type>text/plain</type>
            <size>33860</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzMzczOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDE4LTA3LTExICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSBm
b3IgaW1tZWRpYXRlIGluamVjdGlvbiBvZiB1c2VyIHNjcmlwdHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzM0MgorICAgICAgICA8cmRhcjovL3By
b2JsZW0vMjkyMDIyODU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJhZHkgRWlkc29uLCBZb3Vl
bm4gRmFibGV0LCBhbmQgR2VvZmYgR2FyZW4uCisKKyAgICAgICAgVGhlIG5ldyBTUEkgaXMgV0tV
c2VyQ29udGVudENvbnRyb2xsZXIuX2FkZFVzZXJTY3JpcHRJbW1lZGlhdGVseS4KKyAgICAgICAg
SXQgaXMgY292ZXJlZCBieSBuZXcgQVBJIHRlc3RzLgorICAgICAgICBFeGlzdGluZyBmdW5jdGlv
bmFsaXR5IHJlbWFpbnMgdW5jaGFuZ2VkIHVubGVzcyB0aGUgbmV3IFNQSSBpcyBhZG9wdGVkLgor
CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6aW5q
ZWN0VXNlclNjcmlwdHMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmluamVjdFVzZXJTY3Jp
cHRJbW1lZGlhdGVseSk6CisgICAgICAgIE1vdmUgaW5qZWN0aW9uIGZ1bmN0aW9uYWxpdHkgdG8g
YWxsb3cgdXMgdG8gY2FsbCBpdCBkaXJlY3RseSBmcm9tIHRoZSBuZXcgU1BJLgorICAgICAgICAq
IHBhZ2UvRnJhbWUuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZTo6Zm9yRWFjaFBhZ2UpOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorCiAyMDE4LTA3
LTExICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggcmVt
YWluaW5nIENyb3NzLU9yaWdpbi1SZXNvdXJjZS1Qb2xpY3kgZmFpbHVyZXMsIGlmIGFueQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZS5jcHAJKHJldmlzaW9uIDIzMzczOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MzUsMjAgKzczNSwyNSBAQCB2b2lk
IEZyYW1lOjppbmplY3RVc2VyU2NyaXB0cyhVc2VyU2NyaXB0CiAgICAgICAgIHJldHVybjsKIAog
ICAgIG1fcGFnZS0+dXNlckNvbnRlbnRQcm92aWRlcigpLmZvckVhY2hVc2VyU2NyaXB0KFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGluamVjdGlvblRpbWVdKERPTVdyYXBw
ZXJXb3JsZCYgd29ybGQsIGNvbnN0IFVzZXJTY3JpcHQmIHNjcmlwdCkgewotICAgICAgICBhdXRv
KiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7Ci0gICAgICAgIGlmICghZG9jdW1lbnQpCi0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmIChzY3JpcHQuaW5qZWN0ZWRGcmFtZXMoKSA9
PSBJbmplY3RJblRvcEZyYW1lT25seSAmJiBvd25lckVsZW1lbnQoKSkKLSAgICAgICAgICAgIHJl
dHVybjsKLQotICAgICAgICBpZiAoc2NyaXB0LmluamVjdGlvblRpbWUoKSA9PSBpbmplY3Rpb25U
aW1lICYmIFVzZXJDb250ZW50VVJMUGF0dGVybjo6bWF0Y2hlc1BhdHRlcm5zKGRvY3VtZW50LT51
cmwoKSwgc2NyaXB0LndoaXRlbGlzdCgpLCBzY3JpcHQuYmxhY2tsaXN0KCkpKSB7Ci0gICAgICAg
ICAgICBpZiAobV9wYWdlKQotICAgICAgICAgICAgICAgIG1fcGFnZS0+c2V0QXNSdW5uaW5nVXNl
clNjcmlwdHMoKTsKLSAgICAgICAgICAgIG1fc2NyaXB0LT5ldmFsdWF0ZUluV29ybGQoU2NyaXB0
U291cmNlQ29kZShzY3JpcHQuc291cmNlKCksIHNjcmlwdC51cmwoKSksIHdvcmxkKTsKLSAgICAg
ICAgfQorICAgICAgICBpZiAoc2NyaXB0LmluamVjdGlvblRpbWUoKSA9PSBpbmplY3Rpb25UaW1l
KQorICAgICAgICAgICAgaW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KHdvcmxkLCBzY3JpcHQp
OwogICAgIH0pOwogfQogCit2b2lkIEZyYW1lOjppbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHko
RE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgVXNlclNjcmlwdCYgc2NyaXB0KQoreworICAg
IGF1dG8qIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKTsKKyAgICBpZiAoIWRvY3VtZW50KQor
ICAgICAgICByZXR1cm47CisgICAgaWYgKHNjcmlwdC5pbmplY3RlZEZyYW1lcygpID09IEluamVj
dEluVG9wRnJhbWVPbmx5ICYmICFpc01haW5GcmFtZSgpKQorICAgICAgICByZXR1cm47CisgICAg
aWYgKCFVc2VyQ29udGVudFVSTFBhdHRlcm46Om1hdGNoZXNQYXR0ZXJucyhkb2N1bWVudC0+dXJs
KCksIHNjcmlwdC53aGl0ZWxpc3QoKSwgc2NyaXB0LmJsYWNrbGlzdCgpKSkKKyAgICAgICAgcmV0
dXJuOworICAgIGlmIChtX3BhZ2UpCisgICAgICAgIG1fcGFnZS0+c2V0QXNSdW5uaW5nVXNlclNj
cmlwdHMoKTsKKyAgICBtX3NjcmlwdC0+ZXZhbHVhdGVJbldvcmxkKFNjcmlwdFNvdXJjZUNvZGUo
c2NyaXB0LnNvdXJjZSgpLCBzY3JpcHQudXJsKCkpLCB3b3JsZCk7Cit9CisKIFJlbmRlclZpZXcq
IEZyYW1lOjpjb250ZW50UmVuZGVyZXIoKSBjb25zdAogewogICAgIHJldHVybiBkb2N1bWVudCgp
ID8gZG9jdW1lbnQoKS0+cmVuZGVyVmlldygpIDogbnVsbHB0cjsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
LmgJKHJldmlzaW9uIDIzMzczOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAkod29y
a2luZyBjb3B5KQpAQCAtMTc1LDcgKzE3NSw4IEBAIHB1YmxpYzoKIAogLy8gPT09PT09PT0gQWxs
IHB1YmxpYyBmdW5jdGlvbnMgYmVsb3cgdGhpcyBwb2ludCBhcmUgY2FuZGlkYXRlcyB0byBtb3Zl
IG91dCBvZiBGcmFtZSBpbnRvIGFub3RoZXIgY2xhc3MuID09PT09PT09CiAKLSAgICB2b2lkIGlu
amVjdFVzZXJTY3JpcHRzKFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGluamVjdFVzZXJTY3JpcHRzKFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseShET01XcmFw
cGVyV29ybGQmLCBjb25zdCBVc2VyU2NyaXB0Jik7CiAgICAgCiAgICAgV0VCQ09SRV9FWFBPUlQg
U3RyaW5nIGxheWVyVHJlZUFzVGV4dChMYXllclRyZWVGbGFncyA9IDApIGNvbnN0OwogICAgIFdF
QkNPUkVfRVhQT1JUIFN0cmluZyB0cmFja2VkUmVwYWludFJlY3RzQXNUZXh0KCkgY29uc3Q7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuaAkocmV2aXNpb24gMjMzNzM5KQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwMyw3ICsyMDMsNyBAQCBwdWJsaWM6CiAKICAg
ICBQYWdlR3JvdXAmIGdyb3VwKCk7CiAKLSAgICBzdGF0aWMgdm9pZCBmb3JFYWNoUGFnZShjb25z
dCBXVEY6OkZ1bmN0aW9uPHZvaWQoUGFnZSYpPiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyB2b2lkIGZvckVhY2hQYWdlKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChQYWdlJik+Jik7CiAK
ICAgICB2b2lkIGluY3JlbWVudFN1YmZyYW1lQ291bnQoKSB7ICsrbV9zdWJmcmFtZUNvdW50OyB9
CiAgICAgdm9pZCBkZWNyZW1lbnRTdWJmcmFtZUNvdW50KCkgeyBBU1NFUlQobV9zdWJmcmFtZUNv
dW50KTsgLS1tX3N1YmZyYW1lQ291bnQ7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzM3Mzkp
CisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMz
IEBACisyMDE4LTA3LTExICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgQWRkIFNQSSBmb3IgaW1tZWRpYXRlIGluamVjdGlvbiBvZiB1c2VyIHNj
cmlwdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
MzM0MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjkyMDIyODU+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgQnJhZHkgRWlkc29uLCBZb3Vlbm4gRmFibGV0LCBhbmQgR2VvZmYgR2FyZW4uCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwOgorICAgICAgICAoV0tQYWdl
R3JvdXBBZGRVc2VyU2NyaXB0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tVc2VyQ29u
dGVudENvbnRyb2xsZXJSZWYuY3BwOgorICAgICAgICAoV0tVc2VyQ29udGVudENvbnRyb2xsZXJB
ZGRVc2VyU2NyaXB0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRl
bnRDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29udHJvbGxlciBhZGRV
c2VyU2NyaXB0Ol0pOgorICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29udHJvbGxlciBfYWRkVXNl
clNjcmlwdEltbWVkaWF0ZWx5Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tV
c2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1VzZXJD
b250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJTY3JpcHQpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRV
c2VyU2NyaXB0cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6
YWRkVXNlclNjcmlwdEludGVybmFsKToKKyAgICAgICAgSWYgd2UgYXJlIHRvIGluamVjdCB0aGUg
c2NyaXB0IGludGVybmFsbHksIGluamVjdCBpdCBpbnRvIHRoZSBhcHByb3ByaWF0ZSBwYWdlcy4K
KyAgICAgICAgSWYgd2UncmUgaW5qZWN0aW5nIGludG8gdGhlIHRvcCBmcmFtZSBvbmx5LCB0aGVy
ZSdzIG5vIG5lZWQgdG8gdHJhdmVyc2UgdGhlIGZyYW1lIHRyZWUuCisgICAgICAgIChXZWJLaXQ6
OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRkVXNlclNjcmlwdCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6Om1fY3B1TGltaXQpOgorCiAyMDE4LTA3LTExICBKZXIgTm9ibGUgIDxqZXIubm9i
bGVAYXBwbGUuY29tPgogCiAgICAgICAgIERpc2FibGUgYWxsIG5ldHdvcmsgY2FjaGluZyBmb3Ig
SExTIHN0cmVhbXMuCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VH
cm91cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQ
YWdlR3JvdXAuY3BwCShyZXZpc2lvbiAyMzM3MzkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS1BhZ2VHcm91cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDkgKzMxLDExIEBA
CiAjaW5jbHVkZSAiQVBJVXNlckNvbnRlbnRXb3JsZC5oIgogI2luY2x1ZGUgIkFQSVVzZXJTY3Jp
cHQuaCIKICNpbmNsdWRlICJBUElVc2VyU3R5bGVTaGVldC5oIgorI2luY2x1ZGUgIkluamVjdFVz
ZXJTY3JpcHRJbW1lZGlhdGVseS5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUg
IldlYlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzLmgiCisjaW5jbHVkZSAi
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHkuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKQEAgLTk4LDcgKzEwMCw3
IEBAIHZvaWQgV0tQYWdlR3JvdXBBZGRVc2VyU2NyaXB0KFdLUGFnZUdyb3UKICAgICAKICAgICBh
dXRvIHVybCA9IGJhc2VVUkxTdHJpbmcuaXNFbXB0eSgpID8gV2ViQ29yZTo6YmxhbmtVUkwoKSA6
IFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgYmFzZVVSTFN0cmluZyk7CiAgICAgUmVmPEFQ
STo6VXNlclNjcmlwdD4gdXNlclNjcmlwdCA9IEFQSTo6VXNlclNjcmlwdDo6Y3JlYXRlKFdlYkNv
cmU6OlVzZXJTY3JpcHQgeyBXVEZNb3ZlKHNvdXJjZSksIFdURk1vdmUodXJsKSwgd2hpdGVsaXN0
ID8gd2hpdGVsaXN0LT50b1N0cmluZ1ZlY3RvcigpIDogVmVjdG9yPFN0cmluZz4oKSwgYmxhY2ts
aXN0ID8gYmxhY2tsaXN0LT50b1N0cmluZ1ZlY3RvcigpIDogVmVjdG9yPFN0cmluZz4oKSwgdG9V
c2VyU2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rpb25UaW1lKSwgdG9Vc2VyQ29udGVudEluamVj
dGVkRnJhbWVzKGluamVjdGVkRnJhbWVzKSB9LCBBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1h
bFdvcmxkKCkpOwotICAgIHRvSW1wbChwYWdlR3JvdXBSZWYpLT51c2VyQ29udGVudENvbnRyb2xs
ZXIoKS5hZGRVc2VyU2NyaXB0KHVzZXJTY3JpcHQuZ2V0KCkpOworICAgIHRvSW1wbChwYWdlR3Jv
dXBSZWYpLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU2NyaXB0KHVzZXJTY3JpcHQu
Z2V0KCksIEluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseTo6Tm8pOwogfQogCiB2b2lkIFdLUGFn
ZUdyb3VwUmVtb3ZlQWxsVXNlclNjcmlwdHMoV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmKQpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tVc2VyQ29udGVudENvbnRyb2xs
ZXJSZWYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
VXNlckNvbnRlbnRDb250cm9sbGVyUmVmLmNwcAkocmV2aXNpb24gMjMzNzM5KQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWYuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQVBJQXJyYXkuaCIKICNp
bmNsdWRlICJBUElDb250ZW50UnVsZUxpc3QuaCIKICNpbmNsdWRlICJBUElVc2VyU2NyaXB0Lmgi
CisjaW5jbHVkZSAiSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5LmgiCiAjaW5jbHVkZSAiV0tB
UElDYXN0LmgiCiAjaW5jbHVkZSAiV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaCIKIApA
QCAtNTIsNyArNTMsNyBAQCBXS0FycmF5UmVmIFdLVXNlckNvbnRlbnRDb250cm9sbGVyQ29weVVz
CiAKIHZvaWQgV0tVc2VyQ29udGVudENvbnRyb2xsZXJBZGRVc2VyU2NyaXB0KFdLVXNlckNvbnRl
bnRDb250cm9sbGVyUmVmIHVzZXJDb250ZW50Q29udHJvbGxlclJlZiwgV0tVc2VyU2NyaXB0UmVm
IHVzZXJTY3JpcHRSZWYpCiB7Ci0gICAgdG9JbXBsKHVzZXJDb250ZW50Q29udHJvbGxlclJlZikt
PmFkZFVzZXJTY3JpcHQoKnRvSW1wbCh1c2VyU2NyaXB0UmVmKSk7CisgICAgdG9JbXBsKHVzZXJD
b250ZW50Q29udHJvbGxlclJlZiktPmFkZFVzZXJTY3JpcHQoKnRvSW1wbCh1c2VyU2NyaXB0UmVm
KSwgSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5OjpObyk7CiB9CiAKIHZvaWQgV0tVc2VyQ29u
dGVudENvbnRyb2xsZXJSZW1vdmVBbGxVc2VyU2NyaXB0cyhXS1VzZXJDb250ZW50Q29udHJvbGxl
clJlZiB1c2VyQ29udGVudENvbnRyb2xsZXJSZWYpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVy
Lm1tCShyZXZpc2lvbiAyMzM3MzkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMw
LDcgQEAKIAogI2ltcG9ydCAiQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAjaW1wb3J0ICJB
UElVc2VyQ29udGVudFdvcmxkLmgiCisjaW1wb3J0ICJJbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRl
bHkuaCIKICNpbXBvcnQgIldLQ29udGVudFJ1bGVMaXN0SW50ZXJuYWwuaCIKICNpbXBvcnQgIldL
RnJhbWVJbmZvSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLTlNBcnJheS5oIgpAQCAtODksNyArOTAs
NyBAQCAtIChOU0FycmF5ICopdXNlclNjcmlwdHMKIAogLSAodm9pZClhZGRVc2VyU2NyaXB0OihX
S1VzZXJTY3JpcHQgKil1c2VyU2NyaXB0CiB7Ci0gICAgX3VzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5LT5hZGRVc2VyU2NyaXB0KCp1c2VyU2NyaXB0LT5fdXNlclNjcmlwdCk7CisgICAgX3VzZXJD
b250ZW50Q29udHJvbGxlclByb3h5LT5hZGRVc2VyU2NyaXB0KCp1c2VyU2NyaXB0LT5fdXNlclNj
cmlwdCwgV2ViS2l0OjpJbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHk6Ok5vKTsKIH0KIAogLSAo
dm9pZClyZW1vdmVBbGxVc2VyU2NyaXB0cwpAQCAtMTc3LDYgKzE3OCwxMSBAQCAtICh2b2lkKV9y
ZW1vdmVBbGxVc2VyU2NyaXB0c0Fzc29jaWF0ZWRXCiAgICAgX3VzZXJDb250ZW50Q29udHJvbGxl
clByb3h5LT5yZW1vdmVBbGxVc2VyU2NyaXB0cygqdXNlckNvbnRlbnRXb3JsZC0+X3VzZXJDb250
ZW50V29ybGQpOwogfQogCistICh2b2lkKV9hZGRVc2VyU2NyaXB0SW1tZWRpYXRlbHk6KFdLVXNl
clNjcmlwdCAqKXVzZXJTY3JpcHQKK3sKKyAgICBfdXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkt
PmFkZFVzZXJTY3JpcHQoKnVzZXJTY3JpcHQtPl91c2VyU2NyaXB0LCBXZWJLaXQ6OkluamVjdFVz
ZXJTY3JpcHRJbW1lZGlhdGVseTo6WWVzKTsKK30KKwogLSAodm9pZClfYWRkVXNlckNvbnRlbnRG
aWx0ZXI6KF9XS1VzZXJDb250ZW50RmlsdGVyICopdXNlckNvbnRlbnRGaWx0ZXIKIHsKICNpZiBF
TkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyUHJpdmF0ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxl
clByaXZhdGUuaAkocmV2aXNpb24gMjMzNzM5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNyw2ICszNyw4IEBACiAtICh2b2lkKV9yZW1vdmVVc2VyU2NyaXB0OihXS1VzZXJTY3Jp
cHQgKil1c2VyU2NyaXB0IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEyKSwgaW9zKDEwLjAp
KTsKIC0gKHZvaWQpX3JlbW92ZUFsbFVzZXJTY3JpcHRzQXNzb2NpYXRlZFdpdGhVc2VyQ29udGVu
dFdvcmxkOihfV0tVc2VyQ29udGVudFdvcmxkICopdXNlckNvbnRlbnRXb3JsZCBXS19BUElfQVZB
SUxBQkxFKG1hY29zeCgxMC4xMiksIGlvcygxMC4wKSk7CiAKKy0gKHZvaWQpX2FkZFVzZXJTY3Jp
cHRJbW1lZGlhdGVseTooV0tVc2VyU2NyaXB0ICopdXNlclNjcmlwdCBXS19BUElfQVZBSUxBQkxF
KG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogLSAodm9pZClfYWRkVXNl
ckNvbnRlbnRGaWx0ZXI6KF9XS1VzZXJDb250ZW50RmlsdGVyICopdXNlckNvbnRlbnRGaWx0ZXIg
V0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTEpLCBpb3MoOS4wKSk7CiAtICh2b2lkKV9yZW1v
dmVVc2VyQ29udGVudEZpbHRlcjooTlNTdHJpbmcgKil1c2VyQ29udGVudEZpbHRlck5hbWUgV0tf
QVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTEpLCBpb3MoOS4wKSk7CiAtICh2b2lkKV9yZW1vdmVB
bGxVc2VyQ29udGVudEZpbHRlcnMgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTEpLCBpb3Mo
OS4wKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2Vy
Q29udGVudE1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5jcHAJKHJldmlzaW9uIDIzMzczOSkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50TWFu
YWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJXZWJL
aXRVc2VyQ29udGVudE1hbmFnZXIuaCIKIAogI2luY2x1ZGUgIkFQSVNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5oIgorI2luY2x1ZGUgIkluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseS5oIgogI2luY2x1
ZGUgIldlYktpdEphdmFzY3JpcHRSZXN1bHRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0VXNl
ckNvbnRlbnRNYW5hZ2VyUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFVzZXJDb250ZW50UHJp
dmF0ZS5oIgpAQCAtMTYzLDcgKzE2NCw3IEBAIHZvaWQgd2Via2l0X3VzZXJfY29udGVudF9tYW5h
Z2VyX2FkZF9zY3IKIHsKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19VU0VSX0NPTlRF
TlRfTUFOQUdFUihtYW5hZ2VyKSk7CiAgICAgZ19yZXR1cm5faWZfZmFpbChzY3JpcHQpOwotICAg
IG1hbmFnZXItPnByaXYtPnVzZXJDb250ZW50Q29udHJvbGxlci0+YWRkVXNlclNjcmlwdCh3ZWJr
aXRVc2VyU2NyaXB0R2V0VXNlclNjcmlwdChzY3JpcHQpKTsKKyAgICBtYW5hZ2VyLT5wcml2LT51
c2VyQ29udGVudENvbnRyb2xsZXItPmFkZFVzZXJTY3JpcHQod2Via2l0VXNlclNjcmlwdEdldFVz
ZXJTY3JpcHQoc2NyaXB0KSwgSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5OjpObyk7CiB9CiAK
IC8qKgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcAkocmV2
aXNpb24gMjMzNzM5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICsz
MSw3IEBACiAjaW5jbHVkZSAiQVBJVXNlclNjcmlwdC5oIgogI2luY2x1ZGUgIkFQSVVzZXJTdHls
ZVNoZWV0LmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIkluamVjdFVz
ZXJTY3JpcHRJbW1lZGlhdGVseS5oIgogI2luY2x1ZGUgIk5ldHdvcmtDb250ZW50UnVsZUxpc3RN
YW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5LmgiCiAjaW5j
bHVkZSAiV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIgpAQCAtMTY3LDcgKzE2OCw3IEBAIHZv
aWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW8KICAgICAgICAgcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVVc2VyQ29udGVu
dFdvcmxkcyh3b3JsZHNUb1JlbW92ZSksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKIH0KIAot
dm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNlclNjcmlwdChBUEk6OlVz
ZXJTY3JpcHQmIHVzZXJTY3JpcHQpCit2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
OjphZGRVc2VyU2NyaXB0KEFQSTo6VXNlclNjcmlwdCYgdXNlclNjcmlwdCwgSW5qZWN0VXNlclNj
cmlwdEltbWVkaWF0ZWx5IGltbWVkaWF0ZWx5KQogewogICAgIFJlZjxBUEk6OlVzZXJDb250ZW50
V29ybGQ+IHdvcmxkID0gdXNlclNjcmlwdC51c2VyQ29udGVudFdvcmxkKCk7CiAKQEAgLTE3Niw3
ICsxNzcsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVCiAgICAg
bV91c2VyU2NyaXB0cy0+ZWxlbWVudHMoKS5hcHBlbmQoJnVzZXJTY3JpcHQpOwogCiAgICAgZm9y
IChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRVc2VyU2NyaXB0
cyh7IHsgdXNlclNjcmlwdC5pZGVudGlmaWVyKCksIHdvcmxkLT5pZGVudGlmaWVyKCksIHVzZXJT
Y3JpcHQudXNlclNjcmlwdCgpIH0gfSksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICAg
ICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRV
c2VyU2NyaXB0cyh7IHsgdXNlclNjcmlwdC5pZGVudGlmaWVyKCksIHdvcmxkLT5pZGVudGlmaWVy
KCksIHVzZXJTY3JpcHQudXNlclNjcmlwdCgpIH0gfSwgaW1tZWRpYXRlbHkpLCBpZGVudGlmaWVy
KCkudG9VSW50NjQoKSk7CiB9CiAKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6
OnJlbW92ZVVzZXJTY3JpcHQoQVBJOjpVc2VyU2NyaXB0JiB1c2VyU2NyaXB0KQpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVu
dC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oCShyZXZpc2lvbiAyMzM3MzkpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw2ICs1OSw3IEBAIGNsYXNzIFdlYlByb2Nl
c3NQcm94eTsKIGNsYXNzIFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOwogc3RydWN0IEZyYW1lSW5m
b0RhdGE7CiBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczsKK2VudW0gY2xhc3MgSW5q
ZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5OwogCiBjbGFzcyBXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlVzZXJD
b250ZW50Q29udHJvbGxlcj4sIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGlj
OgpAQCAtNzUsNyArNzYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVQcm9jZXNzKFdlYlBy
b2Nlc3NQcm94eSYpOwogCiAgICAgQVBJOjpBcnJheSYgdXNlclNjcmlwdHMoKSB7IHJldHVybiBt
X3VzZXJTY3JpcHRzLmdldCgpOyB9Ci0gICAgdm9pZCBhZGRVc2VyU2NyaXB0KEFQSTo6VXNlclNj
cmlwdCYpOworICAgIHZvaWQgYWRkVXNlclNjcmlwdChBUEk6OlVzZXJTY3JpcHQmLCBJbmplY3RV
c2VyU2NyaXB0SW1tZWRpYXRlbHkpOwogICAgIHZvaWQgcmVtb3ZlVXNlclNjcmlwdChBUEk6OlVz
ZXJTY3JpcHQmKTsKICAgICB2b2lkIHJlbW92ZUFsbFVzZXJTY3JpcHRzKEFQSTo6VXNlckNvbnRl
bnRXb3JsZCYpOwogICAgIHZvaWQgcmVtb3ZlQWxsVXNlclNjcmlwdHMoKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
MjMzNzM5KQorKysgU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtMzMxOCw2ICszMzE4LDcgQEAKIAkJNDEwM0ZCQTIyMDYxQkRC
ODAwQzJFQUY4IC8qIE5ldHdvcmtMb2FkQ2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBOZXR3b3JrTG9hZENoZWNrZXIuY3BwOyBwYXRoID0gTmV0d29ya1By
b2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDEwNDgyQ0IxREREMkZCNTAwRjAwNkQwIC8qIFJUQ05ldHdvcmsuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUlRDTmV0d29yay5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxMDQ4MkNDMURERDJGQjUwMEYwMDZEMCAvKiBSVENOZXR3b3JrLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ05ldHdvcmsuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDExMTQzNjMyMEY2NzdCMTAwMjZGOTEyIC8qIEluamVjdFVz
ZXJTY3JpcHRJbW1lZGlhdGVseS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJ
bmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDExMkI1NDcxRjlGRDNBQjAwRTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBOZXR3b3JrUlRDUmVzb2x2ZXIuY3Bw
OyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzk4NiAvKiBO
ZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vz
cy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MTEyQjU0ODFGOUZEM0FDMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtSVENSZXNvbHZlci5o
OyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTQ2Nyw2ICs1NDY4LDcgQEAKIAkJMUFBRjA4QUEx
OTI2OTMwQjAwQjYzOTBDIC8qIFVzZXJDb250ZW50ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0MTExNDM2MzIwRjY3N0IxMDAyNkY5MTIgLyogSW5qZWN0
VXNlclNjcmlwdEltbWVkaWF0ZWx5LmggKi8sCiAJCQkJMUFBRjA4QUIxOTI2OTM2NzAwQjYzOTBD
IC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAgKi8sCiAJCQkJMUFBRjA4QUMxOTI2OTM2
NzAwQjYzOTBDIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlci5oICovLAogCQkJCTFBQUYwOEI0
MTkyNjlFMjQwMEI2MzkwQyAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXIubWVzc2FnZXMuaW4g
Ki8sCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvSW5qZWN0VXNl
clNjcmlwdEltbWVkaWF0ZWx5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1VzZXJDb250ZW50L0luamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseS5oCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9JbmplY3RVc2VyU2Ny
aXB0SW1tZWRpYXRlbHkuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKyAgICAKK2Vu
dW0gY2xhc3MgSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5IHsgTm8sIFllcyB9OworICAgIAor
fQorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJL
aXQ6OkluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVu
dW1WYWx1ZXM8CisgICAgV2ViS2l0OjpJbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHksCisgICAg
V2ViS2l0OjpJbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHk6Ok5vLAorICAgIFdlYktpdDo6SW5q
ZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5OjpZZXMKKyAgICA+OworfTsKKworfQpJbmRleDogU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50
L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDIzMzczOSkKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJEYXRhUmVm
ZXJlbmNlLmgiCiAjaW5jbHVkZSAiRnJhbWVJbmZvRGF0YS5oIgorI2luY2x1ZGUgIkluamVjdFVz
ZXJTY3JpcHRJbW1lZGlhdGVseS5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlU2NyaXB0V29y
bGQuaCIKICNpbmNsdWRlICJXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdC5oIgogI2luY2x1ZGUg
IldlYkZyYW1lLmgiCkBAIC0zNiw2ICszNyw3IEBACiAjaW5jbHVkZSAiV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9ET01XcmFwcGVyV29ybGQuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdp
bkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvVXNlclN0eWxlU2hlZXQuaD4KQEAgLTEyMiw3ICsxMjQsNyBAQCB2b2lk
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlVXNlCiAgICAgfQogfQogCi12b2lkIFdl
YlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRkVXNlclNjcmlwdHMoY29uc3QgVmVjdG9yPFdlYlVz
ZXJTY3JpcHREYXRhPiYgdXNlclNjcmlwdHMpCit2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxl
cjo6YWRkVXNlclNjcmlwdHMoVmVjdG9yPFdlYlVzZXJTY3JpcHREYXRhPiYmIHVzZXJTY3JpcHRz
LCBJbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkgaW1tZWRpYXRlbHkpCiB7CiAgICAgZm9yIChj
b25zdCBhdXRvJiB1c2VyU2NyaXB0RGF0YSA6IHVzZXJTY3JpcHRzKSB7CiAgICAgICAgIGF1dG8g
aXQgPSB3b3JsZE1hcCgpLmZpbmQodXNlclNjcmlwdERhdGEud29ybGRJZGVudGlmaWVyKTsKQEAg
LTEzMiw3ICsxMzQsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRkVXNlclNj
CiAgICAgICAgIH0KIAogICAgICAgICBVc2VyU2NyaXB0IHNjcmlwdCA9IHVzZXJTY3JpcHREYXRh
LnVzZXJTY3JpcHQ7Ci0gICAgICAgIGFkZFVzZXJTY3JpcHRJbnRlcm5hbCgqaXQtPnZhbHVlLmZp
cnN0LCB1c2VyU2NyaXB0RGF0YS5pZGVudGlmaWVyLCBXVEZNb3ZlKHNjcmlwdCkpOworICAgICAg
ICBhZGRVc2VyU2NyaXB0SW50ZXJuYWwoKml0LT52YWx1ZS5maXJzdCwgdXNlclNjcmlwdERhdGEu
aWRlbnRpZmllciwgV1RGTW92ZShzY3JpcHQpLCBpbW1lZGlhdGVseSk7CiAgICAgfQogfQogCkBA
IC0zNjAsMTUgKzM2MiwzMSBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3Zl
QWxsCiB9CiAjZW5kaWYKIAotdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJT
Y3JpcHRJbnRlcm5hbChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiB3b3JsZCwgdWludDY0X3Qg
dXNlclNjcmlwdElkZW50aWZpZXIsIFVzZXJTY3JpcHQmJiB1c2VyU2NyaXB0KQordm9pZCBXZWJV
c2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJTY3JpcHRJbnRlcm5hbChJbmplY3RlZEJ1bmRs
ZVNjcmlwdFdvcmxkJiB3b3JsZCwgdWludDY0X3QgdXNlclNjcmlwdElkZW50aWZpZXIsIFVzZXJT
Y3JpcHQmJiB1c2VyU2NyaXB0LCBJbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkgaW1tZWRpYXRl
bHkpCiB7CisgICAgaWYgKGltbWVkaWF0ZWx5ID09IEluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVs
eTo6WWVzKSB7CisgICAgICAgIFBhZ2U6OmZvckVhY2hQYWdlKFsmXSAoYXV0byYgcGFnZSkgewor
ICAgICAgICAgICAgaWYgKCZwYWdlLnVzZXJDb250ZW50UHJvdmlkZXIoKSAhPSB0aGlzKQorICAg
ICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgYXV0byYgbWFpbkZyYW1lID0gcGFn
ZS5tYWluRnJhbWUoKTsKKyAgICAgICAgICAgIGlmICh1c2VyU2NyaXB0LmluamVjdGVkRnJhbWVz
KCkgPT0gSW5qZWN0SW5Ub3BGcmFtZU9ubHkpIHsKKyAgICAgICAgICAgICAgICBtYWluRnJhbWUu
aW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KHdvcmxkLmNvcmVXb3JsZCgpLCB1c2VyU2NyaXB0
KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGZvciAoYXV0byogZnJhbWUgPSAmbWFpbkZyYW1lOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJl
ZSgpLnRyYXZlcnNlTmV4dCgmbWFpbkZyYW1lKSkKKyAgICAgICAgICAgICAgICBmcmFtZS0+aW5q
ZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KHdvcmxkLmNvcmVXb3JsZCgpLCB1c2VyU2NyaXB0KTsK
KyAgICAgICAgfSk7CisgICAgfQorCiAgICAgYXV0byYgc2NyaXB0c0luV29ybGQgPSBtX3VzZXJT
Y3JpcHRzLmVuc3VyZSgmd29ybGQsIFtdIHsgcmV0dXJuIFZlY3RvcjxzdGQ6OnBhaXI8dWludDY0
X3QsIFdlYkNvcmU6OlVzZXJTY3JpcHQ+PigpOyB9KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgc2Ny
aXB0c0luV29ybGQuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKHVzZXJTY3JpcHRJZGVudGlmaWVyLCBX
VEZNb3ZlKHVzZXJTY3JpcHQpKSk7CiB9CiAKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
OjphZGRVc2VyU2NyaXB0KEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQmIHdvcmxkLCBVc2VyU2Ny
aXB0JiYgdXNlclNjcmlwdCkKIHsKLSAgICBhZGRVc2VyU2NyaXB0SW50ZXJuYWwod29ybGQsIDAs
IFdURk1vdmUodXNlclNjcmlwdCkpOworICAgIGFkZFVzZXJTY3JpcHRJbnRlcm5hbCh3b3JsZCwg
MCwgV1RGTW92ZSh1c2VyU2NyaXB0KSwgSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5OjpObyk7
CiB9CiAKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVVc2VyU2NyaXB0V2l0
aFVSTChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiB3b3JsZCwgY29uc3QgVVJMJiB1cmwpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJD
b250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5oCShyZXZpc2lvbiAyMzM3MzkpCisrKyBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiBjbGFzcyBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOwogY2xhc3MgV2ViQ29tcGlsZWRDb250
ZW50UnVsZUxpc3REYXRhOwogY2xhc3MgV2ViVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvclBy
b3h5OworZW51bSBjbGFzcyBJbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHk7CiAKIGNsYXNzIFdl
YlVzZXJDb250ZW50Q29udHJvbGxlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpVc2VyQ29udGVu
dFByb3ZpZGVyLCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKQEAgLTY0
LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlQWxsVXNlckNvbnRlbnQoKTsKIAog
ICAgIHZvaWQgYWRkVXNlckNvbnRlbnRXb3JsZHMoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjx1aW50
NjRfdCwgU3RyaW5nPj4mKTsKLSAgICB2b2lkIGFkZFVzZXJTY3JpcHRzKGNvbnN0IFZlY3RvcjxX
ZWJVc2VyU2NyaXB0RGF0YT4mKTsKKyAgICB2b2lkIGFkZFVzZXJTY3JpcHRzKFZlY3RvcjxXZWJV
c2VyU2NyaXB0RGF0YT4mJiwgSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KTsKICAgICB2b2lk
IGFkZFVzZXJTdHlsZVNoZWV0cyhjb25zdCBWZWN0b3I8V2ViVXNlclN0eWxlU2hlZXREYXRhPiYp
OwogICAgIHZvaWQgYWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVycyhjb25zdCBWZWN0b3I8V2Vi
U2NyaXB0TWVzc2FnZUhhbmRsZXJEYXRhPiYpOwogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lP
TlMpCkBAIC0xMDMsNyArMTA0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZUFsbENvbnRl
bnRSdWxlTGlzdHMoKTsKICNlbmRpZgogCi0gICAgdm9pZCBhZGRVc2VyU2NyaXB0SW50ZXJuYWwo
SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYsIHVpbnQ2NF90IHVzZXJTY3JpcHRJZGVudGlmaWVy
LCBXZWJDb3JlOjpVc2VyU2NyaXB0JiYpOworICAgIHZvaWQgYWRkVXNlclNjcmlwdEludGVybmFs
KEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQmLCB1aW50NjRfdCB1c2VyU2NyaXB0SWRlbnRpZmll
ciwgV2ViQ29yZTo6VXNlclNjcmlwdCYmLCBJbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkpOwog
ICAgIHZvaWQgcmVtb3ZlVXNlclNjcmlwdEludGVybmFsKEluamVjdGVkQnVuZGxlU2NyaXB0V29y
bGQmLCB1aW50NjRfdCB1c2VyU2NyaXB0SWRlbnRpZmllcik7CiAgICAgdm9pZCBhZGRVc2VyU3R5
bGVTaGVldEludGVybmFsKEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQmLCB1aW50NjRfdCB1c2Vy
U3R5bGVTaGVldElkZW50aWZpZXIsIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0JiYpOwogICAgIHZv
aWQgcmVtb3ZlVXNlclN0eWxlU2hlZXRJbnRlcm5hbChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxk
JiwgdWludDY0X3QgdXNlclN0eWxlU2hlZXRJZGVudGlmaWVyKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIubWVzc2Fn
ZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50
L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjMzNzM5KQor
KysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29u
dHJvbGxlci5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQCBtZXNz
YWdlcyAtPiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXIgewogICAgIEFkZFVzZXJDb250ZW50V29y
bGRzKFZlY3RvcjxzdGQ6OnBhaXI8dWludDY0X3QsIFN0cmluZz4+IHdvcmxkcyk7CiAgICAgUmVt
b3ZlVXNlckNvbnRlbnRXb3JsZHMoVmVjdG9yPHVpbnQ2NF90PiB3b3JsZElkZW50aWZpZXJzKTsK
IAotICAgIEFkZFVzZXJTY3JpcHRzKFZlY3RvcjxzdHJ1Y3QgV2ViS2l0OjpXZWJVc2VyU2NyaXB0
RGF0YT4gdXNlclNjcmlwdHMpOworICAgIEFkZFVzZXJTY3JpcHRzKFZlY3RvcjxzdHJ1Y3QgV2Vi
S2l0OjpXZWJVc2VyU2NyaXB0RGF0YT4gdXNlclNjcmlwdHMsIGVudW0gV2ViS2l0OjpJbmplY3RV
c2VyU2NyaXB0SW1tZWRpYXRlbHkgaW1tZWRpYXRlbHkpOwogICAgIFJlbW92ZVVzZXJTY3JpcHQo
dWludDY0X3Qgd29ybGRJZGVudGlmaWVyLCB1aW50NjRfdCBpZGVudGlmaWVyKTsKICAgICBSZW1v
dmVBbGxVc2VyU2NyaXB0cyhWZWN0b3I8dWludDY0X3Q+IHdvcmxkSWRlbnRpZmllcnMpOwogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2
aXNpb24gMjMzNzM5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJGaW5kQ29u
dHJvbGxlci5oIgogI2luY2x1ZGUgIkZvcm1EYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiR2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCIKKyNpbmNsdWRlICJJbmplY3RVc2Vy
U2NyaXB0SW1tZWRpYXRlbHkuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZS5oIgogI2luY2x1
ZGUgIkluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRC
dW5kbGVTY3JpcHRXb3JsZC5oIgpAQCAtNjEyLDcgKzYxMyw3IEBAIFdlYlBhZ2U6OldlYlBhZ2Uo
dWludDY0X3QgcGFnZUlELCBXZWJQYWcKICAgICAgICAgcmVnaXN0ZXJVUkxTY2hlbWVIYW5kbGVy
KGl0ZXJhdG9yLnZhbHVlLCBpdGVyYXRvci5rZXkpOwogCiAgICAgbV91c2VyQ29udGVudENvbnRy
b2xsZXItPmFkZFVzZXJDb250ZW50V29ybGRzKHBhcmFtZXRlcnMudXNlckNvbnRlbnRXb3JsZHMp
OwotICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT5hZGRVc2VyU2NyaXB0cyhwYXJhbWV0ZXJz
LnVzZXJTY3JpcHRzKTsKKyAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+YWRkVXNlclNjcmlw
dHMoV1RGTW92ZShwYXJhbWV0ZXJzLnVzZXJTY3JpcHRzKSwgSW5qZWN0VXNlclNjcmlwdEltbWVk
aWF0ZWx5OjpObyk7CiAgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXItPmFkZFVzZXJTdHlsZVNo
ZWV0cyhwYXJhbWV0ZXJzLnVzZXJTdHlsZVNoZWV0cyk7CiAgICAgbV91c2VyQ29udGVudENvbnRy
b2xsZXItPmFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnMocGFyYW1ldGVycy5tZXNzYWdlSGFu
ZGxlcnMpOwogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCkluZGV4OiBUb29scy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzM3MzkpCisr
KyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxOC0w
Ny0xMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAg
ICAgIEFkZCBTUEkgZm9yIGltbWVkaWF0ZSBpbmplY3Rpb24gb2YgdXNlciBzY3JpcHRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzMzNDIKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzI5MjAyMjg1PgorCisgICAgICAgIFJldmlld2VkIGJ5IEJyYWR5
IEVpZHNvbiwgWW91ZW5uIEZhYmxldCwgYW5kIEdlb2ZmIEdhcmVuLgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvVXNlckNvbnRlbnRDb250cm9sbGVyLm1tOgor
ICAgICAgICAod2FpdEZvck1lc3NhZ2UpOgorICAgICAgICAoVEVTVCk6CisKIDIwMTgtMDctMTEg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCByZW1haW5p
bmcgQ3Jvc3MtT3JpZ2luLVJlc291cmNlLVBvbGljeSBmYWlsdXJlcywgaWYgYW55CkluZGV4OiBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VzZXJDb250ZW50Q29udHJvbGxl
ci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1VzZXJDb250ZW50Q29udHJvbGxlci5tbQkocmV2aXNpb24gMjMzNzM5KQorKysgVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Vc2VyQ29udGVudENvbnRyb2xsZXIubW0JKHdv
cmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKICNpbXBvcnQgPFdlYktpdC9fV0tVc2VyQ29u
dGVudFdvcmxkLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLVXNlclN0eWxlU2hlZXQuaD4KICNpbXBv
cnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KIAogI2lmIFdLX0FQ
SV9FTkFCTEVECiAKQEAgLTU1LDcgKzU2LDcgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcg
Kil3ZWJWaWV3IGRpZAogQGVuZAogCiBzdGF0aWMgYm9vbCByZWNlaXZlZFNjcmlwdE1lc3NhZ2U7
Ci1zdGF0aWMgUmV0YWluUHRyPFdLU2NyaXB0TWVzc2FnZT4gbGFzdFNjcmlwdE1lc3NhZ2U7Citz
dGF0aWMgVmVjdG9yPFJldGFpblB0cjxXS1NjcmlwdE1lc3NhZ2U+PiBzY3JpcHRNZXNzYWdlczsK
IAogQGludGVyZmFjZSBTY3JpcHRNZXNzYWdlSGFuZGxlciA6IE5TT2JqZWN0IDxXS1NjcmlwdE1l
c3NhZ2VIYW5kbGVyPgogQGVuZApAQCAtNjUsNyArNjYsNyBAQCBAaW50ZXJmYWNlIFNjcmlwdE1l
c3NhZ2VIYW5kbGVyIDogTlNPYmplCiAtICh2b2lkKXVzZXJDb250ZW50Q29udHJvbGxlcjooV0tV
c2VyQ29udGVudENvbnRyb2xsZXIgKil1c2VyQ29udGVudENvbnRyb2xsZXIgZGlkUmVjZWl2ZVNj
cmlwdE1lc3NhZ2U6KFdLU2NyaXB0TWVzc2FnZSAqKW1lc3NhZ2UKIHsKICAgICByZWNlaXZlZFNj
cmlwdE1lc3NhZ2UgPSB0cnVlOwotICAgIGxhc3RTY3JpcHRNZXNzYWdlID0gbWVzc2FnZTsKKyAg
ICBzY3JpcHRNZXNzYWdlcy5hcHBlbmQobWVzc2FnZSk7CiB9CiAKIEBlbmQKQEAgLTg4LDcgKzg5
LDcgQEAgVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgU2NyaXB0TWVzcwogICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKICAgICByZWNlaXZl
ZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsKIAotICAgIEVYUEVDVF9XS19TVFJFUShAIkhlbGxvIiwg
KE5TU3RyaW5nICopW2xhc3RTY3JpcHRNZXNzYWdlIGJvZHldKTsKKyAgICBFWFBFQ1RfV0tfU1RS
RVEoQCJIZWxsbyIsIChOU1N0cmluZyAqKVtzY3JpcHRNZXNzYWdlc1swXSBib2R5XSk7CiB9CiAK
IFRFU1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIFNjcmlwdE1lc3NhZ2VIYW5kbGVyQmFzaWNQ
b3N0SXNvbGF0ZWRXb3JsZCkKQEAgLTExNSw3ICsxMTYsNyBAQCBURVNUKFdLVXNlckNvbnRlbnRD
b250cm9sbGVyLCBTY3JpcHRNZXNzCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNl
aXZlZFNjcmlwdE1lc3NhZ2UpOwogICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOwog
Ci0gICAgRVhQRUNUX1dLX1NUUkVRKEAiSGVsbG8iLCAoTlNTdHJpbmcgKilbbGFzdFNjcmlwdE1l
c3NhZ2UgYm9keV0pOworICAgIEVYUEVDVF9XS19TVFJFUShAIkhlbGxvIiwgKE5TU3RyaW5nICop
W3NjcmlwdE1lc3NhZ2VzWzBdIGJvZHldKTsKIAogICAgIGlmICghaXNEb25lV2l0aE5hdmlnYXRp
b24pCiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lV2l0aE5hdmlnYXRp
b24pOwpAQCAtMTY2LDcgKzE2Nyw3IEBAIFRFU1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIFNj
cmlwdE1lc3MKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVz
c2FnZSk7CiAgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7CiAKLSAgICBFWFBFQ1Rf
V0tfU1RSRVEoQCJQQVNTIiwgKE5TU3RyaW5nICopW2xhc3RTY3JpcHRNZXNzYWdlIGJvZHldKTsK
KyAgICBFWFBFQ1RfV0tfU1RSRVEoQCJQQVNTIiwgKE5TU3RyaW5nICopW3NjcmlwdE1lc3NhZ2Vz
WzBdIGJvZHldKTsKIAogICAgIFt1c2VyQ29udGVudENvbnRyb2xsZXIgcmVtb3ZlU2NyaXB0TWVz
c2FnZUhhbmRsZXJGb3JOYW1lOkAiaGFuZGxlclRvUmVtb3ZlIl07CiAKQEAgLTE4MSw3ICsxODIs
NyBAQCBURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBTY3JpcHRNZXNzCiAgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOwogICAgIHJlY2VpdmVk
U2NyaXB0TWVzc2FnZSA9IGZhbHNlOwogCi0gICAgRVhQRUNUX1dLX1NUUkVRKEAiUEFTUyIsIChO
U1N0cmluZyAqKVtsYXN0U2NyaXB0TWVzc2FnZSBib2R5XSk7CisgICAgRVhQRUNUX1dLX1NUUkVR
KEAiUEFTUyIsIChOU1N0cmluZyAqKVtzY3JpcHRNZXNzYWdlc1swXSBib2R5XSk7CiB9CiAKIFRF
U1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIFNjcmlwdE1lc3NhZ2VIYW5kbGVyQ2FsbFJlbW92
ZWRIYW5kbGVyKQpAQCAtMjE0LDcgKzIxNSw3IEBAIFRFU1QoV0tVc2VyQ29udGVudENvbnRyb2xs
ZXIsIFNjcmlwdE1lc3MKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2Ny
aXB0TWVzc2FnZSk7CiAgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7CiAKLSAgICBF
WFBFQ1RfV0tfU1RSRVEoQCJQQVNTIiwgKE5TU3RyaW5nICopW2xhc3RTY3JpcHRNZXNzYWdlIGJv
ZHldKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoQCJQQVNTIiwgKE5TU3RyaW5nICopW3NjcmlwdE1l
c3NhZ2VzWzBdIGJvZHldKTsKIH0KIAogc3RhdGljIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZp
ZXdGb3JTY3JpcHRNZXNzYWdlSGFuZGxlck11bHRpcGxlSGFuZGxlclJlbW92YWxUZXN0KFdLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24pCkBAIC0yNTUsNyArMjU2LDcgQEAgVEVT
VChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgU2NyaXB0TWVzcwogICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKICAgICByZWNlaXZlZFNjcmlwdE1l
c3NhZ2UgPSBmYWxzZTsKIAotICAgIEVYUEVDVF9XS19TVFJFUShAIlBBU1MiLCAoTlNTdHJpbmcg
KilbbGFzdFNjcmlwdE1lc3NhZ2UgYm9keV0pOworICAgIEVYUEVDVF9XS19TVFJFUShAIlBBU1Mi
LCAoTlNTdHJpbmcgKilbc2NyaXB0TWVzc2FnZXNbMF0gYm9keV0pOwogfQogCiAjaWYgIVBMQVRG
T1JNKElPUykgLy8gRklYTUU6IGhhbmdzIGluIHRoZSBpT1Mgc2ltdWxhdG9yCkBAIC0yNzUsMTAg
KzI3Niw5IEBAIFRFU1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIFNjcmlwdE1lc3MKIAogICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKIAotICAg
IEVYUEVDVF9XS19TVFJFUShAIkZpcnN0IE1lc3NhZ2UiLCAoTlNTdHJpbmcgKilbbGFzdFNjcmlw
dE1lc3NhZ2UgYm9keV0pOworICAgIEVYUEVDVF9XS19TVFJFUShAIkZpcnN0IE1lc3NhZ2UiLCAo
TlNTdHJpbmcgKilbc2NyaXB0TWVzc2FnZXNbMF0gYm9keV0pOwogICAgIAogICAgIHJlY2VpdmVk
U2NyaXB0TWVzc2FnZSA9IGZhbHNlOwotICAgIGxhc3RTY3JpcHRNZXNzYWdlID0gbnVsbHB0cjsK
IAogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOwogICAgIFt3ZWJWaWV3IF90ZXN0
X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKQEAgLTI4Nyw3ICsyODcsNyBAQCBURVNUKFdL
VXNlckNvbnRlbnRDb250cm9sbGVyLCBTY3JpcHRNZXNzCiAKICAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CiAKLSAgICBFWFBFQ1RfV0tfU1RSRVEo
QCJTZWNvbmQgTWVzc2FnZSIsIChOU1N0cmluZyAqKVtsYXN0U2NyaXB0TWVzc2FnZSBib2R5XSk7
ICAgIAorICAgIEVYUEVDVF9XS19TVFJFUShAIlNlY29uZCBNZXNzYWdlIiwgKE5TU3RyaW5nICop
W3NjcmlwdE1lc3NhZ2VzWzFdIGJvZHldKTsKIH0KICNlbmRpZgogCkBAIC0zMTEsNyArMzExLDcg
QEAgVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgU2NyaXB0TWVzcwogICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKICAgICByZWNlaXZlZFNj
cmlwdE1lc3NhZ2UgPSBmYWxzZTsKIAotICAgIEVYUEVDVF9XS19TVFJFUShAIlBBU1MxIiwgKE5T
U3RyaW5nICopW2xhc3RTY3JpcHRNZXNzYWdlIGJvZHldKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEo
QCJQQVNTMSIsIChOU1N0cmluZyAqKVtzY3JpcHRNZXNzYWdlc1swXSBib2R5XSk7CiAKICAgICBb
dXNlckNvbnRlbnRDb250cm9sbGVyIHJlbW92ZVNjcmlwdE1lc3NhZ2VIYW5kbGVyRm9yTmFtZTpA
ImhhbmRsZXJUb1JlcGxhY2UiXTsKICAgICBbdXNlckNvbnRlbnRDb250cm9sbGVyIGFkZFNjcmlw
dE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpAImhhbmRsZXJUb1JlcGxhY2UiXTsK
QEAgLTMyMiw3ICszMjIsNyBAQCBURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBTY3JpcHRN
ZXNzCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2Up
OwogICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOwogCi0gICAgRVhQRUNUX1dLX1NU
UkVRKEAiUEFTUzIiLCAoTlNTdHJpbmcgKilbbGFzdFNjcmlwdE1lc3NhZ2UgYm9keV0pOworICAg
IEVYUEVDVF9XS19TVFJFUShAIlBBU1MyIiwgKE5TU3RyaW5nICopW3NjcmlwdE1lc3NhZ2VzWzFd
IGJvZHldKTsKIH0KIAogc3RhdGljIE5TU3RyaW5nICpzdHlsZVNoZWV0U291cmNlID0gQCJib2R5
IHsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW4gIWltcG9ydGFudDsgfSI7CkBAIC01OTIsNCArNTky
LDUwIEBAIFRFU1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIFVzZXJTY3JpcHQKICAgICBFWFBF
Q1RfRVEodXNlclNjcmlwdEFzc29jaWF0ZWRXaXRoV29ybGQyLmdldCgpLCBbdXNlckNvbnRlbnRD
b250cm9sbGVyIHVzZXJTY3JpcHRzXVsxXSk7CiB9CiAKK3N0YXRpYyB2b2lkIHdhaXRGb3JNZXNz
YWdlcyhzaXplX3QgZXhwZWN0ZWRDb3VudCkKK3sKKyAgICB3aGlsZSAoc2NyaXB0TWVzc2FnZXMu
c2l6ZSgpIDwgZXhwZWN0ZWRDb3VudCkgeworICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CisgICAgICAgIHJlY2VpdmVkU2NyaXB0TWVzc2Fn
ZSA9IGZhbHNlOworICAgIH0KK30KKworc3RhdGljIHZvaWQgY29tcGFyZU1lc3NhZ2VzKFZlY3Rv
cjxjb25zdCBjaGFyKj4mJiBleHBlY3RlZE1lc3NhZ2VzKQoreworICAgIEVYUEVDVF9FUShleHBl
Y3RlZE1lc3NhZ2VzLnNpemUoKSwgc2NyaXB0TWVzc2FnZXMuc2l6ZSgpKTsKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGV4cGVjdGVkTWVzc2FnZXMuc2l6ZSgpOyArK2kpCisgICAgICAgIEVY
UEVDVF9TVFJFUShbW3NjcmlwdE1lc3NhZ2VzW2ldIGJvZHldIFVURjhTdHJpbmddLCBleHBlY3Rl
ZE1lc3NhZ2VzW2ldKTsKK30KKworVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgSW5qZWN0
VXNlclNjcmlwdEltbWVkaWF0ZWx5KQoreworICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW1tT
Y3JpcHRNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gc3RhcnRBbGxGcmFt
ZXMgPSBhZG9wdE5TKFtbV0tVc2VyU2NyaXB0IGFsbG9jXSBpbml0V2l0aFNvdXJjZTpAIndpbmRv
dy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCdzdGFydCBh
bGwnKSIgaW5qZWN0aW9uVGltZTpXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lQXREb2N1bWVudFN0
YXJ0IGZvck1haW5GcmFtZU9ubHk6Tk9dKTsKKyAgICBhdXRvIGVuZE1haW5GcmFtZU9ubHkgPSBh
ZG9wdE5TKFtbV0tVc2VyU2NyaXB0IGFsbG9jXSBpbml0V2l0aFNvdXJjZTpAIndpbmRvdy53ZWJr
aXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCdlbmQgbWFpbicpIiBp
bmplY3Rpb25UaW1lOldLVXNlclNjcmlwdEluamVjdGlvblRpbWVBdERvY3VtZW50RW5kIGZvck1h
aW5GcmFtZU9ubHk6WUVTXSk7CisKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtb
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtbY29uZmlndXJhdGlv
biB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIu
Z2V0KCkgbmFtZTpAInRlc3RIYW5kbGVyIl07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5T
KFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2
MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworCisgICAgYXV0byBkZWxl
Z2F0ZSA9IGFkb3B0TlMoW1tTaW1wbGVOYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsK
KyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworCisg
ICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpb
W05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlLWlmcmFtZSIgd2l0
aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2Vz
Il1dOworCisgICAgaXNEb25lV2l0aE5hdmlnYXRpb24gPSBmYWxzZTsKKyAgICBbd2ViVmlldyBs
b2FkUmVxdWVzdDpyZXF1ZXN0XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9u
ZVdpdGhOYXZpZ2F0aW9uKTsKKworICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOwor
ICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIF9hZGRVc2VyU2NyaXB0
SW1tZWRpYXRlbHk6c3RhcnRBbGxGcmFtZXMuZ2V0KCldOworICAgIC8vIHNpbXBsZS1pZnJhbWUu
aHRtbCBoYXMgYSBtYWluIGZyYW1lIGFuZCBvbmUgaWZyYW1lLgorICAgIHdhaXRGb3JNZXNzYWdl
cygyKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBfYWRkVXNl
clNjcmlwdEltbWVkaWF0ZWx5OmVuZE1haW5GcmFtZU9ubHkuZ2V0KCldOworICAgIHdhaXRGb3JN
ZXNzYWdlcygzKTsKKyAgICBbd2ViVmlldyByZWxvYWRdOworICAgIHdhaXRGb3JNZXNzYWdlcyg2
KTsKKyAgICBjb21wYXJlTWVzc2FnZXMoeyJzdGFydCBhbGwiLCAic3RhcnQgYWxsIiwgImVuZCBt
YWluIiwgInN0YXJ0IGFsbCIsICJlbmQgbWFpbiIsICJzdGFydCBhbGwifSk7Cit9CisKICNlbmRp
Zgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>