<?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>56318</bug_id>
          
          <creation_ts>2011-03-14 10:58:25 -0700</creation_ts>
          <short_desc>WebKit2: WKTR should support WebKit2 full screen APIs</short_desc>
          <delta_ts>2011-04-18 16:29:12 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>webkit-ews</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>367068</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-03-14 10:58:25 -0700</bug_when>
    <thetext>Currently, DRT only supports WebKit full screen APIs. Now that Bug #56264 has landed, DRT should be able to run the WebKit2 full screen layout tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379608</commentid>
    <comment_count>1</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-04-05 08:56:41 -0700</bug_when>
    <thetext>And by DRT, I mean WebKitTestRunner.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379978</commentid>
    <comment_count>2</comment_count>
      <attachid>88338</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-04-05 17:07:55 -0700</bug_when>
    <thetext>Created attachment 88338
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379994</commentid>
    <comment_count>3</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-04-05 17:32:45 -0700</bug_when>
    <thetext>Whoops, missed the WebKit2/ChangeLog.  But that&apos;s ok, as it gives the a chance to rebase and re-upload anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379999</commentid>
    <comment_count>4</comment_count>
      <attachid>88344</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-04-05 17:37:28 -0700</bug_when>
    <thetext>Created attachment 88344
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380075</commentid>
    <comment_count>5</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-04-05 20:16:09 -0700</bug_when>
    <thetext>Attachment 88344 did not build on win:
Build output: http://queues.webkit.org/results/8341043</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380103</commentid>
    <comment_count>6</comment_count>
      <attachid>88362</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-04-05 21:30:03 -0700</bug_when>
    <thetext>Created attachment 88362
Patch

Forgot one #if ENABLE(FULLSCREEN_API) in WebPage.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380106</commentid>
    <comment_count>7</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-04-05 21:40:15 -0700</bug_when>
    <thetext>Attachment 88362 did not build on qt:
Build output: http://queues.webkit.org/results/8341071</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380108</commentid>
    <comment_count>8</comment_count>
      <attachid>88363</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-04-05 21:47:28 -0700</bug_when>
    <thetext>Created attachment 88363
Patch

Corrected the order of #endifs and end-braces in InjectedBundlePageFullScreenClient.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380111</commentid>
    <comment_count>9</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-04-05 21:53:57 -0700</bug_when>
    <thetext>Attachment 88362 did not build on win:
Build output: http://queues.webkit.org/results/8345052</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380116</commentid>
    <comment_count>10</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-04-05 22:00:44 -0700</bug_when>
    <thetext>Attachment 88363 did not build on qt:
Build output: http://queues.webkit.org/results/8341073</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380123</commentid>
    <comment_count>11</comment_count>
      <attachid>88366</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-04-05 22:11:20 -0700</bug_when>
    <thetext>Created attachment 88366
Patch

Made the #if in WKBundlePage.cpp more inclusive.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380131</commentid>
    <comment_count>12</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-04-05 22:53:29 -0700</bug_when>
    <thetext>Attachment 88363 did not build on win:
Build output: http://queues.webkit.org/results/8342047</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384516</commentid>
    <comment_count>13</comment_count>
      <attachid>88366</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-04-12 17:02:40 -0700</bug_when>
    <thetext>Comment on attachment 88366
Patch

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

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:143
&gt; +void WKBundlePageWillEnterFullScreenForElement(WKBundlePageRef pageRef, WKBundleNodeHandleRef elementRef)
&gt; +{
&gt; +    WebCore::Node* coreNode = toImpl(elementRef)-&gt;coreNode();
&gt; +    if (!coreNode || !coreNode-&gt;isElementNode())
&gt; +        return;
&gt; +
&gt; +    WebCore::Element* element = static_cast&lt;WebCore::Element*&gt;(coreNode);
&gt; +    element-&gt;document()-&gt;webkitWillEnterFullScreenForElement(element);
&gt; +}
&gt; +
&gt; +void WKBundlePageDidEnterFullScreenForElement(WKBundlePageRef pageRef, WKBundleNodeHandleRef elementRef)
&gt; +{
&gt; +    WebCore::Node* coreNode = toImpl(elementRef)-&gt;coreNode();
&gt; +    if (!coreNode || !coreNode-&gt;isElementNode())
&gt; +        return;
&gt; +    
&gt; +    WebCore::Element* element = static_cast&lt;WebCore::Element*&gt;(coreNode);
&gt; +    element-&gt;document()-&gt;webkitDidEnterFullScreenForElement(element);
&gt; +}
&gt; +
&gt; +void WKBundlePageWillExitFullScreenForElement(WKBundlePageRef pageRef, WKBundleNodeHandleRef elementRef)
&gt; +{
&gt; +    WebCore::Node* coreNode = toImpl(elementRef)-&gt;coreNode();
&gt; +    if (!coreNode || !coreNode-&gt;isElementNode())
&gt; +        return;
&gt; +    
&gt; +    WebCore::Element* element = static_cast&lt;WebCore::Element*&gt;(coreNode);
&gt; +    element-&gt;document()-&gt;webkitWillExitFullScreenForElement(element);
&gt; +}
&gt; +
&gt; +void WKBundlePageDidExitFullScreenForElement(WKBundlePageRef pageRef, WKBundleNodeHandleRef elementRef)
&gt; +{
&gt; +    WebCore::Node* coreNode = toImpl(elementRef)-&gt;coreNode();
&gt; +    if (!coreNode || !coreNode-&gt;isElementNode())
&gt; +        return;
&gt; +    
&gt; +    WebCore::Element* element = static_cast&lt;WebCore::Element*&gt;(coreNode);
&gt; +    element-&gt;document()-&gt;webkitDidExitFullScreenForElement(element);
&gt; +}

All the logic should be in WebPage, not in the API layer.

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.h:247
&gt; +#if defined(ENABLE_FULLSCREEN_API) &amp;&amp; ENABLE_FULLSCREEN_API
&gt; +// Full Screen client

Please don&apos;t put #ifdefs like these in API headers.  Clients will not not know the correct value to set.  Instead, the functions should just be no-ops if the feature is not supported.

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.h:257
&gt; +    WKBundlePageEnterFullScreenForElement                               enterFullScreenForElement;
&gt; +    WKBundlePageExitFullScreenForElement                                exitFullScreenForElement;

We usually prefix the set type of clients with Will or Did.

&gt; Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageFullScreenClient.h:46
&gt; +    bool supportsFullScreen(WebPage*, bool withKeyboard);

Instead of a bool, this should probably be an enum.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384651</commentid>
    <comment_count>14</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-04-12 21:16:54 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 88366 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=88366&amp;action=review
&gt; 
&gt; &gt; +void WKBundlePageDidExitFullScreenForElement(WKBundlePageRef pageRef, WKBundleNodeHandleRef elementRef)
&gt; &gt; +{
&gt; &gt; +    WebCore::Node* coreNode = toImpl(elementRef)-&gt;coreNode();
&gt; &gt; +    if (!coreNode || !coreNode-&gt;isElementNode())
&gt; &gt; +        return;
&gt; &gt; +    
&gt; &gt; +    WebCore::Element* element = static_cast&lt;WebCore::Element*&gt;(coreNode);
&gt; &gt; +    element-&gt;document()-&gt;webkitDidExitFullScreenForElement(element);
&gt; &gt; +}
&gt; 
&gt; All the logic should be in WebPage, not in the API layer.

Done.  (Well, in the page-&gt;fullScreenController())

&gt; &gt; Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.h:247
&gt; &gt; +#if defined(ENABLE_FULLSCREEN_API) &amp;&amp; ENABLE_FULLSCREEN_API
&gt; &gt; +// Full Screen client
&gt; 
&gt; Please don&apos;t put #ifdefs like these in API headers.  Clients will not not know the correct value to set.  Instead, the functions should just be no-ops if the feature is not supported.

Ah, I saw ENABLE_INSPECTOR in there and thought it was kosher.  Unifdefd.

&gt; &gt; Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.h:257
&gt; &gt; +    WKBundlePageEnterFullScreenForElement                               enterFullScreenForElement;
&gt; &gt; +    WKBundlePageExitFullScreenForElement                                exitFullScreenForElement;
&gt; 
&gt; We usually prefix the set type of clients with Will or Did.

These are commands, not notifications.  The will and did notifications come the other direction, and are also defined in this header.  Or maybe I&apos;m misunderstanding what &quot;the set type of clients&quot; means?

&gt; &gt; Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageFullScreenClient.h:46
&gt; &gt; +    bool supportsFullScreen(WebPage*, bool withKeyboard);
&gt; 
&gt; Instead of a bool, this should probably be an enum.

Sure thing boss.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384680</commentid>
    <comment_count>15</comment_count>
      <attachid>89339</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-04-12 22:23:29 -0700</bug_when>
    <thetext>Created attachment 89339
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386964</commentid>
    <comment_count>16</comment_count>
      <attachid>89339</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-15 15:01:57 -0700</bug_when>
    <thetext>Comment on attachment 89339
Patch

Rejecting attachment 89339 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=cr-jail-4&apos;, &apos;apply-...&quot; exit_code: 2

Last 500 characters of output:
atching file Source/WebKit2/WebProcess/WebPage/WebPage.h
Hunk #4 succeeded at 610 (offset 3 lines).
patching file Tools/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp
patching file Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.h
patching file Tools/WebKitTestRunner/TestController.cpp

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--reviewer&apos;, u&apos;Sam Weinig&apos;, u&apos;--force&apos;]&quot; exit_code: 1

Full output: http://queues.webkit.org/results/8452238</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386967</commentid>
    <comment_count>17</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-04-15 15:06:40 -0700</bug_when>
    <thetext>Well, I&apos;ll just land it manually then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>388156</commentid>
    <comment_count>18</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-04-18 16:29:12 -0700</bug_when>
    <thetext>Committed r84206: &lt;http://trac.webkit.org/changeset/84206&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88338</attachid>
            <date>2011-04-05 17:07:55 -0700</date>
            <delta_ts>2011-04-05 17:37:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56318-20110405170754.patch</filename>
            <type>text/plain</type>
            <size>29998</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODI3MzcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1ZDZjZDM4Mjc5NmVkNzdmNGYxMjRj
YmUwMjI3YTYzMjcwMTVmZTA2Li4xM2YwOWQ3YTI2YjM0NTk0N2Y2NWI0YzE2YzRiMGZlMWU3YTRl
MTc4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDQtMDUgIEplciBOb2JsZSAgPGplci5u
b2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgV2ViS2l0MjogV0tUUiBzaG91bGQgc3VwcG9ydCBXZWJLaXQyIGZ1bGwgc2NyZWVu
IEFQSXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2
MzE4CisKKyAgICAgICAgV0tUUiBkb2VzIG5vdCBzdXBwb3J0IHRoZSBldmVudFNlbmRlci5rZXlE
b3duKCkgbWV0aG9kLCBzbyB1c2UgbW91c2VEb3duKCkgCisgICAgICAgIGluIHRob3NlIGNhc2Vz
IHRoYXQga2V5RG93bigpIGRvZXMgbm90IGV4aXN0LgorCisgICAgICAgICogZnVsbHNjcmVlbi9m
dWxsLXNjcmVlbi10ZXN0LmpzOgorICAgICAgICAocnVuV2l0aEtleURvd24uZG9jdW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChydW5XaXRoS2V5RG93bik6CisKIDIwMTEtMDQtMDEg
IEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBTa2lwIHBsYXRmb3Jt
L21hYy9wbHVnaW5zL2NvbnZlcnQtcG9pbnQuaHRtbCBiZWNhdXNlIGl0IHJlbGllcyBvbiBjb2Rl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXRlc3QuanMg
Yi9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXRlc3QuanMKaW5kZXggYWM5NDA5
MTI5YTE3NzY0ZGQ0YWIyZGYwMTg3NGI2YWZjNjU5OGFjZC4uMTQ2NjAxMWJkYjlkNGJiMmFjMzgy
ZTdmODljZGRjOGVmY2UwZDliNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9m
dWxsLXNjcmVlbi10ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3Jl
ZW4tdGVzdC5qcwpAQCAtMTAsOSArMTAsMTQgQEAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgewogCiBmdW5jdGlvbiBydW5XaXRoS2V5RG93bihmbikgCiB7Ci0gICAgZG9jdW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcigna2V5cHJlc3MnLCBmdW5jdGlvbigpIHsgZm4oKTsgfSwgZmFsc2Up
OworICAgIC8vIEZJWE1FOiBXS1RSIGRvZXMgbm90IHlldCBzdXBwb3J0IHRoZSBrZXlEb3duKCkg
bWVzc2FnZS4gIERvIGEgbW91c2VEb3duIGhlcmUKKyAgICAvLyBpbnN0ZWFkIHVudGlsIGtleURv
d24gc3VwcG9ydCBpcyBhZGRlZC4KKyAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKGV2ZW50
U2VuZGVyLmtleURvd24gPyAna2V5cHJlc3MnIDogJ21vdXNlZG93bicsIGZ1bmN0aW9uKCkgeyBm
bigpOyB9LCBmYWxzZSk7CiAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewot
ICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCIgIiwgW10pOworICAgICAgICBpZiAoZXZlbnRT
ZW5kZXIua2V5RG93bikKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oIiAiLCBbXSk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOwogICAg
IH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCmluZGV4IGQzM2NjZDMyYmEyNzIyMGI3NDdiNzQwMGViZTAyYmYzMzY1
NmViY2YuLjQwMWQ2YjhlNjFmMWE1YzBlODMwMzRkZjM3MTk3YzQ0ODJlNjA4NTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzNCBAQAorMjAxMS0wNC0wNSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBXZWJLaXQyOiBXS1RSIHNob3VsZCBzdXBwb3J0IFdlYktpdDIgZnVsbCBzY3JlZW4gQVBJcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYzMTgKKwor
ICAgICAgICBBZGQgYSBuZXcgV0tCdW5kbGVQYWdlIEFQSSBmb3IgRnVsbCBTY3JlZW4gZXZlbnRz
LgorCisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c0Z1bGxTY3JlZW4pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6ZW50ZXJGdWxsU2NyZWVuRm9y
RWxlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpleGl0RnVs
bFNjcmVlbkZvckVsZW1lbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdLQnVuZGxlUGFnZVNldEZ1bGxTY3Jl
ZW5DbGllbnQpOgorICAgICAgICAoV0tCdW5kbGVQYWdlV2lsbEVudGVyRnVsbFNjcmVlbkZvckVs
ZW1lbnQpOgorICAgICAgICAoV0tCdW5kbGVQYWdlRGlkRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVu
dCk6CisgICAgICAgIChXS0J1bmRsZVBhZ2VXaWxsRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KToK
KyAgICAgICAgKFdLQnVuZGxlUGFnZURpZEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUZ1bGxT
Y3JlZW5DbGllbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQ
YWdlRnVsbFNjcmVlbkNsaWVudDo6c3VwcG9ydHNGdWxsU2NyZWVuKToKKyAgICAgICAgKFdlYktp
dDo6SW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudDo6ZW50ZXJGdWxsU2NyZWVuRm9y
RWxlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5D
bGllbnQ6OmV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50Lmg6IEFkZGVk
LgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6aW5pdGlhbGl6ZUluamVjdGVkQnVuZGxlRnVsbFNjcmVlbkNsaWVudCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6aW5qZWN0ZWRCdW5kbGVGdWxsU2NyZWVuQ2xpZW50KToKKwogMjAxMS0wMy0z
MSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBEYW4gQmVybnN0ZWluLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDQyMTZmYzBhMzZiZmNhODI5N2E1YzkwZmZjODVlYjgyM2Ex
YjljMjAuLmI1YTkzMTg0MGE4YjMyMGE2OGVjNzc3NWE1MzZhYjc0MGVmZTM2YjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTc2
OCw2ICs3NjgsOCBAQAogCQlDNTc0QTM3NzEyRTYwOTlEMDAyREZFOTggLyogV2ViRHJhZ0NsaWVu
dE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1
NTRGRkEyMTJFNEU4RUEwMDJGMjJDMCAvKiBXZWJEcmFnQ2xpZW50TWFjLm1tICovOyB9OwogCQlD
NTc0QTU4MTEyRTY2NjgxMDAyREZFOTggLyogUGFzdGVib2FyZFR5cGVzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTc0QTU3RjEyRTY2NjgxMDAyREZF
OTggLyogUGFzdGVib2FyZFR5cGVzLmggKi87IH07CiAJCUM1NzRBNTgyMTJFNjY2ODEwMDJERkU5
OCAvKiBQYXN0ZWJvYXJkVHlwZXMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDNTc0QTU4MDEyRTY2NjgxMDAyREZFOTggLyogUGFzdGVib2FyZFR5cGVz
Lm1tICovOyB9OworCQlDRDVDNjZBMDEzNEI5RDM4MDA0RkUyQTggLyogSW5qZWN0ZWRCdW5kbGVQ
YWdlRnVsbFNjcmVlbkNsaWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRDVDNjY5RTEzNEI5RDM2MDA0RkUyQTggLyogSW5qZWN0ZWRCdW5kbGVQ
YWdlRnVsbFNjcmVlbkNsaWVudC5jcHAgKi87IH07CisJCUNENUM2NkExMTM0QjlEMzgwMDRGRTJB
OCAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDVDNjY5RjEzNEI5RDM3MDA0RkUyQTgg
LyogSW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudC5oICovOyB9OwogCQlDRDZGNzVG
NDEzMUI2NkQwMDBENkIyMUUgLyogV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDczQkEzRTEzMUEyRThB
MDBFRURFRDIgLyogV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5jcHAgKi87IH07CiAJCUNENzNC
QTQ3MTMxQUNDOUEwMEVFREVEMiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5TWVzc2FnZVJl
Y2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENENzNCQTQ1MTMxQUNDODgwMEVFREVEMiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5TWVz
c2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJQ0Q3M0JBNEUxMzFBQ0RCNzAwRUVERUQyIC8qIFdl
YkZ1bGxTY3JlZW5NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENzNCQTQ4MTMxQUNEOEUwMEVFREVEMiAvKiBX
ZWJGdWxsU2NyZWVuTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CkBAIC0xNjc5LDYg
KzE2ODEsOCBAQAogCQlDNTU0RkZBMjEyRTRFOEVBMDAyRjIyQzAgLyogV2ViRHJhZ0NsaWVudE1h
Yy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkRyYWdDbGll
bnRNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1NzRBNTdGMTJFNjY2ODEw
MDJERkU5OCAvKiBQYXN0ZWJvYXJkVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUGFzdGVib2FyZFR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1
NzRBNTgwMTJFNjY2ODEwMDJERkU5OCAvKiBQYXN0ZWJvYXJkVHlwZXMubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQYXN0ZWJvYXJkVHlwZXMubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUNENUM2NjlFMTM0QjlEMzYwMDRGRTJBOCAvKiBJbmplY3Rl
ZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEluamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDVDNjY5RjEzNEI5RDM3MDA0RkUyQTggLyogSW5q
ZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBJbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNENzNCQTM3MTMxQTI5RkUwMEVFREVEMiAvKiBXZWJGdWxs
U2NyZWVuTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBX
ZWJGdWxsU2NyZWVuTWFuYWdlci5jcHA7IHBhdGggPSBGdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5N
YW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q3M0JBMzgxMzFBMjlG
RTAwRUVERUQyIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyLmg7IHBhdGggPSBGdWxsU2NyZWVuL1dl
YkZ1bGxTY3JlZW5NYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNENzNC
QTM5MTMxQTI5RkUwMEVFREVEMiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlci5tZXNzYWdlcy5pbiAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBXZWJGdWxsU2NyZWVuTWFuYWdlci5tZXNzYWdlcy5pbjsg
cGF0aCA9IEZ1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIubWVzc2FnZXMuaW47IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yODM0LDYgKzI4MzgsOCBAQAogCQkJCUJDMTRERjc2
MTIwQjVCNzkwMDgyNkMwQyAvKiBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkLmNwcCAqLywKIAkJ
CQlCQzE0REY3NTEyMEI1Qjc5MDA4MjZDMEMgLyogSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZC5o
ICovLAogCQkJCUJDQjBCMEREMTIzMDVBOEMwMEIxMzQxRSAvKiBJbmplY3RlZEJ1bmRsZVVzZXJN
ZXNzYWdlQ29kZXJzLmggKi8sCisJCQkJQ0Q1QzY2OUUxMzRCOUQzNjAwNEZFMkE4IC8qIEluamVj
dGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQuY3BwICovLAorCQkJCUNENUM2NjlGMTM0QjlE
MzcwMDRGRTJBOCAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50LmggKi8sCiAJ
CQkpOwogCQkJcGF0aCA9IEluamVjdGVkQnVuZGxlOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKQEAgLTM2NTksNiArMzY2NSw3IEBACiAJCQkJNTEyM0NGMUMxMzNEMjYwQTAwNTZGODAwIC8q
IFdLSWNvbkRhdGFiYXNlQ0cuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxODM5MzQ5MTM0Mjk3QTUw
MDE4NDJFQyAvKiBUZXh0SW5wdXRTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzBGQTUyNDMx
MzQ1Njk0QTAwMjhFOEMyIC8qIExheWVyVHJlZUhvc3RDQU1hYy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQ0Q1QzY2QTExMzRCOUQzODAwNEZFMkE4IC8qIEluamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3Jl
ZW5DbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtNDI4Myw2ICs0MjkwLDcgQEAKIAkJCQk1MTIz
Q0YxQjEzM0QyNjBBMDA1NkY4MDAgLyogV0tJY29uRGF0YWJhc2VDRy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlGNkE5MDgxMzEzM0MyMDUxMDA4MkMzRjQgLyogV2ViQ29va2llTWFuYWdlck1hYy5t
bSBpbiBTb3VyY2VzICovLAogCQkJCUY2RDYzMkJDMTMzRDE5ODIwMDc0M0Q3NyAvKiBXZWJDb29r
aWVNYW5hZ2VyUHJveHlNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQlDRDVDNjZBMDEzNEI5RDM4
MDA0RkUyQTggLyogSW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRnVsbFNjcmVl
bi9XZWJGdWxsU2NyZWVuTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Z1
bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIuY3BwCmluZGV4IGU4NTY4NzYzNjNlMDc5ZGQx
OWJiNmQwODNiMGEyOGNjOTZiNmM4MGMuLjQ3ZjFkNDJiYTMyMzA3MDVjNDdkZjY3YjNhNDQ1ODIy
OTM1YTkyYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRnVsbFNjcmVl
bi9XZWJGdWxsU2NyZWVuTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmNwcApAQCAtNjYsOSArNjYsOCBAQCBi
b29sIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c0Z1bGxTY3JlZW4oYm9vbCB3aXRoS2V5
Ym9hcmQpCiAgICAgaWYgKCFtX3BhZ2UtPmNvcmVQYWdlKCktPnNldHRpbmdzKCktPmZ1bGxTY3Jl
ZW5FbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGJvb2wgc3VwcG9ydHMg
PSB0cnVlOwotICAgIG1fcGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5h
Z2VyUHJveHk6OlN1cHBvcnRzRnVsbFNjcmVlbih3aXRoS2V5Ym9hcmQpLCBzdXBwb3J0cyk7Ci0g
ICAgcmV0dXJuIHN1cHBvcnRzOworICAgIHJldHVybiBtX3BhZ2UtPmluamVjdGVkQnVuZGxlRnVs
bFNjcmVlbkNsaWVudCgpLnN1cHBvcnRzRnVsbFNjcmVlbihtX3BhZ2UuZ2V0KCksIHdpdGhLZXli
b2FyZCk7CisKIH0KIAogdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlcjo6ZW50ZXJGdWxsU2NyZWVu
Rm9yRWxlbWVudChXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50KQpAQCAtNzYsMTQgKzc1LDE0IEBA
IHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXI6OmVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoV2Vi
Q29yZTo6RWxlbWVudCogZWxlbWVudCkKICAgICBBU1NFUlQoZWxlbWVudCk7CiAgICAgbV9lbGVt
ZW50ID0gZWxlbWVudDsKICAgICBtX2luaXRpYWxGcmFtZSA9IG1fZWxlbWVudC0+c2NyZWVuUmVj
dCgpOwotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94
eTo6RW50ZXJGdWxsU2NyZWVuKCkpOworICAgIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVGdWxsU2Ny
ZWVuQ2xpZW50KCkuZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChtX3BhZ2UuZ2V0KCksIGVsZW1l
bnQpOwogfQogCiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpleGl0RnVsbFNjcmVlbkZvckVs
ZW1lbnQoV2ViQ29yZTo6RWxlbWVudCogZWxlbWVudCkKIHsKICAgICBBU1NFUlQoZWxlbWVudCk7
CiAgICAgQVNTRVJUKG1fZWxlbWVudCA9PSBlbGVtZW50KTsKLSAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OkV4aXRGdWxsU2NyZWVuKCkpOworICAg
IG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVGdWxsU2NyZWVuQ2xpZW50KCkuZXhpdEZ1bGxTY3JlZW5G
b3JFbGVtZW50KG1fcGFnZS5nZXQoKSwgZWxlbWVudCk7CiB9CiAKIHZvaWQgV2ViRnVsbFNjcmVl
bk1hbmFnZXI6OmJlZ2FuRW50ZXJGdWxsU2NyZWVuQW5pbWF0aW9uKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdl
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVQYWdlLmNwcAppbmRleCAxYTljMTMyY2IwZjJhYjJmNTdiZjYzNGU4OTMxZTIxM2I1NmYz
NzZjLi5kY2U3MDI5YjkyOWY1ODFkYjBlNjkwYzk4MzFkNDkzYWEwZDZjYjM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZVBhZ2UuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiV0tCdW5k
bGVQYWdlUHJpdmF0ZS5oIgogCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExp
c3QuaCIKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuaCIKICNpbmNsdWRlICJX
S0FQSUNhc3QuaCIKICNpbmNsdWRlICJXS0J1bmRsZUFQSUNhc3QuaCIKICNpbmNsdWRlICJXZWJJ
bWFnZS5oIgpAQCAtOTMsNiArOTQsNTUgQEAgdm9pZCBXS0J1bmRsZVBhZ2VTZXRVSUNsaWVudChX
S0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tCdW5kbGVQYWdlVUlDbGllbnQqIHdrQ2wKICAgICB0
b0ltcGwocGFnZVJlZiktPmluaXRpYWxpemVJbmplY3RlZEJ1bmRsZVVJQ2xpZW50KHdrQ2xpZW50
KTsKIH0KIAorI2lmIGRlZmluZWQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAmJiBFTkFCTEVfRlVM
TFNDUkVFTl9BUEkKK3ZvaWQgV0tCdW5kbGVQYWdlU2V0RnVsbFNjcmVlbkNsaWVudChXS0J1bmRs
ZVBhZ2VSZWYgcGFnZVJlZiwgV0tCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudCogd2tDbGllbnQp
Cit7CisgICAgaWYgKHdrQ2xpZW50ICYmIHdrQ2xpZW50LT52ZXJzaW9uKQorICAgICAgICByZXR1
cm47CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5pbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVGdWxsU2Ny
ZWVuQ2xpZW50KHdrQ2xpZW50KTsKK30KKwordm9pZCBXS0J1bmRsZVBhZ2VXaWxsRW50ZXJGdWxs
U2NyZWVuRm9yRWxlbWVudChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tCdW5kbGVOb2RlSGFu
ZGxlUmVmIGVsZW1lbnRSZWYpCit7CisgICAgV2ViQ29yZTo6Tm9kZSogY29yZU5vZGUgPSB0b0lt
cGwoZWxlbWVudFJlZiktPmNvcmVOb2RlKCk7CisgICAgaWYgKCFjb3JlTm9kZSB8fCAhY29yZU5v
ZGUtPmlzRWxlbWVudE5vZGUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgV2ViQ29yZTo6RWxl
bWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkVsZW1lbnQqPihjb3JlTm9kZSk7
CisgICAgZWxlbWVudC0+ZG9jdW1lbnQoKS0+d2Via2l0V2lsbEVudGVyRnVsbFNjcmVlbkZvckVs
ZW1lbnQoZWxlbWVudCk7Cit9CisKK3ZvaWQgV0tCdW5kbGVQYWdlRGlkRW50ZXJGdWxsU2NyZWVu
Rm9yRWxlbWVudChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tCdW5kbGVOb2RlSGFuZGxlUmVm
IGVsZW1lbnRSZWYpCit7CisgICAgV2ViQ29yZTo6Tm9kZSogY29yZU5vZGUgPSB0b0ltcGwoZWxl
bWVudFJlZiktPmNvcmVOb2RlKCk7CisgICAgaWYgKCFjb3JlTm9kZSB8fCAhY29yZU5vZGUtPmlz
RWxlbWVudE5vZGUoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIFdlYkNvcmU6OkVsZW1l
bnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpFbGVtZW50Kj4oY29yZU5vZGUpOwor
ICAgIGVsZW1lbnQtPmRvY3VtZW50KCktPndlYmtpdERpZEVudGVyRnVsbFNjcmVlbkZvckVsZW1l
bnQoZWxlbWVudCk7Cit9CisjZW5kaWYKKwordm9pZCBXS0J1bmRsZVBhZ2VXaWxsRXhpdEZ1bGxT
Y3JlZW5Gb3JFbGVtZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZU5vZGVIYW5k
bGVSZWYgZWxlbWVudFJlZikKK3sKKyAgICBXZWJDb3JlOjpOb2RlKiBjb3JlTm9kZSA9IHRvSW1w
bChlbGVtZW50UmVmKS0+Y29yZU5vZGUoKTsKKyAgICBpZiAoIWNvcmVOb2RlIHx8ICFjb3JlTm9k
ZS0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgV2ViQ29yZTo6
RWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkVsZW1lbnQqPihjb3JlTm9k
ZSk7CisgICAgZWxlbWVudC0+ZG9jdW1lbnQoKS0+d2Via2l0V2lsbEV4aXRGdWxsU2NyZWVuRm9y
RWxlbWVudChlbGVtZW50KTsKK30KKwordm9pZCBXS0J1bmRsZVBhZ2VEaWRFeGl0RnVsbFNjcmVl
bkZvckVsZW1lbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlTm9kZUhhbmRsZVJl
ZiBlbGVtZW50UmVmKQoreworICAgIFdlYkNvcmU6Ok5vZGUqIGNvcmVOb2RlID0gdG9JbXBsKGVs
ZW1lbnRSZWYpLT5jb3JlTm9kZSgpOworICAgIGlmICghY29yZU5vZGUgfHwgIWNvcmVOb2RlLT5p
c0VsZW1lbnROb2RlKCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBXZWJDb3JlOjpFbGVt
ZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RWxlbWVudCo+KGNvcmVOb2RlKTsK
KyAgICBlbGVtZW50LT5kb2N1bWVudCgpLT53ZWJraXREaWRFeGl0RnVsbFNjcmVlbkZvckVsZW1l
bnQoZWxlbWVudCk7Cit9CisKIFdLQnVuZGxlUGFnZUdyb3VwUmVmIFdLQnVuZGxlUGFnZUdldFBh
Z2VHcm91cChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZikKIHsKICAgICByZXR1cm4gdG9BUEkodG9J
bXBsKHBhZ2VSZWYpLT5wYWdlR3JvdXAoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaAppbmRl
eCBlMDFmNTFmOGE0OTcwM2YxMjI4ZWNjY2E0N2Y5YmJlYmZmNjQzNDM2Li4wY2M5NDVlZjExZDYx
OTI4MTA4YzFhYmM5M2JmOTk3NzdhZTcyZjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmgK
QEAgLTI0Myw4ICsyNDMsMjkgQEAgc3RydWN0IFdLQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50
IHsKIH07CiB0eXBlZGVmIHN0cnVjdCBXS0J1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudCBXS0J1
bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudDsKIAorI2lmIGRlZmluZWQoRU5BQkxFX0ZVTExTQ1JF
RU5fQVBJKSAmJiBFTkFCTEVfRlVMTFNDUkVFTl9BUEkKKy8vIEZ1bGwgU2NyZWVuIGNsaWVudAor
dHlwZWRlZiBib29sICgqV0tCdW5kbGVQYWdlU3VwcG9ydHNGdWxsU2NyZWVuKShXS0J1bmRsZVBh
Z2VSZWYgcGFnZSwgYm9vbCB3aXRoS2V5Ym9hcmQpOwordHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQ
YWdlRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudCkoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVu
ZGxlTm9kZUhhbmRsZVJlZiBlbGVtZW50KTsKK3R5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZUV4
aXRGdWxsU2NyZWVuRm9yRWxlbWVudCkoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlTm9k
ZUhhbmRsZVJlZiBlbGVtZW50KTsKKworc3RydWN0IFdLQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGll
bnQgeworICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbjsKKyAgICBjb25zdCB2b2lkICogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudEluZm87
CisgICAgV0tCdW5kbGVQYWdlU3VwcG9ydHNGdWxsU2NyZWVuICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdXBwb3J0c0Z1bGxTY3JlZW47CisgICAgV0tCdW5kbGVQYWdlRW50
ZXJGdWxsU2NyZWVuRm9yRWxlbWVudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRl
ckZ1bGxTY3JlZW5Gb3JFbGVtZW50OworICAgIFdLQnVuZGxlUGFnZUV4aXRGdWxsU2NyZWVuRm9y
RWxlbWVudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpdEZ1bGxTY3JlZW5Gb3JF
bGVtZW50OworfTsKK3R5cGVkZWYgc3RydWN0IFdLQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQg
V0tCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudDsKKworV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQ
YWdlV2lsbEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdL
QnVuZGxlTm9kZUhhbmRsZVJlZiBlbGVtZW50KTsKK1dLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFn
ZURpZEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVu
ZGxlTm9kZUhhbmRsZVJlZiBlbGVtZW50KTsKK1dLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZVdp
bGxFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxl
Tm9kZUhhbmRsZVJlZiBlbGVtZW50KTsKK1dLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZURpZEV4
aXRGdWxsU2NyZWVuRm9yRWxlbWVudChXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVOb2Rl
SGFuZGxlUmVmIGVsZW1lbnQpOworI2VuZGlmCisKIFdLX0VYUE9SVCBXS1R5cGVJRCBXS0J1bmRs
ZVBhZ2VHZXRUeXBlSUQoKTsKLSAKKwogV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlU2V0Q29u
dGV4dE1lbnVDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlUGFnZUNvbnRleHRN
ZW51Q2xpZW50KiBjbGllbnQpOwogV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlU2V0RWRpdG9y
Q2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZVBhZ2VFZGl0b3JDbGllbnQqIGNs
aWVudCk7CiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VTZXRGb3JtQ2xpZW50KFdLQnVuZGxl
UGFnZVJlZiBwYWdlLCBXS0J1bmRsZVBhZ2VGb3JtQ2xpZW50KiBjbGllbnQpOwpAQCAtMjUyLDYg
KzI3MywxMCBAQCBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50
KFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZVBhZwogV0tfRVhQT1JUIHZvaWQgV0tCdW5k
bGVQYWdlU2V0UmVzb3VyY2VMb2FkQ2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRs
ZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQqIGNsaWVudCk7CiBXS19FWFBPUlQgdm9pZCBXS0J1bmRs
ZVBhZ2VTZXRQb2xpY3lDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlUGFnZVBv
bGljeUNsaWVudCogY2xpZW50KTsKIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZVNldFVJQ2xp
ZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZVBhZ2VVSUNsaWVudCogY2xpZW50KTsK
KyAgICAKKyNpZiBkZWZpbmVkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJiYgRU5BQkxFX0ZVTExT
Q1JFRU5fQVBJCitXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VTZXRGdWxsU2NyZWVuQ2xpZW50
KFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50KiBjbGll
bnQpOworI2VuZGlmCiAKIFdLX0VYUE9SVCBXS0J1bmRsZVBhZ2VHcm91cFJlZiBXS0J1bmRsZVBh
Z2VHZXRQYWdlR3JvdXAoV0tCdW5kbGVQYWdlUmVmIHBhZ2UpOwogV0tfRVhQT1JUIFdLQnVuZGxl
RnJhbWVSZWYgV0tCdW5kbGVQYWdlR2V0TWFpbkZyYW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjBmODFhMWNiM2QyNmE2NDM4MmY5NTZmNWEyMThlNzE5NWEwN2RkMzQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQuY3BwCkBAIC0wLDAgKzEsNzMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoRlVMTFND
UkVFTl9BUEkpCisKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50
LmgiCisKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuaCIKKyNpbmNsdWRlICJX
S0FQSUNhc3QuaCIKKyNpbmNsdWRlICJXS0J1bmRsZUFQSUNhc3QuaCIKKyNpbmNsdWRlICJXZWJG
dWxsU2NyZWVuTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQYWdlLmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9FbGVtZW50Lmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworYm9vbCBJbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVu
Q2xpZW50OjpzdXBwb3J0c0Z1bGxTY3JlZW4oV2ViUGFnZSAqcGFnZSwgYm9vbCB3aXRoS2V5Ym9h
cmQpCit7CisgICAgaWYgKG1fY2xpZW50LnN1cHBvcnRzRnVsbFNjcmVlbikgCisgICAgICAgIHJl
dHVybiBtX2NsaWVudC5zdXBwb3J0c0Z1bGxTY3JlZW4odG9BUEkocGFnZSksIHdpdGhLZXlib2Fy
ZCk7CisKKyAgICBib29sIHN1cHBvcnRzID0gdHJ1ZTsKKyAgICBwYWdlLT5zZW5kU3luYyhNZXNz
YWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6U3VwcG9ydHNGdWxsU2NyZWVuKHdpdGhL
ZXlib2FyZCksIHN1cHBvcnRzKTsKKyAgICByZXR1cm4gc3VwcG9ydHM7Cit9CisKK3ZvaWQgSW5q
ZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudDo6ZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVu
dChXZWJQYWdlICpwYWdlLCBXZWJDb3JlOjpFbGVtZW50ICplbGVtZW50KQoreworICAgIGlmICht
X2NsaWVudC5lbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KSB7CisgICAgICAgIFJlZlB0cjxJbmpl
Y3RlZEJ1bmRsZU5vZGVIYW5kbGU+IG5vZGVIYW5kbGUgPSBJbmplY3RlZEJ1bmRsZU5vZGVIYW5k
bGU6OmdldE9yQ3JlYXRlKGVsZW1lbnQpOworICAgICAgICBtX2NsaWVudC5lbnRlckZ1bGxTY3Jl
ZW5Gb3JFbGVtZW50KHRvQVBJKHBhZ2UpLCB0b0FQSShub2RlSGFuZGxlLmdldCgpKSk7CisgICAg
fSBlbHNlCisgICAgICAgIHBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2Vy
UHJveHk6OkVudGVyRnVsbFNjcmVlbigpKTsKK30KKwordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VG
dWxsU2NyZWVuQ2xpZW50OjpleGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoV2ViUGFnZSAqcGFnZSwg
V2ViQ29yZTo6RWxlbWVudCAqZWxlbWVudCkKK3sKKyAgICBpZiAobV9jbGllbnQuZW50ZXJGdWxs
U2NyZWVuRm9yRWxlbWVudCkgeworICAgICAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVOb2RlSGFu
ZGxlPiBub2RlSGFuZGxlID0gSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpnZXRPckNyZWF0ZShl
bGVtZW50KTsKKyAgICAgICAgbV9jbGllbnQuZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudCh0b0FQ
SShwYWdlKSwgdG9BUEkobm9kZUhhbmRsZS5nZXQoKSkpOworICAgIH0gZWxzZQorICAgICAgICBw
YWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpFeGl0RnVsbFNj
cmVlbigpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUo
RlVMTFNDUkVFTl9BUEkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRnVs
bFNjcmVlbkNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0Y2RhNTJjNmZjODkwM2UzMGZiNmJkMGVlNmYw
NTVlYjFlYmIyYjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQuaApAQCAt
MCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbmplY3RlZEJ1bmRsZVBhZ2VGdWxs
U2NyZWVuQ2xpZW50X2gKKyNkZWZpbmUgSW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVu
dF9oCisKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisKKyNpbmNsdWRlICJBUElDbGllbnQu
aCIKKyNpbmNsdWRlICJXS0J1bmRsZVBhZ2UuaCIKKyNpbmNsdWRlICJXZWJFdmVudC5oIgorI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEVsZW1l
bnQ7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlOworCitjbGFzcyBJ
bmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50IDogcHVibGljIEFQSUNsaWVudDxXS0J1
bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50PiB7CitwdWJsaWM6CisgICAgYm9vbCBzdXBwb3J0c0Z1
bGxTY3JlZW4oV2ViUGFnZSosIGJvb2wgd2l0aEtleWJvYXJkKTsKKyAgICB2b2lkIGVudGVyRnVs
bFNjcmVlbkZvckVsZW1lbnQoV2ViUGFnZSosIFdlYkNvcmU6OkVsZW1lbnQqKTsKKyAgICB2b2lk
IGV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChXZWJQYWdlKiwgV2ViQ29yZTo6RWxlbWVudCopOwor
fTsKKworI2VuZGlmIC8vIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZiAvLyBJbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50X2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA4
OTUyYjZmOTUwM2Y4NjlmYmI3ZjcyYmViZDllMWNjNzBkOTJiMjk0Li43Y2ExYWM2ZDkwMGQ0ODJj
ZGM0NTkzMzk0NDE0ZGU2NWIyNGNlMjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yODcsNiArMjg3LDEzIEBAIHZvaWQgV2ViUGFnZTo6
aW5pdGlhbGl6ZUluamVjdGVkQnVuZGxlVUlDbGllbnQoV0tCdW5kbGVQYWdlVUlDbGllbnQqIGNs
aWVudCkKICAgICBtX3VpQ2xpZW50LmluaXRpYWxpemUoY2xpZW50KTsKIH0KIAorI2lmIEVOQUJM
RShGVUxMU0NSRUVOX0FQSSkKK3ZvaWQgV2ViUGFnZTo6aW5pdGlhbGl6ZUluamVjdGVkQnVuZGxl
RnVsbFNjcmVlbkNsaWVudChXS0J1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50KiBjbGllbnQpCit7
CisgICAgbV9mdWxsU2NyZWVuQ2xpZW50LmluaXRpYWxpemUoY2xpZW50KTsKK30KKyNlbmRpZgor
CiBQYXNzUmVmUHRyPFBsdWdpbj4gV2ViUGFnZTo6Y3JlYXRlUGx1Z2luKGNvbnN0IFBsdWdpbjo6
UGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKICAgICBTdHJpbmcgcGx1Z2luUGF0aDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDJmMjA3OTU5OWJj
OGRhMjI5MTJjZmNkZDlmYWFkNjdlYjMzMDY4MmYuLjY5NzBhYjNjOTlmNDU5ZDdlMmRhNmY1NGEy
MDFmNDM1NDA4ZTBlYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlUGFnZUNv
bnRleHRNZW51Q2xpZW50LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVQYWdlRm9ybUNsaWVudC5oIgorI2luY2x1
ZGUgIkluamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQuaCIKICNpbmNsdWRlICJJbmpl
Y3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVBh
Z2VQb2xpY3lDbGllbnQuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJjZUxv
YWRDbGllbnQuaCIKQEAgLTE5Myw2ICsxOTQsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbml0aWFs
aXplSW5qZWN0ZWRCdW5kbGVQb2xpY3lDbGllbnQoV0tCdW5kbGVQYWdlUG9saWN5Q2xpZW50Kik7
CiAgICAgdm9pZCBpbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVSZXNvdXJjZUxvYWRDbGllbnQoV0tC
dW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50Kik7CiAgICAgdm9pZCBpbml0aWFsaXplSW5qZWN0
ZWRCdW5kbGVVSUNsaWVudChXS0J1bmRsZVBhZ2VVSUNsaWVudCopOworI2lmIEVOQUJMRShGVUxM
U0NSRUVOX0FQSSkKKyAgICB2b2lkIGluaXRpYWxpemVJbmplY3RlZEJ1bmRsZUZ1bGxTY3JlZW5D
bGllbnQoV0tCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudCopOworI2VuZGlmCiAKICAgICBJbmpl
Y3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudCYgaW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVu
dUNsaWVudCgpIHsgcmV0dXJuIG1fY29udGV4dE1lbnVDbGllbnQ7IH0KICAgICBJbmplY3RlZEJ1
bmRsZVBhZ2VFZGl0b3JDbGllbnQmIGluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KCkgeyByZXR1
cm4gbV9lZGl0b3JDbGllbnQ7IH0KQEAgLTIwMSw2ICsyMDUsNyBAQCBwdWJsaWM6CiAgICAgSW5q
ZWN0ZWRCdW5kbGVQYWdlUG9saWN5Q2xpZW50JiBpbmplY3RlZEJ1bmRsZVBvbGljeUNsaWVudCgp
IHsgcmV0dXJuIG1fcG9saWN5Q2xpZW50OyB9CiAgICAgSW5qZWN0ZWRCdW5kbGVQYWdlUmVzb3Vy
Y2VMb2FkQ2xpZW50JiBpbmplY3RlZEJ1bmRsZVJlc291cmNlTG9hZENsaWVudCgpIHsgcmV0dXJu
IG1fcmVzb3VyY2VMb2FkQ2xpZW50OyB9CiAgICAgSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQm
IGluamVjdGVkQnVuZGxlVUlDbGllbnQoKSB7IHJldHVybiBtX3VpQ2xpZW50OyB9CisgICAgSW5q
ZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudCYgaW5qZWN0ZWRCdW5kbGVGdWxsU2NyZWVu
Q2xpZW50KCkgeyByZXR1cm4gbV9mdWxsU2NyZWVuQ2xpZW50OyB9CiAKICAgICBib29sIGZpbmRT
dHJpbmdGcm9tSW5qZWN0ZWRCdW5kbGUoY29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMpOwogCkBA
IC01ODMsNiArNTg4LDkgQEAgcHJpdmF0ZToKICAgICBJbmplY3RlZEJ1bmRsZVBhZ2VQb2xpY3lD
bGllbnQgbV9wb2xpY3lDbGllbnQ7CiAgICAgSW5qZWN0ZWRCdW5kbGVQYWdlUmVzb3VyY2VMb2Fk
Q2xpZW50IG1fcmVzb3VyY2VMb2FkQ2xpZW50OwogICAgIEluamVjdGVkQnVuZGxlUGFnZVVJQ2xp
ZW50IG1fdWlDbGllbnQ7CisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAgIEluamVjdGVk
QnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQgbV9mdWxsU2NyZWVuQ2xpZW50OworI2VuZGlmCiAK
ICNpZiBFTkFCTEUoVElMRURfQkFDS0lOR19TVE9SRSkKICAgICBXZWJDb3JlOjpJbnRTaXplIG1f
cmVzaXplc1RvQ29udGVudHNMYXlvdXRTaXplOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDk5Njg1MjgxZDYwZmMxMTk4NjNmNzE4YTIwZTYyZDM4
ZWQzZTQ0NmEuLmYyMGQ3YTk4MDBlN2E3YjIyODcwNGY4ODM5YTEzNTQ1OGJmNjM2NDUgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
MiBAQAorMjAxMS0wNC0wNSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJLaXQyOiBXS1RS
IHNob3VsZCBzdXBwb3J0IFdlYktpdDIgZnVsbCBzY3JlZW4gQVBJcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYzMTgKKworICAgICAgICBSZXNwb25k
IHRvIGVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoKSBhbmQgZXhpdEZ1bGxTY3JlZW5Gb3JFbGVt
ZW50KCksIGFsbG93aW5nIAorICAgICAgICBXS1RSIHRvIHRlc3QgdGhlIExheW91dFRlc3QvZnVs
bHNjcmVlbi8gdGVzdHMuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxl
UGFnZTo6SW5qZWN0ZWRCdW5kbGVQYWdlKTogQWRkIHN1cHBvcnQgZm9yIFdLQnVuZGxlUGFnZUZ1
bGxTY3JlZW5DbGllbnQuCisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6c3VwcG9y
dHNGdWxsU2NyZWVuKTogQWRkZWQuCisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6
ZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudCk6IEFkZGVkLgorICAgICAgICAoV1RSOjpJbmplY3Rl
ZEJ1bmRsZVBhZ2U6OmV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudCk6IEFkZGVkLgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmg6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChX
VFI6OlRlc3RDb250cm9sbGVyOjpyZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKTogRW5hYmxl
IHRoZSBmdWxsIHNjcmVlbiBwcmVmZXJlbmNlLgorCiAyMDExLTA0LTAxICBEaXJrIFByYW5rZSAg
PGRwcmFua2VAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hhbmcu
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZS5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZS5jcHAKaW5kZXggM2I3MzE3NGI2N2UyNDNkYzZkYTMxZTViNjlk
N2RiZTQ0ZGYzZGIzYi4uZTBhMDBkNzVkNWJmODFiZDM3YjM1NWNmOTcyOGQ0Y2MwNWYyYWFhNSAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2UuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcApAQCAtMjM0LDYgKzIzNCwxNyBAQCBJbmplY3RlZEJ1
bmRsZVBhZ2U6OkluamVjdGVkQnVuZGxlUGFnZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSkKICAgICAg
ICAgZGlkQ2hhbmdlU2VsZWN0aW9uCiAgICAgfTsKICAgICBXS0J1bmRsZVBhZ2VTZXRFZGl0b3JD
bGllbnQobV9wYWdlLCAmZWRpdG9yQ2xpZW50KTsKKworI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQ
SSkKKyAgICBXS0J1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50IGZ1bGxTY3JlZW5DbGllbnQgPSB7
CisgICAgICAgIDAsCisgICAgICAgIHRoaXMsCisgICAgICAgIHN1cHBvcnRzRnVsbFNjcmVlbiwK
KyAgICAgICAgZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudCwKKyAgICAgICAgZXhpdEZ1bGxTY3Jl
ZW5Gb3JFbGVtZW50LAorICAgIH07CisgICAgV0tCdW5kbGVQYWdlU2V0RnVsbFNjcmVlbkNsaWVu
dChtX3BhZ2UsICZmdWxsU2NyZWVuQ2xpZW50KTsKKyNlbmRpZgogfQogCiBJbmplY3RlZEJ1bmRs
ZVBhZ2U6On5JbmplY3RlZEJ1bmRsZVBhZ2UoKQpAQCAtOTE4LDYgKzkyOSwyOCBAQCB2b2lkIElu
amVjdGVkQnVuZGxlUGFnZTo6ZGlkQ2hhbmdlU2VsZWN0aW9uKFdLU3RyaW5nUmVmIG5vdGlmaWNh
dGlvbk5hbWUpCiAgICAgICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5vcygpIDw8ICJFRElU
SU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOiIgPDwgbm90aWZpY2F0aW9u
TmFtZSA8PCAiXG4iOwogfQogCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorYm9vbCBJbmpl
Y3RlZEJ1bmRsZVBhZ2U6OnN1cHBvcnRzRnVsbFNjcmVlbihXS0J1bmRsZVBhZ2VSZWYgcGFnZVJl
ZiwgYm9vbCB3aXRoS2V5Ym9hcmQpCit7CisgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLm9z
KCkgPDwgInN1cHBvcnRzRnVsbFNjcmVlbigpID09IHRydWVcbiI7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjplbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50
KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZU5vZGVIYW5kbGVSZWYgZWxlbWVudFJl
ZikKK3sKKyAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkub3MoKSA8PCAiZW50ZXJGdWxsU2Ny
ZWVuRm9yRWxlbWVudCgpXG4iOworICAgIFdLQnVuZGxlUGFnZVdpbGxFbnRlckZ1bGxTY3JlZW5G
b3JFbGVtZW50KHBhZ2VSZWYsIGVsZW1lbnRSZWYpOworICAgIFdLQnVuZGxlUGFnZURpZEVudGVy
RnVsbFNjcmVlbkZvckVsZW1lbnQocGFnZVJlZiwgZWxlbWVudFJlZik7Cit9CisKK3ZvaWQgSW5q
ZWN0ZWRCdW5kbGVQYWdlOjpleGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoV0tCdW5kbGVQYWdlUmVm
IHBhZ2VSZWYsIFdLQnVuZGxlTm9kZUhhbmRsZVJlZiBlbGVtZW50UmVmKQoreworICAgIEluamVj
dGVkQnVuZGxlOjpzaGFyZWQoKS5vcygpIDw8ICJleGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoKVxu
IjsKKyAgICBXS0J1bmRsZVBhZ2VXaWxsRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KHBhZ2VSZWYs
IGVsZW1lbnRSZWYpOworICAgIFdLQnVuZGxlUGFnZURpZEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVu
dChwYWdlUmVmLCBlbGVtZW50UmVmKTsKK30KKyNlbmRpZgorCiBzdGF0aWMgYm9vbCBjb21wYXJl
QnlUYXJnZXROYW1lKFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbVJlZiBpdGVtMSwgV0tCdW5k
bGVCYWNrRm9yd2FyZExpc3RJdGVtUmVmIGl0ZW0yKQogewogICAgIHJldHVybiB0b1NURChhZG9w
dFdLKFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbUNvcHlUYXJnZXQoaXRlbTEpKSkgPCB0b1NU
RChhZG9wdFdLKFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbUNvcHlUYXJnZXQoaXRlbTIpKSk7
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZS5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZVBhZ2UuaAppbmRleCAyYzNlOWRmM2RiOTg5NjM2OTVjM2VlYTY3ZDJhM2Q1
OWNlOWE1MGU1Li44M2M5M2M0MDFmNmQwYjQwMWYwNDRmNTBiNzBlNjBjMzU5ZmJjOGNhIDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZS5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlLmgKQEAgLTEwNiw2ICsxMDYsMTMgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHdpbGxSdW5KYXZhU2NyaXB0Q29uZmlybShXS1N0cmluZ1JlZiBtZXNzYWdlLCBXS0J1bmRsZUZy
YW1lUmVmKTsKICAgICB2b2lkIHdpbGxSdW5KYXZhU2NyaXB0UHJvbXB0KFdLU3RyaW5nUmVmIG1l
c3NhZ2UsIFdLU3RyaW5nUmVmIGRlZmF1bHRWYWx1ZSwgV0tCdW5kbGVGcmFtZVJlZik7CiAKKyNp
ZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgLy8gRnVsbCBTY3JlZW4gY2xpZW50CisgICAg
c3RhdGljIGJvb2wgc3VwcG9ydHNGdWxsU2NyZWVuKFdLQnVuZGxlUGFnZVJlZiwgYm9vbCB3aXRo
S2V5Ym9hcmQpOworICAgIHN0YXRpYyB2b2lkIGVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoV0tC
dW5kbGVQYWdlUmVmLCBXS0J1bmRsZU5vZGVIYW5kbGVSZWYgZWxlbWVudCk7CisgICAgc3RhdGlj
IHZvaWQgZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdLQnVuZGxlUGFnZVJlZiwgV0tCdW5kbGVO
b2RlSGFuZGxlUmVmIGVsZW1lbnQpOworI2VuZGlmCisKICAgICAvLyBFZGl0b3IgY2xpZW50CiAg
ICAgc3RhdGljIGJvb2wgc2hvdWxkQmVnaW5FZGl0aW5nKFdLQnVuZGxlUGFnZVJlZiwgV0tCdW5k
bGVSYW5nZUhhbmRsZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiAgICAgc3RhdGljIGJv
b2wgc2hvdWxkRW5kRWRpdGluZyhXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlUmFuZ2VIYW5kbGVS
ZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmNwcAppbmRleCA0MjMzMWRhYjkzNDkwNTAwMmE4Y2Y0NzVmMWJiMzNmOTJhNmVj
YzlmLi5mN2IxNmEyZWUzYmUwZjM2N2FjZDY1YjAyN2FlZjdjZDlmMWI4YjUxIDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtMzU4LDYgKzM1OCw5IEBAIGJv
b2wgVGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMoKQogICAgIFdL
UHJlZmVyZW5jZXNTZXRET01QYXN0ZUFsbG93ZWQocHJlZmVyZW5jZXMsIHRydWUpOwogICAgIFdL
UHJlZmVyZW5jZXNTZXRVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHNBbGxvd2VkKHByZWZlcmVu
Y2VzLCB0cnVlKTsKICAgICBXS1ByZWZlcmVuY2VzU2V0RmlsZUFjY2Vzc0Zyb21GaWxlVVJMc0Fs
bG93ZWQocHJlZmVyZW5jZXMsIHRydWUpOworI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAg
ICBXS1ByZWZlcmVuY2VzU2V0RnVsbFNjcmVlbkVuYWJsZWQocHJlZmVyZW5jZXMsIHRydWUpOwor
I2VuZGlmCiAKICAgICBzdGF0aWMgV0tTdHJpbmdSZWYgc3RhbmRhcmRGb250RmFtaWx5ID0gV0tT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlRpbWVzIik7CiAgICAgc3RhdGljIFdLU3RyaW5n
UmVmIGN1cnNpdmVGb250RmFtaWx5ID0gV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkFw
cGxlIENoYW5jZXJ5Iik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88344</attachid>
            <date>2011-04-05 17:37:28 -0700</date>
            <delta_ts>2011-04-05 21:30:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56318-20110405173727.patch</filename>
            <type>text/plain</type>
            <size>30383</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODMwMDMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1ZTA1ZmMyM2Q4ZTNlOTY2NzY4NmJl
