<?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>184591</bug_id>
          
          <creation_ts>2018-04-13 09:10:38 -0700</creation_ts>
          <short_desc>Split WindowProxy handling out of ScriptController and into a new class owned by AbstractFrame</short_desc>
          <delta_ts>2018-04-15 15:33:22 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Bindings</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>184467</dependson>
          <blocked>184515</blocked>
    
    <blocked>184640</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1414428</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-04-13 09:10:38 -0700</bug_when>
    <thetext>Split WindowProxy handling out of ScriptController and into a new class owned by AbstractFrame. RemoteFrames do not need a ScriptController but do need to maintain WindowProxies.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414460</commentid>
    <comment_count>1</comment_count>
      <attachid>337903</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-04-13 10:11:23 -0700</bug_when>
    <thetext>Created attachment 337903
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414462</commentid>
    <comment_count>2</comment_count>
      <attachid>337905</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-04-13 10:29:12 -0700</bug_when>
    <thetext>Created attachment 337905
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414481</commentid>
    <comment_count>3</comment_count>
      <attachid>337909</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-04-13 11:11:29 -0700</bug_when>
    <thetext>Created attachment 337909
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414487</commentid>
    <comment_count>4</comment_count>
      <attachid>337909</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2018-04-13 11:43:56 -0700</bug_when>
    <thetext>Comment on attachment 337909
Patch

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

&gt; Source/WebCore/bindings/js/DOMWrapperWorld.h:64
&gt; +    HashSet&lt;WindowProxyController*&gt; m_controllersWithWindowProxies;

I think this can just be called m_windowProxyControllers.

&gt; Source/WebCore/bindings/js/JSDOMWindowBase.cpp:270
&gt; -    return frame.script().windowProxy(world)-&gt;window();
&gt; +    return frame.script().globalObject(world);

Why globalObject() and not window() here?

&gt; Source/WebCore/bindings/js/JSDOMWindowProxy.cpp:127
&gt;  JSDOMWindowProxy* toJSDOMWindowProxy(Frame&amp; frame, DOMWrapperWorld&amp; world)
&gt;  {
&gt; -    return frame.script().windowProxy(world);
&gt; +    return &amp;frame.windowProxyController().windowProxy(world);
&gt;  }

Can we switch this function to return a reference since this will never return null?  Or,

&gt; Source/WebCore/bindings/js/WindowProxyController.h:41
&gt; +    Vector&lt;JSC::Strong&lt;JSDOMWindowProxy&gt;&gt; windowProxiesAsVector() const;

Do all the places that use windowProxiesAsVector() really need to copy to a Vector?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414493</commentid>
    <comment_count>5</comment_count>
      <attachid>337909</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-04-13 11:55:14 -0700</bug_when>
    <thetext>Comment on attachment 337909
Patch

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

&gt;&gt; Source/WebCore/bindings/js/DOMWrapperWorld.h:64
&gt;&gt; +    HashSet&lt;WindowProxyController*&gt; m_controllersWithWindowProxies;
&gt; 
&gt; I think this can just be called m_windowProxyControllers.

Ok.

&gt;&gt; Source/WebCore/bindings/js/JSDOMWindowBase.cpp:270
&gt;&gt; +    return frame.script().globalObject(world);
&gt; 
&gt; Why globalObject() and not window() here?

This is identical but shorter since ScriptController::globalObject() is implemented as:
JSDOMWindow* globalObject(DOMWrapperWorld&amp; world)
{
    return windowProxyController().windowProxy(world).window();
}

Once benefit also is that in the next patch, JSDOMWindowProxy::window() will start returning a more generic type, which ScriptController::globalObject() can keep returning a JSDOMWindow* since it is associated with a (local) Frame.

&gt;&gt; Source/WebCore/bindings/js/JSDOMWindowProxy.cpp:127
&gt;&gt;  }
&gt; 
&gt; Can we switch this function to return a reference since this will never return null?  Or,

I will look into it, I was trying to limit patch size.

&gt;&gt; Source/WebCore/bindings/js/WindowProxyController.h:41
&gt;&gt; +    Vector&lt;JSC::Strong&lt;JSDOMWindowProxy&gt;&gt; windowProxiesAsVector() const;
&gt; 
&gt; Do all the places that use windowProxiesAsVector() really need to copy to a Vector?

Some of them definitely do and this maintain pre-existing behavior. I am trying to reduce the risk of regression from my refactoring by maintaining pre-existing behavior as much as possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414494</commentid>
    <comment_count>6</comment_count>
      <attachid>337915</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-04-13 11:57:55 -0700</bug_when>
    <thetext>Created attachment 337915
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414496</commentid>
    <comment_count>7</comment_count>
      <attachid>337916</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-04-13 12:04:09 -0700</bug_when>
    <thetext>Created attachment 337916
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414509</commentid>
    <comment_count>8</comment_count>
      <attachid>337916</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2018-04-13 13:43:55 -0700</bug_when>
    <thetext>Comment on attachment 337916
Patch

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

&gt; Source/WebCore/bindings/js/WindowProxyController.h:41
&gt; +    Vector&lt;JSC::Strong&lt;JSDOMWindowProxy&gt;&gt; windowProxiesAsVector() const;

I kind of feel this function should have the word &quot;copy&quot; somewhere in its name, but I can&apos;t think of one that isn&apos;t overly verbose.

&gt; Source/WebCore/bindings/js/WindowProxyController.h:43
&gt; +    ProxyMap releaseWindowProxies() { return std::exchange(m_windowProxies, ProxyMap()); }

Does anyone call this?

&gt; Source/WebCore/bindings/js/WindowProxyController.h:44
&gt; +    void setWindowProxies(ProxyMap&amp;&amp; windowProxies) { m_windowProxies = WTFMove(windowProxies); }

Does anyone call this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414510</commentid>
    <comment_count>9</comment_count>
      <attachid>337916</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-04-13 13:47:53 -0700</bug_when>
    <thetext>Comment on attachment 337916
Patch

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

&gt;&gt; Source/WebCore/bindings/js/WindowProxyController.h:41
&gt;&gt; +    Vector&lt;JSC::Strong&lt;JSDOMWindowProxy&gt;&gt; windowProxiesAsVector() const;
&gt; 
&gt; I kind of feel this function should have the word &quot;copy&quot; somewhere in its name, but I can&apos;t think of one that isn&apos;t overly verbose.

copyWindowProxies() ?

&gt;&gt; Source/WebCore/bindings/js/WindowProxyController.h:43
&gt;&gt; +    ProxyMap releaseWindowProxies() { return std::exchange(m_windowProxies, ProxyMap()); }
&gt; 
&gt; Does anyone call this?

The next patch.

&gt;&gt; Source/WebCore/bindings/js/WindowProxyController.h:44
&gt;&gt; +    void setWindowProxies(ProxyMap&amp;&amp; windowProxies) { m_windowProxies = WTFMove(windowProxies); }
&gt; 
&gt; Does anyone call this?

The next patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414515</commentid>
    <comment_count>10</comment_count>
      <attachid>337916</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-04-13 14:24:00 -0700</bug_when>
    <thetext>Comment on attachment 337916
Patch

Clearing flags on attachment: 337916

Committed r230643: &lt;https://trac.webkit.org/changeset/230643&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414516</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-04-13 14:24:02 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414718</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-04-15 15:33:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/39444728&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>337903</attachid>
            <date>2018-04-13 10:11:23 -0700</date>
            <delta_ts>2018-04-13 10:29:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184591-20180413101122.patch</filename>
            <type>text/plain</type>
            <size>45260</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwNjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA1YzEwMjViZjU2YjFiNmFmODZjYzNh
YWFkNDEyOTdmM2JiMDhjNzUuLjZhYzY5NjE5MDE2NGIzMGY3ZjQ2YmY0NGY1NDk4MzE0OTE0MWI4
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTgtMDQtMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBTcGxpdCBXaW5kb3dQcm94eSBoYW5kbGluZyBvdXQgb2Yg
U2NyaXB0Q29udHJvbGxlciBhbmQgaW50byBhIG5ldyBjbGFzcyBvd25lZCBieSBBYnN0cmFjdEZy
YW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ1
OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
aXNFbXB0eSgpIGNvbnZlbmllbmNlIG1ldGhvZCB0byBTaXplZEl0ZXJhdG9yUmFuZ2UuCisKKyAg
ICAgICAgKiB3dGYvSXRlcmF0b3JSYW5nZS5oOgorICAgICAgICAoV1RGOjpTaXplZEl0ZXJhdG9y
UmFuZ2U6OmlzRW1wdHkgY29uc3QpOgorCiAyMDE4LTA0LTEyICBNaWNoYWVsIENhdGFuemFybyAg
PG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBSZW1vdmUgdW51c2VkIGNyYXNoIGhv
b2sgZnVuY3Rpb25hbGl0eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGE1YjQ3N2E3MmU0Mzk3NDI2NzQxY2E4Mzdk
MDRjMmNmMDMwOWQxNjYuLjNjMDU4OTA3MWQ5ZGY3ODJhMTI4ZjJkODQ0ZGVhMTEwMGQyM2NhMjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3NyBAQAorMjAxOC0wNC0xMyAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFNwbGl0IFdpbmRvd1Byb3h5IGhhbmRsaW5nIG91
dCBvZiBTY3JpcHRDb250cm9sbGVyIGFuZCBpbnRvIGEgbmV3IGNsYXNzIG93bmVkIGJ5IEFic3Ry
YWN0RnJhbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4NDU5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFNwbGl0IFdpbmRvd1Byb3h5IGhhbmRsaW5nIG91dCBvZiBTY3JpcHRDb250cm9sbGVyIGFuZCBp
bnRvIGEgbmV3IGNsYXNzIG93bmVkIGJ5IEFic3RyYWN0RnJhbWUuCisgICAgICAgIFJlbW90ZUZy
YW1lcyBkbyBub3QgbmVlZCBhIFNjcmlwdENvbnRyb2xsZXIgYnV0IGRvIG5lZWQgdG8gbWFpbnRh
aW4gV2luZG93UHJveGllcy4KKyAgICAgICAgVGhpcyBpcyB3b3JrIHRvd2FyZHMgZml4aW5nIEJ1
ZyAxODQ1MTUuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvRE9NV3JhcHBl
cldvcmxkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZDo6fkRPTVdyYXBw
ZXJXb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpET01XcmFwcGVyV29ybGQ6OmNsZWFyV3JhcHBl
cnMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5oOgorICAgICAgICAo
V2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkOjpkaWRDcmVhdGVXaW5kb3dQcm94eSk6CisgICAgICAg
IChXZWJDb3JlOjpET01XcmFwcGVyV29ybGQ6OmRpZERlc3Ryb3lXaW5kb3dQcm94eSk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9KU0RPTVdp
bmRvdyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dQcm94eS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNET01XaW5kb3dQcm94
eSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdENhY2hlZEZyYW1lRGF0YTo6U2NyaXB0Q2FjaGVkRnJhbWVE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENhY2hlZEZyYW1lRGF0YTo6cmVzdG9yZSk6
CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjp+U2NyaXB0Q29udHJvbGxlcik6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGQpOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0Q29udHJvbGxlcjo6bG9hZE1vZHVsZVNjcmlwdEluV29ybGQpOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6bGlua0FuZEV2YWx1YXRlTW9kdWxlU2NyaXB0
SW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZU1v
ZHVsZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpjbGVhcldpbmRvd1By
b3hpZXNOb3RNYXRjaGluZ0RPTVdpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250
cm9sbGVyOjpzZXRET01XaW5kb3dGb3JXaW5kb3dQcm94eSk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENv
bnRyb2xsZXI6OnNldHVwTW9kdWxlU2NyaXB0SGFuZGxlcnMpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0Q29udHJvbGxlcjo6d2luZG93UHJveHlDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdENvbnRyb2xsZXI6OmVuYWJsZUV2YWwpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0Q29udHJvbGxlcjo6ZW5hYmxlV2ViQXNzZW1ibHkpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0Q29udHJvbGxlcjo6ZGlzYWJsZUV2YWwpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29u
dHJvbGxlcjo6ZGlzYWJsZVdlYkFzc2VtYmx5KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENv
bnRyb2xsZXI6OmF0dGFjaERlYnVnZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRy
b2xsZXI6OnVwZGF0ZURvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xs
ZXI6OmNvbGxlY3RJc29sYXRlZENvbnRleHRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENv
bnRyb2xsZXI6OndpbmRvd1NjcmlwdE5QT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dENvbnRyb2xsZXI6OmV4ZWN1dGVJZkphdmFTY3JpcHRVUkwpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL1NjcmlwdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xs
ZXI6Omdsb2JhbE9iamVjdCk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxl
ck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OndpbmRvd1Njcmlw
dE9iamVjdCk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6bWFpbldvcmxkRXhlY1N0YXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9X
aW5kb3dQcm94eUNvbnRyb2xsZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldpbmRv
d1Byb3h5Q29udHJvbGxlcjo6V2luZG93UHJveHlDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OldpbmRvd1Byb3h5Q29udHJvbGxlcjo6ZGVzdHJveVdpbmRvd1Byb3h5KToKKyAgICAgICAg
KFdlYkNvcmU6OldpbmRvd1Byb3h5Q29udHJvbGxlcjo6Y3JlYXRlV2luZG93UHJveHkpOgorICAg
ICAgICAoV2ViQ29yZTo6V2luZG93UHJveHlDb250cm9sbGVyOjp3aW5kb3dQcm94aWVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OldpbmRvd1Byb3h5Q29udHJvbGxlcjo6d2luZG93UHJveHlTbG93KToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9XaW5kb3dQcm94eUNvbnRyb2xsZXIuaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpXaW5kb3dQcm94eUNvbnRyb2xsZXI6OnJlbGVhc2VXaW5kb3dQcm94
aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OldpbmRvd1Byb3h5Q29udHJvbGxlcjo6c2V0V2luZG93
UHJveGllcyk6CisgICAgICAgIChXZWJDb3JlOjpXaW5kb3dQcm94eUNvbnRyb2xsZXI6OndpbmRv
d1Byb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OldpbmRvd1Byb3h5Q29udHJvbGxlcjo6ZXhpc3Rp
bmdXaW5kb3dQcm94eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXaW5kb3dQcm94eUNvbnRy
b2xsZXI6Omdsb2JhbE9iamVjdCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZENsZWFyV2luZG93T2Jq
ZWN0SW5Xb3JsZCk6CisgICAgICAgICogcGFnZS9BYnN0cmFjdEZyYW1lLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFic3RyYWN0RnJhbWU6OkFic3RyYWN0RnJhbWUpOgorICAgICAgICAqIHBhZ2Uv
QWJzdHJhY3RGcmFtZS5oOgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3RGcmFtZTo6d2luZG93
UHJveHlDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0RnJhbWU6OndpbmRv
d1Byb3h5Q29udHJvbGxlciBjb25zdCk6CisKIDIwMTgtMDQtMTMgIFNlcmdpbyBWaWxsYXIgU2Vu
aW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dlYlZSXVtPcGVuVlJdIEltcGxl
bWVudCByZXF1ZXN0UHJlc2VudCgpL2V4aXRQcmVzZW50KCkgYW5kIGdldExheWVycygpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IGJiYzdkYzM2ZjM1OGY1NWMwZjk5OTBmZWYxOTJkY2E4OTgwMGUwNTAuLmVkMTQzMzc3
OGU1Yjc1MTJiODQzY2I4NzFkN2FiZTM1MTU4ZmFlNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTgtMDQtMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAg
ICBTcGxpdCBXaW5kb3dQcm94eSBoYW5kbGluZyBvdXQgb2YgU2NyaXB0Q29udHJvbGxlciBhbmQg
aW50byBhIG5ldyBjbGFzcyBvd25lZCBieSBBYnN0cmFjdEZyYW1lCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ1OTEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTcGxpdCBXaW5kb3dQcm94eSBoYW5kbGlu
ZyBvdXQgb2YgU2NyaXB0Q29udHJvbGxlciBhbmQgaW50byBhIG5ldyBjbGFzcyBvd25lZCBieSBB
YnN0cmFjdEZyYW1lLgorICAgICAgICBSZW1vdGVGcmFtZXMgZG8gbm90IG5lZWQgYSBTY3JpcHRD
b250cm9sbGVyIGJ1dCBkbyBuZWVkIHRvIG1haW50YWluIFdpbmRvd1Byb3hpZXMuCisgICAgICAg
IFRoaXMgaXMgd29yayB0b3dhcmRzIGZpeGluZyBCdWcgMTg0NTE1LgorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5W
aWV3Ojp3aW5kb3dTY3JpcHROUE9iamVjdCk6CisKIDIwMTgtMDQtMTMgIFhhYmllciBSb2RyaWd1
ZXogQ2FsdmFyICA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1N0cmVhbWVyXSBD
b252ZXJ0IEdTdHJlYW1lclV0aWxpdGllcyBpbiBHU3RyZWFtZXJDb21tb24gYW5kIGluY2x1ZGUg
dGhlIEdTdHJlYW1lciBzbWFydCBwb2ludGVyIHRyYWl0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nCmluZGV4IGM3MGY5NjY0ZTlhNjUwM2U1YWY0ZGY3Y2M3MGJjMWQ2M2QzNzc2NzQuLjk4Y2E3
OGM3MGI2YWEzOWMwODRmZDI4NjE1OTQxZTI2MjA1YzZkY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxOC0wNC0xMyAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgorCisgICAgICAgIFNwbGl0IFdpbmRvd1Byb3h5IGhhbmRsaW5nIG91dCBv
ZiBTY3JpcHRDb250cm9sbGVyIGFuZCBpbnRvIGEgbmV3IGNsYXNzIG93bmVkIGJ5IEFic3RyYWN0
RnJhbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
NDU5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNw
bGl0IFdpbmRvd1Byb3h5IGhhbmRsaW5nIG91dCBvZiBTY3JpcHRDb250cm9sbGVyIGFuZCBpbnRv
IGEgbmV3IGNsYXNzIG93bmVkIGJ5IEFic3RyYWN0RnJhbWUuCisgICAgICAgIFJlbW90ZUZyYW1l
cyBkbyBub3QgbmVlZCBhIFNjcmlwdENvbnRyb2xsZXIgYnV0IGRvIG5lZWQgdG8gbWFpbnRhaW4g
V2luZG93UHJveGllcy4KKyAgICAgICAgVGhpcyBpcyB3b3JrIHRvd2FyZHMgZml4aW5nIEJ1ZyAx
ODQ1MTUuCisKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNl
UHJveHkubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6
Z2V0V2luZG93TlBPYmplY3QpOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAg
ICAgICgtW1dlYkZyYW1lIF9hdHRhY2hTY3JpcHREZWJ1Z2dlcl0pOgorCiAyMDE4LTA0LTA1ICBZ
dXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFtXVEZdIFJl
bW92ZSBTdGF0aWNMb2NrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9JdGVyYXRvclJhbmdl
LmggYi9Tb3VyY2UvV1RGL3d0Zi9JdGVyYXRvclJhbmdlLmgKaW5kZXggN2UxMWQ1ODc4ZmY1YTc3
MDVhYTViZjhkMjZkMjA1ZDgzNzgwY2YzMi4uN2NmMDU2OWY1YjU5ZTg0MmMzMWQwN2VkOTM4ZDU3
YjE2ZmZjNmNmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvSXRlcmF0b3JSYW5nZS5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL0l0ZXJhdG9yUmFuZ2UuaApAQCAtNjIsNiArNjIsNyBAQCBwdWJs
aWM6CiAgICAgfQogCiAgICAgYXV0byBzaXplKCkgY29uc3QgLT4gZGVjbHR5cGUoc3RkOjpkZWNs
dmFsPENvbnRhaW5lcj4oKS5zaXplKCkpIHsgcmV0dXJuIG1fY29udGFpbmVyLnNpemUoKTsgfQor
ICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGFpbmVyLmlzRW1wdHkoKTsg
fQogICAgIEl0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9iZWdpbjsgfQogICAgIEl0
ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5kOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXgg
YTQ2MTcxOWUyZGRmNGI1Njg5OGE3YjZjNDdiZTQxNzY1YTY1MjVlNi4uYTU3YmIyZDJmNzViMjkx
OWRkYzlkOWNmY2JiMzEyZWU3NjAzOTU5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTQ2OCw2ICs0Njgs
NyBAQCBiaW5kaW5ncy9qcy9TdHJ1Y3R1cmVkQ2xvbmUuY3BwCiBiaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwCiBiaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmNwcAog
YmluZGluZ3MvanMvV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmNwcAorYmluZGluZ3MvanMv
V2luZG93UHJveHlDb250cm9sbGVyLmNwcAogYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJv
bGxlci5jcHAKIAogYnJpZGdlL0lkZW50aWZpZXJSZXAuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTZhMTM4MDYwZjYyYzll
MWMxOTBmY2ViMmFlNWY5NmEzMDY5Njc3NC4uY2Y2MDU2NzEyZGZkYTViM2U4ODU3NmYxNjAzYjA4
ODBiODdjODE5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMTE5MSw2ICsxMTkxLDcgQEAKIAkJNDYwQkI2MTYxRDBBMUJGMDAw
MjIxODEyIC8qIEJhc2U2NFV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDYwQkI2MTQxRDBBMUJFQzAwMjIxODEyIC8qIEJhc2U2NFV0aWxp
dGllcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTQ2MENCRjM2MUQ0QkNEMEUwMDkyRTg4RSAvKiBKU0RPTVdpbmRvd1Byb3BlcnRpZXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MENCRjM0MUQ0QkND
RkUwMDkyRTg4RSAvKiBKU0RPTVdpbmRvd1Byb3BlcnRpZXMuaCAqLzsgfTsKIAkJNDYyMThBQ0Ix
RjcyRDY0RTAwNTc0RkJFIC8qIERPTUhpZ2hSZXNUaW1lU3RhbXAuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RTAxNkFEMUY3MkQ2MUUwMDI4MkIyQyAv
KiBET01IaWdoUmVzVGltZVN0YW1wLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJNDYzNTIxQUQyMDgxMDkyQTAwQzI4OTIyIC8qIFdpbmRvd1Byb3h5
Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDYzNTIxQUEyMDgxMDkwQjAwQzI4OTIyIC8qIFdpbmRvd1Byb3h5Q29udHJvbGxlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2M0VCNjIz
MUI4Nzg5RTAwMDk2RUQ1MSAvKiBUYWdDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjNFQjYyMTFCODc4OUNCMDA5NkVENTEgLyogVGFn
Q29sbGVjdGlvbi5oICovOyB9OwogCQk0NjUzMDdEMDFEQjZFRTQ4MDBFNDEzN0MgLyogSlNVSUV2
ZW50SW5pdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODNFMDQ1RUYxREFBMTA0RjAwQjBEOEI5IC8qIEpTVUlFdmVudEluaXQuaCAqLzsgfTsKIAkJNDY2
NThEQzkxRkEyNEI4NzAwRjdERDU0IC8qIFNXQ29udGV4dE1hbmFnZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NzI0MTNCMUZBMjRCMTQwMDg4QkQ2
RCAvKiBTV0NvbnRleHRNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTc0MjUsNiArNzQyNiw4IEBACiAJCTQ2MENCRjM0MUQ0QkNDRkUw
MDkyRTg4RSAvKiBKU0RPTVdpbmRvd1Byb3BlcnRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNET01XaW5kb3dQcm9wZXJ0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2MEQxOTQ0MUZDRTIxREQwMEMzREI4NSAvKiBKU1NlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2MzQ1OTJCMUFDMjI3MTAwMEVDQjcxQyAvKiBQb3dlck9ic2VydmVyTWFjLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvd2VyT2JzZXJ2ZXJNYWMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjM1MjFBQTIwODEwOTBCMDBDMjg5
MjIgLyogV2luZG93UHJveHlDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdpbmRvd1Byb3h5Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0NjM1MjFBQzIwODEwOTBFMDBDMjg5MjIgLyogV2luZG93UHJveHlDb250cm9sbGVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdpbmRvd1Byb3h5Q29udHJv
bGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2M0VCNjIwMUI4Nzg5Q0Iw
MDk2RUQ1MSAvKiBUYWdDb2xsZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFRhZ0NvbGxlY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NjNFQjYyMTFCODc4OUNCMDA5NkVENTEgLyogVGFnQ29sbGVjdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBUYWdDb2xsZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2NUE4RTc4MUM4QTI0Q0UwMEU3RDNFNCAvKiBSdW50aW1lQXBwbGljYXRp
b25DaGVja3NDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMjM3MDgsNiArMjM3MTEsOCBAQAogCQkJCUJDNTNEOTEwMTE0MzEwQ0MwMDBEODE3
RSAvKiBXZWJDb3JlSlNDbGllbnREYXRhLmggKi8sCiAJCQkJMEYwOTlEMDYxN0I5NjhBMTAwRkY4
NEI5IC8qIFdlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlci5jcHAgKi8sCiAJCQkJMEYwOTlEMDcx
N0I5NjhBMTAwRkY4NEI5IC8qIFdlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlci5oICovLAorCQkJ
CTQ2MzUyMUFDMjA4MTA5MEUwMEMyODkyMiAvKiBXaW5kb3dQcm94eUNvbnRyb2xsZXIuY3BwICov
LAorCQkJCTQ2MzUyMUFBMjA4MTA5MEIwMEMyODkyMiAvKiBXaW5kb3dQcm94eUNvbnRyb2xsZXIu
aCAqLywKIAkJCQlFMUE2NDNGQzBFQzA5N0EwMDA3Nzk2NjggLyogV29ya2VyU2NyaXB0Q29udHJv
bGxlci5jcHAgKi8sCiAJCQkJRTFBNjQzRjEwRUMwOTcyNTAwNzc5NjY4IC8qIFdvcmtlclNjcmlw
dENvbnRyb2xsZXIuaCAqLywKIAkJCSk7CkBAIC0zMDYwOCw2ICszMDYxMyw3IEBACiAJCQkJMEYx
NUVENUMxQjdFQzdDNTAwRURERkVCIC8qIFdpbGxDaGFuZ2VEYXRhLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzgyNDNFOTBEMENGRDc1MDA0NjBDOEYgLyogV2luZG93RmVhdHVyZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTdFOTlBRjUzMEIxMzg0NjQ2OEZCMDFBNSAvKiBXaW5kb3dGb2N1c0FsbG93
ZWRJbmRpY2F0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2MzUyMUFEMjA4MTA5MkEwMEMyODky
MiAvKiBXaW5kb3dQcm94eUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxRTFCRjAw
MTE1RkY2RkIwMDZGNTJDQSAvKiBXaW5kb3dzS2V5Ym9hcmRDb2Rlcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTAxQkFBQTkxMzk1MEUyQzAwRjdBQ0VCIC8qIFdpbmRSdWxlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBMTQ4MzJCRTE4N0Y2NENDMDBEQTYzQTYgLyogV0tDb250ZW50T2JzZXJ2YXRpb24u
aCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
RE9NV3JhcHBlcldvcmxkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVdyYXBw
ZXJXb3JsZC5jcHAKaW5kZXggMWUxZjE3Yjg3Yjg5ZjMzZmE2YjQ4Mzc2YTI0ZWNjNWVmMmIyMDIx
NC4uZTBmYzczNjY5YzdjZGRhZTA4MzU5NWM1NWNlZWVhYmI5MzVhZTgxZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NV3JhcHBlcldvcmxkLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQuY3BwCkBAIC0yMyw4ICsyMyw4
IEBACiAKICNpbmNsdWRlICJDb21tb25WTS5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCi0j
aW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERh
dGEuaCIKKyNpbmNsdWRlICJXaW5kb3dQcm94eUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDx3dGYv
TWFpblRocmVhZC5oPgogCiAKQEAgLTQ3LDggKzQ3LDggQEAgRE9NV3JhcHBlcldvcmxkOjp+RE9N
V3JhcHBlcldvcmxkKCkKICAgICBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KGNsaWVudERh
dGEpLT5mb3JnZXRXb3JsZCgqdGhpcyk7CiAKICAgICAvLyBUaGVzZSBpdGVtcyBhcmUgY3JlYXRl
ZCBsYXppbHkuCi0gICAgd2hpbGUgKCFtX3NjcmlwdENvbnRyb2xsZXJzV2l0aFdpbmRvd1Byb3hp
ZXMuaXNFbXB0eSgpKQotICAgICAgICAoKm1fc2NyaXB0Q29udHJvbGxlcnNXaXRoV2luZG93UHJv
eGllcy5iZWdpbigpKS0+ZGVzdHJveVdpbmRvd1Byb3h5KCp0aGlzKTsKKyAgICB3aGlsZSAoIW1f
Y29udHJvbGxlcnNXaXRoV2luZG93UHJveGllcy5pc0VtcHR5KCkpCisgICAgICAgICgqbV9jb250
cm9sbGVyc1dpdGhXaW5kb3dQcm94aWVzLmJlZ2luKCkpLT5kZXN0cm95V2luZG93UHJveHkoKnRo
aXMpOwogfQogCiB2b2lkIERPTVdyYXBwZXJXb3JsZDo6Y2xlYXJXcmFwcGVycygpCkBAIC01Niw4
ICs1Niw4IEBAIHZvaWQgRE9NV3JhcHBlcldvcmxkOjpjbGVhcldyYXBwZXJzKCkKICAgICBtX3dy
YXBwZXJzLmNsZWFyKCk7CiAKICAgICAvLyBUaGVzZSBpdGVtcyBhcmUgY3JlYXRlZCBsYXppbHku
Ci0gICAgd2hpbGUgKCFtX3NjcmlwdENvbnRyb2xsZXJzV2l0aFdpbmRvd1Byb3hpZXMuaXNFbXB0
eSgpKQotICAgICAgICAoKm1fc2NyaXB0Q29udHJvbGxlcnNXaXRoV2luZG93UHJveGllcy5iZWdp
bigpKS0+ZGVzdHJveVdpbmRvd1Byb3h5KCp0aGlzKTsKKyAgICB3aGlsZSAoIW1fY29udHJvbGxl
cnNXaXRoV2luZG93UHJveGllcy5pc0VtcHR5KCkpCisgICAgICAgICgqbV9jb250cm9sbGVyc1dp
dGhXaW5kb3dQcm94aWVzLmJlZ2luKCkpLT5kZXN0cm95V2luZG93UHJveHkoKnRoaXMpOwogfQog
CiBET01XcmFwcGVyV29ybGQmIG5vcm1hbFdvcmxkKEpTQzo6Vk0mIHZtKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NV3JhcHBlcldvcmxkLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQuaAppbmRleCBlMGFjYjgyNmExNjUwODYy
YjgwMzFlMzVlNzhhZWQzMGRiZmQ4MzgxLi5mYmVjMTAxOWIwMjI3YWRmOTcxZmYzMGQxOTkzZmYy
ZTkyOGM3Mjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01XcmFw
cGVyV29ybGQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01XcmFwcGVyV29y
bGQuaApAQCAtMjYsNyArMjYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNj
cmlwdENvbnRyb2xsZXI7CitjbGFzcyBXaW5kb3dQcm94eUNvbnRyb2xsZXI7CiAKIHR5cGVkZWYg
SGFzaE1hcDx2b2lkKiwgSlNDOjpXZWFrPEpTQzo6SlNPYmplY3Q+PiBET01PYmplY3RXcmFwcGVy
TWFwOwogCkBAIC00MSw4ICs0MSw4IEBAIHB1YmxpYzoKICAgICAvLyBGcmVlIGFzIG11Y2ggbWVt
b3J5IGhlbGQgb250byBieSB0aGlzIHdvcmxkIGFzIHBvc3NpYmxlLgogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgY2xlYXJXcmFwcGVycygpOwogCi0gICAgdm9pZCBkaWRDcmVhdGVXaW5kb3dQcm94
eShTY3JpcHRDb250cm9sbGVyKiBzY3JpcHRDb250cm9sbGVyKSB7IG1fc2NyaXB0Q29udHJvbGxl
cnNXaXRoV2luZG93UHJveGllcy5hZGQoc2NyaXB0Q29udHJvbGxlcik7IH0KLSAgICB2b2lkIGRp
ZERlc3Ryb3lXaW5kb3dQcm94eShTY3JpcHRDb250cm9sbGVyKiBzY3JpcHRDb250cm9sbGVyKSB7
IG1fc2NyaXB0Q29udHJvbGxlcnNXaXRoV2luZG93UHJveGllcy5yZW1vdmUoc2NyaXB0Q29udHJv
bGxlcik7IH0KKyAgICB2b2lkIGRpZENyZWF0ZVdpbmRvd1Byb3h5KFdpbmRvd1Byb3h5Q29udHJv
bGxlciogY29udHJvbGxlcikgeyBtX2NvbnRyb2xsZXJzV2l0aFdpbmRvd1Byb3hpZXMuYWRkKGNv
bnRyb2xsZXIpOyB9CisgICAgdm9pZCBkaWREZXN0cm95V2luZG93UHJveHkoV2luZG93UHJveHlD
b250cm9sbGVyKiBjb250cm9sbGVyKSB7IG1fY29udHJvbGxlcnNXaXRoV2luZG93UHJveGllcy5y
ZW1vdmUoY29udHJvbGxlcik7IH0KIAogICAgIHZvaWQgc2V0U2hhZG93Um9vdElzQWx3YXlzT3Bl
bigpIHsgbV9zaGFkb3dSb290SXNBbHdheXNPcGVuID0gdHJ1ZTsgfQogICAgIGJvb2wgc2hhZG93
Um9vdElzQWx3YXlzT3BlbigpIGNvbnN0IHsgcmV0dXJuIG1fc2hhZG93Um9vdElzQWx3YXlzT3Bl
bjsgfQpAQCAtNjEsNyArNjEsNyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgSlNDOjpW
TSYgbV92bTsKLSAgICBIYXNoU2V0PFNjcmlwdENvbnRyb2xsZXIqPiBtX3NjcmlwdENvbnRyb2xs
ZXJzV2l0aFdpbmRvd1Byb3hpZXM7CisgICAgSGFzaFNldDxXaW5kb3dQcm94eUNvbnRyb2xsZXIq
PiBtX2NvbnRyb2xsZXJzV2l0aFdpbmRvd1Byb3hpZXM7CiAgICAgRE9NT2JqZWN0V3JhcHBlck1h
cCBtX3dyYXBwZXJzOwogCiAgICAgYm9vbCBtX2lzTm9ybWFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKaW5kZXggNDhjNTNlMmNkMmVk
MmI0ZmMzM2I0NTFhZGNjZjIzNmQyYTExNjlkZi4uY2M1Y2U2MzE5MGIxM2I3MWYyMzM1YTg0MjMy
M2FhMThmMDU1MDQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNC
aW5kaW5nc0FsbEluT25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Jp
bmRpbmdzQWxsSW5PbmUuY3BwCkBAIC0xMDksNCArMTA5LDUgQEAKICNpbmNsdWRlICJTY3JpcHRT
dGF0ZS5jcHAiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCIKICNpbmNsdWRl
ICJXZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIuY3BwIgorI2luY2x1ZGUgIldpbmRvd1Byb3h5
Q29udHJvbGxlci5jcHAiCiAjaW5jbHVkZSAiV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAppbmRleCAy
MmJjNDM1MGI3NWVmMjFkMjQ4YmZkY2E4ZGE3MjNhOTFkZWZiNGQ2Li42ZmE2ZTdkNWE0ZTFhYjM2
ZDQwZjM3NTBjNDJiNGQwZDRjNjUyNTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93QmFzZS5jcHAKQEAgLTI2Nyw3ICsyNjcsNyBAQCBKU1ZhbHVlIHRvSlMo
RXhlY1N0YXRlKiBzdGF0ZSwgRE9NV2luZG93JiBkb21XaW5kb3cpCiAKIEpTRE9NV2luZG93KiB0
b0pTRE9NV2luZG93KEZyYW1lJiBmcmFtZSwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKIHsKLSAg
ICByZXR1cm4gZnJhbWUuc2NyaXB0KCkud2luZG93UHJveHkod29ybGQpLT53aW5kb3coKTsKKyAg
ICByZXR1cm4gZnJhbWUuc2NyaXB0KCkuZ2xvYmFsT2JqZWN0KHdvcmxkKTsKIH0KIAogSlNET01X
aW5kb3cqIHRvSlNET01XaW5kb3coSlNDOjpWTSYgdm0sIEpTVmFsdWUgdmFsdWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1Byb3h5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93UHJveHkuY3BwCmluZGV4IDQ4NzUx
M2FhMzUxODM2NjA0MTNkM2E2N2VhODRkZjI0OWNlYTFhNmUuLjgxNzc1YTM1Yzk1OTA0YWJlNmRj
ZDk3ZTI5MjJjMGFjZjE2NWIzMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NV2luZG93UHJveHkuY3BwCkBAIC0xMTgsMTIgKzExOCwxMiBAQCBET01XaW5kb3cqIEpT
RE9NV2luZG93UHJveHk6OnRvV3JhcHBlZChWTSYgdm0sIEpTT2JqZWN0KiB2YWx1ZSkKIAogSlNW
YWx1ZSB0b0pTKEV4ZWNTdGF0ZSogc3RhdGUsIEZyYW1lJiBmcmFtZSkKIHsKLSAgICByZXR1cm4g
ZnJhbWUuc2NyaXB0KCkud2luZG93UHJveHkoY3VycmVudFdvcmxkKCpzdGF0ZSkpOworICAgIHJl
dHVybiBmcmFtZS53aW5kb3dQcm94eUNvbnRyb2xsZXIoKS53aW5kb3dQcm94eShjdXJyZW50V29y
bGQoKnN0YXRlKSk7CiB9CiAKIEpTRE9NV2luZG93UHJveHkqIHRvSlNET01XaW5kb3dQcm94eShG
cmFtZSYgZnJhbWUsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCiB7Ci0gICAgcmV0dXJuIGZyYW1l
LnNjcmlwdCgpLndpbmRvd1Byb3h5KHdvcmxkKTsKKyAgICByZXR1cm4gZnJhbWUud2luZG93UHJv
eHlDb250cm9sbGVyKCkud2luZG93UHJveHkod29ybGQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWNo
ZWRGcmFtZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVk
RnJhbWVEYXRhLmNwcAppbmRleCAxM2U3OGQ0MzdlMTE3N2ZjOTlmNDBhYTVmMGU5ZjE5MjJjNjRl
Y2I5Li43YmY5ZTI1YTU5NGZjMGViZGZlN2YzZDk3ZmE1MTk0YTI1YTI3NDhmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHAK
QEAgLTUxLDE1ICs1MSwxMyBAQCBTY3JpcHRDYWNoZWRGcmFtZURhdGE6OlNjcmlwdENhY2hlZEZy
YW1lRGF0YShGcmFtZSYgZnJhbWUpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soY29tbW9uVk0o
KSk7CiAKLSAgICBhdXRvJiBzY3JpcHRDb250cm9sbGVyID0gZnJhbWUuc2NyaXB0KCk7Ci0KLSAg
ICBmb3IgKGF1dG8gd2luZG93UHJveHkgOiBzY3JpcHRDb250cm9sbGVyLndpbmRvd1Byb3hpZXMo
KSkgeworICAgIGZvciAoYXV0byB3aW5kb3dQcm94eSA6IGZyYW1lLndpbmRvd1Byb3h5Q29udHJv
bGxlcigpLndpbmRvd1Byb3hpZXMoKSkgewogICAgICAgICBhdXRvKiB3aW5kb3cgPSB3aW5kb3dQ
cm94eS0+d2luZG93KCk7CiAgICAgICAgIG1fd2luZG93cy5hZGQoJndpbmRvd1Byb3h5LT53b3Js
ZCgpLCBTdHJvbmc8SlNET01XaW5kb3c+KHdpbmRvdy0+dm0oKSwgd2luZG93KSk7CiAgICAgICAg
IHdpbmRvdy0+c2V0Q29uc29sZUNsaWVudChudWxscHRyKTsKICAgICB9CiAKLSAgICBzY3JpcHRD
b250cm9sbGVyLmF0dGFjaERlYnVnZ2VyKG51bGxwdHIpOworICAgIGZyYW1lLnNjcmlwdCgpLmF0
dGFjaERlYnVnZ2VyKG51bGxwdHIpOwogfQogCiBTY3JpcHRDYWNoZWRGcmFtZURhdGE6On5TY3Jp
cHRDYWNoZWRGcmFtZURhdGEoKQpAQCAtNzQsNyArNzIsNyBAQCB2b2lkIFNjcmlwdENhY2hlZEZy
YW1lRGF0YTo6cmVzdG9yZShGcmFtZSYgZnJhbWUpCiAgICAgUGFnZSogcGFnZSA9IGZyYW1lLnBh
Z2UoKTsKICAgICBhdXRvJiBzY3JpcHRDb250cm9sbGVyID0gZnJhbWUuc2NyaXB0KCk7CiAKLSAg
ICBmb3IgKGF1dG8gd2luZG93UHJveHkgOiBzY3JpcHRDb250cm9sbGVyLndpbmRvd1Byb3hpZXMo
KSkgeworICAgIGZvciAoYXV0byB3aW5kb3dQcm94eSA6IGZyYW1lLndpbmRvd1Byb3h5Q29udHJv
bGxlcigpLndpbmRvd1Byb3hpZXMoKSkgewogICAgICAgICBhdXRvKiB3b3JsZCA9ICZ3aW5kb3dQ
cm94eS0+d29ybGQoKTsKIAogICAgICAgICBpZiAoYXV0byogd2luZG93ID0gbV93aW5kb3dzLmdl
dCh3b3JsZCkuZ2V0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENv
bnRyb2xsZXIuY3BwCmluZGV4IGNiZDllNzAyZWNjZmQ2NTUyZjM5ZmY3Zjg5ZmIzODM2YTkzYTM5
YjMuLjBjODdmYTMyMmE2MzQ1YWJkY2RkYzkwNWVhZGQ1NDVjMDVlM2EwNmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0xMTcsMzgg
KzExNywxNyBAQCBTY3JpcHRDb250cm9sbGVyOjp+U2NyaXB0Q29udHJvbGxlcigpCiAgICAgICAg
IG1fY2FjaGVhYmxlQmluZGluZ1Jvb3RPYmplY3QgPSBudWxscHRyOwogICAgIH0KIAotICAgIC8v
IEl0J3MgbGlrZWx5IHRoYXQgZGVzdHJveWluZyBtX3dpbmRvd1Byb3hpZXMgd2lsbCBjcmVhdGUg
YSBsb3Qgb2YgZ2FyYmFnZS4KLSAgICBpZiAoIW1fd2luZG93UHJveGllcy5pc0VtcHR5KCkpIHsK
LSAgICAgICAgd2hpbGUgKCFtX3dpbmRvd1Byb3hpZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAg
ICBhdXRvIGl0ZXIgPSBtX3dpbmRvd1Byb3hpZXMuYmVnaW4oKTsKLSAgICAgICAgICAgIGl0ZXIt
PnZhbHVlLT53aW5kb3coKS0+c2V0Q29uc29sZUNsaWVudChudWxscHRyKTsKLSAgICAgICAgICAg
IGRlc3Ryb3lXaW5kb3dQcm94eSgqaXRlci0+a2V5KTsKKyAgICAvLyBJdCdzIGxpa2VseSB0aGF0
IGRlc3Ryb3lpbmcgd2luZG93UHJveGllcyB3aWxsIGNyZWF0ZSBhIGxvdCBvZiBnYXJiYWdlLgor
ICAgIGlmICghd2luZG93UHJveHlDb250cm9sbGVyKCkud2luZG93UHJveGllcygpLmlzRW1wdHko
KSkgeworICAgICAgICB3aGlsZSAoIXdpbmRvd1Byb3h5Q29udHJvbGxlcigpLndpbmRvd1Byb3hp
ZXMoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGF1dG8gd2luZG93UHJveHkgPSAqd2luZG93
UHJveHlDb250cm9sbGVyKCkud2luZG93UHJveGllcygpLmJlZ2luKCk7CisgICAgICAgICAgICB3
aW5kb3dQcm94eS5nZXQoKS0+d2luZG93KCktPnNldENvbnNvbGVDbGllbnQobnVsbHB0cik7Cisg
ICAgICAgICAgICB3aW5kb3dQcm94eUNvbnRyb2xsZXIoKS5kZXN0cm95V2luZG93UHJveHkod2lu
ZG93UHJveHkuZ2V0KCktPndvcmxkKCkpOwogICAgICAgICB9CiAgICAgICAgIGNvbGxlY3RHYXJi
YWdlQWZ0ZXJXaW5kb3dQcm94eURlc3RydWN0aW9uKCk7CiAgICAgfQogfQogCi12b2lkIFNjcmlw
dENvbnRyb2xsZXI6OmRlc3Ryb3lXaW5kb3dQcm94eShET01XcmFwcGVyV29ybGQmIHdvcmxkKQot
ewotICAgIEFTU0VSVChtX3dpbmRvd1Byb3hpZXMuY29udGFpbnMoJndvcmxkKSk7Ci0gICAgbV93
aW5kb3dQcm94aWVzLnJlbW92ZSgmd29ybGQpOwotICAgIHdvcmxkLmRpZERlc3Ryb3lXaW5kb3dQ
cm94eSh0aGlzKTsKLX0KLQotSlNET01XaW5kb3dQcm94eSYgU2NyaXB0Q29udHJvbGxlcjo6Y3Jl
YXRlV2luZG93UHJveHkoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKLXsKLSAgICBBU1NFUlQoIW1f
d2luZG93UHJveGllcy5jb250YWlucygmd29ybGQpKTsKLSAgICBBU1NFUlQobV9mcmFtZS5kb2N1
bWVudCgpLT5kb21XaW5kb3coKSk7Ci0KLSAgICBWTSYgdm0gPSB3b3JsZC52bSgpOwotCi0gICAg
U3Ryb25nPEpTRE9NV2luZG93UHJveHk+IHdpbmRvd1Byb3h5KHZtLCAmSlNET01XaW5kb3dQcm94
eTo6Y3JlYXRlKHZtLCAqbV9mcmFtZS5kb2N1bWVudCgpLT5kb21XaW5kb3coKSwgd29ybGQpKTsK
LSAgICBTdHJvbmc8SlNET01XaW5kb3dQcm94eT4gd2luZG93UHJveHkyKHdpbmRvd1Byb3h5KTsK
LSAgICBtX3dpbmRvd1Byb3hpZXMuYWRkKCZ3b3JsZCwgd2luZG93UHJveHkpOwotICAgIHdvcmxk
LmRpZENyZWF0ZVdpbmRvd1Byb3h5KHRoaXMpOwotICAgIHJldHVybiAqd2luZG93UHJveHkuZ2V0
KCk7Ci19Ci0KIEpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbldvcmxkKGNvbnN0
IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIEV4
Y2VwdGlvbkRldGFpbHMqIGV4Y2VwdGlvbkRldGFpbHMpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxv
Y2sod29ybGQudm0oKSk7CkBAIC0xNjMsNyArMTQyLDcgQEAgSlNWYWx1ZSBTY3JpcHRDb250cm9s
bGVyOjpldmFsdWF0ZUluV29ybGQoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSwg
RE8KICAgICAvLyBhbmQgZmFsc2UgZm9yIDxzY3JpcHQ+ZG9Tb21ldGhpbmcoKTwvc2NyaXB0Pi4g
Q2hlY2sgaWYgaXQgaGFzIHRoZQogICAgIC8vIGV4cGVjdGVkIHZhbHVlIGluIGFsbCBjYXNlcy4K
ICAgICAvLyBTZWUgc21hcnQgd2luZG93Lm9wZW4gcG9saWN5IGZvciB3aGVyZSB0aGlzIGlzIHVz
ZWQuCi0gICAgYXV0byYgcHJveHkgPSAqd2luZG93UHJveHkod29ybGQpOworICAgIGF1dG8mIHBy
b3h5ID0gKndpbmRvd1Byb3h5Q29udHJvbGxlcigpLndpbmRvd1Byb3h5KHdvcmxkKTsKICAgICBh
dXRvJiBleGVjID0gKnByb3h5LndpbmRvdygpLT5nbG9iYWxFeGVjKCk7CiAgICAgY29uc3QgU3Ry
aW5nKiBzYXZlZFNvdXJjZVVSTCA9IG1fc291cmNlVVJMOwogICAgIG1fc291cmNlVVJMID0gJnNv
dXJjZVVSTDsKQEAgLTE5Niw3ICsxNzUsNyBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmxvYWRN
b2R1bGVTY3JpcHRJbldvcmxkKExvYWRhYmxlTW9kdWxlU2NyaXB0JiBtb2R1bGVTY3JpcAogewog
ICAgIEpTTG9ja0hvbGRlciBsb2NrKHdvcmxkLnZtKCkpOwogCi0gICAgYXV0byYgcHJveHkgPSAq
d2luZG93UHJveHkod29ybGQpOworICAgIGF1dG8mIHByb3h5ID0gKndpbmRvd1Byb3h5Q29udHJv
bGxlcigpLndpbmRvd1Byb3h5KHdvcmxkKTsKICAgICBhdXRvJiBzdGF0ZSA9ICpwcm94eS53aW5k
b3coKS0+Z2xvYmFsRXhlYygpOwogCiAgICAgYXV0byYgcHJvbWlzZSA9IEpTTWFpblRocmVhZEV4
ZWNTdGF0ZTo6bG9hZE1vZHVsZShzdGF0ZSwgbW9kdWxlTmFtZSwgSlNDOjpKU1NjcmlwdEZldGNo
UGFyYW1ldGVyczo6Y3JlYXRlKHN0YXRlLnZtKCksIFdURk1vdmUodG9wTGV2ZWxGZXRjaFBhcmFt
ZXRlcnMpKSwgSlNDOjpKU1NjcmlwdEZldGNoZXI6OmNyZWF0ZShzdGF0ZS52bSgpLCB7ICZtb2R1
bGVTY3JpcHQgfSkpOwpAQCAtMjEyLDcgKzE5MSw3IEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6
bG9hZE1vZHVsZVNjcmlwdEluV29ybGQoTG9hZGFibGVNb2R1bGVTY3JpcHQmIG1vZHVsZVNjcmlw
CiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sod29ybGQudm0oKSk7CiAKLSAgICBhdXRvJiBwcm94
eSA9ICp3aW5kb3dQcm94eSh3b3JsZCk7CisgICAgYXV0byYgcHJveHkgPSAqd2luZG93UHJveHlD
b250cm9sbGVyKCkud2luZG93UHJveHkod29ybGQpOwogICAgIGF1dG8mIHN0YXRlID0gKnByb3h5
LndpbmRvdygpLT5nbG9iYWxFeGVjKCk7CiAKICAgICBhdXRvJiBwcm9taXNlID0gSlNNYWluVGhy
ZWFkRXhlY1N0YXRlOjpsb2FkTW9kdWxlKHN0YXRlLCBzb3VyY2VDb2RlLmpzU291cmNlQ29kZSgp
LCBKU0M6OkpTU2NyaXB0RmV0Y2hlcjo6Y3JlYXRlKHN0YXRlLnZtKCksIHsgJm1vZHVsZVNjcmlw
dCB9KSk7CkBAIC0yMjgsNyArMjA3LDcgQEAgSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6
OmxpbmtBbmRFdmFsdWF0ZU1vZHVsZVNjcmlwdEluV29ybGQoTG9hZGFibGVNb2R1bGUKIHsKICAg
ICBKU0xvY2tIb2xkZXIgbG9jayh3b3JsZC52bSgpKTsKIAotICAgIGF1dG8mIHByb3h5ID0gKndp
bmRvd1Byb3h5KHdvcmxkKTsKKyAgICBhdXRvJiBwcm94eSA9ICp3aW5kb3dQcm94eUNvbnRyb2xs
ZXIoKS53aW5kb3dQcm94eSh3b3JsZCk7CiAgICAgYXV0byYgc3RhdGUgPSAqcHJveHkud2luZG93
KCktPmdsb2JhbEV4ZWMoKTsKIAogICAgIC8vIEZJWE1FOiBQcmV2ZW50aW5nIEZyYW1lIGZyb20g
YmVpbmcgZGVzdHJveWVkIGlzIGVzc2VudGlhbGx5IHVubmVjZXNzYXJ5LgpAQCAtMjU3LDcgKzIz
Niw3IEBAIEpTQzo6SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZU1vZHVsZShjb25z
dCBVUkwmIHNvdXJjZVVSTCwgSlNNb2R1bGVSZWNvCiAKICAgICBjb25zdCBhdXRvJiBqc1NvdXJj
ZUNvZGUgPSBtb2R1bGVSZWNvcmQuc291cmNlQ29kZSgpOwogCi0gICAgYXV0byYgcHJveHkgPSAq
d2luZG93UHJveHkod29ybGQpOworICAgIGF1dG8mIHByb3h5ID0gKndpbmRvd1Byb3h5Q29udHJv
bGxlcigpLndpbmRvd1Byb3h5KHdvcmxkKTsKICAgICBhdXRvJiBzdGF0ZSA9ICpwcm94eS53aW5k
b3coKS0+Z2xvYmFsRXhlYygpOwogICAgIFNldEZvclNjb3BlPGNvbnN0IFN0cmluZyo+IHNvdXJj
ZVVSTFNjb3BlKG1fc291cmNlVVJMLCAmc291cmNlVVJMLnN0cmluZygpKTsKIApAQCAtMjgxLDEx
ICsyNjAsNiBAQCBSZWY8RE9NV3JhcHBlcldvcmxkPiBTY3JpcHRDb250cm9sbGVyOjpjcmVhdGVX
b3JsZCgpCiAgICAgcmV0dXJuIERPTVdyYXBwZXJXb3JsZDo6Y3JlYXRlKGNvbW1vblZNKCkpOwog
fQogCi1WZWN0b3I8SlNDOjpTdHJvbmc8SlNET01XaW5kb3dQcm94eT4+IFNjcmlwdENvbnRyb2xs
ZXI6OndpbmRvd1Byb3hpZXMoKQotewotICAgIHJldHVybiBjb3B5VG9WZWN0b3IobV93aW5kb3dQ
cm94aWVzLnZhbHVlcygpKTsKLX0KLQogdm9pZCBTY3JpcHRDb250cm9sbGVyOjpnZXRBbGxXb3Js
ZHMoVmVjdG9yPFJlZjxET01XcmFwcGVyV29ybGQ+PiYgd29ybGRzKQogewogICAgIHN0YXRpY19j
YXN0PEpTVk1DbGllbnREYXRhKj4oY29tbW9uVk0oKS5jbGllbnREYXRhKS0+Z2V0QWxsV29ybGRz
KHdvcmxkcyk7CkBAIC0yOTMsMTMgKzI2NywxMyBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6Omdl
dEFsbFdvcmxkcyhWZWN0b3I8UmVmPERPTVdyYXBwZXJXb3JsZD4+JiB3b3JsZHMpCiAKIHZvaWQg
U2NyaXB0Q29udHJvbGxlcjo6Y2xlYXJXaW5kb3dQcm94aWVzTm90TWF0Y2hpbmdET01XaW5kb3co
RE9NV2luZG93KiBuZXdET01XaW5kb3csIGJvb2wgZ29pbmdJbnRvUGFnZUNhY2hlKQogewotICAg
IGlmIChtX3dpbmRvd1Byb3hpZXMuaXNFbXB0eSgpKQorICAgIGlmICh3aW5kb3dQcm94eUNvbnRy
b2xsZXIoKS53aW5kb3dQcm94aWVzKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKICAg
ICBKU0xvY2tIb2xkZXIgbG9jayhjb21tb25WTSgpKTsKIAotICAgIGZvciAoYXV0byYgd2luZG93
UHJveHkgOiB3aW5kb3dQcm94aWVzKCkpIHsKLSAgICAgICAgaWYgKCZ3aW5kb3dQcm94eS0+d2lu
ZG93KCktPndyYXBwZWQoKSA9PSBuZXdET01XaW5kb3cpCisgICAgZm9yIChhdXRvJiB3aW5kb3dQ
cm94eSA6IHdpbmRvd1Byb3h5Q29udHJvbGxlcigpLndpbmRvd1Byb3hpZXMoKSkgeworICAgICAg
ICBpZiAoJndpbmRvd1Byb3h5LT53cmFwcGVkKCkgPT0gbmV3RE9NV2luZG93KQogICAgICAgICAg
ICAgY29udGludWU7CiAKICAgICAgICAgLy8gQ2xlYXIgdGhlIGRlYnVnZ2VyIGFuZCBjb25zb2xl
IGZyb20gdGhlIGN1cnJlbnQgd2luZG93IGJlZm9yZSBzZXR0aW5nIHRoZSBuZXcgd2luZG93LgpA
QCAtMzE4LDEzICsyOTIsMTMgQEAgdm9pZCBTY3JpcHRDb250cm9sbGVyOjpzZXRET01XaW5kb3dG
b3JXaW5kb3dQcm94eShET01XaW5kb3cqIG5ld0RPTVdpbmRvdykKIHsKICAgICBBU1NFUlQobmV3
RE9NV2luZG93KTsKIAotICAgIGlmIChtX3dpbmRvd1Byb3hpZXMuaXNFbXB0eSgpKQorICAgIGlm
ICh3aW5kb3dQcm94eUNvbnRyb2xsZXIoKS53aW5kb3dQcm94aWVzKCkuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm47CiAgICAgCiAgICAgSlNMb2NrSG9sZGVyIGxvY2soY29tbW9uVk0oKSk7CiAg
ICAgCi0gICAgZm9yIChhdXRvJiB3aW5kb3dQcm94eSA6IHdpbmRvd1Byb3hpZXMoKSkgewotICAg
ICAgICBpZiAoJndpbmRvd1Byb3h5LT53aW5kb3coKS0+d3JhcHBlZCgpID09IG5ld0RPTVdpbmRv
dykKKyAgICBmb3IgKGF1dG8mIHdpbmRvd1Byb3h5IDogd2luZG93UHJveHlDb250cm9sbGVyKCku
d2luZG93UHJveGllcygpKSB7CisgICAgICAgIGlmICgmd2luZG93UHJveHktPndyYXBwZWQoKSA9
PSBuZXdET01XaW5kb3cpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgCiAgICAgICAg
IHdpbmRvd1Byb3h5LT5zZXRXaW5kb3coKm5ld0RPTVdpbmRvdyk7CkBAIC0zNDQsMTEgKzMxOCw5
IEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6c2V0RE9NV2luZG93Rm9yV2luZG93UHJveHkoRE9N
V2luZG93KiBuZXdET01XaW5kb3cpCiAKIEpTRE9NV2luZG93UHJveHkqIFNjcmlwdENvbnRyb2xs
ZXI6OmluaXRTY3JpcHQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKIHsKLSAgICBBU1NFUlQoIW1f
d2luZG93UHJveGllcy5jb250YWlucygmd29ybGQpKTsKLQogICAgIEpTTG9ja0hvbGRlciBsb2Nr
KHdvcmxkLnZtKCkpOwogCi0gICAgYXV0byYgd2luZG93UHJveHkgPSBjcmVhdGVXaW5kb3dQcm94
eSh3b3JsZCk7CisgICAgYXV0byYgd2luZG93UHJveHkgPSB3aW5kb3dQcm94eUNvbnRyb2xsZXIo
KS5jcmVhdGVXaW5kb3dQcm94eSh3b3JsZCk7CiAKICAgICB3aW5kb3dQcm94eS53aW5kb3coKS0+
dXBkYXRlRG9jdW1lbnQoKTsKIApAQCAtMzc2LDcgKzM0OCw3IEBAIHN0YXRpYyBJZGVudGlmaWVy
IGpzVmFsdWVUb01vZHVsZUtleShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiAKIHZv
aWQgU2NyaXB0Q29udHJvbGxlcjo6c2V0dXBNb2R1bGVTY3JpcHRIYW5kbGVycyhMb2FkYWJsZU1v
ZHVsZVNjcmlwdCYgbW9kdWxlU2NyaXB0UmVmLCBKU0ludGVybmFsUHJvbWlzZSYgcHJvbWlzZSwg
RE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKIHsKLSAgICBhdXRvJiBwcm94eSA9ICp3aW5kb3dQcm94
eSh3b3JsZCk7CisgICAgYXV0byYgcHJveHkgPSAqd2luZG93UHJveHlDb250cm9sbGVyKCkud2lu
ZG93UHJveHkod29ybGQpOwogICAgIGF1dG8mIHN0YXRlID0gKnByb3h5LndpbmRvdygpLT5nbG9i
YWxFeGVjKCk7CiAKICAgICAvLyBJdCBpcyBub3QgZ3VhcmFudGVlZCB0aGF0IGVpdGhlciBmdWxm
aWxsSGFuZGxlciBvciByZWplY3RIYW5kbGVyIGlzIGV2ZW50dWFsbHkgY2FsbGVkLgpAQCAtNDI4
LDYgKzQwMCwxMSBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OnNldHVwTW9kdWxlU2NyaXB0SGFu
ZGxlcnMoTG9hZGFibGVNb2R1bGVTY3JpcHQmIG1vZHVsZVNjcgogICAgIHByb21pc2UudGhlbigm
c3RhdGUsICZmdWxmaWxsSGFuZGxlciwgJnJlamVjdEhhbmRsZXIpOwogfQogCitXaW5kb3dQcm94
eUNvbnRyb2xsZXImIFNjcmlwdENvbnRyb2xsZXI6OndpbmRvd1Byb3h5Q29udHJvbGxlcigpCit7
CisgICAgcmV0dXJuIG1fZnJhbWUud2luZG93UHJveHlDb250cm9sbGVyKCk7Cit9CisKIFRleHRQ
b3NpdGlvbiBTY3JpcHRDb250cm9sbGVyOjpldmVudEhhbmRsZXJQb3NpdGlvbigpIGNvbnN0CiB7
CiAgICAgLy8gRklYTUU6IElmIHdlIGFyZSBub3QgY3VycmVudGx5IHBhcnNpbmcsIHdlIHNob3Vs
ZCB1c2Ugb3VyIGN1cnJlbnQgbG9jYXRpb24KQEAgLTQ0Myw3ICs0MjAsNyBAQCBUZXh0UG9zaXRp
b24gU2NyaXB0Q29udHJvbGxlcjo6ZXZlbnRIYW5kbGVyUG9zaXRpb24oKSBjb25zdAogCiB2b2lk
IFNjcmlwdENvbnRyb2xsZXI6OmVuYWJsZUV2YWwoKQogewotICAgIGF1dG8qIHdpbmRvd1Byb3h5
ID0gZXhpc3RpbmdXaW5kb3dQcm94eShtYWluVGhyZWFkTm9ybWFsV29ybGQoKSk7CisgICAgYXV0
byogd2luZG93UHJveHkgPSB3aW5kb3dQcm94eUNvbnRyb2xsZXIoKS5leGlzdGluZ1dpbmRvd1By
b3h5KG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKICAgICBpZiAoIXdpbmRvd1Byb3h5KQogICAg
ICAgICByZXR1cm47CiAgICAgd2luZG93UHJveHktPndpbmRvdygpLT5zZXRFdmFsRW5hYmxlZCh0
cnVlKTsKQEAgLTQ1MSw3ICs0MjgsNyBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmVuYWJsZUV2
YWwoKQogCiB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmVuYWJsZVdlYkFzc2VtYmx5KCkKIHsKLSAg
ICBhdXRvKiB3aW5kb3dQcm94eSA9IGV4aXN0aW5nV2luZG93UHJveHkobWFpblRocmVhZE5vcm1h
bFdvcmxkKCkpOworICAgIGF1dG8qIHdpbmRvd1Byb3h5ID0gd2luZG93UHJveHlDb250cm9sbGVy
KCkuZXhpc3RpbmdXaW5kb3dQcm94eShtYWluVGhyZWFkTm9ybWFsV29ybGQoKSk7CiAgICAgaWYg
KCF3aW5kb3dQcm94eSkKICAgICAgICAgcmV0dXJuOwogICAgIHdpbmRvd1Byb3h5LT53aW5kb3co
KS0+c2V0V2ViQXNzZW1ibHlFbmFibGVkKHRydWUpOwpAQCAtNDU5LDcgKzQzNiw3IEBAIHZvaWQg
U2NyaXB0Q29udHJvbGxlcjo6ZW5hYmxlV2ViQXNzZW1ibHkoKQogCiB2b2lkIFNjcmlwdENvbnRy
b2xsZXI6OmRpc2FibGVFdmFsKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQogewotICAgIGF1
dG8qIHdpbmRvd1Byb3h5ID0gZXhpc3RpbmdXaW5kb3dQcm94eShtYWluVGhyZWFkTm9ybWFsV29y
bGQoKSk7CisgICAgYXV0byogd2luZG93UHJveHkgPSB3aW5kb3dQcm94eUNvbnRyb2xsZXIoKS5l
eGlzdGluZ1dpbmRvd1Byb3h5KG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKICAgICBpZiAoIXdp
bmRvd1Byb3h5KQogICAgICAgICByZXR1cm47CiAgICAgd2luZG93UHJveHktPndpbmRvdygpLT5z
ZXRFdmFsRW5hYmxlZChmYWxzZSwgZXJyb3JNZXNzYWdlKTsKQEAgLTQ2Nyw3ICs0NDQsNyBAQCB2
b2lkIFNjcmlwdENvbnRyb2xsZXI6OmRpc2FibGVFdmFsKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNz
YWdlKQogCiB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmRpc2FibGVXZWJBc3NlbWJseShjb25zdCBT
dHJpbmcmIGVycm9yTWVzc2FnZSkKIHsKLSAgICBhdXRvKiB3aW5kb3dQcm94eSA9IGV4aXN0aW5n
V2luZG93UHJveHkobWFpblRocmVhZE5vcm1hbFdvcmxkKCkpOworICAgIGF1dG8qIHdpbmRvd1By
b3h5ID0gd2luZG93UHJveHlDb250cm9sbGVyKCkuZXhpc3RpbmdXaW5kb3dQcm94eShtYWluVGhy
ZWFkTm9ybWFsV29ybGQoKSk7CiAgICAgaWYgKCF3aW5kb3dQcm94eSkKICAgICAgICAgcmV0dXJu
OwogICAgIHdpbmRvd1Byb3h5LT53aW5kb3coKS0+c2V0V2ViQXNzZW1ibHlFbmFibGVkKGZhbHNl
LCBlcnJvck1lc3NhZ2UpOwpAQCAtNDg2LDcgKzQ2Myw3IEBAIGJvb2wgU2NyaXB0Q29udHJvbGxl
cjo6Y2FuQWNjZXNzRnJvbUN1cnJlbnRPcmlnaW4oRnJhbWUqIGZyYW1lKQogCiB2b2lkIFNjcmlw
dENvbnRyb2xsZXI6OmF0dGFjaERlYnVnZ2VyKEpTQzo6RGVidWdnZXIqIGRlYnVnZ2VyKQogewot
ICAgIGZvciAoYXV0byYgd2luZG93UHJveHkgOiB3aW5kb3dQcm94aWVzKCkpCisgICAgZm9yIChh
dXRvJiB3aW5kb3dQcm94eSA6IHdpbmRvd1Byb3h5Q29udHJvbGxlcigpLndpbmRvd1Byb3hpZXMo
KSkKICAgICAgICAgYXR0YWNoRGVidWdnZXIod2luZG93UHJveHkuZ2V0KCksIGRlYnVnZ2VyKTsK
IH0KIApAQCAtNTA2LDcgKzQ4Myw3IEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6YXR0YWNoRGVi
dWdnZXIoSlNET01XaW5kb3dQcm94eSogcHJveHksIEpTQzo6RGVidWdnZXIqIGRlCiAKIHZvaWQg
U2NyaXB0Q29udHJvbGxlcjo6dXBkYXRlRG9jdW1lbnQoKQogewotICAgIGZvciAoYXV0byYgd2lu
ZG93UHJveHkgOiB3aW5kb3dQcm94aWVzKCkpIHsKKyAgICBmb3IgKGF1dG8mIHdpbmRvd1Byb3h5
IDogd2luZG93UHJveHlDb250cm9sbGVyKCkud2luZG93UHJveGllcygpKSB7CiAgICAgICAgIEpT
TG9ja0hvbGRlciBsb2NrKHdpbmRvd1Byb3h5LT53b3JsZCgpLnZtKCkpOwogICAgICAgICB3aW5k
b3dQcm94eS0+d2luZG93KCktPnVwZGF0ZURvY3VtZW50KCk7CiAgICAgfQpAQCAtNTUwLDcgKzUy
Nyw3IEBAIFJlZjxCaW5kaW5nczo6Um9vdE9iamVjdD4gU2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRl
Um9vdE9iamVjdCh2b2lkKiBuYXRpdmVIYW5kbGUpCiAKIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6
Y29sbGVjdElzb2xhdGVkQ29udGV4dHMoVmVjdG9yPHN0ZDo6cGFpcjxKU0M6OkV4ZWNTdGF0ZSos
IFNlY3VyaXR5T3JpZ2luKj4+JiByZXN1bHQpCiB7Ci0gICAgZm9yIChhdXRvJiB3aW5kb3dQcm94
eSA6IG1fd2luZG93UHJveGllcy52YWx1ZXMoKSkgeworICAgIGZvciAoYXV0byYgd2luZG93UHJv
eHkgOiB3aW5kb3dQcm94eUNvbnRyb2xsZXIoKS53aW5kb3dQcm94aWVzKCkpIHsKICAgICAgICAg
YXV0byogZXhlYyA9IHdpbmRvd1Byb3h5LT53aW5kb3coKS0+Z2xvYmFsRXhlYygpOwogICAgICAg
ICBhdXRvKiBvcmlnaW4gPSAmd2luZG93UHJveHktPndpbmRvdygpLT53cmFwcGVkKCkuZG9jdW1l
bnQoKS0+c2VjdXJpdHlPcmlnaW4oKTsKICAgICAgICAgcmVzdWx0LmFwcGVuZChzdGQ6Om1ha2Vf
cGFpcihleGVjLCBvcmlnaW4pKTsKQEAgLTU2NSw3ICs1NDIsNyBAQCBOUE9iamVjdCogU2NyaXB0
Q29udHJvbGxlcjo6d2luZG93U2NyaXB0TlBPYmplY3QoKQogICAgICAgICBpZiAoY2FuRXhlY3V0
ZVNjcmlwdHMoTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQpKSB7CiAgICAgICAgICAgICAvLyBKYXZh
U2NyaXB0IGlzIGVuYWJsZWQsIHNvIHRoZXJlIGlzIGEgSmF2YVNjcmlwdCB3aW5kb3cgb2JqZWN0
LgogICAgICAgICAgICAgLy8gUmV0dXJuIGFuIE5QT2JqZWN0IGJvdW5kIHRvIHRoZSB3aW5kb3cg
b2JqZWN0LgotICAgICAgICAgICAgYXV0byogd2luZG93ID0gd2luZG93UHJveHkocGx1Z2luV29y
bGQoKSktPndpbmRvdygpOworICAgICAgICAgICAgYXV0byogd2luZG93ID0gd2luZG93UHJveHlD
b250cm9sbGVyKCkud2luZG93UHJveHkocGx1Z2luV29ybGQoKSktPndpbmRvdygpOwogICAgICAg
ICAgICAgQVNTRVJUKHdpbmRvdyk7CiAgICAgICAgICAgICBCaW5kaW5nczo6Um9vdE9iamVjdCog
cm9vdCA9IGJpbmRpbmdSb290T2JqZWN0KCk7CiAgICAgICAgICAgICBtX3dpbmRvd1NjcmlwdE5Q
T2JqZWN0ID0gX05QTl9DcmVhdGVTY3JpcHRPYmplY3QoMCwgd2luZG93LCByb290KTsKQEAgLTcy
Niw3ICs3MDMsNyBAQCBib29sIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVJZkphdmFTY3JpcHRV
UkwoY29uc3QgVVJMJiB1cmwsIFNob3VsZFJlcGxhY2VEb2N1bQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAogICAgIFN0cmluZyBzY3JpcHRSZXN1bHQ7Ci0gICAgaWYgKCFyZXN1bHQgfHwgIXJlc3Vs
dC5nZXRTdHJpbmcod2luZG93UHJveHkobWFpblRocmVhZE5vcm1hbFdvcmxkKCkpLT53aW5kb3co
KS0+Z2xvYmFsRXhlYygpLCBzY3JpcHRSZXN1bHQpKQorICAgIGlmICghcmVzdWx0IHx8ICFyZXN1
bHQuZ2V0U3RyaW5nKHdpbmRvd1Byb3h5Q29udHJvbGxlcigpLndpbmRvd1Byb3h5KG1haW5UaHJl
YWROb3JtYWxXb3JsZCgpKS0+d2luZG93KCktPmdsb2JhbEV4ZWMoKSwgc2NyaXB0UmVzdWx0KSkK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGFsd2F5cyBy
ZXBsYWNlIHRoZSBkb2N1bWVudCwgYnV0IGRvaW5nIHNvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKaW5kZXggOGI2MDg4NTdkNjM0NDlhNmZhYWZmZWZl
Mjk0YTNlNzVhMGJhM2ZiMS4uMzEyZjFkNWY1MjkyMDk0ZjJhMTdhOTFjMjNkYjk5Y2E2MGJmNjlm
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaApA
QCAtMjMsNiArMjMsNyBAQAogCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJUeXBlcy5oIgogI2luY2x1
ZGUgIkpTRE9NV2luZG93UHJveHkuaCIKKyNpbmNsdWRlICJXaW5kb3dQcm94eUNvbnRyb2xsZXIu
aCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9TdHJvbmcuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtNzIsNyArNzMs
NiBAQCBlbnVtIFJlYXNvbkZvckNhbGxpbmdDYW5FeGVjdXRlU2NyaXB0cyB7CiBjbGFzcyBTY3Jp
cHRDb250cm9sbGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIAotICAgIHVzaW5n
IFByb3h5TWFwID0gSGFzaE1hcDxSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiwgSlNDOjpTdHJvbmc8
SlNET01XaW5kb3dQcm94eT4+OwogICAgIHVzaW5nIFJvb3RPYmplY3RNYXAgPSBIYXNoTWFwPHZv
aWQqLCBSZWY8SlNDOjpCaW5kaW5nczo6Um9vdE9iamVjdD4+OwogCiBwdWJsaWM6CkBAIC04MSwy
NCArODEsOSBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPERPTVdy
YXBwZXJXb3JsZD4gY3JlYXRlV29ybGQoKTsKIAotICAgIEpTRE9NV2luZG93UHJveHkmIGNyZWF0
ZVdpbmRvd1Byb3h5KERPTVdyYXBwZXJXb3JsZCYpOwotICAgIHZvaWQgZGVzdHJveVdpbmRvd1By
b3h5KERPTVdyYXBwZXJXb3JsZCYpOwotCi0gICAgVmVjdG9yPEpTQzo6U3Ryb25nPEpTRE9NV2lu
ZG93UHJveHk+PiB3aW5kb3dQcm94aWVzKCk7Ci0KLSAgICBKU0RPTVdpbmRvd1Byb3h5KiB3aW5k
b3dQcm94eShET01XcmFwcGVyV29ybGQmIHdvcmxkKQotICAgIHsKLSAgICAgICAgYXV0byBpdGVy
ID0gbV93aW5kb3dQcm94aWVzLmZpbmQoJndvcmxkKTsKLSAgICAgICAgcmV0dXJuIChpdGVyICE9
IG1fd2luZG93UHJveGllcy5lbmQoKSkgPyBpdGVyLT52YWx1ZS5nZXQoKSA6IGluaXRTY3JpcHQo
d29ybGQpOwotICAgIH0KLSAgICBKU0RPTVdpbmRvd1Byb3h5KiBleGlzdGluZ1dpbmRvd1Byb3h5
KERPTVdyYXBwZXJXb3JsZCYgd29ybGQpIGNvbnN0Ci0gICAgewotICAgICAgICBhdXRvIGl0ZXIg
PSBtX3dpbmRvd1Byb3hpZXMuZmluZCgmd29ybGQpOwotICAgICAgICByZXR1cm4gKGl0ZXIgIT0g
bV93aW5kb3dQcm94aWVzLmVuZCgpKSA/IGl0ZXItPnZhbHVlLmdldCgpIDogMDsKLSAgICB9CiAg
ICAgSlNET01XaW5kb3cqIGdsb2JhbE9iamVjdChET01XcmFwcGVyV29ybGQmIHdvcmxkKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIHdpbmRvd1Byb3h5KHdvcmxkKS0+d2luZG93KCk7CisgICAgICAg
IHJldHVybiB3aW5kb3dQcm94eUNvbnRyb2xsZXIoKS53aW5kb3dQcm94eSh3b3JsZCktPndpbmRv
dygpOwogICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIGdldEFsbFdvcmxkcyhWZWN0b3I8UmVmPERP
TVdyYXBwZXJXb3JsZD4+Jik7CkBAIC0xNDgsNyArMTMzLDcgQEAgcHVibGljOgogICAgIGNvbnN0
IFN0cmluZyogc291cmNlVVJMKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VVUkw7IH0gLy8gMCBp
ZiB3ZSBhcmUgbm90IGV2YWx1YXRpbmcgYW55IHNjcmlwdAogCiAgICAgdm9pZCBjbGVhcldpbmRv
d1Byb3hpZXNOb3RNYXRjaGluZ0RPTVdpbmRvdyhET01XaW5kb3cqLCBib29sIGdvaW5nSW50b1Bh
Z2VDYWNoZSk7Ci0gICAgdm9pZCBzZXRET01XaW5kb3dGb3JXaW5kb3dQcm94eShET01XaW5kb3cq
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldERPTVdpbmRvd0ZvcldpbmRvd1Byb3h5KERP
TVdpbmRvdyopOwogICAgIHZvaWQgdXBkYXRlRG9jdW1lbnQoKTsKIAogICAgIHZvaWQgbmFtZWRJ
dGVtQWRkZWQoSFRNTERvY3VtZW50KiwgY29uc3QgQXRvbWljU3RyaW5nJikgeyB9CkBAIC0xNzgs
MTMgKzE2MywxNSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgTlBPYmplY3QqIHdpbmRv
d1NjcmlwdE5QT2JqZWN0KCk7CiAjZW5kaWYKIAotcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9S
VCBKU0RPTVdpbmRvd1Byb3h5KiBpbml0U2NyaXB0KERPTVdyYXBwZXJXb3JsZCYpOworCitwcml2
YXRlOgogICAgIHZvaWQgc2V0dXBNb2R1bGVTY3JpcHRIYW5kbGVycyhMb2FkYWJsZU1vZHVsZVNj
cmlwdCYsIEpTQzo6SlNJbnRlcm5hbFByb21pc2UmLCBET01XcmFwcGVyV29ybGQmKTsKIAogICAg
IHZvaWQgZGlzY29ubmVjdFBsYXRmb3JtU2NyaXB0T2JqZWN0cygpOwogCi0gICAgUHJveHlNYXAg
bV93aW5kb3dQcm94aWVzOworICAgIFdFQkNPUkVfRVhQT1JUIFdpbmRvd1Byb3h5Q29udHJvbGxl
ciYgd2luZG93UHJveHlDb250cm9sbGVyKCk7CisKICAgICBGcmFtZSYgbV9mcmFtZTsKICAgICBj
b25zdCBTdHJpbmcqIG1fc291cmNlVVJMOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0Q29udHJvbGxlck1hYy5tbQppbmRleCAxZmYwOTJmZTI4OGIyMjQ3ODFmZjli
MjU5YmMwOGIzMTNmN2YyZWFjLi5lMGJjNGI5ZjZiYzNjOWRmYWZjZjBjNjJiMmZjMTQyMDk3YTFk
MjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xs
ZXJNYWMubW0KQEAgLTEwMyw3ICsxMDMsNyBAQCBXZWJTY3JpcHRPYmplY3QgKlNjcmlwdENvbnRy
b2xsZXI6OndpbmRvd1NjcmlwdE9iamVjdCgpCiAgICAgaWYgKCFtX3dpbmRvd1NjcmlwdE9iamVj
dCkgewogICAgICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKGNvbW1vblZNKCkpOwogICAgICAg
ICBKU0M6OkJpbmRpbmdzOjpSb290T2JqZWN0KiByb290ID0gYmluZGluZ1Jvb3RPYmplY3QoKTsK
LSAgICAgICAgbV93aW5kb3dTY3JpcHRPYmplY3QgPSBbV2ViU2NyaXB0T2JqZWN0IHNjcmlwdE9i
amVjdEZvckpTT2JqZWN0OnRvUmVmKHdpbmRvd1Byb3h5KHBsdWdpbldvcmxkKCkpKSBvcmlnaW5S
b290T2JqZWN0OnJvb3Qgcm9vdE9iamVjdDpyb290XTsKKyAgICAgICAgbV93aW5kb3dTY3JpcHRP
YmplY3QgPSBbV2ViU2NyaXB0T2JqZWN0IHNjcmlwdE9iamVjdEZvckpTT2JqZWN0OnRvUmVmKHdp
bmRvd1Byb3h5Q29udHJvbGxlcigpLndpbmRvd1Byb3h5KHBsdWdpbldvcmxkKCkpKSBvcmlnaW5S
b290T2JqZWN0OnJvb3Qgcm9vdE9iamVjdDpyb290XTsKICAgICB9CiAKICAgICByZXR1cm4gbV93
aW5kb3dTY3JpcHRPYmplY3QuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRTdGF0ZS5jcHAKaW5kZXggMTViZTI0ZGJiMDUyM2NkMzNhMzBiYjU5NmQ4MGU2YmNlNmMzMzcx
NS4uYzgzNDRjYzMzZTE4MjViMGFlZmY0NzZhZDE3ODA2MGIxMmNkOGEwMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcApAQCAtNzUsNyArNzUsNyBAQCBKU0M6
OkV4ZWNTdGF0ZSogbWFpbldvcmxkRXhlY1N0YXRlKEZyYW1lKiBmcmFtZSkKIHsKICAgICBpZiAo
IWZyYW1lKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gZnJhbWUtPnNjcmlw
dCgpLndpbmRvd1Byb3h5KG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKS0+d2luZG93KCktPmdsb2Jh
bEV4ZWMoKTsKKyAgICByZXR1cm4gZnJhbWUtPndpbmRvd1Byb3h5Q29udHJvbGxlcigpLndpbmRv
d1Byb3h5KG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKS0+d2luZG93KCktPmdsb2JhbEV4ZWMoKTsK
IH0KIAogSlNDOjpFeGVjU3RhdGUqIGV4ZWNTdGF0ZUZyb21Ob2RlKERPTVdyYXBwZXJXb3JsZCYg
d29ybGQsIE5vZGUqIG5vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9XaW5kb3dQcm94eUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
V2luZG93UHJveHlDb250cm9sbGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZDAxMGQyYWE5MWU3YjljYTNk
YTBlOWYyOTViMGJmYTJlNGQ2ZGMzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvV2luZG93UHJveHlDb250cm9sbGVyLmNwcApAQCAtMCwwICsxLDc0IEBACisv
KgorICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5v
cmcpCisgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCisg
KiAgQ29weXJpZ2h0IChDKSAyMDA2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJl
CisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwg
Qm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIldpbmRvd1Byb3h5Q29udHJvbGxlci5oIgorCisjaW5jbHVkZSAiRnJhbWUuaCIK
KyNpbmNsdWRlICJSZW1vdGVGcmFtZS5oIgorI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIK
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0xvY2suaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitXaW5kb3dQcm94eUNvbnRyb2xsZXI6OldpbmRvd1Byb3h5Q29udHJvbGxlcihBYnN0cmFj
dEZyYW1lJiBmcmFtZSkKKyAgICA6IG1fZnJhbWUoZnJhbWUpCit7Cit9CisKK3ZvaWQgV2luZG93
UHJveHlDb250cm9sbGVyOjpkZXN0cm95V2luZG93UHJveHkoRE9NV3JhcHBlcldvcmxkJiB3b3Js
ZCkKK3sKKyAgICBBU1NFUlQobV93aW5kb3dQcm94aWVzLmNvbnRhaW5zKCZ3b3JsZCkpOworICAg
IG1fd2luZG93UHJveGllcy5yZW1vdmUoJndvcmxkKTsKKyAgICB3b3JsZC5kaWREZXN0cm95V2lu
ZG93UHJveHkodGhpcyk7Cit9CisKK0pTRE9NV2luZG93UHJveHkmIFdpbmRvd1Byb3h5Q29udHJv
bGxlcjo6Y3JlYXRlV2luZG93UHJveHkoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKK3sKKyAgICBB
U1NFUlQoIW1fd2luZG93UHJveGllcy5jb250YWlucygmd29ybGQpKTsKKyAgICBBU1NFUlQobV9m
cmFtZS53aW5kb3coKSk7CisKKyAgICBWTSYgdm0gPSB3b3JsZC52bSgpOworCisgICAgLy8gRklY
TUU6IFdlIGRvIG5vdCBzdXBwb3J0IGNvbnN0cnVjdGluZyBhIEpTRE9NV2luZG93UHJveHkgZm9y
IGEgUmVtb3RlRE9NV2luZG93IHlldC4KKyAgICBSRUxFQVNFX0FTU0VSVChpczxET01XaW5kb3c+
KG1fZnJhbWUud2luZG93KCkpKTsKKworICAgIFN0cm9uZzxKU0RPTVdpbmRvd1Byb3h5PiB3aW5k
b3dQcm94eSh2bSwgJkpTRE9NV2luZG93UHJveHk6OmNyZWF0ZSh2bSwgKmRvd25jYXN0PERPTVdp
bmRvdz4obV9mcmFtZS53aW5kb3coKSksIHdvcmxkKSk7CisgICAgU3Ryb25nPEpTRE9NV2luZG93
UHJveHk+IHdpbmRvd1Byb3h5Mih3aW5kb3dQcm94eSk7CisgICAgbV93aW5kb3dQcm94aWVzLmFk
ZCgmd29ybGQsIHdpbmRvd1Byb3h5KTsKKyAgICB3b3JsZC5kaWRDcmVhdGVXaW5kb3dQcm94eSh0
aGlzKTsKKyAgICByZXR1cm4gKndpbmRvd1Byb3h5LmdldCgpOworfQorCithdXRvIFdpbmRvd1By
b3h5Q29udHJvbGxlcjo6d2luZG93UHJveGllcygpIC0+IFByb3h5TWFwOjpWYWx1ZXNJdGVyYXRv
clJhbmdlCit7CisgICAgcmV0dXJuIG1fd2luZG93UHJveGllcy52YWx1ZXMoKTsKK30KKworSlNE
T01XaW5kb3dQcm94eSogV2luZG93UHJveHlDb250cm9sbGVyOjp3aW5kb3dQcm94eVNsb3coRE9N
V3JhcHBlcldvcmxkJiB3b3JsZCkKK3sKKyAgICBpZiAoaXM8RnJhbWU+KG1fZnJhbWUpKQorICAg
ICAgICByZXR1cm4gZG93bmNhc3Q8RnJhbWU+KG1fZnJhbWUpLnNjcmlwdCgpLmluaXRTY3JpcHQo
d29ybGQpOworCisgICAgSlNMb2NrSG9sZGVyIGxvY2sod29ybGQudm0oKSk7CisgICAgcmV0dXJu
ICZjcmVhdGVXaW5kb3dQcm94eSh3b3JsZCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dpbmRvd1Byb3h5Q29udHJv
bGxlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJveHlDb250cm9sbGVy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYTFhYmE4MjEyYjJhMmYwOTE5Y2MzZjM2ZDRkZGFhMzA5MGUxYWU4NAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dpbmRvd1Byb3h5
Q29udHJvbGxlci5oCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAxOTk5
LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKKyAqICBDb3B5cmlnaHQgKEMpIDIw
MDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDYtMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisg
KiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlm
IG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBV
U0EKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTRE9NV2luZG93UHJveHkuaCIK
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmcuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEFic3RyYWN0RnJhbWU7CisKK2Ns
YXNzIFdpbmRvd1Byb3h5Q29udHJvbGxlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CitwdWJsaWM6CisgICAgdXNpbmcgUHJveHlNYXAgPSBIYXNoTWFwPFJlZlB0cjxET01XcmFwcGVy
V29ybGQ+LCBKU0M6OlN0cm9uZzxKU0RPTVdpbmRvd1Byb3h5Pj47CisKKyAgICBleHBsaWNpdCBX
aW5kb3dQcm94eUNvbnRyb2xsZXIoQWJzdHJhY3RGcmFtZSYpOworCisgICAgSlNET01XaW5kb3dQ
cm94eSYgY3JlYXRlV2luZG93UHJveHkoRE9NV3JhcHBlcldvcmxkJik7CisgICAgdm9pZCBkZXN0
cm95V2luZG93UHJveHkoRE9NV3JhcHBlcldvcmxkJik7CisKKyAgICBQcm94eU1hcDo6VmFsdWVz
SXRlcmF0b3JSYW5nZSB3aW5kb3dQcm94aWVzKCk7CisKKyAgICBQcm94eU1hcCByZWxlYXNlV2lu
ZG93UHJveGllcygpIHsgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UobV93aW5kb3dQcm94aWVzLCBQcm94
eU1hcCgpKTsgfQorICAgIHZvaWQgc2V0V2luZG93UHJveGllcyhQcm94eU1hcCYmIHdpbmRvd1By
b3hpZXMpIHsgbV93aW5kb3dQcm94aWVzID0gV1RGTW92ZSh3aW5kb3dQcm94aWVzKTsgfQorCisg
ICAgSlNET01XaW5kb3dQcm94eSogd2luZG93UHJveHkoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkK
KyAgICB7CisgICAgICAgIGF1dG8gaXRlciA9IG1fd2luZG93UHJveGllcy5maW5kKCZ3b3JsZCk7
CisgICAgICAgIGlmIChpdGVyICE9IG1fd2luZG93UHJveGllcy5lbmQoKSkKKyAgICAgICAgICAg
IHJldHVybiBpdGVyLT52YWx1ZS5nZXQoKTsKKworICAgICAgICByZXR1cm4gd2luZG93UHJveHlT
bG93KHdvcmxkKTsKKyAgICB9CisKKyAgICBKU0RPTVdpbmRvd1Byb3h5KiBleGlzdGluZ1dpbmRv
d1Byb3h5KERPTVdyYXBwZXJXb3JsZCYgd29ybGQpIGNvbnN0CisgICAgeworICAgICAgICBhdXRv
IGl0ZXIgPSBtX3dpbmRvd1Byb3hpZXMuZmluZCgmd29ybGQpOworICAgICAgICByZXR1cm4gKGl0
ZXIgIT0gbV93aW5kb3dQcm94aWVzLmVuZCgpKSA/IGl0ZXItPnZhbHVlLmdldCgpIDogMDsKKyAg
ICB9CisgICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdChET01XcmFwcGVyV29ybGQm
IHdvcmxkKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHdpbmRvd1Byb3h5KHdvcmxkKS0+d2luZG93
KCk7CisgICAgfQorCitwcml2YXRlOgorICAgIFdFQkNPUkVfRVhQT1JUIEpTRE9NV2luZG93UHJv
eHkqIHdpbmRvd1Byb3h5U2xvdyhET01XcmFwcGVyV29ybGQmKTsKKworICAgIEFic3RyYWN0RnJh
bWUmIG1fZnJhbWU7CisgICAgUHJveHlNYXAgbV93aW5kb3dQcm94aWVzOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXgg
ZmUwNTU4ZGE0ZThjNzFjMTVjYTg4MTk4NmYwMjA1MzRjMTE0M2IxNy4uODFjMGU3ZTlmOGYxZWQ0
NjAzOWY2MjY0NjQyZmVjNWRiODlmYmZlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwCkBAIC0zNjYwLDcgKzM2NjAsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkaXNwYXRjaERp
ZENsZWFyV2luZG93T2JqZWN0c0luQWxsV29ybGRzKCkKIAogdm9pZCBGcmFtZUxvYWRlcjo6ZGlz
cGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkK
IHsKLSAgICBpZiAoIW1fZnJhbWUuc2NyaXB0KCkuY2FuRXhlY3V0ZVNjcmlwdHMoTm90QWJvdXRU
b0V4ZWN1dGVTY3JpcHQpIHx8ICFtX2ZyYW1lLnNjcmlwdCgpLmV4aXN0aW5nV2luZG93UHJveHko
d29ybGQpKQorICAgIGlmICghbV9mcmFtZS5zY3JpcHQoKS5jYW5FeGVjdXRlU2NyaXB0cyhOb3RB
Ym91dFRvRXhlY3V0ZVNjcmlwdCkgfHwgIW1fZnJhbWUud2luZG93UHJveHlDb250cm9sbGVyKCku
ZXhpc3RpbmdXaW5kb3dQcm94eSh3b3JsZCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fY2xp
ZW50LmRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKHdvcmxkKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQWJzdHJhY3RGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0Fic3RyYWN0RnJhbWUuY3BwCmluZGV4IDJmMGY2ZGE2MGJmMjEzZTlmODI3MmIyY2Qz
Y2NhY2IxMjI3Yjg4ODUuLjA3ZGI1MDY4NTUxMTEyZjE0OWVjYTcxNzgwMWIzMTk4ODFlZTcwNzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQWJzdHJhY3RGcmFtZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9BYnN0cmFjdEZyYW1lLmNwcApAQCAtMjYsOSArMjYsMTIgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBYnN0cmFjdEZyYW1lLmgiCiAKKyNpbmNs
dWRlICJXaW5kb3dQcm94eUNvbnRyb2xsZXIuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBB
YnN0cmFjdEZyYW1lOjpBYnN0cmFjdEZyYW1lKCkKKyAgICA6IG1fd2luZG93UHJveHlDb250cm9s
bGVyKG1ha2VVbmlxdWVSZWY8V2luZG93UHJveHlDb250cm9sbGVyPigqdGhpcykpCiB7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQWJzdHJhY3RGcmFtZS5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9BYnN0cmFjdEZyYW1lLmgKaW5kZXggNTYxMTVlYjZjY2JjMjAzMzI1MzNk
YWJhYTU2MjkwYmFmMDFkMWJiZS4uMzM0YzllY2NhNDU4NmRmOGJkNmYyYjVhMDM0Y2M5NWU1Yjg4
ZjYxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9BYnN0cmFjdEZyYW1lLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9BYnN0cmFjdEZyYW1lLmgKQEAgLTQxLDYgKzQxLDkgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0xvY2FsRnJhbWUoKSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCBib29sIGlzUmVtb3RlRnJhbWUoKSBjb25zdCA9IDA7CiAKKyAgICBXaW5kb3dQcm94
eUNvbnRyb2xsZXImIHdpbmRvd1Byb3h5Q29udHJvbGxlcigpIHsgcmV0dXJuIG1fd2luZG93UHJv
eHlDb250cm9sbGVyOyB9CisgICAgY29uc3QgV2luZG93UHJveHlDb250cm9sbGVyJiB3aW5kb3dQ
cm94eUNvbnRyb2xsZXIoKSBjb25zdCB7IHJldHVybiBtX3dpbmRvd1Byb3h5Q29udHJvbGxlcjsg
fQorCiAgICAgQWJzdHJhY3RET01XaW5kb3cqIHdpbmRvdygpIGNvbnN0IHsgcmV0dXJuIHZpcnR1
YWxXaW5kb3coKTsgfQogCiBwcm90ZWN0ZWQ6CkBAIC00OCw2ICs1MSw4IEBAIHByb3RlY3RlZDoK
IAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIEFic3RyYWN0RE9NV2luZG93KiB2aXJ0dWFsV2luZG93
KCkgY29uc3QgPSAwOworCisgICAgVW5pcXVlUmVmPFdpbmRvd1Byb3h5Q29udHJvbGxlcj4gbV93
aW5kb3dQcm94eUNvbnRyb2xsZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IGUx
ODJjMDEwYmUxNzQxZGY0MzY5NDhjOWUzMmNjMWY3MTMzOTQ3YjIuLjRiNmJiZTMzZDYzNDY1NGY4
YjZkMzVmY2FkZThjZmZhMWEzMzE0YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC0xNDQxLDE0ICsxNDQxLDE0IEBAIHZvaWQgUGx1
Z2luVmlldzo6Y2FuY2VsTWFudWFsU3RyZWFtTG9hZCgpCiBOUE9iamVjdCogUGx1Z2luVmlldzo6
d2luZG93U2NyaXB0TlBPYmplY3QoKQogewogICAgIGlmICghZnJhbWUoKSkKLSAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKCFmcmFtZSgpLT5zY3Jp
cHQoKS5jYW5FeGVjdXRlU2NyaXB0cyhOb3RBYm91dFRvRXhlY3V0ZVNjcmlwdCkpIHsKICAgICAg
ICAgLy8gRklYTUU6IEludmVzdGlnYXRlIGlmIG90aGVyIGJyb3dzZXJzIGFsbG93IHBsdWctaW5z
IHRvIGFjY2VzcyBKYXZhU2NyaXB0IG9iamVjdHMgZXZlbiBpZiBKYXZhU2NyaXB0IGlzIGRpc2Fi
bGVkLgotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQog
Ci0gICAgcmV0dXJuIG1fbnBSdW50aW1lT2JqZWN0TWFwLmdldE9yQ3JlYXRlTlBPYmplY3QocGx1
Z2luV29ybGQoKS52bSgpLCBmcmFtZSgpLT5zY3JpcHQoKS53aW5kb3dQcm94eShwbHVnaW5Xb3Js
ZCgpKS0+d2luZG93KCkpOworICAgIHJldHVybiBtX25wUnVudGltZU9iamVjdE1hcC5nZXRPckNy
ZWF0ZU5QT2JqZWN0KHBsdWdpbldvcmxkKCkudm0oKSwgZnJhbWUoKS0+d2luZG93UHJveHlDb250
cm9sbGVyKCkud2luZG93UHJveHkocGx1Z2luV29ybGQoKSktPndpbmRvdygpKTsKIH0KIAogTlBP
YmplY3QqIFBsdWdpblZpZXc6OnBsdWdpbkVsZW1lbnROUE9iamVjdCgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3Rh
bmNlUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRz
Y2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KaW5kZXggNmYyZDI1OWY1OWQwNDEwYTVlNDc3NDQ2
ZjU0OTcwMjM2MzU0MmVkOS4uNmVmNmVmOWEzMTI4ZTFlYTdlNGE1MjFlOTM4NzdhNzcxMTlhMGQ0
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0
c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQpAQCAtODM5LDcg
KzgzOSw3IEBAIGJvb2wgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpnZXRXaW5kb3dOUE9i
amVjdCh1aW50MzJfdCYgb2JqZWN0SUQpCiAgICAgaWYgKCFmcmFtZS0+c2NyaXB0KCkuY2FuRXhl
Y3V0ZVNjcmlwdHMoTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQpKQogICAgICAgICBvYmplY3RJRCA9
IDA7CiAgICAgZWxzZQotICAgICAgICBvYmplY3RJRCA9IG1fbG9jYWxPYmplY3RzLmlkRm9yT2Jq
ZWN0KHBsdWdpbldvcmxkKCkudm0oKSwgZnJhbWUtPnNjcmlwdCgpLndpbmRvd1Byb3h5KHBsdWdp
bldvcmxkKCkpLT53aW5kb3coKSk7CisgICAgICAgIG9iamVjdElEID0gbV9sb2NhbE9iamVjdHMu
aWRGb3JPYmplY3QocGx1Z2luV29ybGQoKS52bSgpLCBmcmFtZS0+d2luZG93UHJveHlDb250cm9s
bGVyKCkud2luZG93UHJveHkocGx1Z2luV29ybGQoKSktPndpbmRvdygpKTsKICAgICAgICAgCiAg
ICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJG
cmFtZS5tbQppbmRleCBiYTkxNjJjMWFkNTE2MDMyNzNjYzAyODEzMzlmNjc3MWRhM2YzZWU4Li41
OWExY2YxMDM3NjY5MTExM2FiNmRlNjU4YTAwYmZmYjAyZjY5Njg5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTM2MCwxNSArMzYwLDE1IEBAIHN0
YXRpYyBOU1VSTCAqY3JlYXRlVW5pcXVlV2ViRGF0YVVSTCgpOwogCiAtICh2b2lkKV9hdHRhY2hT
Y3JpcHREZWJ1Z2dlcgogewotICAgIFNjcmlwdENvbnRyb2xsZXImIHNjcmlwdENvbnRyb2xsZXIg
PSBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5zY3JpcHQoKTsKKyAgICBhdXRvJiB3aW5kb3dQcm94eUNv
bnRyb2xsZXIgPSBfcHJpdmF0ZS0+Y29yZUZyYW1lLT53aW5kb3dQcm94eUNvbnRyb2xsZXIoKTsK
IAogICAgIC8vIENhbGxpbmcgU2NyaXB0Q29udHJvbGxlcjo6Z2xvYmFsT2JqZWN0KCkgd291bGQg
Y3JlYXRlIGEgd2luZG93IHByb3h5LCBhbmQgZGlzcGF0Y2ggY29ycmVzcG9uZGluZyBjYWxsYmFj
a3MsIHdoaWNoIG1heSBiZSBwcmVtYXR1cmUKICAgICAvLyBpZiB0aGUgc2NyaXB0IGRlYnVnZ2Vy
IGlzIGF0dGFjaGVkIGJlZm9yZSBhIGRvY3VtZW50IGlzIGNyZWF0ZWQuICBUaGVzZSBjYWxscyB1
c2UgdGhlIGRlYnVnZ2VyV29ybGQoKSwgd2Ugd2lsbCBuZWVkIHRvIHBhc3MgYSB3b3JsZAogICAg
IC8vIHRvIGJlIGFibGUgdG8gZGVidWcgaXNvbGF0ZWQgd29ybGRzLgotICAgIGlmICghc2NyaXB0
Q29udHJvbGxlci5leGlzdGluZ1dpbmRvd1Byb3h5KGRlYnVnZ2VyV29ybGQoKSkpCisgICAgaWYg
KCF3aW5kb3dQcm94eUNvbnRyb2xsZXIuZXhpc3RpbmdXaW5kb3dQcm94eShkZWJ1Z2dlcldvcmxk
KCkpKQogICAgICAgICByZXR1cm47CiAKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gc2NyaXB0Q29udHJvbGxlci5nbG9iYWxPYmplY3QoZGVidWdnZXJXb3JsZCgpKTsKKyAgICBh
dXRvKiBnbG9iYWxPYmplY3QgPSB3aW5kb3dQcm94eUNvbnRyb2xsZXIuZ2xvYmFsT2JqZWN0KGRl
YnVnZ2VyV29ybGQoKSk7CiAgICAgaWYgKCFnbG9iYWxPYmplY3QpCiAgICAgICAgIHJldHVybjsK
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>337905</attachid>
            <date>2018-04-13 10:29:12 -0700</date>
            <delta_ts>2018-04-13 11:11:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184591-20180413102911.patch</filename>
            <type>text/plain</type>
            <size>45534</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwNjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA1YzEwMjViZjU2YjFiNmFmODZjYzNh
YWFkNDEyOTdmM2JiMDhjNzUuLjZhYzY5NjE5MDE2NGIzMGY3ZjQ2YmY0NGY1NDk4MzE0OTE0MWI4
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTgtMDQtMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBTcGxpdCBXaW5kb3dQcm94eSBoYW5kbGluZyBvdXQgb2Yg
U2NyaXB0Q29udHJvbGxlciBhbmQgaW50byBhIG5ldyBjbGFzcyBvd25lZCBieSBBYnN0cmFjdEZy
YW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ1
OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
aXNFbXB0eSgpIGNvbnZlbmllbmNlIG1ldGhvZCB0byBTaXplZEl0ZXJhdG9yUmFuZ2UuCisKKyAg
ICAgICAgKiB3dGYvSXRlcmF0b3JSYW5nZS5oOgorICAgICAgICAoV1RGOjpTaXplZEl0ZXJhdG9y
UmFuZ2U6OmlzRW1wdHkgY29uc3QpOgorCiAyMDE4LTA0LTEyICBNaWNoYWVsIENhdGFuemFybyAg
PG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBSZW1vdmUgdW51c2VkIGNyYXNoIGhv
b2sgZnVuY3Rpb25hbGl0eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGE1YjQ3N2E3MmU0Mzk3NDI2NzQxY2E4Mzdk
MDRjMmNmMDMwOWQxNjYuLjNjMDU4OTA3MWQ5ZGY3ODJhMTI4ZjJkODQ0ZGVhMTEwMGQyM2NhMjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3NyBAQAorMjAxOC0wNC0xMyAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFNwbGl0IFdpbmRvd1Byb3h5IGhhbmRsaW5nIG91
dCBvZiBTY3JpcHRDb250cm9sbGVyIGFuZCBpbnRvIGEgbmV3IGNsYXNzIG93bmVkIGJ5IEFic3Ry
YWN0RnJhbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4NDU5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFNwbGl0IFdpbmRvd1Byb3h5IGhhbmRsaW5nIG91dCBvZiBTY3JpcHRDb250cm9sbGVyIGFuZCBp
bnRvIGEgbmV3IGNsYXNzIG93bmVkIGJ5IEFic3RyYWN0RnJhbWUuCisgICAgICAgIFJlbW90ZUZy
YW1lcyBkbyBub3QgbmVlZCBhIFNjcmlwdENvbnRyb2xsZXIgYnV0IGRvIG5lZWQgdG8gbWFpbnRh
aW4gV2luZG93UHJveGllcy4KKyAgICAgICAgVGhpcyBpcyB3b3JrIHRvd2FyZHMgZml4aW5nIEJ1
ZyAxODQ1MTUuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvRE9NV3JhcHBl
cldvcmxkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZDo6fkRPTVdyYXBw
ZXJXb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpET01XcmFwcGVyV29ybGQ6OmNsZWFyV3JhcHBl
cnMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5oOgorICAgICAgICAo
V2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkOjpkaWRDcmVhdGVXaW5kb3dQcm94eSk6CisgICAgICAg
IChXZWJDb3JlOjpET01XcmFwcGVyV29ybGQ6OmRpZERlc3Ryb3lXaW5kb3dQcm94eSk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9KU0RPTVdp
bmRvdyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dQcm94eS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNET01XaW5kb3dQcm94
eSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdENhY2hlZEZyYW1lRGF0YTo6U2NyaXB0Q2FjaGVkRnJhbWVE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENhY2hlZEZyYW1lRGF0YTo6cmVzdG9yZSk6
CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjp+U2NyaXB0Q29udHJvbGxlcik6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGQpOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0Q29udHJvbGxlcjo6bG9hZE1vZHVsZVNjcmlwdEluV29ybGQpOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6bGlua0FuZEV2YWx1YXRlTW9kdWxlU2NyaXB0
SW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZU1v
ZHVsZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpjbGVhcldpbmRvd1By
b3hpZXNOb3RNYXRjaGluZ0RPTVdpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250
cm9sbGVyOjpzZXRET01XaW5kb3dGb3JXaW5kb3dQcm94eSk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENv
bnRyb2xsZXI6OnNldHVwTW9kdWxlU2NyaXB0SGFuZGxlcnMpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0Q29udHJvbGxlcjo6d2luZG93UHJveHlDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdENvbnRyb2xsZXI6OmVuYWJsZUV2YWwpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0Q29udHJvbGxlcjo6ZW5hYmxlV2ViQXNzZW1ibHkpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0Q29udHJvbGxlcjo6ZGlzYWJsZUV2YWwpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29u
dHJvbGxlcjo6ZGlzYWJsZVdlYkFzc2VtYmx5KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENv
bnRyb2xsZXI6OmF0dGFjaERlYnVnZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRy
b2xsZXI6OnVwZGF0ZURvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xs
ZXI6OmNvbGxlY3RJc29sYXRlZENvbnRleHRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENv
bnRyb2xsZXI6OndpbmRvd1NjcmlwdE5QT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dENvbnRyb2xsZXI6OmV4ZWN1dGVJZkphdmFTY3JpcHRVUkwpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL1NjcmlwdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xs
ZXI6Omdsb2JhbE9iamVjdCk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxl
ck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OndpbmRvd1Njcmlw
dE9iamVjdCk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6bWFpbldvcmxkRXhlY1N0YXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9X
aW5kb3dQcm94eUNvbnRyb2xsZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldpbmRv
d1Byb3h5Q29udHJvbGxlcjo6V2luZG93UHJveHlDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OldpbmRvd1Byb3h5Q29udHJvbGxlcjo6ZGVzdHJveVdpbmRvd1Byb3h5KToKKyAgICAgICAg
KFdlYkNvcmU6OldpbmRvd1Byb3h5Q29udHJvbGxlcjo6Y3JlYXRlV2luZG93UHJveHkpOgorICAg
ICAgICAoV2ViQ29yZTo6V2luZG93UHJveHlDb250cm9sbGVyOjp3aW5kb3dQcm94aWVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OldpbmRvd1Byb3h5Q29udHJvbGxlcjo6d2luZG93UHJveHlTbG93KToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9XaW5kb3dQcm94eUNvbnRyb2xsZXIuaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpXaW5kb3dQcm94eUNvbnRyb2xsZXI6OnJlbGVhc2VXaW5kb3dQcm94
aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OldpbmRvd1Byb3h5Q29udHJvbGxlcjo6c2V0V2luZG93
UHJveGllcyk6CisgICAgICAgIChXZWJDb3JlOjpXaW5kb3dQcm94eUNvbnRyb2xsZXI6OndpbmRv
d1Byb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OldpbmRvd1Byb3h5Q29udHJvbGxlcjo6ZXhpc3Rp
bmdXaW5kb3dQcm94eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXaW5kb3dQcm94eUNvbnRy
b2xsZXI6Omdsb2JhbE9iamVjdCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZENsZWFyV2luZG93T2Jq
ZWN0SW5Xb3JsZCk6CisgICAgICAgICogcGFnZS9BYnN0cmFjdEZyYW1lLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFic3RyYWN0RnJhbWU6OkFic3RyYWN0RnJhbWUpOgorICAgICAgICAqIHBhZ2Uv
QWJzdHJhY3RGcmFtZS5oOgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3RGcmFtZTo6d2luZG93
UHJveHlDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0RnJhbWU6OndpbmRv
d1Byb3h5Q29udHJvbGxlciBjb25zdCk6CisKIDIwMTgtMDQtMTMgIFNlcmdpbyBWaWxsYXIgU2Vu
aW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dlYlZSXVtPcGVuVlJdIEltcGxl
bWVudCByZXF1ZXN0UHJlc2VudCgpL2V4aXRQcmVzZW50KCkgYW5kIGdldExheWVycygpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IGJiYzdkYzM2ZjM1OGY1NWMwZjk5OTBmZWYxOTJkY2E4OTgwMGUwNTAuLmVkMTQzMzc3
OGU1Yjc1MTJiODQzY2I4NzFkN2FiZTM1MTU4ZmFlNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTgtMDQtMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAg
ICBTcGxpdCBXaW5kb3dQcm94eSBoYW5kbGluZyBvdXQgb2YgU2NyaXB0Q29udHJvbGxlciBhbmQg
aW50byBhIG5ldyBjbGFzcyBvd25lZCBieSBBYnN0cmFjdEZyYW1lCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ1OTEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTcGxpdCBXaW5kb3dQcm94eSBoYW5kbGlu
ZyBvdXQgb2YgU2NyaXB0Q29udHJvbGxlciBhbmQgaW50byBhIG5ldyBjbGFzcyBvd25lZCBieSBB
YnN0cmFjdEZyYW1lLgorICAgICAgICBSZW1vdGVGcmFtZXMgZG8gbm90IG5lZWQgYSBTY3JpcHRD
b250cm9sbGVyIGJ1dCBkbyBuZWVkIHRvIG1haW50YWluIFdpbmRvd1Byb3hpZXMuCisgICAgICAg
IFRoaXMgaXMgd29yayB0b3dhcmRzIGZpeGluZyBCdWcgMTg0NTE1LgorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5W
aWV3Ojp3aW5kb3dTY3JpcHROUE9iamVjdCk6CisKIDIwMTgtMDQtMTMgIFhhYmllciBSb2RyaWd1
ZXogQ2FsdmFyICA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1N0cmVhbWVyXSBD
b252ZXJ0IEdTdHJlYW1lclV0aWxpdGllcyBpbiBHU3RyZWFtZXJDb21tb24gYW5kIGluY2x1ZGUg
dGhlIEdTdHJlYW1lciBzbWFydCBwb2ludGVyIHRyYWl0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nCmluZGV4IGM3MGY5NjY0ZTlhNjUwM2U1YWY0ZGY3Y2M3MGJjMWQ2M2QzNzc2NzQuLjk4Y2E3
OGM3MGI2YWEzOWMwODRmZDI4NjE1OTQxZTI2MjA1YzZkY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxOC0wNC0xMyAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgorCisgICAgICAgIFNwbGl0IFdpbmRvd1Byb3h5IGhhbmRsaW5nIG91dCBv
ZiBTY3JpcHRDb250cm9sbGVyIGFuZCBpbnRvIGEgbmV3IGNsYXNzIG93bmVkIGJ5IEFic3RyYWN0
RnJhbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
NDU5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNw
bGl0IFdpbmRvd1Byb3h5IGhhbmRsaW5nIG91dCBvZiBTY3JpcHRDb250cm9sbGVyIGFuZCBpbnRv
IGEgbmV3IGNsYXNzIG93bmVkIGJ5IEFic3RyYWN0RnJhbWUuCisgICAgICAgIFJlbW90ZUZyYW1l
cyBkbyBub3QgbmVlZCBhIFNjcmlwdENvbnRyb2xsZXIgYnV0IGRvIG5lZWQgdG8gbWFpbnRhaW4g
V2luZG93UHJveGllcy4KKyAgICAgICAgVGhpcyBpcyB3b3JrIHRvd2FyZHMgZml4aW5nIEJ1ZyAx
ODQ1MTUuCisKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNl
UHJveHkubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6
Z2V0V2luZG93TlBPYmplY3QpOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAg
ICAgICgtW1dlYkZyYW1lIF9hdHRhY2hTY3JpcHREZWJ1Z2dlcl0pOgorCiAyMDE4LTA0LTA1ICBZ
dXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFtXVEZdIFJl
bW92ZSBTdGF0aWNMb2NrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9JdGVyYXRvclJhbmdl
LmggYi9Tb3VyY2UvV1RGL3d0Zi9JdGVyYXRvclJhbmdlLmgKaW5kZXggN2UxMWQ1ODc4ZmY1YTc3
MDVhYTViZjhkMjZkMjA1ZDgzNzgwY2YzMi4uN2NmMDU2OWY1YjU5ZTg0MmMzMWQwN2VkOTM4ZDU3
YjE2ZmZjNmNmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvSXRlcmF0b3JSYW5nZS5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL0l0ZXJhdG9yUmFuZ2UuaApAQCAtNjIsNiArNjIsNyBAQCBwdWJs
aWM6CiAgICAgfQogCiAgICAgYXV0byBzaXplKCkgY29uc3QgLT4gZGVjbHR5cGUoc3RkOjpkZWNs
dmFsPENvbnRhaW5lcj4oKS5zaXplKCkpIHsgcmV0dXJuIG1fY29udGFpbmVyLnNpemUoKTsgfQor
ICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGFpbmVyLmlzRW1wdHkoKTsg
fQogICAgIEl0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9iZWdpbjsgfQogICAgIEl0
ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5kOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXgg
YTQ2MTcxOWUyZGRmNGI1Njg5OGE3YjZjNDdiZTQxNzY1YTY1MjVlNi4uYTU3YmIyZDJmNzViMjkx
OWRkYzlkOWNmY2JiMzEyZWU3NjAzOTU5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTQ2OCw2ICs0Njgs
NyBAQCBiaW5kaW5ncy9qcy9TdHJ1Y3R1cmVkQ2xvbmUuY3BwCiBiaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwCiBiaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmNwcAog
YmluZGluZ3MvanMvV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmNwcAorYmluZGluZ3MvanMv
V2luZG93UHJveHlDb250cm9sbGVyLmNwcAogYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJv
bGxlci5jcHAKIAogYnJpZGdlL0lkZW50aWZpZXJSZXAuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTZhMTM4MDYwZjYyYzll
MWMxOTBmY2ViMmFlNWY5NmEzMDY5Njc3NC4uY2Y2MDU2NzEyZGZkYTViM2U4ODU3NmYxNjAzYjA4
ODBiODdjODE5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMTE5MSw2ICsxMTkxLDcgQEAKIAkJNDYwQkI2MTYxRDBBMUJGMDAw
MjIxODEyIC8qIEJhc2U2NFV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDYwQkI2MTQxRDBBMUJFQzAwMjIxODEyIC8qIEJhc2U2NFV0aWxp
dGllcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTQ2MENCRjM2MUQ0QkNEMEUwMDkyRTg4RSAvKiBKU0RPTVdpbmRvd1Byb3BlcnRpZXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MENCRjM0MUQ0QkND
RkUwMDkyRTg4RSAvKiBKU0RPTVdpbmRvd1Byb3BlcnRpZXMuaCAqLzsgfTsKIAkJNDYyMThBQ0Ix
RjcyRDY0RTAwNTc0RkJFIC8qIERPTUhpZ2hSZXNUaW1lU3RhbXAuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RTAxNkFEMUY3MkQ2MUUwMDI4MkIyQyAv
KiBET01IaWdoUmVzVGltZVN0YW1wLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJNDYzNTIxQUQyMDgxMDkyQTAwQzI4OTIyIC8qIFdpbmRvd1Byb3h5
Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDYzNTIxQUEyMDgxMDkwQjAwQzI4OTIyIC8qIFdpbmRvd1Byb3h5Q29udHJvbGxlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2M0VCNjIz
MUI4Nzg5RTAwMDk2RUQ1MSAvKiBUYWdDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjNFQjYyMTFCODc4OUNCMDA5NkVENTEgLyogVGFn
Q29sbGVjdGlvbi5oICovOyB9OwogCQk0NjUzMDdEMDFEQjZFRTQ4MDBFNDEzN0MgLyogSlNVSUV2
ZW50SW5pdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODNFMDQ1RUYxREFBMTA0RjAwQjBEOEI5IC8qIEpTVUlFdmVudEluaXQuaCAqLzsgfTsKIAkJNDY2
NThEQzkxRkEyNEI4NzAwRjdERDU0IC8qIFNXQ29udGV4dE1hbmFnZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NzI0MTNCMUZBMjRCMTQwMDg4QkQ2
RCAvKiBTV0NvbnRleHRNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTc0MjUsNiArNzQyNiw4IEBACiAJCTQ2MENCRjM0MUQ0QkNDRkUw
MDkyRTg4RSAvKiBKU0RPTVdpbmRvd1Byb3BlcnRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNET01XaW5kb3dQcm9wZXJ0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2MEQxOTQ0MUZDRTIxREQwMEMzREI4NSAvKiBKU1NlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2MzQ1OTJCMUFDMjI3MTAwMEVDQjcxQyAvKiBQb3dlck9ic2VydmVyTWFjLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvd2VyT2JzZXJ2ZXJNYWMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjM1MjFBQTIwODEwOTBCMDBDMjg5
MjIgLyogV2luZG93UHJveHlDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdpbmRvd1Byb3h5Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0NjM1MjFBQzIwODEwOTBFMDBDMjg5MjIgLyogV2luZG93UHJveHlDb250cm9sbGVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdpbmRvd1Byb3h5Q29udHJv
bGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2M0VCNjIwMUI4Nzg5Q0Iw
MDk2RUQ1MSAvKiBUYWdDb2xsZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFRhZ0NvbGxlY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NjNFQjYyMTFCODc4OUNCMDA5NkVENTEgLyogVGFnQ29sbGVjdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBUYWdDb2xsZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2NUE4RTc4MUM4QTI0Q0UwMEU3RDNFNCAvKiBSdW50aW1lQXBwbGljYXRp
b25DaGVja3NDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMjM3MDgsNiArMjM3MTEsOCBAQAogCQkJCUJDNTNEOTEwMTE0MzEwQ0MwMDBEODE3
RSAvKiBXZWJDb3JlSlNDbGllbnREYXRhLmggKi8sCiAJCQkJMEYwOTlEMDYxN0I5NjhBMTAwRkY4
NEI5IC8qIFdlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlci5jcHAgKi8sCiAJCQkJMEYwOTlEMDcx
N0I5NjhBMTAwRkY4NEI5IC8qIFdlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlci5oICovLAorCQkJ
CTQ2MzUyMUFDMjA4MTA5MEUwMEMyODkyMiAvKiBXaW5kb3dQcm94eUNvbnRyb2xsZXIuY3BwICov
LAorCQkJCTQ2MzUyMUFBMjA4MTA5MEIwMEMyODkyMiAvKiBXaW5kb3dQcm94eUNvbnRyb2xsZXIu
aCAqLywKIAkJCQlFMUE2NDNGQzBFQzA5N0EwMDA3Nzk2NjggLyogV29ya2VyU2NyaXB0Q29udHJv
bGxlci5jcHAgKi8sCiAJCQkJRTFBNjQzRjEwRUMwOTcyNTAwNzc5NjY4IC8qIFdvcmtlclNjcmlw
dENvbnRyb2xsZXIuaCAqLywKIAkJCSk7CkBAIC0zMDYwOCw2ICszMDYxMyw3IEBACiAJCQkJMEYx
NUVENUMxQjdFQzdDNTAwRURERkVCIC8qIFdpbGxDaGFuZ2VEYXRhLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzgyNDNFOTBEMENGRDc1MDA0NjBDOEYgLyogV2luZG93RmVhdHVyZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTdFOTlBRjUzMEIxMzg0NjQ2OEZCMDFBNSAvKiBXaW5kb3dGb2N1c0FsbG93
ZWRJbmRpY2F0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2MzUyMUFEMjA4MTA5MkEwMEMyODky
MiAvKiBXaW5kb3dQcm94eUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxRTFCRjAw
MTE1RkY2RkIwMDZGNTJDQSAvKiBXaW5kb3dzS2V5Ym9hcmRDb2Rlcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTAxQkFBQTkxMzk1MEUyQzAwRjdBQ0VCIC8qIFdpbmRSdWxlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBMTQ4MzJCRTE4N0Y2NENDMDBEQTYzQTYgLyogV0tDb250ZW50T2JzZXJ2YXRpb24u
aCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
RE9NV3JhcHBlcldvcmxkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVdyYXBw
ZXJXb3JsZC5jcHAKaW5kZXggMWUxZjE3Yjg3Yjg5ZjMzZmE2YjQ4Mzc2YTI0ZWNjNWVmMmIyMDIx
NC4uZTBmYzczNjY5YzdjZGRhZTA4MzU5NWM1NWNlZWVhYmI5MzVhZTgxZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NV3JhcHBlcldvcmxkLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQuY3BwCkBAIC0yMyw4ICsyMyw4
IEBACiAKICNpbmNsdWRlICJDb21tb25WTS5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCi0j
aW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERh
dGEuaCIKKyNpbmNsdWRlICJXaW5kb3dQcm94eUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDx3dGYv
TWFpblRocmVhZC5oPgogCiAKQEAgLTQ3LDggKzQ3LDggQEAgRE9NV3JhcHBlcldvcmxkOjp+RE9N
V3JhcHBlcldvcmxkKCkKICAgICBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KGNsaWVudERh
dGEpLT5mb3JnZXRXb3JsZCgqdGhpcyk7CiAKICAgICAvLyBUaGVzZSBpdGVtcyBhcmUgY3JlYXRl
ZCBsYXppbHkuCi0gICAgd2hpbGUgKCFtX3NjcmlwdENvbnRyb2xsZXJzV2l0aFdpbmRvd1Byb3hp
ZXMuaXNFbXB0eSgpKQotICAgICAgICAoKm1fc2NyaXB0Q29udHJvbGxlcnNXaXRoV2luZG93UHJv
eGllcy5iZWdpbigpKS0+ZGVzdHJveVdpbmRvd1Byb3h5KCp0aGlzKTsKKyAgICB3aGlsZSAoIW1f
Y29udHJvbGxlcnNXaXRoV2luZG93UHJveGllcy5pc0VtcHR5KCkpCisgICAgICAgICgqbV9jb250
cm9sbGVyc1dpdGhXaW5kb3dQcm94aWVzLmJlZ2luKCkpLT5kZXN0cm95V2luZG93UHJveHkoKnRo
aXMpOwogfQogCiB2b2lkIERPTVdyYXBwZXJXb3JsZDo6Y2xlYXJXcmFwcGVycygpCkBAIC01Niw4
ICs1Niw4IEBAIHZvaWQgRE9NV3JhcHBlcldvcmxkOjpjbGVhcldyYXBwZXJzKCkKICAgICBtX3dy
YXBwZXJzLmNsZWFyKCk7CiAKICAgICAvLyBUaGVzZSBpdGVtcyBhcmUgY3JlYXRlZCBsYXppbHku
Ci0gICAgd2hpbGUgKCFtX3NjcmlwdENvbnRyb2xsZXJzV2l0aFdpbmRvd1Byb3hpZXMuaXNFbXB0
eSgpKQotICAgICAgICAoKm1fc2NyaXB0Q29udHJvbGxlcnNXaXRoV2luZG93UHJveGllcy5iZWdp
bigpKS0+ZGVzdHJveVdpbmRvd1Byb3h5KCp0aGlzKTsKKyAgICB3aGlsZSAoIW1fY29udHJvbGxl
cnNXaXRoV2luZG93UHJveGllcy5pc0VtcHR5KCkpCisgICAgICAgICgqbV9jb250cm9sbGVyc1dp
dGhXaW5kb3dQcm94aWVzLmJlZ2luKCkpLT5kZXN0cm95V2luZG93UHJveHkoKnRoaXMpOwogfQog
CiBET01XcmFwcGVyV29ybGQmIG5vcm1hbFdvcmxkKEpTQzo6Vk0mIHZtKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NV3JhcHBlcldvcmxkLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQuaAppbmRleCBlMGFjYjgyNmExNjUwODYy
YjgwMzFlMzVlNzhhZWQzMGRiZmQ4MzgxLi5mYmVjMTAxOWIwMjI3YWRmOTcxZmYzMGQxOTkzZmYy
ZTkyOGM3Mjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01XcmFw
cGVyV29ybGQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01XcmFwcGVyV29y
bGQuaApAQCAtMjYsNyArMjYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNj
cmlwdENvbnRyb2xsZXI7CitjbGFzcyBXaW5kb3dQcm94eUNvbnRyb2xsZXI7CiAKIHR5cGVkZWYg
SGFzaE1hcDx2b2lkKiwgSlNDOjpXZWFrPEpTQzo6SlNPYmplY3Q+PiBET01PYmplY3RXcmFwcGVy
TWFwOwogCkBAIC00MSw4ICs0MSw4IEBAIHB1YmxpYzoKICAgICAvLyBGcmVlIGFzIG11Y2ggbWVt
b3J5IGhlbGQgb250byBieSB0aGlzIHdvcmxkIGFzIHBvc3NpYmxlLgogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgY2xlYXJXcmFwcGVycygpOwogCi0gICAgdm9pZCBkaWRDcmVhdGVXaW5kb3dQcm94
eShTY3JpcHRDb250cm9sbGVyKiBzY3JpcHRDb250cm9sbGVyKSB7IG1fc2NyaXB0Q29udHJvbGxl
cnNXaXRoV2luZG93UHJveGllcy5hZGQoc2NyaXB0Q29udHJvbGxlcik7IH0KLSAgICB2b2lkIGRp
ZERlc3Ryb3lXaW5kb3dQcm94eShTY3JpcHRDb250cm9sbGVyKiBzY3JpcHRDb250cm9sbGVyKSB7
IG1fc2NyaXB0Q29udHJvbGxlcnNXaXRoV2luZG93UHJveGllcy5yZW1vdmUoc2NyaXB0Q29udHJv
bGxlcik7IH0KKyAgICB2b2lkIGRpZENyZWF0ZVdpbmRvd1Byb3h5KFdpbmRvd1Byb3h5Q29udHJv
bGxlciogY29udHJvbGxlcikgeyBtX2NvbnRyb2xsZXJzV2l0aFdpbmRvd1Byb3hpZXMuYWRkKGNv
bnRyb2xsZXIpOyB9CisgICAgdm9pZCBkaWREZXN0cm95V2luZG93UHJveHkoV2luZG93UHJveHlD
b250cm9sbGVyKiBjb250cm9sbGVyKSB7IG1fY29udHJvbGxlcnNXaXRoV2luZG93UHJveGllcy5y
ZW1vdmUoY29udHJvbGxlcik7IH0KIAogICAgIHZvaWQgc2V0U2hhZG93Um9vdElzQWx3YXlzT3Bl
bigpIHsgbV9zaGFkb3dSb290SXNBbHdheXNPcGVuID0gdHJ1ZTsgfQogICAgIGJvb2wgc2hhZG93
Um9vdElzQWx3YXlzT3BlbigpIGNvbnN0IHsgcmV0dXJuIG1fc2hhZG93Um9vdElzQWx3YXlzT3Bl
bjsgfQpAQCAtNjEsNyArNjEsNyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgSlNDOjpW
TSYgbV92bTsKLSAgICBIYXNoU2V0PFNjcmlwdENvbnRyb2xsZXIqPiBtX3NjcmlwdENvbnRyb2xs
ZXJzV2l0aFdpbmRvd1Byb3hpZXM7CisgICAgSGFzaFNldDxXaW5kb3dQcm94eUNvbnRyb2xsZXIq
PiBtX2NvbnRyb2xsZXJzV2l0aFdpbmRvd1Byb3hpZXM7CiAgICAgRE9NT2JqZWN0V3JhcHBlck1h
cCBtX3dyYXBwZXJzOwogCiAgICAgYm9vbCBtX2lzTm9ybWFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKaW5kZXggNDhjNTNlMmNkMmVk
MmI0ZmMzM2I0NTFhZGNjZjIzNmQyYTExNjlkZi4uY2M1Y2U2MzE5MGIxM2I3MWYyMzM1YTg0MjMy
M2FhMThmMDU1MDQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNC
aW5kaW5nc0FsbEluT25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Jp
bmRpbmdzQWxsSW5PbmUuY3BwCkBAIC0xMDksNCArMTA5LDUgQEAKICNpbmNsdWRlICJTY3JpcHRT
dGF0ZS5jcHAiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCIKICNpbmNsdWRl
ICJXZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIuY3BwIgorI2luY2x1ZGUgIldpbmRvd1Byb3h5
Q29udHJvbGxlci5jcHAiCiAjaW5jbHVkZSAiV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAppbmRleCAy
MmJjNDM1MGI3NWVmMjFkMjQ4YmZkY2E4ZGE3MjNhOTFkZWZiNGQ2Li42ZmE2ZTdkNWE0ZTFhYjM2
ZDQwZjM3NTBjNDJiNGQwZDRjNjUyNTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93QmFzZS5jcHAKQEAgLTI2Nyw3ICsyNjcsNyBAQCBKU1ZhbHVlIHRvSlMo
RXhlY1N0YXRlKiBzdGF0ZSwgRE9NV2luZG93JiBkb21XaW5kb3cpCiAKIEpTRE9NV2luZG93KiB0
b0pTRE9NV2luZG93KEZyYW1lJiBmcmFtZSwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKIHsKLSAg
ICByZXR1cm4gZnJhbWUuc2NyaXB0KCkud2luZG93UHJveHkod29ybGQpLT53aW5kb3coKTsKKyAg
ICByZXR1cm4gZnJhbWUuc2NyaXB0KCkuZ2xvYmFsT2JqZWN0KHdvcmxkKTsKIH0KIAogSlNET01X
aW5kb3cqIHRvSlNET01XaW5kb3coSlNDOjpWTSYgdm0sIEpTVmFsdWUgdmFsdWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1Byb3h5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93UHJveHkuY3BwCmluZGV4IDQ4NzUx
M2FhMzUxODM2NjA0MTNkM2E2N2VhODRkZjI0OWNlYTFhNmUuLjgxNzc1YTM1Yzk1OTA0YWJlNmRj
ZDk3ZTI5MjJjMGFjZjE2NWIzMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NV2luZG93UHJveHkuY3BwCkBAIC0xMTgsMTIgKzExOCwxMiBAQCBET01XaW5kb3cqIEpT
RE9NV2luZG93UHJveHk6OnRvV3JhcHBlZChWTSYgdm0sIEpTT2JqZWN0KiB2YWx1ZSkKIAogSlNW
YWx1ZSB0b0pTKEV4ZWNTdGF0ZSogc3RhdGUsIEZyYW1lJiBmcmFtZSkKIHsKLSAgICByZXR1cm4g
ZnJhbWUuc2NyaXB0KCkud2luZG93UHJveHkoY3VycmVudFdvcmxkKCpzdGF0ZSkpOworICAgIHJl
dHVybiBmcmFtZS53aW5kb3dQcm94eUNvbnRyb2xsZXIoKS53aW5kb3dQcm94eShjdXJyZW50V29y
bGQoKnN0YXRlKSk7CiB9CiAKIEpTRE9NV2luZG93UHJveHkqIHRvSlNET01XaW5kb3dQcm94eShG
cmFtZSYgZnJhbWUsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCiB7Ci0gICAgcmV0dXJuIGZyYW1l
LnNjcmlwdCgpLndpbmRvd1Byb3h5KHdvcmxkKTsKKyAgICByZXR1cm4gZnJhbWUud2luZG93UHJv
eHlDb250cm9sbGVyKCkud2luZG93UHJveHkod29ybGQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWNo
ZWRGcmFtZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVk
RnJhbWVEYXRhLmNwcAppbmRleCAxM2U3OGQ0MzdlMTE3N2ZjOTlmNDBhYTVmMGU5ZjE5MjJjNjRl
Y2I5Li40NWQxZTM4NDZiNGZmNGUzZDZlN2M5MjVmNjE0YWQ2YTA5OWJjOGU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHAK
QEAgLTUxLDE1ICs1MSwxMyBAQCBTY3JpcHRDYWNoZWRGcmFtZURhdGE6OlNjcmlwdENhY2hlZEZy
YW1lRGF0YShGcmFtZSYgZnJhbWUpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soY29tbW9uVk0o
KSk7CiAKLSAgICBhdXRvJiBzY3JpcHRDb250cm9sbGVyID0gZnJhbWUuc2NyaXB0KCk7Ci0KLSAg
ICBmb3IgKGF1dG8gd2luZG93UHJveHkgOiBzY3JpcHRDb250cm9sbGVyLndpbmRvd1Byb3hpZXMo
KSkgeworICAgIGZvciAoYXV0byB3aW5kb3dQcm94eSA6IGZyYW1lLndpbmRvd1Byb3h5Q29udHJv
bGxlcigpLndpbmRvd1Byb3hpZXNBc1ZlY3RvcigpKSB7CiAgICAgICAgIGF1dG8qIHdpbmRvdyA9
IHdpbmRvd1Byb3h5LT53aW5kb3coKTsKICAgICAgICAgbV93aW5kb3dzLmFkZCgmd2luZG93UHJv
eHktPndvcmxkKCksIFN0cm9uZzxKU0RPTVdpbmRvdz4od2luZG93LT52bSgpLCB3aW5kb3cpKTsK
ICAgICAgICAgd2luZG93LT5zZXRDb25zb2xlQ2xpZW50KG51bGxwdHIpOwogICAgIH0KIAotICAg
IHNjcmlwdENvbnRyb2xsZXIuYXR0YWNoRGVidWdnZXIobnVsbHB0cik7CisgICAgZnJhbWUuc2Ny
aXB0KCkuYXR0YWNoRGVidWdnZXIobnVsbHB0cik7CiB9CiAKIFNjcmlwdENhY2hlZEZyYW1lRGF0
YTo6flNjcmlwdENhY2hlZEZyYW1lRGF0YSgpCkBAIC03NCw3ICs3Miw3IEBAIHZvaWQgU2NyaXB0
Q2FjaGVkRnJhbWVEYXRhOjpyZXN0b3JlKEZyYW1lJiBmcmFtZSkKICAgICBQYWdlKiBwYWdlID0g
ZnJhbWUucGFnZSgpOwogICAgIGF1dG8mIHNjcmlwdENvbnRyb2xsZXIgPSBmcmFtZS5zY3JpcHQo
KTsKIAotICAgIGZvciAoYXV0byB3aW5kb3dQcm94eSA6IHNjcmlwdENvbnRyb2xsZXIud2luZG93
UHJveGllcygpKSB7CisgICAgZm9yIChhdXRvIHdpbmRvd1Byb3h5IDogZnJhbWUud2luZG93UHJv
eHlDb250cm9sbGVyKCkud2luZG93UHJveGllc0FzVmVjdG9yKCkpIHsKICAgICAgICAgYXV0byog
d29ybGQgPSAmd2luZG93UHJveHktPndvcmxkKCk7CiAKICAgICAgICAgaWYgKGF1dG8qIHdpbmRv
dyA9IG1fd2luZG93cy5nZXQod29ybGQpLmdldCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCBjYmQ5ZTcwMmVjY2ZkNjU1MmYzOWZm
N2Y4OWZiMzgzNmE5M2EzOWIzLi41Zjg3ZmE5MTZjMGJhMGY4MWIyZWI1NzY2NzlkMDI3OWZkNmZj
OWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVy
LmNwcApAQCAtMTE3LDM4ICsxMTcsMTcgQEAgU2NyaXB0Q29udHJvbGxlcjo6flNjcmlwdENvbnRy
b2xsZXIoKQogICAgICAgICBtX2NhY2hlYWJsZUJpbmRpbmdSb290T2JqZWN0ID0gbnVsbHB0cjsK
ICAgICB9CiAKLSAgICAvLyBJdCdzIGxpa2VseSB0aGF0IGRlc3Ryb3lpbmcgbV93aW5kb3dQcm94
aWVzIHdpbGwgY3JlYXRlIGEgbG90IG9mIGdhcmJhZ2UuCi0gICAgaWYgKCFtX3dpbmRvd1Byb3hp
ZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHdoaWxlICghbV93aW5kb3dQcm94aWVzLmlzRW1wdHko
KSkgewotICAgICAgICAgICAgYXV0byBpdGVyID0gbV93aW5kb3dQcm94aWVzLmJlZ2luKCk7Ci0g
ICAgICAgICAgICBpdGVyLT52YWx1ZS0+d2luZG93KCktPnNldENvbnNvbGVDbGllbnQobnVsbHB0
cik7Ci0gICAgICAgICAgICBkZXN0cm95V2luZG93UHJveHkoKml0ZXItPmtleSk7CisgICAgLy8g
SXQncyBsaWtlbHkgdGhhdCBkZXN0cm95aW5nIHdpbmRvd1Byb3hpZXMgd2lsbCBjcmVhdGUgYSBs
b3Qgb2YgZ2FyYmFnZS4KKyAgICBpZiAoIXdpbmRvd1Byb3h5Q29udHJvbGxlcigpLndpbmRvd1By
b3hpZXMoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgd2hpbGUgKCF3aW5kb3dQcm94eUNvbnRyb2xs
ZXIoKS53aW5kb3dQcm94aWVzKCkuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBhdXRvIHdpbmRv
d1Byb3h5ID0gKndpbmRvd1Byb3h5Q29udHJvbGxlcigpLndpbmRvd1Byb3hpZXMoKS5iZWdpbigp
OworICAgICAgICAgICAgd2luZG93UHJveHkuZ2V0KCktPndpbmRvdygpLT5zZXRDb25zb2xlQ2xp
ZW50KG51bGxwdHIpOworICAgICAgICAgICAgd2luZG93UHJveHlDb250cm9sbGVyKCkuZGVzdHJv
eVdpbmRvd1Byb3h5KHdpbmRvd1Byb3h5LmdldCgpLT53b3JsZCgpKTsKICAgICAgICAgfQogICAg
ICAgICBjb2xsZWN0R2FyYmFnZUFmdGVyV2luZG93UHJveHlEZXN0cnVjdGlvbigpOwogICAgIH0K
IH0KIAotdm9pZCBTY3JpcHRDb250cm9sbGVyOjpkZXN0cm95V2luZG93UHJveHkoRE9NV3JhcHBl
cldvcmxkJiB3b3JsZCkKLXsKLSAgICBBU1NFUlQobV93aW5kb3dQcm94aWVzLmNvbnRhaW5zKCZ3
b3JsZCkpOwotICAgIG1fd2luZG93UHJveGllcy5yZW1vdmUoJndvcmxkKTsKLSAgICB3b3JsZC5k
aWREZXN0cm95V2luZG93UHJveHkodGhpcyk7Ci19Ci0KLUpTRE9NV2luZG93UHJveHkmIFNjcmlw
dENvbnRyb2xsZXI6OmNyZWF0ZVdpbmRvd1Byb3h5KERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCi17
Ci0gICAgQVNTRVJUKCFtX3dpbmRvd1Byb3hpZXMuY29udGFpbnMoJndvcmxkKSk7Ci0gICAgQVNT
RVJUKG1fZnJhbWUuZG9jdW1lbnQoKS0+ZG9tV2luZG93KCkpOwotCi0gICAgVk0mIHZtID0gd29y
bGQudm0oKTsKLQotICAgIFN0cm9uZzxKU0RPTVdpbmRvd1Byb3h5PiB3aW5kb3dQcm94eSh2bSwg
JkpTRE9NV2luZG93UHJveHk6OmNyZWF0ZSh2bSwgKm1fZnJhbWUuZG9jdW1lbnQoKS0+ZG9tV2lu
ZG93KCksIHdvcmxkKSk7Ci0gICAgU3Ryb25nPEpTRE9NV2luZG93UHJveHk+IHdpbmRvd1Byb3h5
Mih3aW5kb3dQcm94eSk7Ci0gICAgbV93aW5kb3dQcm94aWVzLmFkZCgmd29ybGQsIHdpbmRvd1By
b3h5KTsKLSAgICB3b3JsZC5kaWRDcmVhdGVXaW5kb3dQcm94eSh0aGlzKTsKLSAgICByZXR1cm4g
KndpbmRvd1Byb3h5LmdldCgpOwotfQotCiBKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1
YXRlSW5Xb3JsZChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBET01XcmFwcGVy
V29ybGQmIHdvcmxkLCBFeGNlcHRpb25EZXRhaWxzKiBleGNlcHRpb25EZXRhaWxzKQogewogICAg
IEpTTG9ja0hvbGRlciBsb2NrKHdvcmxkLnZtKCkpOwpAQCAtMTYzLDcgKzE0Miw3IEBAIEpTVmFs
dWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbldvcmxkKGNvbnN0IFNjcmlwdFNvdXJjZUNv
ZGUmIHNvdXJjZUNvZGUsIERPCiAgICAgLy8gYW5kIGZhbHNlIGZvciA8c2NyaXB0PmRvU29tZXRo
aW5nKCk8L3NjcmlwdD4uIENoZWNrIGlmIGl0IGhhcyB0aGUKICAgICAvLyBleHBlY3RlZCB2YWx1
ZSBpbiBhbGwgY2FzZXMuCiAgICAgLy8gU2VlIHNtYXJ0IHdpbmRvdy5vcGVuIHBvbGljeSBmb3Ig
d2hlcmUgdGhpcyBpcyB1c2VkLgotICAgIGF1dG8mIHByb3h5ID0gKndpbmRvd1Byb3h5KHdvcmxk
KTsKKyAgICBhdXRvJiBwcm94eSA9ICp3aW5kb3dQcm94eUNvbnRyb2xsZXIoKS53aW5kb3dQcm94
eSh3b3JsZCk7CiAgICAgYXV0byYgZXhlYyA9ICpwcm94eS53aW5kb3coKS0+Z2xvYmFsRXhlYygp
OwogICAgIGNvbnN0IFN0cmluZyogc2F2ZWRTb3VyY2VVUkwgPSBtX3NvdXJjZVVSTDsKICAgICBt
X3NvdXJjZVVSTCA9ICZzb3VyY2VVUkw7CkBAIC0xOTYsNyArMTc1LDcgQEAgdm9pZCBTY3JpcHRD
b250cm9sbGVyOjpsb2FkTW9kdWxlU2NyaXB0SW5Xb3JsZChMb2FkYWJsZU1vZHVsZVNjcmlwdCYg
bW9kdWxlU2NyaXAKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh3b3JsZC52bSgpKTsKIAotICAg
IGF1dG8mIHByb3h5ID0gKndpbmRvd1Byb3h5KHdvcmxkKTsKKyAgICBhdXRvJiBwcm94eSA9ICp3
aW5kb3dQcm94eUNvbnRyb2xsZXIoKS53aW5kb3dQcm94eSh3b3JsZCk7CiAgICAgYXV0byYgc3Rh
dGUgPSAqcHJveHkud2luZG93KCktPmdsb2JhbEV4ZWMoKTsKIAogICAgIGF1dG8mIHByb21pc2Ug
PSBKU01haW5UaHJlYWRFeGVjU3RhdGU6OmxvYWRNb2R1bGUoc3RhdGUsIG1vZHVsZU5hbWUsIEpT
Qzo6SlNTY3JpcHRGZXRjaFBhcmFtZXRlcnM6OmNyZWF0ZShzdGF0ZS52bSgpLCBXVEZNb3ZlKHRv
cExldmVsRmV0Y2hQYXJhbWV0ZXJzKSksIEpTQzo6SlNTY3JpcHRGZXRjaGVyOjpjcmVhdGUoc3Rh
dGUudm0oKSwgeyAmbW9kdWxlU2NyaXB0IH0pKTsKQEAgLTIxMiw3ICsxOTEsNyBAQCB2b2lkIFNj
cmlwdENvbnRyb2xsZXI6OmxvYWRNb2R1bGVTY3JpcHRJbldvcmxkKExvYWRhYmxlTW9kdWxlU2Ny
aXB0JiBtb2R1bGVTY3JpcAogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKHdvcmxkLnZtKCkpOwog
Ci0gICAgYXV0byYgcHJveHkgPSAqd2luZG93UHJveHkod29ybGQpOworICAgIGF1dG8mIHByb3h5
ID0gKndpbmRvd1Byb3h5Q29udHJvbGxlcigpLndpbmRvd1Byb3h5KHdvcmxkKTsKICAgICBhdXRv
JiBzdGF0ZSA9ICpwcm94eS53aW5kb3coKS0+Z2xvYmFsRXhlYygpOwogCiAgICAgYXV0byYgcHJv
bWlzZSA9IEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6bG9hZE1vZHVsZShzdGF0ZSwgc291cmNlQ29k
ZS5qc1NvdXJjZUNvZGUoKSwgSlNDOjpKU1NjcmlwdEZldGNoZXI6OmNyZWF0ZShzdGF0ZS52bSgp
LCB7ICZtb2R1bGVTY3JpcHQgfSkpOwpAQCAtMjI4LDcgKzIwNyw3IEBAIEpTQzo6SlNWYWx1ZSBT
Y3JpcHRDb250cm9sbGVyOjpsaW5rQW5kRXZhbHVhdGVNb2R1bGVTY3JpcHRJbldvcmxkKExvYWRh
YmxlTW9kdWxlCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sod29ybGQudm0oKSk7CiAKLSAgICBh
dXRvJiBwcm94eSA9ICp3aW5kb3dQcm94eSh3b3JsZCk7CisgICAgYXV0byYgcHJveHkgPSAqd2lu
ZG93UHJveHlDb250cm9sbGVyKCkud2luZG93UHJveHkod29ybGQpOwogICAgIGF1dG8mIHN0YXRl
ID0gKnByb3h5LndpbmRvdygpLT5nbG9iYWxFeGVjKCk7CiAKICAgICAvLyBGSVhNRTogUHJldmVu
dGluZyBGcmFtZSBmcm9tIGJlaW5nIGRlc3Ryb3llZCBpcyBlc3NlbnRpYWxseSB1bm5lY2Vzc2Fy
eS4KQEAgLTI1Nyw3ICsyMzYsNyBAQCBKU0M6OkpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZh
bHVhdGVNb2R1bGUoY29uc3QgVVJMJiBzb3VyY2VVUkwsIEpTTW9kdWxlUmVjbwogCiAgICAgY29u
c3QgYXV0byYganNTb3VyY2VDb2RlID0gbW9kdWxlUmVjb3JkLnNvdXJjZUNvZGUoKTsKIAotICAg
IGF1dG8mIHByb3h5ID0gKndpbmRvd1Byb3h5KHdvcmxkKTsKKyAgICBhdXRvJiBwcm94eSA9ICp3
aW5kb3dQcm94eUNvbnRyb2xsZXIoKS53aW5kb3dQcm94eSh3b3JsZCk7CiAgICAgYXV0byYgc3Rh
dGUgPSAqcHJveHkud2luZG93KCktPmdsb2JhbEV4ZWMoKTsKICAgICBTZXRGb3JTY29wZTxjb25z
dCBTdHJpbmcqPiBzb3VyY2VVUkxTY29wZShtX3NvdXJjZVVSTCwgJnNvdXJjZVVSTC5zdHJpbmco
KSk7CiAKQEAgLTI4MSwxMSArMjYwLDYgQEAgUmVmPERPTVdyYXBwZXJXb3JsZD4gU2NyaXB0Q29u
dHJvbGxlcjo6Y3JlYXRlV29ybGQoKQogICAgIHJldHVybiBET01XcmFwcGVyV29ybGQ6OmNyZWF0
ZShjb21tb25WTSgpKTsKIH0KIAotVmVjdG9yPEpTQzo6U3Ryb25nPEpTRE9NV2luZG93UHJveHk+
PiBTY3JpcHRDb250cm9sbGVyOjp3aW5kb3dQcm94aWVzKCkKLXsKLSAgICByZXR1cm4gY29weVRv
VmVjdG9yKG1fd2luZG93UHJveGllcy52YWx1ZXMoKSk7Ci19Ci0KIHZvaWQgU2NyaXB0Q29udHJv
bGxlcjo6Z2V0QWxsV29ybGRzKFZlY3RvcjxSZWY8RE9NV3JhcHBlcldvcmxkPj4mIHdvcmxkcykK
IHsKICAgICBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KGNvbW1vblZNKCkuY2xpZW50RGF0
YSktPmdldEFsbFdvcmxkcyh3b3JsZHMpOwpAQCAtMjkzLDEzICsyNjcsMTMgQEAgdm9pZCBTY3Jp
cHRDb250cm9sbGVyOjpnZXRBbGxXb3JsZHMoVmVjdG9yPFJlZjxET01XcmFwcGVyV29ybGQ+PiYg
d29ybGRzKQogCiB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmNsZWFyV2luZG93UHJveGllc05vdE1h
dGNoaW5nRE9NV2luZG93KERPTVdpbmRvdyogbmV3RE9NV2luZG93LCBib29sIGdvaW5nSW50b1Bh
Z2VDYWNoZSkKIHsKLSAgICBpZiAobV93aW5kb3dQcm94aWVzLmlzRW1wdHkoKSkKKyAgICBpZiAo
d2luZG93UHJveHlDb250cm9sbGVyKCkud2luZG93UHJveGllcygpLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgSlNMb2NrSG9sZGVyIGxvY2soY29tbW9uVk0oKSk7CiAKLSAgICBm
b3IgKGF1dG8mIHdpbmRvd1Byb3h5IDogd2luZG93UHJveGllcygpKSB7Ci0gICAgICAgIGlmICgm
d2luZG93UHJveHktPndpbmRvdygpLT53cmFwcGVkKCkgPT0gbmV3RE9NV2luZG93KQorICAgIGZv
ciAoYXV0byYgd2luZG93UHJveHkgOiB3aW5kb3dQcm94eUNvbnRyb2xsZXIoKS53aW5kb3dQcm94
aWVzQXNWZWN0b3IoKSkgeworICAgICAgICBpZiAoJndpbmRvd1Byb3h5LT53cmFwcGVkKCkgPT0g
bmV3RE9NV2luZG93KQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgLy8gQ2xlYXIg
dGhlIGRlYnVnZ2VyIGFuZCBjb25zb2xlIGZyb20gdGhlIGN1cnJlbnQgd2luZG93IGJlZm9yZSBz
ZXR0aW5nIHRoZSBuZXcgd2luZG93LgpAQCAtMzE4LDEzICsyOTIsMTMgQEAgdm9pZCBTY3JpcHRD
b250cm9sbGVyOjpzZXRET01XaW5kb3dGb3JXaW5kb3dQcm94eShET01XaW5kb3cqIG5ld0RPTVdp
bmRvdykKIHsKICAgICBBU1NFUlQobmV3RE9NV2luZG93KTsKIAotICAgIGlmIChtX3dpbmRvd1By
b3hpZXMuaXNFbXB0eSgpKQorICAgIGlmICh3aW5kb3dQcm94eUNvbnRyb2xsZXIoKS53aW5kb3dQ
cm94aWVzKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgSlNMb2NrSG9s
ZGVyIGxvY2soY29tbW9uVk0oKSk7CiAgICAgCi0gICAgZm9yIChhdXRvJiB3aW5kb3dQcm94eSA6
IHdpbmRvd1Byb3hpZXMoKSkgewotICAgICAgICBpZiAoJndpbmRvd1Byb3h5LT53aW5kb3coKS0+
d3JhcHBlZCgpID09IG5ld0RPTVdpbmRvdykKKyAgICBmb3IgKGF1dG8mIHdpbmRvd1Byb3h5IDog
d2luZG93UHJveHlDb250cm9sbGVyKCkud2luZG93UHJveGllc0FzVmVjdG9yKCkpIHsKKyAgICAg
ICAgaWYgKCZ3aW5kb3dQcm94eS0+d3JhcHBlZCgpID09IG5ld0RPTVdpbmRvdykKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICAKICAgICAgICAgd2luZG93UHJveHktPnNldFdpbmRvdygq
bmV3RE9NV2luZG93KTsKQEAgLTM0NCwxMSArMzE4LDkgQEAgdm9pZCBTY3JpcHRDb250cm9sbGVy
OjpzZXRET01XaW5kb3dGb3JXaW5kb3dQcm94eShET01XaW5kb3cqIG5ld0RPTVdpbmRvdykKIAog
SlNET01XaW5kb3dQcm94eSogU2NyaXB0Q29udHJvbGxlcjo6aW5pdFNjcmlwdChET01XcmFwcGVy
V29ybGQmIHdvcmxkKQogewotICAgIEFTU0VSVCghbV93aW5kb3dQcm94aWVzLmNvbnRhaW5zKCZ3
b3JsZCkpOwotCiAgICAgSlNMb2NrSG9sZGVyIGxvY2sod29ybGQudm0oKSk7CiAKLSAgICBhdXRv
JiB3aW5kb3dQcm94eSA9IGNyZWF0ZVdpbmRvd1Byb3h5KHdvcmxkKTsKKyAgICBhdXRvJiB3aW5k
b3dQcm94eSA9IHdpbmRvd1Byb3h5Q29udHJvbGxlcigpLmNyZWF0ZVdpbmRvd1Byb3h5KHdvcmxk
KTsKIAogICAgIHdpbmRvd1Byb3h5LndpbmRvdygpLT51cGRhdGVEb2N1bWVudCgpOwogCkBAIC0z
NzYsNyArMzQ4LDcgQEAgc3RhdGljIElkZW50aWZpZXIganNWYWx1ZVRvTW9kdWxlS2V5KEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIAogdm9pZCBTY3JpcHRDb250cm9sbGVyOjpzZXR1
cE1vZHVsZVNjcmlwdEhhbmRsZXJzKExvYWRhYmxlTW9kdWxlU2NyaXB0JiBtb2R1bGVTY3JpcHRS
ZWYsIEpTSW50ZXJuYWxQcm9taXNlJiBwcm9taXNlLCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQog
ewotICAgIGF1dG8mIHByb3h5ID0gKndpbmRvd1Byb3h5KHdvcmxkKTsKKyAgICBhdXRvJiBwcm94
eSA9ICp3aW5kb3dQcm94eUNvbnRyb2xsZXIoKS53aW5kb3dQcm94eSh3b3JsZCk7CiAgICAgYXV0
byYgc3RhdGUgPSAqcHJveHkud2luZG93KCktPmdsb2JhbEV4ZWMoKTsKIAogICAgIC8vIEl0IGlz
IG5vdCBndWFyYW50ZWVkIHRoYXQgZWl0aGVyIGZ1bGZpbGxIYW5kbGVyIG9yIHJlamVjdEhhbmRs
ZXIgaXMgZXZlbnR1YWxseSBjYWxsZWQuCkBAIC00MjgsNiArNDAwLDExIEBAIHZvaWQgU2NyaXB0
Q29udHJvbGxlcjo6c2V0dXBNb2R1bGVTY3JpcHRIYW5kbGVycyhMb2FkYWJsZU1vZHVsZVNjcmlw
dCYgbW9kdWxlU2NyCiAgICAgcHJvbWlzZS50aGVuKCZzdGF0ZSwgJmZ1bGZpbGxIYW5kbGVyLCAm
cmVqZWN0SGFuZGxlcik7CiB9CiAKK1dpbmRvd1Byb3h5Q29udHJvbGxlciYgU2NyaXB0Q29udHJv
bGxlcjo6d2luZG93UHJveHlDb250cm9sbGVyKCkKK3sKKyAgICByZXR1cm4gbV9mcmFtZS53aW5k
b3dQcm94eUNvbnRyb2xsZXIoKTsKK30KKwogVGV4dFBvc2l0aW9uIFNjcmlwdENvbnRyb2xsZXI6
OmV2ZW50SGFuZGxlclBvc2l0aW9uKCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogSWYgd2UgYXJl
IG5vdCBjdXJyZW50bHkgcGFyc2luZywgd2Ugc2hvdWxkIHVzZSBvdXIgY3VycmVudCBsb2NhdGlv
bgpAQCAtNDQzLDcgKzQyMCw3IEBAIFRleHRQb3NpdGlvbiBTY3JpcHRDb250cm9sbGVyOjpldmVu
dEhhbmRsZXJQb3NpdGlvbigpIGNvbnN0CiAKIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6ZW5hYmxl
RXZhbCgpCiB7Ci0gICAgYXV0byogd2luZG93UHJveHkgPSBleGlzdGluZ1dpbmRvd1Byb3h5KG1h
aW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKKyAgICBhdXRvKiB3aW5kb3dQcm94eSA9IHdpbmRvd1By
b3h5Q29udHJvbGxlcigpLmV4aXN0aW5nV2luZG93UHJveHkobWFpblRocmVhZE5vcm1hbFdvcmxk
KCkpOwogICAgIGlmICghd2luZG93UHJveHkpCiAgICAgICAgIHJldHVybjsKICAgICB3aW5kb3dQ
cm94eS0+d2luZG93KCktPnNldEV2YWxFbmFibGVkKHRydWUpOwpAQCAtNDUxLDcgKzQyOCw3IEBA
IHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6ZW5hYmxlRXZhbCgpCiAKIHZvaWQgU2NyaXB0Q29udHJv
bGxlcjo6ZW5hYmxlV2ViQXNzZW1ibHkoKQogewotICAgIGF1dG8qIHdpbmRvd1Byb3h5ID0gZXhp
c3RpbmdXaW5kb3dQcm94eShtYWluVGhyZWFkTm9ybWFsV29ybGQoKSk7CisgICAgYXV0byogd2lu
ZG93UHJveHkgPSB3aW5kb3dQcm94eUNvbnRyb2xsZXIoKS5leGlzdGluZ1dpbmRvd1Byb3h5KG1h
aW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKICAgICBpZiAoIXdpbmRvd1Byb3h5KQogICAgICAgICBy
ZXR1cm47CiAgICAgd2luZG93UHJveHktPndpbmRvdygpLT5zZXRXZWJBc3NlbWJseUVuYWJsZWQo
dHJ1ZSk7CkBAIC00NTksNyArNDM2LDcgQEAgdm9pZCBTY3JpcHRDb250cm9sbGVyOjplbmFibGVX
ZWJBc3NlbWJseSgpCiAKIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6ZGlzYWJsZUV2YWwoY29uc3Qg
U3RyaW5nJiBlcnJvck1lc3NhZ2UpCiB7Ci0gICAgYXV0byogd2luZG93UHJveHkgPSBleGlzdGlu
Z1dpbmRvd1Byb3h5KG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKKyAgICBhdXRvKiB3aW5kb3dQ
cm94eSA9IHdpbmRvd1Byb3h5Q29udHJvbGxlcigpLmV4aXN0aW5nV2luZG93UHJveHkobWFpblRo
cmVhZE5vcm1hbFdvcmxkKCkpOwogICAgIGlmICghd2luZG93UHJveHkpCiAgICAgICAgIHJldHVy
bjsKICAgICB3aW5kb3dQcm94eS0+d2luZG93KCktPnNldEV2YWxFbmFibGVkKGZhbHNlLCBlcnJv
ck1lc3NhZ2UpOwpAQCAtNDY3LDcgKzQ0NCw3IEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6ZGlz
YWJsZUV2YWwoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiAKIHZvaWQgU2NyaXB0Q29udHJv
bGxlcjo6ZGlzYWJsZVdlYkFzc2VtYmx5KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQogewot
ICAgIGF1dG8qIHdpbmRvd1Byb3h5ID0gZXhpc3RpbmdXaW5kb3dQcm94eShtYWluVGhyZWFkTm9y
bWFsV29ybGQoKSk7CisgICAgYXV0byogd2luZG93UHJveHkgPSB3aW5kb3dQcm94eUNvbnRyb2xs
ZXIoKS5leGlzdGluZ1dpbmRvd1Byb3h5KG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKICAgICBp
ZiAoIXdpbmRvd1Byb3h5KQogICAgICAgICByZXR1cm47CiAgICAgd2luZG93UHJveHktPndpbmRv
dygpLT5zZXRXZWJBc3NlbWJseUVuYWJsZWQoZmFsc2UsIGVycm9yTWVzc2FnZSk7CkBAIC00ODYs
NyArNDYzLDcgQEAgYm9vbCBTY3JpcHRDb250cm9sbGVyOjpjYW5BY2Nlc3NGcm9tQ3VycmVudE9y
aWdpbihGcmFtZSogZnJhbWUpCiAKIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6YXR0YWNoRGVidWdn
ZXIoSlNDOjpEZWJ1Z2dlciogZGVidWdnZXIpCiB7Ci0gICAgZm9yIChhdXRvJiB3aW5kb3dQcm94
eSA6IHdpbmRvd1Byb3hpZXMoKSkKKyAgICBmb3IgKGF1dG8mIHdpbmRvd1Byb3h5IDogd2luZG93
UHJveHlDb250cm9sbGVyKCkud2luZG93UHJveGllcygpKQogICAgICAgICBhdHRhY2hEZWJ1Z2dl
cih3aW5kb3dQcm94eS5nZXQoKSwgZGVidWdnZXIpOwogfQogCkBAIC01MDYsNyArNDgzLDcgQEAg
dm9pZCBTY3JpcHRDb250cm9sbGVyOjphdHRhY2hEZWJ1Z2dlcihKU0RPTVdpbmRvd1Byb3h5KiBw
cm94eSwgSlNDOjpEZWJ1Z2dlciogZGUKIAogdm9pZCBTY3JpcHRDb250cm9sbGVyOjp1cGRhdGVE
b2N1bWVudCgpCiB7Ci0gICAgZm9yIChhdXRvJiB3aW5kb3dQcm94eSA6IHdpbmRvd1Byb3hpZXMo
KSkgeworICAgIGZvciAoYXV0byYgd2luZG93UHJveHkgOiB3aW5kb3dQcm94eUNvbnRyb2xsZXIo
KS53aW5kb3dQcm94aWVzQXNWZWN0b3IoKSkgewogICAgICAgICBKU0xvY2tIb2xkZXIgbG9jayh3
aW5kb3dQcm94eS0+d29ybGQoKS52bSgpKTsKICAgICAgICAgd2luZG93UHJveHktPndpbmRvdygp
LT51cGRhdGVEb2N1bWVudCgpOwogICAgIH0KQEAgLTU1MCw3ICs1MjcsNyBAQCBSZWY8QmluZGlu
Z3M6OlJvb3RPYmplY3Q+IFNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVJvb3RPYmplY3Qodm9pZCog
bmF0aXZlSGFuZGxlKQogCiB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmNvbGxlY3RJc29sYXRlZENv
bnRleHRzKFZlY3RvcjxzdGQ6OnBhaXI8SlNDOjpFeGVjU3RhdGUqLCBTZWN1cml0eU9yaWdpbio+
PiYgcmVzdWx0KQogewotICAgIGZvciAoYXV0byYgd2luZG93UHJveHkgOiBtX3dpbmRvd1Byb3hp
ZXMudmFsdWVzKCkpIHsKKyAgICBmb3IgKGF1dG8mIHdpbmRvd1Byb3h5IDogd2luZG93UHJveHlD
b250cm9sbGVyKCkud2luZG93UHJveGllc0FzVmVjdG9yKCkpIHsKICAgICAgICAgYXV0byogZXhl
YyA9IHdpbmRvd1Byb3h5LT53aW5kb3coKS0+Z2xvYmFsRXhlYygpOwogICAgICAgICBhdXRvKiBv
cmlnaW4gPSAmd2luZG93UHJveHktPndpbmRvdygpLT53cmFwcGVkKCkuZG9jdW1lbnQoKS0+c2Vj
dXJpdHlPcmlnaW4oKTsKICAgICAgICAgcmVzdWx0LmFwcGVuZChzdGQ6Om1ha2VfcGFpcihleGVj
LCBvcmlnaW4pKTsKQEAgLTU2NSw3ICs1NDIsNyBAQCBOUE9iamVjdCogU2NyaXB0Q29udHJvbGxl
cjo6d2luZG93U2NyaXB0TlBPYmplY3QoKQogICAgICAgICBpZiAoY2FuRXhlY3V0ZVNjcmlwdHMo
Tm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQpKSB7CiAgICAgICAgICAgICAvLyBKYXZhU2NyaXB0IGlz
IGVuYWJsZWQsIHNvIHRoZXJlIGlzIGEgSmF2YVNjcmlwdCB3aW5kb3cgb2JqZWN0LgogICAgICAg
ICAgICAgLy8gUmV0dXJuIGFuIE5QT2JqZWN0IGJvdW5kIHRvIHRoZSB3aW5kb3cgb2JqZWN0Lgot
ICAgICAgICAgICAgYXV0byogd2luZG93ID0gd2luZG93UHJveHkocGx1Z2luV29ybGQoKSktPndp
bmRvdygpOworICAgICAgICAgICAgYXV0byogd2luZG93ID0gd2luZG93UHJveHlDb250cm9sbGVy
KCkud2luZG93UHJveHkocGx1Z2luV29ybGQoKSktPndpbmRvdygpOwogICAgICAgICAgICAgQVNT
RVJUKHdpbmRvdyk7CiAgICAgICAgICAgICBCaW5kaW5nczo6Um9vdE9iamVjdCogcm9vdCA9IGJp
bmRpbmdSb290T2JqZWN0KCk7CiAgICAgICAgICAgICBtX3dpbmRvd1NjcmlwdE5QT2JqZWN0ID0g
X05QTl9DcmVhdGVTY3JpcHRPYmplY3QoMCwgd2luZG93LCByb290KTsKQEAgLTcyNiw3ICs3MDMs
NyBAQCBib29sIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVJZkphdmFTY3JpcHRVUkwoY29uc3Qg
VVJMJiB1cmwsIFNob3VsZFJlcGxhY2VEb2N1bQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAg
IFN0cmluZyBzY3JpcHRSZXN1bHQ7Ci0gICAgaWYgKCFyZXN1bHQgfHwgIXJlc3VsdC5nZXRTdHJp
bmcod2luZG93UHJveHkobWFpblRocmVhZE5vcm1hbFdvcmxkKCkpLT53aW5kb3coKS0+Z2xvYmFs
RXhlYygpLCBzY3JpcHRSZXN1bHQpKQorICAgIGlmICghcmVzdWx0IHx8ICFyZXN1bHQuZ2V0U3Ry
aW5nKHdpbmRvd1Byb3h5Q29udHJvbGxlcigpLndpbmRvd1Byb3h5KG1haW5UaHJlYWROb3JtYWxX
b3JsZCgpKS0+d2luZG93KCktPmdsb2JhbEV4ZWMoKSwgc2NyaXB0UmVzdWx0KSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGFsd2F5cyByZXBsYWNlIHRo
ZSBkb2N1bWVudCwgYnV0IGRvaW5nIHNvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRDb250cm9sbGVyLmgKaW5kZXggOGI2MDg4NTdkNjM0NDlhNmZhYWZmZWZlMjk0YTNlNzVh
MGJhM2ZiMS4uMzEyZjFkNWY1MjkyMDk0ZjJhMTdhOTFjMjNkYjk5Y2E2MGJmNjlmOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaApAQCAtMjMsNiAr
MjMsNyBAQAogCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJUeXBlcy5oIgogI2luY2x1ZGUgIkpTRE9N
V2luZG93UHJveHkuaCIKKyNpbmNsdWRlICJXaW5kb3dQcm94eUNvbnRyb2xsZXIuaCIKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9T
dHJvbmcuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtNzIsNyArNzMsNiBAQCBlbnVt
IFJlYXNvbkZvckNhbGxpbmdDYW5FeGVjdXRlU2NyaXB0cyB7CiBjbGFzcyBTY3JpcHRDb250cm9s
bGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIAotICAgIHVzaW5nIFByb3h5TWFw
ID0gSGFzaE1hcDxSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiwgSlNDOjpTdHJvbmc8SlNET01XaW5k
b3dQcm94eT4+OwogICAgIHVzaW5nIFJvb3RPYmplY3RNYXAgPSBIYXNoTWFwPHZvaWQqLCBSZWY8
SlNDOjpCaW5kaW5nczo6Um9vdE9iamVjdD4+OwogCiBwdWJsaWM6CkBAIC04MSwyNCArODEsOSBA
QCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPERPTVdyYXBwZXJXb3Js
ZD4gY3JlYXRlV29ybGQoKTsKIAotICAgIEpTRE9NV2luZG93UHJveHkmIGNyZWF0ZVdpbmRvd1By
b3h5KERPTVdyYXBwZXJXb3JsZCYpOwotICAgIHZvaWQgZGVzdHJveVdpbmRvd1Byb3h5KERPTVdy
YXBwZXJXb3JsZCYpOwotCi0gICAgVmVjdG9yPEpTQzo6U3Ryb25nPEpTRE9NV2luZG93UHJveHk+
PiB3aW5kb3dQcm94aWVzKCk7Ci0KLSAgICBKU0RPTVdpbmRvd1Byb3h5KiB3aW5kb3dQcm94eShE
T01XcmFwcGVyV29ybGQmIHdvcmxkKQotICAgIHsKLSAgICAgICAgYXV0byBpdGVyID0gbV93aW5k
b3dQcm94aWVzLmZpbmQoJndvcmxkKTsKLSAgICAgICAgcmV0dXJuIChpdGVyICE9IG1fd2luZG93
UHJveGllcy5lbmQoKSkgPyBpdGVyLT52YWx1ZS5nZXQoKSA6IGluaXRTY3JpcHQod29ybGQpOwot
ICAgIH0KLSAgICBKU0RPTVdpbmRvd1Byb3h5KiBleGlzdGluZ1dpbmRvd1Byb3h5KERPTVdyYXBw
ZXJXb3JsZCYgd29ybGQpIGNvbnN0Ci0gICAgewotICAgICAgICBhdXRvIGl0ZXIgPSBtX3dpbmRv
d1Byb3hpZXMuZmluZCgmd29ybGQpOwotICAgICAgICByZXR1cm4gKGl0ZXIgIT0gbV93aW5kb3dQ
cm94aWVzLmVuZCgpKSA/IGl0ZXItPnZhbHVlLmdldCgpIDogMDsKLSAgICB9CiAgICAgSlNET01X
aW5kb3cqIGdsb2JhbE9iamVjdChET01XcmFwcGVyV29ybGQmIHdvcmxkKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIHdpbmRvd1Byb3h5KHdvcmxkKS0+d2luZG93KCk7CisgICAgICAgIHJldHVybiB3
aW5kb3dQcm94eUNvbnRyb2xsZXIoKS53aW5kb3dQcm94eSh3b3JsZCktPndpbmRvdygpOwogICAg
IH0KIAogICAgIHN0YXRpYyB2b2lkIGdldEFsbFdvcmxkcyhWZWN0b3I8UmVmPERPTVdyYXBwZXJX
b3JsZD4+Jik7CkBAIC0xNDgsNyArMTMzLDcgQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyog
c291cmNlVVJMKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VVUkw7IH0gLy8gMCBpZiB3ZSBhcmUg
bm90IGV2YWx1YXRpbmcgYW55IHNjcmlwdAogCiAgICAgdm9pZCBjbGVhcldpbmRvd1Byb3hpZXNO
b3RNYXRjaGluZ0RPTVdpbmRvdyhET01XaW5kb3cqLCBib29sIGdvaW5nSW50b1BhZ2VDYWNoZSk7
Ci0gICAgdm9pZCBzZXRET01XaW5kb3dGb3JXaW5kb3dQcm94eShET01XaW5kb3cqKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldERPTVdpbmRvd0ZvcldpbmRvd1Byb3h5KERPTVdpbmRvdyop
OwogICAgIHZvaWQgdXBkYXRlRG9jdW1lbnQoKTsKIAogICAgIHZvaWQgbmFtZWRJdGVtQWRkZWQo
SFRNTERvY3VtZW50KiwgY29uc3QgQXRvbWljU3RyaW5nJikgeyB9CkBAIC0xNzgsMTMgKzE2Mywx
NSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgTlBPYmplY3QqIHdpbmRvd1NjcmlwdE5Q
T2JqZWN0KCk7CiAjZW5kaWYKIAotcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCBKU0RPTVdp
bmRvd1Byb3h5KiBpbml0U2NyaXB0KERPTVdyYXBwZXJXb3JsZCYpOworCitwcml2YXRlOgogICAg
IHZvaWQgc2V0dXBNb2R1bGVTY3JpcHRIYW5kbGVycyhMb2FkYWJsZU1vZHVsZVNjcmlwdCYsIEpT
Qzo6SlNJbnRlcm5hbFByb21pc2UmLCBET01XcmFwcGVyV29ybGQmKTsKIAogICAgIHZvaWQgZGlz
Y29ubmVjdFBsYXRmb3JtU2NyaXB0T2JqZWN0cygpOwogCi0gICAgUHJveHlNYXAgbV93aW5kb3dQ
cm94aWVzOworICAgIFdFQkNPUkVfRVhQT1JUIFdpbmRvd1Byb3h5Q29udHJvbGxlciYgd2luZG93
UHJveHlDb250cm9sbGVyKCk7CisKICAgICBGcmFtZSYgbV9mcmFtZTsKICAgICBjb25zdCBTdHJp
bmcqIG1fc291cmNlVVJMOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRDb250cm9sbGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0Q29udHJvbGxlck1hYy5tbQppbmRleCAxZmYwOTJmZTI4OGIyMjQ3ODFmZjliMjU5YmMwOGIz
MTNmN2YyZWFjLi5lMGJjNGI5ZjZiYzNjOWRmYWZjZjBjNjJiMmZjMTQyMDk3YTFkMjkxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXJNYWMubW0K
QEAgLTEwMyw3ICsxMDMsNyBAQCBXZWJTY3JpcHRPYmplY3QgKlNjcmlwdENvbnRyb2xsZXI6Ondp
bmRvd1NjcmlwdE9iamVjdCgpCiAgICAgaWYgKCFtX3dpbmRvd1NjcmlwdE9iamVjdCkgewogICAg
ICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKGNvbW1vblZNKCkpOwogICAgICAgICBKU0M6OkJp
bmRpbmdzOjpSb290T2JqZWN0KiByb290ID0gYmluZGluZ1Jvb3RPYmplY3QoKTsKLSAgICAgICAg
bV93aW5kb3dTY3JpcHRPYmplY3QgPSBbV2ViU2NyaXB0T2JqZWN0IHNjcmlwdE9iamVjdEZvckpT
T2JqZWN0OnRvUmVmKHdpbmRvd1Byb3h5KHBsdWdpbldvcmxkKCkpKSBvcmlnaW5Sb290T2JqZWN0
OnJvb3Qgcm9vdE9iamVjdDpyb290XTsKKyAgICAgICAgbV93aW5kb3dTY3JpcHRPYmplY3QgPSBb
V2ViU2NyaXB0T2JqZWN0IHNjcmlwdE9iamVjdEZvckpTT2JqZWN0OnRvUmVmKHdpbmRvd1Byb3h5
Q29udHJvbGxlcigpLndpbmRvd1Byb3h5KHBsdWdpbldvcmxkKCkpKSBvcmlnaW5Sb290T2JqZWN0
OnJvb3Qgcm9vdE9iamVjdDpyb290XTsKICAgICB9CiAKICAgICByZXR1cm4gbV93aW5kb3dTY3Jp
cHRPYmplY3QuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5j
cHAKaW5kZXggMTViZTI0ZGJiMDUyM2NkMzNhMzBiYjU5NmQ4MGU2YmNlNmMzMzcxNS4uYzgzNDRj
YzMzZTE4MjViMGFlZmY0NzZhZDE3ODA2MGIxMmNkOGEwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcApAQCAtNzUsNyArNzUsNyBAQCBKU0M6OkV4ZWNTdGF0
ZSogbWFpbldvcmxkRXhlY1N0YXRlKEZyYW1lKiBmcmFtZSkKIHsKICAgICBpZiAoIWZyYW1lKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gZnJhbWUtPnNjcmlwdCgpLndpbmRv
d1Byb3h5KG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKS0+d2luZG93KCktPmdsb2JhbEV4ZWMoKTsK
KyAgICByZXR1cm4gZnJhbWUtPndpbmRvd1Byb3h5Q29udHJvbGxlcigpLndpbmRvd1Byb3h5KG1h
aW5UaHJlYWROb3JtYWxXb3JsZCgpKS0+d2luZG93KCktPmdsb2JhbEV4ZWMoKTsKIH0KIAogSlND
OjpFeGVjU3RhdGUqIGV4ZWNTdGF0ZUZyb21Ob2RlKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIE5v
ZGUqIG5vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XaW5kb3dQ
cm94eUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJv
eHlDb250cm9sbGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYzgwODU5YjEwOTE0Y2Y3MGQ3OGE5YzQwOTkx
YWM4OGE4MDQwZDhhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvV2luZG93UHJveHlDb250cm9sbGVyLmNwcApAQCAtMCwwICsxLDc5IEBACisvKgorICogIENv
cHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCisgKiAg
Q29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCisgKiAgQ29weXJp
Z2h0IChDKSAyMDA2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBH
ZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAg
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBN
QSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IldpbmRvd1Byb3h5Q29udHJvbGxlci5oIgorCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRl
ICJSZW1vdGVGcmFtZS5oIgorI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU0xvY2suaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitXaW5k
b3dQcm94eUNvbnRyb2xsZXI6OldpbmRvd1Byb3h5Q29udHJvbGxlcihBYnN0cmFjdEZyYW1lJiBm
cmFtZSkKKyAgICA6IG1fZnJhbWUoZnJhbWUpCit7Cit9CisKK3ZvaWQgV2luZG93UHJveHlDb250
cm9sbGVyOjpkZXN0cm95V2luZG93UHJveHkoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKK3sKKyAg
ICBBU1NFUlQobV93aW5kb3dQcm94aWVzLmNvbnRhaW5zKCZ3b3JsZCkpOworICAgIG1fd2luZG93
UHJveGllcy5yZW1vdmUoJndvcmxkKTsKKyAgICB3b3JsZC5kaWREZXN0cm95V2luZG93UHJveHko
dGhpcyk7Cit9CisKK0pTRE9NV2luZG93UHJveHkmIFdpbmRvd1Byb3h5Q29udHJvbGxlcjo6Y3Jl
YXRlV2luZG93UHJveHkoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKK3sKKyAgICBBU1NFUlQoIW1f
d2luZG93UHJveGllcy5jb250YWlucygmd29ybGQpKTsKKyAgICBBU1NFUlQobV9mcmFtZS53aW5k
b3coKSk7CisKKyAgICBWTSYgdm0gPSB3b3JsZC52bSgpOworCisgICAgLy8gRklYTUU6IFdlIGRv
IG5vdCBzdXBwb3J0IGNvbnN0cnVjdGluZyBhIEpTRE9NV2luZG93UHJveHkgZm9yIGEgUmVtb3Rl
RE9NV2luZG93IHlldC4KKyAgICBSRUxFQVNFX0FTU0VSVChpczxET01XaW5kb3c+KG1fZnJhbWUu
d2luZG93KCkpKTsKKworICAgIFN0cm9uZzxKU0RPTVdpbmRvd1Byb3h5PiB3aW5kb3dQcm94eSh2
bSwgJkpTRE9NV2luZG93UHJveHk6OmNyZWF0ZSh2bSwgKmRvd25jYXN0PERPTVdpbmRvdz4obV9m
cmFtZS53aW5kb3coKSksIHdvcmxkKSk7CisgICAgU3Ryb25nPEpTRE9NV2luZG93UHJveHk+IHdp
bmRvd1Byb3h5Mih3aW5kb3dQcm94eSk7CisgICAgbV93aW5kb3dQcm94aWVzLmFkZCgmd29ybGQs
IHdpbmRvd1Byb3h5KTsKKyAgICB3b3JsZC5kaWRDcmVhdGVXaW5kb3dQcm94eSh0aGlzKTsKKyAg
ICByZXR1cm4gKndpbmRvd1Byb3h5LmdldCgpOworfQorCithdXRvIFdpbmRvd1Byb3h5Q29udHJv
bGxlcjo6d2luZG93UHJveGllcygpIC0+IFByb3h5TWFwOjpWYWx1ZXNJdGVyYXRvclJhbmdlCit7
CisgICAgcmV0dXJuIG1fd2luZG93UHJveGllcy52YWx1ZXMoKTsKK30KKworVmVjdG9yPEpTQzo6
U3Ryb25nPEpTRE9NV2luZG93UHJveHk+PiBXaW5kb3dQcm94eUNvbnRyb2xsZXI6OndpbmRvd1By
b3hpZXNBc1ZlY3RvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNvcHlUb1ZlY3RvcihtX3dpbmRv
d1Byb3hpZXMudmFsdWVzKCkpOworfQorCitKU0RPTVdpbmRvd1Byb3h5KiBXaW5kb3dQcm94eUNv
bnRyb2xsZXI6OndpbmRvd1Byb3h5U2xvdyhET01XcmFwcGVyV29ybGQmIHdvcmxkKQoreworICAg
IGlmIChpczxGcmFtZT4obV9mcmFtZSkpCisgICAgICAgIHJldHVybiBkb3duY2FzdDxGcmFtZT4o
bV9mcmFtZSkuc2NyaXB0KCkuaW5pdFNjcmlwdCh3b3JsZCk7CisKKyAgICBKU0xvY2tIb2xkZXIg
bG9jayh3b3JsZC52bSgpKTsKKyAgICByZXR1cm4gJmNyZWF0ZVdpbmRvd1Byb3h5KHdvcmxkKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvV2luZG93UHJveHlDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9XaW5kb3dQcm94eUNvbnRyb2xsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMmM4YmM5ZWFhYzE4
NGNmMmZiODFkM2Y0ODI2MTJlNWU2NTk3ZmMwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJveHlDb250cm9sbGVyLmgKQEAgLTAsMCArMSw3MyBA
QAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMSBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBr
ZGUub3JnKQorICogIENvcHlyaWdodCAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3QuY29t
KQorICogIENvcHlyaWdodCAoQykgMjAwNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5z
ZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0
d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiSlNET01XaW5kb3dQcm94eS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0
cm9uZy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgQWJzdHJhY3RGcmFtZTsKKworY2xhc3MgV2luZG93UHJveHlDb250cm9sbGVyIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICB1c2luZyBQcm94eU1h
cCA9IEhhc2hNYXA8UmVmUHRyPERPTVdyYXBwZXJXb3JsZD4sIEpTQzo6U3Ryb25nPEpTRE9NV2lu
ZG93UHJveHk+PjsKKworICAgIGV4cGxpY2l0IFdpbmRvd1Byb3h5Q29udHJvbGxlcihBYnN0cmFj
dEZyYW1lJik7CisKKyAgICBKU0RPTVdpbmRvd1Byb3h5JiBjcmVhdGVXaW5kb3dQcm94eShET01X
cmFwcGVyV29ybGQmKTsKKyAgICB2b2lkIGRlc3Ryb3lXaW5kb3dQcm94eShET01XcmFwcGVyV29y
bGQmKTsKKworICAgIFByb3h5TWFwOjpWYWx1ZXNJdGVyYXRvclJhbmdlIHdpbmRvd1Byb3hpZXMo
KTsKKyAgICBWZWN0b3I8SlNDOjpTdHJvbmc8SlNET01XaW5kb3dQcm94eT4+IHdpbmRvd1Byb3hp
ZXNBc1ZlY3RvcigpIGNvbnN0OworCisgICAgUHJveHlNYXAgcmVsZWFzZVdpbmRvd1Byb3hpZXMo
KSB7IHJldHVybiBzdGQ6OmV4Y2hhbmdlKG1fd2luZG93UHJveGllcywgUHJveHlNYXAoKSk7IH0K
KyAgICB2b2lkIHNldFdpbmRvd1Byb3hpZXMoUHJveHlNYXAmJiB3aW5kb3dQcm94aWVzKSB7IG1f
d2luZG93UHJveGllcyA9IFdURk1vdmUod2luZG93UHJveGllcyk7IH0KKworICAgIEpTRE9NV2lu
ZG93UHJveHkqIHdpbmRvd1Byb3h5KERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCisgICAgeworICAg
ICAgICBhdXRvIGl0ZXIgPSBtX3dpbmRvd1Byb3hpZXMuZmluZCgmd29ybGQpOworICAgICAgICBp
ZiAoaXRlciAhPSBtX3dpbmRvd1Byb3hpZXMuZW5kKCkpCisgICAgICAgICAgICByZXR1cm4gaXRl
ci0+dmFsdWUuZ2V0KCk7CisKKyAgICAgICAgcmV0dXJuIHdpbmRvd1Byb3h5U2xvdyh3b3JsZCk7
CisgICAgfQorCisgICAgSlNET01XaW5kb3dQcm94eSogZXhpc3RpbmdXaW5kb3dQcm94eShET01X
cmFwcGVyV29ybGQmIHdvcmxkKSBjb25zdAorICAgIHsKKyAgICAgICAgYXV0byBpdGVyID0gbV93
aW5kb3dQcm94aWVzLmZpbmQoJndvcmxkKTsKKyAgICAgICAgcmV0dXJuIChpdGVyICE9IG1fd2lu
ZG93UHJveGllcy5lbmQoKSkgPyBpdGVyLT52YWx1ZS5nZXQoKSA6IDA7CisgICAgfQorICAgIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKKyAg
ICB7CisgICAgICAgIHJldHVybiB3aW5kb3dQcm94eSh3b3JsZCktPndpbmRvdygpOworICAgIH0K
KworcHJpdmF0ZToKKyAgICBXRUJDT1JFX0VYUE9SVCBKU0RPTVdpbmRvd1Byb3h5KiB3aW5kb3dQ
cm94eVNsb3coRE9NV3JhcHBlcldvcmxkJik7CisKKyAgICBBYnN0cmFjdEZyYW1lJiBtX2ZyYW1l
OworICAgIFByb3h5TWFwIG1fd2luZG93UHJveGllczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IGZlMDU1OGRhNGU4
YzcxYzE1Y2E4ODE5ODZmMDIwNTM0YzExNDNiMTcuLjgxYzBlN2U5ZjhmMWVkNDYwMzlmNjI2NDY0
MmZlYzVkYjg5ZmJmZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAt
MzY2MCw3ICszNjYwLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hEaWRDbGVhcldpbmRv
d09iamVjdHNJbkFsbFdvcmxkcygpCiAKIHZvaWQgRnJhbWVMb2FkZXI6OmRpc3BhdGNoRGlkQ2xl
YXJXaW5kb3dPYmplY3RJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCiB7Ci0gICAgaWYg
KCFtX2ZyYW1lLnNjcmlwdCgpLmNhbkV4ZWN1dGVTY3JpcHRzKE5vdEFib3V0VG9FeGVjdXRlU2Ny
aXB0KSB8fCAhbV9mcmFtZS5zY3JpcHQoKS5leGlzdGluZ1dpbmRvd1Byb3h5KHdvcmxkKSkKKyAg
ICBpZiAoIW1fZnJhbWUuc2NyaXB0KCkuY2FuRXhlY3V0ZVNjcmlwdHMoTm90QWJvdXRUb0V4ZWN1
dGVTY3JpcHQpIHx8ICFtX2ZyYW1lLndpbmRvd1Byb3h5Q29udHJvbGxlcigpLmV4aXN0aW5nV2lu
ZG93UHJveHkod29ybGQpKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2NsaWVudC5kaXNwYXRj
aERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZCh3b3JsZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0Fic3RyYWN0RnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9BYnN0
cmFjdEZyYW1lLmNwcAppbmRleCAyZjBmNmRhNjBiZjIxM2U5ZjgyNzJiMmNkM2NjYWNiMTIyN2I4
ODg1Li4wN2RiNTA2ODU1MTExMmYxNDllY2E3MTc4MDFiMzE5ODgxZWU3MDc5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Fic3RyYWN0RnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQWJzdHJhY3RGcmFtZS5jcHAKQEAgLTI2LDkgKzI2LDEyIEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiQWJzdHJhY3RGcmFtZS5oIgogCisjaW5jbHVkZSAiV2luZG93
UHJveHlDb250cm9sbGVyLmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQWJzdHJhY3RGcmFt
ZTo6QWJzdHJhY3RGcmFtZSgpCisgICAgOiBtX3dpbmRvd1Byb3h5Q29udHJvbGxlcihtYWtlVW5p
cXVlUmVmPFdpbmRvd1Byb3h5Q29udHJvbGxlcj4oKnRoaXMpKQogewogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Fic3RyYWN0RnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQWJzdHJhY3RGcmFtZS5oCmluZGV4IDU2MTE1ZWI2Y2NiYzIwMzMyNTMzZGFiYWE1NjI5MGJh
ZjAxZDFiYmUuLjMzNGM5ZWNjYTQ1ODZkZjhiZDZmMmI1YTAzNGNjOTVlNWI4OGY2MTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQWJzdHJhY3RGcmFtZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQWJzdHJhY3RGcmFtZS5oCkBAIC00MSw2ICs0MSw5IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIGJvb2wgaXNMb2NhbEZyYW1lKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9v
bCBpc1JlbW90ZUZyYW1lKCkgY29uc3QgPSAwOwogCisgICAgV2luZG93UHJveHlDb250cm9sbGVy
JiB3aW5kb3dQcm94eUNvbnRyb2xsZXIoKSB7IHJldHVybiBtX3dpbmRvd1Byb3h5Q29udHJvbGxl
cjsgfQorICAgIGNvbnN0IFdpbmRvd1Byb3h5Q29udHJvbGxlciYgd2luZG93UHJveHlDb250cm9s
bGVyKCkgY29uc3QgeyByZXR1cm4gbV93aW5kb3dQcm94eUNvbnRyb2xsZXI7IH0KKwogICAgIEFi
c3RyYWN0RE9NV2luZG93KiB3aW5kb3coKSBjb25zdCB7IHJldHVybiB2aXJ0dWFsV2luZG93KCk7
IH0KIAogcHJvdGVjdGVkOgpAQCAtNDgsNiArNTEsOCBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6
CiAgICAgdmlydHVhbCBBYnN0cmFjdERPTVdpbmRvdyogdmlydHVhbFdpbmRvdygpIGNvbnN0ID0g
MDsKKworICAgIFVuaXF1ZVJlZjxXaW5kb3dQcm94eUNvbnRyb2xsZXI+IG1fd2luZG93UHJveHlD
b250cm9sbGVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCBlMTgyYzAxMGJlMTc0
MWRmNDM2OTQ4YzllMzJjYzFmNzEzMzk0N2IyLi40YjZiYmUzM2Q2MzQ2NTRmOGI2ZDM1ZmNhZGU4
Y2ZmYTFhMzMxNGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmNwcApAQCAtMTQ0MSwxNCArMTQ0MSwxNCBAQCB2b2lkIFBsdWdpblZpZXc6OmNh
bmNlbE1hbnVhbFN0cmVhbUxvYWQoKQogTlBPYmplY3QqIFBsdWdpblZpZXc6OndpbmRvd1Njcmlw
dE5QT2JqZWN0KCkKIHsKICAgICBpZiAoIWZyYW1lKCkpCi0gICAgICAgIHJldHVybiAwOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmICghZnJhbWUoKS0+c2NyaXB0KCkuY2FuRXhl
Y3V0ZVNjcmlwdHMoTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQpKSB7CiAgICAgICAgIC8vIEZJWE1F
OiBJbnZlc3RpZ2F0ZSBpZiBvdGhlciBicm93c2VycyBhbGxvdyBwbHVnLWlucyB0byBhY2Nlc3Mg
SmF2YVNjcmlwdCBvYmplY3RzIGV2ZW4gaWYgSmF2YVNjcmlwdCBpcyBkaXNhYmxlZC4KLSAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVy
biBtX25wUnVudGltZU9iamVjdE1hcC5nZXRPckNyZWF0ZU5QT2JqZWN0KHBsdWdpbldvcmxkKCku
dm0oKSwgZnJhbWUoKS0+c2NyaXB0KCkud2luZG93UHJveHkocGx1Z2luV29ybGQoKSktPndpbmRv
dygpKTsKKyAgICByZXR1cm4gbV9ucFJ1bnRpbWVPYmplY3RNYXAuZ2V0T3JDcmVhdGVOUE9iamVj
dChwbHVnaW5Xb3JsZCgpLnZtKCksIGZyYW1lKCktPndpbmRvd1Byb3h5Q29udHJvbGxlcigpLndp
bmRvd1Byb3h5KHBsdWdpbldvcmxkKCkpLT53aW5kb3coKSk7CiB9CiAKIE5QT2JqZWN0KiBQbHVn
aW5WaWV3OjpwbHVnaW5FbGVtZW50TlBPYmplY3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5J
bnN0YW5jZVByb3h5Lm1tCmluZGV4IDZmMmQyNTlmNTlkMDQxMGE1ZTQ3NzQ0NmY1NDk3MDIzNjM1
NDJlZDkuLjZlZjZlZjlhMzEyOGUxZWE3ZTRhNTIxZTkzODc3YTc3MTE5YTBkNDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2lu
SW5zdGFuY2VQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hv
c3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KQEAgLTgzOSw3ICs4MzksNyBAQCBi
b29sIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6Z2V0V2luZG93TlBPYmplY3QodWludDMy
X3QmIG9iamVjdElEKQogICAgIGlmICghZnJhbWUtPnNjcmlwdCgpLmNhbkV4ZWN1dGVTY3JpcHRz
KE5vdEFib3V0VG9FeGVjdXRlU2NyaXB0KSkKICAgICAgICAgb2JqZWN0SUQgPSAwOwogICAgIGVs
c2UKLSAgICAgICAgb2JqZWN0SUQgPSBtX2xvY2FsT2JqZWN0cy5pZEZvck9iamVjdChwbHVnaW5X
b3JsZCgpLnZtKCksIGZyYW1lLT5zY3JpcHQoKS53aW5kb3dQcm94eShwbHVnaW5Xb3JsZCgpKS0+
d2luZG93KCkpOworICAgICAgICBvYmplY3RJRCA9IG1fbG9jYWxPYmplY3RzLmlkRm9yT2JqZWN0
KHBsdWdpbldvcmxkKCkudm0oKSwgZnJhbWUtPndpbmRvd1Byb3h5Q29udHJvbGxlcigpLndpbmRv
d1Byb3h5KHBsdWdpbldvcmxkKCkpLT53aW5kb3coKSk7CiAgICAgICAgIAogICAgIHJldHVybiB0
cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJG
cmFtZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5k
ZXggYmE5MTYyYzFhZDUxNjAzMjczY2MwMjgxMzM5ZjY3NzFkYTNmM2VlOC4uNTlhMWNmMTAzNzY2
OTExMTNhYjZkZTY1OGEwMGJmZmIwMmY2OTY4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC0zNjAsMTUgKzM2MCwxNSBAQCBzdGF0aWMgTlNVUkwg
KmNyZWF0ZVVuaXF1ZVdlYkRhdGFVUkwoKTsKIAogLSAodm9pZClfYXR0YWNoU2NyaXB0RGVidWdn
ZXIKIHsKLSAgICBTY3JpcHRDb250cm9sbGVyJiBzY3JpcHRDb250cm9sbGVyID0gX3ByaXZhdGUt
PmNvcmVGcmFtZS0+c2NyaXB0KCk7CisgICAgYXV0byYgd2luZG93UHJveHlDb250cm9sbGVyID0g
X3ByaXZhdGUtPmNvcmVGcmFtZS0+d2luZG93UHJveHlDb250cm9sbGVyKCk7CiAKICAgICAvLyBD
YWxsaW5nIFNjcmlwdENvbnRyb2xsZXI6Omdsb2JhbE9iamVjdCgpIHdvdWxkIGNyZWF0ZSBhIHdp
bmRvdyBwcm94eSwgYW5kIGRpc3BhdGNoIGNvcnJlc3BvbmRpbmcgY2FsbGJhY2tzLCB3aGljaCBt
YXkgYmUgcHJlbWF0dXJlCiAgICAgLy8gaWYgdGhlIHNjcmlwdCBkZWJ1Z2dlciBpcyBhdHRhY2hl
ZCBiZWZvcmUgYSBkb2N1bWVudCBpcyBjcmVhdGVkLiAgVGhlc2UgY2FsbHMgdXNlIHRoZSBkZWJ1
Z2dlcldvcmxkKCksIHdlIHdpbGwgbmVlZCB0byBwYXNzIGEgd29ybGQKICAgICAvLyB0byBiZSBh
YmxlIHRvIGRlYnVnIGlzb2xhdGVkIHdvcmxkcy4KLSAgICBpZiAoIXNjcmlwdENvbnRyb2xsZXIu
ZXhpc3RpbmdXaW5kb3dQcm94eShkZWJ1Z2dlcldvcmxkKCkpKQorICAgIGlmICghd2luZG93UHJv
eHlDb250cm9sbGVyLmV4aXN0aW5nV2luZG93UHJveHkoZGVidWdnZXJXb3JsZCgpKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHNjcmlwdENv
bnRyb2xsZXIuZ2xvYmFsT2JqZWN0KGRlYnVnZ2VyV29ybGQoKSk7CisgICAgYXV0byogZ2xvYmFs
T2JqZWN0ID0gd2luZG93UHJveHlDb250cm9sbGVyLmdsb2JhbE9iamVjdChkZWJ1Z2dlcldvcmxk
KCkpOwogICAgIGlmICghZ2xvYmFsT2JqZWN0KQogICAgICAgICByZXR1cm47CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>337909</attachid>
            <date>2018-04-13 11:11:29 -0700</date>
            <delta_ts>2018-04-13 11:57:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184591-20180413111128.patch</filename>
            <type>text/plain</type>
            <size>45969</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwNjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA1YzEwMjViZjU2YjFiNmFmODZjYzNh
YWFkNDEyOTdmM2JiMDhjNzUuLjZhYzY5NjE5MDE2NGIzMGY3ZjQ2YmY0NGY1NDk4MzE0OTE0MWI4
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTgtMDQtMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBTcGxpdCBXaW5kb3dQcm94eSBoYW5kbGluZyBvdXQgb2Yg
U2NyaXB0Q29udHJvbGxlciBhbmQgaW50byBhIG5ldyBjbGFzcyBvd25lZCBieSBBYnN0cmFjdEZy
YW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ1
OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
aXNFbXB0eSgpIGNvbnZlbmllbmNlIG1ldGhvZCB0byBTaXplZEl0ZXJhdG9yUmFuZ2UuCisKKyAg
ICAgICAgKiB3dGYvSXRlcmF0b3JSYW5nZS5oOgorICAgICAgICAoV1RGOjpTaXplZEl0ZXJhdG9y
UmFuZ2U6OmlzRW1wdHkgY29uc3QpOgorCiAyMDE4LTA0LTEyICBNaWNoYWVsIENhdGFuemFybyAg
PG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBSZW1vdmUgdW51c2VkIGNyYXNoIGhv
b2sgZnVuY3Rpb25hbGl0eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGE1YjQ3N2E3MmU0Mzk3NDI2NzQxY2E4Mzdk
MDRjMmNmMDMwOWQxNjYuLmViZmFmMjYwM2IxMTc2NWM4MDAyNGM3ZTljY2M4YmM2NDgxODE1MTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3NyBAQAorMjAxOC0wNC0xMyAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFNwbGl0IFdpbmRvd1Byb3h5IGhhbmRsaW5nIG91
dCBvZiBTY3JpcHRDb250cm9sbGVyIGFuZCBpbnRvIGEgbmV3IGNsYXNzIG93bmVkIGJ5IEFic3Ry
YWN0RnJhbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4NDU5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFNwbGl0IFdpbmRvd1Byb3h5IGhhbmRsaW5nIG91dCBvZiBTY3JpcHRDb250cm9sbGVyIGFuZCBp
bnRvIGEgbmV3IGNsYXNzIG93bmVkIGJ5IEFic3RyYWN0RnJhbWUuCisgICAgICAgIFJlbW90ZUZy
YW1lcyBkbyBub3QgbmVlZCBhIFNjcmlwdENvbnRyb2xsZXIgYnV0IGRvIG5lZWQgdG8gbWFpbnRh
aW4gV2luZG93UHJveGllcy4KKyAgICAgICAgVGhpcyBpcyB3b3JrIHRvd2FyZHMgZml4aW5nIEJ1
ZyAxODQ1MTUuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvRE9NV3JhcHBl
cldvcmxkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZDo6fkRPTVdyYXBw
ZXJXb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpET01XcmFwcGVyV29ybGQ6OmNsZWFyV3JhcHBl
cnMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5oOgorICAgICAgICAo
V2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkOjpkaWRDcmVhdGVXaW5kb3dQcm94eSk6CisgICAgICAg
IChXZWJDb3JlOjpET01XcmFwcGVyV29ybGQ6OmRpZERlc3Ryb3lXaW5kb3dQcm94eSk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9KU0RPTVdp
bmRvdyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dQcm94eS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNET01XaW5kb3dQcm94
eSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdENhY2hlZEZyYW1lRGF0YTo6U2NyaXB0Q2FjaGVkRnJhbWVE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENhY2hlZEZyYW1lRGF0YTo6cmVzdG9yZSk6
CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjp+U2NyaXB0Q29udHJvbGxlcik6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGQpOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0Q29udHJvbGxlcjo6bG9hZE1vZHVsZVNjcmlwdEluV29ybGQpOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6bGlua0FuZEV2YWx1YXRlTW9kdWxlU2NyaXB0
SW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZU1v
ZHVsZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpjbGVhcldpbmRvd1By
b3hpZXNOb3RNYXRjaGluZ0RPTVdpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250
cm9sbGVyOjpzZXRET01XaW5kb3dGb3JXaW5kb3dQcm94eSk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0Rm9yV2luZG93UHJveHkpOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0Q29udHJvbGxlcjo6c2V0dXBNb2R1bGVTY3JpcHRIYW5kbGVycyk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjp3aW5kb3dQcm94eUNvbnRyb2xsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZW5hYmxlRXZhbCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjplbmFibGVXZWJBc3NlbWJseSk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpkaXNhYmxlRXZhbCk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRDb250cm9sbGVyOjpkaXNhYmxlV2ViQXNzZW1ibHkpOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0Q29udHJvbGxlcjo6YXR0YWNoRGVidWdnZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0Q29udHJvbGxlcjo6dXBkYXRlRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0Q29udHJvbGxlcjo6Y29sbGVjdElzb2xhdGVkQ29udGV4dHMpOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0Q29udHJvbGxlcjo6d2luZG93U2NyaXB0TlBPYmplY3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZUlmSmF2YVNjcmlwdFVSTCk6CisgICAg
ICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0Q29udHJvbGxlcjo6Z2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9T
Y3JpcHRDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxl
cjo6d2luZG93U2NyaXB0T2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTdGF0
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYWluV29ybGRFeGVjU3RhdGUpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL1dpbmRvd1Byb3h5Q29udHJvbGxlci5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6V2luZG93UHJveHlDb250cm9sbGVyOjpXaW5kb3dQcm94eUNvbnRyb2xsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6V2luZG93UHJveHlDb250cm9sbGVyOjpkZXN0cm95V2luZG93UHJv
eHkpOgorICAgICAgICAoV2ViQ29yZTo6V2luZG93UHJveHlDb250cm9sbGVyOjpjcmVhdGVXaW5k
b3dQcm94eSk6CisgICAgICAgIChXZWJDb3JlOjpXaW5kb3dQcm94eUNvbnRyb2xsZXI6OndpbmRv
d1Byb3hpZXMpOgorICAgICAgICAoV2ViQ29yZTo6V2luZG93UHJveHlDb250cm9sbGVyOjpjcmVh
dGVXaW5kb3dQcm94eVdpdGhJbml0aWFsaXplZFNjcmlwdCk6CisgICAgICAgICogYmluZGluZ3Mv
anMvV2luZG93UHJveHlDb250cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V2lu
ZG93UHJveHlDb250cm9sbGVyOjpyZWxlYXNlV2luZG93UHJveGllcyk6CisgICAgICAgIChXZWJD
b3JlOjpXaW5kb3dQcm94eUNvbnRyb2xsZXI6OnNldFdpbmRvd1Byb3hpZXMpOgorICAgICAgICAo
V2ViQ29yZTo6V2luZG93UHJveHlDb250cm9sbGVyOjp3aW5kb3dQcm94eSk6CisgICAgICAgIChX
ZWJDb3JlOjpXaW5kb3dQcm94eUNvbnRyb2xsZXI6OmV4aXN0aW5nV2luZG93UHJveHkgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6V2luZG93UHJveHlDb250cm9sbGVyOjpnbG9iYWxPYmplY3Qp
OgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlcjo6ZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQpOgorICAgICAg
ICAqIHBhZ2UvQWJzdHJhY3RGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBYnN0cmFjdEZy
YW1lOjpBYnN0cmFjdEZyYW1lKToKKyAgICAgICAgKiBwYWdlL0Fic3RyYWN0RnJhbWUuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFic3RyYWN0RnJhbWU6OndpbmRvd1Byb3h5Q29udHJvbGxlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpBYnN0cmFjdEZyYW1lOjp3aW5kb3dQcm94eUNvbnRyb2xsZXIgY29u
c3QpOgorCiAyMDE4LTA0LTEzICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtXZWJWUl1bT3BlblZSXSBJbXBsZW1lbnQgcmVxdWVzdFByZXNlbnQo
KS9leGl0UHJlc2VudCgpIGFuZCBnZXRMYXllcnMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiYmM3ZGMzNmYzNThm
NTVjMGY5OTkwZmVmMTkyZGNhODk4MDBlMDUwLi5lZDE0MzM3NzhlNWI3NTEyYjg0M2NiODcxZDdh
YmUzNTE1OGZhZTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE4LTA0LTEzICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU3BsaXQgV2luZG93UHJveHkg
aGFuZGxpbmcgb3V0IG9mIFNjcmlwdENvbnRyb2xsZXIgYW5kIGludG8gYSBuZXcgY2xhc3Mgb3du
ZWQgYnkgQWJzdHJhY3RGcmFtZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTg0NTkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgU3BsaXQgV2luZG93UHJveHkgaGFuZGxpbmcgb3V0IG9mIFNjcmlwdENvbnRy
b2xsZXIgYW5kIGludG8gYSBuZXcgY2xhc3Mgb3duZWQgYnkgQWJzdHJhY3RGcmFtZS4KKyAgICAg
ICAgUmVtb3RlRnJhbWVzIGRvIG5vdCBuZWVkIGEgU2NyaXB0Q29udHJvbGxlciBidXQgZG8gbmVl
ZCB0byBtYWludGFpbiBXaW5kb3dQcm94aWVzLgorICAgICAgICBUaGlzIGlzIHdvcmsgdG93YXJk
cyBmaXhpbmcgQnVnIDE4NDUxNS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6d2luZG93U2NyaXB0TlBP
YmplY3QpOgorCiAyMDE4LTA0LTEzICBYYWJpZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlz
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dTdHJlYW1lcl0gQ29udmVydCBHU3RyZWFtZXJVdGls
aXRpZXMgaW4gR1N0cmVhbWVyQ29tbW9uIGFuZCBpbmNsdWRlIHRoZSBHU3RyZWFtZXIgc21hcnQg
cG9pbnRlciB0cmFpdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBjNzBmOTY2NGU5
YTY1MDNlNWFmNGRmN2NjNzBiYzFkNjNkMzc3Njc0Li45OGNhNzhjNzBiNmFhMzljMDg0ZmQyODYx
NTk0MWUyNjIwNWM2ZGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTkgQEAKKzIwMTgtMDQtMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAg
ICAgICBTcGxpdCBXaW5kb3dQcm94eSBoYW5kbGluZyBvdXQgb2YgU2NyaXB0Q29udHJvbGxlciBh
bmQgaW50byBhIG5ldyBjbGFzcyBvd25lZCBieSBBYnN0cmFjdEZyYW1lCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ1OTEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTcGxpdCBXaW5kb3dQcm94eSBoYW5k
bGluZyBvdXQgb2YgU2NyaXB0Q29udHJvbGxlciBhbmQgaW50byBhIG5ldyBjbGFzcyBvd25lZCBi
eSBBYnN0cmFjdEZyYW1lLgorICAgICAgICBSZW1vdGVGcmFtZXMgZG8gbm90IG5lZWQgYSBTY3Jp
cHRDb250cm9sbGVyIGJ1dCBkbyBuZWVkIHRvIG1haW50YWluIFdpbmRvd1Byb3hpZXMuCisgICAg
ICAgIFRoaXMgaXMgd29yayB0b3dhcmRzIGZpeGluZyBCdWcgMTg0NTE1LgorCisgICAgICAgICog
UGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tOgorICAgICAgICAo
V2ViS2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmdldFdpbmRvd05QT2JqZWN0KToK
KyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBfYXR0
YWNoU2NyaXB0RGVidWdnZXJdKToKKwogMjAxOC0wNC0wNSAgWXVzdWtlIFN1enVraSAgPHV0YXRh
bmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBbV1RGXSBSZW1vdmUgU3RhdGljTG9jawpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvSXRlcmF0b3JSYW5nZS5oIGIvU291cmNlL1dURi93dGYv
SXRlcmF0b3JSYW5nZS5oCmluZGV4IDdlMTFkNTg3OGZmNWE3NzA1YWE1YmY4ZDI2ZDIwNWQ4Mzc4
MGNmMzIuLjdjZjA1NjlmNWI1OWU4NDJjMzFkMDdlZDkzOGQ1N2IxNmZmYzZjZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL0l0ZXJhdG9yUmFuZ2UuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9J
dGVyYXRvclJhbmdlLmgKQEAgLTYyLDYgKzYyLDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIGF1
dG8gc2l6ZSgpIGNvbnN0IC0+IGRlY2x0eXBlKHN0ZDo6ZGVjbHZhbDxDb250YWluZXI+KCkuc2l6
ZSgpKSB7IHJldHVybiBtX2NvbnRhaW5lci5zaXplKCk7IH0KKyAgICBib29sIGlzRW1wdHkoKSBj
b25zdCB7IHJldHVybiBtX2NvbnRhaW5lci5pc0VtcHR5KCk7IH0KICAgICBJdGVyYXRvciBiZWdp
bigpIGNvbnN0IHsgcmV0dXJuIG1fYmVnaW47IH0KICAgICBJdGVyYXRvciBlbmQoKSBjb25zdCB7
IHJldHVybiBtX2VuZDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGE0NjE3MTllMmRkZjRiNTY4OThh
N2I2YzQ3YmU0MTc2NWE2NTI1ZTYuLmE1N2JiMmQyZjc1YjI5MTlkZGM5ZDljZmNiYjMxMmVlNzYw
Mzk1OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC00NjgsNiArNDY4LDcgQEAgYmluZGluZ3MvanMvU3Ry
dWN0dXJlZENsb25lLmNwcAogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAog
YmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHAKIGJpbmRpbmdzL2pzL1dlYkNvcmVU
eXBlZEFycmF5Q29udHJvbGxlci5jcHAKK2JpbmRpbmdzL2pzL1dpbmRvd1Byb3h5Q29udHJvbGxl
ci5jcHAKIGJpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCiAKIGJyaWRnZS9J
ZGVudGlmaWVyUmVwLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IGE2YTEzODA2MGY2MmM5ZTFjMTkwZmNlYjJhZTVmOTZhMzA2
OTY3NzQuLmNmNjA1NjcxMmRmZGE1YjNlODg1NzZmMTYwM2IwODgwYjg3YzgxOWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEx
OTEsNiArMTE5MSw3IEBACiAJCTQ2MEJCNjE2MUQwQTFCRjAwMDIyMTgxMiAvKiBCYXNlNjRVdGls
aXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
MEJCNjE0MUQwQTFCRUMwMDIyMTgxMiAvKiBCYXNlNjRVdGlsaXRpZXMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjBDQkYzNjFENEJDRDBFMDA5
MkU4OEUgLyogSlNET01XaW5kb3dQcm9wZXJ0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjBDQkYzNDFENEJDQ0ZFMDA5MkU4OEUgLyogSlNET01X
aW5kb3dQcm9wZXJ0aWVzLmggKi87IH07CiAJCTQ2MjE4QUNCMUY3MkQ2NEUwMDU3NEZCRSAvKiBE
T01IaWdoUmVzVGltZVN0YW1wLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NkUwMTZBRDFGNzJENjFFMDAyODJCMkMgLyogRE9NSGlnaFJlc1RpbWVTdGFt
cC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2
MzUyMUFEMjA4MTA5MkEwMEMyODkyMiAvKiBXaW5kb3dQcm94eUNvbnRyb2xsZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MzUyMUFBMjA4MTA5MEIw
MEMyODkyMiAvKiBXaW5kb3dQcm94eUNvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjNFQjYyMzFCODc4OUUwMDA5NkVENTEgLyog
VGFnQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDYzRUI2MjExQjg3ODlDQjAwOTZFRDUxIC8qIFRhZ0NvbGxlY3Rpb24uaCAqLzsgfTsK
IAkJNDY1MzA3RDAxREI2RUU0ODAwRTQxMzdDIC8qIEpTVUlFdmVudEluaXQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzRTA0NUVGMURBQTEwNEYwMEIw
RDhCOSAvKiBKU1VJRXZlbnRJbml0LmggKi87IH07CiAJCTQ2NjU4REM5MUZBMjRCODcwMEY3REQ1
NCAvKiBTV0NvbnRleHRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NjcyNDEzQjFGQTI0QjE0MDA4OEJENkQgLyogU1dDb250ZXh0TWFuYWdl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC03
NDI1LDYgKzc0MjYsOCBAQAogCQk0NjBDQkYzNDFENEJDQ0ZFMDA5MkU4OEUgLyogSlNET01XaW5k
b3dQcm9wZXJ0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NV2lu
ZG93UHJvcGVydGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjBEMTk0NDFG
Q0UyMUREMDBDM0RCODUgLyogSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGVDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjM0NTkyQjFB
QzIyNzEwMDBFQ0I3MUMgLyogUG93ZXJPYnNlcnZlck1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBQb3dlck9ic2VydmVyTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNDYzNTIxQUEyMDgxMDkwQjAwQzI4OTIyIC8qIFdpbmRvd1Byb3h5Q29u
dHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXaW5kb3dQcm94eUNv
bnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDYzNTIxQUMyMDgxMDkw
RTAwQzI4OTIyIC8qIFdpbmRvd1Byb3h5Q29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXaW5kb3dQcm94eUNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0NjNFQjYyMDFCODc4OUNCMDA5NkVENTEgLyogVGFnQ29sbGVj
dGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUYWdDb2xsZWN0
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYzRUI2MjExQjg3ODlDQjAw
OTZFRDUxIC8qIFRhZ0NvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVGFnQ29sbGVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjVBOEU3
ODFDOEEyNENFMDBFN0QzRTQgLyogUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzQ29jb2EubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSdW50aW1lQXBwbGljYXRpb25D
aGVja3NDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIzNzA4LDYgKzIz
NzExLDggQEAKIAkJCQlCQzUzRDkxMDExNDMxMENDMDAwRDgxN0UgLyogV2ViQ29yZUpTQ2xpZW50
RGF0YS5oICovLAogCQkJCTBGMDk5RDA2MTdCOTY4QTEwMEZGODRCOSAvKiBXZWJDb3JlVHlwZWRB
cnJheUNvbnRyb2xsZXIuY3BwICovLAogCQkJCTBGMDk5RDA3MTdCOTY4QTEwMEZGODRCOSAvKiBX
ZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIuaCAqLywKKwkJCQk0NjM1MjFBQzIwODEwOTBFMDBD
Mjg5MjIgLyogV2luZG93UHJveHlDb250cm9sbGVyLmNwcCAqLywKKwkJCQk0NjM1MjFBQTIwODEw
OTBCMDBDMjg5MjIgLyogV2luZG93UHJveHlDb250cm9sbGVyLmggKi8sCiAJCQkJRTFBNjQzRkMw
RUMwOTdBMDAwNzc5NjY4IC8qIFdvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwICovLAogCQkJCUUx
QTY0M0YxMEVDMDk3MjUwMDc3OTY2OCAvKiBXb3JrZXJTY3JpcHRDb250cm9sbGVyLmggKi8sCiAJ
CQkpOwpAQCAtMzA2MDgsNiArMzA2MTMsNyBAQAogCQkJCTBGMTVFRDVDMUI3RUM3QzUwMEVEREZF
QiAvKiBXaWxsQ2hhbmdlRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM4MjQzRTkwRDBDRkQ3
NTAwNDYwQzhGIC8qIFdpbmRvd0ZlYXR1cmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3RTk5QUY1
MzBCMTM4NDY0NjhGQjAxQTUgLyogV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk0NjM1MjFBRDIwODEwOTJBMDBDMjg5MjIgLyogV2luZG93UHJveHlDb250
cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUUxQkYwMDExNUZGNkZCMDA2RjUyQ0EgLyog
V2luZG93c0tleWJvYXJkQ29kZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUwMUJBQUE5MTM5NTBF
MkMwMEY3QUNFQiAvKiBXaW5kUnVsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE0ODMyQkUxODdG
NjRDQzAwREE2M0E2IC8qIFdLQ29udGVudE9ic2VydmF0aW9uLmggaW4gSGVhZGVycyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQuY3BwCmluZGV4IDFl
MWYxN2I4N2I4OWYzM2ZhNmI0ODM3NmEyNGVjYzVlZjJiMjAyMTQuLmUwZmM3MzY2OWM3Y2RkYWUw
ODM1OTVjNTVjZWVlYWJiOTM1YWU4MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvRE9NV3JhcHBlcldvcmxkLmNwcApAQCAtMjMsOCArMjMsOCBAQAogCiAjaW5jbHVkZSAiQ29t
bW9uVk0uaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgotI2luY2x1ZGUgIlNjcmlwdENvbnRy
b2xsZXIuaCIKICNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCisjaW5jbHVkZSAiV2lu
ZG93UHJveHlDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIAogCkBA
IC00Nyw4ICs0Nyw4IEBAIERPTVdyYXBwZXJXb3JsZDo6fkRPTVdyYXBwZXJXb3JsZCgpCiAgICAg
c3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPihjbGllbnREYXRhKS0+Zm9yZ2V0V29ybGQoKnRo
aXMpOwogCiAgICAgLy8gVGhlc2UgaXRlbXMgYXJlIGNyZWF0ZWQgbGF6aWx5LgotICAgIHdoaWxl
ICghbV9zY3JpcHRDb250cm9sbGVyc1dpdGhXaW5kb3dQcm94aWVzLmlzRW1wdHkoKSkKLSAgICAg
ICAgKCptX3NjcmlwdENvbnRyb2xsZXJzV2l0aFdpbmRvd1Byb3hpZXMuYmVnaW4oKSktPmRlc3Ry
b3lXaW5kb3dQcm94eSgqdGhpcyk7CisgICAgd2hpbGUgKCFtX2NvbnRyb2xsZXJzV2l0aFdpbmRv
d1Byb3hpZXMuaXNFbXB0eSgpKQorICAgICAgICAoKm1fY29udHJvbGxlcnNXaXRoV2luZG93UHJv
eGllcy5iZWdpbigpKS0+ZGVzdHJveVdpbmRvd1Byb3h5KCp0aGlzKTsKIH0KIAogdm9pZCBET01X
cmFwcGVyV29ybGQ6OmNsZWFyV3JhcHBlcnMoKQpAQCAtNTYsOCArNTYsOCBAQCB2b2lkIERPTVdy
YXBwZXJXb3JsZDo6Y2xlYXJXcmFwcGVycygpCiAgICAgbV93cmFwcGVycy5jbGVhcigpOwogCiAg
ICAgLy8gVGhlc2UgaXRlbXMgYXJlIGNyZWF0ZWQgbGF6aWx5LgotICAgIHdoaWxlICghbV9zY3Jp
cHRDb250cm9sbGVyc1dpdGhXaW5kb3dQcm94aWVzLmlzRW1wdHkoKSkKLSAgICAgICAgKCptX3Nj
cmlwdENvbnRyb2xsZXJzV2l0aFdpbmRvd1Byb3hpZXMuYmVnaW4oKSktPmRlc3Ryb3lXaW5kb3dQ
cm94eSgqdGhpcyk7CisgICAgd2hpbGUgKCFtX2NvbnRyb2xsZXJzV2l0aFdpbmRvd1Byb3hpZXMu
aXNFbXB0eSgpKQorICAgICAgICAoKm1fY29udHJvbGxlcnNXaXRoV2luZG93UHJveGllcy5iZWdp
bigpKS0+ZGVzdHJveVdpbmRvd1Byb3h5KCp0aGlzKTsKIH0KIAogRE9NV3JhcHBlcldvcmxkJiBu
b3JtYWxXb3JsZChKU0M6OlZNJiB2bSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9N
V3JhcHBlcldvcmxkLmgKaW5kZXggZTBhY2I4MjZhMTY1MDg2MmI4MDMxZTM1ZTc4YWVkMzBkYmZk
ODM4MS4uZmJlYzEwMTliMDIyN2FkZjk3MWZmMzBkMTk5M2ZmMmU5MjhjNzI3NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NV3JhcHBlcldvcmxkLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NV3JhcHBlcldvcmxkLmgKQEAgLTI2LDcgKzI2LDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTY3JpcHRDb250cm9sbGVyOworY2xh
c3MgV2luZG93UHJveHlDb250cm9sbGVyOwogCiB0eXBlZGVmIEhhc2hNYXA8dm9pZCosIEpTQzo6
V2VhazxKU0M6OkpTT2JqZWN0Pj4gRE9NT2JqZWN0V3JhcHBlck1hcDsKIApAQCAtNDEsOCArNDEs
OCBAQCBwdWJsaWM6CiAgICAgLy8gRnJlZSBhcyBtdWNoIG1lbW9yeSBoZWxkIG9udG8gYnkgdGhp
cyB3b3JsZCBhcyBwb3NzaWJsZS4KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyV3JhcHBl
cnMoKTsKIAotICAgIHZvaWQgZGlkQ3JlYXRlV2luZG93UHJveHkoU2NyaXB0Q29udHJvbGxlciog
c2NyaXB0Q29udHJvbGxlcikgeyBtX3NjcmlwdENvbnRyb2xsZXJzV2l0aFdpbmRvd1Byb3hpZXMu
YWRkKHNjcmlwdENvbnRyb2xsZXIpOyB9Ci0gICAgdm9pZCBkaWREZXN0cm95V2luZG93UHJveHko
U2NyaXB0Q29udHJvbGxlciogc2NyaXB0Q29udHJvbGxlcikgeyBtX3NjcmlwdENvbnRyb2xsZXJz
V2l0aFdpbmRvd1Byb3hpZXMucmVtb3ZlKHNjcmlwdENvbnRyb2xsZXIpOyB9CisgICAgdm9pZCBk
aWRDcmVhdGVXaW5kb3dQcm94eShXaW5kb3dQcm94eUNvbnRyb2xsZXIqIGNvbnRyb2xsZXIpIHsg
bV9jb250cm9sbGVyc1dpdGhXaW5kb3dQcm94aWVzLmFkZChjb250cm9sbGVyKTsgfQorICAgIHZv
aWQgZGlkRGVzdHJveVdpbmRvd1Byb3h5KFdpbmRvd1Byb3h5Q29udHJvbGxlciogY29udHJvbGxl
cikgeyBtX2NvbnRyb2xsZXJzV2l0aFdpbmRvd1Byb3hpZXMucmVtb3ZlKGNvbnRyb2xsZXIpOyB9
CiAKICAgICB2b2lkIHNldFNoYWRvd1Jvb3RJc0Fsd2F5c09wZW4oKSB7IG1fc2hhZG93Um9vdElz
QWx3YXlzT3BlbiA9IHRydWU7IH0KICAgICBib29sIHNoYWRvd1Jvb3RJc0Fsd2F5c09wZW4oKSBj
b25zdCB7IHJldHVybiBtX3NoYWRvd1Jvb3RJc0Fsd2F5c09wZW47IH0KQEAgLTYxLDcgKzYxLDcg
QEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIEpTQzo6Vk0mIG1fdm07Ci0gICAgSGFzaFNl
dDxTY3JpcHRDb250cm9sbGVyKj4gbV9zY3JpcHRDb250cm9sbGVyc1dpdGhXaW5kb3dQcm94aWVz
OworICAgIEhhc2hTZXQ8V2luZG93UHJveHlDb250cm9sbGVyKj4gbV9jb250cm9sbGVyc1dpdGhX
aW5kb3dQcm94aWVzOwogICAgIERPTU9iamVjdFdyYXBwZXJNYXAgbV93cmFwcGVyczsKIAogICAg
IGJvb2wgbV9pc05vcm1hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQmluZGluZ3NBbGxJbk9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Jp
bmRpbmdzQWxsSW5PbmUuY3BwCmluZGV4IDQ4YzUzZTJjZDJlZDJiNGZjMzNiNDUxYWRjY2YyMzZk
MmExMTY5ZGYuLmNjNWNlNjMxOTBiMTNiNzFmMjMzNWE4NDIzMjNhYTE4ZjA1NTA0NmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcApA
QCAtMTA5LDQgKzEwOSw1IEBACiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuY3BwIgogI2luY2x1ZGUg
IlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAiCiAjaW5jbHVkZSAiV2ViQ29yZVR5cGVkQXJyYXlD
b250cm9sbGVyLmNwcCIKKyNpbmNsdWRlICJXaW5kb3dQcm94eUNvbnRyb2xsZXIuY3BwIgogI2lu
Y2x1ZGUgIldvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKaW5kZXggMjJiYzQzNTBiNzVlZjIxZDI0OGJm
ZGNhOGRhNzIzYTkxZGVmYjRkNi4uNmZhNmU3ZDVhNGUxYWIzNmQ0MGYzNzUwYzQyYjRkMGQ0YzY1
MjUxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dC
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2Uu
Y3BwCkBAIC0yNjcsNyArMjY3LDcgQEAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogc3RhdGUsIERP
TVdpbmRvdyYgZG9tV2luZG93KQogCiBKU0RPTVdpbmRvdyogdG9KU0RPTVdpbmRvdyhGcmFtZSYg
ZnJhbWUsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCiB7Ci0gICAgcmV0dXJuIGZyYW1lLnNjcmlw
dCgpLndpbmRvd1Byb3h5KHdvcmxkKS0+d2luZG93KCk7CisgICAgcmV0dXJuIGZyYW1lLnNjcmlw
dCgpLmdsb2JhbE9iamVjdCh3b3JsZCk7CiB9CiAKIEpTRE9NV2luZG93KiB0b0pTRE9NV2luZG93
KEpTQzo6Vk0mIHZtLCBKU1ZhbHVlIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd1Byb3h5LmNwcAppbmRleCA0ODc1MTNhYTM1MTgzNjYwNDEzZDNhNjdl
YTg0ZGYyNDljZWExYTZlLi5lZWUwMmYxYWQ0NTFlOTUwOTkzYWQ2MDk2MWM0OGFhNzMxZmJmNzBj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1Byb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1Byb3h5LmNw
cApAQCAtMTE4LDEyICsxMTgsMTIgQEAgRE9NV2luZG93KiBKU0RPTVdpbmRvd1Byb3h5Ojp0b1dy
YXBwZWQoVk0mIHZtLCBKU09iamVjdCogdmFsdWUpCiAKIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUq
IHN0YXRlLCBGcmFtZSYgZnJhbWUpCiB7Ci0gICAgcmV0dXJuIGZyYW1lLnNjcmlwdCgpLndpbmRv
d1Byb3h5KGN1cnJlbnRXb3JsZCgqc3RhdGUpKTsKKyAgICByZXR1cm4gJmZyYW1lLndpbmRvd1By
b3h5Q29udHJvbGxlcigpLndpbmRvd1Byb3h5KGN1cnJlbnRXb3JsZCgqc3RhdGUpKTsKIH0KIAog
SlNET01XaW5kb3dQcm94eSogdG9KU0RPTVdpbmRvd1Byb3h5KEZyYW1lJiBmcmFtZSwgRE9NV3Jh
cHBlcldvcmxkJiB3b3JsZCkKIHsKLSAgICByZXR1cm4gZnJhbWUuc2NyaXB0KCkud2luZG93UHJv
eHkod29ybGQpOworICAgIHJldHVybiAmZnJhbWUud2luZG93UHJveHlDb250cm9sbGVyKCkud2lu
ZG93UHJveHkod29ybGQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNwcAppbmRl
eCAxM2U3OGQ0MzdlMTE3N2ZjOTlmNDBhYTVmMGU5ZjE5MjJjNjRlY2I5Li40NWQxZTM4NDZiNGZm
NGUzZDZlN2M5MjVmNjE0YWQ2YTA5OWJjOGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHAKQEAgLTUxLDE1ICs1MSwxMyBA
QCBTY3JpcHRDYWNoZWRGcmFtZURhdGE6OlNjcmlwdENhY2hlZEZyYW1lRGF0YShGcmFtZSYgZnJh
bWUpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soY29tbW9uVk0oKSk7CiAKLSAgICBhdXRvJiBz
Y3JpcHRDb250cm9sbGVyID0gZnJhbWUuc2NyaXB0KCk7Ci0KLSAgICBmb3IgKGF1dG8gd2luZG93
UHJveHkgOiBzY3JpcHRDb250cm9sbGVyLndpbmRvd1Byb3hpZXMoKSkgeworICAgIGZvciAoYXV0
byB3aW5kb3dQcm94eSA6IGZyYW1lLndpbmRvd1Byb3h5Q29udHJvbGxlcigpLndpbmRvd1Byb3hp
ZXNBc1ZlY3RvcigpKSB7CiAgICAgICAgIGF1dG8qIHdpbmRvdyA9IHdpbmRvd1Byb3h5LT53aW5k
b3coKTsKICAgICAgICAgbV93aW5kb3dzLmFkZCgmd2luZG93UHJveHktPndvcmxkKCksIFN0cm9u
ZzxKU0RPTVdpbmRvdz4od2luZG93LT52bSgpLCB3aW5kb3cpKTsKICAgICAgICAgd2luZG93LT5z
ZXRDb25zb2xlQ2xpZW50KG51bGxwdHIpOwogICAgIH0KIAotICAgIHNjcmlwdENvbnRyb2xsZXIu
YXR0YWNoRGVidWdnZXIobnVsbHB0cik7CisgICAgZnJhbWUuc2NyaXB0KCkuYXR0YWNoRGVidWdn
ZXIobnVsbHB0cik7CiB9CiAKIFNjcmlwdENhY2hlZEZyYW1lRGF0YTo6flNjcmlwdENhY2hlZEZy
YW1lRGF0YSgpCkBAIC03NCw3ICs3Miw3IEBAIHZvaWQgU2NyaXB0Q2FjaGVkRnJhbWVEYXRhOjpy
ZXN0b3JlKEZyYW1lJiBmcmFtZSkKICAgICBQYWdlKiBwYWdlID0gZnJhbWUucGFnZSgpOwogICAg
IGF1dG8mIHNjcmlwdENvbnRyb2xsZXIgPSBmcmFtZS5zY3JpcHQoKTsKIAotICAgIGZvciAoYXV0
byB3aW5kb3dQcm94eSA6IHNjcmlwdENvbnRyb2xsZXIud2luZG93UHJveGllcygpKSB7CisgICAg
Zm9yIChhdXRvIHdpbmRvd1Byb3h5IDogZnJhbWUud2luZG93UHJveHlDb250cm9sbGVyKCkud2lu
ZG93UHJveGllc0FzVmVjdG9yKCkpIHsKICAgICAgICAgYXV0byogd29ybGQgPSAmd2luZG93UHJv
eHktPndvcmxkKCk7CiAKICAgICAgICAgaWYgKGF1dG8qIHdpbmRvdyA9IG1fd2luZG93cy5nZXQo
d29ybGQpLmdldCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250
cm9sbGVyLmNwcAppbmRleCBjYmQ5ZTcwMmVjY2ZkNjU1MmYzOWZmN2Y4OWZiMzgzNmE5M2EzOWIz
Li5lOTJhY2FhZmM5YjllZmM2YzQ5Y2I2NmI4NDRhNzZhM2NkYzc0ZjNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMTE3LDM4ICsx
MTcsMTcgQEAgU2NyaXB0Q29udHJvbGxlcjo6flNjcmlwdENvbnRyb2xsZXIoKQogICAgICAgICBt
X2NhY2hlYWJsZUJpbmRpbmdSb290T2JqZWN0ID0gbnVsbHB0cjsKICAgICB9CiAKLSAgICAvLyBJ
dCdzIGxpa2VseSB0aGF0IGRlc3Ryb3lpbmcgbV93aW5kb3dQcm94aWVzIHdpbGwgY3JlYXRlIGEg
bG90IG9mIGdhcmJhZ2UuCi0gICAgaWYgKCFtX3dpbmRvd1Byb3hpZXMuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgIHdoaWxlICghbV93aW5kb3dQcm94aWVzLmlzRW1wdHkoKSkgewotICAgICAgICAgICAg
YXV0byBpdGVyID0gbV93aW5kb3dQcm94aWVzLmJlZ2luKCk7Ci0gICAgICAgICAgICBpdGVyLT52
YWx1ZS0+d2luZG93KCktPnNldENvbnNvbGVDbGllbnQobnVsbHB0cik7Ci0gICAgICAgICAgICBk
ZXN0cm95V2luZG93UHJveHkoKml0ZXItPmtleSk7CisgICAgLy8gSXQncyBsaWtlbHkgdGhhdCBk
ZXN0cm95aW5nIHdpbmRvd1Byb3hpZXMgd2lsbCBjcmVhdGUgYSBsb3Qgb2YgZ2FyYmFnZS4KKyAg
ICBpZiAoIXdpbmRvd1Byb3h5Q29udHJvbGxlcigpLndpbmRvd1Byb3hpZXMoKS5pc0VtcHR5KCkp
IHsKKyAgICAgICAgd2hpbGUgKCF3aW5kb3dQcm94eUNvbnRyb2xsZXIoKS53aW5kb3dQcm94aWVz
KCkuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBhdXRvIHdpbmRvd1Byb3h5ID0gKndpbmRvd1By
b3h5Q29udHJvbGxlcigpLndpbmRvd1Byb3hpZXMoKS5iZWdpbigpOworICAgICAgICAgICAgd2lu
ZG93UHJveHkuZ2V0KCktPndpbmRvdygpLT5zZXRDb25zb2xlQ2xpZW50KG51bGxwdHIpOworICAg
ICAgICAgICAgd2luZG93UHJveHlDb250cm9sbGVyKCkuZGVzdHJveVdpbmRvd1Byb3h5KHdpbmRv
d1Byb3h5LmdldCgpLT53b3JsZCgpKTsKICAgICAgICAgfQogICAgICAgICBjb2xsZWN0R2FyYmFn
ZUFmdGVyV2luZG93UHJveHlEZXN0cnVjdGlvbigpOwogICAgIH0KIH0KIAotdm9pZCBTY3JpcHRD
b250cm9sbGVyOjpkZXN0cm95V2luZG93UHJveHkoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKLXsK
LSAgICBBU1NFUlQobV93aW5kb3dQcm94aWVzLmNvbnRhaW5zKCZ3b3JsZCkpOwotICAgIG1fd2lu
ZG93UHJveGllcy5yZW1vdmUoJndvcmxkKTsKLSAgICB3b3JsZC5kaWREZXN0cm95V2luZG93UHJv
eHkodGhpcyk7Ci19Ci0KLUpTRE9NV2luZG93UHJveHkmIFNjcmlwdENvbnRyb2xsZXI6OmNyZWF0
ZVdpbmRvd1Byb3h5KERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCi17Ci0gICAgQVNTRVJUKCFtX3dp
bmRvd1Byb3hpZXMuY29udGFpbnMoJndvcmxkKSk7Ci0gICAgQVNTRVJUKG1fZnJhbWUuZG9jdW1l
bnQoKS0+ZG9tV2luZG93KCkpOwotCi0gICAgVk0mIHZtID0gd29ybGQudm0oKTsKLQotICAgIFN0
cm9uZzxKU0RPTVdpbmRvd1Byb3h5PiB3aW5kb3dQcm94eSh2bSwgJkpTRE9NV2luZG93UHJveHk6
OmNyZWF0ZSh2bSwgKm1fZnJhbWUuZG9jdW1lbnQoKS0+ZG9tV2luZG93KCksIHdvcmxkKSk7Ci0g
ICAgU3Ryb25nPEpTRE9NV2luZG93UHJveHk+IHdpbmRvd1Byb3h5Mih3aW5kb3dQcm94eSk7Ci0g
ICAgbV93aW5kb3dQcm94aWVzLmFkZCgmd29ybGQsIHdpbmRvd1Byb3h5KTsKLSAgICB3b3JsZC5k
aWRDcmVhdGVXaW5kb3dQcm94eSh0aGlzKTsKLSAgICByZXR1cm4gKndpbmRvd1Byb3h5LmdldCgp
OwotfQotCiBKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlSW5Xb3JsZChjb25zdCBT
Y3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBET01XcmFwcGVyV29ybGQmIHdvcmxkLCBFeGNl
cHRpb25EZXRhaWxzKiBleGNlcHRpb25EZXRhaWxzKQogewogICAgIEpTTG9ja0hvbGRlciBsb2Nr
KHdvcmxkLnZtKCkpOwpAQCAtMTYzLDcgKzE0Miw3IEBAIEpTVmFsdWUgU2NyaXB0Q29udHJvbGxl
cjo6ZXZhbHVhdGVJbldvcmxkKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIERP
CiAgICAgLy8gYW5kIGZhbHNlIGZvciA8c2NyaXB0PmRvU29tZXRoaW5nKCk8L3NjcmlwdD4uIENo
ZWNrIGlmIGl0IGhhcyB0aGUKICAgICAvLyBleHBlY3RlZCB2YWx1ZSBpbiBhbGwgY2FzZXMuCiAg
ICAgLy8gU2VlIHNtYXJ0IHdpbmRvdy5vcGVuIHBvbGljeSBmb3Igd2hlcmUgdGhpcyBpcyB1c2Vk
LgotICAgIGF1dG8mIHByb3h5ID0gKndpbmRvd1Byb3h5KHdvcmxkKTsKKyAgICBhdXRvJiBwcm94
eSA9IHdpbmRvd1Byb3h5Q29udHJvbGxlcigpLndpbmRvd1Byb3h5KHdvcmxkKTsKICAgICBhdXRv
JiBleGVjID0gKnByb3h5LndpbmRvdygpLT5nbG9iYWxFeGVjKCk7CiAgICAgY29uc3QgU3RyaW5n
KiBzYXZlZFNvdXJjZVVSTCA9IG1fc291cmNlVVJMOwogICAgIG1fc291cmNlVVJMID0gJnNvdXJj
ZVVSTDsKQEAgLTE5Niw3ICsxNzUsNyBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmxvYWRNb2R1
bGVTY3JpcHRJbldvcmxkKExvYWRhYmxlTW9kdWxlU2NyaXB0JiBtb2R1bGVTY3JpcAogewogICAg
IEpTTG9ja0hvbGRlciBsb2NrKHdvcmxkLnZtKCkpOwogCi0gICAgYXV0byYgcHJveHkgPSAqd2lu
ZG93UHJveHkod29ybGQpOworICAgIGF1dG8mIHByb3h5ID0gd2luZG93UHJveHlDb250cm9sbGVy
KCkud2luZG93UHJveHkod29ybGQpOwogICAgIGF1dG8mIHN0YXRlID0gKnByb3h5LndpbmRvdygp
LT5nbG9iYWxFeGVjKCk7CiAKICAgICBhdXRvJiBwcm9taXNlID0gSlNNYWluVGhyZWFkRXhlY1N0
YXRlOjpsb2FkTW9kdWxlKHN0YXRlLCBtb2R1bGVOYW1lLCBKU0M6OkpTU2NyaXB0RmV0Y2hQYXJh
bWV0ZXJzOjpjcmVhdGUoc3RhdGUudm0oKSwgV1RGTW92ZSh0b3BMZXZlbEZldGNoUGFyYW1ldGVy
cykpLCBKU0M6OkpTU2NyaXB0RmV0Y2hlcjo6Y3JlYXRlKHN0YXRlLnZtKCksIHsgJm1vZHVsZVNj
cmlwdCB9KSk7CkBAIC0yMTIsNyArMTkxLDcgQEAgdm9pZCBTY3JpcHRDb250cm9sbGVyOjpsb2Fk
TW9kdWxlU2NyaXB0SW5Xb3JsZChMb2FkYWJsZU1vZHVsZVNjcmlwdCYgbW9kdWxlU2NyaXAKIHsK
ICAgICBKU0xvY2tIb2xkZXIgbG9jayh3b3JsZC52bSgpKTsKIAotICAgIGF1dG8mIHByb3h5ID0g
KndpbmRvd1Byb3h5KHdvcmxkKTsKKyAgICBhdXRvJiBwcm94eSA9IHdpbmRvd1Byb3h5Q29udHJv
bGxlcigpLndpbmRvd1Byb3h5KHdvcmxkKTsKICAgICBhdXRvJiBzdGF0ZSA9ICpwcm94eS53aW5k
b3coKS0+Z2xvYmFsRXhlYygpOwogCiAgICAgYXV0byYgcHJvbWlzZSA9IEpTTWFpblRocmVhZEV4
ZWNTdGF0ZTo6bG9hZE1vZHVsZShzdGF0ZSwgc291cmNlQ29kZS5qc1NvdXJjZUNvZGUoKSwgSlND
OjpKU1NjcmlwdEZldGNoZXI6OmNyZWF0ZShzdGF0ZS52bSgpLCB7ICZtb2R1bGVTY3JpcHQgfSkp
OwpAQCAtMjI4LDcgKzIwNyw3IEBAIEpTQzo6SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpsaW5r
QW5kRXZhbHVhdGVNb2R1bGVTY3JpcHRJbldvcmxkKExvYWRhYmxlTW9kdWxlCiB7CiAgICAgSlNM
b2NrSG9sZGVyIGxvY2sod29ybGQudm0oKSk7CiAKLSAgICBhdXRvJiBwcm94eSA9ICp3aW5kb3dQ
cm94eSh3b3JsZCk7CisgICAgYXV0byYgcHJveHkgPSB3aW5kb3dQcm94eUNvbnRyb2xsZXIoKS53
aW5kb3dQcm94eSh3b3JsZCk7CiAgICAgYXV0byYgc3RhdGUgPSAqcHJveHkud2luZG93KCktPmds
b2JhbEV4ZWMoKTsKIAogICAgIC8vIEZJWE1FOiBQcmV2ZW50aW5nIEZyYW1lIGZyb20gYmVpbmcg
ZGVzdHJveWVkIGlzIGVzc2VudGlhbGx5IHVubmVjZXNzYXJ5LgpAQCAtMjU3LDcgKzIzNiw3IEBA
IEpTQzo6SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZU1vZHVsZShjb25zdCBVUkwm
IHNvdXJjZVVSTCwgSlNNb2R1bGVSZWNvCiAKICAgICBjb25zdCBhdXRvJiBqc1NvdXJjZUNvZGUg
PSBtb2R1bGVSZWNvcmQuc291cmNlQ29kZSgpOwogCi0gICAgYXV0byYgcHJveHkgPSAqd2luZG93
UHJveHkod29ybGQpOworICAgIGF1dG8mIHByb3h5ID0gd2luZG93UHJveHlDb250cm9sbGVyKCku
d2luZG93UHJveHkod29ybGQpOwogICAgIGF1dG8mIHN0YXRlID0gKnByb3h5LndpbmRvdygpLT5n
bG9iYWxFeGVjKCk7CiAgICAgU2V0Rm9yU2NvcGU8Y29uc3QgU3RyaW5nKj4gc291cmNlVVJMU2Nv
cGUobV9zb3VyY2VVUkwsICZzb3VyY2VVUkwuc3RyaW5nKCkpOwogCkBAIC0yODEsMTEgKzI2MCw2
IEBAIFJlZjxET01XcmFwcGVyV29ybGQ+IFNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVdvcmxkKCkK
ICAgICByZXR1cm4gRE9NV3JhcHBlcldvcmxkOjpjcmVhdGUoY29tbW9uVk0oKSk7CiB9CiAKLVZl
Y3RvcjxKU0M6OlN0cm9uZzxKU0RPTVdpbmRvd1Byb3h5Pj4gU2NyaXB0Q29udHJvbGxlcjo6d2lu
ZG93UHJveGllcygpCi17Ci0gICAgcmV0dXJuIGNvcHlUb1ZlY3RvcihtX3dpbmRvd1Byb3hpZXMu
dmFsdWVzKCkpOwotfQotCiB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmdldEFsbFdvcmxkcyhWZWN0
b3I8UmVmPERPTVdyYXBwZXJXb3JsZD4+JiB3b3JsZHMpCiB7CiAgICAgc3RhdGljX2Nhc3Q8SlNW
TUNsaWVudERhdGEqPihjb21tb25WTSgpLmNsaWVudERhdGEpLT5nZXRBbGxXb3JsZHMod29ybGRz
KTsKQEAgLTI5MywxMyArMjY3LDEzIEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6Z2V0QWxsV29y
bGRzKFZlY3RvcjxSZWY8RE9NV3JhcHBlcldvcmxkPj4mIHdvcmxkcykKIAogdm9pZCBTY3JpcHRD
b250cm9sbGVyOjpjbGVhcldpbmRvd1Byb3hpZXNOb3RNYXRjaGluZ0RPTVdpbmRvdyhET01XaW5k
b3cqIG5ld0RPTVdpbmRvdywgYm9vbCBnb2luZ0ludG9QYWdlQ2FjaGUpCiB7Ci0gICAgaWYgKG1f
d2luZG93UHJveGllcy5pc0VtcHR5KCkpCisgICAgaWYgKHdpbmRvd1Byb3h5Q29udHJvbGxlcigp
LndpbmRvd1Byb3hpZXMoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEpTTG9j
a0hvbGRlciBsb2NrKGNvbW1vblZNKCkpOwogCi0gICAgZm9yIChhdXRvJiB3aW5kb3dQcm94eSA6
IHdpbmRvd1Byb3hpZXMoKSkgewotICAgICAgICBpZiAoJndpbmRvd1Byb3h5LT53aW5kb3coKS0+
d3JhcHBlZCgpID09IG5ld0RPTVdpbmRvdykKKyAgICBmb3IgKGF1dG8mIHdpbmRvd1Byb3h5IDog
d2luZG93UHJveHlDb250cm9sbGVyKCkud2luZG93UHJveGllc0FzVmVjdG9yKCkpIHsKKyAgICAg
ICAgaWYgKCZ3aW5kb3dQcm94eS0+d3JhcHBlZCgpID09IG5ld0RPTVdpbmRvdykKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCiAgICAgICAgIC8vIENsZWFyIHRoZSBkZWJ1Z2dlciBhbmQgY29uc29s
ZSBmcm9tIHRoZSBjdXJyZW50IHdpbmRvdyBiZWZvcmUgc2V0dGluZyB0aGUgbmV3IHdpbmRvdy4K
QEAgLTMxOCwxMyArMjkyLDEzIEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6c2V0RE9NV2luZG93
Rm9yV2luZG93UHJveHkoRE9NV2luZG93KiBuZXdET01XaW5kb3cpCiB7CiAgICAgQVNTRVJUKG5l
d0RPTVdpbmRvdyk7CiAKLSAgICBpZiAobV93aW5kb3dQcm94aWVzLmlzRW1wdHkoKSkKKyAgICBp
ZiAod2luZG93UHJveHlDb250cm9sbGVyKCkud2luZG93UHJveGllcygpLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuOwogICAgIAogICAgIEpTTG9ja0hvbGRlciBsb2NrKGNvbW1vblZNKCkpOwog
ICAgIAotICAgIGZvciAoYXV0byYgd2luZG93UHJveHkgOiB3aW5kb3dQcm94aWVzKCkpIHsKLSAg
ICAgICAgaWYgKCZ3aW5kb3dQcm94eS0+d2luZG93KCktPndyYXBwZWQoKSA9PSBuZXdET01XaW5k
b3cpCisgICAgZm9yIChhdXRvJiB3aW5kb3dQcm94eSA6IHdpbmRvd1Byb3h5Q29udHJvbGxlcigp
LndpbmRvd1Byb3hpZXNBc1ZlY3RvcigpKSB7CisgICAgICAgIGlmICgmd2luZG93UHJveHktPndy
YXBwZWQoKSA9PSBuZXdET01XaW5kb3cpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
CiAgICAgICAgIHdpbmRvd1Byb3h5LT5zZXRXaW5kb3coKm5ld0RPTVdpbmRvdyk7CkBAIC0zNDIs
MTMgKzMxNiw5IEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6c2V0RE9NV2luZG93Rm9yV2luZG93
UHJveHkoRE9NV2luZG93KiBuZXdET01XaW5kb3cpCiAgICAgfQogfQogCi1KU0RPTVdpbmRvd1By
b3h5KiBTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0KERPTVdyYXBwZXJXb3JsZCYgd29ybGQp
Cit2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHRGb3JXaW5kb3dQcm94eShKU0RPTVdp
bmRvd1Byb3h5JiB3aW5kb3dQcm94eSkKIHsKLSAgICBBU1NFUlQoIW1fd2luZG93UHJveGllcy5j
b250YWlucygmd29ybGQpKTsKLQotICAgIEpTTG9ja0hvbGRlciBsb2NrKHdvcmxkLnZtKCkpOwot
Ci0gICAgYXV0byYgd2luZG93UHJveHkgPSBjcmVhdGVXaW5kb3dQcm94eSh3b3JsZCk7CisgICAg
YXV0byYgd29ybGQgPSB3aW5kb3dQcm94eS53b3JsZCgpOwogCiAgICAgd2luZG93UHJveHkud2lu
ZG93KCktPnVwZGF0ZURvY3VtZW50KCk7CiAKQEAgLTM2Miw4ICszMzIsNiBAQCBKU0RPTVdpbmRv
d1Byb3h5KiBTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0KERPTVdyYXBwZXJXb3JsZCYgd29y
bGQpCiAgICAgfQogCiAgICAgbV9mcmFtZS5sb2FkZXIoKS5kaXNwYXRjaERpZENsZWFyV2luZG93
T2JqZWN0SW5Xb3JsZCh3b3JsZCk7Ci0KLSAgICByZXR1cm4gJndpbmRvd1Byb3h5OwogfQogCiBz
dGF0aWMgSWRlbnRpZmllciBqc1ZhbHVlVG9Nb2R1bGVLZXkoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIHZhbHVlKQpAQCAtMzc2LDcgKzM0NCw3IEBAIHN0YXRpYyBJZGVudGlmaWVyIGpzVmFsdWVU
b01vZHVsZUtleShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiAKIHZvaWQgU2NyaXB0
Q29udHJvbGxlcjo6c2V0dXBNb2R1bGVTY3JpcHRIYW5kbGVycyhMb2FkYWJsZU1vZHVsZVNjcmlw
dCYgbW9kdWxlU2NyaXB0UmVmLCBKU0ludGVybmFsUHJvbWlzZSYgcHJvbWlzZSwgRE9NV3JhcHBl
cldvcmxkJiB3b3JsZCkKIHsKLSAgICBhdXRvJiBwcm94eSA9ICp3aW5kb3dQcm94eSh3b3JsZCk7
CisgICAgYXV0byYgcHJveHkgPSB3aW5kb3dQcm94eUNvbnRyb2xsZXIoKS53aW5kb3dQcm94eSh3
b3JsZCk7CiAgICAgYXV0byYgc3RhdGUgPSAqcHJveHkud2luZG93KCktPmdsb2JhbEV4ZWMoKTsK
IAogICAgIC8vIEl0IGlzIG5vdCBndWFyYW50ZWVkIHRoYXQgZWl0aGVyIGZ1bGZpbGxIYW5kbGVy
IG9yIHJlamVjdEhhbmRsZXIgaXMgZXZlbnR1YWxseSBjYWxsZWQuCkBAIC00MjgsNiArMzk2LDEx
IEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6c2V0dXBNb2R1bGVTY3JpcHRIYW5kbGVycyhMb2Fk
YWJsZU1vZHVsZVNjcmlwdCYgbW9kdWxlU2NyCiAgICAgcHJvbWlzZS50aGVuKCZzdGF0ZSwgJmZ1
bGZpbGxIYW5kbGVyLCAmcmVqZWN0SGFuZGxlcik7CiB9CiAKK1dpbmRvd1Byb3h5Q29udHJvbGxl
ciYgU2NyaXB0Q29udHJvbGxlcjo6d2luZG93UHJveHlDb250cm9sbGVyKCkKK3sKKyAgICByZXR1
cm4gbV9mcmFtZS53aW5kb3dQcm94eUNvbnRyb2xsZXIoKTsKK30KKwogVGV4dFBvc2l0aW9uIFNj
cmlwdENvbnRyb2xsZXI6OmV2ZW50SGFuZGxlclBvc2l0aW9uKCkgY29uc3QKIHsKICAgICAvLyBG
SVhNRTogSWYgd2UgYXJlIG5vdCBjdXJyZW50bHkgcGFyc2luZywgd2Ugc2hvdWxkIHVzZSBvdXIg
Y3VycmVudCBsb2NhdGlvbgpAQCAtNDQzLDcgKzQxNiw3IEBAIFRleHRQb3NpdGlvbiBTY3JpcHRD
b250cm9sbGVyOjpldmVudEhhbmRsZXJQb3NpdGlvbigpIGNvbnN0CiAKIHZvaWQgU2NyaXB0Q29u
dHJvbGxlcjo6ZW5hYmxlRXZhbCgpCiB7Ci0gICAgYXV0byogd2luZG93UHJveHkgPSBleGlzdGlu
Z1dpbmRvd1Byb3h5KG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKKyAgICBhdXRvKiB3aW5kb3dQ
cm94eSA9IHdpbmRvd1Byb3h5Q29udHJvbGxlcigpLmV4aXN0aW5nV2luZG93UHJveHkobWFpblRo
cmVhZE5vcm1hbFdvcmxkKCkpOwogICAgIGlmICghd2luZG93UHJveHkpCiAgICAgICAgIHJldHVy
bjsKICAgICB3aW5kb3dQcm94eS0+d2luZG93KCktPnNldEV2YWxFbmFibGVkKHRydWUpOwpAQCAt
NDUxLDcgKzQyNCw3IEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6ZW5hYmxlRXZhbCgpCiAKIHZv
aWQgU2NyaXB0Q29udHJvbGxlcjo6ZW5hYmxlV2ViQXNzZW1ibHkoKQogewotICAgIGF1dG8qIHdp
bmRvd1Byb3h5ID0gZXhpc3RpbmdXaW5kb3dQcm94eShtYWluVGhyZWFkTm9ybWFsV29ybGQoKSk7
CisgICAgYXV0byogd2luZG93UHJveHkgPSB3aW5kb3dQcm94eUNvbnRyb2xsZXIoKS5leGlzdGlu
Z1dpbmRvd1Byb3h5KG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKICAgICBpZiAoIXdpbmRvd1By
b3h5KQogICAgICAgICByZXR1cm47CiAgICAgd2luZG93UHJveHktPndpbmRvdygpLT5zZXRXZWJB
c3NlbWJseUVuYWJsZWQodHJ1ZSk7CkBAIC00NTksNyArNDMyLDcgQEAgdm9pZCBTY3JpcHRDb250
cm9sbGVyOjplbmFibGVXZWJBc3NlbWJseSgpCiAKIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6ZGlz
YWJsZUV2YWwoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiB7Ci0gICAgYXV0byogd2luZG93
UHJveHkgPSBleGlzdGluZ1dpbmRvd1Byb3h5KG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKKyAg
ICBhdXRvKiB3aW5kb3dQcm94eSA9IHdpbmRvd1Byb3h5Q29udHJvbGxlcigpLmV4aXN0aW5nV2lu
ZG93UHJveHkobWFpblRocmVhZE5vcm1hbFdvcmxkKCkpOwogICAgIGlmICghd2luZG93UHJveHkp
CiAgICAgICAgIHJldHVybjsKICAgICB3aW5kb3dQcm94eS0+d2luZG93KCktPnNldEV2YWxFbmFi
bGVkKGZhbHNlLCBlcnJvck1lc3NhZ2UpOwpAQCAtNDY3LDcgKzQ0MCw3IEBAIHZvaWQgU2NyaXB0
Q29udHJvbGxlcjo6ZGlzYWJsZUV2YWwoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiAKIHZv
aWQgU2NyaXB0Q29udHJvbGxlcjo6ZGlzYWJsZVdlYkFzc2VtYmx5KGNvbnN0IFN0cmluZyYgZXJy
b3JNZXNzYWdlKQogewotICAgIGF1dG8qIHdpbmRvd1Byb3h5ID0gZXhpc3RpbmdXaW5kb3dQcm94
eShtYWluVGhyZWFkTm9ybWFsV29ybGQoKSk7CisgICAgYXV0byogd2luZG93UHJveHkgPSB3aW5k
b3dQcm94eUNvbnRyb2xsZXIoKS5leGlzdGluZ1dpbmRvd1Byb3h5KG1haW5UaHJlYWROb3JtYWxX
b3JsZCgpKTsKICAgICBpZiAoIXdpbmRvd1Byb3h5KQogICAgICAgICByZXR1cm47CiAgICAgd2lu
ZG93UHJveHktPndpbmRvdygpLT5zZXRXZWJBc3NlbWJseUVuYWJsZWQoZmFsc2UsIGVycm9yTWVz
c2FnZSk7CkBAIC00ODYsNyArNDU5LDcgQEAgYm9vbCBTY3JpcHRDb250cm9sbGVyOjpjYW5BY2Nl
c3NGcm9tQ3VycmVudE9yaWdpbihGcmFtZSogZnJhbWUpCiAKIHZvaWQgU2NyaXB0Q29udHJvbGxl
cjo6YXR0YWNoRGVidWdnZXIoSlNDOjpEZWJ1Z2dlciogZGVidWdnZXIpCiB7Ci0gICAgZm9yIChh
dXRvJiB3aW5kb3dQcm94eSA6IHdpbmRvd1Byb3hpZXMoKSkKKyAgICBmb3IgKGF1dG8mIHdpbmRv
d1Byb3h5IDogd2luZG93UHJveHlDb250cm9sbGVyKCkud2luZG93UHJveGllcygpKQogICAgICAg
ICBhdHRhY2hEZWJ1Z2dlcih3aW5kb3dQcm94eS5nZXQoKSwgZGVidWdnZXIpOwogfQogCkBAIC01
MDYsNyArNDc5LDcgQEAgdm9pZCBTY3JpcHRDb250cm9sbGVyOjphdHRhY2hEZWJ1Z2dlcihKU0RP
TVdpbmRvd1Byb3h5KiBwcm94eSwgSlNDOjpEZWJ1Z2dlciogZGUKIAogdm9pZCBTY3JpcHRDb250
cm9sbGVyOjp1cGRhdGVEb2N1bWVudCgpCiB7Ci0gICAgZm9yIChhdXRvJiB3aW5kb3dQcm94eSA6
IHdpbmRvd1Byb3hpZXMoKSkgeworICAgIGZvciAoYXV0byYgd2luZG93UHJveHkgOiB3aW5kb3dQ
cm94eUNvbnRyb2xsZXIoKS53aW5kb3dQcm94aWVzQXNWZWN0b3IoKSkgewogICAgICAgICBKU0xv
Y2tIb2xkZXIgbG9jayh3aW5kb3dQcm94eS0+d29ybGQoKS52bSgpKTsKICAgICAgICAgd2luZG93
UHJveHktPndpbmRvdygpLT51cGRhdGVEb2N1bWVudCgpOwogICAgIH0KQEAgLTU1MCw3ICs1MjMs
NyBAQCBSZWY8QmluZGluZ3M6OlJvb3RPYmplY3Q+IFNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVJv
b3RPYmplY3Qodm9pZCogbmF0aXZlSGFuZGxlKQogCiB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmNv
bGxlY3RJc29sYXRlZENvbnRleHRzKFZlY3RvcjxzdGQ6OnBhaXI8SlNDOjpFeGVjU3RhdGUqLCBT
ZWN1cml0eU9yaWdpbio+PiYgcmVzdWx0KQogewotICAgIGZvciAoYXV0byYgd2luZG93UHJveHkg
OiBtX3dpbmRvd1Byb3hpZXMudmFsdWVzKCkpIHsKKyAgICBmb3IgKGF1dG8mIHdpbmRvd1Byb3h5
IDogd2luZG93UHJveHlDb250cm9sbGVyKCkud2luZG93UHJveGllc0FzVmVjdG9yKCkpIHsKICAg
ICAgICAgYXV0byogZXhlYyA9IHdpbmRvd1Byb3h5LT53aW5kb3coKS0+Z2xvYmFsRXhlYygpOwog
ICAgICAgICBhdXRvKiBvcmlnaW4gPSAmd2luZG93UHJveHktPndpbmRvdygpLT53cmFwcGVkKCku
ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKTsKICAgICAgICAgcmVzdWx0LmFwcGVuZChzdGQ6
Om1ha2VfcGFpcihleGVjLCBvcmlnaW4pKTsKQEAgLTU2NSw3ICs1MzgsNyBAQCBOUE9iamVjdCog
U2NyaXB0Q29udHJvbGxlcjo6d2luZG93U2NyaXB0TlBPYmplY3QoKQogICAgICAgICBpZiAoY2Fu
RXhlY3V0ZVNjcmlwdHMoTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQpKSB7CiAgICAgICAgICAgICAv
LyBKYXZhU2NyaXB0IGlzIGVuYWJsZWQsIHNvIHRoZXJlIGlzIGEgSmF2YVNjcmlwdCB3aW5kb3cg
b2JqZWN0LgogICAgICAgICAgICAgLy8gUmV0dXJuIGFuIE5QT2JqZWN0IGJvdW5kIHRvIHRoZSB3
aW5kb3cgb2JqZWN0LgotICAgICAgICAgICAgYXV0byogd2luZG93ID0gd2luZG93UHJveHkocGx1
Z2luV29ybGQoKSktPndpbmRvdygpOworICAgICAgICAgICAgYXV0byogd2luZG93ID0gd2luZG93
UHJveHlDb250cm9sbGVyKCkud2luZG93UHJveHkocGx1Z2luV29ybGQoKSkud2luZG93KCk7CiAg
ICAgICAgICAgICBBU1NFUlQod2luZG93KTsKICAgICAgICAgICAgIEJpbmRpbmdzOjpSb290T2Jq
ZWN0KiByb290ID0gYmluZGluZ1Jvb3RPYmplY3QoKTsKICAgICAgICAgICAgIG1fd2luZG93U2Ny
aXB0TlBPYmplY3QgPSBfTlBOX0NyZWF0ZVNjcmlwdE9iamVjdCgwLCB3aW5kb3csIHJvb3QpOwpA
QCAtNzI2LDcgKzY5OSw3IEBAIGJvb2wgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZUlmSmF2YVNj
cmlwdFVSTChjb25zdCBVUkwmIHVybCwgU2hvdWxkUmVwbGFjZURvY3VtCiAgICAgICAgIHJldHVy
biB0cnVlOwogCiAgICAgU3RyaW5nIHNjcmlwdFJlc3VsdDsKLSAgICBpZiAoIXJlc3VsdCB8fCAh
cmVzdWx0LmdldFN0cmluZyh3aW5kb3dQcm94eShtYWluVGhyZWFkTm9ybWFsV29ybGQoKSktPndp
bmRvdygpLT5nbG9iYWxFeGVjKCksIHNjcmlwdFJlc3VsdCkpCisgICAgaWYgKCFyZXN1bHQgfHwg
IXJlc3VsdC5nZXRTdHJpbmcod2luZG93UHJveHlDb250cm9sbGVyKCkud2luZG93UHJveHkobWFp
blRocmVhZE5vcm1hbFdvcmxkKCkpLndpbmRvdygpLT5nbG9iYWxFeGVjKCksIHNjcmlwdFJlc3Vs
dCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBhbHdh
eXMgcmVwbGFjZSB0aGUgZG9jdW1lbnQsIGJ1dCBkb2luZyBzbwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCmluZGV4IDhiNjA4ODU3ZDYzNDQ5YTZmYWFm
ZmVmZTI5NGEzZTc1YTBiYTNmYjEuLjUxY2MxNzhjMzc0ZWNhMjI0M2I3OWZiZThjZDhmYjIyZTYx
YjcwMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRy
b2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVy
LmgKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKICNp
bmNsdWRlICJKU0RPTVdpbmRvd1Byb3h5LmgiCisjaW5jbHVkZSAiV2luZG93UHJveHlDb250cm9s
bGVyLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNCYXNlLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvU3Ryb25nLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTcyLDcg
KzczLDYgQEAgZW51bSBSZWFzb25Gb3JDYWxsaW5nQ2FuRXhlY3V0ZVNjcmlwdHMgewogY2xhc3Mg
U2NyaXB0Q29udHJvbGxlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAKLSAgICB1
c2luZyBQcm94eU1hcCA9IEhhc2hNYXA8UmVmUHRyPERPTVdyYXBwZXJXb3JsZD4sIEpTQzo6U3Ry
b25nPEpTRE9NV2luZG93UHJveHk+PjsKICAgICB1c2luZyBSb290T2JqZWN0TWFwID0gSGFzaE1h
cDx2b2lkKiwgUmVmPEpTQzo6QmluZGluZ3M6OlJvb3RPYmplY3Q+PjsKIAogcHVibGljOgpAQCAt
ODEsMjQgKzgxLDkgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxE
T01XcmFwcGVyV29ybGQ+IGNyZWF0ZVdvcmxkKCk7CiAKLSAgICBKU0RPTVdpbmRvd1Byb3h5JiBj
cmVhdGVXaW5kb3dQcm94eShET01XcmFwcGVyV29ybGQmKTsKLSAgICB2b2lkIGRlc3Ryb3lXaW5k
b3dQcm94eShET01XcmFwcGVyV29ybGQmKTsKLQotICAgIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0RP
TVdpbmRvd1Byb3h5Pj4gd2luZG93UHJveGllcygpOwotCi0gICAgSlNET01XaW5kb3dQcm94eSog
d2luZG93UHJveHkoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKLSAgICB7Ci0gICAgICAgIGF1dG8g
aXRlciA9IG1fd2luZG93UHJveGllcy5maW5kKCZ3b3JsZCk7Ci0gICAgICAgIHJldHVybiAoaXRl
ciAhPSBtX3dpbmRvd1Byb3hpZXMuZW5kKCkpID8gaXRlci0+dmFsdWUuZ2V0KCkgOiBpbml0U2Ny
aXB0KHdvcmxkKTsKLSAgICB9Ci0gICAgSlNET01XaW5kb3dQcm94eSogZXhpc3RpbmdXaW5kb3dQ
cm94eShET01XcmFwcGVyV29ybGQmIHdvcmxkKSBjb25zdAotICAgIHsKLSAgICAgICAgYXV0byBp
dGVyID0gbV93aW5kb3dQcm94aWVzLmZpbmQoJndvcmxkKTsKLSAgICAgICAgcmV0dXJuIChpdGVy
ICE9IG1fd2luZG93UHJveGllcy5lbmQoKSkgPyBpdGVyLT52YWx1ZS5nZXQoKSA6IDA7Ci0gICAg
fQogICAgIEpTRE9NV2luZG93KiBnbG9iYWxPYmplY3QoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkK
ICAgICB7Ci0gICAgICAgIHJldHVybiB3aW5kb3dQcm94eSh3b3JsZCktPndpbmRvdygpOworICAg
ICAgICByZXR1cm4gd2luZG93UHJveHlDb250cm9sbGVyKCkud2luZG93UHJveHkod29ybGQpLndp
bmRvdygpOwogICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIGdldEFsbFdvcmxkcyhWZWN0b3I8UmVm
PERPTVdyYXBwZXJXb3JsZD4+Jik7CkBAIC0xNDgsNyArMTMzLDcgQEAgcHVibGljOgogICAgIGNv
bnN0IFN0cmluZyogc291cmNlVVJMKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VVUkw7IH0gLy8g
MCBpZiB3ZSBhcmUgbm90IGV2YWx1YXRpbmcgYW55IHNjcmlwdAogCiAgICAgdm9pZCBjbGVhcldp
bmRvd1Byb3hpZXNOb3RNYXRjaGluZ0RPTVdpbmRvdyhET01XaW5kb3cqLCBib29sIGdvaW5nSW50
b1BhZ2VDYWNoZSk7Ci0gICAgdm9pZCBzZXRET01XaW5kb3dGb3JXaW5kb3dQcm94eShET01XaW5k
b3cqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldERPTVdpbmRvd0ZvcldpbmRvd1Byb3h5
KERPTVdpbmRvdyopOwogICAgIHZvaWQgdXBkYXRlRG9jdW1lbnQoKTsKIAogICAgIHZvaWQgbmFt
ZWRJdGVtQWRkZWQoSFRNTERvY3VtZW50KiwgY29uc3QgQXRvbWljU3RyaW5nJikgeyB9CkBAIC0x
NzgsMTMgKzE2MywxNSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgTlBPYmplY3QqIHdp
bmRvd1NjcmlwdE5QT2JqZWN0KCk7CiAjZW5kaWYKIAorICAgIHZvaWQgaW5pdFNjcmlwdEZvcldp
bmRvd1Byb3h5KEpTRE9NV2luZG93UHJveHkmKTsKKwogcHJpdmF0ZToKLSAgICBXRUJDT1JFX0VY
UE9SVCBKU0RPTVdpbmRvd1Byb3h5KiBpbml0U2NyaXB0KERPTVdyYXBwZXJXb3JsZCYpOwogICAg
IHZvaWQgc2V0dXBNb2R1bGVTY3JpcHRIYW5kbGVycyhMb2FkYWJsZU1vZHVsZVNjcmlwdCYsIEpT
Qzo6SlNJbnRlcm5hbFByb21pc2UmLCBET01XcmFwcGVyV29ybGQmKTsKIAogICAgIHZvaWQgZGlz
Y29ubmVjdFBsYXRmb3JtU2NyaXB0T2JqZWN0cygpOwogCi0gICAgUHJveHlNYXAgbV93aW5kb3dQ
cm94aWVzOworICAgIFdFQkNPUkVfRVhQT1JUIFdpbmRvd1Byb3h5Q29udHJvbGxlciYgd2luZG93
UHJveHlDb250cm9sbGVyKCk7CisKICAgICBGcmFtZSYgbV9mcmFtZTsKICAgICBjb25zdCBTdHJp
bmcqIG1fc291cmNlVVJMOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRDb250cm9sbGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0Q29udHJvbGxlck1hYy5tbQppbmRleCAxZmYwOTJmZTI4OGIyMjQ3ODFmZjliMjU5YmMwOGIz
MTNmN2YyZWFjLi5iMjZlMTc3MGQ0MDQ5ZmQwNDI4NDdmMTVlYTU1ZjRjN2NmZjQyM2Q2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXJNYWMubW0K
QEAgLTEwMyw3ICsxMDMsNyBAQCBXZWJTY3JpcHRPYmplY3QgKlNjcmlwdENvbnRyb2xsZXI6Ondp
bmRvd1NjcmlwdE9iamVjdCgpCiAgICAgaWYgKCFtX3dpbmRvd1NjcmlwdE9iamVjdCkgewogICAg
ICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKGNvbW1vblZNKCkpOwogICAgICAgICBKU0M6OkJp
bmRpbmdzOjpSb290T2JqZWN0KiByb290ID0gYmluZGluZ1Jvb3RPYmplY3QoKTsKLSAgICAgICAg
bV93aW5kb3dTY3JpcHRPYmplY3QgPSBbV2ViU2NyaXB0T2JqZWN0IHNjcmlwdE9iamVjdEZvckpT
T2JqZWN0OnRvUmVmKHdpbmRvd1Byb3h5KHBsdWdpbldvcmxkKCkpKSBvcmlnaW5Sb290T2JqZWN0
OnJvb3Qgcm9vdE9iamVjdDpyb290XTsKKyAgICAgICAgbV93aW5kb3dTY3JpcHRPYmplY3QgPSBb
V2ViU2NyaXB0T2JqZWN0IHNjcmlwdE9iamVjdEZvckpTT2JqZWN0OnRvUmVmKCZ3aW5kb3dQcm94
eUNvbnRyb2xsZXIoKS53aW5kb3dQcm94eShwbHVnaW5Xb3JsZCgpKSkgb3JpZ2luUm9vdE9iamVj
dDpyb290IHJvb3RPYmplY3Q6cm9vdF07CiAgICAgfQogCiAgICAgcmV0dXJuIG1fd2luZG93U2Ny
aXB0T2JqZWN0LmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0U3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUu
Y3BwCmluZGV4IDE1YmUyNGRiYjA1MjNjZDMzYTMwYmI1OTZkODBlNmJjZTZjMzM3MTUuLjg2NWIx
ZTFlZDFmOTkwNzhkMzYxNWYwNjQ4YTk1OTBiNTNiOGUyNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgSlNDOjpFeGVjU3Rh
dGUqIG1haW5Xb3JsZEV4ZWNTdGF0ZShGcmFtZSogZnJhbWUpCiB7CiAgICAgaWYgKCFmcmFtZSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGZyYW1lLT5zY3JpcHQoKS53aW5k
b3dQcm94eShtYWluVGhyZWFkTm9ybWFsV29ybGQoKSktPndpbmRvdygpLT5nbG9iYWxFeGVjKCk7
CisgICAgcmV0dXJuIGZyYW1lLT53aW5kb3dQcm94eUNvbnRyb2xsZXIoKS53aW5kb3dQcm94eSht
YWluVGhyZWFkTm9ybWFsV29ybGQoKSkud2luZG93KCktPmdsb2JhbEV4ZWMoKTsKIH0KIAogSlND
OjpFeGVjU3RhdGUqIGV4ZWNTdGF0ZUZyb21Ob2RlKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIE5v
ZGUqIG5vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XaW5kb3dQ
cm94eUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJv
eHlDb250cm9sbGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zM2ZkOThkZmUxN2JhOWRlN2JkZWY3Y2ZlOWVi
NjAwNzNiZWYyYWNmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvV2luZG93UHJveHlDb250cm9sbGVyLmNwcApAQCAtMCwwICsxLDc0IEBACisvKgorICogIENv
cHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCisgKiAg
Q29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCisgKiAgQ29weXJp
Z2h0IChDKSAyMDA2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBH
ZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAg
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBN
QSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IldpbmRvd1Byb3h5Q29udHJvbGxlci5oIgorCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRl
ICJSZW1vdGVGcmFtZS5oIgorI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU0xvY2suaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitXaW5k
b3dQcm94eUNvbnRyb2xsZXI6OldpbmRvd1Byb3h5Q29udHJvbGxlcihBYnN0cmFjdEZyYW1lJiBm
cmFtZSkKKyAgICA6IG1fZnJhbWUoZnJhbWUpCit7Cit9CisKK3ZvaWQgV2luZG93UHJveHlDb250
cm9sbGVyOjpkZXN0cm95V2luZG93UHJveHkoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKK3sKKyAg
ICBBU1NFUlQobV93aW5kb3dQcm94aWVzLmNvbnRhaW5zKCZ3b3JsZCkpOworICAgIG1fd2luZG93
UHJveGllcy5yZW1vdmUoJndvcmxkKTsKKyAgICB3b3JsZC5kaWREZXN0cm95V2luZG93UHJveHko
dGhpcyk7Cit9CisKK0pTRE9NV2luZG93UHJveHkmIFdpbmRvd1Byb3h5Q29udHJvbGxlcjo6Y3Jl
YXRlV2luZG93UHJveHkoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKK3sKKyAgICBBU1NFUlQoIW1f
d2luZG93UHJveGllcy5jb250YWlucygmd29ybGQpKTsKKyAgICBBU1NFUlQobV9mcmFtZS53aW5k
b3coKSk7CisKKyAgICBWTSYgdm0gPSB3b3JsZC52bSgpOworCisgICAgLy8gRklYTUU6IFdlIGRv
IG5vdCBzdXBwb3J0IGNvbnN0cnVjdGluZyBhIEpTRE9NV2luZG93UHJveHkgZm9yIGEgUmVtb3Rl
RE9NV2luZG93IHlldC4KKyAgICBSRUxFQVNFX0FTU0VSVChpczxET01XaW5kb3c+KG1fZnJhbWUu
d2luZG93KCkpKTsKKworICAgIFN0cm9uZzxKU0RPTVdpbmRvd1Byb3h5PiB3aW5kb3dQcm94eSh2
bSwgJkpTRE9NV2luZG93UHJveHk6OmNyZWF0ZSh2bSwgKmRvd25jYXN0PERPTVdpbmRvdz4obV9m
cmFtZS53aW5kb3coKSksIHdvcmxkKSk7CisgICAgU3Ryb25nPEpTRE9NV2luZG93UHJveHk+IHdp
bmRvd1Byb3h5Mih3aW5kb3dQcm94eSk7CisgICAgbV93aW5kb3dQcm94aWVzLmFkZCgmd29ybGQs
IHdpbmRvd1Byb3h5KTsKKyAgICB3b3JsZC5kaWRDcmVhdGVXaW5kb3dQcm94eSh0aGlzKTsKKyAg
ICByZXR1cm4gKndpbmRvd1Byb3h5LmdldCgpOworfQorCitWZWN0b3I8SlNDOjpTdHJvbmc8SlNE
T01XaW5kb3dQcm94eT4+IFdpbmRvd1Byb3h5Q29udHJvbGxlcjo6d2luZG93UHJveGllc0FzVmVj
dG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gY29weVRvVmVjdG9yKG1fd2luZG93UHJveGllcy52
YWx1ZXMoKSk7Cit9CisKK0pTRE9NV2luZG93UHJveHkmIFdpbmRvd1Byb3h5Q29udHJvbGxlcjo6
Y3JlYXRlV2luZG93UHJveHlXaXRoSW5pdGlhbGl6ZWRTY3JpcHQoRE9NV3JhcHBlcldvcmxkJiB3
b3JsZCkKK3sKKyAgICBKU0xvY2tIb2xkZXIgbG9jayh3b3JsZC52bSgpKTsKKyAgICBhdXRvJiB3
aW5kb3dQcm94eSA9IGNyZWF0ZVdpbmRvd1Byb3h5KHdvcmxkKTsKKyAgICBpZiAoaXM8RnJhbWU+
KG1fZnJhbWUpKQorICAgICAgICBkb3duY2FzdDxGcmFtZT4obV9mcmFtZSkuc2NyaXB0KCkuaW5p
dFNjcmlwdEZvcldpbmRvd1Byb3h5KHdpbmRvd1Byb3h5KTsKKyAgICByZXR1cm4gd2luZG93UHJv
eHk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1dpbmRvd1Byb3h5Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvV2luZG93UHJveHlDb250cm9sbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjU2ZGM5YmQ1
ZTIxOTFhZTQ4NDlhMjM2MTU0NTZkNGViN2QxMDY2MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dpbmRvd1Byb3h5Q29udHJvbGxlci5oCkBAIC0wLDAgKzEs
NzQgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0
ZW5Aa2RlLm9yZykKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0
LmNvbSkKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExp
Y2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUg
U29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIkpTRE9NV2luZG93UHJveHkuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9TdHJvbmcuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIEFic3RyYWN0RnJhbWU7CisKK2NsYXNzIFdpbmRvd1Byb3h5Q29udHJvbGxl
ciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgdXNpbmcgUHJv
eHlNYXAgPSBIYXNoTWFwPFJlZlB0cjxET01XcmFwcGVyV29ybGQ+LCBKU0M6OlN0cm9uZzxKU0RP
TVdpbmRvd1Byb3h5Pj47CisKKyAgICBleHBsaWNpdCBXaW5kb3dQcm94eUNvbnRyb2xsZXIoQWJz
dHJhY3RGcmFtZSYpOworCisgICAgdm9pZCBkZXN0cm95V2luZG93UHJveHkoRE9NV3JhcHBlcldv
cmxkJik7CisKKyAgICBQcm94eU1hcDo6VmFsdWVzQ29uc3RJdGVyYXRvclJhbmdlIHdpbmRvd1By
b3hpZXMoKSBjb25zdCB7IHJldHVybiBtX3dpbmRvd1Byb3hpZXMudmFsdWVzKCk7IH0KKyAgICBW
ZWN0b3I8SlNDOjpTdHJvbmc8SlNET01XaW5kb3dQcm94eT4+IHdpbmRvd1Byb3hpZXNBc1ZlY3Rv
cigpIGNvbnN0OworCisgICAgUHJveHlNYXAgcmVsZWFzZVdpbmRvd1Byb3hpZXMoKSB7IHJldHVy
biBzdGQ6OmV4Y2hhbmdlKG1fd2luZG93UHJveGllcywgUHJveHlNYXAoKSk7IH0KKyAgICB2b2lk
IHNldFdpbmRvd1Byb3hpZXMoUHJveHlNYXAmJiB3aW5kb3dQcm94aWVzKSB7IG1fd2luZG93UHJv
eGllcyA9IFdURk1vdmUod2luZG93UHJveGllcyk7IH0KKworICAgIEpTRE9NV2luZG93UHJveHkm
IHdpbmRvd1Byb3h5KERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCisgICAgeworICAgICAgICBhdXRv
IGl0ID0gbV93aW5kb3dQcm94aWVzLmZpbmQoJndvcmxkKTsKKyAgICAgICAgaWYgKGl0ICE9IG1f
d2luZG93UHJveGllcy5lbmQoKSkKKyAgICAgICAgICAgIHJldHVybiAqaXQtPnZhbHVlLmdldCgp
OworCisgICAgICAgIHJldHVybiBjcmVhdGVXaW5kb3dQcm94eVdpdGhJbml0aWFsaXplZFNjcmlw
dCh3b3JsZCk7CisgICAgfQorCisgICAgSlNET01XaW5kb3dQcm94eSogZXhpc3RpbmdXaW5kb3dQ
cm94eShET01XcmFwcGVyV29ybGQmIHdvcmxkKSBjb25zdAorICAgIHsKKyAgICAgICAgYXV0byBp
dCA9IG1fd2luZG93UHJveGllcy5maW5kKCZ3b3JsZCk7CisgICAgICAgIHJldHVybiAoaXQgIT0g
bV93aW5kb3dQcm94aWVzLmVuZCgpKSA/IGl0LT52YWx1ZS5nZXQoKSA6IG51bGxwdHI7CisgICAg
fQorCisgICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdChET01XcmFwcGVyV29ybGQm
IHdvcmxkKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHdpbmRvd1Byb3h5KHdvcmxkKS53aW5kb3co
KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgSlNET01XaW5kb3dQcm94eSYgY3JlYXRlV2luZG93
UHJveHkoRE9NV3JhcHBlcldvcmxkJik7CisgICAgV0VCQ09SRV9FWFBPUlQgSlNET01XaW5kb3dQ
cm94eSYgY3JlYXRlV2luZG93UHJveHlXaXRoSW5pdGlhbGl6ZWRTY3JpcHQoRE9NV3JhcHBlcldv
cmxkJik7CisKKyAgICBBYnN0cmFjdEZyYW1lJiBtX2ZyYW1lOworICAgIFByb3h5TWFwIG1fd2lu
ZG93UHJveGllczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IGZlMDU1OGRhNGU4YzcxYzE1Y2E4ODE5ODZmMDIwNTM0
YzExNDNiMTcuLjgxYzBlN2U5ZjhmMWVkNDYwMzlmNjI2NDY0MmZlYzVkYjg5ZmJmZWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMzY2MCw3ICszNjYwLDcgQEAgdm9p
ZCBGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdHNJbkFsbFdvcmxkcygp
CiAKIHZvaWQgRnJhbWVMb2FkZXI6OmRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxk
KERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCiB7Ci0gICAgaWYgKCFtX2ZyYW1lLnNjcmlwdCgpLmNh
bkV4ZWN1dGVTY3JpcHRzKE5vdEFib3V0VG9FeGVjdXRlU2NyaXB0KSB8fCAhbV9mcmFtZS5zY3Jp
cHQoKS5leGlzdGluZ1dpbmRvd1Byb3h5KHdvcmxkKSkKKyAgICBpZiAoIW1fZnJhbWUuc2NyaXB0
KCkuY2FuRXhlY3V0ZVNjcmlwdHMoTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQpIHx8ICFtX2ZyYW1l
LndpbmRvd1Byb3h5Q29udHJvbGxlcigpLmV4aXN0aW5nV2luZG93UHJveHkod29ybGQpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBtX2NsaWVudC5kaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0
SW5Xb3JsZCh3b3JsZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Fic3RyYWN0
RnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9BYnN0cmFjdEZyYW1lLmNwcAppbmRleCAy
ZjBmNmRhNjBiZjIxM2U5ZjgyNzJiMmNkM2NjYWNiMTIyN2I4ODg1Li4wN2RiNTA2ODU1MTExMmYx
NDllY2E3MTc4MDFiMzE5ODgxZWU3MDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0Fic3RyYWN0RnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQWJzdHJhY3RGcmFt
ZS5jcHAKQEAgLTI2LDkgKzI2LDEyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
QWJzdHJhY3RGcmFtZS5oIgogCisjaW5jbHVkZSAiV2luZG93UHJveHlDb250cm9sbGVyLmgiCisK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQWJzdHJhY3RGcmFtZTo6QWJzdHJhY3RGcmFtZSgpCisg
ICAgOiBtX3dpbmRvd1Byb3h5Q29udHJvbGxlcihtYWtlVW5pcXVlUmVmPFdpbmRvd1Byb3h5Q29u
dHJvbGxlcj4oKnRoaXMpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0Fic3RyYWN0RnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQWJzdHJhY3RGcmFtZS5oCmlu
ZGV4IDU2MTE1ZWI2Y2NiYzIwMzMyNTMzZGFiYWE1NjI5MGJhZjAxZDFiYmUuLjMzNGM5ZWNjYTQ1
ODZkZjhiZDZmMmI1YTAzNGNjOTVlNWI4OGY2MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQWJzdHJhY3RGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQWJzdHJhY3RG
cmFtZS5oCkBAIC00MSw2ICs0MSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNMb2Nh
bEZyYW1lKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc1JlbW90ZUZyYW1lKCkgY29u
c3QgPSAwOwogCisgICAgV2luZG93UHJveHlDb250cm9sbGVyJiB3aW5kb3dQcm94eUNvbnRyb2xs
ZXIoKSB7IHJldHVybiBtX3dpbmRvd1Byb3h5Q29udHJvbGxlcjsgfQorICAgIGNvbnN0IFdpbmRv
d1Byb3h5Q29udHJvbGxlciYgd2luZG93UHJveHlDb250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4g
bV93aW5kb3dQcm94eUNvbnRyb2xsZXI7IH0KKwogICAgIEFic3RyYWN0RE9NV2luZG93KiB3aW5k
b3coKSBjb25zdCB7IHJldHVybiB2aXJ0dWFsV2luZG93KCk7IH0KIAogcHJvdGVjdGVkOgpAQCAt
NDgsNiArNTEsOCBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBBYnN0cmFj
dERPTVdpbmRvdyogdmlydHVhbFdpbmRvdygpIGNvbnN0ID0gMDsKKworICAgIFVuaXF1ZVJlZjxX
aW5kb3dQcm94eUNvbnRyb2xsZXI+IG1fd2luZG93UHJveHlDb250cm9sbGVyOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcAppbmRleCBlMTgyYzAxMGJlMTc0MWRmNDM2OTQ4YzllMzJjYzFmNzEz
Mzk0N2IyLi5mZWQyY2M3ODllODdmZDEwY2QzYjk5ZTkwNWZiNmY2OTQ1ZTYzYzE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTQ0
MSwxNCArMTQ0MSwxNCBAQCB2b2lkIFBsdWdpblZpZXc6OmNhbmNlbE1hbnVhbFN0cmVhbUxvYWQo
KQogTlBPYmplY3QqIFBsdWdpblZpZXc6OndpbmRvd1NjcmlwdE5QT2JqZWN0KCkKIHsKICAgICBp
ZiAoIWZyYW1lKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAogICAgIGlmICghZnJhbWUoKS0+c2NyaXB0KCkuY2FuRXhlY3V0ZVNjcmlwdHMoTm90QWJvdXRU
b0V4ZWN1dGVTY3JpcHQpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBJbnZlc3RpZ2F0ZSBpZiBvdGhl
ciBicm93c2VycyBhbGxvdyBwbHVnLWlucyB0byBhY2Nlc3MgSmF2YVNjcmlwdCBvYmplY3RzIGV2
ZW4gaWYgSmF2YVNjcmlwdCBpcyBkaXNhYmxlZC4KLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVybiBtX25wUnVudGltZU9iamVjdE1h
cC5nZXRPckNyZWF0ZU5QT2JqZWN0KHBsdWdpbldvcmxkKCkudm0oKSwgZnJhbWUoKS0+c2NyaXB0
KCkud2luZG93UHJveHkocGx1Z2luV29ybGQoKSktPndpbmRvdygpKTsKKyAgICByZXR1cm4gbV9u
cFJ1bnRpbWVPYmplY3RNYXAuZ2V0T3JDcmVhdGVOUE9iamVjdChwbHVnaW5Xb3JsZCgpLnZtKCks
ICZmcmFtZSgpLT53aW5kb3dQcm94eUNvbnRyb2xsZXIoKS53aW5kb3dQcm94eShwbHVnaW5Xb3Js
ZCgpKS0+d2luZG93KCkpOwogfQogCiBOUE9iamVjdCogUGx1Z2luVmlldzo6cGx1Z2luRWxlbWVu
dE5QT2JqZWN0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMv
SG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQppbmRl
eCA2ZjJkMjU5ZjU5ZDA0MTBhNWU0Nzc0NDZmNTQ5NzAyMzYzNTQyZWQ5Li5iMzBlZDIyNDVlMTU3
MzQ2NDdiM2U0MjY1NDkwZTE1ZDA5ZjQwYTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5J
bnN0YW5jZVByb3h5Lm1tCkBAIC04MzksNyArODM5LDcgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbklu
c3RhbmNlUHJveHk6OmdldFdpbmRvd05QT2JqZWN0KHVpbnQzMl90JiBvYmplY3RJRCkKICAgICBp
ZiAoIWZyYW1lLT5zY3JpcHQoKS5jYW5FeGVjdXRlU2NyaXB0cyhOb3RBYm91dFRvRXhlY3V0ZVNj
cmlwdCkpCiAgICAgICAgIG9iamVjdElEID0gMDsKICAgICBlbHNlCi0gICAgICAgIG9iamVjdElE
ID0gbV9sb2NhbE9iamVjdHMuaWRGb3JPYmplY3QocGx1Z2luV29ybGQoKS52bSgpLCBmcmFtZS0+
c2NyaXB0KCkud2luZG93UHJveHkocGx1Z2luV29ybGQoKSktPndpbmRvdygpKTsKKyAgICAgICAg
b2JqZWN0SUQgPSBtX2xvY2FsT2JqZWN0cy5pZEZvck9iamVjdChwbHVnaW5Xb3JsZCgpLnZtKCks
IGZyYW1lLT53aW5kb3dQcm94eUNvbnRyb2xsZXIoKS53aW5kb3dQcm94eShwbHVnaW5Xb3JsZCgp
KS53aW5kb3coKSk7CiAgICAgICAgIAogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggYmE5MTYyYzFhZDUxNjAzMjcz
Y2MwMjgxMzM5ZjY3NzFkYTNmM2VlOC4uNTlhMWNmMTAzNzY2OTExMTNhYjZkZTY1OGEwMGJmZmIw
MmY2OTY4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJG
cmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1t
CkBAIC0zNjAsMTUgKzM2MCwxNSBAQCBzdGF0aWMgTlNVUkwgKmNyZWF0ZVVuaXF1ZVdlYkRhdGFV
UkwoKTsKIAogLSAodm9pZClfYXR0YWNoU2NyaXB0RGVidWdnZXIKIHsKLSAgICBTY3JpcHRDb250
cm9sbGVyJiBzY3JpcHRDb250cm9sbGVyID0gX3ByaXZhdGUtPmNvcmVGcmFtZS0+c2NyaXB0KCk7
CisgICAgYXV0byYgd2luZG93UHJveHlDb250cm9sbGVyID0gX3ByaXZhdGUtPmNvcmVGcmFtZS0+
d2luZG93UHJveHlDb250cm9sbGVyKCk7CiAKICAgICAvLyBDYWxsaW5nIFNjcmlwdENvbnRyb2xs
ZXI6Omdsb2JhbE9iamVjdCgpIHdvdWxkIGNyZWF0ZSBhIHdpbmRvdyBwcm94eSwgYW5kIGRpc3Bh
dGNoIGNvcnJlc3BvbmRpbmcgY2FsbGJhY2tzLCB3aGljaCBtYXkgYmUgcHJlbWF0dXJlCiAgICAg
Ly8gaWYgdGhlIHNjcmlwdCBkZWJ1Z2dlciBpcyBhdHRhY2hlZCBiZWZvcmUgYSBkb2N1bWVudCBp
cyBjcmVhdGVkLiAgVGhlc2UgY2FsbHMgdXNlIHRoZSBkZWJ1Z2dlcldvcmxkKCksIHdlIHdpbGwg
bmVlZCB0byBwYXNzIGEgd29ybGQKICAgICAvLyB0byBiZSBhYmxlIHRvIGRlYnVnIGlzb2xhdGVk
IHdvcmxkcy4KLSAgICBpZiAoIXNjcmlwdENvbnRyb2xsZXIuZXhpc3RpbmdXaW5kb3dQcm94eShk
ZWJ1Z2dlcldvcmxkKCkpKQorICAgIGlmICghd2luZG93UHJveHlDb250cm9sbGVyLmV4aXN0aW5n
V2luZG93UHJveHkoZGVidWdnZXJXb3JsZCgpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHNjcmlwdENvbnRyb2xsZXIuZ2xvYmFsT2JqZWN0
KGRlYnVnZ2VyV29ybGQoKSk7CisgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gd2luZG93UHJveHlD
b250cm9sbGVyLmdsb2JhbE9iamVjdChkZWJ1Z2dlcldvcmxkKCkpOwogICAgIGlmICghZ2xvYmFs
T2JqZWN0KQogICAgICAgICByZXR1cm47CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>337915</attachid>
            <date>2018-04-13 11:57:55 -0700</date>
            <delta_ts>2018-04-13 12:04:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184591-20180413115755.patch</filename>
            <type>text/plain</type>
            <size>45925</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwNjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA1YzEwMjViZjU2YjFiNmFmODZjYzNh
YWFkNDEyOTdmM2JiMDhjNzUuLjZhYzY5NjE5MDE2NGIzMGY3ZjQ2YmY0NGY1NDk4MzE0OTE0MWI4
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTgtMDQtMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBTcGxpdCBXaW5kb3dQcm94eSBoYW5kbGluZyBvdXQgb2Yg
U2NyaXB0Q29udHJvbGxlciBhbmQgaW50byBhIG5ldyBjbGFzcyBvd25lZCBieSBBYnN0cmFjdEZy
YW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ1
OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
aXNFbXB0eSgpIGNvbnZlbmllbmNlIG1ldGhvZCB0byBTaXplZEl0ZXJhdG9yUmFuZ2UuCisKKyAg
ICAgICAgKiB3dGYvSXRlcmF0b3JSYW5nZS5oOgorICAgICAgICAoV1RGOjpTaXplZEl0ZXJhdG9y
UmFuZ2U6OmlzRW1wdHkgY29uc3QpOgorCiAyMDE4LTA0LTEyICBNaWNoYWVsIENhdGFuemFybyAg
PG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBSZW1vdmUgdW51c2VkIGNyYXNoIGhv
b2sgZnVuY3Rpb25hbGl0eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGE1YjQ3N2E3MmU0Mzk3NDI2NzQxY2E4Mzdk
MDRjMmNmMDMwOWQxNjYuLmViZmFmMjYwM2IxMTc2NWM4MDAyNGM3ZTljY2M4YmM2NDgxODE1MTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3NyBAQAorMjAxOC0wNC0xMyAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFNwbGl0IFdpbmRvd1Byb3h5IGhhbmRsaW5nIG91
dCBvZiBTY3JpcHRDb250cm9sbGVyIGFuZCBpbnRvIGEgbmV3IGNsYXNzIG93bmVkIGJ5IEFic3Ry
YWN0RnJhbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4NDU5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFNwbGl0IFdpbmRvd1Byb3h5IGhhbmRsaW5nIG91dCBvZiBTY3JpcHRDb250cm9sbGVyIGFuZCBp
bnRvIGEgbmV3IGNsYXNzIG93bmVkIGJ5IEFic3RyYWN0RnJhbWUuCisgICAgICAgIFJlbW90ZUZy
YW1lcyBkbyBub3QgbmVlZCBhIFNjcmlwdENvbnRyb2xsZXIgYnV0IGRvIG5lZWQgdG8gbWFpbnRh
aW4gV2luZG93UHJveGllcy4KKyAgICAgICAgVGhpcyBpcyB3b3JrIHRvd2FyZHMgZml4aW5nIEJ1
ZyAxODQ1MTUuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvRE9NV3JhcHBl
cldvcmxkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZDo6fkRPTVdyYXBw
ZXJXb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpET01XcmFwcGVyV29ybGQ6OmNsZWFyV3JhcHBl
cnMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5oOgorICAgICAgICAo
V2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkOjpkaWRDcmVhdGVXaW5kb3dQcm94eSk6CisgICAgICAg
IChXZWJDb3JlOjpET01XcmFwcGVyV29ybGQ6OmRpZERlc3Ryb3lXaW5kb3dQcm94eSk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9KU0RPTVdp
bmRvdyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dQcm94eS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNET01XaW5kb3dQcm94
eSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdENhY2hlZEZyYW1lRGF0YTo6U2NyaXB0Q2FjaGVkRnJhbWVE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENhY2hlZEZyYW1lRGF0YTo6cmVzdG9yZSk6
CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjp+U2NyaXB0Q29udHJvbGxlcik6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGQpOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0Q29udHJvbGxlcjo6bG9hZE1vZHVsZVNjcmlwdEluV29ybGQpOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6bGlua0FuZEV2YWx1YXRlTW9kdWxlU2NyaXB0
SW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZU1v
ZHVsZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpjbGVhcldpbmRvd1By
b3hpZXNOb3RNYXRjaGluZ0RPTVdpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250
cm9sbGVyOjpzZXRET01XaW5kb3dGb3JXaW5kb3dQcm94eSk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0Rm9yV2luZG93UHJveHkpOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0Q29udHJvbGxlcjo6c2V0dXBNb2R1bGVTY3JpcHRIYW5kbGVycyk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjp3aW5kb3dQcm94eUNvbnRyb2xsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZW5hYmxlRXZhbCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjplbmFibGVXZWJBc3NlbWJseSk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpkaXNhYmxlRXZhbCk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRDb250cm9sbGVyOjpkaXNhYmxlV2ViQXNzZW1ibHkpOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0Q29udHJvbGxlcjo6YXR0YWNoRGVidWdnZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0Q29udHJvbGxlcjo6dXBkYXRlRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0Q29udHJvbGxlcjo6Y29sbGVjdElzb2xhdGVkQ29udGV4dHMpOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0Q29udHJvbGxlcjo6d2luZG93U2NyaXB0TlBPYmplY3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZUlmSmF2YVNjcmlwdFVSTCk6CisgICAg
ICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0Q29udHJvbGxlcjo6Z2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9T
Y3JpcHRDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxl
cjo6d2luZG93U2NyaXB0T2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTdGF0
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYWluV29ybGRFeGVjU3RhdGUpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL1dpbmRvd1Byb3h5Q29udHJvbGxlci5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6V2luZG93UHJveHlDb250cm9sbGVyOjpXaW5kb3dQcm94eUNvbnRyb2xsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6V2luZG93UHJveHlDb250cm9sbGVyOjpkZXN0cm95V2luZG93UHJv
eHkpOgorICAgICAgICAoV2ViQ29yZTo6V2luZG93UHJveHlDb250cm9sbGVyOjpjcmVhdGVXaW5k
b3dQcm94eSk6CisgICAgICAgIChXZWJDb3JlOjpXaW5kb3dQcm94eUNvbnRyb2xsZXI6OndpbmRv
d1Byb3hpZXMpOgorICAgICAgICAoV2ViQ29yZTo6V2luZG93UHJveHlDb250cm9sbGVyOjpjcmVh
dGVXaW5kb3dQcm94eVdpdGhJbml0aWFsaXplZFNjcmlwdCk6CisgICAgICAgICogYmluZGluZ3Mv
anMvV2luZG93UHJveHlDb250cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V2lu
ZG93UHJveHlDb250cm9sbGVyOjpyZWxlYXNlV2luZG93UHJveGllcyk6CisgICAgICAgIChXZWJD
b3JlOjpXaW5kb3dQcm94eUNvbnRyb2xsZXI6OnNldFdpbmRvd1Byb3hpZXMpOgorICAgICAgICAo
V2ViQ29yZTo6V2luZG93UHJveHlDb250cm9sbGVyOjp3aW5kb3dQcm94eSk6CisgICAgICAgIChX
ZWJDb3JlOjpXaW5kb3dQcm94eUNvbnRyb2xsZXI6OmV4aXN0aW5nV2luZG93UHJveHkgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6V2luZG93UHJveHlDb250cm9sbGVyOjpnbG9iYWxPYmplY3Qp
OgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlcjo6ZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQpOgorICAgICAg
ICAqIHBhZ2UvQWJzdHJhY3RGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBYnN0cmFjdEZy
YW1lOjpBYnN0cmFjdEZyYW1lKToKKyAgICAgICAgKiBwYWdlL0Fic3RyYWN0RnJhbWUuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFic3RyYWN0RnJhbWU6OndpbmRvd1Byb3h5Q29udHJvbGxlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpBYnN0cmFjdEZyYW1lOjp3aW5kb3dQcm94eUNvbnRyb2xsZXIgY29u
c3QpOgorCiAyMDE4LTA0LTEzICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtXZWJWUl1bT3BlblZSXSBJbXBsZW1lbnQgcmVxdWVzdFByZXNlbnQo
KS9leGl0UHJlc2VudCgpIGFuZCBnZXRMYXllcnMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiYmM3ZGMzNmYzNThm
NTVjMGY5OTkwZmVmMTkyZGNhODk4MDBlMDUwLi5lZDE0MzM3NzhlNWI3NTEyYjg0M2NiODcxZDdh
YmUzNTE1OGZhZTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE4LTA0LTEzICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU3BsaXQgV2luZG93UHJveHkg
aGFuZGxpbmcgb3V0IG9mIFNjcmlwdENvbnRyb2xsZXIgYW5kIGludG8gYSBuZXcgY2xhc3Mgb3du
ZWQgYnkgQWJzdHJhY3RGcmFtZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTg0NTkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgU3BsaXQgV2luZG93UHJveHkgaGFuZGxpbmcgb3V0IG9mIFNjcmlwdENvbnRy
b2xsZXIgYW5kIGludG8gYSBuZXcgY2xhc3Mgb3duZWQgYnkgQWJzdHJhY3RGcmFtZS4KKyAgICAg
ICAgUmVtb3RlRnJhbWVzIGRvIG5vdCBuZWVkIGEgU2NyaXB0Q29udHJvbGxlciBidXQgZG8gbmVl
ZCB0byBtYWludGFpbiBXaW5kb3dQcm94aWVzLgorICAgICAgICBUaGlzIGlzIHdvcmsgdG93YXJk
cyBmaXhpbmcgQnVnIDE4NDUxNS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6d2luZG93U2NyaXB0TlBP
YmplY3QpOgorCiAyMDE4LTA0LTEzICBYYWJpZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlz
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dTdHJlYW1lcl0gQ29udmVydCBHU3RyZWFtZXJVdGls
aXRpZXMgaW4gR1N0cmVhbWVyQ29tbW9uIGFuZCBpbmNsdWRlIHRoZSBHU3RyZWFtZXIgc21hcnQg
cG9pbnRlciB0cmFpdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBjNzBmOTY2NGU5
YTY1MDNlNWFmNGRmN2NjNzBiYzFkNjNkMzc3Njc0Li45OGNhNzhjNzBiNmFhMzljMDg0ZmQyODYx
NTk0MWUyNjIwNWM2ZGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTkgQEAKKzIwMTgtMDQtMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAg
ICAgICBTcGxpdCBXaW5kb3dQcm94eSBoYW5kbGluZyBvdXQgb2YgU2NyaXB0Q29udHJvbGxlciBh
bmQgaW50byBhIG5ldyBjbGFzcyBvd25lZCBieSBBYnN0cmFjdEZyYW1lCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ1OTEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTcGxpdCBXaW5kb3dQcm94eSBoYW5k
bGluZyBvdXQgb2YgU2NyaXB0Q29udHJvbGxlciBhbmQgaW50byBhIG5ldyBjbGFzcyBvd25lZCBi
eSBBYnN0cmFjdEZyYW1lLgorICAgICAgICBSZW1vdGVGcmFtZXMgZG8gbm90IG5lZWQgYSBTY3Jp
cHRDb250cm9sbGVyIGJ1dCBkbyBuZWVkIHRvIG1haW50YWluIFdpbmRvd1Byb3hpZXMuCisgICAg
ICAgIFRoaXMgaXMgd29yayB0b3dhcmRzIGZpeGluZyBCdWcgMTg0NTE1LgorCisgICAgICAgICog
UGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tOgorICAgICAgICAo
V2ViS2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmdldFdpbmRvd05QT2JqZWN0KToK
KyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBfYXR0
YWNoU2NyaXB0RGVidWdnZXJdKToKKwogMjAxOC0wNC0wNSAgWXVzdWtlIFN1enVraSAgPHV0YXRh
bmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBbV1RGXSBSZW1vdmUgU3RhdGljTG9jawpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvSXRlcmF0b3JSYW5nZS5oIGIvU291cmNlL1dURi93dGYv
SXRlcmF0b3JSYW5nZS5oCmluZGV4IDdlMTFkNTg3OGZmNWE3NzA1YWE1YmY4ZDI2ZDIwNWQ4Mzc4
MGNmMzIuLjdjZjA1NjlmNWI1OWU4NDJjMzFkMDdlZDkzOGQ1N2IxNmZmYzZjZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL0l0ZXJhdG9yUmFuZ2UuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9J
dGVyYXRvclJhbmdlLmgKQEAgLTYyLDYgKzYyLDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIGF1
dG8gc2l6ZSgpIGNvbnN0IC0+IGRlY2x0eXBlKHN0ZDo6ZGVjbHZhbDxDb250YWluZXI+KCkuc2l6
ZSgpKSB7IHJldHVybiBtX2NvbnRhaW5lci5zaXplKCk7IH0KKyAgICBib29sIGlzRW1wdHkoKSBj
b25zdCB7IHJldHVybiBtX2NvbnRhaW5lci5pc0VtcHR5KCk7IH0KICAgICBJdGVyYXRvciBiZWdp
bigpIGNvbnN0IHsgcmV0dXJuIG1fYmVnaW47IH0KICAgICBJdGVyYXRvciBlbmQoKSBjb25zdCB7
IHJldHVybiBtX2VuZDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGE0NjE3MTllMmRkZjRiNTY4OThh
N2I2YzQ3YmU0MTc2NWE2NTI1ZTYuLmE1N2JiMmQyZjc1YjI5MTlkZGM5ZDljZmNiYjMxMmVlNzYw
Mzk1OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC00NjgsNiArNDY4LDcgQEAgYmluZGluZ3MvanMvU3Ry
dWN0dXJlZENsb25lLmNwcAogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAog
YmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHAKIGJpbmRpbmdzL2pzL1dlYkNvcmVU
eXBlZEFycmF5Q29udHJvbGxlci5jcHAKK2JpbmRpbmdzL2pzL1dpbmRvd1Byb3h5Q29udHJvbGxl
ci5jcHAKIGJpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCiAKIGJyaWRnZS9J
ZGVudGlmaWVyUmVwLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IGE2YTEzODA2MGY2MmM5ZTFjMTkwZmNlYjJhZTVmOTZhMzA2
OTY3NzQuLmNmNjA1NjcxMmRmZGE1YjNlODg1NzZmMTYwM2IwODgwYjg3YzgxOWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEx
OTEsNiArMTE5MSw3IEBACiAJCTQ2MEJCNjE2MUQwQTFCRjAwMDIyMTgxMiAvKiBCYXNlNjRVdGls
aXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
MEJCNjE0MUQwQTFCRUMwMDIyMTgxMiAvKiBCYXNlNjRVdGlsaXRpZXMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjBDQkYzNjFENEJDRDBFMDA5
MkU4OEUgLyogSlNET01XaW5kb3dQcm9wZXJ0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjBDQkYzNDFENEJDQ0ZFMDA5MkU4OEUgLyogSlNET01X
aW5kb3dQcm9wZXJ0aWVzLmggKi87IH07CiAJCTQ2MjE4QUNCMUY3MkQ2NEUwMDU3NEZCRSAvKiBE
T01IaWdoUmVzVGltZVN0YW1wLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NkUwMTZBRDFGNzJENjFFMDAyODJCMkMgLyogRE9NSGlnaFJlc1RpbWVTdGFt
cC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2
MzUyMUFEMjA4MTA5MkEwMEMyODkyMiAvKiBXaW5kb3dQcm94eUNvbnRyb2xsZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MzUyMUFBMjA4MTA5MEIw
MEMyODkyMiAvKiBXaW5kb3dQcm94eUNvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjNFQjYyMzFCODc4OUUwMDA5NkVENTEgLyog
VGFnQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDYzRUI2MjExQjg3ODlDQjAwOTZFRDUxIC8qIFRhZ0NvbGxlY3Rpb24uaCAqLzsgfTsK
IAkJNDY1MzA3RDAxREI2RUU0ODAwRTQxMzdDIC8qIEpTVUlFdmVudEluaXQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzRTA0NUVGMURBQTEwNEYwMEIw
RDhCOSAvKiBKU1VJRXZlbnRJbml0LmggKi87IH07CiAJCTQ2NjU4REM5MUZBMjRCODcwMEY3REQ1
NCAvKiBTV0NvbnRleHRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NjcyNDEzQjFGQTI0QjE0MDA4OEJENkQgLyogU1dDb250ZXh0TWFuYWdl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC03
NDI1LDYgKzc0MjYsOCBAQAogCQk0NjBDQkYzNDFENEJDQ0ZFMDA5MkU4OEUgLyogSlNET01XaW5k
b3dQcm9wZXJ0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NV2lu
ZG93UHJvcGVydGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjBEMTk0NDFG
Q0UyMUREMDBDM0RCODUgLyogSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGVDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjM0NTkyQjFB
QzIyNzEwMDBFQ0I3MUMgLyogUG93ZXJPYnNlcnZlck1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBQb3dlck9ic2VydmVyTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNDYzNTIxQUEyMDgxMDkwQjAwQzI4OTIyIC8qIFdpbmRvd1Byb3h5Q29u
dHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXaW5kb3dQcm94eUNv
bnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDYzNTIxQUMyMDgxMDkw
RTAwQzI4OTIyIC8qIFdpbmRvd1Byb3h5Q29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXaW5kb3dQcm94eUNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0NjNFQjYyMDFCODc4OUNCMDA5NkVENTEgLyogVGFnQ29sbGVj
dGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUYWdDb2xsZWN0
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYzRUI2MjExQjg3ODlDQjAw
OTZFRDUxIC8qIFRhZ0NvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVGFnQ29sbGVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjVBOEU3
ODFDOEEyNENFMDBFN0QzRTQgLyogUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzQ29jb2EubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSdW50aW1lQXBwbGljYXRpb25D
aGVja3NDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIzNzA4LDYgKzIz
NzExLDggQEAKIAkJCQlCQzUzRDkxMDExNDMxMENDMDAwRDgxN0UgLyogV2ViQ29yZUpTQ2xpZW50
RGF0YS5oICovLAogCQkJCTBGMDk5RDA2MTdCOTY4QTEwMEZGODRCOSAvKiBXZWJDb3JlVHlwZWRB
cnJheUNvbnRyb2xsZXIuY3BwICovLAogCQkJCTBGMDk5RDA3MTdCOTY4QTEwMEZGODRCOSAvKiBX
ZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIuaCAqLywKKwkJCQk0NjM1MjFBQzIwODEwOTBFMDBD
Mjg5MjIgLyogV2luZG93UHJveHlDb250cm9sbGVyLmNwcCAqLywKKwkJCQk0NjM1MjFBQTIwODEw
OTBCMDBDMjg5MjIgLyogV2luZG93UHJveHlDb250cm9sbGVyLmggKi8sCiAJCQkJRTFBNjQzRkMw
RUMwOTdBMDAwNzc5NjY4IC8qIFdvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwICovLAogCQkJCUUx
QTY0M0YxMEVDMDk3MjUwMDc3OTY2OCAvKiBXb3JrZXJTY3JpcHRDb250cm9sbGVyLmggKi8sCiAJ
CQkpOwpAQCAtMzA2MDgsNiArMzA2MTMsNyBAQAogCQkJCTBGMTVFRDVDMUI3RUM3QzUwMEVEREZF
QiAvKiBXaWxsQ2hhbmdlRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM4MjQzRTkwRDBDRkQ3
NTAwNDYwQzhGIC8qIFdpbmRvd0ZlYXR1cmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3RTk5QUY1
MzBCMTM4NDY0NjhGQjAxQTUgLyogV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk0NjM1MjFBRDIwODEwOTJBMDBDMjg5MjIgLyogV2luZG93UHJveHlDb250
cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUUxQkYwMDExNUZGNkZCMDA2RjUyQ0EgLyog
V2luZG93c0tleWJvYXJkQ29kZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUwMUJBQUE5MTM5NTBF
MkMwMEY3QUNFQiAvKiBXaW5kUnVsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE0ODMyQkUxODdG
NjRDQzAwREE2M0E2IC8qIFdLQ29udGVudE9ic2VydmF0aW9uLmggaW4gSGVhZGVycyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQuY3BwCmluZGV4IDFl
MWYxN2I4N2I4OWYzM2ZhNmI0ODM3NmEyNGVjYzVlZjJiMjAyMTQuLmMwM2UzMDk3MTU2YWFjMmZl
MTYxMjQ4MGQ2YWE5ZDQ1Y2M1NDEzYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvRE9NV3JhcHBlcldvcmxkLmNwcApAQCAtMjMsOCArMjMsOCBAQAogCiAjaW5jbHVkZSAiQ29t
bW9uVk0uaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgotI2luY2x1ZGUgIlNjcmlwdENvbnRy
b2xsZXIuaCIKICNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCisjaW5jbHVkZSAiV2lu
ZG93UHJveHlDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIAogCkBA
IC00Nyw4ICs0Nyw4IEBAIERPTVdyYXBwZXJXb3JsZDo6fkRPTVdyYXBwZXJXb3JsZCgpCiAgICAg
c3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPihjbGllbnREYXRhKS0+Zm9yZ2V0V29ybGQoKnRo
aXMpOwogCiAgICAgLy8gVGhlc2UgaXRlbXMgYXJlIGNyZWF0ZWQgbGF6aWx5LgotICAgIHdoaWxl
ICghbV9zY3JpcHRDb250cm9sbGVyc1dpdGhXaW5kb3dQcm94aWVzLmlzRW1wdHkoKSkKLSAgICAg
ICAgKCptX3NjcmlwdENvbnRyb2xsZXJzV2l0aFdpbmRvd1Byb3hpZXMuYmVnaW4oKSktPmRlc3Ry
b3lXaW5kb3dQcm94eSgqdGhpcyk7CisgICAgd2hpbGUgKCFtX3dpbmRvd1Byb3h5Q29udHJvbGxl
cnMuaXNFbXB0eSgpKQorICAgICAgICAoKm1fd2luZG93UHJveHlDb250cm9sbGVycy5iZWdpbigp
KS0+ZGVzdHJveVdpbmRvd1Byb3h5KCp0aGlzKTsKIH0KIAogdm9pZCBET01XcmFwcGVyV29ybGQ6
OmNsZWFyV3JhcHBlcnMoKQpAQCAtNTYsOCArNTYsOCBAQCB2b2lkIERPTVdyYXBwZXJXb3JsZDo6
Y2xlYXJXcmFwcGVycygpCiAgICAgbV93cmFwcGVycy5jbGVhcigpOwogCiAgICAgLy8gVGhlc2Ug
aXRlbXMgYXJlIGNyZWF0ZWQgbGF6aWx5LgotICAgIHdoaWxlICghbV9zY3JpcHRDb250cm9sbGVy
c1dpdGhXaW5kb3dQcm94aWVzLmlzRW1wdHkoKSkKLSAgICAgICAgKCptX3NjcmlwdENvbnRyb2xs
ZXJzV2l0aFdpbmRvd1Byb3hpZXMuYmVnaW4oKSktPmRlc3Ryb3lXaW5kb3dQcm94eSgqdGhpcyk7
CisgICAgd2hpbGUgKCFtX3dpbmRvd1Byb3h5Q29udHJvbGxlcnMuaXNFbXB0eSgpKQorICAgICAg
ICAoKm1fd2luZG93UHJveHlDb250cm9sbGVycy5iZWdpbigpKS0+ZGVzdHJveVdpbmRvd1Byb3h5
KCp0aGlzKTsKIH0KIAogRE9NV3JhcHBlcldvcmxkJiBub3JtYWxXb3JsZChKU0M6OlZNJiB2bSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NV3JhcHBlcldvcmxkLmgKaW5kZXggZTBh
Y2I4MjZhMTY1MDg2MmI4MDMxZTM1ZTc4YWVkMzBkYmZkODM4MS4uM2M2MmFhOWQ0ZjU0NzBhNDBh
NmViZDZiNjBiY2ViYzdiOGEzODkwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvRE9NV3JhcHBlcldvcmxkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
RE9NV3JhcHBlcldvcmxkLmgKQEAgLTI2LDcgKzI2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBTY3JpcHRDb250cm9sbGVyOworY2xhc3MgV2luZG93UHJveHlDb250cm9sbGVy
OwogCiB0eXBlZGVmIEhhc2hNYXA8dm9pZCosIEpTQzo6V2VhazxKU0M6OkpTT2JqZWN0Pj4gRE9N
T2JqZWN0V3JhcHBlck1hcDsKIApAQCAtNDEsOCArNDEsOCBAQCBwdWJsaWM6CiAgICAgLy8gRnJl
ZSBhcyBtdWNoIG1lbW9yeSBoZWxkIG9udG8gYnkgdGhpcyB3b3JsZCBhcyBwb3NzaWJsZS4KICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyV3JhcHBlcnMoKTsKIAotICAgIHZvaWQgZGlkQ3Jl
YXRlV2luZG93UHJveHkoU2NyaXB0Q29udHJvbGxlciogc2NyaXB0Q29udHJvbGxlcikgeyBtX3Nj
cmlwdENvbnRyb2xsZXJzV2l0aFdpbmRvd1Byb3hpZXMuYWRkKHNjcmlwdENvbnRyb2xsZXIpOyB9
Ci0gICAgdm9pZCBkaWREZXN0cm95V2luZG93UHJveHkoU2NyaXB0Q29udHJvbGxlciogc2NyaXB0
Q29udHJvbGxlcikgeyBtX3NjcmlwdENvbnRyb2xsZXJzV2l0aFdpbmRvd1Byb3hpZXMucmVtb3Zl
KHNjcmlwdENvbnRyb2xsZXIpOyB9CisgICAgdm9pZCBkaWRDcmVhdGVXaW5kb3dQcm94eShXaW5k
b3dQcm94eUNvbnRyb2xsZXIqIGNvbnRyb2xsZXIpIHsgbV93aW5kb3dQcm94eUNvbnRyb2xsZXJz
LmFkZChjb250cm9sbGVyKTsgfQorICAgIHZvaWQgZGlkRGVzdHJveVdpbmRvd1Byb3h5KFdpbmRv
d1Byb3h5Q29udHJvbGxlciogY29udHJvbGxlcikgeyBtX3dpbmRvd1Byb3h5Q29udHJvbGxlcnMu
cmVtb3ZlKGNvbnRyb2xsZXIpOyB9CiAKICAgICB2b2lkIHNldFNoYWRvd1Jvb3RJc0Fsd2F5c09w
ZW4oKSB7IG1fc2hhZG93Um9vdElzQWx3YXlzT3BlbiA9IHRydWU7IH0KICAgICBib29sIHNoYWRv
d1Jvb3RJc0Fsd2F5c09wZW4oKSBjb25zdCB7IHJldHVybiBtX3NoYWRvd1Jvb3RJc0Fsd2F5c09w
ZW47IH0KQEAgLTYxLDcgKzYxLDcgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIEpTQzo6
Vk0mIG1fdm07Ci0gICAgSGFzaFNldDxTY3JpcHRDb250cm9sbGVyKj4gbV9zY3JpcHRDb250cm9s
bGVyc1dpdGhXaW5kb3dQcm94aWVzOworICAgIEhhc2hTZXQ8V2luZG93UHJveHlDb250cm9sbGVy
Kj4gbV93aW5kb3dQcm94eUNvbnRyb2xsZXJzOwogICAgIERPTU9iamVjdFdyYXBwZXJNYXAgbV93
cmFwcGVyczsKIAogICAgIGJvb2wgbV9pc05vcm1hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCmluZGV4IDQ4YzUzZTJjZDJlZDJiNGZj
MzNiNDUxYWRjY2YyMzZkMmExMTY5ZGYuLmNjNWNlNjMxOTBiMTNiNzFmMjMzNWE4NDIzMjNhYTE4
ZjA1NTA0NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGlu
Z3NBbGxJbk9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5n
c0FsbEluT25lLmNwcApAQCAtMTA5LDQgKzEwOSw1IEBACiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUu
Y3BwIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAiCiAjaW5jbHVkZSAiV2Vi
Q29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmNwcCIKKyNpbmNsdWRlICJXaW5kb3dQcm94eUNvbnRy
b2xsZXIuY3BwIgogI2luY2x1ZGUgIldvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKaW5kZXggMjJiYzQz
NTBiNzVlZjIxZDI0OGJmZGNhOGRhNzIzYTkxZGVmYjRkNi4uNmZhNmU3ZDVhNGUxYWIzNmQ0MGYz
NzUwYzQyYjRkMGQ0YzY1MjUxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0Jhc2UuY3BwCkBAIC0yNjcsNyArMjY3LDcgQEAgSlNWYWx1ZSB0b0pTKEV4ZWNT
dGF0ZSogc3RhdGUsIERPTVdpbmRvdyYgZG9tV2luZG93KQogCiBKU0RPTVdpbmRvdyogdG9KU0RP
TVdpbmRvdyhGcmFtZSYgZnJhbWUsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCiB7Ci0gICAgcmV0
dXJuIGZyYW1lLnNjcmlwdCgpLndpbmRvd1Byb3h5KHdvcmxkKS0+d2luZG93KCk7CisgICAgcmV0
dXJuIGZyYW1lLnNjcmlwdCgpLmdsb2JhbE9iamVjdCh3b3JsZCk7CiB9CiAKIEpTRE9NV2luZG93
KiB0b0pTRE9NV2luZG93KEpTQzo6Vk0mIHZtLCBKU1ZhbHVlIHZhbHVlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1Byb3h5LmNwcAppbmRleCA0ODc1MTNhYTM1
MTgzNjYwNDEzZDNhNjdlYTg0ZGYyNDljZWExYTZlLi5lZWUwMmYxYWQ0NTFlOTUwOTkzYWQ2MDk2
MWM0OGFhNzMxZmJmNzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd1Byb3h5LmNwcApAQCAtMTE4LDEyICsxMTgsMTIgQEAgRE9NV2luZG93KiBKU0RPTVdp
bmRvd1Byb3h5Ojp0b1dyYXBwZWQoVk0mIHZtLCBKU09iamVjdCogdmFsdWUpCiAKIEpTVmFsdWUg
dG9KUyhFeGVjU3RhdGUqIHN0YXRlLCBGcmFtZSYgZnJhbWUpCiB7Ci0gICAgcmV0dXJuIGZyYW1l
LnNjcmlwdCgpLndpbmRvd1Byb3h5KGN1cnJlbnRXb3JsZCgqc3RhdGUpKTsKKyAgICByZXR1cm4g
JmZyYW1lLndpbmRvd1Byb3h5Q29udHJvbGxlcigpLndpbmRvd1Byb3h5KGN1cnJlbnRXb3JsZCgq
c3RhdGUpKTsKIH0KIAogSlNET01XaW5kb3dQcm94eSogdG9KU0RPTVdpbmRvd1Byb3h5KEZyYW1l
JiBmcmFtZSwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKIHsKLSAgICByZXR1cm4gZnJhbWUuc2Ny
aXB0KCkud2luZG93UHJveHkod29ybGQpOworICAgIHJldHVybiAmZnJhbWUud2luZG93UHJveHlD
b250cm9sbGVyKCkud2luZG93UHJveHkod29ybGQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRG
cmFtZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJh
bWVEYXRhLmNwcAppbmRleCAxM2U3OGQ0MzdlMTE3N2ZjOTlmNDBhYTVmMGU5ZjE5MjJjNjRlY2I5
Li40NWQxZTM4NDZiNGZmNGUzZDZlN2M5MjVmNjE0YWQ2YTA5OWJjOGU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHAKQEAg
LTUxLDE1ICs1MSwxMyBAQCBTY3JpcHRDYWNoZWRGcmFtZURhdGE6OlNjcmlwdENhY2hlZEZyYW1l
RGF0YShGcmFtZSYgZnJhbWUpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soY29tbW9uVk0oKSk7
CiAKLSAgICBhdXRvJiBzY3JpcHRDb250cm9sbGVyID0gZnJhbWUuc2NyaXB0KCk7Ci0KLSAgICBm
b3IgKGF1dG8gd2luZG93UHJveHkgOiBzY3JpcHRDb250cm9sbGVyLndpbmRvd1Byb3hpZXMoKSkg
eworICAgIGZvciAoYXV0byB3aW5kb3dQcm94eSA6IGZyYW1lLndpbmRvd1Byb3h5Q29udHJvbGxl
cigpLndpbmRvd1Byb3hpZXNBc1ZlY3RvcigpKSB7CiAgICAgICAgIGF1dG8qIHdpbmRvdyA9IHdp
bmRvd1Byb3h5LT53aW5kb3coKTsKICAgICAgICAgbV93aW5kb3dzLmFkZCgmd2luZG93UHJveHkt
PndvcmxkKCksIFN0cm9uZzxKU0RPTVdpbmRvdz4od2luZG93LT52bSgpLCB3aW5kb3cpKTsKICAg
ICAgICAgd2luZG93LT5zZXRDb25zb2xlQ2xpZW50KG51bGxwdHIpOwogICAgIH0KIAotICAgIHNj
cmlwdENvbnRyb2xsZXIuYXR0YWNoRGVidWdnZXIobnVsbHB0cik7CisgICAgZnJhbWUuc2NyaXB0
KCkuYXR0YWNoRGVidWdnZXIobnVsbHB0cik7CiB9CiAKIFNjcmlwdENhY2hlZEZyYW1lRGF0YTo6
flNjcmlwdENhY2hlZEZyYW1lRGF0YSgpCkBAIC03NCw3ICs3Miw3IEBAIHZvaWQgU2NyaXB0Q2Fj
aGVkRnJhbWVEYXRhOjpyZXN0b3JlKEZyYW1lJiBmcmFtZSkKICAgICBQYWdlKiBwYWdlID0gZnJh
bWUucGFnZSgpOwogICAgIGF1dG8mIHNjcmlwdENvbnRyb2xsZXIgPSBmcmFtZS5zY3JpcHQoKTsK
IAotICAgIGZvciAoYXV0byB3aW5kb3dQcm94eSA6IHNjcmlwdENvbnRyb2xsZXIud2luZG93UHJv
eGllcygpKSB7CisgICAgZm9yIChhdXRvIHdpbmRvd1Byb3h5IDogZnJhbWUud2luZG93UHJveHlD
b250cm9sbGVyKCkud2luZG93UHJveGllc0FzVmVjdG9yKCkpIHsKICAgICAgICAgYXV0byogd29y
bGQgPSAmd2luZG93UHJveHktPndvcmxkKCk7CiAKICAgICAgICAgaWYgKGF1dG8qIHdpbmRvdyA9
IG1fd2luZG93cy5nZXQod29ybGQpLmdldCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCBjYmQ5ZTcwMmVjY2ZkNjU1MmYzOWZmN2Y4
OWZiMzgzNmE5M2EzOWIzLi5lOTJhY2FhZmM5YjllZmM2YzQ5Y2I2NmI4NDRhNzZhM2NkYzc0ZjNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNw
cApAQCAtMTE3LDM4ICsxMTcsMTcgQEAgU2NyaXB0Q29udHJvbGxlcjo6flNjcmlwdENvbnRyb2xs
ZXIoKQogICAgICAgICBtX2NhY2hlYWJsZUJpbmRpbmdSb290T2JqZWN0ID0gbnVsbHB0cjsKICAg
ICB9CiAKLSAgICAvLyBJdCdzIGxpa2VseSB0aGF0IGRlc3Ryb3lpbmcgbV93aW5kb3dQcm94aWVz
IHdpbGwgY3JlYXRlIGEgbG90IG9mIGdhcmJhZ2UuCi0gICAgaWYgKCFtX3dpbmRvd1Byb3hpZXMu
aXNFbXB0eSgpKSB7Ci0gICAgICAgIHdoaWxlICghbV93aW5kb3dQcm94aWVzLmlzRW1wdHkoKSkg
ewotICAgICAgICAgICAgYXV0byBpdGVyID0gbV93aW5kb3dQcm94aWVzLmJlZ2luKCk7Ci0gICAg
ICAgICAgICBpdGVyLT52YWx1ZS0+d2luZG93KCktPnNldENvbnNvbGVDbGllbnQobnVsbHB0cik7
Ci0gICAgICAgICAgICBkZXN0cm95V2luZG93UHJveHkoKml0ZXItPmtleSk7CisgICAgLy8gSXQn
cyBsaWtlbHkgdGhhdCBkZXN0cm95aW5nIHdpbmRvd1Byb3hpZXMgd2lsbCBjcmVhdGUgYSBsb3Qg
b2YgZ2FyYmFnZS4KKyAgICBpZiAoIXdpbmRvd1Byb3h5Q29udHJvbGxlcigpLndpbmRvd1Byb3hp
ZXMoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgd2hpbGUgKCF3aW5kb3dQcm94eUNvbnRyb2xsZXIo
KS53aW5kb3dQcm94aWVzKCkuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBhdXRvIHdpbmRvd1By
b3h5ID0gKndpbmRvd1Byb3h5Q29udHJvbGxlcigpLndpbmRvd1Byb3hpZXMoKS5iZWdpbigpOwor
ICAgICAgICAgICAgd2luZG93UHJveHkuZ2V0KCktPndpbmRvdygpLT5zZXRDb25zb2xlQ2xpZW50
KG51bGxwdHIpOworICAgICAgICAgICAgd2luZG93UHJveHlDb250cm9sbGVyKCkuZGVzdHJveVdp
bmRvd1Byb3h5KHdpbmRvd1Byb3h5LmdldCgpLT53b3JsZCgpKTsKICAgICAgICAgfQogICAgICAg
ICBjb2xsZWN0R2FyYmFnZUFmdGVyV2luZG93UHJveHlEZXN0cnVjdGlvbigpOwogICAgIH0KIH0K
IAotdm9pZCBTY3JpcHRDb250cm9sbGVyOjpkZXN0cm95V2luZG93UHJveHkoRE9NV3JhcHBlcldv
cmxkJiB3b3JsZCkKLXsKLSAgICBBU1NFUlQobV93aW5kb3dQcm94aWVzLmNvbnRhaW5zKCZ3b3Js
ZCkpOwotICAgIG1fd2luZG93UHJveGllcy5yZW1vdmUoJndvcmxkKTsKLSAgICB3b3JsZC5kaWRE
ZXN0cm95V2luZG93UHJveHkodGhpcyk7Ci19Ci0KLUpTRE9NV2luZG93UHJveHkmIFNjcmlwdENv
bnRyb2xsZXI6OmNyZWF0ZVdpbmRvd1Byb3h5KERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCi17Ci0g
ICAgQVNTRVJUKCFtX3dpbmRvd1Byb3hpZXMuY29udGFpbnMoJndvcmxkKSk7Ci0gICAgQVNTRVJU
KG1fZnJhbWUuZG9jdW1lbnQoKS0+ZG9tV2luZG93KCkpOwotCi0gICAgVk0mIHZtID0gd29ybGQu
dm0oKTsKLQotICAgIFN0cm9uZzxKU0RPTVdpbmRvd1Byb3h5PiB3aW5kb3dQcm94eSh2bSwgJkpT
RE9NV2luZG93UHJveHk6OmNyZWF0ZSh2bSwgKm1fZnJhbWUuZG9jdW1lbnQoKS0+ZG9tV2luZG93
KCksIHdvcmxkKSk7Ci0gICAgU3Ryb25nPEpTRE9NV2luZG93UHJveHk+IHdpbmRvd1Byb3h5Mih3
aW5kb3dQcm94eSk7Ci0gICAgbV93aW5kb3dQcm94aWVzLmFkZCgmd29ybGQsIHdpbmRvd1Byb3h5
KTsKLSAgICB3b3JsZC5kaWRDcmVhdGVXaW5kb3dQcm94eSh0aGlzKTsKLSAgICByZXR1cm4gKndp
bmRvd1Byb3h5LmdldCgpOwotfQotCiBKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRl
SW5Xb3JsZChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBET01XcmFwcGVyV29y
bGQmIHdvcmxkLCBFeGNlcHRpb25EZXRhaWxzKiBleGNlcHRpb25EZXRhaWxzKQogewogICAgIEpT
TG9ja0hvbGRlciBsb2NrKHdvcmxkLnZtKCkpOwpAQCAtMTYzLDcgKzE0Miw3IEBAIEpTVmFsdWUg
U2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbldvcmxkKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUm
IHNvdXJjZUNvZGUsIERPCiAgICAgLy8gYW5kIGZhbHNlIGZvciA8c2NyaXB0PmRvU29tZXRoaW5n
KCk8L3NjcmlwdD4uIENoZWNrIGlmIGl0IGhhcyB0aGUKICAgICAvLyBleHBlY3RlZCB2YWx1ZSBp
biBhbGwgY2FzZXMuCiAgICAgLy8gU2VlIHNtYXJ0IHdpbmRvdy5vcGVuIHBvbGljeSBmb3Igd2hl
cmUgdGhpcyBpcyB1c2VkLgotICAgIGF1dG8mIHByb3h5ID0gKndpbmRvd1Byb3h5KHdvcmxkKTsK
KyAgICBhdXRvJiBwcm94eSA9IHdpbmRvd1Byb3h5Q29udHJvbGxlcigpLndpbmRvd1Byb3h5KHdv
cmxkKTsKICAgICBhdXRvJiBleGVjID0gKnByb3h5LndpbmRvdygpLT5nbG9iYWxFeGVjKCk7CiAg
ICAgY29uc3QgU3RyaW5nKiBzYXZlZFNvdXJjZVVSTCA9IG1fc291cmNlVVJMOwogICAgIG1fc291
cmNlVVJMID0gJnNvdXJjZVVSTDsKQEAgLTE5Niw3ICsxNzUsNyBAQCB2b2lkIFNjcmlwdENvbnRy
b2xsZXI6OmxvYWRNb2R1bGVTY3JpcHRJbldvcmxkKExvYWRhYmxlTW9kdWxlU2NyaXB0JiBtb2R1
bGVTY3JpcAogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKHdvcmxkLnZtKCkpOwogCi0gICAgYXV0
byYgcHJveHkgPSAqd2luZG93UHJveHkod29ybGQpOworICAgIGF1dG8mIHByb3h5ID0gd2luZG93
UHJveHlDb250cm9sbGVyKCkud2luZG93UHJveHkod29ybGQpOwogICAgIGF1dG8mIHN0YXRlID0g
KnByb3h5LndpbmRvdygpLT5nbG9iYWxFeGVjKCk7CiAKICAgICBhdXRvJiBwcm9taXNlID0gSlNN
YWluVGhyZWFkRXhlY1N0YXRlOjpsb2FkTW9kdWxlKHN0YXRlLCBtb2R1bGVOYW1lLCBKU0M6OkpT
U2NyaXB0RmV0Y2hQYXJhbWV0ZXJzOjpjcmVhdGUoc3RhdGUudm0oKSwgV1RGTW92ZSh0b3BMZXZl
bEZldGNoUGFyYW1ldGVycykpLCBKU0M6OkpTU2NyaXB0RmV0Y2hlcjo6Y3JlYXRlKHN0YXRlLnZt
KCksIHsgJm1vZHVsZVNjcmlwdCB9KSk7CkBAIC0yMTIsNyArMTkxLDcgQEAgdm9pZCBTY3JpcHRD
b250cm9sbGVyOjpsb2FkTW9kdWxlU2NyaXB0SW5Xb3JsZChMb2FkYWJsZU1vZHVsZVNjcmlwdCYg
bW9kdWxlU2NyaXAKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh3b3JsZC52bSgpKTsKIAotICAg
IGF1dG8mIHByb3h5ID0gKndpbmRvd1Byb3h5KHdvcmxkKTsKKyAgICBhdXRvJiBwcm94eSA9IHdp
bmRvd1Byb3h5Q29udHJvbGxlcigpLndpbmRvd1Byb3h5KHdvcmxkKTsKICAgICBhdXRvJiBzdGF0
ZSA9ICpwcm94eS53aW5kb3coKS0+Z2xvYmFsRXhlYygpOwogCiAgICAgYXV0byYgcHJvbWlzZSA9
IEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6bG9hZE1vZHVsZShzdGF0ZSwgc291cmNlQ29kZS5qc1Nv
dXJjZUNvZGUoKSwgSlNDOjpKU1NjcmlwdEZldGNoZXI6OmNyZWF0ZShzdGF0ZS52bSgpLCB7ICZt
b2R1bGVTY3JpcHQgfSkpOwpAQCAtMjI4LDcgKzIwNyw3IEBAIEpTQzo6SlNWYWx1ZSBTY3JpcHRD
b250cm9sbGVyOjpsaW5rQW5kRXZhbHVhdGVNb2R1bGVTY3JpcHRJbldvcmxkKExvYWRhYmxlTW9k
dWxlCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sod29ybGQudm0oKSk7CiAKLSAgICBhdXRvJiBw
cm94eSA9ICp3aW5kb3dQcm94eSh3b3JsZCk7CisgICAgYXV0byYgcHJveHkgPSB3aW5kb3dQcm94
eUNvbnRyb2xsZXIoKS53aW5kb3dQcm94eSh3b3JsZCk7CiAgICAgYXV0byYgc3RhdGUgPSAqcHJv
eHkud2luZG93KCktPmdsb2JhbEV4ZWMoKTsKIAogICAgIC8vIEZJWE1FOiBQcmV2ZW50aW5nIEZy
YW1lIGZyb20gYmVpbmcgZGVzdHJveWVkIGlzIGVzc2VudGlhbGx5IHVubmVjZXNzYXJ5LgpAQCAt
MjU3LDcgKzIzNiw3IEBAIEpTQzo6SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZU1v
ZHVsZShjb25zdCBVUkwmIHNvdXJjZVVSTCwgSlNNb2R1bGVSZWNvCiAKICAgICBjb25zdCBhdXRv
JiBqc1NvdXJjZUNvZGUgPSBtb2R1bGVSZWNvcmQuc291cmNlQ29kZSgpOwogCi0gICAgYXV0byYg
cHJveHkgPSAqd2luZG93UHJveHkod29ybGQpOworICAgIGF1dG8mIHByb3h5ID0gd2luZG93UHJv
eHlDb250cm9sbGVyKCkud2luZG93UHJveHkod29ybGQpOwogICAgIGF1dG8mIHN0YXRlID0gKnBy
b3h5LndpbmRvdygpLT5nbG9iYWxFeGVjKCk7CiAgICAgU2V0Rm9yU2NvcGU8Y29uc3QgU3RyaW5n
Kj4gc291cmNlVVJMU2NvcGUobV9zb3VyY2VVUkwsICZzb3VyY2VVUkwuc3RyaW5nKCkpOwogCkBA
IC0yODEsMTEgKzI2MCw2IEBAIFJlZjxET01XcmFwcGVyV29ybGQ+IFNjcmlwdENvbnRyb2xsZXI6
OmNyZWF0ZVdvcmxkKCkKICAgICByZXR1cm4gRE9NV3JhcHBlcldvcmxkOjpjcmVhdGUoY29tbW9u
Vk0oKSk7CiB9CiAKLVZlY3RvcjxKU0M6OlN0cm9uZzxKU0RPTVdpbmRvd1Byb3h5Pj4gU2NyaXB0
Q29udHJvbGxlcjo6d2luZG93UHJveGllcygpCi17Ci0gICAgcmV0dXJuIGNvcHlUb1ZlY3Rvciht
X3dpbmRvd1Byb3hpZXMudmFsdWVzKCkpOwotfQotCiB2b2lkIFNjcmlwdENvbnRyb2xsZXI6Omdl
dEFsbFdvcmxkcyhWZWN0b3I8UmVmPERPTVdyYXBwZXJXb3JsZD4+JiB3b3JsZHMpCiB7CiAgICAg
c3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPihjb21tb25WTSgpLmNsaWVudERhdGEpLT5nZXRB
bGxXb3JsZHMod29ybGRzKTsKQEAgLTI5MywxMyArMjY3LDEzIEBAIHZvaWQgU2NyaXB0Q29udHJv
bGxlcjo6Z2V0QWxsV29ybGRzKFZlY3RvcjxSZWY8RE9NV3JhcHBlcldvcmxkPj4mIHdvcmxkcykK
IAogdm9pZCBTY3JpcHRDb250cm9sbGVyOjpjbGVhcldpbmRvd1Byb3hpZXNOb3RNYXRjaGluZ0RP
TVdpbmRvdyhET01XaW5kb3cqIG5ld0RPTVdpbmRvdywgYm9vbCBnb2luZ0ludG9QYWdlQ2FjaGUp
CiB7Ci0gICAgaWYgKG1fd2luZG93UHJveGllcy5pc0VtcHR5KCkpCisgICAgaWYgKHdpbmRvd1By
b3h5Q29udHJvbGxlcigpLndpbmRvd1Byb3hpZXMoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIEpTTG9ja0hvbGRlciBsb2NrKGNvbW1vblZNKCkpOwogCi0gICAgZm9yIChhdXRv
JiB3aW5kb3dQcm94eSA6IHdpbmRvd1Byb3hpZXMoKSkgewotICAgICAgICBpZiAoJndpbmRvd1By
b3h5LT53aW5kb3coKS0+d3JhcHBlZCgpID09IG5ld0RPTVdpbmRvdykKKyAgICBmb3IgKGF1dG8m
IHdpbmRvd1Byb3h5IDogd2luZG93UHJveHlDb250cm9sbGVyKCkud2luZG93UHJveGllc0FzVmVj
dG9yKCkpIHsKKyAgICAgICAgaWYgKCZ3aW5kb3dQcm94eS0+d3JhcHBlZCgpID09IG5ld0RPTVdp
bmRvdykKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIC8vIENsZWFyIHRoZSBkZWJ1
Z2dlciBhbmQgY29uc29sZSBmcm9tIHRoZSBjdXJyZW50IHdpbmRvdyBiZWZvcmUgc2V0dGluZyB0
aGUgbmV3IHdpbmRvdy4KQEAgLTMxOCwxMyArMjkyLDEzIEBAIHZvaWQgU2NyaXB0Q29udHJvbGxl
cjo6c2V0RE9NV2luZG93Rm9yV2luZG93UHJveHkoRE9NV2luZG93KiBuZXdET01XaW5kb3cpCiB7
CiAgICAgQVNTRVJUKG5ld0RPTVdpbmRvdyk7CiAKLSAgICBpZiAobV93aW5kb3dQcm94aWVzLmlz
RW1wdHkoKSkKKyAgICBpZiAod2luZG93UHJveHlDb250cm9sbGVyKCkud2luZG93UHJveGllcygp
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIEpTTG9ja0hvbGRlciBsb2Nr
KGNvbW1vblZNKCkpOwogICAgIAotICAgIGZvciAoYXV0byYgd2luZG93UHJveHkgOiB3aW5kb3dQ
cm94aWVzKCkpIHsKLSAgICAgICAgaWYgKCZ3aW5kb3dQcm94eS0+d2luZG93KCktPndyYXBwZWQo
KSA9PSBuZXdET01XaW5kb3cpCisgICAgZm9yIChhdXRvJiB3aW5kb3dQcm94eSA6IHdpbmRvd1By
b3h5Q29udHJvbGxlcigpLndpbmRvd1Byb3hpZXNBc1ZlY3RvcigpKSB7CisgICAgICAgIGlmICgm
d2luZG93UHJveHktPndyYXBwZWQoKSA9PSBuZXdET01XaW5kb3cpCiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgCiAgICAgICAgIHdpbmRvd1Byb3h5LT5zZXRXaW5kb3coKm5ld0RPTVdp
bmRvdyk7CkBAIC0zNDIsMTMgKzMxNiw5IEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6c2V0RE9N
V2luZG93Rm9yV2luZG93UHJveHkoRE9NV2luZG93KiBuZXdET01XaW5kb3cpCiAgICAgfQogfQog
Ci1KU0RPTVdpbmRvd1Byb3h5KiBTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0KERPTVdyYXBw
ZXJXb3JsZCYgd29ybGQpCit2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHRGb3JXaW5k
b3dQcm94eShKU0RPTVdpbmRvd1Byb3h5JiB3aW5kb3dQcm94eSkKIHsKLSAgICBBU1NFUlQoIW1f
d2luZG93UHJveGllcy5jb250YWlucygmd29ybGQpKTsKLQotICAgIEpTTG9ja0hvbGRlciBsb2Nr
KHdvcmxkLnZtKCkpOwotCi0gICAgYXV0byYgd2luZG93UHJveHkgPSBjcmVhdGVXaW5kb3dQcm94
eSh3b3JsZCk7CisgICAgYXV0byYgd29ybGQgPSB3aW5kb3dQcm94eS53b3JsZCgpOwogCiAgICAg
d2luZG93UHJveHkud2luZG93KCktPnVwZGF0ZURvY3VtZW50KCk7CiAKQEAgLTM2Miw4ICszMzIs
NiBAQCBKU0RPTVdpbmRvd1Byb3h5KiBTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0KERPTVdy
YXBwZXJXb3JsZCYgd29ybGQpCiAgICAgfQogCiAgICAgbV9mcmFtZS5sb2FkZXIoKS5kaXNwYXRj
aERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZCh3b3JsZCk7Ci0KLSAgICByZXR1cm4gJndpbmRv
d1Byb3h5OwogfQogCiBzdGF0aWMgSWRlbnRpZmllciBqc1ZhbHVlVG9Nb2R1bGVLZXkoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQpAQCAtMzc2LDcgKzM0NCw3IEBAIHN0YXRpYyBJZGVu
dGlmaWVyIGpzVmFsdWVUb01vZHVsZUtleShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUp
CiAKIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6c2V0dXBNb2R1bGVTY3JpcHRIYW5kbGVycyhMb2Fk
YWJsZU1vZHVsZVNjcmlwdCYgbW9kdWxlU2NyaXB0UmVmLCBKU0ludGVybmFsUHJvbWlzZSYgcHJv
bWlzZSwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKIHsKLSAgICBhdXRvJiBwcm94eSA9ICp3aW5k
b3dQcm94eSh3b3JsZCk7CisgICAgYXV0byYgcHJveHkgPSB3aW5kb3dQcm94eUNvbnRyb2xsZXIo
KS53aW5kb3dQcm94eSh3b3JsZCk7CiAgICAgYXV0byYgc3RhdGUgPSAqcHJveHkud2luZG93KCkt
Pmdsb2JhbEV4ZWMoKTsKIAogICAgIC8vIEl0IGlzIG5vdCBndWFyYW50ZWVkIHRoYXQgZWl0aGVy
IGZ1bGZpbGxIYW5kbGVyIG9yIHJlamVjdEhhbmRsZXIgaXMgZXZlbnR1YWxseSBjYWxsZWQuCkBA
IC00MjgsNiArMzk2LDExIEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6c2V0dXBNb2R1bGVTY3Jp
cHRIYW5kbGVycyhMb2FkYWJsZU1vZHVsZVNjcmlwdCYgbW9kdWxlU2NyCiAgICAgcHJvbWlzZS50
aGVuKCZzdGF0ZSwgJmZ1bGZpbGxIYW5kbGVyLCAmcmVqZWN0SGFuZGxlcik7CiB9CiAKK1dpbmRv
d1Byb3h5Q29udHJvbGxlciYgU2NyaXB0Q29udHJvbGxlcjo6d2luZG93UHJveHlDb250cm9sbGVy
KCkKK3sKKyAgICByZXR1cm4gbV9mcmFtZS53aW5kb3dQcm94eUNvbnRyb2xsZXIoKTsKK30KKwog
VGV4dFBvc2l0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV2ZW50SGFuZGxlclBvc2l0aW9uKCkgY29u
c3QKIHsKICAgICAvLyBGSVhNRTogSWYgd2UgYXJlIG5vdCBjdXJyZW50bHkgcGFyc2luZywgd2Ug
c2hvdWxkIHVzZSBvdXIgY3VycmVudCBsb2NhdGlvbgpAQCAtNDQzLDcgKzQxNiw3IEBAIFRleHRQ
b3NpdGlvbiBTY3JpcHRDb250cm9sbGVyOjpldmVudEhhbmRsZXJQb3NpdGlvbigpIGNvbnN0CiAK
IHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6ZW5hYmxlRXZhbCgpCiB7Ci0gICAgYXV0byogd2luZG93
UHJveHkgPSBleGlzdGluZ1dpbmRvd1Byb3h5KG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKKyAg
ICBhdXRvKiB3aW5kb3dQcm94eSA9IHdpbmRvd1Byb3h5Q29udHJvbGxlcigpLmV4aXN0aW5nV2lu
ZG93UHJveHkobWFpblRocmVhZE5vcm1hbFdvcmxkKCkpOwogICAgIGlmICghd2luZG93UHJveHkp
CiAgICAgICAgIHJldHVybjsKICAgICB3aW5kb3dQcm94eS0+d2luZG93KCktPnNldEV2YWxFbmFi
bGVkKHRydWUpOwpAQCAtNDUxLDcgKzQyNCw3IEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6ZW5h
YmxlRXZhbCgpCiAKIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6ZW5hYmxlV2ViQXNzZW1ibHkoKQog
ewotICAgIGF1dG8qIHdpbmRvd1Byb3h5ID0gZXhpc3RpbmdXaW5kb3dQcm94eShtYWluVGhyZWFk
Tm9ybWFsV29ybGQoKSk7CisgICAgYXV0byogd2luZG93UHJveHkgPSB3aW5kb3dQcm94eUNvbnRy
b2xsZXIoKS5leGlzdGluZ1dpbmRvd1Byb3h5KG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKICAg
ICBpZiAoIXdpbmRvd1Byb3h5KQogICAgICAgICByZXR1cm47CiAgICAgd2luZG93UHJveHktPndp
bmRvdygpLT5zZXRXZWJBc3NlbWJseUVuYWJsZWQodHJ1ZSk7CkBAIC00NTksNyArNDMyLDcgQEAg
dm9pZCBTY3JpcHRDb250cm9sbGVyOjplbmFibGVXZWJBc3NlbWJseSgpCiAKIHZvaWQgU2NyaXB0
Q29udHJvbGxlcjo6ZGlzYWJsZUV2YWwoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiB7Ci0g
ICAgYXV0byogd2luZG93UHJveHkgPSBleGlzdGluZ1dpbmRvd1Byb3h5KG1haW5UaHJlYWROb3Jt
YWxXb3JsZCgpKTsKKyAgICBhdXRvKiB3aW5kb3dQcm94eSA9IHdpbmRvd1Byb3h5Q29udHJvbGxl
cigpLmV4aXN0aW5nV2luZG93UHJveHkobWFpblRocmVhZE5vcm1hbFdvcmxkKCkpOwogICAgIGlm
ICghd2luZG93UHJveHkpCiAgICAgICAgIHJldHVybjsKICAgICB3aW5kb3dQcm94eS0+d2luZG93
KCktPnNldEV2YWxFbmFibGVkKGZhbHNlLCBlcnJvck1lc3NhZ2UpOwpAQCAtNDY3LDcgKzQ0MCw3
IEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6ZGlzYWJsZUV2YWwoY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UpCiAKIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6ZGlzYWJsZVdlYkFzc2VtYmx5KGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQogewotICAgIGF1dG8qIHdpbmRvd1Byb3h5ID0gZXhp
c3RpbmdXaW5kb3dQcm94eShtYWluVGhyZWFkTm9ybWFsV29ybGQoKSk7CisgICAgYXV0byogd2lu
ZG93UHJveHkgPSB3aW5kb3dQcm94eUNvbnRyb2xsZXIoKS5leGlzdGluZ1dpbmRvd1Byb3h5KG1h
aW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKICAgICBpZiAoIXdpbmRvd1Byb3h5KQogICAgICAgICBy
ZXR1cm47CiAgICAgd2luZG93UHJveHktPndpbmRvdygpLT5zZXRXZWJBc3NlbWJseUVuYWJsZWQo
ZmFsc2UsIGVycm9yTWVzc2FnZSk7CkBAIC00ODYsNyArNDU5LDcgQEAgYm9vbCBTY3JpcHRDb250
cm9sbGVyOjpjYW5BY2Nlc3NGcm9tQ3VycmVudE9yaWdpbihGcmFtZSogZnJhbWUpCiAKIHZvaWQg
U2NyaXB0Q29udHJvbGxlcjo6YXR0YWNoRGVidWdnZXIoSlNDOjpEZWJ1Z2dlciogZGVidWdnZXIp
CiB7Ci0gICAgZm9yIChhdXRvJiB3aW5kb3dQcm94eSA6IHdpbmRvd1Byb3hpZXMoKSkKKyAgICBm
b3IgKGF1dG8mIHdpbmRvd1Byb3h5IDogd2luZG93UHJveHlDb250cm9sbGVyKCkud2luZG93UHJv
eGllcygpKQogICAgICAgICBhdHRhY2hEZWJ1Z2dlcih3aW5kb3dQcm94eS5nZXQoKSwgZGVidWdn
ZXIpOwogfQogCkBAIC01MDYsNyArNDc5LDcgQEAgdm9pZCBTY3JpcHRDb250cm9sbGVyOjphdHRh
Y2hEZWJ1Z2dlcihKU0RPTVdpbmRvd1Byb3h5KiBwcm94eSwgSlNDOjpEZWJ1Z2dlciogZGUKIAog
dm9pZCBTY3JpcHRDb250cm9sbGVyOjp1cGRhdGVEb2N1bWVudCgpCiB7Ci0gICAgZm9yIChhdXRv
JiB3aW5kb3dQcm94eSA6IHdpbmRvd1Byb3hpZXMoKSkgeworICAgIGZvciAoYXV0byYgd2luZG93
UHJveHkgOiB3aW5kb3dQcm94eUNvbnRyb2xsZXIoKS53aW5kb3dQcm94aWVzQXNWZWN0b3IoKSkg
ewogICAgICAgICBKU0xvY2tIb2xkZXIgbG9jayh3aW5kb3dQcm94eS0+d29ybGQoKS52bSgpKTsK
ICAgICAgICAgd2luZG93UHJveHktPndpbmRvdygpLT51cGRhdGVEb2N1bWVudCgpOwogICAgIH0K
QEAgLTU1MCw3ICs1MjMsNyBAQCBSZWY8QmluZGluZ3M6OlJvb3RPYmplY3Q+IFNjcmlwdENvbnRy
b2xsZXI6OmNyZWF0ZVJvb3RPYmplY3Qodm9pZCogbmF0aXZlSGFuZGxlKQogCiB2b2lkIFNjcmlw
dENvbnRyb2xsZXI6OmNvbGxlY3RJc29sYXRlZENvbnRleHRzKFZlY3RvcjxzdGQ6OnBhaXI8SlND
OjpFeGVjU3RhdGUqLCBTZWN1cml0eU9yaWdpbio+PiYgcmVzdWx0KQogewotICAgIGZvciAoYXV0
byYgd2luZG93UHJveHkgOiBtX3dpbmRvd1Byb3hpZXMudmFsdWVzKCkpIHsKKyAgICBmb3IgKGF1
dG8mIHdpbmRvd1Byb3h5IDogd2luZG93UHJveHlDb250cm9sbGVyKCkud2luZG93UHJveGllc0Fz
VmVjdG9yKCkpIHsKICAgICAgICAgYXV0byogZXhlYyA9IHdpbmRvd1Byb3h5LT53aW5kb3coKS0+
Z2xvYmFsRXhlYygpOwogICAgICAgICBhdXRvKiBvcmlnaW4gPSAmd2luZG93UHJveHktPndpbmRv
dygpLT53cmFwcGVkKCkuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKTsKICAgICAgICAgcmVz
dWx0LmFwcGVuZChzdGQ6Om1ha2VfcGFpcihleGVjLCBvcmlnaW4pKTsKQEAgLTU2NSw3ICs1Mzgs
NyBAQCBOUE9iamVjdCogU2NyaXB0Q29udHJvbGxlcjo6d2luZG93U2NyaXB0TlBPYmplY3QoKQog
ICAgICAgICBpZiAoY2FuRXhlY3V0ZVNjcmlwdHMoTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQpKSB7
CiAgICAgICAgICAgICAvLyBKYXZhU2NyaXB0IGlzIGVuYWJsZWQsIHNvIHRoZXJlIGlzIGEgSmF2
YVNjcmlwdCB3aW5kb3cgb2JqZWN0LgogICAgICAgICAgICAgLy8gUmV0dXJuIGFuIE5QT2JqZWN0
IGJvdW5kIHRvIHRoZSB3aW5kb3cgb2JqZWN0LgotICAgICAgICAgICAgYXV0byogd2luZG93ID0g
d2luZG93UHJveHkocGx1Z2luV29ybGQoKSktPndpbmRvdygpOworICAgICAgICAgICAgYXV0byog
d2luZG93ID0gd2luZG93UHJveHlDb250cm9sbGVyKCkud2luZG93UHJveHkocGx1Z2luV29ybGQo
KSkud2luZG93KCk7CiAgICAgICAgICAgICBBU1NFUlQod2luZG93KTsKICAgICAgICAgICAgIEJp
bmRpbmdzOjpSb290T2JqZWN0KiByb290ID0gYmluZGluZ1Jvb3RPYmplY3QoKTsKICAgICAgICAg
ICAgIG1fd2luZG93U2NyaXB0TlBPYmplY3QgPSBfTlBOX0NyZWF0ZVNjcmlwdE9iamVjdCgwLCB3
aW5kb3csIHJvb3QpOwpAQCAtNzI2LDcgKzY5OSw3IEBAIGJvb2wgU2NyaXB0Q29udHJvbGxlcjo6
ZXhlY3V0ZUlmSmF2YVNjcmlwdFVSTChjb25zdCBVUkwmIHVybCwgU2hvdWxkUmVwbGFjZURvY3Vt
CiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgU3RyaW5nIHNjcmlwdFJlc3VsdDsKLSAgICBp
ZiAoIXJlc3VsdCB8fCAhcmVzdWx0LmdldFN0cmluZyh3aW5kb3dQcm94eShtYWluVGhyZWFkTm9y
bWFsV29ybGQoKSktPndpbmRvdygpLT5nbG9iYWxFeGVjKCksIHNjcmlwdFJlc3VsdCkpCisgICAg
aWYgKCFyZXN1bHQgfHwgIXJlc3VsdC5nZXRTdHJpbmcod2luZG93UHJveHlDb250cm9sbGVyKCku
d2luZG93UHJveHkobWFpblRocmVhZE5vcm1hbFdvcmxkKCkpLndpbmRvdygpLT5nbG9iYWxFeGVj
KCksIHNjcmlwdFJlc3VsdCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gRklYTUU6
IFdlIHNob3VsZCBhbHdheXMgcmVwbGFjZSB0aGUgZG9jdW1lbnQsIGJ1dCBkb2luZyBzbwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCmluZGV4IDhiNjA4
ODU3ZDYzNDQ5YTZmYWFmZmVmZTI5NGEzZTc1YTBiYTNmYjEuLjUxY2MxNzhjMzc0ZWNhMjI0M2I3
OWZiZThjZDhmYjIyZTYxYjcwMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRDb250cm9sbGVyLmgKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkZyYW1lTG9h
ZGVyVHlwZXMuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvd1Byb3h5LmgiCisjaW5jbHVkZSAiV2lu
ZG93UHJveHlDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNCYXNlLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Ryb25nLmg+CiAjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KQEAgLTcyLDcgKzczLDYgQEAgZW51bSBSZWFzb25Gb3JDYWxsaW5nQ2FuRXhlY3V0ZVNj
cmlwdHMgewogY2xhc3MgU2NyaXB0Q29udHJvbGxlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiAKLSAgICB1c2luZyBQcm94eU1hcCA9IEhhc2hNYXA8UmVmUHRyPERPTVdyYXBwZXJX
b3JsZD4sIEpTQzo6U3Ryb25nPEpTRE9NV2luZG93UHJveHk+PjsKICAgICB1c2luZyBSb290T2Jq
ZWN0TWFwID0gSGFzaE1hcDx2b2lkKiwgUmVmPEpTQzo6QmluZGluZ3M6OlJvb3RPYmplY3Q+PjsK
IAogcHVibGljOgpAQCAtODEsMjQgKzgxLDkgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZjxET01XcmFwcGVyV29ybGQ+IGNyZWF0ZVdvcmxkKCk7CiAKLSAgICBKU0RP
TVdpbmRvd1Byb3h5JiBjcmVhdGVXaW5kb3dQcm94eShET01XcmFwcGVyV29ybGQmKTsKLSAgICB2
b2lkIGRlc3Ryb3lXaW5kb3dQcm94eShET01XcmFwcGVyV29ybGQmKTsKLQotICAgIFZlY3RvcjxK
U0M6OlN0cm9uZzxKU0RPTVdpbmRvd1Byb3h5Pj4gd2luZG93UHJveGllcygpOwotCi0gICAgSlNE
T01XaW5kb3dQcm94eSogd2luZG93UHJveHkoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKLSAgICB7
Ci0gICAgICAgIGF1dG8gaXRlciA9IG1fd2luZG93UHJveGllcy5maW5kKCZ3b3JsZCk7Ci0gICAg
ICAgIHJldHVybiAoaXRlciAhPSBtX3dpbmRvd1Byb3hpZXMuZW5kKCkpID8gaXRlci0+dmFsdWUu
Z2V0KCkgOiBpbml0U2NyaXB0KHdvcmxkKTsKLSAgICB9Ci0gICAgSlNET01XaW5kb3dQcm94eSog
ZXhpc3RpbmdXaW5kb3dQcm94eShET01XcmFwcGVyV29ybGQmIHdvcmxkKSBjb25zdAotICAgIHsK
LSAgICAgICAgYXV0byBpdGVyID0gbV93aW5kb3dQcm94aWVzLmZpbmQoJndvcmxkKTsKLSAgICAg
ICAgcmV0dXJuIChpdGVyICE9IG1fd2luZG93UHJveGllcy5lbmQoKSkgPyBpdGVyLT52YWx1ZS5n
ZXQoKSA6IDA7Ci0gICAgfQogICAgIEpTRE9NV2luZG93KiBnbG9iYWxPYmplY3QoRE9NV3JhcHBl
cldvcmxkJiB3b3JsZCkKICAgICB7Ci0gICAgICAgIHJldHVybiB3aW5kb3dQcm94eSh3b3JsZCkt
PndpbmRvdygpOworICAgICAgICByZXR1cm4gd2luZG93UHJveHlDb250cm9sbGVyKCkud2luZG93
UHJveHkod29ybGQpLndpbmRvdygpOwogICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIGdldEFsbFdv
cmxkcyhWZWN0b3I8UmVmPERPTVdyYXBwZXJXb3JsZD4+Jik7CkBAIC0xNDgsNyArMTMzLDcgQEAg
cHVibGljOgogICAgIGNvbnN0IFN0cmluZyogc291cmNlVVJMKCkgY29uc3QgeyByZXR1cm4gbV9z
b3VyY2VVUkw7IH0gLy8gMCBpZiB3ZSBhcmUgbm90IGV2YWx1YXRpbmcgYW55IHNjcmlwdAogCiAg
ICAgdm9pZCBjbGVhcldpbmRvd1Byb3hpZXNOb3RNYXRjaGluZ0RPTVdpbmRvdyhET01XaW5kb3cq
LCBib29sIGdvaW5nSW50b1BhZ2VDYWNoZSk7Ci0gICAgdm9pZCBzZXRET01XaW5kb3dGb3JXaW5k
b3dQcm94eShET01XaW5kb3cqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldERPTVdpbmRv
d0ZvcldpbmRvd1Byb3h5KERPTVdpbmRvdyopOwogICAgIHZvaWQgdXBkYXRlRG9jdW1lbnQoKTsK
IAogICAgIHZvaWQgbmFtZWRJdGVtQWRkZWQoSFRNTERvY3VtZW50KiwgY29uc3QgQXRvbWljU3Ry
aW5nJikgeyB9CkBAIC0xNzgsMTMgKzE2MywxNSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgTlBPYmplY3QqIHdpbmRvd1NjcmlwdE5QT2JqZWN0KCk7CiAjZW5kaWYKIAorICAgIHZvaWQg
aW5pdFNjcmlwdEZvcldpbmRvd1Byb3h5KEpTRE9NV2luZG93UHJveHkmKTsKKwogcHJpdmF0ZToK
LSAgICBXRUJDT1JFX0VYUE9SVCBKU0RPTVdpbmRvd1Byb3h5KiBpbml0U2NyaXB0KERPTVdyYXBw
ZXJXb3JsZCYpOwogICAgIHZvaWQgc2V0dXBNb2R1bGVTY3JpcHRIYW5kbGVycyhMb2FkYWJsZU1v
ZHVsZVNjcmlwdCYsIEpTQzo6SlNJbnRlcm5hbFByb21pc2UmLCBET01XcmFwcGVyV29ybGQmKTsK
IAogICAgIHZvaWQgZGlzY29ubmVjdFBsYXRmb3JtU2NyaXB0T2JqZWN0cygpOwogCi0gICAgUHJv
eHlNYXAgbV93aW5kb3dQcm94aWVzOworICAgIFdFQkNPUkVfRVhQT1JUIFdpbmRvd1Byb3h5Q29u
dHJvbGxlciYgd2luZG93UHJveHlDb250cm9sbGVyKCk7CisKICAgICBGcmFtZSYgbV9mcmFtZTsK
ICAgICBjb25zdCBTdHJpbmcqIG1fc291cmNlVVJMOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlck1hYy5tbQppbmRleCAxZmYwOTJmZTI4OGIyMjQ3
ODFmZjliMjU5YmMwOGIzMTNmN2YyZWFjLi5iMjZlMTc3MGQ0MDQ5ZmQwNDI4NDdmMTVlYTU1ZjRj
N2NmZjQyM2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRD
b250cm9sbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENv
bnRyb2xsZXJNYWMubW0KQEAgLTEwMyw3ICsxMDMsNyBAQCBXZWJTY3JpcHRPYmplY3QgKlNjcmlw
dENvbnRyb2xsZXI6OndpbmRvd1NjcmlwdE9iamVjdCgpCiAgICAgaWYgKCFtX3dpbmRvd1Njcmlw
dE9iamVjdCkgewogICAgICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKGNvbW1vblZNKCkpOwog
ICAgICAgICBKU0M6OkJpbmRpbmdzOjpSb290T2JqZWN0KiByb290ID0gYmluZGluZ1Jvb3RPYmpl
Y3QoKTsKLSAgICAgICAgbV93aW5kb3dTY3JpcHRPYmplY3QgPSBbV2ViU2NyaXB0T2JqZWN0IHNj
cmlwdE9iamVjdEZvckpTT2JqZWN0OnRvUmVmKHdpbmRvd1Byb3h5KHBsdWdpbldvcmxkKCkpKSBv
cmlnaW5Sb290T2JqZWN0OnJvb3Qgcm9vdE9iamVjdDpyb290XTsKKyAgICAgICAgbV93aW5kb3dT
Y3JpcHRPYmplY3QgPSBbV2ViU2NyaXB0T2JqZWN0IHNjcmlwdE9iamVjdEZvckpTT2JqZWN0OnRv
UmVmKCZ3aW5kb3dQcm94eUNvbnRyb2xsZXIoKS53aW5kb3dQcm94eShwbHVnaW5Xb3JsZCgpKSkg
b3JpZ2luUm9vdE9iamVjdDpyb290IHJvb3RPYmplY3Q6cm9vdF07CiAgICAgfQogCiAgICAgcmV0
dXJuIG1fd2luZG93U2NyaXB0T2JqZWN0LmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0U3RhdGUuY3BwCmluZGV4IDE1YmUyNGRiYjA1MjNjZDMzYTMwYmI1OTZkODBlNmJj
ZTZjMzM3MTUuLjg2NWIxZTFlZDFmOTkwNzhkMzYxNWYwNjQ4YTk1OTBiNTNiOGUyNzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAKQEAgLTc1LDcgKzc1LDcg
QEAgSlNDOjpFeGVjU3RhdGUqIG1haW5Xb3JsZEV4ZWNTdGF0ZShGcmFtZSogZnJhbWUpCiB7CiAg
ICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGZyYW1l
LT5zY3JpcHQoKS53aW5kb3dQcm94eShtYWluVGhyZWFkTm9ybWFsV29ybGQoKSktPndpbmRvdygp
LT5nbG9iYWxFeGVjKCk7CisgICAgcmV0dXJuIGZyYW1lLT53aW5kb3dQcm94eUNvbnRyb2xsZXIo
KS53aW5kb3dQcm94eShtYWluVGhyZWFkTm9ybWFsV29ybGQoKSkud2luZG93KCktPmdsb2JhbEV4
ZWMoKTsKIH0KIAogSlNDOjpFeGVjU3RhdGUqIGV4ZWNTdGF0ZUZyb21Ob2RlKERPTVdyYXBwZXJX
b3JsZCYgd29ybGQsIE5vZGUqIG5vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9XaW5kb3dQcm94eUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvV2luZG93UHJveHlDb250cm9sbGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zM2ZkOThkZmUxN2Jh
OWRlN2JkZWY3Y2ZlOWViNjAwNzNiZWYyYWNmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJveHlDb250cm9sbGVyLmNwcApAQCAtMCwwICsxLDc0
IEBACisvKgorICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9ydGVu
QGtkZS5vcmcpCisgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5j
b20pCisgKiAgQ29weXJpZ2h0IChDKSAyMDA2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg
KiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNl
bnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNv
ZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIldpbmRvd1Byb3h5Q29udHJvbGxlci5oIgorCisjaW5jbHVkZSAiRnJh
bWUuaCIKKyNpbmNsdWRlICJSZW1vdGVGcmFtZS5oIgorI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xs
ZXIuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0xvY2suaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitXaW5kb3dQcm94eUNvbnRyb2xsZXI6OldpbmRvd1Byb3h5Q29udHJvbGxlcihB
YnN0cmFjdEZyYW1lJiBmcmFtZSkKKyAgICA6IG1fZnJhbWUoZnJhbWUpCit7Cit9CisKK3ZvaWQg
V2luZG93UHJveHlDb250cm9sbGVyOjpkZXN0cm95V2luZG93UHJveHkoRE9NV3JhcHBlcldvcmxk
JiB3b3JsZCkKK3sKKyAgICBBU1NFUlQobV93aW5kb3dQcm94aWVzLmNvbnRhaW5zKCZ3b3JsZCkp
OworICAgIG1fd2luZG93UHJveGllcy5yZW1vdmUoJndvcmxkKTsKKyAgICB3b3JsZC5kaWREZXN0
cm95V2luZG93UHJveHkodGhpcyk7Cit9CisKK0pTRE9NV2luZG93UHJveHkmIFdpbmRvd1Byb3h5
Q29udHJvbGxlcjo6Y3JlYXRlV2luZG93UHJveHkoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKK3sK
KyAgICBBU1NFUlQoIW1fd2luZG93UHJveGllcy5jb250YWlucygmd29ybGQpKTsKKyAgICBBU1NF
UlQobV9mcmFtZS53aW5kb3coKSk7CisKKyAgICBWTSYgdm0gPSB3b3JsZC52bSgpOworCisgICAg
Ly8gRklYTUU6IFdlIGRvIG5vdCBzdXBwb3J0IGNvbnN0cnVjdGluZyBhIEpTRE9NV2luZG93UHJv
eHkgZm9yIGEgUmVtb3RlRE9NV2luZG93IHlldC4KKyAgICBSRUxFQVNFX0FTU0VSVChpczxET01X
aW5kb3c+KG1fZnJhbWUud2luZG93KCkpKTsKKworICAgIFN0cm9uZzxKU0RPTVdpbmRvd1Byb3h5
PiB3aW5kb3dQcm94eSh2bSwgJkpTRE9NV2luZG93UHJveHk6OmNyZWF0ZSh2bSwgKmRvd25jYXN0
PERPTVdpbmRvdz4obV9mcmFtZS53aW5kb3coKSksIHdvcmxkKSk7CisgICAgU3Ryb25nPEpTRE9N
V2luZG93UHJveHk+IHdpbmRvd1Byb3h5Mih3aW5kb3dQcm94eSk7CisgICAgbV93aW5kb3dQcm94
aWVzLmFkZCgmd29ybGQsIHdpbmRvd1Byb3h5KTsKKyAgICB3b3JsZC5kaWRDcmVhdGVXaW5kb3dQ
cm94eSh0aGlzKTsKKyAgICByZXR1cm4gKndpbmRvd1Byb3h5LmdldCgpOworfQorCitWZWN0b3I8
SlNDOjpTdHJvbmc8SlNET01XaW5kb3dQcm94eT4+IFdpbmRvd1Byb3h5Q29udHJvbGxlcjo6d2lu
ZG93UHJveGllc0FzVmVjdG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gY29weVRvVmVjdG9yKG1f
d2luZG93UHJveGllcy52YWx1ZXMoKSk7Cit9CisKK0pTRE9NV2luZG93UHJveHkmIFdpbmRvd1By
b3h5Q29udHJvbGxlcjo6Y3JlYXRlV2luZG93UHJveHlXaXRoSW5pdGlhbGl6ZWRTY3JpcHQoRE9N
V3JhcHBlcldvcmxkJiB3b3JsZCkKK3sKKyAgICBKU0xvY2tIb2xkZXIgbG9jayh3b3JsZC52bSgp
KTsKKyAgICBhdXRvJiB3aW5kb3dQcm94eSA9IGNyZWF0ZVdpbmRvd1Byb3h5KHdvcmxkKTsKKyAg
ICBpZiAoaXM8RnJhbWU+KG1fZnJhbWUpKQorICAgICAgICBkb3duY2FzdDxGcmFtZT4obV9mcmFt
ZSkuc2NyaXB0KCkuaW5pdFNjcmlwdEZvcldpbmRvd1Byb3h5KHdpbmRvd1Byb3h5KTsKKyAgICBy
ZXR1cm4gd2luZG93UHJveHk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dpbmRvd1Byb3h5Q29udHJvbGxlci5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJveHlDb250cm9sbGVyLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYjU2ZGM5YmQ1ZTIxOTFhZTQ4NDlhMjM2MTU0NTZkNGViN2QxMDY2MwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dpbmRvd1Byb3h5Q29udHJvbGxl
ci5oCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFy
cmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIg
S2VsbHkgKHBta0Bwb3N0LmNvbSkKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
KiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAg
TGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3Jp
dGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTRE9NV2luZG93UHJveHkuaCIKKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9TdHJvbmcuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEFic3RyYWN0RnJhbWU7CisKK2NsYXNzIFdpbmRv
d1Byb3h5Q29udHJvbGxlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6
CisgICAgdXNpbmcgUHJveHlNYXAgPSBIYXNoTWFwPFJlZlB0cjxET01XcmFwcGVyV29ybGQ+LCBK
U0M6OlN0cm9uZzxKU0RPTVdpbmRvd1Byb3h5Pj47CisKKyAgICBleHBsaWNpdCBXaW5kb3dQcm94
eUNvbnRyb2xsZXIoQWJzdHJhY3RGcmFtZSYpOworCisgICAgdm9pZCBkZXN0cm95V2luZG93UHJv
eHkoRE9NV3JhcHBlcldvcmxkJik7CisKKyAgICBQcm94eU1hcDo6VmFsdWVzQ29uc3RJdGVyYXRv
clJhbmdlIHdpbmRvd1Byb3hpZXMoKSBjb25zdCB7IHJldHVybiBtX3dpbmRvd1Byb3hpZXMudmFs
dWVzKCk7IH0KKyAgICBWZWN0b3I8SlNDOjpTdHJvbmc8SlNET01XaW5kb3dQcm94eT4+IHdpbmRv
d1Byb3hpZXNBc1ZlY3RvcigpIGNvbnN0OworCisgICAgUHJveHlNYXAgcmVsZWFzZVdpbmRvd1By
b3hpZXMoKSB7IHJldHVybiBzdGQ6OmV4Y2hhbmdlKG1fd2luZG93UHJveGllcywgUHJveHlNYXAo
KSk7IH0KKyAgICB2b2lkIHNldFdpbmRvd1Byb3hpZXMoUHJveHlNYXAmJiB3aW5kb3dQcm94aWVz
KSB7IG1fd2luZG93UHJveGllcyA9IFdURk1vdmUod2luZG93UHJveGllcyk7IH0KKworICAgIEpT
RE9NV2luZG93UHJveHkmIHdpbmRvd1Byb3h5KERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCisgICAg
eworICAgICAgICBhdXRvIGl0ID0gbV93aW5kb3dQcm94aWVzLmZpbmQoJndvcmxkKTsKKyAgICAg
ICAgaWYgKGl0ICE9IG1fd2luZG93UHJveGllcy5lbmQoKSkKKyAgICAgICAgICAgIHJldHVybiAq
aXQtPnZhbHVlLmdldCgpOworCisgICAgICAgIHJldHVybiBjcmVhdGVXaW5kb3dQcm94eVdpdGhJ
bml0aWFsaXplZFNjcmlwdCh3b3JsZCk7CisgICAgfQorCisgICAgSlNET01XaW5kb3dQcm94eSog
ZXhpc3RpbmdXaW5kb3dQcm94eShET01XcmFwcGVyV29ybGQmIHdvcmxkKSBjb25zdAorICAgIHsK
KyAgICAgICAgYXV0byBpdCA9IG1fd2luZG93UHJveGllcy5maW5kKCZ3b3JsZCk7CisgICAgICAg
IHJldHVybiAoaXQgIT0gbV93aW5kb3dQcm94aWVzLmVuZCgpKSA/IGl0LT52YWx1ZS5nZXQoKSA6
IG51bGxwdHI7CisgICAgfQorCisgICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdChE
T01XcmFwcGVyV29ybGQmIHdvcmxkKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHdpbmRvd1Byb3h5
KHdvcmxkKS53aW5kb3coKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgSlNET01XaW5kb3dQcm94
eSYgY3JlYXRlV2luZG93UHJveHkoRE9NV3JhcHBlcldvcmxkJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgSlNET01XaW5kb3dQcm94eSYgY3JlYXRlV2luZG93UHJveHlXaXRoSW5pdGlhbGl6ZWRTY3Jp
cHQoRE9NV3JhcHBlcldvcmxkJik7CisKKyAgICBBYnN0cmFjdEZyYW1lJiBtX2ZyYW1lOworICAg
IFByb3h5TWFwIG1fd2luZG93UHJveGllczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IGZlMDU1OGRhNGU4YzcxYzE1
Y2E4ODE5ODZmMDIwNTM0YzExNDNiMTcuLjgxYzBlN2U5ZjhmMWVkNDYwMzlmNjI2NDY0MmZlYzVk
Yjg5ZmJmZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMzY2MCw3
ICszNjYwLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVj
dHNJbkFsbFdvcmxkcygpCiAKIHZvaWQgRnJhbWVMb2FkZXI6OmRpc3BhdGNoRGlkQ2xlYXJXaW5k
b3dPYmplY3RJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCiB7Ci0gICAgaWYgKCFtX2Zy
YW1lLnNjcmlwdCgpLmNhbkV4ZWN1dGVTY3JpcHRzKE5vdEFib3V0VG9FeGVjdXRlU2NyaXB0KSB8
fCAhbV9mcmFtZS5zY3JpcHQoKS5leGlzdGluZ1dpbmRvd1Byb3h5KHdvcmxkKSkKKyAgICBpZiAo
IW1fZnJhbWUuc2NyaXB0KCkuY2FuRXhlY3V0ZVNjcmlwdHMoTm90QWJvdXRUb0V4ZWN1dGVTY3Jp
cHQpIHx8ICFtX2ZyYW1lLndpbmRvd1Byb3h5Q29udHJvbGxlcigpLmV4aXN0aW5nV2luZG93UHJv
eHkod29ybGQpKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2NsaWVudC5kaXNwYXRjaERpZENs
ZWFyV2luZG93T2JqZWN0SW5Xb3JsZCh3b3JsZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0Fic3RyYWN0RnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9BYnN0cmFjdEZy
YW1lLmNwcAppbmRleCAyZjBmNmRhNjBiZjIxM2U5ZjgyNzJiMmNkM2NjYWNiMTIyN2I4ODg1Li4w
N2RiNTA2ODU1MTExMmYxNDllY2E3MTc4MDFiMzE5ODgxZWU3MDc5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Fic3RyYWN0RnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQWJzdHJhY3RGcmFtZS5jcHAKQEAgLTI2LDkgKzI2LDEyIEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiQWJzdHJhY3RGcmFtZS5oIgogCisjaW5jbHVkZSAiV2luZG93UHJveHlD
b250cm9sbGVyLmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQWJzdHJhY3RGcmFtZTo6QWJz
dHJhY3RGcmFtZSgpCisgICAgOiBtX3dpbmRvd1Byb3h5Q29udHJvbGxlcihtYWtlVW5pcXVlUmVm
PFdpbmRvd1Byb3h5Q29udHJvbGxlcj4oKnRoaXMpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Fic3RyYWN0RnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQWJz
dHJhY3RGcmFtZS5oCmluZGV4IDU2MTE1ZWI2Y2NiYzIwMzMyNTMzZGFiYWE1NjI5MGJhZjAxZDFi
YmUuLjMzNGM5ZWNjYTQ1ODZkZjhiZDZmMmI1YTAzNGNjOTVlNWI4OGY2MTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQWJzdHJhY3RGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQWJzdHJhY3RGcmFtZS5oCkBAIC00MSw2ICs0MSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGJvb2wgaXNMb2NhbEZyYW1lKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc1Jl
bW90ZUZyYW1lKCkgY29uc3QgPSAwOwogCisgICAgV2luZG93UHJveHlDb250cm9sbGVyJiB3aW5k
b3dQcm94eUNvbnRyb2xsZXIoKSB7IHJldHVybiBtX3dpbmRvd1Byb3h5Q29udHJvbGxlcjsgfQor
ICAgIGNvbnN0IFdpbmRvd1Byb3h5Q29udHJvbGxlciYgd2luZG93UHJveHlDb250cm9sbGVyKCkg
Y29uc3QgeyByZXR1cm4gbV93aW5kb3dQcm94eUNvbnRyb2xsZXI7IH0KKwogICAgIEFic3RyYWN0
RE9NV2luZG93KiB3aW5kb3coKSBjb25zdCB7IHJldHVybiB2aXJ0dWFsV2luZG93KCk7IH0KIAog
cHJvdGVjdGVkOgpAQCAtNDgsNiArNTEsOCBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAg
dmlydHVhbCBBYnN0cmFjdERPTVdpbmRvdyogdmlydHVhbFdpbmRvdygpIGNvbnN0ID0gMDsKKwor
ICAgIFVuaXF1ZVJlZjxXaW5kb3dQcm94eUNvbnRyb2xsZXI+IG1fd2luZG93UHJveHlDb250cm9s
bGVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCBlMTgyYzAxMGJlMTc0MWRmNDM2
OTQ4YzllMzJjYzFmNzEzMzk0N2IyLi4wZWQ2NjI0YzFjODkwNDUzYzNmNTZjYTlkMGExM2IzMWQ4
Y2FiOTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3LmNwcApAQCAtMTQ0MSwxNCArMTQ0MSwxNCBAQCB2b2lkIFBsdWdpblZpZXc6OmNhbmNlbE1h
bnVhbFN0cmVhbUxvYWQoKQogTlBPYmplY3QqIFBsdWdpblZpZXc6OndpbmRvd1NjcmlwdE5QT2Jq
ZWN0KCkKIHsKICAgICBpZiAoIWZyYW1lKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmICghZnJhbWUoKS0+c2NyaXB0KCkuY2FuRXhlY3V0ZVNj
cmlwdHMoTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBJbnZl
c3RpZ2F0ZSBpZiBvdGhlciBicm93c2VycyBhbGxvdyBwbHVnLWlucyB0byBhY2Nlc3MgSmF2YVNj
cmlwdCBvYmplY3RzIGV2ZW4gaWYgSmF2YVNjcmlwdCBpcyBkaXNhYmxlZC4KLSAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVybiBtX25w
UnVudGltZU9iamVjdE1hcC5nZXRPckNyZWF0ZU5QT2JqZWN0KHBsdWdpbldvcmxkKCkudm0oKSwg
ZnJhbWUoKS0+c2NyaXB0KCkud2luZG93UHJveHkocGx1Z2luV29ybGQoKSktPndpbmRvdygpKTsK
KyAgICByZXR1cm4gbV9ucFJ1bnRpbWVPYmplY3RNYXAuZ2V0T3JDcmVhdGVOUE9iamVjdChwbHVn
aW5Xb3JsZCgpLnZtKCksIGZyYW1lKCktPndpbmRvd1Byb3h5Q29udHJvbGxlcigpLndpbmRvd1By
b3h5KHBsdWdpbldvcmxkKCkpLndpbmRvdygpKTsKIH0KIAogTlBPYmplY3QqIFBsdWdpblZpZXc6
OnBsdWdpbkVsZW1lbnROUE9iamVjdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNl
UHJveHkubW0KaW5kZXggNmYyZDI1OWY1OWQwNDEwYTVlNDc3NDQ2ZjU0OTcwMjM2MzU0MmVkOS4u
YjMwZWQyMjQ1ZTE1NzM0NjQ3YjNlNDI2NTQ5MGUxNWQwOWY0MGExZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5j
ZVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05l
dHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQpAQCAtODM5LDcgKzgzOSw3IEBAIGJvb2wgTmV0
c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpnZXRXaW5kb3dOUE9iamVjdCh1aW50MzJfdCYgb2Jq
ZWN0SUQpCiAgICAgaWYgKCFmcmFtZS0+c2NyaXB0KCkuY2FuRXhlY3V0ZVNjcmlwdHMoTm90QWJv
dXRUb0V4ZWN1dGVTY3JpcHQpKQogICAgICAgICBvYmplY3RJRCA9IDA7CiAgICAgZWxzZQotICAg
ICAgICBvYmplY3RJRCA9IG1fbG9jYWxPYmplY3RzLmlkRm9yT2JqZWN0KHBsdWdpbldvcmxkKCku
dm0oKSwgZnJhbWUtPnNjcmlwdCgpLndpbmRvd1Byb3h5KHBsdWdpbldvcmxkKCkpLT53aW5kb3co
KSk7CisgICAgICAgIG9iamVjdElEID0gbV9sb2NhbE9iamVjdHMuaWRGb3JPYmplY3QocGx1Z2lu
V29ybGQoKS52bSgpLCBmcmFtZS0+d2luZG93UHJveHlDb250cm9sbGVyKCkud2luZG93UHJveHko
cGx1Z2luV29ybGQoKSkud2luZG93KCkpOwogICAgICAgICAKICAgICByZXR1cm4gdHJ1ZTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IGJhOTE2
MmMxYWQ1MTYwMzI3M2NjMDI4MTMzOWY2NzcxZGEzZjNlZTguLjU5YTFjZjEwMzc2NjkxMTEzYWI2
ZGU2NThhMDBiZmZiMDJmNjk2ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJGcmFtZS5tbQpAQCAtMzYwLDE1ICszNjAsMTUgQEAgc3RhdGljIE5TVVJMICpjcmVhdGVV
bmlxdWVXZWJEYXRhVVJMKCk7CiAKIC0gKHZvaWQpX2F0dGFjaFNjcmlwdERlYnVnZ2VyCiB7Ci0g
ICAgU2NyaXB0Q29udHJvbGxlciYgc2NyaXB0Q29udHJvbGxlciA9IF9wcml2YXRlLT5jb3JlRnJh
bWUtPnNjcmlwdCgpOworICAgIGF1dG8mIHdpbmRvd1Byb3h5Q29udHJvbGxlciA9IF9wcml2YXRl
LT5jb3JlRnJhbWUtPndpbmRvd1Byb3h5Q29udHJvbGxlcigpOwogCiAgICAgLy8gQ2FsbGluZyBT
Y3JpcHRDb250cm9sbGVyOjpnbG9iYWxPYmplY3QoKSB3b3VsZCBjcmVhdGUgYSB3aW5kb3cgcHJv
eHksIGFuZCBkaXNwYXRjaCBjb3JyZXNwb25kaW5nIGNhbGxiYWNrcywgd2hpY2ggbWF5IGJlIHBy
ZW1hdHVyZQogICAgIC8vIGlmIHRoZSBzY3JpcHQgZGVidWdnZXIgaXMgYXR0YWNoZWQgYmVmb3Jl
IGEgZG9jdW1lbnQgaXMgY3JlYXRlZC4gIFRoZXNlIGNhbGxzIHVzZSB0aGUgZGVidWdnZXJXb3Js
ZCgpLCB3ZSB3aWxsIG5lZWQgdG8gcGFzcyBhIHdvcmxkCiAgICAgLy8gdG8gYmUgYWJsZSB0byBk
ZWJ1ZyBpc29sYXRlZCB3b3JsZHMuCi0gICAgaWYgKCFzY3JpcHRDb250cm9sbGVyLmV4aXN0aW5n
V2luZG93UHJveHkoZGVidWdnZXJXb3JsZCgpKSkKKyAgICBpZiAoIXdpbmRvd1Byb3h5Q29udHJv
bGxlci5leGlzdGluZ1dpbmRvd1Byb3h5KGRlYnVnZ2VyV29ybGQoKSkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBzY3JpcHRDb250cm9sbGVy
Lmdsb2JhbE9iamVjdChkZWJ1Z2dlcldvcmxkKCkpOworICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9
IHdpbmRvd1Byb3h5Q29udHJvbGxlci5nbG9iYWxPYmplY3QoZGVidWdnZXJXb3JsZCgpKTsKICAg
ICBpZiAoIWdsb2JhbE9iamVjdCkKICAgICAgICAgcmV0dXJuOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>337916</attachid>
            <date>2018-04-13 12:04:09 -0700</date>
            <delta_ts>2018-04-13 14:24:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184591-20180413120408.patch</filename>
            <type>text/plain</type>
            <size>46951</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwNjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA1YzEwMjViZjU2YjFiNmFmODZjYzNh
YWFkNDEyOTdmM2JiMDhjNzUuLjZhYzY5NjE5MDE2NGIzMGY3ZjQ2YmY0NGY1NDk4MzE0OTE0MWI4
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTgtMDQtMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBTcGxpdCBXaW5kb3dQcm94eSBoYW5kbGluZyBvdXQgb2Yg
U2NyaXB0Q29udHJvbGxlciBhbmQgaW50byBhIG5ldyBjbGFzcyBvd25lZCBieSBBYnN0cmFjdEZy
YW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ1
OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
aXNFbXB0eSgpIGNvbnZlbmllbmNlIG1ldGhvZCB0byBTaXplZEl0ZXJhdG9yUmFuZ2UuCisKKyAg
ICAgICAgKiB3dGYvSXRlcmF0b3JSYW5nZS5oOgorICAgICAgICAoV1RGOjpTaXplZEl0ZXJhdG9y
UmFuZ2U6OmlzRW1wdHkgY29uc3QpOgorCiAyMDE4LTA0LTEyICBNaWNoYWVsIENhdGFuemFybyAg
PG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBSZW1vdmUgdW51c2VkIGNyYXNoIGhv
b2sgZnVuY3Rpb25hbGl0eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGE1YjQ3N2E3MmU0Mzk3NDI2NzQxY2E4Mzdk
MDRjMmNmMDMwOWQxNjYuLmViZmFmMjYwM2IxMTc2NWM4MDAyNGM3ZTljY2M4YmM2NDgxODE1MTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3NyBAQAorMjAxOC0wNC0xMyAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFNwbGl0IFdpbmRvd1Byb3h5IGhhbmRsaW5nIG91
dCBvZiBTY3JpcHRDb250cm9sbGVyIGFuZCBpbnRvIGEgbmV3IGNsYXNzIG93bmVkIGJ5IEFic3Ry
YWN0RnJhbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4NDU5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFNwbGl0IFdpbmRvd1Byb3h5IGhhbmRsaW5nIG91dCBvZiBTY3JpcHRDb250cm9sbGVyIGFuZCBp
bnRvIGEgbmV3IGNsYXNzIG93bmVkIGJ5IEFic3RyYWN0RnJhbWUuCisgICAgICAgIFJlbW90ZUZy
YW1lcyBkbyBub3QgbmVlZCBhIFNjcmlwdENvbnRyb2xsZXIgYnV0IGRvIG5lZWQgdG8gbWFpbnRh
aW4gV2luZG93UHJveGllcy4KKyAgICAgICAgVGhpcyBpcyB3b3JrIHRvd2FyZHMgZml4aW5nIEJ1
ZyAxODQ1MTUuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvRE9NV3JhcHBl
cldvcmxkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZDo6fkRPTVdyYXBw
ZXJXb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpET01XcmFwcGVyV29ybGQ6OmNsZWFyV3JhcHBl
cnMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5oOgorICAgICAgICAo
V2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkOjpkaWRDcmVhdGVXaW5kb3dQcm94eSk6CisgICAgICAg
IChXZWJDb3JlOjpET01XcmFwcGVyV29ybGQ6OmRpZERlc3Ryb3lXaW5kb3dQcm94eSk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9KU0RPTVdp
bmRvdyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dQcm94eS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNET01XaW5kb3dQcm94
eSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdENhY2hlZEZyYW1lRGF0YTo6U2NyaXB0Q2FjaGVkRnJhbWVE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENhY2hlZEZyYW1lRGF0YTo6cmVzdG9yZSk6
CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjp+U2NyaXB0Q29udHJvbGxlcik6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGQpOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0Q29udHJvbGxlcjo6bG9hZE1vZHVsZVNjcmlwdEluV29ybGQpOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6bGlua0FuZEV2YWx1YXRlTW9kdWxlU2NyaXB0
SW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZU1v
ZHVsZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpjbGVhcldpbmRvd1By
b3hpZXNOb3RNYXRjaGluZ0RPTVdpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250
cm9sbGVyOjpzZXRET01XaW5kb3dGb3JXaW5kb3dQcm94eSk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0Rm9yV2luZG93UHJveHkpOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0Q29udHJvbGxlcjo6c2V0dXBNb2R1bGVTY3JpcHRIYW5kbGVycyk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjp3aW5kb3dQcm94eUNvbnRyb2xsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZW5hYmxlRXZhbCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjplbmFibGVXZWJBc3NlbWJseSk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpkaXNhYmxlRXZhbCk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRDb250cm9sbGVyOjpkaXNhYmxlV2ViQXNzZW1ibHkpOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0Q29udHJvbGxlcjo6YXR0YWNoRGVidWdnZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0Q29udHJvbGxlcjo6dXBkYXRlRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0Q29udHJvbGxlcjo6Y29sbGVjdElzb2xhdGVkQ29udGV4dHMpOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0Q29udHJvbGxlcjo6d2luZG93U2NyaXB0TlBPYmplY3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZUlmSmF2YVNjcmlwdFVSTCk6CisgICAg
ICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0Q29udHJvbGxlcjo6Z2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9T
Y3JpcHRDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxl
cjo6d2luZG93U2NyaXB0T2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTdGF0
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYWluV29ybGRFeGVjU3RhdGUpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL1dpbmRvd1Byb3h5Q29udHJvbGxlci5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6V2luZG93UHJveHlDb250cm9sbGVyOjpXaW5kb3dQcm94eUNvbnRyb2xsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6V2luZG93UHJveHlDb250cm9sbGVyOjpkZXN0cm95V2luZG93UHJv
eHkpOgorICAgICAgICAoV2ViQ29yZTo6V2luZG93UHJveHlDb250cm9sbGVyOjpjcmVhdGVXaW5k
b3dQcm94eSk6CisgICAgICAgIChXZWJDb3JlOjpXaW5kb3dQcm94eUNvbnRyb2xsZXI6OndpbmRv
d1Byb3hpZXMpOgorICAgICAgICAoV2ViQ29yZTo6V2luZG93UHJveHlDb250cm9sbGVyOjpjcmVh
dGVXaW5kb3dQcm94eVdpdGhJbml0aWFsaXplZFNjcmlwdCk6CisgICAgICAgICogYmluZGluZ3Mv
anMvV2luZG93UHJveHlDb250cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V2lu
ZG93UHJveHlDb250cm9sbGVyOjpyZWxlYXNlV2luZG93UHJveGllcyk6CisgICAgICAgIChXZWJD
b3JlOjpXaW5kb3dQcm94eUNvbnRyb2xsZXI6OnNldFdpbmRvd1Byb3hpZXMpOgorICAgICAgICAo
V2ViQ29yZTo6V2luZG93UHJveHlDb250cm9sbGVyOjp3aW5kb3dQcm94eSk6CisgICAgICAgIChX
ZWJDb3JlOjpXaW5kb3dQcm94eUNvbnRyb2xsZXI6OmV4aXN0aW5nV2luZG93UHJveHkgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6V2luZG93UHJveHlDb250cm9sbGVyOjpnbG9iYWxPYmplY3Qp
OgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlcjo6ZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQpOgorICAgICAg
ICAqIHBhZ2UvQWJzdHJhY3RGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBYnN0cmFjdEZy
YW1lOjpBYnN0cmFjdEZyYW1lKToKKyAgICAgICAgKiBwYWdlL0Fic3RyYWN0RnJhbWUuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFic3RyYWN0RnJhbWU6OndpbmRvd1Byb3h5Q29udHJvbGxlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpBYnN0cmFjdEZyYW1lOjp3aW5kb3dQcm94eUNvbnRyb2xsZXIgY29u
c3QpOgorCiAyMDE4LTA0LTEzICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtXZWJWUl1bT3BlblZSXSBJbXBsZW1lbnQgcmVxdWVzdFByZXNlbnQo
KS9leGl0UHJlc2VudCgpIGFuZCBnZXRMYXllcnMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiYmM3ZGMzNmYzNThm
NTVjMGY5OTkwZmVmMTkyZGNhODk4MDBlMDUwLi5lZDE0MzM3NzhlNWI3NTEyYjg0M2NiODcxZDdh
YmUzNTE1OGZhZTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE4LTA0LTEzICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU3BsaXQgV2luZG93UHJveHkg
aGFuZGxpbmcgb3V0IG9mIFNjcmlwdENvbnRyb2xsZXIgYW5kIGludG8gYSBuZXcgY2xhc3Mgb3du
ZWQgYnkgQWJzdHJhY3RGcmFtZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTg0NTkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgU3BsaXQgV2luZG93UHJveHkgaGFuZGxpbmcgb3V0IG9mIFNjcmlwdENvbnRy
b2xsZXIgYW5kIGludG8gYSBuZXcgY2xhc3Mgb3duZWQgYnkgQWJzdHJhY3RGcmFtZS4KKyAgICAg
ICAgUmVtb3RlRnJhbWVzIGRvIG5vdCBuZWVkIGEgU2NyaXB0Q29udHJvbGxlciBidXQgZG8gbmVl
ZCB0byBtYWludGFpbiBXaW5kb3dQcm94aWVzLgorICAgICAgICBUaGlzIGlzIHdvcmsgdG93YXJk
cyBmaXhpbmcgQnVnIDE4NDUxNS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6d2luZG93U2NyaXB0TlBP
YmplY3QpOgorCiAyMDE4LTA0LTEzICBYYWJpZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlz
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dTdHJlYW1lcl0gQ29udmVydCBHU3RyZWFtZXJVdGls
aXRpZXMgaW4gR1N0cmVhbWVyQ29tbW9uIGFuZCBpbmNsdWRlIHRoZSBHU3RyZWFtZXIgc21hcnQg
cG9pbnRlciB0cmFpdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBjNzBmOTY2NGU5
YTY1MDNlNWFmNGRmN2NjNzBiYzFkNjNkMzc3Njc0Li45OGNhNzhjNzBiNmFhMzljMDg0ZmQyODYx
NTk0MWUyNjIwNWM2ZGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTkgQEAKKzIwMTgtMDQtMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAg
ICAgICBTcGxpdCBXaW5kb3dQcm94eSBoYW5kbGluZyBvdXQgb2YgU2NyaXB0Q29udHJvbGxlciBh
bmQgaW50byBhIG5ldyBjbGFzcyBvd25lZCBieSBBYnN0cmFjdEZyYW1lCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ1OTEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTcGxpdCBXaW5kb3dQcm94eSBoYW5k
bGluZyBvdXQgb2YgU2NyaXB0Q29udHJvbGxlciBhbmQgaW50byBhIG5ldyBjbGFzcyBvd25lZCBi
eSBBYnN0cmFjdEZyYW1lLgorICAgICAgICBSZW1vdGVGcmFtZXMgZG8gbm90IG5lZWQgYSBTY3Jp
cHRDb250cm9sbGVyIGJ1dCBkbyBuZWVkIHRvIG1haW50YWluIFdpbmRvd1Byb3hpZXMuCisgICAg
ICAgIFRoaXMgaXMgd29yayB0b3dhcmRzIGZpeGluZyBCdWcgMTg0NTE1LgorCisgICAgICAgICog
UGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tOgorICAgICAgICAo
V2ViS2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmdldFdpbmRvd05QT2JqZWN0KToK
KyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBfYXR0
YWNoU2NyaXB0RGVidWdnZXJdKToKKwogMjAxOC0wNC0wNSAgWXVzdWtlIFN1enVraSAgPHV0YXRh
bmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBbV1RGXSBSZW1vdmUgU3RhdGljTG9jawpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvSXRlcmF0b3JSYW5nZS5oIGIvU291cmNlL1dURi93dGYv
SXRlcmF0b3JSYW5nZS5oCmluZGV4IDdlMTFkNTg3OGZmNWE3NzA1YWE1YmY4ZDI2ZDIwNWQ4Mzc4
MGNmMzIuLjdjZjA1NjlmNWI1OWU4NDJjMzFkMDdlZDkzOGQ1N2IxNmZmYzZjZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL0l0ZXJhdG9yUmFuZ2UuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9J
dGVyYXRvclJhbmdlLmgKQEAgLTYyLDYgKzYyLDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIGF1
dG8gc2l6ZSgpIGNvbnN0IC0+IGRlY2x0eXBlKHN0ZDo6ZGVjbHZhbDxDb250YWluZXI+KCkuc2l6
ZSgpKSB7IHJldHVybiBtX2NvbnRhaW5lci5zaXplKCk7IH0KKyAgICBib29sIGlzRW1wdHkoKSBj
b25zdCB7IHJldHVybiBtX2NvbnRhaW5lci5pc0VtcHR5KCk7IH0KICAgICBJdGVyYXRvciBiZWdp
bigpIGNvbnN0IHsgcmV0dXJuIG1fYmVnaW47IH0KICAgICBJdGVyYXRvciBlbmQoKSBjb25zdCB7
IHJldHVybiBtX2VuZDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGE0NjE3MTllMmRkZjRiNTY4OThh
N2I2YzQ3YmU0MTc2NWE2NTI1ZTYuLmE1N2JiMmQyZjc1YjI5MTlkZGM5ZDljZmNiYjMxMmVlNzYw
Mzk1OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC00NjgsNiArNDY4LDcgQEAgYmluZGluZ3MvanMvU3Ry
dWN0dXJlZENsb25lLmNwcAogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAog
YmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHAKIGJpbmRpbmdzL2pzL1dlYkNvcmVU
eXBlZEFycmF5Q29udHJvbGxlci5jcHAKK2JpbmRpbmdzL2pzL1dpbmRvd1Byb3h5Q29udHJvbGxl
ci5jcHAKIGJpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCiAKIGJyaWRnZS9J
ZGVudGlmaWVyUmVwLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IGE2YTEzODA2MGY2MmM5ZTFjMTkwZmNlYjJhZTVmOTZhMzA2
OTY3NzQuLmNmNjA1NjcxMmRmZGE1YjNlODg1NzZmMTYwM2IwODgwYjg3YzgxOWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEx
OTEsNiArMTE5MSw3IEBACiAJCTQ2MEJCNjE2MUQwQTFCRjAwMDIyMTgxMiAvKiBCYXNlNjRVdGls
aXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
MEJCNjE0MUQwQTFCRUMwMDIyMTgxMiAvKiBCYXNlNjRVdGlsaXRpZXMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjBDQkYzNjFENEJDRDBFMDA5
MkU4OEUgLyogSlNET01XaW5kb3dQcm9wZXJ0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjBDQkYzNDFENEJDQ0ZFMDA5MkU4OEUgLyogSlNET01X
aW5kb3dQcm9wZXJ0aWVzLmggKi87IH07CiAJCTQ2MjE4QUNCMUY3MkQ2NEUwMDU3NEZCRSAvKiBE
T01IaWdoUmVzVGltZVN0YW1wLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NkUwMTZBRDFGNzJENjFFMDAyODJCMkMgLyogRE9NSGlnaFJlc1RpbWVTdGFt
cC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2
MzUyMUFEMjA4MTA5MkEwMEMyODkyMiAvKiBXaW5kb3dQcm94eUNvbnRyb2xsZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MzUyMUFBMjA4MTA5MEIw
MEMyODkyMiAvKiBXaW5kb3dQcm94eUNvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjNFQjYyMzFCODc4OUUwMDA5NkVENTEgLyog
VGFnQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDYzRUI2MjExQjg3ODlDQjAwOTZFRDUxIC8qIFRhZ0NvbGxlY3Rpb24uaCAqLzsgfTsK
IAkJNDY1MzA3RDAxREI2RUU0ODAwRTQxMzdDIC8qIEpTVUlFdmVudEluaXQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzRTA0NUVGMURBQTEwNEYwMEIw
RDhCOSAvKiBKU1VJRXZlbnRJbml0LmggKi87IH07CiAJCTQ2NjU4REM5MUZBMjRCODcwMEY3REQ1
NCAvKiBTV0NvbnRleHRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NjcyNDEzQjFGQTI0QjE0MDA4OEJENkQgLyogU1dDb250ZXh0TWFuYWdl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC03
NDI1LDYgKzc0MjYsOCBAQAogCQk0NjBDQkYzNDFENEJDQ0ZFMDA5MkU4OEUgLyogSlNET01XaW5k
b3dQcm9wZXJ0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NV2lu
ZG93UHJvcGVydGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjBEMTk0NDFG
Q0UyMUREMDBDM0RCODUgLyogSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGVDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjM0NTkyQjFB
QzIyNzEwMDBFQ0I3MUMgLyogUG93ZXJPYnNlcnZlck1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBQb3dlck9ic2VydmVyTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNDYzNTIxQUEyMDgxMDkwQjAwQzI4OTIyIC8qIFdpbmRvd1Byb3h5Q29u
dHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXaW5kb3dQcm94eUNv
bnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDYzNTIxQUMyMDgxMDkw
RTAwQzI4OTIyIC8qIFdpbmRvd1Byb3h5Q29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXaW5kb3dQcm94eUNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0NjNFQjYyMDFCODc4OUNCMDA5NkVENTEgLyogVGFnQ29sbGVj
dGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUYWdDb2xsZWN0
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYzRUI2MjExQjg3ODlDQjAw
OTZFRDUxIC8qIFRhZ0NvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVGFnQ29sbGVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjVBOEU3
ODFDOEEyNENFMDBFN0QzRTQgLyogUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzQ29jb2EubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSdW50aW1lQXBwbGljYXRpb25D
aGVja3NDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIzNzA4LDYgKzIz
NzExLDggQEAKIAkJCQlCQzUzRDkxMDExNDMxMENDMDAwRDgxN0UgLyogV2ViQ29yZUpTQ2xpZW50
RGF0YS5oICovLAogCQkJCTBGMDk5RDA2MTdCOTY4QTEwMEZGODRCOSAvKiBXZWJDb3JlVHlwZWRB
cnJheUNvbnRyb2xsZXIuY3BwICovLAogCQkJCTBGMDk5RDA3MTdCOTY4QTEwMEZGODRCOSAvKiBX
ZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIuaCAqLywKKwkJCQk0NjM1MjFBQzIwODEwOTBFMDBD
Mjg5MjIgLyogV2luZG93UHJveHlDb250cm9sbGVyLmNwcCAqLywKKwkJCQk0NjM1MjFBQTIwODEw
OTBCMDBDMjg5MjIgLyogV2luZG93UHJveHlDb250cm9sbGVyLmggKi8sCiAJCQkJRTFBNjQzRkMw
RUMwOTdBMDAwNzc5NjY4IC8qIFdvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwICovLAogCQkJCUUx
QTY0M0YxMEVDMDk3MjUwMDc3OTY2OCAvKiBXb3JrZXJTY3JpcHRDb250cm9sbGVyLmggKi8sCiAJ
CQkpOwpAQCAtMzA2MDgsNiArMzA2MTMsNyBAQAogCQkJCTBGMTVFRDVDMUI3RUM3QzUwMEVEREZF
QiAvKiBXaWxsQ2hhbmdlRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM4MjQzRTkwRDBDRkQ3
NTAwNDYwQzhGIC8qIFdpbmRvd0ZlYXR1cmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3RTk5QUY1
MzBCMTM4NDY0NjhGQjAxQTUgLyogV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk0NjM1MjFBRDIwODEwOTJBMDBDMjg5MjIgLyogV2luZG93UHJveHlDb250
cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUUxQkYwMDExNUZGNkZCMDA2RjUyQ0EgLyog
V2luZG93c0tleWJvYXJkQ29kZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUwMUJBQUE5MTM5NTBF
MkMwMEY3QUNFQiAvKiBXaW5kUnVsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE0ODMyQkUxODdG
NjRDQzAwREE2M0E2IC8qIFdLQ29udGVudE9ic2VydmF0aW9uLmggaW4gSGVhZGVycyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQuY3BwCmluZGV4IDFl
MWYxN2I4N2I4OWYzM2ZhNmI0ODM3NmEyNGVjYzVlZjJiMjAyMTQuLmMwM2UzMDk3MTU2YWFjMmZl
MTYxMjQ4MGQ2YWE5ZDQ1Y2M1NDEzYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvRE9NV3JhcHBlcldvcmxkLmNwcApAQCAtMjMsOCArMjMsOCBAQAogCiAjaW5jbHVkZSAiQ29t
bW9uVk0uaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgotI2luY2x1ZGUgIlNjcmlwdENvbnRy
b2xsZXIuaCIKICNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCisjaW5jbHVkZSAiV2lu
ZG93UHJveHlDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIAogCkBA
IC00Nyw4ICs0Nyw4IEBAIERPTVdyYXBwZXJXb3JsZDo6fkRPTVdyYXBwZXJXb3JsZCgpCiAgICAg
c3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPihjbGllbnREYXRhKS0+Zm9yZ2V0V29ybGQoKnRo
aXMpOwogCiAgICAgLy8gVGhlc2UgaXRlbXMgYXJlIGNyZWF0ZWQgbGF6aWx5LgotICAgIHdoaWxl
ICghbV9zY3JpcHRDb250cm9sbGVyc1dpdGhXaW5kb3dQcm94aWVzLmlzRW1wdHkoKSkKLSAgICAg
ICAgKCptX3NjcmlwdENvbnRyb2xsZXJzV2l0aFdpbmRvd1Byb3hpZXMuYmVnaW4oKSktPmRlc3Ry
b3lXaW5kb3dQcm94eSgqdGhpcyk7CisgICAgd2hpbGUgKCFtX3dpbmRvd1Byb3h5Q29udHJvbGxl
cnMuaXNFbXB0eSgpKQorICAgICAgICAoKm1fd2luZG93UHJveHlDb250cm9sbGVycy5iZWdpbigp
KS0+ZGVzdHJveVdpbmRvd1Byb3h5KCp0aGlzKTsKIH0KIAogdm9pZCBET01XcmFwcGVyV29ybGQ6
OmNsZWFyV3JhcHBlcnMoKQpAQCAtNTYsOCArNTYsOCBAQCB2b2lkIERPTVdyYXBwZXJXb3JsZDo6
Y2xlYXJXcmFwcGVycygpCiAgICAgbV93cmFwcGVycy5jbGVhcigpOwogCiAgICAgLy8gVGhlc2Ug
aXRlbXMgYXJlIGNyZWF0ZWQgbGF6aWx5LgotICAgIHdoaWxlICghbV9zY3JpcHRDb250cm9sbGVy
c1dpdGhXaW5kb3dQcm94aWVzLmlzRW1wdHkoKSkKLSAgICAgICAgKCptX3NjcmlwdENvbnRyb2xs
ZXJzV2l0aFdpbmRvd1Byb3hpZXMuYmVnaW4oKSktPmRlc3Ryb3lXaW5kb3dQcm94eSgqdGhpcyk7
CisgICAgd2hpbGUgKCFtX3dpbmRvd1Byb3h5Q29udHJvbGxlcnMuaXNFbXB0eSgpKQorICAgICAg
ICAoKm1fd2luZG93UHJveHlDb250cm9sbGVycy5iZWdpbigpKS0+ZGVzdHJveVdpbmRvd1Byb3h5
KCp0aGlzKTsKIH0KIAogRE9NV3JhcHBlcldvcmxkJiBub3JtYWxXb3JsZChKU0M6OlZNJiB2bSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NV3JhcHBlcldvcmxkLmgKaW5kZXggZTBh
Y2I4MjZhMTY1MDg2MmI4MDMxZTM1ZTc4YWVkMzBkYmZkODM4MS4uM2M2MmFhOWQ0ZjU0NzBhNDBh
NmViZDZiNjBiY2ViYzdiOGEzODkwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvRE9NV3JhcHBlcldvcmxkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
RE9NV3JhcHBlcldvcmxkLmgKQEAgLTI2LDcgKzI2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBTY3JpcHRDb250cm9sbGVyOworY2xhc3MgV2luZG93UHJveHlDb250cm9sbGVy
OwogCiB0eXBlZGVmIEhhc2hNYXA8dm9pZCosIEpTQzo6V2VhazxKU0M6OkpTT2JqZWN0Pj4gRE9N
T2JqZWN0V3JhcHBlck1hcDsKIApAQCAtNDEsOCArNDEsOCBAQCBwdWJsaWM6CiAgICAgLy8gRnJl
ZSBhcyBtdWNoIG1lbW9yeSBoZWxkIG9udG8gYnkgdGhpcyB3b3JsZCBhcyBwb3NzaWJsZS4KICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyV3JhcHBlcnMoKTsKIAotICAgIHZvaWQgZGlkQ3Jl
YXRlV2luZG93UHJveHkoU2NyaXB0Q29udHJvbGxlciogc2NyaXB0Q29udHJvbGxlcikgeyBtX3Nj
cmlwdENvbnRyb2xsZXJzV2l0aFdpbmRvd1Byb3hpZXMuYWRkKHNjcmlwdENvbnRyb2xsZXIpOyB9
Ci0gICAgdm9pZCBkaWREZXN0cm95V2luZG93UHJveHkoU2NyaXB0Q29udHJvbGxlciogc2NyaXB0
Q29udHJvbGxlcikgeyBtX3NjcmlwdENvbnRyb2xsZXJzV2l0aFdpbmRvd1Byb3hpZXMucmVtb3Zl
KHNjcmlwdENvbnRyb2xsZXIpOyB9CisgICAgdm9pZCBkaWRDcmVhdGVXaW5kb3dQcm94eShXaW5k
b3dQcm94eUNvbnRyb2xsZXIqIGNvbnRyb2xsZXIpIHsgbV93aW5kb3dQcm94eUNvbnRyb2xsZXJz
LmFkZChjb250cm9sbGVyKTsgfQorICAgIHZvaWQgZGlkRGVzdHJveVdpbmRvd1Byb3h5KFdpbmRv
d1Byb3h5Q29udHJvbGxlciogY29udHJvbGxlcikgeyBtX3dpbmRvd1Byb3h5Q29udHJvbGxlcnMu
cmVtb3ZlKGNvbnRyb2xsZXIpOyB9CiAKICAgICB2b2lkIHNldFNoYWRvd1Jvb3RJc0Fsd2F5c09w
ZW4oKSB7IG1fc2hhZG93Um9vdElzQWx3YXlzT3BlbiA9IHRydWU7IH0KICAgICBib29sIHNoYWRv
d1Jvb3RJc0Fsd2F5c09wZW4oKSBjb25zdCB7IHJldHVybiBtX3NoYWRvd1Jvb3RJc0Fsd2F5c09w
ZW47IH0KQEAgLTYxLDcgKzYxLDcgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIEpTQzo6
Vk0mIG1fdm07Ci0gICAgSGFzaFNldDxTY3JpcHRDb250cm9sbGVyKj4gbV9zY3JpcHRDb250cm9s
bGVyc1dpdGhXaW5kb3dQcm94aWVzOworICAgIEhhc2hTZXQ8V2luZG93UHJveHlDb250cm9sbGVy
Kj4gbV93aW5kb3dQcm94eUNvbnRyb2xsZXJzOwogICAgIERPTU9iamVjdFdyYXBwZXJNYXAgbV93
cmFwcGVyczsKIAogICAgIGJvb2wgbV9pc05vcm1hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCmluZGV4IDQ4YzUzZTJjZDJlZDJiNGZj
MzNiNDUxYWRjY2YyMzZkMmExMTY5ZGYuLmNjNWNlNjMxOTBiMTNiNzFmMjMzNWE4NDIzMjNhYTE4
ZjA1NTA0NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGlu
Z3NBbGxJbk9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5n
c0FsbEluT25lLmNwcApAQCAtMTA5LDQgKzEwOSw1IEBACiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUu
Y3BwIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAiCiAjaW5jbHVkZSAiV2Vi
Q29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmNwcCIKKyNpbmNsdWRlICJXaW5kb3dQcm94eUNvbnRy
b2xsZXIuY3BwIgogI2luY2x1ZGUgIldvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKaW5kZXggMjJiYzQz
NTBiNzVlZjIxZDI0OGJmZGNhOGRhNzIzYTkxZGVmYjRkNi4uNmZhNmU3ZDVhNGUxYWIzNmQ0MGYz
NzUwYzQyYjRkMGQ0YzY1MjUxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0Jhc2UuY3BwCkBAIC0yNjcsNyArMjY3LDcgQEAgSlNWYWx1ZSB0b0pTKEV4ZWNT
dGF0ZSogc3RhdGUsIERPTVdpbmRvdyYgZG9tV2luZG93KQogCiBKU0RPTVdpbmRvdyogdG9KU0RP
TVdpbmRvdyhGcmFtZSYgZnJhbWUsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCiB7Ci0gICAgcmV0
dXJuIGZyYW1lLnNjcmlwdCgpLndpbmRvd1Byb3h5KHdvcmxkKS0+d2luZG93KCk7CisgICAgcmV0
dXJuIGZyYW1lLnNjcmlwdCgpLmdsb2JhbE9iamVjdCh3b3JsZCk7CiB9CiAKIEpTRE9NV2luZG93
KiB0b0pTRE9NV2luZG93KEpTQzo6Vk0mIHZtLCBKU1ZhbHVlIHZhbHVlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1Byb3h5LmNwcAppbmRleCA0ODc1MTNhYTM1
MTgzNjYwNDEzZDNhNjdlYTg0ZGYyNDljZWExYTZlLi44NWYzM2MyYmNiN2MwZDhlOGJkNjYwYzEw
ZDA3MjVmYTlkNjdjM2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd1Byb3h5LmNwcApAQCAtMTE4LDEyICsxMTgsMTIgQEAgRE9NV2luZG93KiBKU0RPTVdp
bmRvd1Byb3h5Ojp0b1dyYXBwZWQoVk0mIHZtLCBKU09iamVjdCogdmFsdWUpCiAKIEpTVmFsdWUg
dG9KUyhFeGVjU3RhdGUqIHN0YXRlLCBGcmFtZSYgZnJhbWUpCiB7Ci0gICAgcmV0dXJuIGZyYW1l
LnNjcmlwdCgpLndpbmRvd1Byb3h5KGN1cnJlbnRXb3JsZCgqc3RhdGUpKTsKKyAgICByZXR1cm4g
JmZyYW1lLndpbmRvd1Byb3h5Q29udHJvbGxlcigpLndpbmRvd1Byb3h5KGN1cnJlbnRXb3JsZCgq
c3RhdGUpKTsKIH0KIAotSlNET01XaW5kb3dQcm94eSogdG9KU0RPTVdpbmRvd1Byb3h5KEZyYW1l
JiBmcmFtZSwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKK0pTRE9NV2luZG93UHJveHkmIHRvSlNE
T01XaW5kb3dQcm94eShGcmFtZSYgZnJhbWUsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCiB7Ci0g
ICAgcmV0dXJuIGZyYW1lLnNjcmlwdCgpLndpbmRvd1Byb3h5KHdvcmxkKTsKKyAgICByZXR1cm4g
ZnJhbWUud2luZG93UHJveHlDb250cm9sbGVyKCkud2luZG93UHJveHkod29ybGQpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd1Byb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd1Byb3h5LmgKaW5kZXggOGI4MWJmYWRjNTdjZDY1ZjBhNDI0ZDNiNGQ4NmExNWNlNGNh
YTMzMS4uNWRiZjBlZGRiMmJkNTVhMjBhMGQ4Mjc1YmViOWMwYWE2NWQ4NTZlMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93UHJveHkuaApAQCAtNjQsNyArNjQs
NyBAQCBwcml2YXRlOgogSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBGcmFtZSYp
OwogaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgRnJhbWUq
IGZyYW1lKSB7IHJldHVybiBmcmFtZSA/IHRvSlMoc3RhdGUsICpmcmFtZSkgOiBKU0M6OmpzTnVs
bCgpOyB9CiAKLUpTRE9NV2luZG93UHJveHkqIHRvSlNET01XaW5kb3dQcm94eShGcmFtZSYsIERP
TVdyYXBwZXJXb3JsZCYpOwotaW5saW5lIEpTRE9NV2luZG93UHJveHkqIHRvSlNET01XaW5kb3dQ
cm94eShGcmFtZSogZnJhbWUsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQpIHsgcmV0dXJuIGZyYW1l
ID8gdG9KU0RPTVdpbmRvd1Byb3h5KCpmcmFtZSwgd29ybGQpIDogbnVsbHB0cjsgfQorSlNET01X
aW5kb3dQcm94eSYgdG9KU0RPTVdpbmRvd1Byb3h5KEZyYW1lJiwgRE9NV3JhcHBlcldvcmxkJik7
CitpbmxpbmUgSlNET01XaW5kb3dQcm94eSogdG9KU0RPTVdpbmRvd1Byb3h5KEZyYW1lKiBmcmFt
ZSwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkgeyByZXR1cm4gZnJhbWUgPyAmdG9KU0RPTVdpbmRv
d1Byb3h5KCpmcmFtZSwgd29ybGQpIDogbnVsbHB0cjsgfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRG
cmFtZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJh
bWVEYXRhLmNwcAppbmRleCAxM2U3OGQ0MzdlMTE3N2ZjOTlmNDBhYTVmMGU5ZjE5MjJjNjRlY2I5
Li40NWQxZTM4NDZiNGZmNGUzZDZlN2M5MjVmNjE0YWQ2YTA5OWJjOGU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHAKQEAg
LTUxLDE1ICs1MSwxMyBAQCBTY3JpcHRDYWNoZWRGcmFtZURhdGE6OlNjcmlwdENhY2hlZEZyYW1l
RGF0YShGcmFtZSYgZnJhbWUpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soY29tbW9uVk0oKSk7
CiAKLSAgICBhdXRvJiBzY3JpcHRDb250cm9sbGVyID0gZnJhbWUuc2NyaXB0KCk7Ci0KLSAgICBm
b3IgKGF1dG8gd2luZG93UHJveHkgOiBzY3JpcHRDb250cm9sbGVyLndpbmRvd1Byb3hpZXMoKSkg
eworICAgIGZvciAoYXV0byB3aW5kb3dQcm94eSA6IGZyYW1lLndpbmRvd1Byb3h5Q29udHJvbGxl
cigpLndpbmRvd1Byb3hpZXNBc1ZlY3RvcigpKSB7CiAgICAgICAgIGF1dG8qIHdpbmRvdyA9IHdp
bmRvd1Byb3h5LT53aW5kb3coKTsKICAgICAgICAgbV93aW5kb3dzLmFkZCgmd2luZG93UHJveHkt
PndvcmxkKCksIFN0cm9uZzxKU0RPTVdpbmRvdz4od2luZG93LT52bSgpLCB3aW5kb3cpKTsKICAg
ICAgICAgd2luZG93LT5zZXRDb25zb2xlQ2xpZW50KG51bGxwdHIpOwogICAgIH0KIAotICAgIHNj
cmlwdENvbnRyb2xsZXIuYXR0YWNoRGVidWdnZXIobnVsbHB0cik7CisgICAgZnJhbWUuc2NyaXB0
KCkuYXR0YWNoRGVidWdnZXIobnVsbHB0cik7CiB9CiAKIFNjcmlwdENhY2hlZEZyYW1lRGF0YTo6
flNjcmlwdENhY2hlZEZyYW1lRGF0YSgpCkBAIC03NCw3ICs3Miw3IEBAIHZvaWQgU2NyaXB0Q2Fj
aGVkRnJhbWVEYXRhOjpyZXN0b3JlKEZyYW1lJiBmcmFtZSkKICAgICBQYWdlKiBwYWdlID0gZnJh
bWUucGFnZSgpOwogICAgIGF1dG8mIHNjcmlwdENvbnRyb2xsZXIgPSBmcmFtZS5zY3JpcHQoKTsK
IAotICAgIGZvciAoYXV0byB3aW5kb3dQcm94eSA6IHNjcmlwdENvbnRyb2xsZXIud2luZG93UHJv
eGllcygpKSB7CisgICAgZm9yIChhdXRvIHdpbmRvd1Byb3h5IDogZnJhbWUud2luZG93UHJveHlD
b250cm9sbGVyKCkud2luZG93UHJveGllc0FzVmVjdG9yKCkpIHsKICAgICAgICAgYXV0byogd29y
bGQgPSAmd2luZG93UHJveHktPndvcmxkKCk7CiAKICAgICAgICAgaWYgKGF1dG8qIHdpbmRvdyA9
IG1fd2luZG93cy5nZXQod29ybGQpLmdldCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCBjYmQ5ZTcwMmVjY2ZkNjU1MmYzOWZmN2Y4
OWZiMzgzNmE5M2EzOWIzLi5lOTJhY2FhZmM5YjllZmM2YzQ5Y2I2NmI4NDRhNzZhM2NkYzc0ZjNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNw
cApAQCAtMTE3LDM4ICsxMTcsMTcgQEAgU2NyaXB0Q29udHJvbGxlcjo6flNjcmlwdENvbnRyb2xs
ZXIoKQogICAgICAgICBtX2NhY2hlYWJsZUJpbmRpbmdSb290T2JqZWN0ID0gbnVsbHB0cjsKICAg
ICB9CiAKLSAgICAvLyBJdCdzIGxpa2VseSB0aGF0IGRlc3Ryb3lpbmcgbV93aW5kb3dQcm94aWVz
IHdpbGwgY3JlYXRlIGEgbG90IG9mIGdhcmJhZ2UuCi0gICAgaWYgKCFtX3dpbmRvd1Byb3hpZXMu
aXNFbXB0eSgpKSB7Ci0gICAgICAgIHdoaWxlICghbV93aW5kb3dQcm94aWVzLmlzRW1wdHkoKSkg
ewotICAgICAgICAgICAgYXV0byBpdGVyID0gbV93aW5kb3dQcm94aWVzLmJlZ2luKCk7Ci0gICAg
ICAgICAgICBpdGVyLT52YWx1ZS0+d2luZG93KCktPnNldENvbnNvbGVDbGllbnQobnVsbHB0cik7
Ci0gICAgICAgICAgICBkZXN0cm95V2luZG93UHJveHkoKml0ZXItPmtleSk7CisgICAgLy8gSXQn
cyBsaWtlbHkgdGhhdCBkZXN0cm95aW5nIHdpbmRvd1Byb3hpZXMgd2lsbCBjcmVhdGUgYSBsb3Qg
b2YgZ2FyYmFnZS4KKyAgICBpZiAoIXdpbmRvd1Byb3h5Q29udHJvbGxlcigpLndpbmRvd1Byb3hp
ZXMoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgd2hpbGUgKCF3aW5kb3dQcm94eUNvbnRyb2xsZXIo
KS53aW5kb3dQcm94aWVzKCkuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBhdXRvIHdpbmRvd1By
b3h5ID0gKndpbmRvd1Byb3h5Q29udHJvbGxlcigpLndpbmRvd1Byb3hpZXMoKS5iZWdpbigpOwor
ICAgICAgICAgICAgd2luZG93UHJveHkuZ2V0KCktPndpbmRvdygpLT5zZXRDb25zb2xlQ2xpZW50
KG51bGxwdHIpOworICAgICAgICAgICAgd2luZG93UHJveHlDb250cm9sbGVyKCkuZGVzdHJveVdp
bmRvd1Byb3h5KHdpbmRvd1Byb3h5LmdldCgpLT53b3JsZCgpKTsKICAgICAgICAgfQogICAgICAg
ICBjb2xsZWN0R2FyYmFnZUFmdGVyV2luZG93UHJveHlEZXN0cnVjdGlvbigpOwogICAgIH0KIH0K
IAotdm9pZCBTY3JpcHRDb250cm9sbGVyOjpkZXN0cm95V2luZG93UHJveHkoRE9NV3JhcHBlcldv
cmxkJiB3b3JsZCkKLXsKLSAgICBBU1NFUlQobV93aW5kb3dQcm94aWVzLmNvbnRhaW5zKCZ3b3Js
ZCkpOwotICAgIG1fd2luZG93UHJveGllcy5yZW1vdmUoJndvcmxkKTsKLSAgICB3b3JsZC5kaWRE
ZXN0cm95V2luZG93UHJveHkodGhpcyk7Ci19Ci0KLUpTRE9NV2luZG93UHJveHkmIFNjcmlwdENv
bnRyb2xsZXI6OmNyZWF0ZVdpbmRvd1Byb3h5KERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCi17Ci0g
ICAgQVNTRVJUKCFtX3dpbmRvd1Byb3hpZXMuY29udGFpbnMoJndvcmxkKSk7Ci0gICAgQVNTRVJU
KG1fZnJhbWUuZG9jdW1lbnQoKS0+ZG9tV2luZG93KCkpOwotCi0gICAgVk0mIHZtID0gd29ybGQu
dm0oKTsKLQotICAgIFN0cm9uZzxKU0RPTVdpbmRvd1Byb3h5PiB3aW5kb3dQcm94eSh2bSwgJkpT
RE9NV2luZG93UHJveHk6OmNyZWF0ZSh2bSwgKm1fZnJhbWUuZG9jdW1lbnQoKS0+ZG9tV2luZG93
KCksIHdvcmxkKSk7Ci0gICAgU3Ryb25nPEpTRE9NV2luZG93UHJveHk+IHdpbmRvd1Byb3h5Mih3
aW5kb3dQcm94eSk7Ci0gICAgbV93aW5kb3dQcm94aWVzLmFkZCgmd29ybGQsIHdpbmRvd1Byb3h5
KTsKLSAgICB3b3JsZC5kaWRDcmVhdGVXaW5kb3dQcm94eSh0aGlzKTsKLSAgICByZXR1cm4gKndp
bmRvd1Byb3h5LmdldCgpOwotfQotCiBKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRl
SW5Xb3JsZChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBET01XcmFwcGVyV29y
bGQmIHdvcmxkLCBFeGNlcHRpb25EZXRhaWxzKiBleGNlcHRpb25EZXRhaWxzKQogewogICAgIEpT
TG9ja0hvbGRlciBsb2NrKHdvcmxkLnZtKCkpOwpAQCAtMTYzLDcgKzE0Miw3IEBAIEpTVmFsdWUg
U2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbldvcmxkKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUm
IHNvdXJjZUNvZGUsIERPCiAgICAgLy8gYW5kIGZhbHNlIGZvciA8c2NyaXB0PmRvU29tZXRoaW5n
KCk8L3NjcmlwdD4uIENoZWNrIGlmIGl0IGhhcyB0aGUKICAgICAvLyBleHBlY3RlZCB2YWx1ZSBp
biBhbGwgY2FzZXMuCiAgICAgLy8gU2VlIHNtYXJ0IHdpbmRvdy5vcGVuIHBvbGljeSBmb3Igd2hl
cmUgdGhpcyBpcyB1c2VkLgotICAgIGF1dG8mIHByb3h5ID0gKndpbmRvd1Byb3h5KHdvcmxkKTsK
KyAgICBhdXRvJiBwcm94eSA9IHdpbmRvd1Byb3h5Q29udHJvbGxlcigpLndpbmRvd1Byb3h5KHdv
cmxkKTsKICAgICBhdXRvJiBleGVjID0gKnByb3h5LndpbmRvdygpLT5nbG9iYWxFeGVjKCk7CiAg
ICAgY29uc3QgU3RyaW5nKiBzYXZlZFNvdXJjZVVSTCA9IG1fc291cmNlVVJMOwogICAgIG1fc291
cmNlVVJMID0gJnNvdXJjZVVSTDsKQEAgLTE5Niw3ICsxNzUsNyBAQCB2b2lkIFNjcmlwdENvbnRy
b2xsZXI6OmxvYWRNb2R1bGVTY3JpcHRJbldvcmxkKExvYWRhYmxlTW9kdWxlU2NyaXB0JiBtb2R1
bGVTY3JpcAogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKHdvcmxkLnZtKCkpOwogCi0gICAgYXV0
byYgcHJveHkgPSAqd2luZG93UHJveHkod29ybGQpOworICAgIGF1dG8mIHByb3h5ID0gd2luZG93
UHJveHlDb250cm9sbGVyKCkud2luZG93UHJveHkod29ybGQpOwogICAgIGF1dG8mIHN0YXRlID0g
KnByb3h5LndpbmRvdygpLT5nbG9iYWxFeGVjKCk7CiAKICAgICBhdXRvJiBwcm9taXNlID0gSlNN
YWluVGhyZWFkRXhlY1N0YXRlOjpsb2FkTW9kdWxlKHN0YXRlLCBtb2R1bGVOYW1lLCBKU0M6OkpT
U2NyaXB0RmV0Y2hQYXJhbWV0ZXJzOjpjcmVhdGUoc3RhdGUudm0oKSwgV1RGTW92ZSh0b3BMZXZl
bEZldGNoUGFyYW1ldGVycykpLCBKU0M6OkpTU2NyaXB0RmV0Y2hlcjo6Y3JlYXRlKHN0YXRlLnZt
KCksIHsgJm1vZHVsZVNjcmlwdCB9KSk7CkBAIC0yMTIsNyArMTkxLDcgQEAgdm9pZCBTY3JpcHRD
b250cm9sbGVyOjpsb2FkTW9kdWxlU2NyaXB0SW5Xb3JsZChMb2FkYWJsZU1vZHVsZVNjcmlwdCYg
bW9kdWxlU2NyaXAKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh3b3JsZC52bSgpKTsKIAotICAg
IGF1dG8mIHByb3h5ID0gKndpbmRvd1Byb3h5KHdvcmxkKTsKKyAgICBhdXRvJiBwcm94eSA9IHdp
bmRvd1Byb3h5Q29udHJvbGxlcigpLndpbmRvd1Byb3h5KHdvcmxkKTsKICAgICBhdXRvJiBzdGF0
ZSA9ICpwcm94eS53aW5kb3coKS0+Z2xvYmFsRXhlYygpOwogCiAgICAgYXV0byYgcHJvbWlzZSA9
IEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6bG9hZE1vZHVsZShzdGF0ZSwgc291cmNlQ29kZS5qc1Nv
dXJjZUNvZGUoKSwgSlNDOjpKU1NjcmlwdEZldGNoZXI6OmNyZWF0ZShzdGF0ZS52bSgpLCB7ICZt
b2R1bGVTY3JpcHQgfSkpOwpAQCAtMjI4LDcgKzIwNyw3IEBAIEpTQzo6SlNWYWx1ZSBTY3JpcHRD
b250cm9sbGVyOjpsaW5rQW5kRXZhbHVhdGVNb2R1bGVTY3JpcHRJbldvcmxkKExvYWRhYmxlTW9k
dWxlCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sod29ybGQudm0oKSk7CiAKLSAgICBhdXRvJiBw
cm94eSA9ICp3aW5kb3dQcm94eSh3b3JsZCk7CisgICAgYXV0byYgcHJveHkgPSB3aW5kb3dQcm94
eUNvbnRyb2xsZXIoKS53aW5kb3dQcm94eSh3b3JsZCk7CiAgICAgYXV0byYgc3RhdGUgPSAqcHJv
eHkud2luZG93KCktPmdsb2JhbEV4ZWMoKTsKIAogICAgIC8vIEZJWE1FOiBQcmV2ZW50aW5nIEZy
YW1lIGZyb20gYmVpbmcgZGVzdHJveWVkIGlzIGVzc2VudGlhbGx5IHVubmVjZXNzYXJ5LgpAQCAt
MjU3LDcgKzIzNiw3IEBAIEpTQzo6SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZU1v
ZHVsZShjb25zdCBVUkwmIHNvdXJjZVVSTCwgSlNNb2R1bGVSZWNvCiAKICAgICBjb25zdCBhdXRv
JiBqc1NvdXJjZUNvZGUgPSBtb2R1bGVSZWNvcmQuc291cmNlQ29kZSgpOwogCi0gICAgYXV0byYg
cHJveHkgPSAqd2luZG93UHJveHkod29ybGQpOworICAgIGF1dG8mIHByb3h5ID0gd2luZG93UHJv
eHlDb250cm9sbGVyKCkud2luZG93UHJveHkod29ybGQpOwogICAgIGF1dG8mIHN0YXRlID0gKnBy
b3h5LndpbmRvdygpLT5nbG9iYWxFeGVjKCk7CiAgICAgU2V0Rm9yU2NvcGU8Y29uc3QgU3RyaW5n
Kj4gc291cmNlVVJMU2NvcGUobV9zb3VyY2VVUkwsICZzb3VyY2VVUkwuc3RyaW5nKCkpOwogCkBA
IC0yODEsMTEgKzI2MCw2IEBAIFJlZjxET01XcmFwcGVyV29ybGQ+IFNjcmlwdENvbnRyb2xsZXI6
OmNyZWF0ZVdvcmxkKCkKICAgICByZXR1cm4gRE9NV3JhcHBlcldvcmxkOjpjcmVhdGUoY29tbW9u
Vk0oKSk7CiB9CiAKLVZlY3RvcjxKU0M6OlN0cm9uZzxKU0RPTVdpbmRvd1Byb3h5Pj4gU2NyaXB0
Q29udHJvbGxlcjo6d2luZG93UHJveGllcygpCi17Ci0gICAgcmV0dXJuIGNvcHlUb1ZlY3Rvciht
X3dpbmRvd1Byb3hpZXMudmFsdWVzKCkpOwotfQotCiB2b2lkIFNjcmlwdENvbnRyb2xsZXI6Omdl
dEFsbFdvcmxkcyhWZWN0b3I8UmVmPERPTVdyYXBwZXJXb3JsZD4+JiB3b3JsZHMpCiB7CiAgICAg
c3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPihjb21tb25WTSgpLmNsaWVudERhdGEpLT5nZXRB
bGxXb3JsZHMod29ybGRzKTsKQEAgLTI5MywxMyArMjY3LDEzIEBAIHZvaWQgU2NyaXB0Q29udHJv
bGxlcjo6Z2V0QWxsV29ybGRzKFZlY3RvcjxSZWY8RE9NV3JhcHBlcldvcmxkPj4mIHdvcmxkcykK
IAogdm9pZCBTY3JpcHRDb250cm9sbGVyOjpjbGVhcldpbmRvd1Byb3hpZXNOb3RNYXRjaGluZ0RP
TVdpbmRvdyhET01XaW5kb3cqIG5ld0RPTVdpbmRvdywgYm9vbCBnb2luZ0ludG9QYWdlQ2FjaGUp
CiB7Ci0gICAgaWYgKG1fd2luZG93UHJveGllcy5pc0VtcHR5KCkpCisgICAgaWYgKHdpbmRvd1By
b3h5Q29udHJvbGxlcigpLndpbmRvd1Byb3hpZXMoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIEpTTG9ja0hvbGRlciBsb2NrKGNvbW1vblZNKCkpOwogCi0gICAgZm9yIChhdXRv
JiB3aW5kb3dQcm94eSA6IHdpbmRvd1Byb3hpZXMoKSkgewotICAgICAgICBpZiAoJndpbmRvd1By
b3h5LT53aW5kb3coKS0+d3JhcHBlZCgpID09IG5ld0RPTVdpbmRvdykKKyAgICBmb3IgKGF1dG8m
IHdpbmRvd1Byb3h5IDogd2luZG93UHJveHlDb250cm9sbGVyKCkud2luZG93UHJveGllc0FzVmVj
dG9yKCkpIHsKKyAgICAgICAgaWYgKCZ3aW5kb3dQcm94eS0+d3JhcHBlZCgpID09IG5ld0RPTVdp
bmRvdykKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIC8vIENsZWFyIHRoZSBkZWJ1
Z2dlciBhbmQgY29uc29sZSBmcm9tIHRoZSBjdXJyZW50IHdpbmRvdyBiZWZvcmUgc2V0dGluZyB0
aGUgbmV3IHdpbmRvdy4KQEAgLTMxOCwxMyArMjkyLDEzIEBAIHZvaWQgU2NyaXB0Q29udHJvbGxl
cjo6c2V0RE9NV2luZG93Rm9yV2luZG93UHJveHkoRE9NV2luZG93KiBuZXdET01XaW5kb3cpCiB7
CiAgICAgQVNTRVJUKG5ld0RPTVdpbmRvdyk7CiAKLSAgICBpZiAobV93aW5kb3dQcm94aWVzLmlz
RW1wdHkoKSkKKyAgICBpZiAod2luZG93UHJveHlDb250cm9sbGVyKCkud2luZG93UHJveGllcygp
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIEpTTG9ja0hvbGRlciBsb2Nr
KGNvbW1vblZNKCkpOwogICAgIAotICAgIGZvciAoYXV0byYgd2luZG93UHJveHkgOiB3aW5kb3dQ
cm94aWVzKCkpIHsKLSAgICAgICAgaWYgKCZ3aW5kb3dQcm94eS0+d2luZG93KCktPndyYXBwZWQo
KSA9PSBuZXdET01XaW5kb3cpCisgICAgZm9yIChhdXRvJiB3aW5kb3dQcm94eSA6IHdpbmRvd1By
b3h5Q29udHJvbGxlcigpLndpbmRvd1Byb3hpZXNBc1ZlY3RvcigpKSB7CisgICAgICAgIGlmICgm
d2luZG93UHJveHktPndyYXBwZWQoKSA9PSBuZXdET01XaW5kb3cpCiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgCiAgICAgICAgIHdpbmRvd1Byb3h5LT5zZXRXaW5kb3coKm5ld0RPTVdp
bmRvdyk7CkBAIC0zNDIsMTMgKzMxNiw5IEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6c2V0RE9N
V2luZG93Rm9yV2luZG93UHJveHkoRE9NV2luZG93KiBuZXdET01XaW5kb3cpCiAgICAgfQogfQog
Ci1KU0RPTVdpbmRvd1Byb3h5KiBTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0KERPTVdyYXBw
ZXJXb3JsZCYgd29ybGQpCit2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHRGb3JXaW5k
b3dQcm94eShKU0RPTVdpbmRvd1Byb3h5JiB3aW5kb3dQcm94eSkKIHsKLSAgICBBU1NFUlQoIW1f
d2luZG93UHJveGllcy5jb250YWlucygmd29ybGQpKTsKLQotICAgIEpTTG9ja0hvbGRlciBsb2Nr
KHdvcmxkLnZtKCkpOwotCi0gICAgYXV0byYgd2luZG93UHJveHkgPSBjcmVhdGVXaW5kb3dQcm94
eSh3b3JsZCk7CisgICAgYXV0byYgd29ybGQgPSB3aW5kb3dQcm94eS53b3JsZCgpOwogCiAgICAg
d2luZG93UHJveHkud2luZG93KCktPnVwZGF0ZURvY3VtZW50KCk7CiAKQEAgLTM2Miw4ICszMzIs
NiBAQCBKU0RPTVdpbmRvd1Byb3h5KiBTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0KERPTVdy
YXBwZXJXb3JsZCYgd29ybGQpCiAgICAgfQogCiAgICAgbV9mcmFtZS5sb2FkZXIoKS5kaXNwYXRj
aERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZCh3b3JsZCk7Ci0KLSAgICByZXR1cm4gJndpbmRv
d1Byb3h5OwogfQogCiBzdGF0aWMgSWRlbnRpZmllciBqc1ZhbHVlVG9Nb2R1bGVLZXkoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQpAQCAtMzc2LDcgKzM0NCw3IEBAIHN0YXRpYyBJZGVu
dGlmaWVyIGpzVmFsdWVUb01vZHVsZUtleShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUp
CiAKIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6c2V0dXBNb2R1bGVTY3JpcHRIYW5kbGVycyhMb2Fk
YWJsZU1vZHVsZVNjcmlwdCYgbW9kdWxlU2NyaXB0UmVmLCBKU0ludGVybmFsUHJvbWlzZSYgcHJv
bWlzZSwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKIHsKLSAgICBhdXRvJiBwcm94eSA9ICp3aW5k
b3dQcm94eSh3b3JsZCk7CisgICAgYXV0byYgcHJveHkgPSB3aW5kb3dQcm94eUNvbnRyb2xsZXIo
KS53aW5kb3dQcm94eSh3b3JsZCk7CiAgICAgYXV0byYgc3RhdGUgPSAqcHJveHkud2luZG93KCkt
Pmdsb2JhbEV4ZWMoKTsKIAogICAgIC8vIEl0IGlzIG5vdCBndWFyYW50ZWVkIHRoYXQgZWl0aGVy
IGZ1bGZpbGxIYW5kbGVyIG9yIHJlamVjdEhhbmRsZXIgaXMgZXZlbnR1YWxseSBjYWxsZWQuCkBA
IC00MjgsNiArMzk2LDExIEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6c2V0dXBNb2R1bGVTY3Jp
cHRIYW5kbGVycyhMb2FkYWJsZU1vZHVsZVNjcmlwdCYgbW9kdWxlU2NyCiAgICAgcHJvbWlzZS50
aGVuKCZzdGF0ZSwgJmZ1bGZpbGxIYW5kbGVyLCAmcmVqZWN0SGFuZGxlcik7CiB9CiAKK1dpbmRv
d1Byb3h5Q29udHJvbGxlciYgU2NyaXB0Q29udHJvbGxlcjo6d2luZG93UHJveHlDb250cm9sbGVy
KCkKK3sKKyAgICByZXR1cm4gbV9mcmFtZS53aW5kb3dQcm94eUNvbnRyb2xsZXIoKTsKK30KKwog
VGV4dFBvc2l0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV2ZW50SGFuZGxlclBvc2l0aW9uKCkgY29u
c3QKIHsKICAgICAvLyBGSVhNRTogSWYgd2UgYXJlIG5vdCBjdXJyZW50bHkgcGFyc2luZywgd2Ug
c2hvdWxkIHVzZSBvdXIgY3VycmVudCBsb2NhdGlvbgpAQCAtNDQzLDcgKzQxNiw3IEBAIFRleHRQ
b3NpdGlvbiBTY3JpcHRDb250cm9sbGVyOjpldmVudEhhbmRsZXJQb3NpdGlvbigpIGNvbnN0CiAK
IHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6ZW5hYmxlRXZhbCgpCiB7Ci0gICAgYXV0byogd2luZG93
UHJveHkgPSBleGlzdGluZ1dpbmRvd1Byb3h5KG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKKyAg
ICBhdXRvKiB3aW5kb3dQcm94eSA9IHdpbmRvd1Byb3h5Q29udHJvbGxlcigpLmV4aXN0aW5nV2lu
ZG93UHJveHkobWFpblRocmVhZE5vcm1hbFdvcmxkKCkpOwogICAgIGlmICghd2luZG93UHJveHkp
CiAgICAgICAgIHJldHVybjsKICAgICB3aW5kb3dQcm94eS0+d2luZG93KCktPnNldEV2YWxFbmFi
bGVkKHRydWUpOwpAQCAtNDUxLDcgKzQyNCw3IEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6ZW5h
YmxlRXZhbCgpCiAKIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6ZW5hYmxlV2ViQXNzZW1ibHkoKQog
ewotICAgIGF1dG8qIHdpbmRvd1Byb3h5ID0gZXhpc3RpbmdXaW5kb3dQcm94eShtYWluVGhyZWFk
Tm9ybWFsV29ybGQoKSk7CisgICAgYXV0byogd2luZG93UHJveHkgPSB3aW5kb3dQcm94eUNvbnRy
b2xsZXIoKS5leGlzdGluZ1dpbmRvd1Byb3h5KG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKICAg
ICBpZiAoIXdpbmRvd1Byb3h5KQogICAgICAgICByZXR1cm47CiAgICAgd2luZG93UHJveHktPndp
bmRvdygpLT5zZXRXZWJBc3NlbWJseUVuYWJsZWQodHJ1ZSk7CkBAIC00NTksNyArNDMyLDcgQEAg
dm9pZCBTY3JpcHRDb250cm9sbGVyOjplbmFibGVXZWJBc3NlbWJseSgpCiAKIHZvaWQgU2NyaXB0
Q29udHJvbGxlcjo6ZGlzYWJsZUV2YWwoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiB7Ci0g
ICAgYXV0byogd2luZG93UHJveHkgPSBleGlzdGluZ1dpbmRvd1Byb3h5KG1haW5UaHJlYWROb3Jt
YWxXb3JsZCgpKTsKKyAgICBhdXRvKiB3aW5kb3dQcm94eSA9IHdpbmRvd1Byb3h5Q29udHJvbGxl
cigpLmV4aXN0aW5nV2luZG93UHJveHkobWFpblRocmVhZE5vcm1hbFdvcmxkKCkpOwogICAgIGlm
ICghd2luZG93UHJveHkpCiAgICAgICAgIHJldHVybjsKICAgICB3aW5kb3dQcm94eS0+d2luZG93
KCktPnNldEV2YWxFbmFibGVkKGZhbHNlLCBlcnJvck1lc3NhZ2UpOwpAQCAtNDY3LDcgKzQ0MCw3
IEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6ZGlzYWJsZUV2YWwoY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UpCiAKIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6ZGlzYWJsZVdlYkFzc2VtYmx5KGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQogewotICAgIGF1dG8qIHdpbmRvd1Byb3h5ID0gZXhp
c3RpbmdXaW5kb3dQcm94eShtYWluVGhyZWFkTm9ybWFsV29ybGQoKSk7CisgICAgYXV0byogd2lu
ZG93UHJveHkgPSB3aW5kb3dQcm94eUNvbnRyb2xsZXIoKS5leGlzdGluZ1dpbmRvd1Byb3h5KG1h
aW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKICAgICBpZiAoIXdpbmRvd1Byb3h5KQogICAgICAgICBy
ZXR1cm47CiAgICAgd2luZG93UHJveHktPndpbmRvdygpLT5zZXRXZWJBc3NlbWJseUVuYWJsZWQo
ZmFsc2UsIGVycm9yTWVzc2FnZSk7CkBAIC00ODYsNyArNDU5LDcgQEAgYm9vbCBTY3JpcHRDb250
cm9sbGVyOjpjYW5BY2Nlc3NGcm9tQ3VycmVudE9yaWdpbihGcmFtZSogZnJhbWUpCiAKIHZvaWQg
U2NyaXB0Q29udHJvbGxlcjo6YXR0YWNoRGVidWdnZXIoSlNDOjpEZWJ1Z2dlciogZGVidWdnZXIp
CiB7Ci0gICAgZm9yIChhdXRvJiB3aW5kb3dQcm94eSA6IHdpbmRvd1Byb3hpZXMoKSkKKyAgICBm
b3IgKGF1dG8mIHdpbmRvd1Byb3h5IDogd2luZG93UHJveHlDb250cm9sbGVyKCkud2luZG93UHJv
eGllcygpKQogICAgICAgICBhdHRhY2hEZWJ1Z2dlcih3aW5kb3dQcm94eS5nZXQoKSwgZGVidWdn
ZXIpOwogfQogCkBAIC01MDYsNyArNDc5LDcgQEAgdm9pZCBTY3JpcHRDb250cm9sbGVyOjphdHRh
Y2hEZWJ1Z2dlcihKU0RPTVdpbmRvd1Byb3h5KiBwcm94eSwgSlNDOjpEZWJ1Z2dlciogZGUKIAog
dm9pZCBTY3JpcHRDb250cm9sbGVyOjp1cGRhdGVEb2N1bWVudCgpCiB7Ci0gICAgZm9yIChhdXRv
JiB3aW5kb3dQcm94eSA6IHdpbmRvd1Byb3hpZXMoKSkgeworICAgIGZvciAoYXV0byYgd2luZG93
UHJveHkgOiB3aW5kb3dQcm94eUNvbnRyb2xsZXIoKS53aW5kb3dQcm94aWVzQXNWZWN0b3IoKSkg
ewogICAgICAgICBKU0xvY2tIb2xkZXIgbG9jayh3aW5kb3dQcm94eS0+d29ybGQoKS52bSgpKTsK
ICAgICAgICAgd2luZG93UHJveHktPndpbmRvdygpLT51cGRhdGVEb2N1bWVudCgpOwogICAgIH0K
QEAgLTU1MCw3ICs1MjMsNyBAQCBSZWY8QmluZGluZ3M6OlJvb3RPYmplY3Q+IFNjcmlwdENvbnRy
b2xsZXI6OmNyZWF0ZVJvb3RPYmplY3Qodm9pZCogbmF0aXZlSGFuZGxlKQogCiB2b2lkIFNjcmlw
dENvbnRyb2xsZXI6OmNvbGxlY3RJc29sYXRlZENvbnRleHRzKFZlY3RvcjxzdGQ6OnBhaXI8SlND
OjpFeGVjU3RhdGUqLCBTZWN1cml0eU9yaWdpbio+PiYgcmVzdWx0KQogewotICAgIGZvciAoYXV0
byYgd2luZG93UHJveHkgOiBtX3dpbmRvd1Byb3hpZXMudmFsdWVzKCkpIHsKKyAgICBmb3IgKGF1
dG8mIHdpbmRvd1Byb3h5IDogd2luZG93UHJveHlDb250cm9sbGVyKCkud2luZG93UHJveGllc0Fz
VmVjdG9yKCkpIHsKICAgICAgICAgYXV0byogZXhlYyA9IHdpbmRvd1Byb3h5LT53aW5kb3coKS0+
Z2xvYmFsRXhlYygpOwogICAgICAgICBhdXRvKiBvcmlnaW4gPSAmd2luZG93UHJveHktPndpbmRv
dygpLT53cmFwcGVkKCkuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKTsKICAgICAgICAgcmVz
dWx0LmFwcGVuZChzdGQ6Om1ha2VfcGFpcihleGVjLCBvcmlnaW4pKTsKQEAgLTU2NSw3ICs1Mzgs
NyBAQCBOUE9iamVjdCogU2NyaXB0Q29udHJvbGxlcjo6d2luZG93U2NyaXB0TlBPYmplY3QoKQog
ICAgICAgICBpZiAoY2FuRXhlY3V0ZVNjcmlwdHMoTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQpKSB7
CiAgICAgICAgICAgICAvLyBKYXZhU2NyaXB0IGlzIGVuYWJsZWQsIHNvIHRoZXJlIGlzIGEgSmF2
YVNjcmlwdCB3aW5kb3cgb2JqZWN0LgogICAgICAgICAgICAgLy8gUmV0dXJuIGFuIE5QT2JqZWN0
IGJvdW5kIHRvIHRoZSB3aW5kb3cgb2JqZWN0LgotICAgICAgICAgICAgYXV0byogd2luZG93ID0g
d2luZG93UHJveHkocGx1Z2luV29ybGQoKSktPndpbmRvdygpOworICAgICAgICAgICAgYXV0byog
d2luZG93ID0gd2luZG93UHJveHlDb250cm9sbGVyKCkud2luZG93UHJveHkocGx1Z2luV29ybGQo
KSkud2luZG93KCk7CiAgICAgICAgICAgICBBU1NFUlQod2luZG93KTsKICAgICAgICAgICAgIEJp
bmRpbmdzOjpSb290T2JqZWN0KiByb290ID0gYmluZGluZ1Jvb3RPYmplY3QoKTsKICAgICAgICAg
ICAgIG1fd2luZG93U2NyaXB0TlBPYmplY3QgPSBfTlBOX0NyZWF0ZVNjcmlwdE9iamVjdCgwLCB3
aW5kb3csIHJvb3QpOwpAQCAtNzI2LDcgKzY5OSw3IEBAIGJvb2wgU2NyaXB0Q29udHJvbGxlcjo6
ZXhlY3V0ZUlmSmF2YVNjcmlwdFVSTChjb25zdCBVUkwmIHVybCwgU2hvdWxkUmVwbGFjZURvY3Vt
CiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgU3RyaW5nIHNjcmlwdFJlc3VsdDsKLSAgICBp
ZiAoIXJlc3VsdCB8fCAhcmVzdWx0LmdldFN0cmluZyh3aW5kb3dQcm94eShtYWluVGhyZWFkTm9y
bWFsV29ybGQoKSktPndpbmRvdygpLT5nbG9iYWxFeGVjKCksIHNjcmlwdFJlc3VsdCkpCisgICAg
aWYgKCFyZXN1bHQgfHwgIXJlc3VsdC5nZXRTdHJpbmcod2luZG93UHJveHlDb250cm9sbGVyKCku
d2luZG93UHJveHkobWFpblRocmVhZE5vcm1hbFdvcmxkKCkpLndpbmRvdygpLT5nbG9iYWxFeGVj
KCksIHNjcmlwdFJlc3VsdCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gRklYTUU6
IFdlIHNob3VsZCBhbHdheXMgcmVwbGFjZSB0aGUgZG9jdW1lbnQsIGJ1dCBkb2luZyBzbwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCmluZGV4IDhiNjA4
ODU3ZDYzNDQ5YTZmYWFmZmVmZTI5NGEzZTc1YTBiYTNmYjEuLjUxY2MxNzhjMzc0ZWNhMjI0M2I3
OWZiZThjZDhmYjIyZTYxYjcwMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRDb250cm9sbGVyLmgKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkZyYW1lTG9h
ZGVyVHlwZXMuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvd1Byb3h5LmgiCisjaW5jbHVkZSAiV2lu
ZG93UHJveHlDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNCYXNlLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Ryb25nLmg+CiAjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KQEAgLTcyLDcgKzczLDYgQEAgZW51bSBSZWFzb25Gb3JDYWxsaW5nQ2FuRXhlY3V0ZVNj
cmlwdHMgewogY2xhc3MgU2NyaXB0Q29udHJvbGxlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiAKLSAgICB1c2luZyBQcm94eU1hcCA9IEhhc2hNYXA8UmVmUHRyPERPTVdyYXBwZXJX
b3JsZD4sIEpTQzo6U3Ryb25nPEpTRE9NV2luZG93UHJveHk+PjsKICAgICB1c2luZyBSb290T2Jq
ZWN0TWFwID0gSGFzaE1hcDx2b2lkKiwgUmVmPEpTQzo6QmluZGluZ3M6OlJvb3RPYmplY3Q+PjsK
IAogcHVibGljOgpAQCAtODEsMjQgKzgxLDkgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZjxET01XcmFwcGVyV29ybGQ+IGNyZWF0ZVdvcmxkKCk7CiAKLSAgICBKU0RP
TVdpbmRvd1Byb3h5JiBjcmVhdGVXaW5kb3dQcm94eShET01XcmFwcGVyV29ybGQmKTsKLSAgICB2
b2lkIGRlc3Ryb3lXaW5kb3dQcm94eShET01XcmFwcGVyV29ybGQmKTsKLQotICAgIFZlY3RvcjxK
U0M6OlN0cm9uZzxKU0RPTVdpbmRvd1Byb3h5Pj4gd2luZG93UHJveGllcygpOwotCi0gICAgSlNE
T01XaW5kb3dQcm94eSogd2luZG93UHJveHkoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKLSAgICB7
Ci0gICAgICAgIGF1dG8gaXRlciA9IG1fd2luZG93UHJveGllcy5maW5kKCZ3b3JsZCk7Ci0gICAg
ICAgIHJldHVybiAoaXRlciAhPSBtX3dpbmRvd1Byb3hpZXMuZW5kKCkpID8gaXRlci0+dmFsdWUu
Z2V0KCkgOiBpbml0U2NyaXB0KHdvcmxkKTsKLSAgICB9Ci0gICAgSlNET01XaW5kb3dQcm94eSog
ZXhpc3RpbmdXaW5kb3dQcm94eShET01XcmFwcGVyV29ybGQmIHdvcmxkKSBjb25zdAotICAgIHsK
LSAgICAgICAgYXV0byBpdGVyID0gbV93aW5kb3dQcm94aWVzLmZpbmQoJndvcmxkKTsKLSAgICAg
ICAgcmV0dXJuIChpdGVyICE9IG1fd2luZG93UHJveGllcy5lbmQoKSkgPyBpdGVyLT52YWx1ZS5n
ZXQoKSA6IDA7Ci0gICAgfQogICAgIEpTRE9NV2luZG93KiBnbG9iYWxPYmplY3QoRE9NV3JhcHBl
cldvcmxkJiB3b3JsZCkKICAgICB7Ci0gICAgICAgIHJldHVybiB3aW5kb3dQcm94eSh3b3JsZCkt
PndpbmRvdygpOworICAgICAgICByZXR1cm4gd2luZG93UHJveHlDb250cm9sbGVyKCkud2luZG93
UHJveHkod29ybGQpLndpbmRvdygpOwogICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIGdldEFsbFdv
cmxkcyhWZWN0b3I8UmVmPERPTVdyYXBwZXJXb3JsZD4+Jik7CkBAIC0xNDgsNyArMTMzLDcgQEAg
cHVibGljOgogICAgIGNvbnN0IFN0cmluZyogc291cmNlVVJMKCkgY29uc3QgeyByZXR1cm4gbV9z
b3VyY2VVUkw7IH0gLy8gMCBpZiB3ZSBhcmUgbm90IGV2YWx1YXRpbmcgYW55IHNjcmlwdAogCiAg
ICAgdm9pZCBjbGVhcldpbmRvd1Byb3hpZXNOb3RNYXRjaGluZ0RPTVdpbmRvdyhET01XaW5kb3cq
LCBib29sIGdvaW5nSW50b1BhZ2VDYWNoZSk7Ci0gICAgdm9pZCBzZXRET01XaW5kb3dGb3JXaW5k
b3dQcm94eShET01XaW5kb3cqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldERPTVdpbmRv
d0ZvcldpbmRvd1Byb3h5KERPTVdpbmRvdyopOwogICAgIHZvaWQgdXBkYXRlRG9jdW1lbnQoKTsK
IAogICAgIHZvaWQgbmFtZWRJdGVtQWRkZWQoSFRNTERvY3VtZW50KiwgY29uc3QgQXRvbWljU3Ry
aW5nJikgeyB9CkBAIC0xNzgsMTMgKzE2MywxNSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgTlBPYmplY3QqIHdpbmRvd1NjcmlwdE5QT2JqZWN0KCk7CiAjZW5kaWYKIAorICAgIHZvaWQg
aW5pdFNjcmlwdEZvcldpbmRvd1Byb3h5KEpTRE9NV2luZG93UHJveHkmKTsKKwogcHJpdmF0ZToK
LSAgICBXRUJDT1JFX0VYUE9SVCBKU0RPTVdpbmRvd1Byb3h5KiBpbml0U2NyaXB0KERPTVdyYXBw
ZXJXb3JsZCYpOwogICAgIHZvaWQgc2V0dXBNb2R1bGVTY3JpcHRIYW5kbGVycyhMb2FkYWJsZU1v
ZHVsZVNjcmlwdCYsIEpTQzo6SlNJbnRlcm5hbFByb21pc2UmLCBET01XcmFwcGVyV29ybGQmKTsK
IAogICAgIHZvaWQgZGlzY29ubmVjdFBsYXRmb3JtU2NyaXB0T2JqZWN0cygpOwogCi0gICAgUHJv
eHlNYXAgbV93aW5kb3dQcm94aWVzOworICAgIFdFQkNPUkVfRVhQT1JUIFdpbmRvd1Byb3h5Q29u
dHJvbGxlciYgd2luZG93UHJveHlDb250cm9sbGVyKCk7CisKICAgICBGcmFtZSYgbV9mcmFtZTsK
ICAgICBjb25zdCBTdHJpbmcqIG1fc291cmNlVVJMOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlck1hYy5tbQppbmRleCAxZmYwOTJmZTI4OGIyMjQ3
ODFmZjliMjU5YmMwOGIzMTNmN2YyZWFjLi5iMjZlMTc3MGQ0MDQ5ZmQwNDI4NDdmMTVlYTU1ZjRj
N2NmZjQyM2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRD
b250cm9sbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENv
bnRyb2xsZXJNYWMubW0KQEAgLTEwMyw3ICsxMDMsNyBAQCBXZWJTY3JpcHRPYmplY3QgKlNjcmlw
dENvbnRyb2xsZXI6OndpbmRvd1NjcmlwdE9iamVjdCgpCiAgICAgaWYgKCFtX3dpbmRvd1Njcmlw
dE9iamVjdCkgewogICAgICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKGNvbW1vblZNKCkpOwog
ICAgICAgICBKU0M6OkJpbmRpbmdzOjpSb290T2JqZWN0KiByb290ID0gYmluZGluZ1Jvb3RPYmpl
Y3QoKTsKLSAgICAgICAgbV93aW5kb3dTY3JpcHRPYmplY3QgPSBbV2ViU2NyaXB0T2JqZWN0IHNj
cmlwdE9iamVjdEZvckpTT2JqZWN0OnRvUmVmKHdpbmRvd1Byb3h5KHBsdWdpbldvcmxkKCkpKSBv
cmlnaW5Sb290T2JqZWN0OnJvb3Qgcm9vdE9iamVjdDpyb290XTsKKyAgICAgICAgbV93aW5kb3dT
Y3JpcHRPYmplY3QgPSBbV2ViU2NyaXB0T2JqZWN0IHNjcmlwdE9iamVjdEZvckpTT2JqZWN0OnRv
UmVmKCZ3aW5kb3dQcm94eUNvbnRyb2xsZXIoKS53aW5kb3dQcm94eShwbHVnaW5Xb3JsZCgpKSkg
b3JpZ2luUm9vdE9iamVjdDpyb290IHJvb3RPYmplY3Q6cm9vdF07CiAgICAgfQogCiAgICAgcmV0
dXJuIG1fd2luZG93U2NyaXB0T2JqZWN0LmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0U3RhdGUuY3BwCmluZGV4IDE1YmUyNGRiYjA1MjNjZDMzYTMwYmI1OTZkODBlNmJj
ZTZjMzM3MTUuLjg2NWIxZTFlZDFmOTkwNzhkMzYxNWYwNjQ4YTk1OTBiNTNiOGUyNzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAKQEAgLTc1LDcgKzc1LDcg
QEAgSlNDOjpFeGVjU3RhdGUqIG1haW5Xb3JsZEV4ZWNTdGF0ZShGcmFtZSogZnJhbWUpCiB7CiAg
ICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGZyYW1l
LT5zY3JpcHQoKS53aW5kb3dQcm94eShtYWluVGhyZWFkTm9ybWFsV29ybGQoKSktPndpbmRvdygp
LT5nbG9iYWxFeGVjKCk7CisgICAgcmV0dXJuIGZyYW1lLT53aW5kb3dQcm94eUNvbnRyb2xsZXIo
KS53aW5kb3dQcm94eShtYWluVGhyZWFkTm9ybWFsV29ybGQoKSkud2luZG93KCktPmdsb2JhbEV4
ZWMoKTsKIH0KIAogSlNDOjpFeGVjU3RhdGUqIGV4ZWNTdGF0ZUZyb21Ob2RlKERPTVdyYXBwZXJX
b3JsZCYgd29ybGQsIE5vZGUqIG5vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9XaW5kb3dQcm94eUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvV2luZG93UHJveHlDb250cm9sbGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zM2ZkOThkZmUxN2Jh
OWRlN2JkZWY3Y2ZlOWViNjAwNzNiZWYyYWNmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJveHlDb250cm9sbGVyLmNwcApAQCAtMCwwICsxLDc0
IEBACisvKgorICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9ydGVu
QGtkZS5vcmcpCisgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5j
b20pCisgKiAgQ29weXJpZ2h0IChDKSAyMDA2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg
KiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNl
bnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNv
ZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIldpbmRvd1Byb3h5Q29udHJvbGxlci5oIgorCisjaW5jbHVkZSAiRnJh
bWUuaCIKKyNpbmNsdWRlICJSZW1vdGVGcmFtZS5oIgorI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xs
ZXIuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0xvY2suaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitXaW5kb3dQcm94eUNvbnRyb2xsZXI6OldpbmRvd1Byb3h5Q29udHJvbGxlcihB
YnN0cmFjdEZyYW1lJiBmcmFtZSkKKyAgICA6IG1fZnJhbWUoZnJhbWUpCit7Cit9CisKK3ZvaWQg
V2luZG93UHJveHlDb250cm9sbGVyOjpkZXN0cm95V2luZG93UHJveHkoRE9NV3JhcHBlcldvcmxk
JiB3b3JsZCkKK3sKKyAgICBBU1NFUlQobV93aW5kb3dQcm94aWVzLmNvbnRhaW5zKCZ3b3JsZCkp
OworICAgIG1fd2luZG93UHJveGllcy5yZW1vdmUoJndvcmxkKTsKKyAgICB3b3JsZC5kaWREZXN0
cm95V2luZG93UHJveHkodGhpcyk7Cit9CisKK0pTRE9NV2luZG93UHJveHkmIFdpbmRvd1Byb3h5
Q29udHJvbGxlcjo6Y3JlYXRlV2luZG93UHJveHkoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKK3sK
KyAgICBBU1NFUlQoIW1fd2luZG93UHJveGllcy5jb250YWlucygmd29ybGQpKTsKKyAgICBBU1NF
UlQobV9mcmFtZS53aW5kb3coKSk7CisKKyAgICBWTSYgdm0gPSB3b3JsZC52bSgpOworCisgICAg
Ly8gRklYTUU6IFdlIGRvIG5vdCBzdXBwb3J0IGNvbnN0cnVjdGluZyBhIEpTRE9NV2luZG93UHJv
eHkgZm9yIGEgUmVtb3RlRE9NV2luZG93IHlldC4KKyAgICBSRUxFQVNFX0FTU0VSVChpczxET01X
aW5kb3c+KG1fZnJhbWUud2luZG93KCkpKTsKKworICAgIFN0cm9uZzxKU0RPTVdpbmRvd1Byb3h5
PiB3aW5kb3dQcm94eSh2bSwgJkpTRE9NV2luZG93UHJveHk6OmNyZWF0ZSh2bSwgKmRvd25jYXN0
PERPTVdpbmRvdz4obV9mcmFtZS53aW5kb3coKSksIHdvcmxkKSk7CisgICAgU3Ryb25nPEpTRE9N
V2luZG93UHJveHk+IHdpbmRvd1Byb3h5Mih3aW5kb3dQcm94eSk7CisgICAgbV93aW5kb3dQcm94
aWVzLmFkZCgmd29ybGQsIHdpbmRvd1Byb3h5KTsKKyAgICB3b3JsZC5kaWRDcmVhdGVXaW5kb3dQ
cm94eSh0aGlzKTsKKyAgICByZXR1cm4gKndpbmRvd1Byb3h5LmdldCgpOworfQorCitWZWN0b3I8
SlNDOjpTdHJvbmc8SlNET01XaW5kb3dQcm94eT4+IFdpbmRvd1Byb3h5Q29udHJvbGxlcjo6d2lu
ZG93UHJveGllc0FzVmVjdG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gY29weVRvVmVjdG9yKG1f
d2luZG93UHJveGllcy52YWx1ZXMoKSk7Cit9CisKK0pTRE9NV2luZG93UHJveHkmIFdpbmRvd1By
b3h5Q29udHJvbGxlcjo6Y3JlYXRlV2luZG93UHJveHlXaXRoSW5pdGlhbGl6ZWRTY3JpcHQoRE9N
V3JhcHBlcldvcmxkJiB3b3JsZCkKK3sKKyAgICBKU0xvY2tIb2xkZXIgbG9jayh3b3JsZC52bSgp
KTsKKyAgICBhdXRvJiB3aW5kb3dQcm94eSA9IGNyZWF0ZVdpbmRvd1Byb3h5KHdvcmxkKTsKKyAg
ICBpZiAoaXM8RnJhbWU+KG1fZnJhbWUpKQorICAgICAgICBkb3duY2FzdDxGcmFtZT4obV9mcmFt
ZSkuc2NyaXB0KCkuaW5pdFNjcmlwdEZvcldpbmRvd1Byb3h5KHdpbmRvd1Byb3h5KTsKKyAgICBy
ZXR1cm4gd2luZG93UHJveHk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dpbmRvd1Byb3h5Q29udHJvbGxlci5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJveHlDb250cm9sbGVyLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYjU2ZGM5YmQ1ZTIxOTFhZTQ4NDlhMjM2MTU0NTZkNGViN2QxMDY2MwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dpbmRvd1Byb3h5Q29udHJvbGxl
ci5oCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFy
cmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIg
S2VsbHkgKHBta0Bwb3N0LmNvbSkKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
KiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAg
TGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3Jp
dGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTRE9NV2luZG93UHJveHkuaCIKKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9TdHJvbmcuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEFic3RyYWN0RnJhbWU7CisKK2NsYXNzIFdpbmRv
d1Byb3h5Q29udHJvbGxlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6
CisgICAgdXNpbmcgUHJveHlNYXAgPSBIYXNoTWFwPFJlZlB0cjxET01XcmFwcGVyV29ybGQ+LCBK
U0M6OlN0cm9uZzxKU0RPTVdpbmRvd1Byb3h5Pj47CisKKyAgICBleHBsaWNpdCBXaW5kb3dQcm94
eUNvbnRyb2xsZXIoQWJzdHJhY3RGcmFtZSYpOworCisgICAgdm9pZCBkZXN0cm95V2luZG93UHJv
eHkoRE9NV3JhcHBlcldvcmxkJik7CisKKyAgICBQcm94eU1hcDo6VmFsdWVzQ29uc3RJdGVyYXRv
clJhbmdlIHdpbmRvd1Byb3hpZXMoKSBjb25zdCB7IHJldHVybiBtX3dpbmRvd1Byb3hpZXMudmFs
dWVzKCk7IH0KKyAgICBWZWN0b3I8SlNDOjpTdHJvbmc8SlNET01XaW5kb3dQcm94eT4+IHdpbmRv
d1Byb3hpZXNBc1ZlY3RvcigpIGNvbnN0OworCisgICAgUHJveHlNYXAgcmVsZWFzZVdpbmRvd1By
b3hpZXMoKSB7IHJldHVybiBzdGQ6OmV4Y2hhbmdlKG1fd2luZG93UHJveGllcywgUHJveHlNYXAo
KSk7IH0KKyAgICB2b2lkIHNldFdpbmRvd1Byb3hpZXMoUHJveHlNYXAmJiB3aW5kb3dQcm94aWVz
KSB7IG1fd2luZG93UHJveGllcyA9IFdURk1vdmUod2luZG93UHJveGllcyk7IH0KKworICAgIEpT
RE9NV2luZG93UHJveHkmIHdpbmRvd1Byb3h5KERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCisgICAg
eworICAgICAgICBhdXRvIGl0ID0gbV93aW5kb3dQcm94aWVzLmZpbmQoJndvcmxkKTsKKyAgICAg
ICAgaWYgKGl0ICE9IG1fd2luZG93UHJveGllcy5lbmQoKSkKKyAgICAgICAgICAgIHJldHVybiAq
aXQtPnZhbHVlLmdldCgpOworCisgICAgICAgIHJldHVybiBjcmVhdGVXaW5kb3dQcm94eVdpdGhJ
bml0aWFsaXplZFNjcmlwdCh3b3JsZCk7CisgICAgfQorCisgICAgSlNET01XaW5kb3dQcm94eSog
ZXhpc3RpbmdXaW5kb3dQcm94eShET01XcmFwcGVyV29ybGQmIHdvcmxkKSBjb25zdAorICAgIHsK
KyAgICAgICAgYXV0byBpdCA9IG1fd2luZG93UHJveGllcy5maW5kKCZ3b3JsZCk7CisgICAgICAg
IHJldHVybiAoaXQgIT0gbV93aW5kb3dQcm94aWVzLmVuZCgpKSA/IGl0LT52YWx1ZS5nZXQoKSA6
IG51bGxwdHI7CisgICAgfQorCisgICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdChE
T01XcmFwcGVyV29ybGQmIHdvcmxkKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHdpbmRvd1Byb3h5
KHdvcmxkKS53aW5kb3coKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgSlNET01XaW5kb3dQcm94
eSYgY3JlYXRlV2luZG93UHJveHkoRE9NV3JhcHBlcldvcmxkJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgSlNET01XaW5kb3dQcm94eSYgY3JlYXRlV2luZG93UHJveHlXaXRoSW5pdGlhbGl6ZWRTY3Jp
cHQoRE9NV3JhcHBlcldvcmxkJik7CisKKyAgICBBYnN0cmFjdEZyYW1lJiBtX2ZyYW1lOworICAg
IFByb3h5TWFwIG1fd2luZG93UHJveGllczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IGZlMDU1OGRhNGU4YzcxYzE1
Y2E4ODE5ODZmMDIwNTM0YzExNDNiMTcuLjgxYzBlN2U5ZjhmMWVkNDYwMzlmNjI2NDY0MmZlYzVk
Yjg5ZmJmZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMzY2MCw3
ICszNjYwLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVj
dHNJbkFsbFdvcmxkcygpCiAKIHZvaWQgRnJhbWVMb2FkZXI6OmRpc3BhdGNoRGlkQ2xlYXJXaW5k
b3dPYmplY3RJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCiB7Ci0gICAgaWYgKCFtX2Zy
YW1lLnNjcmlwdCgpLmNhbkV4ZWN1dGVTY3JpcHRzKE5vdEFib3V0VG9FeGVjdXRlU2NyaXB0KSB8
fCAhbV9mcmFtZS5zY3JpcHQoKS5leGlzdGluZ1dpbmRvd1Byb3h5KHdvcmxkKSkKKyAgICBpZiAo
IW1fZnJhbWUuc2NyaXB0KCkuY2FuRXhlY3V0ZVNjcmlwdHMoTm90QWJvdXRUb0V4ZWN1dGVTY3Jp
cHQpIHx8ICFtX2ZyYW1lLndpbmRvd1Byb3h5Q29udHJvbGxlcigpLmV4aXN0aW5nV2luZG93UHJv
eHkod29ybGQpKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2NsaWVudC5kaXNwYXRjaERpZENs
ZWFyV2luZG93T2JqZWN0SW5Xb3JsZCh3b3JsZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0Fic3RyYWN0RnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9BYnN0cmFjdEZy
YW1lLmNwcAppbmRleCAyZjBmNmRhNjBiZjIxM2U5ZjgyNzJiMmNkM2NjYWNiMTIyN2I4ODg1Li4w
N2RiNTA2ODU1MTExMmYxNDllY2E3MTc4MDFiMzE5ODgxZWU3MDc5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Fic3RyYWN0RnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQWJzdHJhY3RGcmFtZS5jcHAKQEAgLTI2LDkgKzI2LDEyIEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiQWJzdHJhY3RGcmFtZS5oIgogCisjaW5jbHVkZSAiV2luZG93UHJveHlD
b250cm9sbGVyLmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQWJzdHJhY3RGcmFtZTo6QWJz
dHJhY3RGcmFtZSgpCisgICAgOiBtX3dpbmRvd1Byb3h5Q29udHJvbGxlcihtYWtlVW5pcXVlUmVm
PFdpbmRvd1Byb3h5Q29udHJvbGxlcj4oKnRoaXMpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Fic3RyYWN0RnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQWJz
dHJhY3RGcmFtZS5oCmluZGV4IDU2MTE1ZWI2Y2NiYzIwMzMyNTMzZGFiYWE1NjI5MGJhZjAxZDFi
YmUuLjMzNGM5ZWNjYTQ1ODZkZjhiZDZmMmI1YTAzNGNjOTVlNWI4OGY2MTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQWJzdHJhY3RGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQWJzdHJhY3RGcmFtZS5oCkBAIC00MSw2ICs0MSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGJvb2wgaXNMb2NhbEZyYW1lKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc1Jl
bW90ZUZyYW1lKCkgY29uc3QgPSAwOwogCisgICAgV2luZG93UHJveHlDb250cm9sbGVyJiB3aW5k
b3dQcm94eUNvbnRyb2xsZXIoKSB7IHJldHVybiBtX3dpbmRvd1Byb3h5Q29udHJvbGxlcjsgfQor
ICAgIGNvbnN0IFdpbmRvd1Byb3h5Q29udHJvbGxlciYgd2luZG93UHJveHlDb250cm9sbGVyKCkg
Y29uc3QgeyByZXR1cm4gbV93aW5kb3dQcm94eUNvbnRyb2xsZXI7IH0KKwogICAgIEFic3RyYWN0
RE9NV2luZG93KiB3aW5kb3coKSBjb25zdCB7IHJldHVybiB2aXJ0dWFsV2luZG93KCk7IH0KIAog
cHJvdGVjdGVkOgpAQCAtNDgsNiArNTEsOCBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAg
dmlydHVhbCBBYnN0cmFjdERPTVdpbmRvdyogdmlydHVhbFdpbmRvdygpIGNvbnN0ID0gMDsKKwor
ICAgIFVuaXF1ZVJlZjxXaW5kb3dQcm94eUNvbnRyb2xsZXI+IG1fd2luZG93UHJveHlDb250cm9s
bGVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCBlMTgyYzAxMGJlMTc0MWRmNDM2
OTQ4YzllMzJjYzFmNzEzMzk0N2IyLi4wZWQ2NjI0YzFjODkwNDUzYzNmNTZjYTlkMGExM2IzMWQ4
Y2FiOTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3LmNwcApAQCAtMTQ0MSwxNCArMTQ0MSwxNCBAQCB2b2lkIFBsdWdpblZpZXc6OmNhbmNlbE1h
bnVhbFN0cmVhbUxvYWQoKQogTlBPYmplY3QqIFBsdWdpblZpZXc6OndpbmRvd1NjcmlwdE5QT2Jq
ZWN0KCkKIHsKICAgICBpZiAoIWZyYW1lKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmICghZnJhbWUoKS0+c2NyaXB0KCkuY2FuRXhlY3V0ZVNj
cmlwdHMoTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBJbnZl
c3RpZ2F0ZSBpZiBvdGhlciBicm93c2VycyBhbGxvdyBwbHVnLWlucyB0byBhY2Nlc3MgSmF2YVNj
cmlwdCBvYmplY3RzIGV2ZW4gaWYgSmF2YVNjcmlwdCBpcyBkaXNhYmxlZC4KLSAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVybiBtX25w
UnVudGltZU9iamVjdE1hcC5nZXRPckNyZWF0ZU5QT2JqZWN0KHBsdWdpbldvcmxkKCkudm0oKSwg
ZnJhbWUoKS0+c2NyaXB0KCkud2luZG93UHJveHkocGx1Z2luV29ybGQoKSktPndpbmRvdygpKTsK
KyAgICByZXR1cm4gbV9ucFJ1bnRpbWVPYmplY3RNYXAuZ2V0T3JDcmVhdGVOUE9iamVjdChwbHVn
aW5Xb3JsZCgpLnZtKCksIGZyYW1lKCktPndpbmRvd1Byb3h5Q29udHJvbGxlcigpLndpbmRvd1By
b3h5KHBsdWdpbldvcmxkKCkpLndpbmRvdygpKTsKIH0KIAogTlBPYmplY3QqIFBsdWdpblZpZXc6
OnBsdWdpbkVsZW1lbnROUE9iamVjdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNl
UHJveHkubW0KaW5kZXggNmYyZDI1OWY1OWQwNDEwYTVlNDc3NDQ2ZjU0OTcwMjM2MzU0MmVkOS4u
YjMwZWQyMjQ1ZTE1NzM0NjQ3YjNlNDI2NTQ5MGUxNWQwOWY0MGExZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5j
ZVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05l
dHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQpAQCAtODM5LDcgKzgzOSw3IEBAIGJvb2wgTmV0
c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpnZXRXaW5kb3dOUE9iamVjdCh1aW50MzJfdCYgb2Jq
ZWN0SUQpCiAgICAgaWYgKCFmcmFtZS0+c2NyaXB0KCkuY2FuRXhlY3V0ZVNjcmlwdHMoTm90QWJv
dXRUb0V4ZWN1dGVTY3JpcHQpKQogICAgICAgICBvYmplY3RJRCA9IDA7CiAgICAgZWxzZQotICAg
ICAgICBvYmplY3RJRCA9IG1fbG9jYWxPYmplY3RzLmlkRm9yT2JqZWN0KHBsdWdpbldvcmxkKCku
dm0oKSwgZnJhbWUtPnNjcmlwdCgpLndpbmRvd1Byb3h5KHBsdWdpbldvcmxkKCkpLT53aW5kb3co
KSk7CisgICAgICAgIG9iamVjdElEID0gbV9sb2NhbE9iamVjdHMuaWRGb3JPYmplY3QocGx1Z2lu
V29ybGQoKS52bSgpLCBmcmFtZS0+d2luZG93UHJveHlDb250cm9sbGVyKCkud2luZG93UHJveHko
cGx1Z2luV29ybGQoKSkud2luZG93KCkpOwogICAgICAgICAKICAgICByZXR1cm4gdHJ1ZTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IGJhOTE2
MmMxYWQ1MTYwMzI3M2NjMDI4MTMzOWY2NzcxZGEzZjNlZTguLjU5YTFjZjEwMzc2NjkxMTEzYWI2
ZGU2NThhMDBiZmZiMDJmNjk2ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJGcmFtZS5tbQpAQCAtMzYwLDE1ICszNjAsMTUgQEAgc3RhdGljIE5TVVJMICpjcmVhdGVV
bmlxdWVXZWJEYXRhVVJMKCk7CiAKIC0gKHZvaWQpX2F0dGFjaFNjcmlwdERlYnVnZ2VyCiB7Ci0g
ICAgU2NyaXB0Q29udHJvbGxlciYgc2NyaXB0Q29udHJvbGxlciA9IF9wcml2YXRlLT5jb3JlRnJh
bWUtPnNjcmlwdCgpOworICAgIGF1dG8mIHdpbmRvd1Byb3h5Q29udHJvbGxlciA9IF9wcml2YXRl
LT5jb3JlRnJhbWUtPndpbmRvd1Byb3h5Q29udHJvbGxlcigpOwogCiAgICAgLy8gQ2FsbGluZyBT
Y3JpcHRDb250cm9sbGVyOjpnbG9iYWxPYmplY3QoKSB3b3VsZCBjcmVhdGUgYSB3aW5kb3cgcHJv
eHksIGFuZCBkaXNwYXRjaCBjb3JyZXNwb25kaW5nIGNhbGxiYWNrcywgd2hpY2ggbWF5IGJlIHBy
ZW1hdHVyZQogICAgIC8vIGlmIHRoZSBzY3JpcHQgZGVidWdnZXIgaXMgYXR0YWNoZWQgYmVmb3Jl
IGEgZG9jdW1lbnQgaXMgY3JlYXRlZC4gIFRoZXNlIGNhbGxzIHVzZSB0aGUgZGVidWdnZXJXb3Js
ZCgpLCB3ZSB3aWxsIG5lZWQgdG8gcGFzcyBhIHdvcmxkCiAgICAgLy8gdG8gYmUgYWJsZSB0byBk
ZWJ1ZyBpc29sYXRlZCB3b3JsZHMuCi0gICAgaWYgKCFzY3JpcHRDb250cm9sbGVyLmV4aXN0aW5n
V2luZG93UHJveHkoZGVidWdnZXJXb3JsZCgpKSkKKyAgICBpZiAoIXdpbmRvd1Byb3h5Q29udHJv
bGxlci5leGlzdGluZ1dpbmRvd1Byb3h5KGRlYnVnZ2VyV29ybGQoKSkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBzY3JpcHRDb250cm9sbGVy
Lmdsb2JhbE9iamVjdChkZWJ1Z2dlcldvcmxkKCkpOworICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9
IHdpbmRvd1Byb3h5Q29udHJvbGxlci5nbG9iYWxPYmplY3QoZGVidWdnZXJXb3JsZCgpKTsKICAg
ICBpZiAoIWdsb2JhbE9iamVjdCkKICAgICAgICAgcmV0dXJuOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>