MzE2MTgzN2U0MDJjYjA0OTgwLi5mMDBkNjgxMGVkM2IzZTkxOTNlOWIyODM1NWY5ZjkwYmY5OTUx
YzY3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDQtMDUgIEplciBOb2JsZSAgPGplci5u
b2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgV2ViS2l0MjogV0tUUiBzaG91bGQgc3VwcG9ydCBXZWJLaXQyIGZ1bGwgc2NyZWVu
IEFQSXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2
MzE4CisKKyAgICAgICAgV0tUUiBkb2VzIG5vdCBzdXBwb3J0IHRoZSBldmVudFNlbmRlci5rZXlE
b3duKCkgbWV0aG9kLCBzbyB1c2UgbW91c2VEb3duKCkgCisgICAgICAgIGluIHRob3NlIGNhc2Vz
IHRoYXQga2V5RG93bigpIGRvZXMgbm90IGV4aXN0LgorCisgICAgICAgICogZnVsbHNjcmVlbi9m
dWxsLXNjcmVlbi10ZXN0LmpzOgorICAgICAgICAocnVuV2l0aEtleURvd24uZG9jdW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChydW5XaXRoS2V5RG93bik6CisKIDIwMTEtMDQtMDUg
IEFkcmllbm5lIFdhbGtlciAgPGVubmVAZ29vZ2xlLmNvbT4KIAogICAgICAgIFVucmV2aWV3ZWQs
IHRlbXBvcmFyaWx5IG1hcmsgdHdvIHRlc3RzIGFzIG1vcmUgZ2VuZXJhbGx5IGZhaWxpbmcuCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXRlc3QuanMgYi9M
YXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXRlc3QuanMKaW5kZXggYWM5NDA5MTI5
YTE3NzY0ZGQ0YWIyZGYwMTg3NGI2YWZjNjU5OGFjZC4uMTQ2NjAxMWJkYjlkNGJiMmFjMzgyZTdm
ODljZGRjOGVmY2UwZDliNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxs
LXNjcmVlbi10ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4t
dGVzdC5qcwpAQCAtMTAsOSArMTAsMTQgQEAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgewogCiBmdW5jdGlvbiBydW5XaXRoS2V5RG93bihmbikgCiB7Ci0gICAgZG9jdW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcigna2V5cHJlc3MnLCBmdW5jdGlvbigpIHsgZm4oKTsgfSwgZmFsc2UpOwor
ICAgIC8vIEZJWE1FOiBXS1RSIGRvZXMgbm90IHlldCBzdXBwb3J0IHRoZSBrZXlEb3duKCkgbWVz
c2FnZS4gIERvIGEgbW91c2VEb3duIGhlcmUKKyAgICAvLyBpbnN0ZWFkIHVudGlsIGtleURvd24g
c3VwcG9ydCBpcyBhZGRlZC4KKyAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKGV2ZW50U2Vu
ZGVyLmtleURvd24gPyAna2V5cHJlc3MnIDogJ21vdXNlZG93bicsIGZ1bmN0aW9uKCkgeyBmbigp
OyB9LCBmYWxzZSk7CiAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAg
ICAgICBldmVudFNlbmRlci5rZXlEb3duKCIgIiwgW10pOworICAgICAgICBpZiAoZXZlbnRTZW5k
ZXIua2V5RG93bikKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oIiAiLCBbXSk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOwogICAgIH0K
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCmluZGV4IGU3MjQ2YTIyOWNlZDM1YjViZjJkYmJiMjYyZjNlM2M0YWJkZTgw
ZjAuLjQ2YmNiNDhmMGM0OGZlMzAyZTI5ZjU5MzY3NDQzNWNiYmM1NTU4ZDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwzNiBAQAorMjAxMS0wNC0wNSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBX
ZWJLaXQyOiBXS1RSIHNob3VsZCBzdXBwb3J0IFdlYktpdDIgZnVsbCBzY3JlZW4gQVBJcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYzMTgKKworICAg
ICAgICBBZGQgYSBuZXcgV0tCdW5kbGVQYWdlIEFQSSBmb3IgRnVsbCBTY3JlZW4gZXZlbnRzLCBh
bmQgbW92ZSBzb21lIG9mIHRoZSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBvZiBXZWJGdWxsU2Ny
ZWVuTWFuYWdlciBpbnRvIHRoZSBuZXcgSW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVu
dCBjbGFzcywgc28gdGhhdAorICAgICAgICB0aGUgZGVmYXVsdCBiZWhhdmlvciBjYW4gYmUgb3Zl
cnJpZGRlbiBieSBhIFdLQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQuCisKKyAgICAgICAgKiBX
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9G
dWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
RnVsbFNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzRnVsbFNjcmVlbik6IE1vdmVkIGNvbnRlbnRzIGlu
dG8gSW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudC4KKyAgICAgICAgKFdlYktpdDo6
V2ViRnVsbFNjcmVlbk1hbmFnZXI6OmVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQpOiBEaXR0by4K
KyAgICAgICAgKFdlYktpdDo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OmV4aXRGdWxsU2NyZWVuRm9y
RWxlbWVudCk6IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdLQnVuZGxlUGFnZVNldEZ1bGxTY3JlZW5D
bGllbnQpOiBBZGRlZC4KKyAgICAgICAgKFdLQnVuZGxlUGFnZVdpbGxFbnRlckZ1bGxTY3JlZW5G
b3JFbGVtZW50KTogQWRkZWQuCisgICAgICAgIChXS0J1bmRsZVBhZ2VEaWRFbnRlckZ1bGxTY3Jl
ZW5Gb3JFbGVtZW50KTogQWRkZWQuCisgICAgICAgIChXS0J1bmRsZVBhZ2VXaWxsRXhpdEZ1bGxT
Y3JlZW5Gb3JFbGVtZW50KTogQWRkZWQuCisgICAgICAgIChXS0J1bmRsZVBhZ2VEaWRFeGl0RnVs
bFNjcmVlbkZvckVsZW1lbnQpOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudC5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50OjpzdXBw
b3J0c0Z1bGxTY3JlZW4pOiBBZGRlZC4gCisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxl
UGFnZUZ1bGxTY3JlZW5DbGllbnQ6OmVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQpOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudDo6ZXhp
dEZ1bGxTY3JlZW5Gb3JFbGVtZW50KTogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50Lmg6IEFkZGVkLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6aW5pdGlhbGl6ZUluamVjdGVkQnVuZGxlRnVsbFNjcmVlbkNsaWVudCk6IEFk
ZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OmluamVjdGVkQnVuZGxlRnVsbFNjcmVlbkNsaWVudCk6IEFkZGVkLgor
CiAyMDExLTA0LTA1ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5YWtvdi4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJL
aXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhOTUzMzQ3MGI3YWEy
YTYwNmY2OTBhNzM4YjM5NWFiMGEwOGM0MGFlLi5hMjE4OGNkZGU0ZDlhYTQ2MTQyNDZhNDAxMTE0
NDI2NjBhNTc3Mzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC03NzAsNiArNzcwLDggQEAKIAkJQzU3NEEzNzcxMkU2MDk5RDAw
MkRGRTk4IC8qIFdlYkRyYWdDbGllbnRNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDNTU0RkZBMjEyRTRFOEVBMDAyRjIyQzAgLyogV2ViRHJhZ0Ns
aWVudE1hYy5tbSAqLzsgfTsKIAkJQzU3NEE1ODExMkU2NjY4MTAwMkRGRTk4IC8qIFBhc3RlYm9h
cmRUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzU3NEE1N0YxMkU2NjY4MTAwMkRGRTk4IC8qIFBhc3RlYm9hcmRUeXBlcy5oICovOyB9OwogCQlD
NTc0QTU4MjEyRTY2NjgxMDAyREZFOTggLyogUGFzdGVib2FyZFR5cGVzLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzU3NEE1ODAxMkU2NjY4MTAwMkRG
RTk4IC8qIFBhc3RlYm9hcmRUeXBlcy5tbSAqLzsgfTsKKwkJQ0Q1QzY2QTAxMzRCOUQzODAwNEZF
MkE4IC8qIEluamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q1QzY2OUUxMzRCOUQzNjAwNEZF
MkE4IC8qIEluamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQuY3BwICovOyB9OworCQlD
RDVDNjZBMTEzNEI5RDM4MDA0RkUyQTggLyogSW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNs
aWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q1
QzY2OUYxMzRCOUQzNzAwNEZFMkE4IC8qIEluamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGll
bnQuaCAqLzsgfTsKIAkJQ0Q2Rjc1RjQxMzFCNjZEMDAwRDZCMjFFIC8qIFdlYkZ1bGxTY3JlZW5N
YW5hZ2VyUHJveHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0Q3M0JBM0UxMzFBMkU4QTAwRUVERUQyIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJv
eHkuY3BwICovOyB9OwogCQlDRDczQkE0NzEzMUFDQzlBMDBFRURFRDIgLyogV2ViRnVsbFNjcmVl
bk1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDczQkE0NTEzMUFDQzg4MDBFRURFRDIgLyogV2ViRnVs
bFNjcmVlbk1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCUNENzNCQTRF
MTMxQUNEQjcwMEVFREVEMiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDczQkE0
ODEzMUFDRDhFMDBFRURFRDIgLyogV2ViRnVsbFNjcmVlbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIu
Y3BwICovOyB9OwpAQCAtMTY4Myw2ICsxNjg1LDggQEAKIAkJQzU1NEZGQTIxMkU0RThFQTAwMkYy
MkMwIC8qIFdlYkRyYWdDbGllbnRNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBXZWJEcmFnQ2xpZW50TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDNTc0QTU3RjEyRTY2NjgxMDAyREZFOTggLyogUGFzdGVib2FyZFR5cGVzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhc3RlYm9hcmRUeXBlcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDNTc0QTU4MDEyRTY2NjgxMDAyREZFOTggLyogUGFzdGVib2Fy
ZFR5cGVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGFzdGVi
b2FyZFR5cGVzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDVDNjY5RTEzNEI5
RDM2MDA0RkUyQTggLyogSW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZEJ1bmRsZVBhZ2VGdWxs
U2NyZWVuQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0Q1QzY2OUYx
MzRCOUQzNzAwNEZFMkE4IC8qIEluamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNj
cmVlbkNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDczQkEzNzEzMUEy
OUZFMDBFRURFRDIgLyogV2ViRnVsbFNjcmVlbk1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gV2ViRnVsbFNjcmVlbk1hbmFnZXIuY3BwOyBwYXRoID0gRnVs
bFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUNENzNCQTM4MTMxQTI5RkUwMEVFREVEMiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJGdWxsU2NyZWVuTWFuYWdlci5o
OyBwYXRoID0gRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDRDczQkEzOTEzMUEyOUZFMDBFRURFRDIgLyogV2ViRnVsbFNjcmVl
bk1hbmFnZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gV2ViRnVsbFNjcmVl
bk1hbmFnZXIubWVzc2FnZXMuaW47IHBhdGggPSBGdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5h
Z2VyLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjg0MCw2ICsy
ODQ0LDggQEAKIAkJCQlCQzE0REY3NjEyMEI1Qjc5MDA4MjZDMEMgLyogSW5qZWN0ZWRCdW5kbGVT
Y3JpcHRXb3JsZC5jcHAgKi8sCiAJCQkJQkMxNERGNzUxMjBCNUI3OTAwODI2QzBDIC8qIEluamVj
dGVkQnVuZGxlU2NyaXB0V29ybGQuaCAqLywKIAkJCQlCQ0IwQjBERDEyMzA1QThDMDBCMTM0MUUg
LyogSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUNvZGVycy5oICovLAorCQkJCUNENUM2NjlFMTM0
QjlEMzYwMDRGRTJBOCAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50LmNwcCAq
LywKKwkJCQlDRDVDNjY5RjEzNEI5RDM3MDA0RkUyQTggLyogSW5qZWN0ZWRCdW5kbGVQYWdlRnVs
bFNjcmVlbkNsaWVudC5oICovLAogCQkJKTsKIAkJCXBhdGggPSBJbmplY3RlZEJ1bmRsZTsKIAkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0zNjY2LDYgKzM2NzIsNyBAQAogCQkJCTUxODM0
NTkzMTM0NTMyRTkwMDkyQjY5NiAvKiBXZWJJY29uRGF0YWJhc2VDbGllbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUUxODM5MzQ5MTM0Mjk3QTUwMDE4NDJFQyAvKiBUZXh0SW5wdXRTdGF0ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQzBGQTUyNDMxMzQ1Njk0QTAwMjhFOEMyIC8qIExheWVyVHJlZUhv
c3RDQU1hYy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0Q1QzY2QTExMzRCOUQzODAwNEZFMkE4IC8q
IEluamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
KTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAt
NDI5MSw2ICs0Mjk4LDcgQEAKIAkJCQlGNkE5MDgxMzEzM0MyMDUxMDA4MkMzRjQgLyogV2ViQ29v
a2llTWFuYWdlck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY2RDYzMkJDMTMzRDE5ODIwMDc0
M0Q3NyAvKiBXZWJDb29raWVNYW5hZ2VyUHJveHlNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk1
MTgzNDU5MjEzNDUzMkU5MDA5MkI2OTYgLyogV2ViSWNvbkRhdGFiYXNlQ2xpZW50LmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUNENUM2NkEwMTM0QjlEMzgwMDRGRTJBOCAvKiBJbmplY3RlZEJ1bmRs
ZVBhZ2VGdWxsU2NyZWVuQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFu
YWdlci5jcHAKaW5kZXggZTg1Njg3NjM2M2UwNzlkZDE5YmI2ZDA4M2IwYTI4Y2M5NmI2YzgwYy4u
NDdmMWQ0MmJhMzIzMDcwNWM0N2RmNjdiM2E0NDU4MjI5MzVhOTJhYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVl
bk1hbmFnZXIuY3BwCkBAIC02Niw5ICs2Niw4IEBAIGJvb2wgV2ViRnVsbFNjcmVlbk1hbmFnZXI6
OnN1cHBvcnRzRnVsbFNjcmVlbihib29sIHdpdGhLZXlib2FyZCkKICAgICBpZiAoIW1fcGFnZS0+
Y29yZVBhZ2UoKS0+c2V0dGluZ3MoKS0+ZnVsbFNjcmVlbkVuYWJsZWQoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgYm9vbCBzdXBwb3J0cyA9IHRydWU7Ci0gICAgbV9wYWdlLT5zZW5k
U3luYyhNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6U3VwcG9ydHNGdWxsU2Ny
ZWVuKHdpdGhLZXlib2FyZCksIHN1cHBvcnRzKTsKLSAgICByZXR1cm4gc3VwcG9ydHM7CisgICAg
cmV0dXJuIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVGdWxsU2NyZWVuQ2xpZW50KCkuc3VwcG9ydHNG
dWxsU2NyZWVuKG1fcGFnZS5nZXQoKSwgd2l0aEtleWJvYXJkKTsKKwogfQogCiB2b2lkIFdlYkZ1
bGxTY3JlZW5NYW5hZ2VyOjplbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdlYkNvcmU6OkVsZW1l
bnQqIGVsZW1lbnQpCkBAIC03NiwxNCArNzUsMTQgQEAgdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdl
cjo6ZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50KQog
ICAgIEFTU0VSVChlbGVtZW50KTsKICAgICBtX2VsZW1lbnQgPSBlbGVtZW50OwogICAgIG1faW5p
dGlhbEZyYW1lID0gbV9lbGVtZW50LT5zY3JlZW5SZWN0KCk7Ci0gICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpFbnRlckZ1bGxTY3JlZW4oKSk7Cisg
ICAgbV9wYWdlLT5pbmplY3RlZEJ1bmRsZUZ1bGxTY3JlZW5DbGllbnQoKS5lbnRlckZ1bGxTY3Jl
ZW5Gb3JFbGVtZW50KG1fcGFnZS5nZXQoKSwgZWxlbWVudCk7CiB9CiAKIHZvaWQgV2ViRnVsbFNj
cmVlbk1hbmFnZXI6OmV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChXZWJDb3JlOjpFbGVtZW50KiBl
bGVtZW50KQogewogICAgIEFTU0VSVChlbGVtZW50KTsKICAgICBBU1NFUlQobV9lbGVtZW50ID09
IGVsZW1lbnQpOwotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFn
ZXJQcm94eTo6RXhpdEZ1bGxTY3JlZW4oKSk7CisgICAgbV9wYWdlLT5pbmplY3RlZEJ1bmRsZUZ1
bGxTY3JlZW5DbGllbnQoKS5leGl0RnVsbFNjcmVlbkZvckVsZW1lbnQobV9wYWdlLmdldCgpLCBl
bGVtZW50KTsKIH0KIAogdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlcjo6YmVnYW5FbnRlckZ1bGxT
Y3JlZW5BbmltYXRpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCmluZGV4IGEyOWEy
YzIxM2Y1OTU5YjMzOTk0MzJmZDBkOGU4NDRiNjBkYmU3ZDYuLjVhZjY2ZTY0ZTczNjNhODYzNmM5
YjBjOTI2MWU5MzkxMzhiN2Q3MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKQEAg
LTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJXS0J1bmRsZVBhZ2VQcml2YXRlLmgiCiAKICNpbmNs
dWRlICJJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdC5oIgorI2luY2x1ZGUgIkluamVjdGVk
QnVuZGxlTm9kZUhhbmRsZS5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldL
QnVuZGxlQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldlYkltYWdlLmgiCkBAIC05Myw2ICs5NCw1NSBA
QCB2b2lkIFdLQnVuZGxlUGFnZVNldFVJQ2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBX
S0J1bmRsZVBhZ2VVSUNsaWVudCogd2tDbAogICAgIHRvSW1wbChwYWdlUmVmKS0+aW5pdGlhbGl6
ZUluamVjdGVkQnVuZGxlVUlDbGllbnQod2tDbGllbnQpOwogfQogCisjaWYgZGVmaW5lZChFTkFC
TEVfRlVMTFNDUkVFTl9BUEkpICYmIEVOQUJMRV9GVUxMU0NSRUVOX0FQSQordm9pZCBXS0J1bmRs
ZVBhZ2VTZXRGdWxsU2NyZWVuQ2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRs
ZVBhZ2VGdWxsU2NyZWVuQ2xpZW50KiB3a0NsaWVudCkKK3sKKyAgICBpZiAod2tDbGllbnQgJiYg
d2tDbGllbnQtPnZlcnNpb24pCisgICAgICAgIHJldHVybjsKKyAgICB0b0ltcGwocGFnZVJlZikt
PmluaXRpYWxpemVJbmplY3RlZEJ1bmRsZUZ1bGxTY3JlZW5DbGllbnQod2tDbGllbnQpOworfQor
Cit2b2lkIFdLQnVuZGxlUGFnZVdpbGxFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdLQnVuZGxl
UGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZU5vZGVIYW5kbGVSZWYgZWxlbWVudFJlZikKK3sKKyAg
ICBXZWJDb3JlOjpOb2RlKiBjb3JlTm9kZSA9IHRvSW1wbChlbGVtZW50UmVmKS0+Y29yZU5vZGUo
KTsKKyAgICBpZiAoIWNvcmVOb2RlIHx8ICFjb3JlTm9kZS0+aXNFbGVtZW50Tm9kZSgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nh
c3Q8V2ViQ29yZTo6RWxlbWVudCo+KGNvcmVOb2RlKTsKKyAgICBlbGVtZW50LT5kb2N1bWVudCgp
LT53ZWJraXRXaWxsRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChlbGVtZW50KTsKK30KKwordm9p
ZCBXS0J1bmRsZVBhZ2VEaWRFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdLQnVuZGxlUGFnZVJl
ZiBwYWdlUmVmLCBXS0J1bmRsZU5vZGVIYW5kbGVSZWYgZWxlbWVudFJlZikKK3sKKyAgICBXZWJD
b3JlOjpOb2RlKiBjb3JlTm9kZSA9IHRvSW1wbChlbGVtZW50UmVmKS0+Y29yZU5vZGUoKTsKKyAg
ICBpZiAoIWNvcmVOb2RlIHx8ICFjb3JlTm9kZS0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICBy
ZXR1cm47CisgICAgCisgICAgV2ViQ29yZTo6RWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0
PFdlYkNvcmU6OkVsZW1lbnQqPihjb3JlTm9kZSk7CisgICAgZWxlbWVudC0+ZG9jdW1lbnQoKS0+
d2Via2l0RGlkRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChlbGVtZW50KTsKK30KKyNlbmRpZgor
Cit2b2lkIFdLQnVuZGxlUGFnZVdpbGxFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoV0tCdW5kbGVQ
YWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlTm9kZUhhbmRsZVJlZiBlbGVtZW50UmVmKQoreworICAg
IFdlYkNvcmU6Ok5vZGUqIGNvcmVOb2RlID0gdG9JbXBsKGVsZW1lbnRSZWYpLT5jb3JlTm9kZSgp
OworICAgIGlmICghY29yZU5vZGUgfHwgIWNvcmVOb2RlLT5pc0VsZW1lbnROb2RlKCkpCisgICAg
ICAgIHJldHVybjsKKyAgICAKKyAgICBXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50ID0gc3RhdGlj
X2Nhc3Q8V2ViQ29yZTo6RWxlbWVudCo+KGNvcmVOb2RlKTsKKyAgICBlbGVtZW50LT5kb2N1bWVu
dCgpLT53ZWJraXRXaWxsRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KGVsZW1lbnQpOworfQorCit2
b2lkIFdLQnVuZGxlUGFnZURpZEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChXS0J1bmRsZVBhZ2VS
ZWYgcGFnZVJlZiwgV0tCdW5kbGVOb2RlSGFuZGxlUmVmIGVsZW1lbnRSZWYpCit7CisgICAgV2Vi
Q29yZTo6Tm9kZSogY29yZU5vZGUgPSB0b0ltcGwoZWxlbWVudFJlZiktPmNvcmVOb2RlKCk7Cisg
ICAgaWYgKCFjb3JlTm9kZSB8fCAhY29yZU5vZGUtPmlzRWxlbWVudE5vZGUoKSkKKyAgICAgICAg
cmV0dXJuOworICAgIAorICAgIFdlYkNvcmU6OkVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2Fz
dDxXZWJDb3JlOjpFbGVtZW50Kj4oY29yZU5vZGUpOworICAgIGVsZW1lbnQtPmRvY3VtZW50KCkt
PndlYmtpdERpZEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChlbGVtZW50KTsKK30KKwogV0tCdW5k
bGVQYWdlR3JvdXBSZWYgV0tCdW5kbGVQYWdlR2V0UGFnZUdyb3VwKFdLQnVuZGxlUGFnZVJlZiBw
YWdlUmVmKQogewogICAgIHJldHVybiB0b0FQSSh0b0ltcGwocGFnZVJlZiktPnBhZ2VHcm91cCgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCmluZGV4IGUwMWY1MWY4YTQ5NzAzZjEyMjhlY2Nj
YTQ3ZjliYmViZmY2NDM0MzYuLjBjYzk0NWVmMTFkNjE5MjgxMDhjMWFiYzkzYmY5OTc3N2FlNzJm
OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaApAQCAtMjQzLDggKzI0MywyOSBAQCBzdHJ1
Y3QgV0tCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQgewogfTsKIHR5cGVkZWYgc3RydWN0IFdL
QnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50IFdLQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50
OwogCisjaWYgZGVmaW5lZChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICYmIEVOQUJMRV9GVUxMU0NS
RUVOX0FQSQorLy8gRnVsbCBTY3JlZW4gY2xpZW50Cit0eXBlZGVmIGJvb2wgKCpXS0J1bmRsZVBh
Z2VTdXBwb3J0c0Z1bGxTY3JlZW4pKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBib29sIHdpdGhLZXli
b2FyZCk7Cit0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZVBhZ2VFbnRlckZ1bGxTY3JlZW5Gb3JFbGVt
ZW50KShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVOb2RlSGFuZGxlUmVmIGVsZW1lbnQp
OwordHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KShX
S0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVOb2RlSGFuZGxlUmVmIGVsZW1lbnQpOworCitz
dHJ1Y3QgV0tCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudCB7CisgICAgaW50ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJz
aW9uOworICAgIGNvbnN0IHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2xpZW50SW5mbzsKKyAgICBXS0J1bmRsZVBhZ2VTdXBwb3J0
c0Z1bGxTY3JlZW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRz
RnVsbFNjcmVlbjsKKyAgICBXS0J1bmRsZVBhZ2VFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQ7Cisg
ICAgV0tCdW5kbGVQYWdlRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBleGl0RnVsbFNjcmVlbkZvckVsZW1lbnQ7Cit9OwordHlwZWRlZiBzdHJ1
Y3QgV0tCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudCBXS0J1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xp
ZW50OworCitXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VXaWxsRW50ZXJGdWxsU2NyZWVuRm9y
RWxlbWVudChXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVOb2RlSGFuZGxlUmVmIGVsZW1l
bnQpOworV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlRGlkRW50ZXJGdWxsU2NyZWVuRm9yRWxl
bWVudChXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVOb2RlSGFuZGxlUmVmIGVsZW1lbnQp
OworV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlV2lsbEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVu
dChXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVOb2RlSGFuZGxlUmVmIGVsZW1lbnQpOwor
V0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlRGlkRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdL
QnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZU5vZGVIYW5kbGVSZWYgZWxlbWVudCk7CisjZW5k
aWYKKwogV0tfRVhQT1JUIFdLVHlwZUlEIFdLQnVuZGxlUGFnZUdldFR5cGVJRCgpOwotIAorCiBX
S19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VTZXRDb250ZXh0TWVudUNsaWVudChXS0J1bmRsZVBh
Z2VSZWYgcGFnZSwgV0tCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQqIGNsaWVudCk7CiBXS19F
WFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VTZXRFZGl0b3JDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBh
Z2UsIFdLQnVuZGxlUGFnZUVkaXRvckNsaWVudCogY2xpZW50KTsKIFdLX0VYUE9SVCB2b2lkIFdL
QnVuZGxlUGFnZVNldEZvcm1DbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlUGFn
ZUZvcm1DbGllbnQqIGNsaWVudCk7CkBAIC0yNTIsNiArMjczLDEwIEBAIFdLX0VYUE9SVCB2b2lk
IFdLQnVuZGxlUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdL
QnVuZGxlUGFnCiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VTZXRSZXNvdXJjZUxvYWRDbGll
bnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudCog
Y2xpZW50KTsKIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZVNldFBvbGljeUNsaWVudChXS0J1
bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVQYWdlUG9saWN5Q2xpZW50KiBjbGllbnQpOwogV0tf
RVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlU2V0VUlDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2Us
IFdLQnVuZGxlUGFnZVVJQ2xpZW50KiBjbGllbnQpOworICAgIAorI2lmIGRlZmluZWQoRU5BQkxF
X0ZVTExTQ1JFRU5fQVBJKSAmJiBFTkFCTEVfRlVMTFNDUkVFTl9BUEkKK1dLX0VYUE9SVCB2b2lk
IFdLQnVuZGxlUGFnZVNldEZ1bGxTY3JlZW5DbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdL
QnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQqIGNsaWVudCk7CisjZW5kaWYKIAogV0tfRVhQT1JU
IFdLQnVuZGxlUGFnZUdyb3VwUmVmIFdLQnVuZGxlUGFnZUdldFBhZ2VHcm91cChXS0J1bmRsZVBh
Z2VSZWYgcGFnZSk7CiBXS19FWFBPUlQgV0tCdW5kbGVGcmFtZVJlZiBXS0J1bmRsZVBhZ2VHZXRN
YWluRnJhbWUoV0tCdW5kbGVQYWdlUmVmIHBhZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVu
Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGY4MWExY2Iz
ZDI2YTY0MzgyZjk1NmY1YTIxOGU3MTk1YTA3ZGQzNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRnVs
bFNjcmVlbkNsaWVudC5jcHAKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKworI2luY2x1ZGUgIklu
amVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQuaCIKKworI2luY2x1ZGUgIkluamVjdGVk
QnVuZGxlTm9kZUhhbmRsZS5oIgorI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldL
QnVuZGxlQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlNZXNz
YWdlcy5oIgorI2luY2x1ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0VsZW1lbnQu
aD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCiti
b29sIEluamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQ6OnN1cHBvcnRzRnVsbFNjcmVl
bihXZWJQYWdlICpwYWdlLCBib29sIHdpdGhLZXlib2FyZCkKK3sKKyAgICBpZiAobV9jbGllbnQu
c3VwcG9ydHNGdWxsU2NyZWVuKSAKKyAgICAgICAgcmV0dXJuIG1fY2xpZW50LnN1cHBvcnRzRnVs
bFNjcmVlbih0b0FQSShwYWdlKSwgd2l0aEtleWJvYXJkKTsKKworICAgIGJvb2wgc3VwcG9ydHMg
PSB0cnVlOworICAgIHBhZ2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdl
clByb3h5OjpTdXBwb3J0c0Z1bGxTY3JlZW4od2l0aEtleWJvYXJkKSwgc3VwcG9ydHMpOworICAg
IHJldHVybiBzdXBwb3J0czsKK30KKwordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVu
Q2xpZW50OjplbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdlYlBhZ2UgKnBhZ2UsIFdlYkNvcmU6
OkVsZW1lbnQgKmVsZW1lbnQpCit7CisgICAgaWYgKG1fY2xpZW50LmVudGVyRnVsbFNjcmVlbkZv
ckVsZW1lbnQpIHsKKyAgICAgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gbm9k
ZUhhbmRsZSA9IEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6Z2V0T3JDcmVhdGUoZWxlbWVudCk7
CisgICAgICAgIG1fY2xpZW50LmVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQodG9BUEkocGFnZSks
IHRvQVBJKG5vZGVIYW5kbGUuZ2V0KCkpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgcGFnZS0+c2Vu
ZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6RW50ZXJGdWxsU2NyZWVuKCkp
OworfQorCit2b2lkIEluamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQ6OmV4aXRGdWxs
U2NyZWVuRm9yRWxlbWVudChXZWJQYWdlICpwYWdlLCBXZWJDb3JlOjpFbGVtZW50ICplbGVtZW50
KQoreworICAgIGlmIChtX2NsaWVudC5lbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KSB7CisgICAg
ICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU+IG5vZGVIYW5kbGUgPSBJbmplY3Rl
ZEJ1bmRsZU5vZGVIYW5kbGU6OmdldE9yQ3JlYXRlKGVsZW1lbnQpOworICAgICAgICBtX2NsaWVu
dC5lbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KHRvQVBJKHBhZ2UpLCB0b0FQSShub2RlSGFuZGxl
LmdldCgpKSk7CisgICAgfSBlbHNlCisgICAgICAgIHBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkZ1
bGxTY3JlZW5NYW5hZ2VyUHJveHk6OkV4aXRGdWxsU2NyZWVuKCkpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlRnVsbFNjcmVlbkNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNDRjZGE1MmM2ZmM4OTAzZTMwZmI2YmQwZWU2ZjA1NWViMWViYjJiMAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudC5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIEluamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnRfaAorI2RlZmluZSBJ
bmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50X2gKKworI2lmIEVOQUJMRShGVUxMU0NS
RUVOX0FQSSkKKworI2luY2x1ZGUgIkFQSUNsaWVudC5oIgorI2luY2x1ZGUgIldLQnVuZGxlUGFn
ZS5oIgorI2luY2x1ZGUgIldlYkV2ZW50LmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgRWxlbWVudDsKK30KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2NsYXNzIFdlYlBhZ2U7CisKK2NsYXNzIEluamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3Jl
ZW5DbGllbnQgOiBwdWJsaWMgQVBJQ2xpZW50PFdLQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQ+
IHsKK3B1YmxpYzoKKyAgICBib29sIHN1cHBvcnRzRnVsbFNjcmVlbihXZWJQYWdlKiwgYm9vbCB3
aXRoS2V5Ym9hcmQpOworICAgIHZvaWQgZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChXZWJQYWdl
KiwgV2ViQ29yZTo6RWxlbWVudCopOworICAgIHZvaWQgZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50
KFdlYlBhZ2UqLCBXZWJDb3JlOjpFbGVtZW50Kik7Cit9OworCisjZW5kaWYgLy8gRU5BQkxFKEZV
TExTQ1JFRU5fQVBJKQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEluamVj
dGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGUwMmU3MTVjMDJkZTVhNjUwNjA0MGJkZDlm
YjJjNDFhMTBiMzEwMTIuLmQxODMwODU2NjUyMzIyYTk0Yzk5MmViNTg2ZDE1ODI2MDAyYWUxNDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAg
LTI4OCw2ICsyODgsMTMgQEAgdm9pZCBXZWJQYWdlOjppbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVV
SUNsaWVudChXS0J1bmRsZVBhZ2VVSUNsaWVudCogY2xpZW50KQogICAgIG1fdWlDbGllbnQuaW5p
dGlhbGl6ZShjbGllbnQpOwogfQogCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQordm9pZCBX
ZWJQYWdlOjppbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVGdWxsU2NyZWVuQ2xpZW50KFdLQnVuZGxl
UGFnZUZ1bGxTY3JlZW5DbGllbnQqIGNsaWVudCkKK3sKKyAgICBtX2Z1bGxTY3JlZW5DbGllbnQu
aW5pdGlhbGl6ZShjbGllbnQpOworfQorI2VuZGlmCisKIFBhc3NSZWZQdHI8UGx1Z2luPiBXZWJQ
YWdlOjpjcmVhdGVQbHVnaW4oY29uc3QgUGx1Z2luOjpQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQog
ewogICAgIFN0cmluZyBwbHVnaW5QYXRoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKaW5kZXggYmFjZjcxZjk5Mjg1ZTllNGI0YjA1MWM1Nzc2NzExZTMzZWJi
ZjhjMy4uZDFiNmQ0NjcwMzJmYTk0ZDlmNmIxZTU1ZmZkMTIzN2U2NjFjZDA1NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0zNCw2ICszNCw3IEBA
CiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuaCIKICNpbmNs
dWRlICJJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaCIKICNpbmNsdWRlICJJbmplY3Rl
ZEJ1bmRsZVBhZ2VGb3JtQ2xpZW50LmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVQYWdlRnVs
bFNjcmVlbkNsaWVudC5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVu
dC5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlUGFnZVBvbGljeUNsaWVudC5oIgogI2luY2x1
ZGUgIkluamVjdGVkQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudC5oIgpAQCAtMTk0LDYgKzE5
NSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGluaXRpYWxpemVJbmplY3RlZEJ1bmRsZVBvbGljeUNs
aWVudChXS0J1bmRsZVBhZ2VQb2xpY3lDbGllbnQqKTsKICAgICB2b2lkIGluaXRpYWxpemVJbmpl
Y3RlZEJ1bmRsZVJlc291cmNlTG9hZENsaWVudChXS0J1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGll
bnQqKTsKICAgICB2b2lkIGluaXRpYWxpemVJbmplY3RlZEJ1bmRsZVVJQ2xpZW50KFdLQnVuZGxl
UGFnZVVJQ2xpZW50Kik7CisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAgIHZvaWQgaW5p
dGlhbGl6ZUluamVjdGVkQnVuZGxlRnVsbFNjcmVlbkNsaWVudChXS0J1bmRsZVBhZ2VGdWxsU2Ny
ZWVuQ2xpZW50Kik7CisjZW5kaWYKIAogICAgIEluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51
Q2xpZW50JiBpbmplY3RlZEJ1bmRsZUNvbnRleHRNZW51Q2xpZW50KCkgeyByZXR1cm4gbV9jb250
ZXh0TWVudUNsaWVudDsgfQogICAgIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudCYgaW5q
ZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQoKSB7IHJldHVybiBtX2VkaXRvckNsaWVudDsgfQpAQCAt
MjAyLDYgKzIwNiw3IEBAIHB1YmxpYzoKICAgICBJbmplY3RlZEJ1bmRsZVBhZ2VQb2xpY3lDbGll
bnQmIGluamVjdGVkQnVuZGxlUG9saWN5Q2xpZW50KCkgeyByZXR1cm4gbV9wb2xpY3lDbGllbnQ7
IH0KICAgICBJbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQmIGluamVjdGVkQnVu
ZGxlUmVzb3VyY2VMb2FkQ2xpZW50KCkgeyByZXR1cm4gbV9yZXNvdXJjZUxvYWRDbGllbnQ7IH0K
ICAgICBJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudCYgaW5qZWN0ZWRCdW5kbGVVSUNsaWVudCgp
IHsgcmV0dXJuIG1fdWlDbGllbnQ7IH0KKyAgICBJbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVu
Q2xpZW50JiBpbmplY3RlZEJ1bmRsZUZ1bGxTY3JlZW5DbGllbnQoKSB7IHJldHVybiBtX2Z1bGxT
Y3JlZW5DbGllbnQ7IH0KIAogICAgIGJvb2wgZmluZFN0cmluZ0Zyb21JbmplY3RlZEJ1bmRsZShj
b25zdCBTdHJpbmcmLCBGaW5kT3B0aW9ucyk7CiAKQEAgLTU4NCw2ICs1ODksOSBAQCBwcml2YXRl
OgogICAgIEluamVjdGVkQnVuZGxlUGFnZVBvbGljeUNsaWVudCBtX3BvbGljeUNsaWVudDsKICAg
ICBJbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQgbV9yZXNvdXJjZUxvYWRDbGll
bnQ7CiAgICAgSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQgbV91aUNsaWVudDsKKyNpZiBFTkFC
TEUoRlVMTFNDUkVFTl9BUEkpCisgICAgSW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVu
dCBtX2Z1bGxTY3JlZW5DbGllbnQ7CisjZW5kaWYKIAogI2lmIEVOQUJMRShUSUxFRF9CQUNLSU5H
X1NUT1JFKQogICAgIFdlYkNvcmU6OkludFNpemUgbV9yZXNpemVzVG9Db250ZW50c0xheW91dFNp
emU7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
ODFhZmIxMDE3OWIwYTZhZTU4YTY1ZGFjZDhjZDgwZmMwNDJkODYzMC4uM2M1ZWJmYzU4NmRjNWM4
YzllNjA3YzRkNWZlOTY2YzY4OTNkNmI0NiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDExLTA0LTA1ICBKZXIgTm9i
bGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFdlYktpdDI6IFdLVFIgc2hvdWxkIHN1cHBvcnQgV2ViS2l0MiBm
dWxsIHNjcmVlbiBBUElzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01NjMxOAorCisgICAgICAgIFJlc3BvbmQgdG8gZW50ZXJGdWxsU2NyZWVuRm9yRWxl
bWVudCgpIGFuZCBleGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoKSwgYWxsb3dpbmcgCisgICAgICAg
IFdLVFIgdG8gdGVzdCB0aGUgTGF5b3V0VGVzdC9mdWxsc2NyZWVuLyB0ZXN0cy4KKworICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNw
cDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpJbmplY3RlZEJ1bmRsZVBhZ2Up
OiBBZGQgc3VwcG9ydCBmb3IgV0tCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudC4KKyAgICAgICAg
KFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpzdXBwb3J0c0Z1bGxTY3JlZW4pOiBBZGRlZC4KKyAg
ICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjplbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50
KTogQWRkZWQuCisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6ZXhpdEZ1bGxTY3Jl
ZW5Gb3JFbGVtZW50KTogQWRkZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnJlc2V0
U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMpOiBFbmFibGUgdGhlIGZ1bGwgc2NyZWVuIHByZWZlcmVu
Y2UuCisKIDIwMTEtMDQtMDUgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBTaWxseSB3aXRoIHN0YXRlbWVudCwgZnJvbSB0aGUgZnV0dXJlIQpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2Uu
Y3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2UuY3BwCmluZGV4IDQ3MTU1MmY0NWFmMDZmZTFmNDI4ZTZlNjMxZDMxZDRhYmQ0ZjA4OWIu
LmYzY2VkODhiNTBmMjQwYTgxNTNjZjFlNjQ5ZjkwZDFhMzVmMWUwNDkgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNw
cAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZS5jcHAKQEAgLTIzNCw2ICsyMzQsMTcgQEAgSW5qZWN0ZWRCdW5kbGVQYWdlOjpJbmpl
Y3RlZEJ1bmRsZVBhZ2UoV0tCdW5kbGVQYWdlUmVmIHBhZ2UpCiAgICAgICAgIGRpZENoYW5nZVNl
bGVjdGlvbgogICAgIH07CiAgICAgV0tCdW5kbGVQYWdlU2V0RWRpdG9yQ2xpZW50KG1fcGFnZSwg
JmVkaXRvckNsaWVudCk7CisKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgV0tCdW5k
bGVQYWdlRnVsbFNjcmVlbkNsaWVudCBmdWxsU2NyZWVuQ2xpZW50ID0geworICAgICAgICAwLAor
ICAgICAgICB0aGlzLAorICAgICAgICBzdXBwb3J0c0Z1bGxTY3JlZW4sCisgICAgICAgIGVudGVy
RnVsbFNjcmVlbkZvckVsZW1lbnQsCisgICAgICAgIGV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudCwK
KyAgICB9OworICAgIFdLQnVuZGxlUGFnZVNldEZ1bGxTY3JlZW5DbGllbnQobV9wYWdlLCAmZnVs
bFNjcmVlbkNsaWVudCk7CisjZW5kaWYKIH0KIAogSW5qZWN0ZWRCdW5kbGVQYWdlOjp+SW5qZWN0
ZWRCdW5kbGVQYWdlKCkKQEAgLTkyMSw2ICs5MzIsMjggQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBh
Z2U6OmRpZENoYW5nZVNlbGVjdGlvbihXS1N0cmluZ1JlZiBub3RpZmljYXRpb25OYW1lKQogICAg
ICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkub3MoKSA8PCAiRURJVElORyBERUxFR0FURTog
d2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjoiIDw8IG5vdGlmaWNhdGlvbk5hbWUgPDwgIlxuIjsK
IH0KIAorI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKK2Jvb2wgSW5qZWN0ZWRCdW5kbGVQYWdl
OjpzdXBwb3J0c0Z1bGxTY3JlZW4oV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIGJvb2wgd2l0aEtl
eWJvYXJkKQoreworICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5vcygpIDw8ICJzdXBwb3J0
c0Z1bGxTY3JlZW4oKSA9PSB0cnVlXG4iOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIElu
amVjdGVkQnVuZGxlUGFnZTo6ZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChXS0J1bmRsZVBhZ2VS
ZWYgcGFnZVJlZiwgV0tCdW5kbGVOb2RlSGFuZGxlUmVmIGVsZW1lbnRSZWYpCit7CisgICAgSW5q
ZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLm9zKCkgPDwgImVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQo
KVxuIjsKKyAgICBXS0J1bmRsZVBhZ2VXaWxsRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChwYWdl
UmVmLCBlbGVtZW50UmVmKTsKKyAgICBXS0J1bmRsZVBhZ2VEaWRFbnRlckZ1bGxTY3JlZW5Gb3JF
bGVtZW50KHBhZ2VSZWYsIGVsZW1lbnRSZWYpOworfQorCit2b2lkIEluamVjdGVkQnVuZGxlUGFn
ZTo6ZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1
bmRsZU5vZGVIYW5kbGVSZWYgZWxlbWVudFJlZikKK3sKKyAgICBJbmplY3RlZEJ1bmRsZTo6c2hh
cmVkKCkub3MoKSA8PCAiZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KClcbiI7CisgICAgV0tCdW5k
bGVQYWdlV2lsbEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChwYWdlUmVmLCBlbGVtZW50UmVmKTsK
KyAgICBXS0J1bmRsZVBhZ2VEaWRFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQocGFnZVJlZiwgZWxl
bWVudFJlZik7Cit9CisjZW5kaWYKKwogc3RhdGljIGJvb2wgY29tcGFyZUJ5VGFyZ2V0TmFtZShX
S0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW1SZWYgaXRlbTEsIFdLQnVuZGxlQmFja0ZvcndhcmRM
aXN0SXRlbVJlZiBpdGVtMikKIHsKICAgICByZXR1cm4gdG9TVEQoYWRvcHRXSyhXS0J1bmRsZUJh
Y2tGb3J3YXJkTGlzdEl0ZW1Db3B5VGFyZ2V0KGl0ZW0xKSkpIDwgdG9TVEQoYWRvcHRXSyhXS0J1
bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW1Db3B5VGFyZ2V0KGl0ZW0yKSkpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2Uu
aCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlLmgKaW5kZXggMmMzZTlkZjNkYjk4OTYzNjk1YzNlZWE2N2QyYTNkNTljZTlhNTBlNS4uODNj
OTNjNDAxZjZkMGI0MDFmMDQ0ZjUwYjcwZTYwYzM1OWZiYzhjYSAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaAorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFn
ZS5oCkBAIC0xMDYsNiArMTA2LDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsUnVuSmF2YVNj
cmlwdENvbmZpcm0oV0tTdHJpbmdSZWYgbWVzc2FnZSwgV0tCdW5kbGVGcmFtZVJlZik7CiAgICAg
dm9pZCB3aWxsUnVuSmF2YVNjcmlwdFByb21wdChXS1N0cmluZ1JlZiBtZXNzYWdlLCBXS1N0cmlu
Z1JlZiBkZWZhdWx0VmFsdWUsIFdLQnVuZGxlRnJhbWVSZWYpOwogCisjaWYgRU5BQkxFKEZVTExT
Q1JFRU5fQVBJKQorICAgIC8vIEZ1bGwgU2NyZWVuIGNsaWVudAorICAgIHN0YXRpYyBib29sIHN1
cHBvcnRzRnVsbFNjcmVlbihXS0J1bmRsZVBhZ2VSZWYsIGJvb2wgd2l0aEtleWJvYXJkKTsKKyAg
ICBzdGF0aWMgdm9pZCBlbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdLQnVuZGxlUGFnZVJlZiwg
V0tCdW5kbGVOb2RlSGFuZGxlUmVmIGVsZW1lbnQpOworICAgIHN0YXRpYyB2b2lkIGV4aXRGdWxs
U2NyZWVuRm9yRWxlbWVudChXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlTm9kZUhhbmRsZVJlZiBl
bGVtZW50KTsKKyNlbmRpZgorCiAgICAgLy8gRWRpdG9yIGNsaWVudAogICAgIHN0YXRpYyBib29s
IHNob3VsZEJlZ2luRWRpdGluZyhXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlUmFuZ2VIYW5kbGVS
ZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogICAgIHN0YXRpYyBib29sIHNob3VsZEVuZEVk
aXRpbmcoV0tCdW5kbGVQYWdlUmVmLCBXS0J1bmRsZVJhbmdlSGFuZGxlUmVmLCBjb25zdCB2b2lk
KiBjbGllbnRJbmZvKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAK
aW5kZXggNDIzMzFkYWI5MzQ5MDUwMDJhOGNmNDc1ZjFiYjMzZjkyYTZlY2M5Zi4uZjdiMTZhMmVl
M2JlMGYzNjdhY2Q2NWIwMjdhZWY3Y2Q5ZjFiOGI1MSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTM1OCw2ICszNTgsOSBAQCBib29sIFRlc3RDb250cm9s
bGVyOjpyZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKCkKICAgICBXS1ByZWZlcmVuY2VzU2V0
RE9NUGFzdGVBbGxvd2VkKHByZWZlcmVuY2VzLCB0cnVlKTsKICAgICBXS1ByZWZlcmVuY2VzU2V0
VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzQWxsb3dlZChwcmVmZXJlbmNlcywgdHJ1ZSk7CiAg
ICAgV0tQcmVmZXJlbmNlc1NldEZpbGVBY2Nlc3NGcm9tRmlsZVVSTHNBbGxvd2VkKHByZWZlcmVu
Y2VzLCB0cnVlKTsKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgV0tQcmVmZXJlbmNl
c1NldEZ1bGxTY3JlZW5FbmFibGVkKHByZWZlcmVuY2VzLCB0cnVlKTsKKyNlbmRpZgogCiAgICAg
c3RhdGljIFdLU3RyaW5nUmVmIHN0YW5kYXJkRm9udEZhbWlseSA9IFdLU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKCJUaW1lcyIpOwogICAgIHN0YXRpYyBXS1N0cmluZ1JlZiBjdXJzaXZlRm9u
dEZhbWlseSA9IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJBcHBsZSBDaGFuY2VyeSIp
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88362</attachid>
            <date>2011-04-05 21:30:03 -0700</date>
            <delta_ts>2011-04-05 21:47:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56318-20110405213002.patch</filename>
            <type>text/plain</type>
            <size>30380</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODMwMTUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmZWZkYzU4Zjk1M2U0ZjQ0ZjllNjgw
OGYwNjQyOGE5MmI1MDExZGY4Li4zNDJjZTY1ZDViNDlmMWRkOGZhNzQ3ODQxOTVjN2RjYzZhODdm
ODE0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDQtMDUgIEplciBOb2JsZSAgPGplci5u
b2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgV2ViS2l0MjogV0tUUiBzaG91bGQgc3VwcG9ydCBXZWJLaXQyIGZ1bGwgc2NyZWVu
IEFQSXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2
MzE4CisKKyAgICAgICAgV0tUUiBkb2VzIG5vdCBzdXBwb3J0IHRoZSBldmVudFNlbmRlci5rZXlE
b3duKCkgbWV0aG9kLCBzbyB1c2UgbW91c2VEb3duKCkgCisgICAgICAgIGluIHRob3NlIGNhc2Vz
IHRoYXQga2V5RG93bigpIGRvZXMgbm90IGV4aXN0LgorCisgICAgICAgICogZnVsbHNjcmVlbi9m
dWxsLXNjcmVlbi10ZXN0LmpzOgorICAgICAgICAocnVuV2l0aEtleURvd24uZG9jdW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChydW5XaXRoS2V5RG93bik6CisKIDIwMTEtMDQtMDUg
IENoYW5nIFNodSAgPGNzaHVAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJp
biBBZGxlci4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4t
dGVzdC5qcyBiL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tdGVzdC5qcwppbmRl
eCBhYzk0MDkxMjlhMTc3NjRkZDRhYjJkZjAxODc0YjZhZmM2NTk4YWNkLi4xNDY2MDExYmRiOWQ0
YmIyYWMzODJlN2Y4OWNkZGM4ZWZjZTBkOWI2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mdWxs
c2NyZWVuL2Z1bGwtc2NyZWVuLXRlc3QuanMKKysrIGIvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9m
dWxsLXNjcmVlbi10ZXN0LmpzCkBAIC0xMCw5ICsxMCwxNCBAQCBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7CiAKIGZ1bmN0aW9uIHJ1bldpdGhLZXlEb3duKGZuKSAKIHsKLSAgICBk
b2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlwcmVzcycsIGZ1bmN0aW9uKCkgeyBmbigpOyB9
LCBmYWxzZSk7CisgICAgLy8gRklYTUU6IFdLVFIgZG9lcyBub3QgeWV0IHN1cHBvcnQgdGhlIGtl
eURvd24oKSBtZXNzYWdlLiAgRG8gYSBtb3VzZURvd24gaGVyZQorICAgIC8vIGluc3RlYWQgdW50
aWwga2V5RG93biBzdXBwb3J0IGlzIGFkZGVkLgorICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVu
ZXIoZXZlbnRTZW5kZXIua2V5RG93biA/ICdrZXlwcmVzcycgOiAnbW91c2Vkb3duJywgZnVuY3Rp
b24oKSB7IGZuKCk7IH0sIGZhbHNlKTsKICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7Ci0gICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oIiAiLCBbXSk7CisgICAgICAgIGlm
IChldmVudFNlbmRlci5rZXlEb3duKQorICAgICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigi
ICIsIFtdKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3du
KCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZjcwYjIxNTVjNjhkN2YwOGY1NzcxNDE1MGM3
MmZmY2ZkMWNlZGRlOS4uMzJjODJlYzM5OWE5Njg4Y2U2NDYyZjdlOTdhYjUwOGYwODYyMjYwYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDExLTA0LTA1ICBKZXIgTm9ibGUgIDxqZXIu
bm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFdlYktpdDI6IFdLVFIgc2hvdWxkIHN1cHBvcnQgV2ViS2l0MiBmdWxsIHNjcmVl
biBBUElzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
NjMxOAorCisgICAgICAgIEFkZCBhIG5ldyBXS0J1bmRsZVBhZ2UgQVBJIGZvciBGdWxsIFNjcmVl
biBldmVudHMsIGFuZCBtb3ZlIHNvbWUgb2YgdGhlIGltcGxlbWVudGF0aW9uCisgICAgICAgIG9m
IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyIGludG8gdGhlIG5ldyBJbmplY3RlZEJ1bmRsZVBhZ2VGdWxs
U2NyZWVuQ2xpZW50IGNsYXNzLCBzbyB0aGF0CisgICAgICAgIHRoZSBkZWZhdWx0IGJlaGF2aW9y
IGNhbiBiZSBvdmVycmlkZGVuIGJ5IGEgV0tCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudC4KKwor
ICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNGdWxsU2NyZWVuKTogTW92ZWQg
Y29udGVudHMgaW50byBJbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50LgorICAgICAg
ICAoV2ViS2l0OjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6ZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVu
dCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6ZXhpdEZ1
bGxTY3JlZW5Gb3JFbGVtZW50KTogRGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwOgorICAgICAgICAoV0tCdW5kbGVQYWdlU2V0
RnVsbFNjcmVlbkNsaWVudCk6IEFkZGVkLgorICAgICAgICAoV0tCdW5kbGVQYWdlV2lsbEVudGVy
RnVsbFNjcmVlbkZvckVsZW1lbnQpOiBBZGRlZC4KKyAgICAgICAgKFdLQnVuZGxlUGFnZURpZEVu
dGVyRnVsbFNjcmVlbkZvckVsZW1lbnQpOiBBZGRlZC4KKyAgICAgICAgKFdLQnVuZGxlUGFnZVdp
bGxFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQpOiBBZGRlZC4KKyAgICAgICAgKFdLQnVuZGxlUGFn
ZURpZEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudCk6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50LmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5D
bGllbnQ6OnN1cHBvcnRzRnVsbFNjcmVlbik6IEFkZGVkLiAKKyAgICAgICAgKFdlYktpdDo6SW5q
ZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudDo6ZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVu
dCk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVu
Q2xpZW50OjpleGl0RnVsbFNjcmVlbkZvckVsZW1lbnQpOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQu
aDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjppbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVGdWxsU2NyZWVu
Q2xpZW50KTogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aW5qZWN0ZWRCdW5kbGVGdWxsU2NyZWVuQ2xpZW50
KTogQWRkZWQuCisKIDIwMTEtMDQtMDUgIENoYW5nIFNodSAgPGNzaHVAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dl
YktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhOTUzMzQ3MGI3YWEyYTYwNmY2
OTBhNzM4YjM5NWFiMGEwOGM0MGFlLi5hMjE4OGNkZGU0ZDlhYTQ2MTQyNDZhNDAxMTE0NDI2NjBh
NTc3Mzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC03NzAsNiArNzcwLDggQEAKIAkJQzU3NEEzNzcxMkU2MDk5RDAwMkRGRTk4
IC8qIFdlYkRyYWdDbGllbnRNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDNTU0RkZBMjEyRTRFOEVBMDAyRjIyQzAgLyogV2ViRHJhZ0NsaWVudE1h
Yy5tbSAqLzsgfTsKIAkJQzU3NEE1ODExMkU2NjY4MTAwMkRGRTk4IC8qIFBhc3RlYm9hcmRUeXBl
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzU3NEE1
N0YxMkU2NjY4MTAwMkRGRTk4IC8qIFBhc3RlYm9hcmRUeXBlcy5oICovOyB9OwogCQlDNTc0QTU4
MjEyRTY2NjgxMDAyREZFOTggLyogUGFzdGVib2FyZFR5cGVzLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzU3NEE1ODAxMkU2NjY4MTAwMkRGRTk4IC8q
IFBhc3RlYm9hcmRUeXBlcy5tbSAqLzsgfTsKKwkJQ0Q1QzY2QTAxMzRCOUQzODAwNEZFMkE4IC8q
IEluamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q1QzY2OUUxMzRCOUQzNjAwNEZFMkE4IC8q
IEluamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQuY3BwICovOyB9OworCQlDRDVDNjZB
MTEzNEI5RDM4MDA0RkUyQTggLyogSW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q1QzY2OUYx
MzRCOUQzNzAwNEZFMkE4IC8qIEluamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQuaCAq
LzsgfTsKIAkJQ0Q2Rjc1RjQxMzFCNjZEMDAwRDZCMjFFIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2Vy
UHJveHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0Q3M0JBM0UxMzFBMkU4QTAwRUVERUQyIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkuY3Bw
ICovOyB9OwogCQlDRDczQkE0NzEzMUFDQzlBMDBFRURFRDIgLyogV2ViRnVsbFNjcmVlbk1hbmFn
ZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRDczQkE0NTEzMUFDQzg4MDBFRURFRDIgLyogV2ViRnVsbFNjcmVl
bk1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCUNENzNCQTRFMTMxQUNE
QjcwMEVFREVEMiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDczQkE0ODEzMUFD
RDhFMDBFRURFRDIgLyogV2ViRnVsbFNjcmVlbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICov
OyB9OwpAQCAtMTY4Myw2ICsxNjg1LDggQEAKIAkJQzU1NEZGQTIxMkU0RThFQTAwMkYyMkMwIC8q
IFdlYkRyYWdDbGllbnRNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBXZWJEcmFnQ2xpZW50TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
NTc0QTU3RjEyRTY2NjgxMDAyREZFOTggLyogUGFzdGVib2FyZFR5cGVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhc3RlYm9hcmRUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDNTc0QTU4MDEyRTY2NjgxMDAyREZFOTggLyogUGFzdGVib2FyZFR5cGVz
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGFzdGVib2FyZFR5
cGVzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDVDNjY5RTEzNEI5RDM2MDA0
RkUyQTggLyogSW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVu
Q2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0Q1QzY2OUYxMzRCOUQz
NzAwNEZFMkE4IC8qIEluamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNs
aWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDczQkEzNzEzMUEyOUZFMDBF
RURFRDIgLyogV2ViRnVsbFNjcmVlbk1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gV2ViRnVsbFNjcmVlbk1hbmFnZXIuY3BwOyBwYXRoID0gRnVsbFNjcmVl
bi9XZWJGdWxsU2NyZWVuTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUNENzNCQTM4MTMxQTI5RkUwMEVFREVEMiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJGdWxsU2NyZWVuTWFuYWdlci5oOyBwYXRo
ID0gRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDRDczQkEzOTEzMUEyOUZFMDBFRURFRDIgLyogV2ViRnVsbFNjcmVlbk1hbmFn
ZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gV2ViRnVsbFNjcmVlbk1hbmFn
ZXIubWVzc2FnZXMuaW47IHBhdGggPSBGdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLm1l
c3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjg0MCw2ICsyODQ0LDgg
QEAKIAkJCQlCQzE0REY3NjEyMEI1Qjc5MDA4MjZDMEMgLyogSW5qZWN0ZWRCdW5kbGVTY3JpcHRX
b3JsZC5jcHAgKi8sCiAJCQkJQkMxNERGNzUxMjBCNUI3OTAwODI2QzBDIC8qIEluamVjdGVkQnVu
ZGxlU2NyaXB0V29ybGQuaCAqLywKIAkJCQlCQ0IwQjBERDEyMzA1QThDMDBCMTM0MUUgLyogSW5q
ZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUNvZGVycy5oICovLAorCQkJCUNENUM2NjlFMTM0QjlEMzYw
MDRGRTJBOCAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50LmNwcCAqLywKKwkJ
CQlDRDVDNjY5RjEzNEI5RDM3MDA0RkUyQTggLyogSW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVl
bkNsaWVudC5oICovLAogCQkJKTsKIAkJCXBhdGggPSBJbmplY3RlZEJ1bmRsZTsKIAkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0zNjY2LDYgKzM2NzIsNyBAQAogCQkJCTUxODM0NTkzMTM0
NTMyRTkwMDkyQjY5NiAvKiBXZWJJY29uRGF0YWJhc2VDbGllbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUUxODM5MzQ5MTM0Mjk3QTUwMDE4NDJFQyAvKiBUZXh0SW5wdXRTdGF0ZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQzBGQTUyNDMxMzQ1Njk0QTAwMjhFOEMyIC8qIExheWVyVHJlZUhvc3RDQU1h
Yy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0Q1QzY2QTExMzRCOUQzODAwNEZFMkE4IC8qIEluamVj
dGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtNDI5MSw2
ICs0Mjk4LDcgQEAKIAkJCQlGNkE5MDgxMzEzM0MyMDUxMDA4MkMzRjQgLyogV2ViQ29va2llTWFu
YWdlck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY2RDYzMkJDMTMzRDE5ODIwMDc0M0Q3NyAv
KiBXZWJDb29raWVNYW5hZ2VyUHJveHlNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTgzNDU5
MjEzNDUzMkU5MDA5MkI2OTYgLyogV2ViSWNvbkRhdGFiYXNlQ2xpZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUNENUM2NkEwMTM0QjlEMzgwMDRGRTJBOCAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VG
dWxsU2NyZWVuQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5j
cHAKaW5kZXggZTg1Njg3NjM2M2UwNzlkZDE5YmI2ZDA4M2IwYTI4Y2M5NmI2YzgwYy4uNDdmMWQ0
MmJhMzIzMDcwNWM0N2RmNjdiM2E0NDU4MjI5MzVhOTJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFn
ZXIuY3BwCkBAIC02Niw5ICs2Niw4IEBAIGJvb2wgV2ViRnVsbFNjcmVlbk1hbmFnZXI6OnN1cHBv
cnRzRnVsbFNjcmVlbihib29sIHdpdGhLZXlib2FyZCkKICAgICBpZiAoIW1fcGFnZS0+Y29yZVBh
Z2UoKS0+c2V0dGluZ3MoKS0+ZnVsbFNjcmVlbkVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgYm9vbCBzdXBwb3J0cyA9IHRydWU7Ci0gICAgbV9wYWdlLT5zZW5kU3luYyhN
ZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6U3VwcG9ydHNGdWxsU2NyZWVuKHdp
dGhLZXlib2FyZCksIHN1cHBvcnRzKTsKLSAgICByZXR1cm4gc3VwcG9ydHM7CisgICAgcmV0dXJu
IG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVGdWxsU2NyZWVuQ2xpZW50KCkuc3VwcG9ydHNGdWxsU2Ny
ZWVuKG1fcGFnZS5nZXQoKSwgd2l0aEtleWJvYXJkKTsKKwogfQogCiB2b2lkIFdlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyOjplbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdlYkNvcmU6OkVsZW1lbnQqIGVs
ZW1lbnQpCkBAIC03NiwxNCArNzUsMTQgQEAgdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlcjo6ZW50
ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50KQogICAgIEFT
U0VSVChlbGVtZW50KTsKICAgICBtX2VsZW1lbnQgPSBlbGVtZW50OwogICAgIG1faW5pdGlhbEZy
YW1lID0gbV9lbGVtZW50LT5zY3JlZW5SZWN0KCk7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpFbnRlckZ1bGxTY3JlZW4oKSk7CisgICAgbV9w
YWdlLT5pbmplY3RlZEJ1bmRsZUZ1bGxTY3JlZW5DbGllbnQoKS5lbnRlckZ1bGxTY3JlZW5Gb3JF
bGVtZW50KG1fcGFnZS5nZXQoKSwgZWxlbWVudCk7CiB9CiAKIHZvaWQgV2ViRnVsbFNjcmVlbk1h
bmFnZXI6OmV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50
KQogewogICAgIEFTU0VSVChlbGVtZW50KTsKICAgICBBU1NFUlQobV9lbGVtZW50ID09IGVsZW1l
bnQpOwotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94
eTo6RXhpdEZ1bGxTY3JlZW4oKSk7CisgICAgbV9wYWdlLT5pbmplY3RlZEJ1bmRsZUZ1bGxTY3Jl
ZW5DbGllbnQoKS5leGl0RnVsbFNjcmVlbkZvckVsZW1lbnQobV9wYWdlLmdldCgpLCBlbGVtZW50
KTsKIH0KIAogdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlcjo6YmVnYW5FbnRlckZ1bGxTY3JlZW5B
bmltYXRpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCmluZGV4IGEyOWEyYzIxM2Y1
OTU5YjMzOTk0MzJmZDBkOGU4NDRiNjBkYmU3ZDYuLjVhZjY2ZTY0ZTczNjNhODYzNmM5YjBjOTI2
MWU5MzkxMzhiN2Q3MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKQEAgLTI4LDYg
KzI4LDcgQEAKICNpbmNsdWRlICJXS0J1bmRsZVBhZ2VQcml2YXRlLmgiCiAKICNpbmNsdWRlICJJ
bmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdC5oIgorI2luY2x1ZGUgIkluamVjdGVkQnVuZGxl
Tm9kZUhhbmRsZS5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLQnVuZGxl
QVBJQ2FzdC5oIgogI2luY2x1ZGUgIldlYkltYWdlLmgiCkBAIC05Myw2ICs5NCw1NSBAQCB2b2lk
IFdLQnVuZGxlUGFnZVNldFVJQ2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRs
ZVBhZ2VVSUNsaWVudCogd2tDbAogICAgIHRvSW1wbChwYWdlUmVmKS0+aW5pdGlhbGl6ZUluamVj
dGVkQnVuZGxlVUlDbGllbnQod2tDbGllbnQpOwogfQogCisjaWYgZGVmaW5lZChFTkFCTEVfRlVM
TFNDUkVFTl9BUEkpICYmIEVOQUJMRV9GVUxMU0NSRUVOX0FQSQordm9pZCBXS0J1bmRsZVBhZ2VT
ZXRGdWxsU2NyZWVuQ2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZVBhZ2VG
dWxsU2NyZWVuQ2xpZW50KiB3a0NsaWVudCkKK3sKKyAgICBpZiAod2tDbGllbnQgJiYgd2tDbGll
bnQtPnZlcnNpb24pCisgICAgICAgIHJldHVybjsKKyAgICB0b0ltcGwocGFnZVJlZiktPmluaXRp
YWxpemVJbmplY3RlZEJ1bmRsZUZ1bGxTY3JlZW5DbGllbnQod2tDbGllbnQpOworfQorCit2b2lk
IFdLQnVuZGxlUGFnZVdpbGxFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdLQnVuZGxlUGFnZVJl
ZiBwYWdlUmVmLCBXS0J1bmRsZU5vZGVIYW5kbGVSZWYgZWxlbWVudFJlZikKK3sKKyAgICBXZWJD
b3JlOjpOb2RlKiBjb3JlTm9kZSA9IHRvSW1wbChlbGVtZW50UmVmKS0+Y29yZU5vZGUoKTsKKyAg
ICBpZiAoIWNvcmVOb2RlIHx8ICFjb3JlTm9kZS0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6RWxlbWVudCo+KGNvcmVOb2RlKTsKKyAgICBlbGVtZW50LT5kb2N1bWVudCgpLT53ZWJr
aXRXaWxsRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChlbGVtZW50KTsKK30KKwordm9pZCBXS0J1
bmRsZVBhZ2VEaWRFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdl
UmVmLCBXS0J1bmRsZU5vZGVIYW5kbGVSZWYgZWxlbWVudFJlZikKK3sKKyAgICBXZWJDb3JlOjpO
b2RlKiBjb3JlTm9kZSA9IHRvSW1wbChlbGVtZW50UmVmKS0+Y29yZU5vZGUoKTsKKyAgICBpZiAo
IWNvcmVOb2RlIHx8ICFjb3JlTm9kZS0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICByZXR1cm47
CisgICAgCisgICAgV2ViQ29yZTo6RWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PFdlYkNv
cmU6OkVsZW1lbnQqPihjb3JlTm9kZSk7CisgICAgZWxlbWVudC0+ZG9jdW1lbnQoKS0+d2Via2l0
RGlkRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChlbGVtZW50KTsKK30KKyNlbmRpZgorCit2b2lk
IFdLQnVuZGxlUGFnZVdpbGxFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoV0tCdW5kbGVQYWdlUmVm
IHBhZ2VSZWYsIFdLQnVuZGxlTm9kZUhhbmRsZVJlZiBlbGVtZW50UmVmKQoreworICAgIFdlYkNv
cmU6Ok5vZGUqIGNvcmVOb2RlID0gdG9JbXBsKGVsZW1lbnRSZWYpLT5jb3JlTm9kZSgpOworICAg
IGlmICghY29yZU5vZGUgfHwgIWNvcmVOb2RlLT5pc0VsZW1lbnROb2RlKCkpCisgICAgICAgIHJl
dHVybjsKKyAgICAKKyAgICBXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8
V2ViQ29yZTo6RWxlbWVudCo+KGNvcmVOb2RlKTsKKyAgICBlbGVtZW50LT5kb2N1bWVudCgpLT53
ZWJraXRXaWxsRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KGVsZW1lbnQpOworfQorCit2b2lkIFdL
QnVuZGxlUGFnZURpZEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChXS0J1bmRsZVBhZ2VSZWYgcGFn
ZVJlZiwgV0tCdW5kbGVOb2RlSGFuZGxlUmVmIGVsZW1lbnRSZWYpCit7CisgICAgV2ViQ29yZTo6
Tm9kZSogY29yZU5vZGUgPSB0b0ltcGwoZWxlbWVudFJlZiktPmNvcmVOb2RlKCk7CisgICAgaWYg
KCFjb3JlTm9kZSB8fCAhY29yZU5vZGUtPmlzRWxlbWVudE5vZGUoKSkKKyAgICAgICAgcmV0dXJu
OworICAgIAorICAgIFdlYkNvcmU6OkVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxXZWJD
b3JlOjpFbGVtZW50Kj4oY29yZU5vZGUpOworICAgIGVsZW1lbnQtPmRvY3VtZW50KCktPndlYmtp
dERpZEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChlbGVtZW50KTsKK30KKwogV0tCdW5kbGVQYWdl
R3JvdXBSZWYgV0tCdW5kbGVQYWdlR2V0UGFnZUdyb3VwKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVm
KQogewogICAgIHJldHVybiB0b0FQSSh0b0ltcGwocGFnZVJlZiktPnBhZ2VHcm91cCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlUGFnZS5oCmluZGV4IGUwMWY1MWY4YTQ5NzAzZjEyMjhlY2NjYTQ3Zjli
YmViZmY2NDM0MzYuLjBjYzk0NWVmMTFkNjE5MjgxMDhjMWFiYzkzYmY5OTc3N2FlNzJmOWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaApAQCAtMjQzLDggKzI0MywyOSBAQCBzdHJ1Y3QgV0tC
dW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQgewogfTsKIHR5cGVkZWYgc3RydWN0IFdLQnVuZGxl
UGFnZUNvbnRleHRNZW51Q2xpZW50IFdLQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50OwogCisj
aWYgZGVmaW5lZChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICYmIEVOQUJMRV9GVUxMU0NSRUVOX0FQ
SQorLy8gRnVsbCBTY3JlZW4gY2xpZW50Cit0eXBlZGVmIGJvb2wgKCpXS0J1bmRsZVBhZ2VTdXBw
b3J0c0Z1bGxTY3JlZW4pKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBib29sIHdpdGhLZXlib2FyZCk7
Cit0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZVBhZ2VFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KShX
S0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVOb2RlSGFuZGxlUmVmIGVsZW1lbnQpOwordHlw
ZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KShXS0J1bmRs
ZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVOb2RlSGFuZGxlUmVmIGVsZW1lbnQpOworCitzdHJ1Y3Qg
V0tCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudCB7CisgICAgaW50ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uOwor
ICAgIGNvbnN0IHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2xpZW50SW5mbzsKKyAgICBXS0J1bmRsZVBhZ2VTdXBwb3J0c0Z1bGxT
Y3JlZW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRzRnVsbFNj
cmVlbjsKKyAgICBXS0J1bmRsZVBhZ2VFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQ7CisgICAgV0tC
dW5kbGVQYWdlRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBleGl0RnVsbFNjcmVlbkZvckVsZW1lbnQ7Cit9OwordHlwZWRlZiBzdHJ1Y3QgV0tC
dW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudCBXS0J1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50Owor
CitXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VXaWxsRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVu
dChXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVOb2RlSGFuZGxlUmVmIGVsZW1lbnQpOwor
V0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlRGlkRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChX
S0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVOb2RlSGFuZGxlUmVmIGVsZW1lbnQpOworV0tf
RVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlV2lsbEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChXS0J1
bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVOb2RlSGFuZGxlUmVmIGVsZW1lbnQpOworV0tfRVhQ
T1JUIHZvaWQgV0tCdW5kbGVQYWdlRGlkRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdLQnVuZGxl
UGFnZVJlZiBwYWdlLCBXS0J1bmRsZU5vZGVIYW5kbGVSZWYgZWxlbWVudCk7CisjZW5kaWYKKwog
V0tfRVhQT1JUIFdLVHlwZUlEIFdLQnVuZGxlUGFnZUdldFR5cGVJRCgpOwotIAorCiBXS19FWFBP
UlQgdm9pZCBXS0J1bmRsZVBhZ2VTZXRDb250ZXh0TWVudUNsaWVudChXS0J1bmRsZVBhZ2VSZWYg
cGFnZSwgV0tCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQqIGNsaWVudCk7CiBXS19FWFBPUlQg
dm9pZCBXS0J1bmRsZVBhZ2VTZXRFZGl0b3JDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdL
QnVuZGxlUGFnZUVkaXRvckNsaWVudCogY2xpZW50KTsKIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxl
UGFnZVNldEZvcm1DbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlUGFnZUZvcm1D
bGllbnQqIGNsaWVudCk7CkBAIC0yNTIsNiArMjczLDEwIEBAIFdLX0VYUE9SVCB2b2lkIFdLQnVu
ZGxlUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxl
UGFnCiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VTZXRSZXNvdXJjZUxvYWRDbGllbnQoV0tC
dW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudCogY2xpZW50
KTsKIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZVNldFBvbGljeUNsaWVudChXS0J1bmRsZVBh
Z2VSZWYgcGFnZSwgV0tCdW5kbGVQYWdlUG9saWN5Q2xpZW50KiBjbGllbnQpOwogV0tfRVhQT1JU
IHZvaWQgV0tCdW5kbGVQYWdlU2V0VUlDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVu
ZGxlUGFnZVVJQ2xpZW50KiBjbGllbnQpOworICAgIAorI2lmIGRlZmluZWQoRU5BQkxFX0ZVTExT
Q1JFRU5fQVBJKSAmJiBFTkFCTEVfRlVMTFNDUkVFTl9BUEkKK1dLX0VYUE9SVCB2b2lkIFdLQnVu
ZGxlUGFnZVNldEZ1bGxTY3JlZW5DbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxl
UGFnZUZ1bGxTY3JlZW5DbGllbnQqIGNsaWVudCk7CisjZW5kaWYKIAogV0tfRVhQT1JUIFdLQnVu
ZGxlUGFnZUdyb3VwUmVmIFdLQnVuZGxlUGFnZUdldFBhZ2VHcm91cChXS0J1bmRsZVBhZ2VSZWYg
cGFnZSk7CiBXS19FWFBPUlQgV0tCdW5kbGVGcmFtZVJlZiBXS0J1bmRsZVBhZ2VHZXRNYWluRnJh
bWUoV0tCdW5kbGVQYWdlUmVmIHBhZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGY4MWExY2IzZDI2YTY0
MzgyZjk1NmY1YTIxOGU3MTk1YTA3ZGQzNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVl
bkNsaWVudC5jcHAKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKworI2luY2x1ZGUgIkluamVjdGVk
QnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQuaCIKKworI2luY2x1ZGUgIkluamVjdGVkQnVuZGxl
Tm9kZUhhbmRsZS5oIgorI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldLQnVuZGxl
QVBJQ2FzdC5oIgorI2luY2x1ZGUgIldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlNZXNzYWdlcy5o
IgorI2luY2x1ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0VsZW1lbnQuaD4KKwor
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitib29sIElu
amVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQ6OnN1cHBvcnRzRnVsbFNjcmVlbihXZWJQ
YWdlICpwYWdlLCBib29sIHdpdGhLZXlib2FyZCkKK3sKKyAgICBpZiAobV9jbGllbnQuc3VwcG9y
dHNGdWxsU2NyZWVuKSAKKyAgICAgICAgcmV0dXJuIG1fY2xpZW50LnN1cHBvcnRzRnVsbFNjcmVl
bih0b0FQSShwYWdlKSwgd2l0aEtleWJvYXJkKTsKKworICAgIGJvb2wgc3VwcG9ydHMgPSB0cnVl
OworICAgIHBhZ2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5
OjpTdXBwb3J0c0Z1bGxTY3JlZW4od2l0aEtleWJvYXJkKSwgc3VwcG9ydHMpOworICAgIHJldHVy
biBzdXBwb3J0czsKK30KKwordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50
OjplbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdlYlBhZ2UgKnBhZ2UsIFdlYkNvcmU6OkVsZW1l
bnQgKmVsZW1lbnQpCit7CisgICAgaWYgKG1fY2xpZW50LmVudGVyRnVsbFNjcmVlbkZvckVsZW1l
bnQpIHsKKyAgICAgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gbm9kZUhhbmRs
ZSA9IEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6Z2V0T3JDcmVhdGUoZWxlbWVudCk7CisgICAg
ICAgIG1fY2xpZW50LmVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQodG9BUEkocGFnZSksIHRvQVBJ
KG5vZGVIYW5kbGUuZ2V0KCkpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgcGFnZS0+c2VuZChNZXNz
YWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6RW50ZXJGdWxsU2NyZWVuKCkpOworfQor
Cit2b2lkIEluamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQ6OmV4aXRGdWxsU2NyZWVu
Rm9yRWxlbWVudChXZWJQYWdlICpwYWdlLCBXZWJDb3JlOjpFbGVtZW50ICplbGVtZW50KQorewor
ICAgIGlmIChtX2NsaWVudC5lbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KSB7CisgICAgICAgIFJl
ZlB0cjxJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU+IG5vZGVIYW5kbGUgPSBJbmplY3RlZEJ1bmRs
ZU5vZGVIYW5kbGU6OmdldE9yQ3JlYXRlKGVsZW1lbnQpOworICAgICAgICBtX2NsaWVudC5lbnRl
ckZ1bGxTY3JlZW5Gb3JFbGVtZW50KHRvQVBJKHBhZ2UpLCB0b0FQSShub2RlSGFuZGxlLmdldCgp
KSk7CisgICAgfSBlbHNlCisgICAgICAgIHBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyUHJveHk6OkV4aXRGdWxsU2NyZWVuKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
RnVsbFNjcmVlbkNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDRj
ZGE1MmM2ZmM4OTAzZTMwZmI2YmQwZWU2ZjA1NWViMWViYjJiMAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlRnVsbFNjcmVlbkNsaWVudC5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIEluamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnRfaAorI2RlZmluZSBJbmplY3Rl
ZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50X2gKKworI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQ
SSkKKworI2luY2x1ZGUgIkFQSUNsaWVudC5oIgorI2luY2x1ZGUgIldLQnVuZGxlUGFnZS5oIgor
I2luY2x1ZGUgIldlYkV2ZW50LmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworY2xhc3MgRWxlbWVudDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIFdlYlBhZ2U7CisKK2NsYXNzIEluamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGll
bnQgOiBwdWJsaWMgQVBJQ2xpZW50PFdLQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQ+IHsKK3B1
YmxpYzoKKyAgICBib29sIHN1cHBvcnRzRnVsbFNjcmVlbihXZWJQYWdlKiwgYm9vbCB3aXRoS2V5
Ym9hcmQpOworICAgIHZvaWQgZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChXZWJQYWdlKiwgV2Vi
Q29yZTo6RWxlbWVudCopOworICAgIHZvaWQgZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdlYlBh
Z2UqLCBXZWJDb3JlOjpFbGVtZW50Kik7Cit9OworCisjZW5kaWYgLy8gRU5BQkxFKEZVTExTQ1JF
RU5fQVBJKQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEluamVjdGVkQnVu
ZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGUwMmU3MTVjMDJkZTVhNjUwNjA0MGJkZDlmYjJjNDFh
MTBiMzEwMTIuLmQxODMwODU2NjUyMzIyYTk0Yzk5MmViNTg2ZDE1ODI2MDAyYWUxNDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTI4OCw2
ICsyODgsMTMgQEAgdm9pZCBXZWJQYWdlOjppbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVVSUNsaWVu
dChXS0J1bmRsZVBhZ2VVSUNsaWVudCogY2xpZW50KQogICAgIG1fdWlDbGllbnQuaW5pdGlhbGl6
ZShjbGllbnQpOwogfQogCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQordm9pZCBXZWJQYWdl
Ojppbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVGdWxsU2NyZWVuQ2xpZW50KFdLQnVuZGxlUGFnZUZ1
bGxTY3JlZW5DbGllbnQqIGNsaWVudCkKK3sKKyAgICBtX2Z1bGxTY3JlZW5DbGllbnQuaW5pdGlh
bGl6ZShjbGllbnQpOworfQorI2VuZGlmCisKIFBhc3NSZWZQdHI8UGx1Z2luPiBXZWJQYWdlOjpj
cmVhdGVQbHVnaW4oY29uc3QgUGx1Z2luOjpQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewogICAg
IFN0cmluZyBwbHVnaW5QYXRoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKaW5kZXggYmFjZjcxZjk5Mjg1ZTllNGI0YjA1MWM1Nzc2NzExZTMzZWJiZjhjMy4u
N2ZlNzIyMTZiZGNiMzdiNTQzMjZkZmQ0NTdmYjQwMjZiMDRhMzY4YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5j
bHVkZSAiSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuaCIKICNpbmNsdWRlICJJ
bmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRs
ZVBhZ2VGb3JtQ2xpZW50LmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVl
bkNsaWVudC5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oIgog
I2luY2x1ZGUgIkluamVjdGVkQnVuZGxlUGFnZVBvbGljeUNsaWVudC5oIgogI2luY2x1ZGUgIklu
amVjdGVkQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudC5oIgpAQCAtMTk0LDYgKzE5NSw5IEBA
IHB1YmxpYzoKICAgICB2b2lkIGluaXRpYWxpemVJbmplY3RlZEJ1bmRsZVBvbGljeUNsaWVudChX
S0J1bmRsZVBhZ2VQb2xpY3lDbGllbnQqKTsKICAgICB2b2lkIGluaXRpYWxpemVJbmplY3RlZEJ1
bmRsZVJlc291cmNlTG9hZENsaWVudChXS0J1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQqKTsK
ICAgICB2b2lkIGluaXRpYWxpemVJbmplY3RlZEJ1bmRsZVVJQ2xpZW50KFdLQnVuZGxlUGFnZVVJ
Q2xpZW50Kik7CisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAgIHZvaWQgaW5pdGlhbGl6
ZUluamVjdGVkQnVuZGxlRnVsbFNjcmVlbkNsaWVudChXS0J1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xp
ZW50Kik7CisjZW5kaWYKIAogICAgIEluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50
JiBpbmplY3RlZEJ1bmRsZUNvbnRleHRNZW51Q2xpZW50KCkgeyByZXR1cm4gbV9jb250ZXh0TWVu
dUNsaWVudDsgfQogICAgIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudCYgaW5qZWN0ZWRC
dW5kbGVFZGl0b3JDbGllbnQoKSB7IHJldHVybiBtX2VkaXRvckNsaWVudDsgfQpAQCAtMjAyLDYg
KzIwNiw5IEBAIHB1YmxpYzoKICAgICBJbmplY3RlZEJ1bmRsZVBhZ2VQb2xpY3lDbGllbnQmIGlu
amVjdGVkQnVuZGxlUG9saWN5Q2xpZW50KCkgeyByZXR1cm4gbV9wb2xpY3lDbGllbnQ7IH0KICAg
ICBJbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQmIGluamVjdGVkQnVuZGxlUmVz
b3VyY2VMb2FkQ2xpZW50KCkgeyByZXR1cm4gbV9yZXNvdXJjZUxvYWRDbGllbnQ7IH0KICAgICBJ
bmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudCYgaW5qZWN0ZWRCdW5kbGVVSUNsaWVudCgpIHsgcmV0
dXJuIG1fdWlDbGllbnQ7IH0KKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgSW5qZWN0
ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudCYgaW5qZWN0ZWRCdW5kbGVGdWxsU2NyZWVuQ2xp
ZW50KCkgeyByZXR1cm4gbV9mdWxsU2NyZWVuQ2xpZW50OyB9CisjZW5kaWYKIAogICAgIGJvb2wg
ZmluZFN0cmluZ0Zyb21JbmplY3RlZEJ1bmRsZShjb25zdCBTdHJpbmcmLCBGaW5kT3B0aW9ucyk7
CiAKQEAgLTU4NCw2ICs1OTEsOSBAQCBwcml2YXRlOgogICAgIEluamVjdGVkQnVuZGxlUGFnZVBv
bGljeUNsaWVudCBtX3BvbGljeUNsaWVudDsKICAgICBJbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJj
ZUxvYWRDbGllbnQgbV9yZXNvdXJjZUxvYWRDbGllbnQ7CiAgICAgSW5qZWN0ZWRCdW5kbGVQYWdl
VUlDbGllbnQgbV91aUNsaWVudDsKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgSW5q
ZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudCBtX2Z1bGxTY3JlZW5DbGllbnQ7CisjZW5k
aWYKIAogI2lmIEVOQUJMRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAgIFdlYkNvcmU6OkludFNp
emUgbV9yZXNpemVzVG9Db250ZW50c0xheW91dFNpemU7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYmQ0YTE3MmE5ZDAwY2JhZmUzNWE4YTcxZWVl
YWE3NjU4ZDg1NWQ0YS4uNzAyY2Y3MzI2NGQ4NTYwZjg3MDdiZWQyMjBjYTlkZWFmM2NhZGI1NCAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDIyIEBACisyMDExLTA0LTA1ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYktpdDI6
IFdLVFIgc2hvdWxkIHN1cHBvcnQgV2ViS2l0MiBmdWxsIHNjcmVlbiBBUElzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjMxOAorCisgICAgICAgIFJl
c3BvbmQgdG8gZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudCgpIGFuZCBleGl0RnVsbFNjcmVlbkZv
ckVsZW1lbnQoKSwgYWxsb3dpbmcgCisgICAgICAgIFdLVFIgdG8gdGVzdCB0aGUgTGF5b3V0VGVz
dC9mdWxsc2NyZWVuLyB0ZXN0cy4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRC
dW5kbGVQYWdlOjpJbmplY3RlZEJ1bmRsZVBhZ2UpOiBBZGQgc3VwcG9ydCBmb3IgV0tCdW5kbGVQ
YWdlRnVsbFNjcmVlbkNsaWVudC4KKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpz
dXBwb3J0c0Z1bGxTY3JlZW4pOiBBZGRlZC4KKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQ
YWdlOjplbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KTogQWRkZWQuCisgICAgICAgIChXVFI6Oklu
amVjdGVkQnVuZGxlUGFnZTo6ZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KTogQWRkZWQuCisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2Uu
aDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMpOiBF
bmFibGUgdGhlIGZ1bGwgc2NyZWVuIHByZWZlcmVuY2UuCisKIDIwMTEtMDQtMDUgIFNoZXJpZmYg
Qm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQs
IHJvbGxpbmcgb3V0IHI4Mjk3OCwgcjgyOTk5LCBhbmQgcjgzMDAxLgpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3Bw
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2UuY3BwCmluZGV4IDQ3MTU1MmY0NWFmMDZmZTFmNDI4ZTZlNjMxZDMxZDRhYmQ0ZjA4OWIuLmYz
Y2VkODhiNTBmMjQwYTgxNTNjZjFlNjQ5ZjkwZDFhMzVmMWUwNDkgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
UGFnZS5jcHAKQEAgLTIzNCw2ICsyMzQsMTcgQEAgSW5qZWN0ZWRCdW5kbGVQYWdlOjpJbmplY3Rl
ZEJ1bmRsZVBhZ2UoV0tCdW5kbGVQYWdlUmVmIHBhZ2UpCiAgICAgICAgIGRpZENoYW5nZVNlbGVj
dGlvbgogICAgIH07CiAgICAgV0tCdW5kbGVQYWdlU2V0RWRpdG9yQ2xpZW50KG1fcGFnZSwgJmVk
aXRvckNsaWVudCk7CisKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgV0tCdW5kbGVQ
YWdlRnVsbFNjcmVlbkNsaWVudCBmdWxsU2NyZWVuQ2xpZW50ID0geworICAgICAgICAwLAorICAg
ICAgICB0aGlzLAorICAgICAgICBzdXBwb3J0c0Z1bGxTY3JlZW4sCisgICAgICAgIGVudGVyRnVs
bFNjcmVlbkZvckVsZW1lbnQsCisgICAgICAgIGV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudCwKKyAg
ICB9OworICAgIFdLQnVuZGxlUGFnZVNldEZ1bGxTY3JlZW5DbGllbnQobV9wYWdlLCAmZnVsbFNj
cmVlbkNsaWVudCk7CisjZW5kaWYKIH0KIAogSW5qZWN0ZWRCdW5kbGVQYWdlOjp+SW5qZWN0ZWRC
dW5kbGVQYWdlKCkKQEAgLTkyMSw2ICs5MzIsMjggQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6
OmRpZENoYW5nZVNlbGVjdGlvbihXS1N0cmluZ1JlZiBub3RpZmljYXRpb25OYW1lKQogICAgICAg
ICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkub3MoKSA8PCAiRURJVElORyBERUxFR0FURTogd2Vi
Vmlld0RpZENoYW5nZVNlbGVjdGlvbjoiIDw8IG5vdGlmaWNhdGlvbk5hbWUgPDwgIlxuIjsKIH0K
IAorI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKK2Jvb2wgSW5qZWN0ZWRCdW5kbGVQYWdlOjpz
dXBwb3J0c0Z1bGxTY3JlZW4oV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIGJvb2wgd2l0aEtleWJv
YXJkKQoreworICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5vcygpIDw8ICJzdXBwb3J0c0Z1
bGxTY3JlZW4oKSA9PSB0cnVlXG4iOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIEluamVj
dGVkQnVuZGxlUGFnZTo6ZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChXS0J1bmRsZVBhZ2VSZWYg
cGFnZVJlZiwgV0tCdW5kbGVOb2RlSGFuZGxlUmVmIGVsZW1lbnRSZWYpCit7CisgICAgSW5qZWN0
ZWRCdW5kbGU6OnNoYXJlZCgpLm9zKCkgPDwgImVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoKVxu
IjsKKyAgICBXS0J1bmRsZVBhZ2VXaWxsRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChwYWdlUmVm
LCBlbGVtZW50UmVmKTsKKyAgICBXS0J1bmRsZVBhZ2VEaWRFbnRlckZ1bGxTY3JlZW5Gb3JFbGVt
ZW50KHBhZ2VSZWYsIGVsZW1lbnRSZWYpOworfQorCit2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6
ZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRs
ZU5vZGVIYW5kbGVSZWYgZWxlbWVudFJlZikKK3sKKyAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVk
KCkub3MoKSA8PCAiZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KClcbiI7CisgICAgV0tCdW5kbGVQ
YWdlV2lsbEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChwYWdlUmVmLCBlbGVtZW50UmVmKTsKKyAg
ICBXS0J1bmRsZVBhZ2VEaWRFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQocGFnZVJlZiwgZWxlbWVu
dFJlZik7Cit9CisjZW5kaWYKKwogc3RhdGljIGJvb2wgY29tcGFyZUJ5VGFyZ2V0TmFtZShXS0J1
bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW1SZWYgaXRlbTEsIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0
SXRlbVJlZiBpdGVtMikKIHsKICAgICByZXR1cm4gdG9TVEQoYWRvcHRXSyhXS0J1bmRsZUJhY2tG
b3J3YXJkTGlzdEl0ZW1Db3B5VGFyZ2V0KGl0ZW0xKSkpIDwgdG9TVEQoYWRvcHRXSyhXS0J1bmRs
ZUJhY2tGb3J3YXJkTGlzdEl0ZW1Db3B5VGFyZ2V0KGl0ZW0yKSkpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaCBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
LmgKaW5kZXggMmMzZTlkZjNkYjk4OTYzNjk1YzNlZWE2N2QyYTNkNTljZTlhNTBlNS4uODNjOTNj
NDAxZjZkMGI0MDFmMDQ0ZjUwYjcwZTYwYzM1OWZiYzhjYSAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5o
CkBAIC0xMDYsNiArMTA2LDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsUnVuSmF2YVNjcmlw
dENvbmZpcm0oV0tTdHJpbmdSZWYgbWVzc2FnZSwgV0tCdW5kbGVGcmFtZVJlZik7CiAgICAgdm9p
ZCB3aWxsUnVuSmF2YVNjcmlwdFByb21wdChXS1N0cmluZ1JlZiBtZXNzYWdlLCBXS1N0cmluZ1Jl
ZiBkZWZhdWx0VmFsdWUsIFdLQnVuZGxlRnJhbWVSZWYpOwogCisjaWYgRU5BQkxFKEZVTExTQ1JF
RU5fQVBJKQorICAgIC8vIEZ1bGwgU2NyZWVuIGNsaWVudAorICAgIHN0YXRpYyBib29sIHN1cHBv
cnRzRnVsbFNjcmVlbihXS0J1bmRsZVBhZ2VSZWYsIGJvb2wgd2l0aEtleWJvYXJkKTsKKyAgICBz
dGF0aWMgdm9pZCBlbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdLQnVuZGxlUGFnZVJlZiwgV0tC
dW5kbGVOb2RlSGFuZGxlUmVmIGVsZW1lbnQpOworICAgIHN0YXRpYyB2b2lkIGV4aXRGdWxsU2Ny
ZWVuRm9yRWxlbWVudChXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlTm9kZUhhbmRsZVJlZiBlbGVt
ZW50KTsKKyNlbmRpZgorCiAgICAgLy8gRWRpdG9yIGNsaWVudAogICAgIHN0YXRpYyBib29sIHNo
b3VsZEJlZ2luRWRpdGluZyhXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlUmFuZ2VIYW5kbGVSZWYs
IGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogICAgIHN0YXRpYyBib29sIHNob3VsZEVuZEVkaXRp
bmcoV0tCdW5kbGVQYWdlUmVmLCBXS0J1bmRsZVJhbmdlSGFuZGxlUmVmLCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5k
ZXggNDIzMzFkYWI5MzQ5MDUwMDJhOGNmNDc1ZjFiYjMzZjkyYTZlY2M5Zi4uZjdiMTZhMmVlM2Jl
MGYzNjdhY2Q2NWIwMjdhZWY3Y2Q5ZjFiOGI1MSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5jcHAKQEAgLTM1OCw2ICszNTgsOSBAQCBib29sIFRlc3RDb250cm9sbGVy
OjpyZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKCkKICAgICBXS1ByZWZlcmVuY2VzU2V0RE9N
UGFzdGVBbGxvd2VkKHByZWZlcmVuY2VzLCB0cnVlKTsKICAgICBXS1ByZWZlcmVuY2VzU2V0VW5p
dmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzQWxsb3dlZChwcmVmZXJlbmNlcywgdHJ1ZSk7CiAgICAg
V0tQcmVmZXJlbmNlc1NldEZpbGVBY2Nlc3NGcm9tRmlsZVVSTHNBbGxvd2VkKHByZWZlcmVuY2Vz
LCB0cnVlKTsKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgV0tQcmVmZXJlbmNlc1Nl
dEZ1bGxTY3JlZW5FbmFibGVkKHByZWZlcmVuY2VzLCB0cnVlKTsKKyNlbmRpZgogCiAgICAgc3Rh
dGljIFdLU3RyaW5nUmVmIHN0YW5kYXJkRm9udEZhbWlseSA9IFdLU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKCJUaW1lcyIpOwogICAgIHN0YXRpYyBXS1N0cmluZ1JlZiBjdXJzaXZlRm9udEZh
bWlseSA9IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJBcHBsZSBDaGFuY2VyeSIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88363</attachid>
            <date>2011-04-05 21:47:28 -0700</date>
            <delta_ts>2011-04-05 22:11:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56318-20110405214727.patch</filename>
            <type>text/plain</type>
            <size>30380</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODMwMTUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmZWZkYzU4Zjk1M2U0ZjQ0ZjllNjgw
OGYwNjQyOGE5MmI1MDExZGY4Li4zNDJjZTY1ZDViNDlmMWRkOGZhNzQ3ODQxOTVjN2RjYzZhODdm
ODE0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDQtMDUgIEplciBOb2JsZSAgPGplci5u
b2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgV2ViS2l0MjogV0tUUiBzaG91bGQgc3VwcG9ydCBXZWJLaXQyIGZ1bGwgc2NyZWVu
IEFQSXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2
MzE4CisKKyAgICAgICAgV0tUUiBkb2VzIG5vdCBzdXBwb3J0IHRoZSBldmVudFNlbmRlci5rZXlE
b3duKCkgbWV0aG9kLCBzbyB1c2UgbW91c2VEb3duKCkgCisgICAgICAgIGluIHRob3NlIGNhc2Vz
IHRoYXQga2V5RG93bigpIGRvZXMgbm90IGV4aXN0LgorCisgICAgICAgICogZnVsbHNjcmVlbi9m
dWxsLXNjcmVlbi10ZXN0LmpzOgorICAgICAgICAocnVuV2l0aEtleURvd24uZG9jdW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChydW5XaXRoS2V5RG93bik6CisKIDIwMTEtMDQtMDUg
IENoYW5nIFNodSAgPGNzaHVAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJp
biBBZGxlci4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4t
dGVzdC5qcyBiL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tdGVzdC5qcwppbmRl
eCBhYzk0MDkxMjlhMTc3NjRkZDRhYjJkZjAxODc0YjZhZmM2NTk4YWNkLi4xNDY2MDExYmRiOWQ0
YmIyYWMzODJlN2Y4OWNkZGM4ZWZjZTBkOWI2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mdWxs
c2NyZWVuL2Z1bGwtc2NyZWVuLXRlc3QuanMKKysrIGIvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9m
dWxsLXNjcmVlbi10ZXN0LmpzCkBAIC0xMCw5ICsxMCwxNCBAQCBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7CiAKIGZ1bmN0aW9uIHJ1bldpdGhLZXlEb3duKGZuKSAKIHsKLSAgICBk
b2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlwcmVzcycsIGZ1bmN0aW9uKCkgeyBmbigpOyB9
LCBmYWxzZSk7CisgICAgLy8gRklYTUU6IFdLVFIgZG9lcyBub3QgeWV0IHN1cHBvcnQgdGhlIGtl
eURvd24oKSBtZXNzYWdlLiAgRG8gYSBtb3VzZURvd24gaGVyZQorICAgIC8vIGluc3RlYWQgdW50
aWwga2V5RG93biBzdXBwb3J0IGlzIGFkZGVkLgorICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVu
ZXIoZXZlbnRTZW5kZXIua2V5RG93biA/ICdrZXlwcmVzcycgOiAnbW91c2Vkb3duJywgZnVuY3Rp
b24oKSB7IGZuKCk7IH0sIGZhbHNlKTsKICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7Ci0gICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oIiAiLCBbXSk7CisgICAgICAgIGlm
IChldmVudFNlbmRlci5rZXlEb3duKQorICAgICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigi
ICIsIFtdKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3du
KCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZjcwYjIxNTVjNjhkN2YwOGY1NzcxNDE1MGM3
MmZmY2ZkMWNlZGRlOS4uMzJjODJlYzM5OWE5Njg4Y2U2NDYyZjdlOTdhYjUwOGYwODYyMjYwYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDExLTA0LTA1ICBKZXIgTm9ibGUgIDxqZXIu
bm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFdlYktpdDI6IFdLVFIgc2hvdWxkIHN1cHBvcnQgV2ViS2l0MiBmdWxsIHNjcmVl
biBBUElzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
NjMxOAorCisgICAgICAgIEFkZCBhIG5ldyBXS0J1bmRsZVBhZ2UgQVBJIGZvciBGdWxsIFNjcmVl
biBldmVudHMsIGFuZCBtb3ZlIHNvbWUgb2YgdGhlIGltcGxlbWVudGF0aW9uCisgICAgICAgIG9m
IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyIGludG8gdGhlIG5ldyBJbmplY3RlZEJ1bmRsZVBhZ2VGdWxs
U2NyZWVuQ2xpZW50IGNsYXNzLCBzbyB0aGF0CisgICAgICAgIHRoZSBkZWZhdWx0IGJlaGF2aW9y
IGNhbiBiZSBvdmVycmlkZGVuIGJ5IGEgV0tCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudC4KKwor
ICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNGdWxsU2NyZWVuKTogTW92ZWQg
Y29udGVudHMgaW50byBJbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50LgorICAgICAg
ICAoV2ViS2l0OjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6ZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVu
dCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6ZXhpdEZ1
bGxTY3JlZW5Gb3JFbGVtZW50KTogRGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwOgorICAgICAgICAoV0tCdW5kbGVQYWdlU2V0
RnVsbFNjcmVlbkNsaWVudCk6IEFkZGVkLgorICAgICAgICAoV0tCdW5kbGVQYWdlV2lsbEVudGVy
RnVsbFNjcmVlbkZvckVsZW1lbnQpOiBBZGRlZC4KKyAgICAgICAgKFdLQnVuZGxlUGFnZURpZEVu
dGVyRnVsbFNjcmVlbkZvckVsZW1lbnQpOiBBZGRlZC4KKyAgICAgICAgKFdLQnVuZGxlUGFnZVdp
bGxFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQpOiBBZGRlZC4KKyAgICAgICAgKFdLQnVuZGxlUGFn
ZURpZEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudCk6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50LmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5D
bGllbnQ6OnN1cHBvcnRzRnVsbFNjcmVlbik6IEFkZGVkLiAKKyAgICAgICAgKFdlYktpdDo6SW5q
ZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudDo6ZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVu
dCk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVu
Q2xpZW50OjpleGl0RnVsbFNjcmVlbkZvckVsZW1lbnQpOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQu
aDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjppbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVGdWxsU2NyZWVu
Q2xpZW50KTogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aW5qZWN0ZWRCdW5kbGVGdWxsU2NyZWVuQ2xpZW50
KTogQWRkZWQuCisKIDIwMTEtMDQtMDUgIENoYW5nIFNodSAgPGNzaHVAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dl
YktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhOTUzMzQ3MGI3YWEyYTYwNmY2
OTBhNzM4YjM5NWFiMGEwOGM0MGFlLi5hMjE4OGNkZGU0ZDlhYTQ2MTQyNDZhNDAxMTE0NDI2NjBh
NTc3Mzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC03NzAsNiArNzcwLDggQEAKIAkJQzU3NEEzNzcxMkU2MDk5RDAwMkRGRTk4
IC8qIFdlYkRyYWdDbGllbnRNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDNTU0RkZBMjEyRTRFOEVBMDAyRjIyQzAgLyogV2ViRHJhZ0NsaWVudE1h
Yy5tbSAqLzsgfTsKIAkJQzU3NEE1ODExMkU2NjY4MTAwMkRGRTk4IC8qIFBhc3RlYm9hcmRUeXBl
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzU3NEE1
N0YxMkU2NjY4MTAwMkRGRTk4IC8qIFBhc3RlYm9hcmRUeXBlcy5oICovOyB9OwogCQlDNTc0QTU4
MjEyRTY2NjgxMDAyREZFOTggLyogUGFzdGVib2FyZFR5cGVzLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzU3NEE1ODAxMkU2NjY4MTAwMkRGRTk4IC8q
IFBhc3RlYm9hcmRUeXBlcy5tbSAqLzsgfTsKKwkJQ0Q1QzY2QTAxMzRCOUQzODAwNEZFMkE4IC8q
IEluamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q1QzY2OUUxMzRCOUQzNjAwNEZFMkE4IC8q
IEluamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQuY3BwICovOyB9OworCQlDRDVDNjZB
MTEzNEI5RDM4MDA0RkUyQTggLyogSW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q1QzY2OUYx
MzRCOUQzNzAwNEZFMkE4IC8qIEluamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQuaCAq
LzsgfTsKIAkJQ0Q2Rjc1RjQxMzFCNjZEMDAwRDZCMjFFIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2Vy
UHJveHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0Q3M0JBM0UxMzFBMkU4QTAwRUVERUQyIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkuY3Bw
ICovOyB9OwogCQlDRDczQkE0NzEzMUFDQzlBMDBFRURFRDIgLyogV2ViRnVsbFNjcmVlbk1hbmFn
ZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRDczQkE0NTEzMUFDQzg4MDBFRURFRDIgLyogV2ViRnVsbFNjcmVl
bk1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCUNENzNCQTRFMTMxQUNE
QjcwMEVFREVEMiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDczQkE0ODEzMUFD
RDhFMDBFRURFRDIgLyogV2ViRnVsbFNjcmVlbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICov
OyB9OwpAQCAtMTY4Myw2ICsxNjg1LDggQEAKIAkJQzU1NEZGQTIxMkU0RThFQTAwMkYyMkMwIC8q
IFdlYkRyYWdDbGllbnRNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBXZWJEcmFnQ2xpZW50TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
NTc0QTU3RjEyRTY2NjgxMDAyREZFOTggLyogUGFzdGVib2FyZFR5cGVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhc3RlYm9hcmRUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDNTc0QTU4MDEyRTY2NjgxMDAyREZFOTggLyogUGFzdGVib2FyZFR5cGVz
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGFzdGVib2FyZFR5
cGVzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDVDNjY5RTEzNEI5RDM2MDA0
RkUyQTggLyogSW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVu
Q2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0Q1QzY2OUYxMzRCOUQz
NzAwNEZFMkE4IC8qIEluamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNs
aWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDczQkEzNzEzMUEyOUZFMDBF
RURFRDIgLyogV2ViRnVsbFNjcmVlbk1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gV2ViRnVsbFNjcmVlbk1hbmFnZXIuY3BwOyBwYXRoID0gRnVsbFNjcmVl
bi9XZWJGdWxsU2NyZWVuTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUNENzNCQTM4MTMxQTI5RkUwMEVFREVEMiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJGdWxsU2NyZWVuTWFuYWdlci5oOyBwYXRo
ID0gRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDRDczQkEzOTEzMUEyOUZFMDBFRURFRDIgLyogV2ViRnVsbFNjcmVlbk1hbmFn
ZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gV2ViRnVsbFNjcmVlbk1hbmFn
ZXIubWVzc2FnZXMuaW47IHBhdGggPSBGdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLm1l
c3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjg0MCw2ICsyODQ0LDgg
QEAKIAkJCQlCQzE0REY3NjEyMEI1Qjc5MDA4MjZDMEMgLyogSW5qZWN0ZWRCdW5kbGVTY3JpcHRX
b3JsZC5jcHAgKi8sCiAJCQkJQkMxNERGNzUxMjBCNUI3OTAwODI2QzBDIC8qIEluamVjdGVkQnVu
ZGxlU2NyaXB0V29ybGQuaCAqLywKIAkJCQlCQ0IwQjBERDEyMzA1QThDMDBCMTM0MUUgLyogSW5q
ZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUNvZGVycy5oICovLAorCQkJCUNENUM2NjlFMTM0QjlEMzYw
MDRGRTJBOCAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50LmNwcCAqLywKKwkJ
CQlDRDVDNjY5RjEzNEI5RDM3MDA0RkUyQTggLyogSW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVl
bkNsaWVudC5oICovLAogCQkJKTsKIAkJCXBhdGggPSBJbmplY3RlZEJ1bmRsZTsKIAkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0zNjY2LDYgKzM2NzIsNyBAQAogCQkJCTUxODM0NTkzMTM0
NTMyRTkwMDkyQjY5NiAvKiBXZWJJY29uRGF0YWJhc2VDbGllbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUUxODM5MzQ5MTM0Mjk3QTUwMDE4NDJFQyAvKiBUZXh0SW5wdXRTdGF0ZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQzBGQTUyNDMxMzQ1Njk0QTAwMjhFOEMyIC8qIExheWVyVHJlZUhvc3RDQU1h
Yy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0Q1QzY2QTExMzRCOUQzODAwNEZFMkE4IC8qIEluamVj
dGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtNDI5MSw2
ICs0Mjk4LDcgQEAKIAkJCQlGNkE5MDgxMzEzM0MyMDUxMDA4MkMzRjQgLyogV2ViQ29va2llTWFu
YWdlck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY2RDYzMkJDMTMzRDE5ODIwMDc0M0Q3NyAv
KiBXZWJDb29raWVNYW5hZ2VyUHJveHlNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTgzNDU5
MjEzNDUzMkU5MDA5MkI2OTYgLyogV2ViSWNvbkRhdGFiYXNlQ2xpZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUNENUM2NkEwMTM0QjlEMzgwMDRGRTJBOCAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VG
dWxsU2NyZWVuQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5j
cHAKaW5kZXggZTg1Njg3NjM2M2UwNzlkZDE5YmI2ZDA4M2IwYTI4Y2M5NmI2YzgwYy4uNDdmMWQ0
MmJhMzIzMDcwNWM0N2RmNjdiM2E0NDU4MjI5MzVhOTJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFn
ZXIuY3BwCkBAIC02Niw5ICs2Niw4IEBAIGJvb2wgV2ViRnVsbFNjcmVlbk1hbmFnZXI6OnN1cHBv
cnRzRnVsbFNjcmVlbihib29sIHdpdGhLZXlib2FyZCkKICAgICBpZiAoIW1fcGFnZS0+Y29yZVBh
Z2UoKS0+c2V0dGluZ3MoKS0+ZnVsbFNjcmVlbkVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgYm9vbCBzdXBwb3J0cyA9IHRydWU7Ci0gICAgbV9wYWdlLT5zZW5kU3luYyhN
ZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6U3VwcG9ydHNGdWxsU2NyZWVuKHdp
dGhLZXlib2FyZCksIHN1cHBvcnRzKTsKLSAgICByZXR1cm4gc3VwcG9ydHM7CisgICAgcmV0dXJu
IG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVGdWxsU2NyZWVuQ2xpZW50KCkuc3VwcG9ydHNGdWxsU2Ny
ZWVuKG1fcGFnZS5nZXQoKSwgd2l0aEtleWJvYXJkKTsKKwogfQogCiB2b2lkIFdlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyOjplbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdlYkNvcmU6OkVsZW1lbnQqIGVs
ZW1lbnQpCkBAIC03NiwxNCArNzUsMTQgQEAgdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlcjo6ZW50
ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50KQogICAgIEFT
U0VSVChlbGVtZW50KTsKICAgICBtX2VsZW1lbnQgPSBlbGVtZW50OwogICAgIG1faW5pdGlhbEZy
YW1lID0gbV9lbGVtZW50LT5zY3JlZW5SZWN0KCk7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpFbnRlckZ1bGxTY3JlZW4oKSk7CisgICAgbV9w
YWdlLT5pbmplY3RlZEJ1bmRsZUZ1bGxTY3JlZW5DbGllbnQoKS5lbnRlckZ1bGxTY3JlZW5Gb3JF
bGVtZW50KG1fcGFnZS5nZXQoKSwgZWxlbWVudCk7CiB9CiAKIHZvaWQgV2ViRnVsbFNjcmVlbk1h
bmFnZXI6OmV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50
KQogewogICAgIEFTU0VSVChlbGVtZW50KTsKICAgICBBU1NFUlQobV9lbGVtZW50ID09IGVsZW1l
bnQpOwotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94
eTo6RXhpdEZ1bGxTY3JlZW4oKSk7CisgICAgbV9wYWdlLT5pbmplY3RlZEJ1bmRsZUZ1bGxTY3Jl
ZW5DbGllbnQoKS5leGl0RnVsbFNjcmVlbkZvckVsZW1lbnQobV9wYWdlLmdldCgpLCBlbGVtZW50
KTsKIH0KIAogdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlcjo6YmVnYW5FbnRlckZ1bGxTY3JlZW5B
bmltYXRpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCmluZGV4IGEyOWEyYzIxM2Y1
OTU5YjMzOTk0MzJmZDBkOGU4NDRiNjBkYmU3ZDYuLjVhZjY2ZTY0ZTczNjNhODYzNmM5YjBjOTI2
MWU5MzkxMzhiN2Q3MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKQEAgLTI4LDYg
KzI4LDcgQEAKICNpbmNsdWRlICJXS0J1bmRsZVBhZ2VQcml2YXRlLmgiCiAKICNpbmNsdWRlICJJ
bmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdC5oIgorI2luY2x1ZGUgIkluamVjdGVkQnVuZGxl
Tm9kZUhhbmRsZS5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLQnVuZGxl
QVBJQ2FzdC5oIgogI2luY2x1ZGUgIldlYkltYWdlLmgiCkBAIC05Myw2ICs5NCw1NSBAQCB2b2lk
IFdLQnVuZGxlUGFnZVNldFVJQ2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRs
ZVBhZ2VVSUNsaWVudCogd2tDbAogICAgIHRvSW1wbChwYWdlUmVmKS0+aW5pdGlhbGl6ZUluamVj
dGVkQnVuZGxlVUlDbGllbnQod2tDbGllbnQpOwogfQogCisjaWYgZGVmaW5lZChFTkFCTEVfRlVM
TFNDUkVFTl9BUEkpICYmIEVOQUJMRV9GVUxMU0NSRUVOX0FQSQordm9pZCBXS0J1bmRsZVBhZ2VT
ZXRGdWxsU2NyZWVuQ2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZVBhZ2VG
dWxsU2NyZWVuQ2xpZW50KiB3a0NsaWVudCkKK3sKKyAgICBpZiAod2tDbGllbnQgJiYgd2tDbGll
bnQtPnZlcnNpb24pCisgICAgICAgIHJldHVybjsKKyAgICB0b0ltcGwocGFnZVJlZiktPmluaXRp
YWxpemVJbmplY3RlZEJ1bmRsZUZ1bGxTY3JlZW5DbGllbnQod2tDbGllbnQpOworfQorCit2b2lk
IFdLQnVuZGxlUGFnZVdpbGxFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdLQnVuZGxlUGFnZVJl
ZiBwYWdlUmVmLCBXS0J1bmRsZU5vZGVIYW5kbGVSZWYgZWxlbWVudFJlZikKK3sKKyAgICBXZWJD
b3JlOjpOb2RlKiBjb3JlTm9kZSA9IHRvSW1wbChlbGVtZW50UmVmKS0+Y29yZU5vZGUoKTsKKyAg
ICBpZiAoIWNvcmVOb2RlIHx8ICFjb3JlTm9kZS0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6RWxlbWVudCo+KGNvcmVOb2RlKTsKKyAgICBlbGVtZW50LT5kb2N1bWVudCgpLT53ZWJr
aXRXaWxsRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChlbGVtZW50KTsKK30KKwordm9pZCBXS0J1
bmRsZVBhZ2VEaWRFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdl
UmVmLCBXS0J1bmRsZU5vZGVIYW5kbGVSZWYgZWxlbWVudFJlZikKK3sKKyAgICBXZWJDb3JlOjpO
b2RlKiBjb3JlTm9kZSA9IHRvSW1wbChlbGVtZW50UmVmKS0+Y29yZU5vZGUoKTsKKyAgICBpZiAo
IWNvcmVOb2RlIHx8ICFjb3JlTm9kZS0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICByZXR1cm47
CisgICAgCisgICAgV2ViQ29yZTo6RWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PFdlYkNv
cmU6OkVsZW1lbnQqPihjb3JlTm9kZSk7CisgICAgZWxlbWVudC0+ZG9jdW1lbnQoKS0+d2Via2l0
RGlkRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChlbGVtZW50KTsKK30KKyNlbmRpZgorCit2b2lk
IFdLQnVuZGxlUGFnZVdpbGxFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoV0tCdW5kbGVQYWdlUmVm
IHBhZ2VSZWYsIFdLQnVuZGxlTm9kZUhhbmRsZVJlZiBlbGVtZW50UmVmKQoreworICAgIFdlYkNv
cmU6Ok5vZGUqIGNvcmVOb2RlID0gdG9JbXBsKGVsZW1lbnRSZWYpLT5jb3JlTm9kZSgpOworICAg
IGlmICghY29yZU5vZGUgfHwgIWNvcmVOb2RlLT5pc0VsZW1lbnROb2RlKCkpCisgICAgICAgIHJl
dHVybjsKKyAgICAKKyAgICBXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8
V2ViQ29yZTo6RWxlbWVudCo+KGNvcmVOb2RlKTsKKyAgICBlbGVtZW50LT5kb2N1bWVudCgpLT53
ZWJraXRXaWxsRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KGVsZW1lbnQpOworfQorCit2b2lkIFdL
QnVuZGxlUGFnZURpZEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChXS0J1bmRsZVBhZ2VSZWYgcGFn
ZVJlZiwgV0tCdW5kbGVOb2RlSGFuZGxlUmVmIGVsZW1lbnRSZWYpCit7CisgICAgV2ViQ29yZTo6
Tm9kZSogY29yZU5vZGUgPSB0b0ltcGwoZWxlbWVudFJlZiktPmNvcmVOb2RlKCk7CisgICAgaWYg
KCFjb3JlTm9kZSB8fCAhY29yZU5vZGUtPmlzRWxlbWVudE5vZGUoKSkKKyAgICAgICAgcmV0dXJu
OworICAgIAorICAgIFdlYkNvcmU6OkVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxXZWJD
b3JlOjpFbGVtZW50Kj4oY29yZU5vZGUpOworICAgIGVsZW1lbnQtPmRvY3VtZW50KCktPndlYmtp
dERpZEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChlbGVtZW50KTsKK30KKwogV0tCdW5kbGVQYWdl
R3JvdXBSZWYgV0tCdW5kbGVQYWdlR2V0UGFnZUdyb3VwKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVm
KQogewogICAgIHJldHVybiB0b0FQSSh0b0ltcGwocGFnZVJlZiktPnBhZ2VHcm91cCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlUGFnZS5oCmluZGV4IGUwMWY1MWY4YTQ5NzAzZjEyMjhlY2NjYTQ3Zjli
YmViZmY2NDM0MzYuLjBjYzk0NWVmMTFkNjE5MjgxMDhjMWFiYzkzYmY5OTc3N2FlNzJmOWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaApAQCAtMjQzLDggKzI0MywyOSBAQCBzdHJ1Y3QgV0tC
dW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQgewogfTsKIHR5cGVkZWYgc3RydWN0IFdLQnVuZGxl
UGFnZUNvbnRleHRNZW51Q2xpZW50IFdLQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50OwogCisj
aWYgZGVmaW5lZChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICYmIEVOQUJMRV9GVUxMU0NSRUVOX0FQ
SQorLy8gRnVsbCBTY3JlZW4gY2xpZW50Cit0eXBlZGVmIGJvb2wgKCpXS0J1bmRsZVBhZ2VTdXBw
b3J0c0Z1bGxTY3JlZW4pKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBib29sIHdpdGhLZXlib2FyZCk7
Cit0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZVBhZ2VFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KShX
S0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVOb2RlSGFuZGxlUmVmIGVsZW1lbnQpOwordHlw
ZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KShXS0J1bmRs
ZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVOb2RlSGFuZGxlUmVmIGVsZW1lbnQpOworCitzdHJ1Y3Qg
V0tCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudCB7CisgICAgaW50ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uOwor
ICAgIGNvbnN0IHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2xpZW50SW5mbzsKKyAgICBXS0J1bmRsZVBhZ2VTdXBwb3J0c0Z1bGxT
Y3JlZW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRzRnVsbFNj
cmVlbjsKKyAgICBXS0J1bmRsZVBhZ2VFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQ7CisgICAgV0tC
dW5kbGVQYWdlRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBleGl0RnVsbFNjcmVlbkZvckVsZW1lbnQ7Cit9OwordHlwZWRlZiBzdHJ1Y3QgV0tC
dW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudCBXS0J1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50Owor
CitXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VXaWxsRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVu
dChXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVOb2RlSGFuZGxlUmVmIGVsZW1lbnQpOwor
V0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlRGlkRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChX
S0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVOb2RlSGFuZGxlUmVmIGVsZW1lbnQpOworV0tf
RVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlV2lsbEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChXS0J1
bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVOb2RlSGFuZGxlUmVmIGVsZW1lbnQpOworV0tfRVhQ
T1JUIHZvaWQgV0tCdW5kbGVQYWdlRGlkRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdLQnVuZGxl
UGFnZVJlZiBwYWdlLCBXS0J1bmRsZU5vZGVIYW5kbGVSZWYgZWxlbWVudCk7CisjZW5kaWYKKwog
V0tfRVhQT1JUIFdLVHlwZUlEIFdLQnVuZGxlUGFnZUdldFR5cGVJRCgpOwotIAorCiBXS19FWFBP
UlQgdm9pZCBXS0J1bmRsZVBhZ2VTZXRDb250ZXh0TWVudUNsaWVudChXS0J1bmRsZVBhZ2VSZWYg
cGFnZSwgV0tCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQqIGNsaWVudCk7CiBXS19FWFBPUlQg
dm9pZCBXS0J1bmRsZVBhZ2VTZXRFZGl0b3JDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdL
QnVuZGxlUGFnZUVkaXRvckNsaWVudCogY2xpZW50KTsKIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxl
UGFnZVNldEZvcm1DbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlUGFnZUZvcm1D
bGllbnQqIGNsaWVudCk7CkBAIC0yNTIsNiArMjczLDEwIEBAIFdLX0VYUE9SVCB2b2lkIFdLQnVu
ZGxlUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxl
UGFnCiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VTZXRSZXNvdXJjZUxvYWRDbGllbnQoV0tC
dW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudCogY2xpZW50
KTsKIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZVNldFBvbGljeUNsaWVudChXS0J1bmRsZVBh
Z2VSZWYgcGFnZSwgV0tCdW5kbGVQYWdlUG9saWN5Q2xpZW50KiBjbGllbnQpOwogV0tfRVhQT1JU
IHZvaWQgV0tCdW5kbGVQYWdlU2V0VUlDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVu
ZGxlUGFnZVVJQ2xpZW50KiBjbGllbnQpOworICAgIAorI2lmIGRlZmluZWQoRU5BQkxFX0ZVTExT
Q1JFRU5fQVBJKSAmJiBFTkFCTEVfRlVMTFNDUkVFTl9BUEkKK1dLX0VYUE9SVCB2b2lkIFdLQnVu
ZGxlUGFnZVNldEZ1bGxTY3JlZW5DbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxl
UGFnZUZ1bGxTY3JlZW5DbGllbnQqIGNsaWVudCk7CisjZW5kaWYKIAogV0tfRVhQT1JUIFdLQnVu
ZGxlUGFnZUdyb3VwUmVmIFdLQnVuZGxlUGFnZUdldFBhZ2VHcm91cChXS0J1bmRsZVBhZ2VSZWYg
cGFnZSk7CiBXS19FWFBPUlQgV0tCdW5kbGVGcmFtZVJlZiBXS0J1bmRsZVBhZ2VHZXRNYWluRnJh
bWUoV0tCdW5kbGVQYWdlUmVmIHBhZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGY4MWExY2IzZDI2YTY0
MzgyZjk1NmY1YTIxOGU3MTk1YTA3ZGQzNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVl
bkNsaWVudC5jcHAKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKworI2luY2x1ZGUgIkluamVjdGVk
QnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQuaCIKKworI2luY2x1ZGUgIkluamVjdGVkQnVuZGxl
Tm9kZUhhbmRsZS5oIgorI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldLQnVuZGxl
QVBJQ2FzdC5oIgorI2luY2x1ZGUgIldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlNZXNzYWdlcy5o
IgorI2luY2x1ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0VsZW1lbnQuaD4KKwor
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitib29sIElu
amVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQ6OnN1cHBvcnRzRnVsbFNjcmVlbihXZWJQ
YWdlICpwYWdlLCBib29sIHdpdGhLZXlib2FyZCkKK3sKKyAgICBpZiAobV9jbGllbnQuc3VwcG9y
dHNGdWxsU2NyZWVuKSAKKyAgICAgICAgcmV0dXJuIG1fY2xpZW50LnN1cHBvcnRzRnVsbFNjcmVl
bih0b0FQSShwYWdlKSwgd2l0aEtleWJvYXJkKTsKKworICAgIGJvb2wgc3VwcG9ydHMgPSB0cnVl
OworICAgIHBhZ2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5
OjpTdXBwb3J0c0Z1bGxTY3JlZW4od2l0aEtleWJvYXJkKSwgc3VwcG9ydHMpOworICAgIHJldHVy
biBzdXBwb3J0czsKK30KKwordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50
OjplbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdlYlBhZ2UgKnBhZ2UsIFdlYkNvcmU6OkVsZW1l
bnQgKmVsZW1lbnQpCit7CisgICAgaWYgKG1fY2xpZW50LmVudGVyRnVsbFNjcmVlbkZvckVsZW1l
bnQpIHsKKyAgICAgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gbm9kZUhhbmRs
ZSA9IEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6Z2V0T3JDcmVhdGUoZWxlbWVudCk7CisgICAg
ICAgIG1fY2xpZW50LmVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQodG9BUEkocGFnZSksIHRvQVBJ
KG5vZGVIYW5kbGUuZ2V0KCkpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgcGFnZS0+c2VuZChNZXNz
YWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6RW50ZXJGdWxsU2NyZWVuKCkpOworfQor
Cit2b2lkIEluamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQ6OmV4aXRGdWxsU2NyZWVu
Rm9yRWxlbWVudChXZWJQYWdlICpwYWdlLCBXZWJDb3JlOjpFbGVtZW50ICplbGVtZW50KQorewor
ICAgIGlmIChtX2NsaWVudC5lbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KSB7CisgICAgICAgIFJl
ZlB0cjxJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU+IG5vZGVIYW5kbGUgPSBJbmplY3RlZEJ1bmRs
ZU5vZGVIYW5kbGU6OmdldE9yQ3JlYXRlKGVsZW1lbnQpOworICAgICAgICBtX2NsaWVudC5lbnRl
ckZ1bGxTY3JlZW5Gb3JFbGVtZW50KHRvQVBJKHBhZ2UpLCB0b0FQSShub2RlSGFuZGxlLmdldCgp
KSk7CisgICAgfSBlbHNlCisgICAgICAgIHBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyUHJveHk6OkV4aXRGdWxsU2NyZWVuKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
RnVsbFNjcmVlbkNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWVi
YzRiNDc2OWI4ZDA2ZTgzZDViMDBiYmIwYTc3YmI2ODgwMWVjMwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlRnVsbFNjcmVlbkNsaWVudC5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIEluamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnRfaAorI2RlZmluZSBJbmplY3Rl
ZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50X2gKKworI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQ
SSkKKworI2luY2x1ZGUgIkFQSUNsaWVudC5oIgorI2luY2x1ZGUgIldLQnVuZGxlUGFnZS5oIgor
I2luY2x1ZGUgIldlYkV2ZW50LmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworY2xhc3MgRWxlbWVudDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIFdlYlBhZ2U7CisKK2NsYXNzIEluamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGll
bnQgOiBwdWJsaWMgQVBJQ2xpZW50PFdLQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQ+IHsKK3B1
YmxpYzoKKyAgICBib29sIHN1cHBvcnRzRnVsbFNjcmVlbihXZWJQYWdlKiwgYm9vbCB3aXRoS2V5
Ym9hcmQpOworICAgIHZvaWQgZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChXZWJQYWdlKiwgV2Vi
Q29yZTo6RWxlbWVudCopOworICAgIHZvaWQgZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdlYlBh
Z2UqLCBXZWJDb3JlOjpFbGVtZW50Kik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
I2VuZGlmIC8vIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKworI2VuZGlmIC8vIEluamVjdGVkQnVu
ZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGUwMmU3MTVjMDJkZTVhNjUwNjA0MGJkZDlmYjJjNDFh
MTBiMzEwMTIuLmQxODMwODU2NjUyMzIyYTk0Yzk5MmViNTg2ZDE1ODI2MDAyYWUxNDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTI4OCw2
ICsyODgsMTMgQEAgdm9pZCBXZWJQYWdlOjppbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVVSUNsaWVu
dChXS0J1bmRsZVBhZ2VVSUNsaWVudCogY2xpZW50KQogICAgIG1fdWlDbGllbnQuaW5pdGlhbGl6
ZShjbGllbnQpOwogfQogCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQordm9pZCBXZWJQYWdl
Ojppbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVGdWxsU2NyZWVuQ2xpZW50KFdLQnVuZGxlUGFnZUZ1
bGxTY3JlZW5DbGllbnQqIGNsaWVudCkKK3sKKyAgICBtX2Z1bGxTY3JlZW5DbGllbnQuaW5pdGlh
bGl6ZShjbGllbnQpOworfQorI2VuZGlmCisKIFBhc3NSZWZQdHI8UGx1Z2luPiBXZWJQYWdlOjpj
cmVhdGVQbHVnaW4oY29uc3QgUGx1Z2luOjpQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewogICAg
IFN0cmluZyBwbHVnaW5QYXRoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKaW5kZXggYmFjZjcxZjk5Mjg1ZTllNGI0YjA1MWM1Nzc2NzExZTMzZWJiZjhjMy4u
N2ZlNzIyMTZiZGNiMzdiNTQzMjZkZmQ0NTdmYjQwMjZiMDRhMzY4YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5j
bHVkZSAiSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuaCIKICNpbmNsdWRlICJJ
bmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRs
ZVBhZ2VGb3JtQ2xpZW50LmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVl
bkNsaWVudC5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oIgog
I2luY2x1ZGUgIkluamVjdGVkQnVuZGxlUGFnZVBvbGljeUNsaWVudC5oIgogI2luY2x1ZGUgIklu
amVjdGVkQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudC5oIgpAQCAtMTk0LDYgKzE5NSw5IEBA
IHB1YmxpYzoKICAgICB2b2lkIGluaXRpYWxpemVJbmplY3RlZEJ1bmRsZVBvbGljeUNsaWVudChX
S0J1bmRsZVBhZ2VQb2xpY3lDbGllbnQqKTsKICAgICB2b2lkIGluaXRpYWxpemVJbmplY3RlZEJ1
bmRsZVJlc291cmNlTG9hZENsaWVudChXS0J1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQqKTsK
ICAgICB2b2lkIGluaXRpYWxpemVJbmplY3RlZEJ1bmRsZVVJQ2xpZW50KFdLQnVuZGxlUGFnZVVJ
Q2xpZW50Kik7CisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAgIHZvaWQgaW5pdGlhbGl6
ZUluamVjdGVkQnVuZGxlRnVsbFNjcmVlbkNsaWVudChXS0J1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xp
ZW50Kik7CisjZW5kaWYKIAogICAgIEluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50
JiBpbmplY3RlZEJ1bmRsZUNvbnRleHRNZW51Q2xpZW50KCkgeyByZXR1cm4gbV9jb250ZXh0TWVu
dUNsaWVudDsgfQogICAgIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudCYgaW5qZWN0ZWRC
dW5kbGVFZGl0b3JDbGllbnQoKSB7IHJldHVybiBtX2VkaXRvckNsaWVudDsgfQpAQCAtMjAyLDYg
KzIwNiw5IEBAIHB1YmxpYzoKICAgICBJbmplY3RlZEJ1bmRsZVBhZ2VQb2xpY3lDbGllbnQmIGlu
amVjdGVkQnVuZGxlUG9saWN5Q2xpZW50KCkgeyByZXR1cm4gbV9wb2xpY3lDbGllbnQ7IH0KICAg
ICBJbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQmIGluamVjdGVkQnVuZGxlUmVz
b3VyY2VMb2FkQ2xpZW50KCkgeyByZXR1cm4gbV9yZXNvdXJjZUxvYWRDbGllbnQ7IH0KICAgICBJ
bmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudCYgaW5qZWN0ZWRCdW5kbGVVSUNsaWVudCgpIHsgcmV0
dXJuIG1fdWlDbGllbnQ7IH0KKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgSW5qZWN0
ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudCYgaW5qZWN0ZWRCdW5kbGVGdWxsU2NyZWVuQ2xp
ZW50KCkgeyByZXR1cm4gbV9mdWxsU2NyZWVuQ2xpZW50OyB9CisjZW5kaWYKIAogICAgIGJvb2wg
ZmluZFN0cmluZ0Zyb21JbmplY3RlZEJ1bmRsZShjb25zdCBTdHJpbmcmLCBGaW5kT3B0aW9ucyk7
CiAKQEAgLTU4NCw2ICs1OTEsOSBAQCBwcml2YXRlOgogICAgIEluamVjdGVkQnVuZGxlUGFnZVBv
bGljeUNsaWVudCBtX3BvbGljeUNsaWVudDsKICAgICBJbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJj
ZUxvYWRDbGllbnQgbV9yZXNvdXJjZUxvYWRDbGllbnQ7CiAgICAgSW5qZWN0ZWRCdW5kbGVQYWdl
VUlDbGllbnQgbV91aUNsaWVudDsKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgSW5q
ZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudCBtX2Z1bGxTY3JlZW5DbGllbnQ7CisjZW5k
aWYKIAogI2lmIEVOQUJMRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAgIFdlYkNvcmU6OkludFNp
emUgbV9yZXNpemVzVG9Db250ZW50c0xheW91dFNpemU7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYmQ0YTE3MmE5ZDAwY2JhZmUzNWE4YTcxZWVl
YWE3NjU4ZDg1NWQ0YS4uNzAyY2Y3MzI2NGQ4NTYwZjg3MDdiZWQyMjBjYTlkZWFmM2NhZGI1NCAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDIyIEBACisyMDExLTA0LTA1ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYktpdDI6
IFdLVFIgc2hvdWxkIHN1cHBvcnQgV2ViS2l0MiBmdWxsIHNjcmVlbiBBUElzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjMxOAorCisgICAgICAgIFJl
c3BvbmQgdG8gZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudCgpIGFuZCBleGl0RnVsbFNjcmVlbkZv
ckVsZW1lbnQoKSwgYWxsb3dpbmcgCisgICAgICAgIFdLVFIgdG8gdGVzdCB0aGUgTGF5b3V0VGVz
dC9mdWxsc2NyZWVuLyB0ZXN0cy4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRC
dW5kbGVQYWdlOjpJbmplY3RlZEJ1bmRsZVBhZ2UpOiBBZGQgc3VwcG9ydCBmb3IgV0tCdW5kbGVQ
YWdlRnVsbFNjcmVlbkNsaWVudC4KKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpz
dXBwb3J0c0Z1bGxTY3JlZW4pOiBBZGRlZC4KKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQ
YWdlOjplbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KTogQWRkZWQuCisgICAgICAgIChXVFI6Oklu
amVjdGVkQnVuZGxlUGFnZTo6ZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KTogQWRkZWQuCisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2Uu
aDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMpOiBF
bmFibGUgdGhlIGZ1bGwgc2NyZWVuIHByZWZlcmVuY2UuCisKIDIwMTEtMDQtMDUgIFNoZXJpZmYg
Qm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQs
IHJvbGxpbmcgb3V0IHI4Mjk3OCwgcjgyOTk5LCBhbmQgcjgzMDAxLgpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3Bw
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2UuY3BwCmluZGV4IDQ3MTU1MmY0NWFmMDZmZTFmNDI4ZTZlNjMxZDMxZDRhYmQ0ZjA4OWIuLmYz
Y2VkODhiNTBmMjQwYTgxNTNjZjFlNjQ5ZjkwZDFhMzVmMWUwNDkgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
UGFnZS5jcHAKQEAgLTIzNCw2ICsyMzQsMTcgQEAgSW5qZWN0ZWRCdW5kbGVQYWdlOjpJbmplY3Rl
ZEJ1bmRsZVBhZ2UoV0tCdW5kbGVQYWdlUmVmIHBhZ2UpCiAgICAgICAgIGRpZENoYW5nZVNlbGVj
dGlvbgogICAgIH07CiAgICAgV0tCdW5kbGVQYWdlU2V0RWRpdG9yQ2xpZW50KG1fcGFnZSwgJmVk
aXRvckNsaWVudCk7CisKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgV0tCdW5kbGVQ
YWdlRnVsbFNjcmVlbkNsaWVudCBmdWxsU2NyZWVuQ2xpZW50ID0geworICAgICAgICAwLAorICAg
ICAgICB0aGlzLAorICAgICAgICBzdXBwb3J0c0Z1bGxTY3JlZW4sCisgICAgICAgIGVudGVyRnVs
bFNjcmVlbkZvckVsZW1lbnQsCisgICAgICAgIGV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudCwKKyAg
ICB9OworICAgIFdLQnVuZGxlUGFnZVNldEZ1bGxTY3JlZW5DbGllbnQobV9wYWdlLCAmZnVsbFNj
cmVlbkNsaWVudCk7CisjZW5kaWYKIH0KIAogSW5qZWN0ZWRCdW5kbGVQYWdlOjp+SW5qZWN0ZWRC
dW5kbGVQYWdlKCkKQEAgLTkyMSw2ICs5MzIsMjggQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6
OmRpZENoYW5nZVNlbGVjdGlvbihXS1N0cmluZ1JlZiBub3RpZmljYXRpb25OYW1lKQogICAgICAg
ICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkub3MoKSA8PCAiRURJVElORyBERUxFR0FURTogd2Vi
Vmlld0RpZENoYW5nZVNlbGVjdGlvbjoiIDw8IG5vdGlmaWNhdGlvbk5hbWUgPDwgIlxuIjsKIH0K
IAorI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKK2Jvb2wgSW5qZWN0ZWRCdW5kbGVQYWdlOjpz
dXBwb3J0c0Z1bGxTY3JlZW4oV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIGJvb2wgd2l0aEtleWJv
YXJkKQoreworICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5vcygpIDw8ICJzdXBwb3J0c0Z1
bGxTY3JlZW4oKSA9PSB0cnVlXG4iOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIEluamVj
dGVkQnVuZGxlUGFnZTo6ZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChXS0J1bmRsZVBhZ2VSZWYg
cGFnZVJlZiwgV0tCdW5kbGVOb2RlSGFuZGxlUmVmIGVsZW1lbnRSZWYpCit7CisgICAgSW5qZWN0
ZWRCdW5kbGU6OnNoYXJlZCgpLm9zKCkgPDwgImVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoKVxu
IjsKKyAgICBXS0J1bmRsZVBhZ2VXaWxsRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChwYWdlUmVm
LCBlbGVtZW50UmVmKTsKKyAgICBXS0J1bmRsZVBhZ2VEaWRFbnRlckZ1bGxTY3JlZW5Gb3JFbGVt
ZW50KHBhZ2VSZWYsIGVsZW1lbnRSZWYpOworfQorCit2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6
ZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRs
ZU5vZGVIYW5kbGVSZWYgZWxlbWVudFJlZikKK3sKKyAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVk
KCkub3MoKSA8PCAiZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KClcbiI7CisgICAgV0tCdW5kbGVQ
YWdlV2lsbEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChwYWdlUmVmLCBlbGVtZW50UmVmKTsKKyAg
ICBXS0J1bmRsZVBhZ2VEaWRFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQocGFnZVJlZiwgZWxlbWVu
dFJlZik7Cit9CisjZW5kaWYKKwogc3RhdGljIGJvb2wgY29tcGFyZUJ5VGFyZ2V0TmFtZShXS0J1
bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW1SZWYgaXRlbTEsIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0
SXRlbVJlZiBpdGVtMikKIHsKICAgICByZXR1cm4gdG9TVEQoYWRvcHRXSyhXS0J1bmRsZUJhY2tG
b3J3YXJkTGlzdEl0ZW1Db3B5VGFyZ2V0KGl0ZW0xKSkpIDwgdG9TVEQoYWRvcHRXSyhXS0J1bmRs
ZUJhY2tGb3J3YXJkTGlzdEl0ZW1Db3B5VGFyZ2V0KGl0ZW0yKSkpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaCBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
LmgKaW5kZXggMmMzZTlkZjNkYjk4OTYzNjk1YzNlZWE2N2QyYTNkNTljZTlhNTBlNS4uODNjOTNj
NDAxZjZkMGI0MDFmMDQ0ZjUwYjcwZTYwYzM1OWZiYzhjYSAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5o
CkBAIC0xMDYsNiArMTA2LDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsUnVuSmF2YVNjcmlw
dENvbmZpcm0oV0tTdHJpbmdSZWYgbWVzc2FnZSwgV0tCdW5kbGVGcmFtZVJlZik7CiAgICAgdm9p
ZCB3aWxsUnVuSmF2YVNjcmlwdFByb21wdChXS1N0cmluZ1JlZiBtZXNzYWdlLCBXS1N0cmluZ1Jl
ZiBkZWZhdWx0VmFsdWUsIFdLQnVuZGxlRnJhbWVSZWYpOwogCisjaWYgRU5BQkxFKEZVTExTQ1JF
RU5fQVBJKQorICAgIC8vIEZ1bGwgU2NyZWVuIGNsaWVudAorICAgIHN0YXRpYyBib29sIHN1cHBv
cnRzRnVsbFNjcmVlbihXS0J1bmRsZVBhZ2VSZWYsIGJvb2wgd2l0aEtleWJvYXJkKTsKKyAgICBz
dGF0aWMgdm9pZCBlbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdLQnVuZGxlUGFnZVJlZiwgV0tC
dW5kbGVOb2RlSGFuZGxlUmVmIGVsZW1lbnQpOworICAgIHN0YXRpYyB2b2lkIGV4aXRGdWxsU2Ny
ZWVuRm9yRWxlbWVudChXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlTm9kZUhhbmRsZVJlZiBlbGVt
ZW50KTsKKyNlbmRpZgorCiAgICAgLy8gRWRpdG9yIGNsaWVudAogICAgIHN0YXRpYyBib29sIHNo
b3VsZEJlZ2luRWRpdGluZyhXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlUmFuZ2VIYW5kbGVSZWYs
IGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogICAgIHN0YXRpYyBib29sIHNob3VsZEVuZEVkaXRp
bmcoV0tCdW5kbGVQYWdlUmVmLCBXS0J1bmRsZVJhbmdlSGFuZGxlUmVmLCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5k
ZXggNDIzMzFkYWI5MzQ5MDUwMDJhOGNmNDc1ZjFiYjMzZjkyYTZlY2M5Zi4uZjdiMTZhMmVlM2Jl
MGYzNjdhY2Q2NWIwMjdhZWY3Y2Q5ZjFiOGI1MSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5jcHAKQEAgLTM1OCw2ICszNTgsOSBAQCBib29sIFRlc3RDb250cm9sbGVy
OjpyZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKCkKICAgICBXS1ByZWZlcmVuY2VzU2V0RE9N
UGFzdGVBbGxvd2VkKHByZWZlcmVuY2VzLCB0cnVlKTsKICAgICBXS1ByZWZlcmVuY2VzU2V0VW5p
dmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzQWxsb3dlZChwcmVmZXJlbmNlcywgdHJ1ZSk7CiAgICAg
V0tQcmVmZXJlbmNlc1NldEZpbGVBY2Nlc3NGcm9tRmlsZVVSTHNBbGxvd2VkKHByZWZlcmVuY2Vz
LCB0cnVlKTsKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgV0tQcmVmZXJlbmNlc1Nl
dEZ1bGxTY3JlZW5FbmFibGVkKHByZWZlcmVuY2VzLCB0cnVlKTsKKyNlbmRpZgogCiAgICAgc3Rh
dGljIFdLU3RyaW5nUmVmIHN0YW5kYXJkRm9udEZhbWlseSA9IFdLU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKCJUaW1lcyIpOwogICAgIHN0YXRpYyBXS1N0cmluZ1JlZiBjdXJzaXZlRm9udEZh
bWlseSA9IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJBcHBsZSBDaGFuY2VyeSIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88366</attachid>
            <date>2011-04-05 22:11:20 -0700</date>
            <delta_ts>2011-04-12 22:23:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56318-20110405221118.patch</filename>
            <type>text/plain</type>
            <size>30380</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODMwMTUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmZWZkYzU4Zjk1M2U0ZjQ0ZjllNjgw
OGYwNjQyOGE5MmI1MDExZGY4Li4zNDJjZTY1ZDViNDlmMWRkOGZhNzQ3ODQxOTVjN2RjYzZhODdm
ODE0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDQtMDUgIEplciBOb2JsZSAgPGplci5u
b2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgV2ViS2l0MjogV0tUUiBzaG91bGQgc3VwcG9ydCBXZWJLaXQyIGZ1bGwgc2NyZWVu
IEFQSXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2
MzE4CisKKyAgICAgICAgV0tUUiBkb2VzIG5vdCBzdXBwb3J0IHRoZSBldmVudFNlbmRlci5rZXlE
b3duKCkgbWV0aG9kLCBzbyB1c2UgbW91c2VEb3duKCkgCisgICAgICAgIGluIHRob3NlIGNhc2Vz
IHRoYXQga2V5RG93bigpIGRvZXMgbm90IGV4aXN0LgorCisgICAgICAgICogZnVsbHNjcmVlbi9m
dWxsLXNjcmVlbi10ZXN0LmpzOgorICAgICAgICAocnVuV2l0aEtleURvd24uZG9jdW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChydW5XaXRoS2V5RG93bik6CisKIDIwMTEtMDQtMDUg
IENoYW5nIFNodSAgPGNzaHVAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJp
biBBZGxlci4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4t
dGVzdC5qcyBiL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tdGVzdC5qcwppbmRl
eCBhYzk0MDkxMjlhMTc3NjRkZDRhYjJkZjAxODc0YjZhZmM2NTk4YWNkLi4xNDY2MDExYmRiOWQ0
YmIyYWMzODJlN2Y4OWNkZGM4ZWZjZTBkOWI2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mdWxs
c2NyZWVuL2Z1bGwtc2NyZWVuLXRlc3QuanMKKysrIGIvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9m
dWxsLXNjcmVlbi10ZXN0LmpzCkBAIC0xMCw5ICsxMCwxNCBAQCBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7CiAKIGZ1bmN0aW9uIHJ1bldpdGhLZXlEb3duKGZuKSAKIHsKLSAgICBk
b2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlwcmVzcycsIGZ1bmN0aW9uKCkgeyBmbigpOyB9
LCBmYWxzZSk7CisgICAgLy8gRklYTUU6IFdLVFIgZG9lcyBub3QgeWV0IHN1cHBvcnQgdGhlIGtl
eURvd24oKSBtZXNzYWdlLiAgRG8gYSBtb3VzZURvd24gaGVyZQorICAgIC8vIGluc3RlYWQgdW50
aWwga2V5RG93biBzdXBwb3J0IGlzIGFkZGVkLgorICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVu
ZXIoZXZlbnRTZW5kZXIua2V5RG93biA/ICdrZXlwcmVzcycgOiAnbW91c2Vkb3duJywgZnVuY3Rp
b24oKSB7IGZuKCk7IH0sIGZhbHNlKTsKICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7Ci0gICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oIiAiLCBbXSk7CisgICAgICAgIGlm
IChldmVudFNlbmRlci5rZXlEb3duKQorICAgICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigi
ICIsIFtdKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3du
KCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZjcwYjIxNTVjNjhkN2YwOGY1NzcxNDE1MGM3
MmZmY2ZkMWNlZGRlOS4uMzJjODJlYzM5OWE5Njg4Y2U2NDYyZjdlOTdhYjUwOGYwODYyMjYwYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDExLTA0LTA1ICBKZXIgTm9ibGUgIDxqZXIu
bm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFdlYktpdDI6IFdLVFIgc2hvdWxkIHN1cHBvcnQgV2ViS2l0MiBmdWxsIHNjcmVl
biBBUElzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
NjMxOAorCisgICAgICAgIEFkZCBhIG5ldyBXS0J1bmRsZVBhZ2UgQVBJIGZvciBGdWxsIFNjcmVl
biBldmVudHMsIGFuZCBtb3ZlIHNvbWUgb2YgdGhlIGltcGxlbWVudGF0aW9uCisgICAgICAgIG9m
IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyIGludG8gdGhlIG5ldyBJbmplY3RlZEJ1bmRsZVBhZ2VGdWxs
U2NyZWVuQ2xpZW50IGNsYXNzLCBzbyB0aGF0CisgICAgICAgIHRoZSBkZWZhdWx0IGJlaGF2aW9y
IGNhbiBiZSBvdmVycmlkZGVuIGJ5IGEgV0tCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudC4KKwor
ICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNGdWxsU2NyZWVuKTogTW92ZWQg
Y29udGVudHMgaW50byBJbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50LgorICAgICAg
ICAoV2ViS2l0OjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6ZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVu
dCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6ZXhpdEZ1
bGxTY3JlZW5Gb3JFbGVtZW50KTogRGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwOgorICAgICAgICAoV0tCdW5kbGVQYWdlU2V0
RnVsbFNjcmVlbkNsaWVudCk6IEFkZGVkLgorICAgICAgICAoV0tCdW5kbGVQYWdlV2lsbEVudGVy
RnVsbFNjcmVlbkZvckVsZW1lbnQpOiBBZGRlZC4KKyAgICAgICAgKFdLQnVuZGxlUGFnZURpZEVu
dGVyRnVsbFNjcmVlbkZvckVsZW1lbnQpOiBBZGRlZC4KKyAgICAgICAgKFdLQnVuZGxlUGFnZVdp
bGxFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQpOiBBZGRlZC4KKyAgICAgICAgKFdLQnVuZGxlUGFn
ZURpZEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudCk6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50LmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5D
bGllbnQ6OnN1cHBvcnRzRnVsbFNjcmVlbik6IEFkZGVkLiAKKyAgICAgICAgKFdlYktpdDo6SW5q
ZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudDo6ZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVu
dCk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVu
Q2xpZW50OjpleGl0RnVsbFNjcmVlbkZvckVsZW1lbnQpOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQu
aDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjppbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVGdWxsU2NyZWVu
Q2xpZW50KTogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aW5qZWN0ZWRCdW5kbGVGdWxsU2NyZWVuQ2xpZW50
KTogQWRkZWQuCisKIDIwMTEtMDQtMDUgIENoYW5nIFNodSAgPGNzaHVAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dl
YktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhOTUzMzQ3MGI3YWEyYTYwNmY2
OTBhNzM4YjM5NWFiMGEwOGM0MGFlLi5hMjE4OGNkZGU0ZDlhYTQ2MTQyNDZhNDAxMTE0NDI2NjBh
NTc3Mzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC03NzAsNiArNzcwLDggQEAKIAkJQzU3NEEzNzcxMkU2MDk5RDAwMkRGRTk4
IC8qIFdlYkRyYWdDbGllbnRNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDNTU0RkZBMjEyRTRFOEVBMDAyRjIyQzAgLyogV2ViRHJhZ0NsaWVudE1h
Yy5tbSAqLzsgfTsKIAkJQzU3NEE1ODExMkU2NjY4MTAwMkRGRTk4IC8qIFBhc3RlYm9hcmRUeXBl
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzU3NEE1
N0YxMkU2NjY4MTAwMkRGRTk4IC8qIFBhc3RlYm9hcmRUeXBlcy5oICovOyB9OwogCQlDNTc0QTU4
MjEyRTY2NjgxMDAyREZFOTggLyogUGFzdGVib2FyZFR5cGVzLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzU3NEE1ODAxMkU2NjY4MTAwMkRGRTk4IC8q
IFBhc3RlYm9hcmRUeXBlcy5tbSAqLzsgfTsKKwkJQ0Q1QzY2QTAxMzRCOUQzODAwNEZFMkE4IC8q
IEluamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q1QzY2OUUxMzRCOUQzNjAwNEZFMkE4IC8q
IEluamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQuY3BwICovOyB9OworCQlDRDVDNjZB
MTEzNEI5RDM4MDA0RkUyQTggLyogSW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q1QzY2OUYx
MzRCOUQzNzAwNEZFMkE4IC8qIEluamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQuaCAq
LzsgfTsKIAkJQ0Q2Rjc1RjQxMzFCNjZEMDAwRDZCMjFFIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2Vy
UHJveHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0Q3M0JBM0UxMzFBMkU4QTAwRUVERUQyIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkuY3Bw
ICovOyB9OwogCQlDRDczQkE0NzEzMUFDQzlBMDBFRURFRDIgLyogV2ViRnVsbFNjcmVlbk1hbmFn
ZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRDczQkE0NTEzMUFDQzg4MDBFRURFRDIgLyogV2ViRnVsbFNjcmVl
bk1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCUNENzNCQTRFMTMxQUNE
QjcwMEVFREVEMiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDczQkE0ODEzMUFD
RDhFMDBFRURFRDIgLyogV2ViRnVsbFNjcmVlbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICov
OyB9OwpAQCAtMTY4Myw2ICsxNjg1LDggQEAKIAkJQzU1NEZGQTIxMkU0RThFQTAwMkYyMkMwIC8q
IFdlYkRyYWdDbGllbnRNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBXZWJEcmFnQ2xpZW50TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
NTc0QTU3RjEyRTY2NjgxMDAyREZFOTggLyogUGFzdGVib2FyZFR5cGVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhc3RlYm9hcmRUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDNTc0QTU4MDEyRTY2NjgxMDAyREZFOTggLyogUGFzdGVib2FyZFR5cGVz
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGFzdGVib2FyZFR5
cGVzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDVDNjY5RTEzNEI5RDM2MDA0
RkUyQTggLyogSW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVu
Q2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0Q1QzY2OUYxMzRCOUQz
NzAwNEZFMkE4IC8qIEluamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNs
aWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDczQkEzNzEzMUEyOUZFMDBF
RURFRDIgLyogV2ViRnVsbFNjcmVlbk1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gV2ViRnVsbFNjcmVlbk1hbmFnZXIuY3BwOyBwYXRoID0gRnVsbFNjcmVl
bi9XZWJGdWxsU2NyZWVuTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUNENzNCQTM4MTMxQTI5RkUwMEVFREVEMiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJGdWxsU2NyZWVuTWFuYWdlci5oOyBwYXRo
ID0gRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDRDczQkEzOTEzMUEyOUZFMDBFRURFRDIgLyogV2ViRnVsbFNjcmVlbk1hbmFn
ZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gV2ViRnVsbFNjcmVlbk1hbmFn
ZXIubWVzc2FnZXMuaW47IHBhdGggPSBGdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLm1l
c3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjg0MCw2ICsyODQ0LDgg
QEAKIAkJCQlCQzE0REY3NjEyMEI1Qjc5MDA4MjZDMEMgLyogSW5qZWN0ZWRCdW5kbGVTY3JpcHRX
b3JsZC5jcHAgKi8sCiAJCQkJQkMxNERGNzUxMjBCNUI3OTAwODI2QzBDIC8qIEluamVjdGVkQnVu
ZGxlU2NyaXB0V29ybGQuaCAqLywKIAkJCQlCQ0IwQjBERDEyMzA1QThDMDBCMTM0MUUgLyogSW5q
ZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUNvZGVycy5oICovLAorCQkJCUNENUM2NjlFMTM0QjlEMzYw
MDRGRTJBOCAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50LmNwcCAqLywKKwkJ
CQlDRDVDNjY5RjEzNEI5RDM3MDA0RkUyQTggLyogSW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVl
bkNsaWVudC5oICovLAogCQkJKTsKIAkJCXBhdGggPSBJbmplY3RlZEJ1bmRsZTsKIAkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0zNjY2LDYgKzM2NzIsNyBAQAogCQkJCTUxODM0NTkzMTM0
NTMyRTkwMDkyQjY5NiAvKiBXZWJJY29uRGF0YWJhc2VDbGllbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUUxODM5MzQ5MTM0Mjk3QTUwMDE4NDJFQyAvKiBUZXh0SW5wdXRTdGF0ZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQzBGQTUyNDMxMzQ1Njk0QTAwMjhFOEMyIC8qIExheWVyVHJlZUhvc3RDQU1h
Yy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0Q1QzY2QTExMzRCOUQzODAwNEZFMkE4IC8qIEluamVj
dGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtNDI5MSw2
ICs0Mjk4LDcgQEAKIAkJCQlGNkE5MDgxMzEzM0MyMDUxMDA4MkMzRjQgLyogV2ViQ29va2llTWFu
YWdlck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY2RDYzMkJDMTMzRDE5ODIwMDc0M0Q3NyAv
KiBXZWJDb29raWVNYW5hZ2VyUHJveHlNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTgzNDU5
MjEzNDUzMkU5MDA5MkI2OTYgLyogV2ViSWNvbkRhdGFiYXNlQ2xpZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUNENUM2NkEwMTM0QjlEMzgwMDRGRTJBOCAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VG
dWxsU2NyZWVuQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5j
cHAKaW5kZXggZTg1Njg3NjM2M2UwNzlkZDE5YmI2ZDA4M2IwYTI4Y2M5NmI2YzgwYy4uNDdmMWQ0
MmJhMzIzMDcwNWM0N2RmNjdiM2E0NDU4MjI5MzVhOTJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFn
ZXIuY3BwCkBAIC02Niw5ICs2Niw4IEBAIGJvb2wgV2ViRnVsbFNjcmVlbk1hbmFnZXI6OnN1cHBv
cnRzRnVsbFNjcmVlbihib29sIHdpdGhLZXlib2FyZCkKICAgICBpZiAoIW1fcGFnZS0+Y29yZVBh
Z2UoKS0+c2V0dGluZ3MoKS0+ZnVsbFNjcmVlbkVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgYm9vbCBzdXBwb3J0cyA9IHRydWU7Ci0gICAgbV9wYWdlLT5zZW5kU3luYyhN
ZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6U3VwcG9ydHNGdWxsU2NyZWVuKHdp
dGhLZXlib2FyZCksIHN1cHBvcnRzKTsKLSAgICByZXR1cm4gc3VwcG9ydHM7CisgICAgcmV0dXJu
IG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVGdWxsU2NyZWVuQ2xpZW50KCkuc3VwcG9ydHNGdWxsU2Ny
ZWVuKG1fcGFnZS5nZXQoKSwgd2l0aEtleWJvYXJkKTsKKwogfQogCiB2b2lkIFdlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyOjplbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdlYkNvcmU6OkVsZW1lbnQqIGVs
ZW1lbnQpCkBAIC03NiwxNCArNzUsMTQgQEAgdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlcjo6ZW50
ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50KQogICAgIEFT
U0VSVChlbGVtZW50KTsKICAgICBtX2VsZW1lbnQgPSBlbGVtZW50OwogICAgIG1faW5pdGlhbEZy
YW1lID0gbV9lbGVtZW50LT5zY3JlZW5SZWN0KCk7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpFbnRlckZ1bGxTY3JlZW4oKSk7CisgICAgbV9w
YWdlLT5pbmplY3RlZEJ1bmRsZUZ1bGxTY3JlZW5DbGllbnQoKS5lbnRlckZ1bGxTY3JlZW5Gb3JF
bGVtZW50KG1fcGFnZS5nZXQoKSwgZWxlbWVudCk7CiB9CiAKIHZvaWQgV2ViRnVsbFNjcmVlbk1h
bmFnZXI6OmV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50
KQogewogICAgIEFTU0VSVChlbGVtZW50KTsKICAgICBBU1NFUlQobV9lbGVtZW50ID09IGVsZW1l
bnQpOwotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94
eTo6RXhpdEZ1bGxTY3JlZW4oKSk7CisgICAgbV9wYWdlLT5pbmplY3RlZEJ1bmRsZUZ1bGxTY3Jl
ZW5DbGllbnQoKS5leGl0RnVsbFNjcmVlbkZvckVsZW1lbnQobV9wYWdlLmdldCgpLCBlbGVtZW50
KTsKIH0KIAogdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlcjo6YmVnYW5FbnRlckZ1bGxTY3JlZW5B
bmltYXRpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCmluZGV4IGEyOWEyYzIxM2Y1
OTU5YjMzOTk0MzJmZDBkOGU4NDRiNjBkYmU3ZDYuLjU2ZmM3ZTIwOTZlY2Q5NmE3ZmVlZTJkYWYz
NDcxYWM0ZWY0NzVhNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKQEAgLTI4LDYg
KzI4LDcgQEAKICNpbmNsdWRlICJXS0J1bmRsZVBhZ2VQcml2YXRlLmgiCiAKICNpbmNsdWRlICJJ
bmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdC5oIgorI2luY2x1ZGUgIkluamVjdGVkQnVuZGxl
Tm9kZUhhbmRsZS5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLQnVuZGxl
QVBJQ2FzdC5oIgogI2luY2x1ZGUgIldlYkltYWdlLmgiCkBAIC05Myw2ICs5NCw1NSBAQCB2b2lk
IFdLQnVuZGxlUGFnZVNldFVJQ2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRs
ZVBhZ2VVSUNsaWVudCogd2tDbAogICAgIHRvSW1wbChwYWdlUmVmKS0+aW5pdGlhbGl6ZUluamVj
dGVkQnVuZGxlVUlDbGllbnQod2tDbGllbnQpOwogfQogCisjaWYgZGVmaW5lZChFTkFCTEVfRlVM
TFNDUkVFTl9BUEkpICYmIEVOQUJMRV9GVUxMU0NSRUVOX0FQSQordm9pZCBXS0J1bmRsZVBhZ2VT
ZXRGdWxsU2NyZWVuQ2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZVBhZ2VG
dWxsU2NyZWVuQ2xpZW50KiB3a0NsaWVudCkKK3sKKyAgICBpZiAod2tDbGllbnQgJiYgd2tDbGll
bnQtPnZlcnNpb24pCisgICAgICAgIHJldHVybjsKKyAgICB0b0ltcGwocGFnZVJlZiktPmluaXRp
YWxpemVJbmplY3RlZEJ1bmRsZUZ1bGxTY3JlZW5DbGllbnQod2tDbGllbnQpOworfQorCit2b2lk
IFdLQnVuZGxlUGFnZVdpbGxFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdLQnVuZGxlUGFnZVJl
ZiBwYWdlUmVmLCBXS0J1bmRsZU5vZGVIYW5kbGVSZWYgZWxlbWVudFJlZikKK3sKKyAgICBXZWJD
b3JlOjpOb2RlKiBjb3JlTm9kZSA9IHRvSW1wbChlbGVtZW50UmVmKS0+Y29yZU5vZGUoKTsKKyAg
ICBpZiAoIWNvcmVOb2RlIHx8ICFjb3JlTm9kZS0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6RWxlbWVudCo+KGNvcmVOb2RlKTsKKyAgICBlbGVtZW50LT5kb2N1bWVudCgpLT53ZWJr
aXRXaWxsRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChlbGVtZW50KTsKK30KKwordm9pZCBXS0J1
bmRsZVBhZ2VEaWRFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdl
UmVmLCBXS0J1bmRsZU5vZGVIYW5kbGVSZWYgZWxlbWVudFJlZikKK3sKKyAgICBXZWJDb3JlOjpO
b2RlKiBjb3JlTm9kZSA9IHRvSW1wbChlbGVtZW50UmVmKS0+Y29yZU5vZGUoKTsKKyAgICBpZiAo
IWNvcmVOb2RlIHx8ICFjb3JlTm9kZS0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICByZXR1cm47
CisgICAgCisgICAgV2ViQ29yZTo6RWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PFdlYkNv
cmU6OkVsZW1lbnQqPihjb3JlTm9kZSk7CisgICAgZWxlbWVudC0+ZG9jdW1lbnQoKS0+d2Via2l0
RGlkRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChlbGVtZW50KTsKK30KKwordm9pZCBXS0J1bmRs
ZVBhZ2VXaWxsRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVm
LCBXS0J1bmRsZU5vZGVIYW5kbGVSZWYgZWxlbWVudFJlZikKK3sKKyAgICBXZWJDb3JlOjpOb2Rl
KiBjb3JlTm9kZSA9IHRvSW1wbChlbGVtZW50UmVmKS0+Y29yZU5vZGUoKTsKKyAgICBpZiAoIWNv
cmVOb2RlIHx8ICFjb3JlTm9kZS0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICByZXR1cm47Cisg
ICAgCisgICAgV2ViQ29yZTo6RWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6
OkVsZW1lbnQqPihjb3JlTm9kZSk7CisgICAgZWxlbWVudC0+ZG9jdW1lbnQoKS0+d2Via2l0V2ls
bEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChlbGVtZW50KTsKK30KKwordm9pZCBXS0J1bmRsZVBh
Z2VEaWRFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdL
QnVuZGxlTm9kZUhhbmRsZVJlZiBlbGVtZW50UmVmKQoreworICAgIFdlYkNvcmU6Ok5vZGUqIGNv
cmVOb2RlID0gdG9JbXBsKGVsZW1lbnRSZWYpLT5jb3JlTm9kZSgpOworICAgIGlmICghY29yZU5v
ZGUgfHwgIWNvcmVOb2RlLT5pc0VsZW1lbnROb2RlKCkpCisgICAgICAgIHJldHVybjsKKyAgICAK
KyAgICBXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RWxl
bWVudCo+KGNvcmVOb2RlKTsKKyAgICBlbGVtZW50LT5kb2N1bWVudCgpLT53ZWJraXREaWRFeGl0
RnVsbFNjcmVlbkZvckVsZW1lbnQoZWxlbWVudCk7Cit9CisjZW5kaWYKKwogV0tCdW5kbGVQYWdl
R3JvdXBSZWYgV0tCdW5kbGVQYWdlR2V0UGFnZUdyb3VwKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVm
KQogewogICAgIHJldHVybiB0b0FQSSh0b0ltcGwocGFnZVJlZiktPnBhZ2VHcm91cCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlUGFnZS5oCmluZGV4IGUwMWY1MWY4YTQ5NzAzZjEyMjhlY2NjYTQ3Zjli
YmViZmY2NDM0MzYuLjBjYzk0NWVmMTFkNjE5MjgxMDhjMWFiYzkzYmY5OTc3N2FlNzJmOWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaApAQCAtMjQzLDggKzI0MywyOSBAQCBzdHJ1Y3QgV0tC
dW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQgewogfTsKIHR5cGVkZWYgc3RydWN0IFdLQnVuZGxl
UGFnZUNvbnRleHRNZW51Q2xpZW50IFdLQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50OwogCisj
aWYgZGVmaW5lZChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICYmIEVOQUJMRV9GVUxMU0NSRUVOX0FQ
SQorLy8gRnVsbCBTY3JlZW4gY2xpZW50Cit0eXBlZGVmIGJvb2wgKCpXS0J1bmRsZVBhZ2VTdXBw
b3J0c0Z1bGxTY3JlZW4pKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBib29sIHdpdGhLZXlib2FyZCk7
Cit0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZVBhZ2VFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KShX
S0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVOb2RlSGFuZGxlUmVmIGVsZW1lbnQpOwordHlw
ZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KShXS0J1bmRs
ZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVOb2RlSGFuZGxlUmVmIGVsZW1lbnQpOworCitzdHJ1Y3Qg
V0tCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudCB7CisgICAgaW50ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uOwor
ICAgIGNvbnN0IHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2xpZW50SW5mbzsKKyAgICBXS0J1bmRsZVBhZ2VTdXBwb3J0c0Z1bGxT
Y3JlZW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRzRnVsbFNj
cmVlbjsKKyAgICBXS0J1bmRsZVBhZ2VFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQ7CisgICAgV0tC
dW5kbGVQYWdlRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBleGl0RnVsbFNjcmVlbkZvckVsZW1lbnQ7Cit9OwordHlwZWRlZiBzdHJ1Y3QgV0tC
dW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudCBXS0J1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50Owor
CitXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VXaWxsRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVu
dChXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVOb2RlSGFuZGxlUmVmIGVsZW1lbnQpOwor
V0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlRGlkRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChX
S0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVOb2RlSGFuZGxlUmVmIGVsZW1lbnQpOworV0tf
RVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlV2lsbEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChXS0J1
bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVOb2RlSGFuZGxlUmVmIGVsZW1lbnQpOworV0tfRVhQ
T1JUIHZvaWQgV0tCdW5kbGVQYWdlRGlkRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdLQnVuZGxl
UGFnZVJlZiBwYWdlLCBXS0J1bmRsZU5vZGVIYW5kbGVSZWYgZWxlbWVudCk7CisjZW5kaWYKKwog
V0tfRVhQT1JUIFdLVHlwZUlEIFdLQnVuZGxlUGFnZUdldFR5cGVJRCgpOwotIAorCiBXS19FWFBP
UlQgdm9pZCBXS0J1bmRsZVBhZ2VTZXRDb250ZXh0TWVudUNsaWVudChXS0J1bmRsZVBhZ2VSZWYg
cGFnZSwgV0tCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQqIGNsaWVudCk7CiBXS19FWFBPUlQg
dm9pZCBXS0J1bmRsZVBhZ2VTZXRFZGl0b3JDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdL
QnVuZGxlUGFnZUVkaXRvckNsaWVudCogY2xpZW50KTsKIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxl
UGFnZVNldEZvcm1DbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlUGFnZUZvcm1D
bGllbnQqIGNsaWVudCk7CkBAIC0yNTIsNiArMjczLDEwIEBAIFdLX0VYUE9SVCB2b2lkIFdLQnVu
ZGxlUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxl
UGFnCiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VTZXRSZXNvdXJjZUxvYWRDbGllbnQoV0tC
dW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudCogY2xpZW50
KTsKIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZVNldFBvbGljeUNsaWVudChXS0J1bmRsZVBh
Z2VSZWYgcGFnZSwgV0tCdW5kbGVQYWdlUG9saWN5Q2xpZW50KiBjbGllbnQpOwogV0tfRVhQT1JU
IHZvaWQgV0tCdW5kbGVQYWdlU2V0VUlDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVu
ZGxlUGFnZVVJQ2xpZW50KiBjbGllbnQpOworICAgIAorI2lmIGRlZmluZWQoRU5BQkxFX0ZVTExT
Q1JFRU5fQVBJKSAmJiBFTkFCTEVfRlVMTFNDUkVFTl9BUEkKK1dLX0VYUE9SVCB2b2lkIFdLQnVu
ZGxlUGFnZVNldEZ1bGxTY3JlZW5DbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxl
UGFnZUZ1bGxTY3JlZW5DbGllbnQqIGNsaWVudCk7CisjZW5kaWYKIAogV0tfRVhQT1JUIFdLQnVu
ZGxlUGFnZUdyb3VwUmVmIFdLQnVuZGxlUGFnZUdldFBhZ2VHcm91cChXS0J1bmRsZVBhZ2VSZWYg
cGFnZSk7CiBXS19FWFBPUlQgV0tCdW5kbGVGcmFtZVJlZiBXS0J1bmRsZVBhZ2VHZXRNYWluRnJh
bWUoV0tCdW5kbGVQYWdlUmVmIHBhZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGY4MWExY2IzZDI2YTY0
MzgyZjk1NmY1YTIxOGU3MTk1YTA3ZGQzNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVl
bkNsaWVudC5jcHAKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKworI2luY2x1ZGUgIkluamVjdGVk
QnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQuaCIKKworI2luY2x1ZGUgIkluamVjdGVkQnVuZGxl
Tm9kZUhhbmRsZS5oIgorI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldLQnVuZGxl
QVBJQ2FzdC5oIgorI2luY2x1ZGUgIldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlNZXNzYWdlcy5o
IgorI2luY2x1ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0VsZW1lbnQuaD4KKwor
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitib29sIElu
amVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQ6OnN1cHBvcnRzRnVsbFNjcmVlbihXZWJQ
YWdlICpwYWdlLCBib29sIHdpdGhLZXlib2FyZCkKK3sKKyAgICBpZiAobV9jbGllbnQuc3VwcG9y
dHNGdWxsU2NyZWVuKSAKKyAgICAgICAgcmV0dXJuIG1fY2xpZW50LnN1cHBvcnRzRnVsbFNjcmVl
bih0b0FQSShwYWdlKSwgd2l0aEtleWJvYXJkKTsKKworICAgIGJvb2wgc3VwcG9ydHMgPSB0cnVl
OworICAgIHBhZ2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5
OjpTdXBwb3J0c0Z1bGxTY3JlZW4od2l0aEtleWJvYXJkKSwgc3VwcG9ydHMpOworICAgIHJldHVy
biBzdXBwb3J0czsKK30KKwordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50
OjplbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdlYlBhZ2UgKnBhZ2UsIFdlYkNvcmU6OkVsZW1l
bnQgKmVsZW1lbnQpCit7CisgICAgaWYgKG1fY2xpZW50LmVudGVyRnVsbFNjcmVlbkZvckVsZW1l
bnQpIHsKKyAgICAgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gbm9kZUhhbmRs
ZSA9IEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6Z2V0T3JDcmVhdGUoZWxlbWVudCk7CisgICAg
ICAgIG1fY2xpZW50LmVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQodG9BUEkocGFnZSksIHRvQVBJ
KG5vZGVIYW5kbGUuZ2V0KCkpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgcGFnZS0+c2VuZChNZXNz
YWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6RW50ZXJGdWxsU2NyZWVuKCkpOworfQor
Cit2b2lkIEluamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQ6OmV4aXRGdWxsU2NyZWVu
Rm9yRWxlbWVudChXZWJQYWdlICpwYWdlLCBXZWJDb3JlOjpFbGVtZW50ICplbGVtZW50KQorewor
ICAgIGlmIChtX2NsaWVudC5lbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KSB7CisgICAgICAgIFJl
ZlB0cjxJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU+IG5vZGVIYW5kbGUgPSBJbmplY3RlZEJ1bmRs
ZU5vZGVIYW5kbGU6OmdldE9yQ3JlYXRlKGVsZW1lbnQpOworICAgICAgICBtX2NsaWVudC5lbnRl
ckZ1bGxTY3JlZW5Gb3JFbGVtZW50KHRvQVBJKHBhZ2UpLCB0b0FQSShub2RlSGFuZGxlLmdldCgp
KSk7CisgICAgfSBlbHNlCisgICAgICAgIHBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyUHJveHk6OkV4aXRGdWxsU2NyZWVuKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
RnVsbFNjcmVlbkNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWVi
YzRiNDc2OWI4ZDA2ZTgzZDViMDBiYmIwYTc3YmI2ODgwMWVjMwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlRnVsbFNjcmVlbkNsaWVudC5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIEluamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnRfaAorI2RlZmluZSBJbmplY3Rl
ZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50X2gKKworI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQ
SSkKKworI2luY2x1ZGUgIkFQSUNsaWVudC5oIgorI2luY2x1ZGUgIldLQnVuZGxlUGFnZS5oIgor
I2luY2x1ZGUgIldlYkV2ZW50LmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworY2xhc3MgRWxlbWVudDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIFdlYlBhZ2U7CisKK2NsYXNzIEluamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGll
bnQgOiBwdWJsaWMgQVBJQ2xpZW50PFdLQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQ+IHsKK3B1
YmxpYzoKKyAgICBib29sIHN1cHBvcnRzRnVsbFNjcmVlbihXZWJQYWdlKiwgYm9vbCB3aXRoS2V5
Ym9hcmQpOworICAgIHZvaWQgZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChXZWJQYWdlKiwgV2Vi
Q29yZTo6RWxlbWVudCopOworICAgIHZvaWQgZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdlYlBh
Z2UqLCBXZWJDb3JlOjpFbGVtZW50Kik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
I2VuZGlmIC8vIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKworI2VuZGlmIC8vIEluamVjdGVkQnVu
ZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGUwMmU3MTVjMDJkZTVhNjUwNjA0MGJkZDlmYjJjNDFh
MTBiMzEwMTIuLmQxODMwODU2NjUyMzIyYTk0Yzk5MmViNTg2ZDE1ODI2MDAyYWUxNDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTI4OCw2
ICsyODgsMTMgQEAgdm9pZCBXZWJQYWdlOjppbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVVSUNsaWVu
dChXS0J1bmRsZVBhZ2VVSUNsaWVudCogY2xpZW50KQogICAgIG1fdWlDbGllbnQuaW5pdGlhbGl6
ZShjbGllbnQpOwogfQogCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQordm9pZCBXZWJQYWdl
Ojppbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVGdWxsU2NyZWVuQ2xpZW50KFdLQnVuZGxlUGFnZUZ1
bGxTY3JlZW5DbGllbnQqIGNsaWVudCkKK3sKKyAgICBtX2Z1bGxTY3JlZW5DbGllbnQuaW5pdGlh
bGl6ZShjbGllbnQpOworfQorI2VuZGlmCisKIFBhc3NSZWZQdHI8UGx1Z2luPiBXZWJQYWdlOjpj
cmVhdGVQbHVnaW4oY29uc3QgUGx1Z2luOjpQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewogICAg
IFN0cmluZyBwbHVnaW5QYXRoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKaW5kZXggYmFjZjcxZjk5Mjg1ZTllNGI0YjA1MWM1Nzc2NzExZTMzZWJiZjhjMy4u
N2ZlNzIyMTZiZGNiMzdiNTQzMjZkZmQ0NTdmYjQwMjZiMDRhMzY4YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5j
bHVkZSAiSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuaCIKICNpbmNsdWRlICJJ
bmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRs
ZVBhZ2VGb3JtQ2xpZW50LmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVl
bkNsaWVudC5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oIgog
I2luY2x1ZGUgIkluamVjdGVkQnVuZGxlUGFnZVBvbGljeUNsaWVudC5oIgogI2luY2x1ZGUgIklu
amVjdGVkQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudC5oIgpAQCAtMTk0LDYgKzE5NSw5IEBA
IHB1YmxpYzoKICAgICB2b2lkIGluaXRpYWxpemVJbmplY3RlZEJ1bmRsZVBvbGljeUNsaWVudChX
S0J1bmRsZVBhZ2VQb2xpY3lDbGllbnQqKTsKICAgICB2b2lkIGluaXRpYWxpemVJbmplY3RlZEJ1
bmRsZVJlc291cmNlTG9hZENsaWVudChXS0J1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQqKTsK
ICAgICB2b2lkIGluaXRpYWxpemVJbmplY3RlZEJ1bmRsZVVJQ2xpZW50KFdLQnVuZGxlUGFnZVVJ
Q2xpZW50Kik7CisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAgIHZvaWQgaW5pdGlhbGl6
ZUluamVjdGVkQnVuZGxlRnVsbFNjcmVlbkNsaWVudChXS0J1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xp
ZW50Kik7CisjZW5kaWYKIAogICAgIEluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50
JiBpbmplY3RlZEJ1bmRsZUNvbnRleHRNZW51Q2xpZW50KCkgeyByZXR1cm4gbV9jb250ZXh0TWVu
dUNsaWVudDsgfQogICAgIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudCYgaW5qZWN0ZWRC
dW5kbGVFZGl0b3JDbGllbnQoKSB7IHJldHVybiBtX2VkaXRvckNsaWVudDsgfQpAQCAtMjAyLDYg
KzIwNiw5IEBAIHB1YmxpYzoKICAgICBJbmplY3RlZEJ1bmRsZVBhZ2VQb2xpY3lDbGllbnQmIGlu
amVjdGVkQnVuZGxlUG9saWN5Q2xpZW50KCkgeyByZXR1cm4gbV9wb2xpY3lDbGllbnQ7IH0KICAg
ICBJbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQmIGluamVjdGVkQnVuZGxlUmVz
b3VyY2VMb2FkQ2xpZW50KCkgeyByZXR1cm4gbV9yZXNvdXJjZUxvYWRDbGllbnQ7IH0KICAgICBJ
bmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudCYgaW5qZWN0ZWRCdW5kbGVVSUNsaWVudCgpIHsgcmV0
dXJuIG1fdWlDbGllbnQ7IH0KKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgSW5qZWN0
ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudCYgaW5qZWN0ZWRCdW5kbGVGdWxsU2NyZWVuQ2xp
ZW50KCkgeyByZXR1cm4gbV9mdWxsU2NyZWVuQ2xpZW50OyB9CisjZW5kaWYKIAogICAgIGJvb2wg
ZmluZFN0cmluZ0Zyb21JbmplY3RlZEJ1bmRsZShjb25zdCBTdHJpbmcmLCBGaW5kT3B0aW9ucyk7
CiAKQEAgLTU4NCw2ICs1OTEsOSBAQCBwcml2YXRlOgogICAgIEluamVjdGVkQnVuZGxlUGFnZVBv
bGljeUNsaWVudCBtX3BvbGljeUNsaWVudDsKICAgICBJbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJj
ZUxvYWRDbGllbnQgbV9yZXNvdXJjZUxvYWRDbGllbnQ7CiAgICAgSW5qZWN0ZWRCdW5kbGVQYWdl
VUlDbGllbnQgbV91aUNsaWVudDsKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgSW5q
ZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudCBtX2Z1bGxTY3JlZW5DbGllbnQ7CisjZW5k
aWYKIAogI2lmIEVOQUJMRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAgIFdlYkNvcmU6OkludFNp
emUgbV9yZXNpemVzVG9Db250ZW50c0xheW91dFNpemU7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYmQ0YTE3MmE5ZDAwY2JhZmUzNWE4YTcxZWVl
YWE3NjU4ZDg1NWQ0YS4uNzAyY2Y3MzI2NGQ4NTYwZjg3MDdiZWQyMjBjYTlkZWFmM2NhZGI1NCAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDIyIEBACisyMDExLTA0LTA1ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYktpdDI6
IFdLVFIgc2hvdWxkIHN1cHBvcnQgV2ViS2l0MiBmdWxsIHNjcmVlbiBBUElzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjMxOAorCisgICAgICAgIFJl
c3BvbmQgdG8gZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudCgpIGFuZCBleGl0RnVsbFNjcmVlbkZv
ckVsZW1lbnQoKSwgYWxsb3dpbmcgCisgICAgICAgIFdLVFIgdG8gdGVzdCB0aGUgTGF5b3V0VGVz
dC9mdWxsc2NyZWVuLyB0ZXN0cy4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRC
dW5kbGVQYWdlOjpJbmplY3RlZEJ1bmRsZVBhZ2UpOiBBZGQgc3VwcG9ydCBmb3IgV0tCdW5kbGVQ
YWdlRnVsbFNjcmVlbkNsaWVudC4KKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpz
dXBwb3J0c0Z1bGxTY3JlZW4pOiBBZGRlZC4KKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQ
YWdlOjplbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KTogQWRkZWQuCisgICAgICAgIChXVFI6Oklu
amVjdGVkQnVuZGxlUGFnZTo6ZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KTogQWRkZWQuCisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2Uu
aDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMpOiBF
bmFibGUgdGhlIGZ1bGwgc2NyZWVuIHByZWZlcmVuY2UuCisKIDIwMTEtMDQtMDUgIFNoZXJpZmYg
Qm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQs
IHJvbGxpbmcgb3V0IHI4Mjk3OCwgcjgyOTk5LCBhbmQgcjgzMDAxLgpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3Bw
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2UuY3BwCmluZGV4IDQ3MTU1MmY0NWFmMDZmZTFmNDI4ZTZlNjMxZDMxZDRhYmQ0ZjA4OWIuLmYz
Y2VkODhiNTBmMjQwYTgxNTNjZjFlNjQ5ZjkwZDFhMzVmMWUwNDkgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
UGFnZS5jcHAKQEAgLTIzNCw2ICsyMzQsMTcgQEAgSW5qZWN0ZWRCdW5kbGVQYWdlOjpJbmplY3Rl
ZEJ1bmRsZVBhZ2UoV0tCdW5kbGVQYWdlUmVmIHBhZ2UpCiAgICAgICAgIGRpZENoYW5nZVNlbGVj
dGlvbgogICAgIH07CiAgICAgV0tCdW5kbGVQYWdlU2V0RWRpdG9yQ2xpZW50KG1fcGFnZSwgJmVk
aXRvckNsaWVudCk7CisKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgV0tCdW5kbGVQ
YWdlRnVsbFNjcmVlbkNsaWVudCBmdWxsU2NyZWVuQ2xpZW50ID0geworICAgICAgICAwLAorICAg
ICAgICB0aGlzLAorICAgICAgICBzdXBwb3J0c0Z1bGxTY3JlZW4sCisgICAgICAgIGVudGVyRnVs
bFNjcmVlbkZvckVsZW1lbnQsCisgICAgICAgIGV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudCwKKyAg
ICB9OworICAgIFdLQnVuZGxlUGFnZVNldEZ1bGxTY3JlZW5DbGllbnQobV9wYWdlLCAmZnVsbFNj
cmVlbkNsaWVudCk7CisjZW5kaWYKIH0KIAogSW5qZWN0ZWRCdW5kbGVQYWdlOjp+SW5qZWN0ZWRC
dW5kbGVQYWdlKCkKQEAgLTkyMSw2ICs5MzIsMjggQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6
OmRpZENoYW5nZVNlbGVjdGlvbihXS1N0cmluZ1JlZiBub3RpZmljYXRpb25OYW1lKQogICAgICAg
ICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkub3MoKSA8PCAiRURJVElORyBERUxFR0FURTogd2Vi
Vmlld0RpZENoYW5nZVNlbGVjdGlvbjoiIDw8IG5vdGlmaWNhdGlvbk5hbWUgPDwgIlxuIjsKIH0K
IAorI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKK2Jvb2wgSW5qZWN0ZWRCdW5kbGVQYWdlOjpz
dXBwb3J0c0Z1bGxTY3JlZW4oV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIGJvb2wgd2l0aEtleWJv
YXJkKQoreworICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5vcygpIDw8ICJzdXBwb3J0c0Z1
bGxTY3JlZW4oKSA9PSB0cnVlXG4iOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIEluamVj
dGVkQnVuZGxlUGFnZTo6ZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChXS0J1bmRsZVBhZ2VSZWYg
cGFnZVJlZiwgV0tCdW5kbGVOb2RlSGFuZGxlUmVmIGVsZW1lbnRSZWYpCit7CisgICAgSW5qZWN0
ZWRCdW5kbGU6OnNoYXJlZCgpLm9zKCkgPDwgImVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoKVxu
IjsKKyAgICBXS0J1bmRsZVBhZ2VXaWxsRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChwYWdlUmVm
LCBlbGVtZW50UmVmKTsKKyAgICBXS0J1bmRsZVBhZ2VEaWRFbnRlckZ1bGxTY3JlZW5Gb3JFbGVt
ZW50KHBhZ2VSZWYsIGVsZW1lbnRSZWYpOworfQorCit2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6
ZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRs
ZU5vZGVIYW5kbGVSZWYgZWxlbWVudFJlZikKK3sKKyAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVk
KCkub3MoKSA8PCAiZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KClcbiI7CisgICAgV0tCdW5kbGVQ
YWdlV2lsbEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChwYWdlUmVmLCBlbGVtZW50UmVmKTsKKyAg
ICBXS0J1bmRsZVBhZ2VEaWRFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQocGFnZVJlZiwgZWxlbWVu
dFJlZik7Cit9CisjZW5kaWYKKwogc3RhdGljIGJvb2wgY29tcGFyZUJ5VGFyZ2V0TmFtZShXS0J1
bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW1SZWYgaXRlbTEsIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0
SXRlbVJlZiBpdGVtMikKIHsKICAgICByZXR1cm4gdG9TVEQoYWRvcHRXSyhXS0J1bmRsZUJhY2tG
b3J3YXJkTGlzdEl0ZW1Db3B5VGFyZ2V0KGl0ZW0xKSkpIDwgdG9TVEQoYWRvcHRXSyhXS0J1bmRs
ZUJhY2tGb3J3YXJkTGlzdEl0ZW1Db3B5VGFyZ2V0KGl0ZW0yKSkpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaCBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
LmgKaW5kZXggMmMzZTlkZjNkYjk4OTYzNjk1YzNlZWE2N2QyYTNkNTljZTlhNTBlNS4uODNjOTNj
NDAxZjZkMGI0MDFmMDQ0ZjUwYjcwZTYwYzM1OWZiYzhjYSAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5o
CkBAIC0xMDYsNiArMTA2LDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsUnVuSmF2YVNjcmlw
dENvbmZpcm0oV0tTdHJpbmdSZWYgbWVzc2FnZSwgV0tCdW5kbGVGcmFtZVJlZik7CiAgICAgdm9p
ZCB3aWxsUnVuSmF2YVNjcmlwdFByb21wdChXS1N0cmluZ1JlZiBtZXNzYWdlLCBXS1N0cmluZ1Jl
ZiBkZWZhdWx0VmFsdWUsIFdLQnVuZGxlRnJhbWVSZWYpOwogCisjaWYgRU5BQkxFKEZVTExTQ1JF
RU5fQVBJKQorICAgIC8vIEZ1bGwgU2NyZWVuIGNsaWVudAorICAgIHN0YXRpYyBib29sIHN1cHBv
cnRzRnVsbFNjcmVlbihXS0J1bmRsZVBhZ2VSZWYsIGJvb2wgd2l0aEtleWJvYXJkKTsKKyAgICBz
dGF0aWMgdm9pZCBlbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdLQnVuZGxlUGFnZVJlZiwgV0tC
dW5kbGVOb2RlSGFuZGxlUmVmIGVsZW1lbnQpOworICAgIHN0YXRpYyB2b2lkIGV4aXRGdWxsU2Ny
ZWVuRm9yRWxlbWVudChXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlTm9kZUhhbmRsZVJlZiBlbGVt
ZW50KTsKKyNlbmRpZgorCiAgICAgLy8gRWRpdG9yIGNsaWVudAogICAgIHN0YXRpYyBib29sIHNo
b3VsZEJlZ2luRWRpdGluZyhXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlUmFuZ2VIYW5kbGVSZWYs
IGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogICAgIHN0YXRpYyBib29sIHNob3VsZEVuZEVkaXRp
bmcoV0tCdW5kbGVQYWdlUmVmLCBXS0J1bmRsZVJhbmdlSGFuZGxlUmVmLCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5k
ZXggNDIzMzFkYWI5MzQ5MDUwMDJhOGNmNDc1ZjFiYjMzZjkyYTZlY2M5Zi4uZjdiMTZhMmVlM2Jl
MGYzNjdhY2Q2NWIwMjdhZWY3Y2Q5ZjFiOGI1MSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5jcHAKQEAgLTM1OCw2ICszNTgsOSBAQCBib29sIFRlc3RDb250cm9sbGVy
OjpyZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKCkKICAgICBXS1ByZWZlcmVuY2VzU2V0RE9N
UGFzdGVBbGxvd2VkKHByZWZlcmVuY2VzLCB0cnVlKTsKICAgICBXS1ByZWZlcmVuY2VzU2V0VW5p
dmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzQWxsb3dlZChwcmVmZXJlbmNlcywgdHJ1ZSk7CiAgICAg
V0tQcmVmZXJlbmNlc1NldEZpbGVBY2Nlc3NGcm9tRmlsZVVSTHNBbGxvd2VkKHByZWZlcmVuY2Vz
LCB0cnVlKTsKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgV0tQcmVmZXJlbmNlc1Nl
dEZ1bGxTY3JlZW5FbmFibGVkKHByZWZlcmVuY2VzLCB0cnVlKTsKKyNlbmRpZgogCiAgICAgc3Rh
dGljIFdLU3RyaW5nUmVmIHN0YW5kYXJkRm9udEZhbWlseSA9IFdLU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKCJUaW1lcyIpOwogICAgIHN0YXRpYyBXS1N0cmluZ1JlZiBjdXJzaXZlRm9udEZh
bWlseSA9IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJBcHBsZSBDaGFuY2VyeSIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89339</attachid>
            <date>2011-04-12 22:23:29 -0700</date>
            <delta_ts>2011-04-15 15:01:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56318-20110412222328.patch</filename>
            <type>text/plain</type>
            <size>31065</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODM2NzMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkZWZjZjg5MzEyZjQ3ZWIwNGU3YmE0
NDkxZDNmMzdjMjA0ZjRmNGQ3Li4yMDUwMWRjN2M2MWQ4M2YyZjk0MzFjNjRkZTkzM2U1OTFhYTA5
MzM0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDQtMDUgIEplciBOb2JsZSAgPGplci5u
b2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgV2ViS2l0MjogV0tUUiBzaG91bGQgc3VwcG9ydCBXZWJLaXQyIGZ1bGwgc2NyZWVu
IEFQSXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2
MzE4CisKKyAgICAgICAgV0tUUiBkb2VzIG5vdCBzdXBwb3J0IHRoZSBldmVudFNlbmRlci5rZXlE
b3duKCkgbWV0aG9kLCBzbyB1c2UgbW91c2VEb3duKCkgCisgICAgICAgIGluIHRob3NlIGNhc2Vz
IHRoYXQga2V5RG93bigpIGRvZXMgbm90IGV4aXN0LgorCisgICAgICAgICogZnVsbHNjcmVlbi9m
dWxsLXNjcmVlbi10ZXN0LmpzOgorICAgICAgICAocnVuV2l0aEtleURvd24uZG9jdW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChydW5XaXRoS2V5RG93bik6CisKIDIwMTEtMDQtMTIg
IENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdIGh0
dHAvdGVzdHMvbWlzYy9mYXZpY29uLWxvYWRzLXdpdGgtaWNvbi1sb2FkaW5nLW92ZXJyaWRlLmh0
bWwgZmFpbHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4t
dGVzdC5qcyBiL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tdGVzdC5qcwppbmRl
eCBiNzE0ZjA4YmFkM2E1MzUzNWZjYjg3YWI0ODI1YTgzNWFkNmNlY2U0Li5lZTk3MjQ0NWQyMDM1
ZmU5MGUyOTU5ZTU4OTY4MDk5YWMxMmFmYjUyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mdWxs
c2NyZWVuL2Z1bGwtc2NyZWVuLXRlc3QuanMKKysrIGIvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9m
dWxsLXNjcmVlbi10ZXN0LmpzCkBAIC0xMSw5ICsxMSwxNCBAQCBpZiAoIXJ1blBpeGVsVGVzdHMg
JiYgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CiAKIGZ1bmN0aW9uIHJ1bldpdGhLZXlE
b3duKGZuKSAKIHsKLSAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlwcmVzcycsIGZ1
bmN0aW9uKCkgeyBmbigpOyB9LCBmYWxzZSk7CisgICAgLy8gRklYTUU6IFdLVFIgZG9lcyBub3Qg
eWV0IHN1cHBvcnQgdGhlIGtleURvd24oKSBtZXNzYWdlLiAgRG8gYSBtb3VzZURvd24gaGVyZQor
ICAgIC8vIGluc3RlYWQgdW50aWwga2V5RG93biBzdXBwb3J0IGlzIGFkZGVkLgorICAgIGRvY3Vt
ZW50LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRTZW5kZXIua2V5RG93biA/ICdrZXlwcmVzcycgOiAn
bW91c2Vkb3duJywgZnVuY3Rpb24oKSB7IGZuKCk7IH0sIGZhbHNlKTsKICAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oIiAi
LCBbXSk7CisgICAgICAgIGlmIChldmVudFNlbmRlci5rZXlEb3duKQorICAgICAgICAgICAgZXZl
bnRTZW5kZXIua2V5RG93bigiICIsIFtdKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VEb3duKCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMDE4MDVjMWM1
MmM0YzAxMWFjNDgzM2I5N2Y2OTAyNzUwMmNlN2U4My4uODVmN2YyOTFhMmNkYWQzYTY1OGZkODZl
ZWRkNmFiZmRiNGM0ZWUxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDExLTA0LTA1
ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYktpdDI6IFdLVFIgc2hvdWxkIHN1cHBvcnQg
V2ViS2l0MiBmdWxsIHNjcmVlbiBBUElzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01NjMxOAorCisgICAgICAgIEFkZCBhIG5ldyBXS0J1bmRsZVBhZ2Ug
QVBJIGZvciBGdWxsIFNjcmVlbiBldmVudHMsIGFuZCBtb3ZlIHNvbWUgb2YgdGhlIGltcGxlbWVu
dGF0aW9uCisgICAgICAgIG9mIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyIGludG8gdGhlIG5ldyBJbmpl
Y3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50IGNsYXNzLCBzbyB0aGF0CisgICAgICAgIHRo
ZSBkZWZhdWx0IGJlaGF2aW9yIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGEgV0tCdW5kbGVQYWdlRnVs
bFNjcmVlbkNsaWVudC4KKworICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFn
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNG
dWxsU2NyZWVuKTogTW92ZWQgY29udGVudHMgaW50byBJbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2Ny
ZWVuQ2xpZW50LgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6ZW50ZXJG
dWxsU2NyZWVuRm9yRWxlbWVudCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsU2Ny
ZWVuTWFuYWdlcjo6ZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KTogRGl0dG8uCisgICAgICAgICog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwOgorICAgICAg
ICAoV0tCdW5kbGVQYWdlU2V0RnVsbFNjcmVlbkNsaWVudCk6IEFkZGVkLgorICAgICAgICAoV0tC
dW5kbGVQYWdlV2lsbEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQpOiBBZGRlZC4KKyAgICAgICAg
KFdLQnVuZGxlUGFnZURpZEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQpOiBBZGRlZC4KKyAgICAg
ICAgKFdLQnVuZGxlUGFnZVdpbGxFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQpOiBBZGRlZC4KKyAg
ICAgICAgKFdLQnVuZGxlUGFnZURpZEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudCk6IEFkZGVkLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VG
dWxsU2NyZWVuQ2xpZW50LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVu
ZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQ6OnN1cHBvcnRzRnVsbFNjcmVlbik6IEFkZGVkLiAKKyAg
ICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudDo6ZW50ZXJG
dWxsU2NyZWVuRm9yRWxlbWVudCk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1
bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50OjpleGl0RnVsbFNjcmVlbkZvckVsZW1lbnQpOiBBZGRl
ZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFn
ZUZ1bGxTY3JlZW5DbGllbnQuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppbml0aWFsaXplSW5qZWN0
ZWRCdW5kbGVGdWxsU2NyZWVuQ2xpZW50KTogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aW5qZWN0ZWRCdW5k
bGVGdWxsU2NyZWVuQ2xpZW50KTogQWRkZWQuCisKIDIwMTEtMDQtMTIgIEVucmljYSBDYXN1Y2Np
ICA8ZW5yaWNhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1
cnlha292IGFuZCBTYW0gV2VpbmlnLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0
Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGUzNGVkNmJiYjFjYTdjZTc1ZWU4ODAxYTE4MGNl
Mjc4YTUzNWZhZDMuLmEwZmQ5NzkzMGRjNTliNjIyMTc4ZmNhYzI3M2JjMzkzZDM3ZjlmNzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTc3MCw2ICs3NzAsOCBAQAogCQlDNTc0QTM3NzEyRTYwOTlEMDAyREZFOTggLyogV2ViRHJh
Z0NsaWVudE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEM1NTRGRkEyMTJFNEU4RUEwMDJGMjJDMCAvKiBXZWJEcmFnQ2xpZW50TWFjLm1tICovOyB9
OwogCQlDNTc0QTU4MTEyRTY2NjgxMDAyREZFOTggLyogUGFzdGVib2FyZFR5cGVzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTc0QTU3RjEyRTY2Njgx
MDAyREZFOTggLyogUGFzdGVib2FyZFR5cGVzLmggKi87IH07CiAJCUM1NzRBNTgyMTJFNjY2ODEw
MDJERkU5OCAvKiBQYXN0ZWJvYXJkVHlwZXMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDNTc0QTU4MDEyRTY2NjgxMDAyREZFOTggLyogUGFzdGVib2Fy
ZFR5cGVzLm1tICovOyB9OworCQlDRDVDNjZBMDEzNEI5RDM4MDA0RkUyQTggLyogSW5qZWN0ZWRC
dW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDRDVDNjY5RTEzNEI5RDM2MDA0RkUyQTggLyogSW5qZWN0ZWRC
dW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudC5jcHAgKi87IH07CisJCUNENUM2NkExMTM0QjlEMzgw
MDRGRTJBOCAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDVDNjY5RjEzNEI5RDM3MDA0
RkUyQTggLyogSW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudC5oICovOyB9OwogCQlD
RDZGNzVGNDEzMUI2NkQwMDBENkIyMUUgLyogV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDczQkEzRTEz
MUEyRThBMDBFRURFRDIgLyogV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5jcHAgKi87IH07CiAJ
CUNENzNCQTQ3MTMxQUNDOUEwMEVFREVEMiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5TWVz
c2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENENzNCQTQ1MTMxQUNDODgwMEVFREVEMiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlclBy
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJQ0Q3M0JBNEUxMzFBQ0RCNzAwRUVERUQy
IC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENzNCQTQ4MTMxQUNEOEUwMEVFREVE
MiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CkBAIC0x
Njg3LDYgKzE2ODksOCBAQAogCQlDNTU0RkZBMjEyRTRFOEVBMDAyRjIyQzAgLyogV2ViRHJhZ0Ns
aWVudE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkRy
YWdDbGllbnRNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1NzRBNTdGMTJF
NjY2ODEwMDJERkU5OCAvKiBQYXN0ZWJvYXJkVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUGFzdGVib2FyZFR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUM1NzRBNTgwMTJFNjY2ODEwMDJERkU5OCAvKiBQYXN0ZWJvYXJkVHlwZXMubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQYXN0ZWJvYXJkVHlwZXMubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNENUM2NjlFMTM0QjlEMzYwMDRGRTJBOCAvKiBJ
bmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEluamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDVDNjY5RjEzNEI5RDM3MDA0RkUyQTgg
LyogSW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNENzNCQTM3MTMxQTI5RkUwMEVFREVEMiAvKiBX
ZWJGdWxsU2NyZWVuTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBXZWJGdWxsU2NyZWVuTWFuYWdlci5jcHA7IHBhdGggPSBGdWxsU2NyZWVuL1dlYkZ1bGxT
Y3JlZW5NYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q3M0JBMzgx
MzFBMjlGRTAwRUVERUQyIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyLmg7IHBhdGggPSBGdWxsU2Ny
ZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUNENzNCQTM5MTMxQTI5RkUwMEVFREVEMiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlci5tZXNzYWdl
cy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBXZWJGdWxsU2NyZWVuTWFuYWdlci5tZXNzYWdl
cy5pbjsgcGF0aCA9IEZ1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIubWVzc2FnZXMuaW47
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yODUyLDYgKzI4NTYsOCBAQAogCQkJCUJD
MTRERjc2MTIwQjVCNzkwMDgyNkMwQyAvKiBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkLmNwcCAq
LywKIAkJCQlCQzE0REY3NTEyMEI1Qjc5MDA4MjZDMEMgLyogSW5qZWN0ZWRCdW5kbGVTY3JpcHRX
b3JsZC5oICovLAogCQkJCUJDQjBCMEREMTIzMDVBOEMwMEIxMzQxRSAvKiBJbmplY3RlZEJ1bmRs
ZVVzZXJNZXNzYWdlQ29kZXJzLmggKi8sCisJCQkJQ0Q1QzY2OUUxMzRCOUQzNjAwNEZFMkE4IC8q
IEluamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQuY3BwICovLAorCQkJCUNENUM2NjlG
MTM0QjlEMzcwMDRGRTJBOCAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50Lmgg
Ki8sCiAJCQkpOwogCQkJcGF0aCA9IEluamVjdGVkQnVuZGxlOwogCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKQEAgLTM2ODAsNiArMzY4Niw3IEBACiAJCQkJQzBGQTUyNDMxMzQ1Njk0QTAwMjhF
OEMyIC8qIExheWVyVHJlZUhvc3RDQU1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFBMzE3MzIx
MzRDRUE2QzAwN0M5QTRGIC8qIEF0dHJpYnV0ZWRTdHJpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUUxNzlGRDlDMTM0RDM4MDYwMDE1Qjg4MyAvKiBBcmd1bWVudENvZGVyc01hYy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQ0Q1QzY2QTExMzRCOUQzODAwNEZFMkE4IC8qIEluamVjdGVkQnVuZGxlUGFn
ZUZ1bGxTY3JlZW5DbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtNDMwNyw2ICs0MzE0LDcgQEAK
IAkJCQk1MTgzNDU5MjEzNDUzMkU5MDA5MkI2OTYgLyogV2ViSWNvbkRhdGFiYXNlQ2xpZW50LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUUxQTMxNzM1MTM0Q0VBODAwMDdDOUE0RiAvKiBBdHRyaWJ1
dGVkU3RyaW5nLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE3OUZEOUYxMzREMzgyNTAwMTVCODgz
IC8qIEFyZ3VtZW50Q29kZXJzTWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQ0Q1QzY2QTAxMzRC
OUQzODAwNEZFMkE4IC8qIEluamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Z1bGxT
Y3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmNwcAppbmRleCBlODU2ODc2MzYzZTA3
OWRkMTliYjZkMDgzYjBhMjhjYzk2YjZjODBjLi40N2YxZDQyYmEzMjMwNzA1YzQ3ZGY2N2IzYTQ0
NTgyMjkzNWE5MmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Z1bGxT
Y3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5jcHAKQEAgLTY2LDkgKzY2LDgg
QEAgYm9vbCBXZWJGdWxsU2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNGdWxsU2NyZWVuKGJvb2wgd2l0
aEtleWJvYXJkKQogICAgIGlmICghbV9wYWdlLT5jb3JlUGFnZSgpLT5zZXR0aW5ncygpLT5mdWxs
U2NyZWVuRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBib29sIHN1cHBv
cnRzID0gdHJ1ZTsKLSAgICBtX3BhZ2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVu
TWFuYWdlclByb3h5OjpTdXBwb3J0c0Z1bGxTY3JlZW4od2l0aEtleWJvYXJkKSwgc3VwcG9ydHMp
OwotICAgIHJldHVybiBzdXBwb3J0czsKKyAgICByZXR1cm4gbV9wYWdlLT5pbmplY3RlZEJ1bmRs
ZUZ1bGxTY3JlZW5DbGllbnQoKS5zdXBwb3J0c0Z1bGxTY3JlZW4obV9wYWdlLmdldCgpLCB3aXRo
S2V5Ym9hcmQpOworCiB9CiAKIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXI6OmVudGVyRnVsbFNj
cmVlbkZvckVsZW1lbnQoV2ViQ29yZTo6RWxlbWVudCogZWxlbWVudCkKQEAgLTc2LDE0ICs3NSwx
NCBAQCB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyOjplbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50
KFdlYkNvcmU6OkVsZW1lbnQqIGVsZW1lbnQpCiAgICAgQVNTRVJUKGVsZW1lbnQpOwogICAgIG1f
ZWxlbWVudCA9IGVsZW1lbnQ7CiAgICAgbV9pbml0aWFsRnJhbWUgPSBtX2VsZW1lbnQtPnNjcmVl
blJlY3QoKTsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2Vy
UHJveHk6OkVudGVyRnVsbFNjcmVlbigpKTsKKyAgICBtX3BhZ2UtPmluamVjdGVkQnVuZGxlRnVs
bFNjcmVlbkNsaWVudCgpLmVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQobV9wYWdlLmdldCgpLCBl
bGVtZW50KTsKIH0KIAogdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlcjo6ZXhpdEZ1bGxTY3JlZW5G
b3JFbGVtZW50KFdlYkNvcmU6OkVsZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAgQVNTRVJUKGVsZW1l
bnQpOwogICAgIEFTU0VSVChtX2VsZW1lbnQgPT0gZWxlbWVudCk7Ci0gICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpFeGl0RnVsbFNjcmVlbigpKTsK
KyAgICBtX3BhZ2UtPmluamVjdGVkQnVuZGxlRnVsbFNjcmVlbkNsaWVudCgpLmV4aXRGdWxsU2Ny
ZWVuRm9yRWxlbWVudChtX3BhZ2UuZ2V0KCksIGVsZW1lbnQpOwogfQogCiB2b2lkIFdlYkZ1bGxT
Y3JlZW5NYW5hZ2VyOjpiZWdhbkVudGVyRnVsbFNjcmVlbkFuaW1hdGlvbigpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFn
ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVu
TWFuYWdlci5oCmluZGV4IGQ0ZWMxNWQ3ZjlhZjJmMzY1MDQ3ZGM1MTUzODMwNThjMGVkNWY0ODIu
LmQ2Y2NiMTU5ZDk4MGEyNDI4YTQ2N2Q1YmFmNGY0YjRhYTU1NjZlMTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVu
TWFuYWdlci5oCkBAIC02MywxNSArNjMsMTYgQEAgcHVibGljOgogICAgIHZvaWQgZmluaXNoZWRF
eGl0RnVsbFNjcmVlbkFuaW1hdGlvbihib29sIGNvbXBsZXRlZCk7CiAgICAgdmlydHVhbCB2b2lk
IHNldFJvb3RGdWxsU2NyZWVuTGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciopID0gMDsKIAor
ICAgIHZvaWQgd2lsbEVudGVyRnVsbFNjcmVlbigpOworICAgIHZvaWQgZGlkRW50ZXJGdWxsU2Ny
ZWVuKCk7CisgICAgdm9pZCB3aWxsRXhpdEZ1bGxTY3JlZW4oKTsKKyAgICB2b2lkIGRpZEV4aXRG
dWxsU2NyZWVuKCk7CisKICAgICBXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50KCk7CiAKIHByb3Rl
Y3RlZDoKICAgICBXZWJGdWxsU2NyZWVuTWFuYWdlcihXZWJQYWdlKik7CiAKLSAgICB2b2lkIHdp
bGxFbnRlckZ1bGxTY3JlZW4oKTsKLSAgICB2b2lkIGRpZEVudGVyRnVsbFNjcmVlbigpOwotICAg
IHZvaWQgd2lsbEV4aXRGdWxsU2NyZWVuKCk7Ci0gICAgdm9pZCBkaWRFeGl0RnVsbFNjcmVlbigp
OwogICAgIHZpcnR1YWwgdm9pZCBiZWdpbkVudGVyRnVsbFNjcmVlbkFuaW1hdGlvbihmbG9hdCBk
dXJhdGlvbikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBiZWdpbkV4aXRGdWxsU2NyZWVuQW5pbWF0
aW9uKGZsb2F0IGR1cmF0aW9uKSA9IDA7CiAgICAgV2ViQ29yZTo6SW50UmVjdCBnZXRGdWxsU2Ny
ZWVuUmVjdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCmluZGV4IGEyOWEyYzIxM2Y1
OTU5YjMzOTk0MzJmZDBkOGU4NDRiNjBkYmU3ZDYuLjY5MzU0N2I1ZjQ3MjcyNzkxYjhjMjA2Zjg0
ZTIwY2ZkNTMyNzc3MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKQEAgLTI4LDgg
KzI4LDEwIEBACiAjaW5jbHVkZSAiV0tCdW5kbGVQYWdlUHJpdmF0ZS5oIgogCiAjaW5jbHVkZSAi
SW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3QuaCIKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRs
ZU5vZGVIYW5kbGUuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXS0J1bmRs
ZUFQSUNhc3QuaCIKKyNpbmNsdWRlICJXZWJGdWxsU2NyZWVuTWFuYWdlci5oIgogI2luY2x1ZGUg
IldlYkltYWdlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgIldlYlVSTC5oIgpA
QCAtOTMsNiArOTUsNDMgQEAgdm9pZCBXS0J1bmRsZVBhZ2VTZXRVSUNsaWVudChXS0J1bmRsZVBh
Z2VSZWYgcGFnZVJlZiwgV0tCdW5kbGVQYWdlVUlDbGllbnQqIHdrQ2wKICAgICB0b0ltcGwocGFn
ZVJlZiktPmluaXRpYWxpemVJbmplY3RlZEJ1bmRsZVVJQ2xpZW50KHdrQ2xpZW50KTsKIH0KIAor
dm9pZCBXS0J1bmRsZVBhZ2VTZXRGdWxsU2NyZWVuQ2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdl
UmVmLCBXS0J1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50KiB3a0NsaWVudCkKK3sKKyNpZiBkZWZp
bmVkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJiYgRU5BQkxFX0ZVTExTQ1JFRU5fQVBJCisgICAg
aWYgKHdrQ2xpZW50ICYmIHdrQ2xpZW50LT52ZXJzaW9uKQorICAgICAgICByZXR1cm47CisgICAg
dG9JbXBsKHBhZ2VSZWYpLT5pbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVGdWxsU2NyZWVuQ2xpZW50
KHdrQ2xpZW50KTsKKyNlbmRpZgorfQorCit2b2lkIFdLQnVuZGxlUGFnZVdpbGxFbnRlckZ1bGxT
Y3JlZW4oV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYpCit7CisjaWYgZGVmaW5lZChFTkFCTEVfRlVM
TFNDUkVFTl9BUEkpICYmIEVOQUJMRV9GVUxMU0NSRUVOX0FQSQorICAgIHRvSW1wbChwYWdlUmVm
KS0+ZnVsbFNjcmVlbk1hbmFnZXIoKS0+d2lsbEVudGVyRnVsbFNjcmVlbigpOworI2VuZGlmCit9
CisKK3ZvaWQgV0tCdW5kbGVQYWdlRGlkRW50ZXJGdWxsU2NyZWVuKFdLQnVuZGxlUGFnZVJlZiBw
YWdlUmVmKQoreworI2lmIGRlZmluZWQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAmJiBFTkFCTEVf
RlVMTFNDUkVFTl9BUEkKKyAgICB0b0ltcGwocGFnZVJlZiktPmZ1bGxTY3JlZW5NYW5hZ2VyKCkt
PmRpZEVudGVyRnVsbFNjcmVlbigpOworI2VuZGlmCit9CisKK3ZvaWQgV0tCdW5kbGVQYWdlV2ls
bEV4aXRGdWxsU2NyZWVuKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmKQoreworI2lmIGRlZmluZWQo
RU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAmJiBFTkFCTEVfRlVMTFNDUkVFTl9BUEkKKyAgICB0b0lt
cGwocGFnZVJlZiktPmZ1bGxTY3JlZW5NYW5hZ2VyKCktPndpbGxFeGl0RnVsbFNjcmVlbigpOwor
I2VuZGlmCit9CisKK3ZvaWQgV0tCdW5kbGVQYWdlRGlkRXhpdEZ1bGxTY3JlZW4oV0tCdW5kbGVQ
YWdlUmVmIHBhZ2VSZWYpCit7CisjaWYgZGVmaW5lZChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICYm
IEVOQUJMRV9GVUxMU0NSRUVOX0FQSQorICAgIHRvSW1wbChwYWdlUmVmKS0+ZnVsbFNjcmVlbk1h
bmFnZXIoKS0+ZGlkRXhpdEZ1bGxTY3JlZW4oKTsKKyNlbmRpZgorfQorCiBXS0J1bmRsZVBhZ2VH
cm91cFJlZiBXS0J1bmRsZVBhZ2VHZXRQYWdlR3JvdXAoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYp
CiB7CiAgICAgcmV0dXJuIHRvQVBJKHRvSW1wbChwYWdlUmVmKS0+cGFnZUdyb3VwKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZVBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVQYWdlLmgKaW5kZXggZTAxZjUxZjhhNDk3MDNmMTIyOGVjY2NhNDdmOWJi
ZWJmZjY0MzQzNi4uNzRkODk5ZThiYTU2ZWYwMDAwNWQwMzI4ZWE0ZTAzMTRmMTgyM2E1NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZVBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCkBAIC02Niw2ICs2NiwxMiBAQCBlbnVtIHsKIH07CiB0
eXBlZGVmIHVpbnQzMl90IFdLSW5wdXRGaWVsZEFjdGlvblR5cGU7CiAKK2VudW0geworICAgIFdL
RnVsbFNjcmVlbk5vS2V5Ym9hcmQsCisgICAgV0tGdWxsU2NyZWVuS2V5Ym9hcmQsCit9OwordHlw
ZWRlZiB1aW50MzJfdCBXS0Z1bGxTY3JlZW5LZXlib2FyZFJlcXVlc3RUeXBlOworCiAvLyBMb2Fk
ZXIgQ2xpZW50CiB0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZVBhZ2VEaWRTdGFydFByb3Zpc2lvbmFs
TG9hZEZvckZyYW1lQ2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1l
UmVmIGZyYW1lLCBXS1R5cGVSZWYqIHVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsK
IHR5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZURpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lQ2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1
bmRsZUZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYqIHVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGll
bnRJbmZvKTsKQEAgLTI0Myw4ICsyNDksMjcgQEAgc3RydWN0IFdLQnVuZGxlUGFnZUNvbnRleHRN
ZW51Q2xpZW50IHsKIH07CiB0eXBlZGVmIHN0cnVjdCBXS0J1bmRsZVBhZ2VDb250ZXh0TWVudUNs
aWVudCBXS0J1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudDsKIAorLy8gRnVsbCBTY3JlZW4gY2xp
ZW50Cit0eXBlZGVmIGJvb2wgKCpXS0J1bmRsZVBhZ2VTdXBwb3J0c0Z1bGxTY3JlZW4pKFdLQnVu
ZGxlUGFnZVJlZiBwYWdlLCBXS0Z1bGxTY3JlZW5LZXlib2FyZFJlcXVlc3RUeXBlIHJlcXVlc3RU
eXBlKTsKK3R5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZUVudGVyRnVsbFNjcmVlbkZvckVsZW1l
bnQpKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZU5vZGVIYW5kbGVSZWYgZWxlbWVudCk7
Cit0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZVBhZ2VFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQpKFdL
QnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZU5vZGVIYW5kbGVSZWYgZWxlbWVudCk7CisKK3N0
cnVjdCBXS0J1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50IHsKKyAgICBpbnQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNp
b247CisgICAgY29uc3Qgdm9pZCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjbGllbnRJbmZvOworICAgIFdLQnVuZGxlUGFnZVN1cHBvcnRz
RnVsbFNjcmVlbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydHNG
dWxsU2NyZWVuOworICAgIFdLQnVuZGxlUGFnZUVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudDsKKyAg
ICBXS0J1bmRsZVBhZ2VFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudDsKK307Cit0eXBlZGVmIHN0cnVj
dCBXS0J1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50IFdLQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGll
bnQ7CisKK1dLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZVdpbGxFbnRlckZ1bGxTY3JlZW4oV0tC
dW5kbGVQYWdlUmVmIHBhZ2UpOworV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlRGlkRW50ZXJG
dWxsU2NyZWVuKFdLQnVuZGxlUGFnZVJlZiBwYWdlKTsKK1dLX0VYUE9SVCB2b2lkIFdLQnVuZGxl
UGFnZVdpbGxFeGl0RnVsbFNjcmVlbihXS0J1bmRsZVBhZ2VSZWYgcGFnZSk7CitXS19FWFBPUlQg
dm9pZCBXS0J1bmRsZVBhZ2VEaWRFeGl0RnVsbFNjcmVlbihXS0J1bmRsZVBhZ2VSZWYgcGFnZSk7
CisKIFdLX0VYUE9SVCBXS1R5cGVJRCBXS0J1bmRsZVBhZ2VHZXRUeXBlSUQoKTsKLSAKKwogV0tf
RVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlU2V0Q29udGV4dE1lbnVDbGllbnQoV0tCdW5kbGVQYWdl
UmVmIHBhZ2UsIFdLQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50KiBjbGllbnQpOwogV0tfRVhQ
T1JUIHZvaWQgV0tCdW5kbGVQYWdlU2V0RWRpdG9yQ2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdl
LCBXS0J1bmRsZVBhZ2VFZGl0b3JDbGllbnQqIGNsaWVudCk7CiBXS19FWFBPUlQgdm9pZCBXS0J1
bmRsZVBhZ2VTZXRGb3JtQ2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZVBhZ2VG
b3JtQ2xpZW50KiBjbGllbnQpOwpAQCAtMjUyLDYgKzI3Nyw4IEBAIFdLX0VYUE9SVCB2b2lkIFdL
QnVuZGxlUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVu
ZGxlUGFnCiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VTZXRSZXNvdXJjZUxvYWRDbGllbnQo
V0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudCogY2xp
ZW50KTsKIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZVNldFBvbGljeUNsaWVudChXS0J1bmRs
ZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVQYWdlUG9saWN5Q2xpZW50KiBjbGllbnQpOwogV0tfRVhQ
T1JUIHZvaWQgV0tCdW5kbGVQYWdlU2V0VUlDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdL
QnVuZGxlUGFnZVVJQ2xpZW50KiBjbGllbnQpOworICAgIAorV0tfRVhQT1JUIHZvaWQgV0tCdW5k
bGVQYWdlU2V0RnVsbFNjcmVlbkNsaWVudChXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVQ
YWdlRnVsbFNjcmVlbkNsaWVudCogY2xpZW50KTsKIAogV0tfRVhQT1JUIFdLQnVuZGxlUGFnZUdy
b3VwUmVmIFdLQnVuZGxlUGFnZUdldFBhZ2VHcm91cChXS0J1bmRsZVBhZ2VSZWYgcGFnZSk7CiBX
S19FWFBPUlQgV0tCdW5kbGVGcmFtZVJlZiBXS0J1bmRsZVBhZ2VHZXRNYWluRnJhbWUoV0tCdW5k
bGVQYWdlUmVmIHBhZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
RnVsbFNjcmVlbkNsaWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGY4MWExY2IzZDI2YTY0MzgyZjk1NmY1
YTIxOGU3MTk1YTA3ZGQzNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudC5j
cHAKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKworI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlUGFn
ZUZ1bGxTY3JlZW5DbGllbnQuaCIKKworI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlTm9kZUhhbmRs
ZS5oIgorI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldLQnVuZGxlQVBJQ2FzdC5o
IgorI2luY2x1ZGUgIldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgorI2luY2x1
ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0VsZW1lbnQuaD4KKwordXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitib29sIEluamVjdGVkQnVu
ZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQ6OnN1cHBvcnRzRnVsbFNjcmVlbihXZWJQYWdlICpwYWdl
LCBib29sIHdpdGhLZXlib2FyZCkKK3sKKyAgICBpZiAobV9jbGllbnQuc3VwcG9ydHNGdWxsU2Ny
ZWVuKSAKKyAgICAgICAgcmV0dXJuIG1fY2xpZW50LnN1cHBvcnRzRnVsbFNjcmVlbih0b0FQSShw
YWdlKSwgd2l0aEtleWJvYXJkKTsKKworICAgIGJvb2wgc3VwcG9ydHMgPSB0cnVlOworICAgIHBh
Z2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpTdXBwb3J0
c0Z1bGxTY3JlZW4od2l0aEtleWJvYXJkKSwgc3VwcG9ydHMpOworICAgIHJldHVybiBzdXBwb3J0
czsKK30KKwordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50OjplbnRlckZ1
bGxTY3JlZW5Gb3JFbGVtZW50KFdlYlBhZ2UgKnBhZ2UsIFdlYkNvcmU6OkVsZW1lbnQgKmVsZW1l
bnQpCit7CisgICAgaWYgKG1fY2xpZW50LmVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQpIHsKKyAg
ICAgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gbm9kZUhhbmRsZSA9IEluamVj
dGVkQnVuZGxlTm9kZUhhbmRsZTo6Z2V0T3JDcmVhdGUoZWxlbWVudCk7CisgICAgICAgIG1fY2xp
ZW50LmVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQodG9BUEkocGFnZSksIHRvQVBJKG5vZGVIYW5k
bGUuZ2V0KCkpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgcGFnZS0+c2VuZChNZXNzYWdlczo6V2Vi
RnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6RW50ZXJGdWxsU2NyZWVuKCkpOworfQorCit2b2lkIElu
amVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQ6OmV4aXRGdWxsU2NyZWVuRm9yRWxlbWVu
dChXZWJQYWdlICpwYWdlLCBXZWJDb3JlOjpFbGVtZW50ICplbGVtZW50KQoreworICAgIGlmICht
X2NsaWVudC5lbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KSB7CisgICAgICAgIFJlZlB0cjxJbmpl
Y3RlZEJ1bmRsZU5vZGVIYW5kbGU+IG5vZGVIYW5kbGUgPSBJbmplY3RlZEJ1bmRsZU5vZGVIYW5k
bGU6OmdldE9yQ3JlYXRlKGVsZW1lbnQpOworICAgICAgICBtX2NsaWVudC5lbnRlckZ1bGxTY3Jl
ZW5Gb3JFbGVtZW50KHRvQVBJKHBhZ2UpLCB0b0FQSShub2RlSGFuZGxlLmdldCgpKSk7CisgICAg
fSBlbHNlCisgICAgICAgIHBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2Vy
UHJveHk6OkV4aXRGdWxsU2NyZWVuKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
I2VuZGlmIC8vIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVl
bkNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWViYzRiNDc2OWI4
ZDA2ZTgzZDViMDBiYmIwYTc3YmI2ODgwMWVjMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNj
cmVlbkNsaWVudC5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEluamVj
dGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnRfaAorI2RlZmluZSBJbmplY3RlZEJ1bmRsZVBh
Z2VGdWxsU2NyZWVuQ2xpZW50X2gKKworI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKworI2lu
Y2x1ZGUgIkFQSUNsaWVudC5oIgorI2luY2x1ZGUgIldLQnVuZGxlUGFnZS5oIgorI2luY2x1ZGUg
IldlYkV2ZW50LmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworY2xhc3MgRWxlbWVudDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdl
YlBhZ2U7CisKK2NsYXNzIEluamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQgOiBwdWJs
aWMgQVBJQ2xpZW50PFdLQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQ+IHsKK3B1YmxpYzoKKyAg
ICBib29sIHN1cHBvcnRzRnVsbFNjcmVlbihXZWJQYWdlKiwgYm9vbCB3aXRoS2V5Ym9hcmQpOwor
ICAgIHZvaWQgZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChXZWJQYWdlKiwgV2ViQ29yZTo6RWxl
bWVudCopOworICAgIHZvaWQgZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdlYlBhZ2UqLCBXZWJD
b3JlOjpFbGVtZW50Kik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKworI2VuZGlmIC8vIEluamVjdGVkQnVuZGxlUGFnZUZ1
bGxTY3JlZW5DbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCmluZGV4IGUxMjhhZmJiMmFjN2VhMjUzYmU5OWQ3NTdmOTY5YWMxYmY2YzE4ZjMu
LmMxODUyMWM1M2RlNmM3MjQzMDJlOGU2YTYwZWVjYjk1Mjc0NjBkMjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTI5Miw2ICsyOTIsMTMg
QEAgdm9pZCBXZWJQYWdlOjppbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVVSUNsaWVudChXS0J1bmRs
ZVBhZ2VVSUNsaWVudCogY2xpZW50KQogICAgIG1fdWlDbGllbnQuaW5pdGlhbGl6ZShjbGllbnQp
OwogfQogCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQordm9pZCBXZWJQYWdlOjppbml0aWFs
aXplSW5qZWN0ZWRCdW5kbGVGdWxsU2NyZWVuQ2xpZW50KFdLQnVuZGxlUGFnZUZ1bGxTY3JlZW5D
bGllbnQqIGNsaWVudCkKK3sKKyAgICBtX2Z1bGxTY3JlZW5DbGllbnQuaW5pdGlhbGl6ZShjbGll
bnQpOworfQorI2VuZGlmCisKIFBhc3NSZWZQdHI8UGx1Z2luPiBXZWJQYWdlOjpjcmVhdGVQbHVn
aW4oY29uc3QgUGx1Z2luOjpQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewogICAgIFN0cmluZyBw
bHVnaW5QYXRoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
aW5kZXggZGRhMzJlYjY5ODkyZGVhZmU0ZmY4NjczZDllYWQwMDQ4MGIwMDhhNy4uMGU0MDAyNzRi
MTFjMGRhN2I2ODU1ZjQxM2IzZGFmZWNlM2QyYzRkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSW5q
ZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1
bmRsZVBhZ2VFZGl0b3JDbGllbnQuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVBhZ2VGb3Jt
Q2xpZW50LmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudC5o
IgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUg
IkluamVjdGVkQnVuZGxlUGFnZVBvbGljeUNsaWVudC5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVu
ZGxlUGFnZVJlc291cmNlTG9hZENsaWVudC5oIgpAQCAtMTk1LDYgKzE5Niw5IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGluaXRpYWxpemVJbmplY3RlZEJ1bmRsZVBvbGljeUNsaWVudChXS0J1bmRsZVBh
Z2VQb2xpY3lDbGllbnQqKTsKICAgICB2b2lkIGluaXRpYWxpemVJbmplY3RlZEJ1bmRsZVJlc291
cmNlTG9hZENsaWVudChXS0J1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQqKTsKICAgICB2b2lk
IGluaXRpYWxpemVJbmplY3RlZEJ1bmRsZVVJQ2xpZW50KFdLQnVuZGxlUGFnZVVJQ2xpZW50Kik7
CisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAgIHZvaWQgaW5pdGlhbGl6ZUluamVjdGVk
QnVuZGxlRnVsbFNjcmVlbkNsaWVudChXS0J1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50Kik7Cisj
ZW5kaWYKIAogICAgIEluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50JiBpbmplY3Rl
ZEJ1bmRsZUNvbnRleHRNZW51Q2xpZW50KCkgeyByZXR1cm4gbV9jb250ZXh0TWVudUNsaWVudDsg
fQogICAgIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudCYgaW5qZWN0ZWRCdW5kbGVFZGl0
b3JDbGllbnQoKSB7IHJldHVybiBtX2VkaXRvckNsaWVudDsgfQpAQCAtMjAzLDYgKzIwNyw5IEBA
IHB1YmxpYzoKICAgICBJbmplY3RlZEJ1bmRsZVBhZ2VQb2xpY3lDbGllbnQmIGluamVjdGVkQnVu
ZGxlUG9saWN5Q2xpZW50KCkgeyByZXR1cm4gbV9wb2xpY3lDbGllbnQ7IH0KICAgICBJbmplY3Rl
ZEJ1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQmIGluamVjdGVkQnVuZGxlUmVzb3VyY2VMb2Fk
Q2xpZW50KCkgeyByZXR1cm4gbV9yZXNvdXJjZUxvYWRDbGllbnQ7IH0KICAgICBJbmplY3RlZEJ1
bmRsZVBhZ2VVSUNsaWVudCYgaW5qZWN0ZWRCdW5kbGVVSUNsaWVudCgpIHsgcmV0dXJuIG1fdWlD
bGllbnQ7IH0KKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgSW5qZWN0ZWRCdW5kbGVQ
YWdlRnVsbFNjcmVlbkNsaWVudCYgaW5qZWN0ZWRCdW5kbGVGdWxsU2NyZWVuQ2xpZW50KCkgeyBy
ZXR1cm4gbV9mdWxsU2NyZWVuQ2xpZW50OyB9CisjZW5kaWYKIAogICAgIGJvb2wgZmluZFN0cmlu
Z0Zyb21JbmplY3RlZEJ1bmRsZShjb25zdCBTdHJpbmcmLCBGaW5kT3B0aW9ucyk7CiAKQEAgLTYw
MCw2ICs2MDcsOSBAQCBwcml2YXRlOgogICAgIEluamVjdGVkQnVuZGxlUGFnZVBvbGljeUNsaWVu
dCBtX3BvbGljeUNsaWVudDsKICAgICBJbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGll
bnQgbV9yZXNvdXJjZUxvYWRDbGllbnQ7CiAgICAgSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQg
bV91aUNsaWVudDsKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgSW5qZWN0ZWRCdW5k
bGVQYWdlRnVsbFNjcmVlbkNsaWVudCBtX2Z1bGxTY3JlZW5DbGllbnQ7CisjZW5kaWYKIAogI2lm
IEVOQUJMRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAgIFdlYkNvcmU6OkludFNpemUgbV9yZXNp
emVzVG9Db250ZW50c0xheW91dFNpemU7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggNGEzOGFmMjQ0NTg3ZjhjNjgzMmY2YWJhMWEzNzg4ZmZkMTVk
NjQ5YS4uOGUyOGI1ZjViN2VlNDYwZDViYmI1ZTZkMTEzNmVmMzg1YTBkMThmYyAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBA
CisyMDExLTA0LTA1ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYktpdDI6IFdLVFIgc2hv
dWxkIHN1cHBvcnQgV2ViS2l0MiBmdWxsIHNjcmVlbiBBUElzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjMxOAorCisgICAgICAgIFJlc3BvbmQgdG8g
ZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudCgpIGFuZCBleGl0RnVsbFNjcmVlbkZvckVsZW1lbnQo
KSwgYWxsb3dpbmcgCisgICAgICAgIFdLVFIgdG8gdGVzdCB0aGUgTGF5b3V0VGVzdC9mdWxsc2Ny
ZWVuLyB0ZXN0cy4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdl
OjpJbmplY3RlZEJ1bmRsZVBhZ2UpOiBBZGQgc3VwcG9ydCBmb3IgV0tCdW5kbGVQYWdlRnVsbFNj
cmVlbkNsaWVudC4KKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpzdXBwb3J0c0Z1
bGxTY3JlZW4pOiBBZGRlZC4KKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjplbnRl
ckZ1bGxTY3JlZW5Gb3JFbGVtZW50KTogQWRkZWQuCisgICAgICAgIChXVFI6OkluamVjdGVkQnVu
ZGxlUGFnZTo6ZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KTogQWRkZWQuCisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaDoKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6
VGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMpOiBFbmFibGUgdGhl
IGZ1bGwgc2NyZWVuIHByZWZlcmVuY2UuCisKIDIwMTEtMDQtMTIgIEJyZW50IEZ1bGdoYW0gIDxi
ZnVsZ2hhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgY29ycmVjdGlv
biBmb3IgV2luQ2Fpcm8gYm90IGFmdGVyIHI4MzYzOS4KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcCBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcApp
bmRleCBlZTdkOWZkZmI0Y2EyYmRkMmIzYzZkNDYxNzBkZjIxZmI1MTQyMzdlLi43ZDYxY2IyNjg5
NDJiZmNlY2RkZDk5ODI2MzNhMmRjMzAyNmQzN2EwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3Bw
CkBAIC0yNDQsNiArMjQ0LDE3IEBAIEluamVjdGVkQnVuZGxlUGFnZTo6SW5qZWN0ZWRCdW5kbGVQ
YWdlKFdLQnVuZGxlUGFnZVJlZiBwYWdlKQogICAgICAgICBkaWRDaGFuZ2VTZWxlY3Rpb24KICAg
ICB9OwogICAgIFdLQnVuZGxlUGFnZVNldEVkaXRvckNsaWVudChtX3BhZ2UsICZlZGl0b3JDbGll
bnQpOworCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAgIFdLQnVuZGxlUGFnZUZ1bGxT
Y3JlZW5DbGllbnQgZnVsbFNjcmVlbkNsaWVudCA9IHsKKyAgICAgICAgMCwKKyAgICAgICAgdGhp
cywKKyAgICAgICAgc3VwcG9ydHNGdWxsU2NyZWVuLAorICAgICAgICBlbnRlckZ1bGxTY3JlZW5G
b3JFbGVtZW50LAorICAgICAgICBleGl0RnVsbFNjcmVlbkZvckVsZW1lbnQsCisgICAgfTsKKyAg
ICBXS0J1bmRsZVBhZ2VTZXRGdWxsU2NyZWVuQ2xpZW50KG1fcGFnZSwgJmZ1bGxTY3JlZW5DbGll
bnQpOworI2VuZGlmCiB9CiAKIEluamVjdGVkQnVuZGxlUGFnZTo6fkluamVjdGVkQnVuZGxlUGFn
ZSgpCkBAIC05NzMsNiArOTg0LDI4IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRDaGFu
Z2VTZWxlY3Rpb24oV0tTdHJpbmdSZWYgbm90aWZpY2F0aW9uTmFtZSkKICAgICAgICAgSW5qZWN0
ZWRCdW5kbGU6OnNoYXJlZCgpLm9zKCkgPDwgIkVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRD
aGFuZ2VTZWxlY3Rpb246IiA8PCBub3RpZmljYXRpb25OYW1lIDw8ICJcbiI7CiB9CiAKKyNpZiBF
TkFCTEUoRlVMTFNDUkVFTl9BUEkpCitib29sIEluamVjdGVkQnVuZGxlUGFnZTo6c3VwcG9ydHNG
dWxsU2NyZWVuKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0Z1bGxTY3JlZW5LZXlib2FyZFJl
cXVlc3RUeXBlIHJlcXVlc3RUeXBlKQoreworICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5v
cygpIDw8ICJzdXBwb3J0c0Z1bGxTY3JlZW4oKSA9PSB0cnVlXG4iOworICAgIHJldHVybiB0cnVl
OworfQorCit2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVu
dChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tCdW5kbGVOb2RlSGFuZGxlUmVmIGVsZW1lbnRS
ZWYpCit7CisgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLm9zKCkgPDwgImVudGVyRnVsbFNj
cmVlbkZvckVsZW1lbnQoKVxuIjsKKyAgICBXS0J1bmRsZVBhZ2VXaWxsRW50ZXJGdWxsU2NyZWVu
KHBhZ2VSZWYpOworICAgIFdLQnVuZGxlUGFnZURpZEVudGVyRnVsbFNjcmVlbihwYWdlUmVmKTsK
K30KKwordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChX
S0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tCdW5kbGVOb2RlSGFuZGxlUmVmIGVsZW1lbnRSZWYp
Cit7CisgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLm9zKCkgPDwgImV4aXRGdWxsU2NyZWVu
Rm9yRWxlbWVudCgpXG4iOworICAgIFdLQnVuZGxlUGFnZVdpbGxFeGl0RnVsbFNjcmVlbihwYWdl
UmVmKTsKKyAgICBXS0J1bmRsZVBhZ2VEaWRFeGl0RnVsbFNjcmVlbihwYWdlUmVmKTsKK30KKyNl
bmRpZgorCiBzdGF0aWMgYm9vbCBjb21wYXJlQnlUYXJnZXROYW1lKFdLQnVuZGxlQmFja0Zvcndh
cmRMaXN0SXRlbVJlZiBpdGVtMSwgV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtUmVmIGl0ZW0y
KQogewogICAgIHJldHVybiB0b1NURChhZG9wdFdLKFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRl
bUNvcHlUYXJnZXQoaXRlbTEpKSkgPCB0b1NURChhZG9wdFdLKFdLQnVuZGxlQmFja0ZvcndhcmRM
aXN0SXRlbUNvcHlUYXJnZXQoaXRlbTIpKSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5oIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaAppbmRleCAyMjM2
YmQxN2JmNzliMzY5NTNhY2VmNDM3NDJhYzA0NWM2ZTY0ZDI4Li5iYzA0ZTlhOWNiZWNkYjFiMDgz
MzExOGViOWYyM2E4NTgwZmViNzE3IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5oCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmgKQEAgLTExNiw2ICsx
MTYsMTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxSdW5KYXZhU2NyaXB0Q29uZmlybShXS1N0
cmluZ1JlZiBtZXNzYWdlLCBXS0J1bmRsZUZyYW1lUmVmKTsKICAgICB2b2lkIHdpbGxSdW5KYXZh
U2NyaXB0UHJvbXB0KFdLU3RyaW5nUmVmIG1lc3NhZ2UsIFdLU3RyaW5nUmVmIGRlZmF1bHRWYWx1
ZSwgV0tCdW5kbGVGcmFtZVJlZik7CiAKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAg
Ly8gRnVsbCBTY3JlZW4gY2xpZW50CisgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNGdWxsU2NyZWVu
KFdLQnVuZGxlUGFnZVJlZiwgV0tGdWxsU2NyZWVuS2V5Ym9hcmRSZXF1ZXN0VHlwZSk7CisgICAg
c3RhdGljIHZvaWQgZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChXS0J1bmRsZVBhZ2VSZWYsIFdL
QnVuZGxlTm9kZUhhbmRsZVJlZiBlbGVtZW50KTsKKyAgICBzdGF0aWMgdm9pZCBleGl0RnVsbFNj
cmVlbkZvckVsZW1lbnQoV0tCdW5kbGVQYWdlUmVmLCBXS0J1bmRsZU5vZGVIYW5kbGVSZWYgZWxl
bWVudCk7CisjZW5kaWYKKwogICAgIC8vIEVkaXRvciBjbGllbnQKICAgICBzdGF0aWMgYm9vbCBz
aG91bGRCZWdpbkVkaXRpbmcoV0tCdW5kbGVQYWdlUmVmLCBXS0J1bmRsZVJhbmdlSGFuZGxlUmVm
LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRFbmRFZGl0
aW5nKFdLQnVuZGxlUGFnZVJlZiwgV0tCdW5kbGVSYW5nZUhhbmRsZVJlZiwgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbyk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmlu
ZGV4IDYwOTNhZmNjNGY5OTNkYTEyZTJmNTU3ZTdjOTJiNzUzYmZlNDgzNGUuLjlkOGU1YzQzYzk5
ZDc4YzcwZDgzMjk1YWFiYzQ3ZjcwYjEzMDZhM2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuY3BwCkBAIC0zNjIsNiArMzYyLDkgQEAgYm9vbCBUZXN0Q29udHJvbGxl
cjo6cmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcygpCiAgICAgV0tQcmVmZXJlbmNlc1NldERP
TVBhc3RlQWxsb3dlZChwcmVmZXJlbmNlcywgdHJ1ZSk7CiAgICAgV0tQcmVmZXJlbmNlc1NldFVu
aXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMc0FsbG93ZWQocHJlZmVyZW5jZXMsIHRydWUpOwogICAg
IFdLUHJlZmVyZW5jZXNTZXRGaWxlQWNjZXNzRnJvbUZpbGVVUkxzQWxsb3dlZChwcmVmZXJlbmNl
cywgdHJ1ZSk7CisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAgIFdLUHJlZmVyZW5jZXNT
ZXRGdWxsU2NyZWVuRW5hYmxlZChwcmVmZXJlbmNlcywgdHJ1ZSk7CisjZW5kaWYKIAogICAgIHN0
YXRpYyBXS1N0cmluZ1JlZiBzdGFuZGFyZEZvbnRGYW1pbHkgPSBXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygiVGltZXMiKTsKICAgICBzdGF0aWMgV0tTdHJpbmdSZWYgY3Vyc2l2ZUZvbnRG
YW1pbHkgPSBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQXBwbGUgQ2hhbmNlcnkiKTsK
</data>
<flag name="review"
          id="82005"
          type_id="1"
          status="+"
          setter="sam"
    />
    <flag name="commit-queue"
          id="82566"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>