<?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>168229</bug_id>
          
          <creation_ts>2017-02-13 04:59:42 -0800</creation_ts>
          <short_desc>CookieManager only works with the default session</short_desc>
          <delta_ts>2017-02-15 11:00:22 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Local 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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>168230</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>berto</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>commit-queue</cc>
    
    <cc>danw</cc>
    
    <cc>gustavo</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>mrobinson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1276169</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-02-13 04:59:42 -0800</bug_when>
    <thetext>It should be possible to use the cookie manager also for ephemeral sessions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276170</commentid>
    <comment_count>1</comment_count>
      <attachid>301344</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-02-13 05:07:30 -0800</bug_when>
    <thetext>Created attachment 301344
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276172</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-13 05:10:16 -0800</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276173</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-13 05:10:27 -0800</bug_when>
    <thetext>Attachment 301344 did not pass style-queue:


ERROR: Source/WebCore/platform/network/CookieStorage.h:34:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/mac/CookieStorageMac.mm:34:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/mac/CookieStorageMac.mm:38:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/mac/CookieStorageMac.mm:56:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/mac/CookieStorageMac.mm:75:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:68:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:77:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:113:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/cf/CookieStorageCFNet.cpp:44:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/cf/CookieStorageCFNet.cpp:46:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/cf/CookieStorageCFNet.cpp:69:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:96:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:136:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/soup/CookieStorageSoup.cpp:31:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/soup/CookieStorageSoup.cpp:33:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/soup/CookieStorageSoup.cpp:43:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 16 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276457</commentid>
    <comment_count>4</comment_count>
      <attachid>301344</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-02-13 17:02:18 -0800</bug_when>
    <thetext>Comment on attachment 301344
Patch

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

Nice work! I trust you&apos;ll find an owner to review it.

Any reason you used std::function instead of the preferred WTF::Function?

&gt; Source/WebCore/platform/network/cf/CookieStorageCFNet.cpp:46
&gt; +    static NeverDestroyed&lt;HashMap&lt;CFHTTPCookieStorageRef, std::function&lt;void ()&gt;&gt;&gt; map;

You need to fix Windows:

C:\cygwin\home\buildbot\WebKit\Source\WebCore\platform\network\cf\CookieStorageCFNet.cpp(46): error C2079: &apos;map&apos; uses undefined class &apos;WTF::NeverDestroyed&lt;WTF::HashMap&lt;CFHTTPCookieStorageRef,std::function&lt;void (void)&gt;,WTF::PtrHash&lt;P *&gt;,WTF::HashTraits&lt;KeyArg&gt;,WTF::HashTraits&lt;MappedArg&gt;&gt;&gt;&apos; [C:\cygwin\home\buildbot\WebKit\WebKitBuild\Release\Source\WebCore\WebCore.vcxproj]
          with
          [
              P=OpaqueCFHTTPCookieStorage,
              KeyArg=CFHTTPCookieStorageRef,
              MappedArg=std::function&lt;void (void)&gt;
          ]

Probably a missing #include?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276474</commentid>
    <comment_count>5</comment_count>
      <attachid>301344</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-02-13 17:27:38 -0800</bug_when>
    <thetext>Comment on attachment 301344
Patch

I like the direction this code is going in.  Definitely fix the Windows build.  WTF::Functions are not copyable, and that seems preferable in this case.  Can this be tested?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276477</commentid>
    <comment_count>6</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-02-13 17:29:13 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Can this be tested?
Aha!  This is definitely related to https://bugs.webkit.org/show_bug.cgi?id=168230</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276481</commentid>
    <comment_count>7</comment_count>
      <attachid>301344</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-02-13 17:34:36 -0800</bug_when>
    <thetext>Comment on attachment 301344
Patch

r=me, fix Windows.
Let&apos;s get rid of CookiesStrategy, too!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276499</commentid>
    <comment_count>8</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-02-13 18:02:05 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; Can this be tested?
&gt; Aha!  This is definitely related to
&gt; https://bugs.webkit.org/show_bug.cgi?id=168230

Yeah, it&apos;s because we just exposed ephemeral mode. See https://lists.webkit.org/pipermail/webkit-gtk/2017-February/002911.html. Thanks for reviewing it quickly, because we want to freeze API for the next release now!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276616</commentid>
    <comment_count>9</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-02-13 23:44:52 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 301344 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=301344&amp;action=review
&gt; 
&gt; Nice work! I trust you&apos;ll find an owner to review it.
&gt; 
&gt; Any reason you used std::function instead of the preferred WTF::Function?

Because a non copyable function can&apos;t be used as a value of a HashMap.
 
&gt; &gt; Source/WebCore/platform/network/cf/CookieStorageCFNet.cpp:46
&gt; &gt; +    static NeverDestroyed&lt;HashMap&lt;CFHTTPCookieStorageRef, std::function&lt;void ()&gt;&gt;&gt; map;
&gt; 
&gt; You need to fix Windows:
&gt; 
&gt; C:
&gt; \cygwin\home\buildbot\WebKit\Source\WebCore\platform\network\cf\CookieStorage
&gt; CFNet.cpp(46): error C2079: &apos;map&apos; uses undefined class
&gt; &apos;WTF::NeverDestroyed&lt;WTF::HashMap&lt;CFHTTPCookieStorageRef,std::function&lt;void
&gt; (void)&gt;,WTF::PtrHash&lt;P
&gt; *&gt;,WTF::HashTraits&lt;KeyArg&gt;,WTF::HashTraits&lt;MappedArg&gt;&gt;&gt;&apos;
&gt; [C:\cygwin\home\buildbot\WebKit\WebKitBuild\Release\Source\WebCore\WebCore.
&gt; vcxproj]
&gt;           with
&gt;           [
&gt;               P=OpaqueCFHTTPCookieStorage,
&gt;               KeyArg=CFHTTPCookieStorageRef,
&gt;               MappedArg=std::function&lt;void (void)&gt;
&gt;           ]
&gt; 
&gt; Probably a missing #include?

Yes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276620</commentid>
    <comment_count>10</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-02-13 23:46:11 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; &gt; Any reason you used std::function instead of the preferred WTF::Function?
&gt; 
&gt; Because a non copyable function can&apos;t be used as a value of a HashMap.
You&apos;re right :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276621</commentid>
    <comment_count>11</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-02-13 23:46:31 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 301344 [details]
&gt; Patch
&gt; 
&gt; I like the direction this code is going in.  Definitely fix the Windows
&gt; build.  WTF::Functions are not copyable, and that seems preferable in this
&gt; case.  Can this be tested?

I started using Function but had to change it to std::function to be able to use it in HashMap value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276649</commentid>
    <comment_count>12</comment_count>
      <attachid>301478</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-02-14 01:39:32 -0800</bug_when>
    <thetext>Created attachment 301478
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276652</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-14 02:09:33 -0800</bug_when>
    <thetext>Attachment 301478 did not pass style-queue:


ERROR: Source/WebCore/platform/network/CookieStorage.h:34:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/mac/CookieStorageMac.mm:34:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/mac/CookieStorageMac.mm:38:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/mac/CookieStorageMac.mm:56:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/mac/CookieStorageMac.mm:75:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:68:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:77:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:113:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/cf/CookieStorageCFNet.cpp:46:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/cf/CookieStorageCFNet.cpp:48:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/cf/CookieStorageCFNet.cpp:71:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:96:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:136:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/soup/CookieStorageSoup.cpp:31:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/soup/CookieStorageSoup.cpp:33:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/soup/CookieStorageSoup.cpp:43:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 16 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276657</commentid>
    <comment_count>14</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-02-14 02:45:02 -0800</bug_when>
    <thetext>Committed r212283: &lt;http://trac.webkit.org/changeset/212283&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276807</commentid>
    <comment_count>15</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-02-14 10:39:14 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #5)
&gt; &gt; Comment on attachment 301344 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; I like the direction this code is going in.  Definitely fix the Windows
&gt; &gt; build.  WTF::Functions are not copyable, and that seems preferable in this
&gt; &gt; case.  Can this be tested?
&gt; 
&gt; I started using Function but had to change it to std::function to be able to
&gt; use it in HashMap value.

Nothing about a Function precludes it from being a HashMap value; We use Functions in HashMap values all the time.

What was preventing you from doing so?

Could you please revisit this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276813</commentid>
    <comment_count>16</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-02-14 10:48:58 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #11)
&gt; &gt; (In reply to comment #5)
&gt; &gt; &gt; Comment on attachment 301344 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; I like the direction this code is going in.  Definitely fix the Windows
&gt; &gt; &gt; build.  WTF::Functions are not copyable, and that seems preferable in this
&gt; &gt; &gt; case.  Can this be tested?
&gt; &gt; 
&gt; &gt; I started using Function but had to change it to std::function to be able to
&gt; &gt; use it in HashMap value.
&gt; 
&gt; Nothing about a Function precludes it from being a HashMap value; We use
&gt; Functions in HashMap values all the time.

For hints, search WebKit2 for:
`HashMap&lt;uint64_t, Function`</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277069</commentid>
    <comment_count>17</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-02-14 22:29:32 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #11)
&gt; &gt; (In reply to comment #5)
&gt; &gt; &gt; Comment on attachment 301344 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; I like the direction this code is going in.  Definitely fix the Windows
&gt; &gt; &gt; build.  WTF::Functions are not copyable, and that seems preferable in this
&gt; &gt; &gt; case.  Can this be tested?
&gt; &gt; 
&gt; &gt; I started using Function but had to change it to std::function to be able to
&gt; &gt; use it in HashMap value.
&gt; 
&gt; Nothing about a Function precludes it from being a HashMap value; We use
&gt; Functions in HashMap values all the time.
&gt; 
&gt; What was preventing you from doing so?
&gt; 
&gt; Could you please revisit this?

You are right, now I remember exactly the issue. You can indeed use Function as a value of a HshMap, but you can&apos;t get it, because that always requires a copy, at least with the current HashMap implementation, I&apos;m not sure if it&apos;s possible to implement a git without copying.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277071</commentid>
    <comment_count>18</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-02-14 22:31:51 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; (In reply to comment #15)
&gt; &gt; (In reply to comment #11)
&gt; &gt; &gt; (In reply to comment #5)
&gt; &gt; &gt; &gt; Comment on attachment 301344 [details]
&gt; &gt; &gt; &gt; Patch
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; I like the direction this code is going in.  Definitely fix the Windows
&gt; &gt; &gt; &gt; build.  WTF::Functions are not copyable, and that seems preferable in this
&gt; &gt; &gt; &gt; case.  Can this be tested?
&gt; &gt; &gt; 
&gt; &gt; &gt; I started using Function but had to change it to std::function to be able to
&gt; &gt; &gt; use it in HashMap value.
&gt; &gt; 
&gt; &gt; Nothing about a Function precludes it from being a HashMap value; We use
&gt; &gt; Functions in HashMap values all the time.
&gt; 
&gt; For hints, search WebKit2 for:
&gt; `HashMap&lt;uint64_t, Function`

I did it when I found the issue, and all those were cases where function is added once and then taken, like completion handlers. In that case there&apos;s no problem because take doesn&apos;t need to copy, it just moves. Here we need to set once and get multiple times. We could take and set on every get, but I don&apos;t think it&apos;s worth it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277232</commentid>
    <comment_count>19</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-02-15 09:50:38 -0800</bug_when>
    <thetext>I guess it caused bug #168375.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>301344</attachid>
            <date>2017-02-13 05:07:30 -0800</date>
            <delta_ts>2017-02-14 01:39:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-cookie-manager-session.diff</filename>
            <type>text/plain</type>
            <size>35713</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwZmI4YmQ3ODljOS4uNWU1YjJiODg3NmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMCBAQAorMjAxNy0wMi0xMyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGln
YWxpYS5jb20+CisKKyAgICAgICAgQ29va2llTWFuYWdlciBvbmx5IHdvcmtzIHdpdGggdGhlIGRl
ZmF1bHQgc2Vzc2lvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTY4MjI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVXBkYXRlIGNvb2tpZSBvYnNlcnZlciBBUEkgdG8gdXNlIGEgc3RkOjpmdW5jdGlvbiBp
bnN0ZWFkIG9mIGEgZnVuY3Rpb24gcG9pbnRlciBhbmQgbWFrZSBpdCB3b3JrIHdpdGggbXVsdGlw
bGUKKyAgICAgICAgc2Vzc2lvbnMgaW4gdGhlIGJhY2tlbmRzIHRoYXQgc3VwcG9ydCBpdC4KKwor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQ29va2llU3RvcmFnZS5oOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY2YvQ29va2llU3RvcmFnZUNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNvb2tpZUNoYW5nZUNhbGxiYWNrTWFwKToKKyAgICAgICAgKFdlYkNvcmU6Om5vdGlmeUNv
b2tpZXNDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OnN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hh
bmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpzdG9wT2JzZXJ2aW5nQ29va2llQ2hhbmdlcyk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llU3RvcmFnZU1hYy5tbToKKyAgICAg
ICAgKC1bV2ViQ29va2llU3RvcmFnZU9iakNBZGFwdGVyIHN0YXJ0TGlzdGVuaW5nRm9yQ29va2ll
Q2hhbmdlTm90aWZpY2F0aW9uc1dpdGhDYWxsYmFjazpdKToKKyAgICAgICAgKC1bV2ViQ29va2ll
U3RvcmFnZU9iakNBZGFwdGVyIHN0b3BMaXN0ZW5pbmdGb3JDb29raWVDaGFuZ2VOb3RpZmljYXRp
b25zXSk6CisgICAgICAgIChXZWJDb3JlOjpzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6c3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVTdG9yYWdlU291cC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjb29raWVDaGFuZ2VDYWxsYmFja01hcCk6CisgICAgICAgIChXZWJDb3JlOjpzb3Vw
Q29va2llc0NoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6c3RhcnRPYnNlcnZpbmdDb29raWVD
aGFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OnN0b3BPYnNlcnZpbmdDb29raWVDaGFuZ2VzKToK
KwogMjAxNy0wMi0xMiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+
CiAKICAgICAgICAgW0dUS10gTm9uLWFjY2VsZXJhdGVkIGRyYXdpbmcgaXMgYnJva2VuIHdpdGgg
SGlEUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29va2ll
U3RvcmFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Db29raWVTdG9yYWdl
LmgKaW5kZXggOWVjYTVlYzMwYmUuLmM1MDUzY2M5MDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Nvb2tpZVN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Nvb2tpZVN0b3JhZ2UuaApAQCAtMjMsMTcgKzIzLDE2IEBACiAg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBDb29raWVT
dG9yYWdlX2gKLSNkZWZpbmUgQ29va2llU3RvcmFnZV9oCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgPGZ1bmN0aW9uYWw+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gVGhlc2UgYXJlIGFs
d2F5cyBvYnNlcnZpbmcgdGhlIHNoYXJlZCBjb29raWUgc3RvcmFnZSwgZXZlbiB3aGVuIGluIHBy
aXZhdGUgYnJvd3NpbmcgbW9kZS4KK2NsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsKIAotdHlw
ZWRlZiB2b2lkKCpDb29raWVDaGFuZ2VDYWxsYmFja1B0cikoKTsKLVdFQkNPUkVfRVhQT1JUIHZv
aWQgc3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKENvb2tpZUNoYW5nZUNhbGxiYWNrUHRyKTsK
LVdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoKTsKK1dFQkNP
UkVfRVhQT1JUIHZvaWQgc3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4mJik7CitXRUJDT1JFX0VYUE9S
VCB2b2lkIHN0b3BPYnNlcnZpbmdDb29raWVDaGFuZ2VzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYpOwogCiB9CiAKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZOZXQuY3BwCmluZGV4IDdlNzk1ZTI0MDRm
Li4zMDI3YjkxNDYwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9Db29raWVTdG9yYWdlQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvQ29va2llU3RvcmFnZUNGTmV0LmNwcApAQCAtNDEsMTIgKzQxLDE3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIFBMQVRGT1JNKFdJTikKIAotc3RhdGljIENvb2tpZUNo
YW5nZUNhbGxiYWNrUHRyIGNvb2tpZUNoYW5nZUNhbGxiYWNrOworc3RhdGljIEhhc2hNYXA8Q0ZI
VFRQQ29va2llU3RvcmFnZVJlZiwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPj4mIGNvb2tpZUNoYW5n
ZUNhbGxiYWNrTWFwKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxDRkhU
VFBDb29raWVTdG9yYWdlUmVmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+Pj4gbWFwOworICAgIHJl
dHVybiBtYXA7Cit9CiAKLXN0YXRpYyB2b2lkIG5vdGlmeUNvb2tpZXNDaGFuZ2VkKENGSFRUUENv
b2tpZVN0b3JhZ2VSZWYsIHZvaWQgKikKK3N0YXRpYyB2b2lkIG5vdGlmeUNvb2tpZXNDaGFuZ2Vk
KENGSFRUUENvb2tpZVN0b3JhZ2VSZWYgY29va2llU3RvcmFnZSwgdm9pZCAqKQogewotICAgIGNh
bGxPbk1haW5UaHJlYWQoW10gewotICAgICAgICBjb29raWVDaGFuZ2VDYWxsYmFjaygpOworICAg
IGNhbGxPbk1haW5UaHJlYWQoW2Nvb2tpZVN0b3JhZ2VdIHsKKyAgICAgICAgaWYgKGF1dG8gY2Fs
bGJhY2sgPSBjb29raWVDaGFuZ2VDYWxsYmFja01hcCgpLmdldChjb29raWVTdG9yYWdlKSkKKyAg
ICAgICAgICAgIGNhbGxiYWNrKCk7CiAgICAgfSk7CiB9CiAKQEAgLTYxLDM1ICs2NiwzNSBAQCBz
dGF0aWMgaW5saW5lIENGUnVuTG9vcFJlZiBjb29raWVTdG9yYWdlT2JzZXJ2ZXJSdW5Mb29wKCkK
ICAgICByZXR1cm4gbG9hZGVyUnVuTG9vcCgpOwogfQogCi12b2lkIHN0YXJ0T2JzZXJ2aW5nQ29v
a2llQ2hhbmdlcyhDb29raWVDaGFuZ2VDYWxsYmFja1B0ciBjYWxsYmFjaykKK3ZvaWQgc3RhcnRP
YnNlcnZpbmdDb29raWVDaGFuZ2VzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc3RvcmFn
ZVNlc3Npb24sIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4mJiBjYWxsYmFjaykKIHsKICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgQVNTRVJUKCFjb29raWVDaGFuZ2VDYWxsYmFjayk7
Ci0gICAgY29va2llQ2hhbmdlQ2FsbGJhY2sgPSBjYWxsYmFjazsKLQogICAgIENGUnVuTG9vcFJl
ZiBydW5Mb29wID0gY29va2llU3RvcmFnZU9ic2VydmVyUnVuTG9vcCgpOwogICAgIEFTU0VSVChy
dW5Mb29wKTsKIAotICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVT
dG9yYWdlID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5j
b29raWVTdG9yYWdlKCk7CisgICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNv
b2tpZVN0b3JhZ2UgPSBzdG9yYWdlU2Vzc2lvbi5jb29raWVTdG9yYWdlKCk7CiAgICAgQVNTRVJU
KGNvb2tpZVN0b3JhZ2UpOwogCisgICAgQVNTRVJUKGNvb2tpZUNoYW5nZUNhbGxiYWNrTWFwKCku
Y29udGFpbnMoY29va2llU3RvcmFnZS5nZXQoKSkpOworICAgIGNvb2tpZUNoYW5nZUNhbGxiYWNr
TWFwKCkuYWRkKGNvb2tpZVN0b3JhZ2UuZ2V0KCksIFdURk1vdmUoY2FsbGJhY2spKTsKKwogICAg
IENGSFRUUENvb2tpZVN0b3JhZ2VTY2hlZHVsZVdpdGhSdW5Mb29wKGNvb2tpZVN0b3JhZ2UuZ2V0
KCksIHJ1bkxvb3AsIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CiAgICAgQ0ZIVFRQQ29va2llU3Rv
cmFnZUFkZE9ic2VydmVyKGNvb2tpZVN0b3JhZ2UuZ2V0KCksIHJ1bkxvb3AsIGtDRlJ1bkxvb3BE
ZWZhdWx0TW9kZSwgbm90aWZ5Q29va2llc0NoYW5nZWQsIDApOwogfQogCi12b2lkIHN0b3BPYnNl
cnZpbmdDb29raWVDaGFuZ2VzKCkKK3ZvaWQgc3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbikKIHsKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwogCi0gICAgY29va2llQ2hhbmdlQ2FsbGJhY2sgPSAwOwotCiAgICAg
Q0ZSdW5Mb29wUmVmIHJ1bkxvb3AgPSBjb29raWVTdG9yYWdlT2JzZXJ2ZXJSdW5Mb29wKCk7CiAg
ICAgQVNTRVJUKHJ1bkxvb3ApOwogCi0gICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VS
ZWY+IGNvb2tpZVN0b3JhZ2UgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdl
U2Vzc2lvbigpLmNvb2tpZVN0b3JhZ2UoKTsKKyAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3Rv
cmFnZVJlZj4gY29va2llU3RvcmFnZSA9IHN0b3JhZ2VTZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKTsK
ICAgICBBU1NFUlQoY29va2llU3RvcmFnZSk7CiAKKyAgICBjb29raWVDaGFuZ2VDYWxsYmFja01h
cCgpLnJlbW92ZShjb29raWVTdG9yYWdlLmdldCgpKTsKKwogICAgIENGSFRUUENvb2tpZVN0b3Jh
Z2VSZW1vdmVPYnNlcnZlcihjb29raWVTdG9yYWdlLmdldCgpLCBydW5Mb29wLCBrQ0ZSdW5Mb29w
RGVmYXVsdE1vZGUsIG5vdGlmeUNvb2tpZXNDaGFuZ2VkLCAwKTsKICAgICBDRkhUVFBDb29raWVT
dG9yYWdlVW5zY2hlZHVsZUZyb21SdW5Mb29wKGNvb2tpZVN0b3JhZ2UuZ2V0KCksIHJ1bkxvb3As
IGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVTdG9yYWdlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llU3RvcmFnZU1hYy5tbQppbmRleCA4YzBlOGM1NTQ3
MS4uZTc4MmIwNjZlNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL0Nvb2tpZVN0b3JhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvQ29va2llU3RvcmFnZU1hYy5tbQpAQCAtMzEsMTEgKzMxLDExIEBACiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogQGludGVyZmFjZSBXZWJDb29raWVTdG9yYWdlT2JqQ0Fk
YXB0ZXIgOiBOU09iamVjdCB7Ci0gICAgQ29va2llQ2hhbmdlQ2FsbGJhY2tQdHIgbV9jb29raWVD
aGFuZ2VDYWxsYmFjazsKKyAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IG1fY29va2llQ2hhbmdl
Q2FsbGJhY2s7CiB9CiAtKHZvaWQpbm90aWZ5Q29va2llc0NoYW5nZWRPbk1haW5UaHJlYWQ7CiAt
KHZvaWQpY29va2llc0NoYW5nZWROb3RpZmljYXRpb25IYW5kbGVyOihOU05vdGlmaWNhdGlvbiAq
KW5vdGlmaWNhdGlvbjsKLS0odm9pZClzdGFydExpc3RlbmluZ0ZvckNvb2tpZUNoYW5nZU5vdGlm
aWNhdGlvbnNXaXRoQ2FsbGJhY2s6KENvb2tpZUNoYW5nZUNhbGxiYWNrUHRyKWNhbGxiYWNrOwor
LSh2b2lkKXN0YXJ0TGlzdGVuaW5nRm9yQ29va2llQ2hhbmdlTm90aWZpY2F0aW9uc1dpdGhDYWxs
YmFjazooc3RkOjpmdW5jdGlvbjx2b2lkICgpPiYmKWNhbGxiYWNrOwogLSh2b2lkKXN0b3BMaXN0
ZW5pbmdGb3JDb29raWVDaGFuZ2VOb3RpZmljYXRpb25zOwogQGVuZAogCkBAIC01MywxNyArNTMs
MTcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAgICAgW3NlbGYgcGVyZm9ybVNlbGVjdG9y
T25NYWluVGhyZWFkOkBzZWxlY3Rvcihub3RpZnlDb29raWVzQ2hhbmdlZE9uTWFpblRocmVhZCkg
d2l0aE9iamVjdDpuaWwgd2FpdFVudGlsRG9uZTpGQUxTRV07CiB9CiAKLS0odm9pZClzdGFydExp
c3RlbmluZ0ZvckNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnNXaXRoQ2FsbGJhY2s6KENvb2tpZUNo
YW5nZUNhbGxiYWNrUHRyKWNhbGxiYWNrCistKHZvaWQpc3RhcnRMaXN0ZW5pbmdGb3JDb29raWVD
aGFuZ2VOb3RpZmljYXRpb25zV2l0aENhbGxiYWNrOihzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+JiYp
Y2FsbGJhY2sKIHsKICAgICBBU1NFUlQoIW1fY29va2llQ2hhbmdlQ2FsbGJhY2spOwotICAgIG1f
Y29va2llQ2hhbmdlQ2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICBtX2Nvb2tpZUNoYW5nZUNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayk7CiAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZh
dWx0Q2VudGVyXSBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3Rvcihjb29raWVzQ2hh
bmdlZE5vdGlmaWNhdGlvbkhhbmRsZXI6KSBuYW1lOk5TSFRUUENvb2tpZU1hbmFnZXJDb29raWVz
Q2hhbmdlZE5vdGlmaWNhdGlvbiBvYmplY3Q6W05TSFRUUENvb2tpZVN0b3JhZ2Ugc2hhcmVkSFRU
UENvb2tpZVN0b3JhZ2VdXTsKIH0KIAogLSh2b2lkKXN0b3BMaXN0ZW5pbmdGb3JDb29raWVDaGFu
Z2VOb3RpZmljYXRpb25zCiB7CiAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2Vu
dGVyXSByZW1vdmVPYnNlcnZlcjpzZWxmIG5hbWU6TlNIVFRQQ29va2llTWFuYWdlckNvb2tpZXND
aGFuZ2VkTm90aWZpY2F0aW9uIG9iamVjdDpuaWxdOwotICAgIG1fY29va2llQ2hhbmdlQ2FsbGJh
Y2sgPSAwOworICAgIG1fY29va2llQ2hhbmdlQ2FsbGJhY2sgPSBudWxscHRyOwogfQogCiBAZW5k
CkBAIC03MiwxNCArNzIsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgV2ViQ29v
a2llU3RvcmFnZU9iakNBZGFwdGVyICpjb29raWVTdG9yYWdlQWRhcHRlcjsKIAotdm9pZCBzdGFy
dE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoQ29va2llQ2hhbmdlQ2FsbGJhY2tQdHIgY2FsbGJhY2sp
Cit2b2lkIHN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFj
b29raWVTdG9yYWdlQWRhcHRlcikKICAgICAgICAgY29va2llU3RvcmFnZUFkYXB0ZXIgPSBbW1dl
YkNvb2tpZVN0b3JhZ2VPYmpDQWRhcHRlciBhbGxvY10gaW5pdF07Ci0gICAgW2Nvb2tpZVN0b3Jh
Z2VBZGFwdGVyIHN0YXJ0TGlzdGVuaW5nRm9yQ29va2llQ2hhbmdlTm90aWZpY2F0aW9uc1dpdGhD
YWxsYmFjazpjYWxsYmFja107CisgICAgW2Nvb2tpZVN0b3JhZ2VBZGFwdGVyIHN0YXJ0TGlzdGVu
aW5nRm9yQ29va2llQ2hhbmdlTm90aWZpY2F0aW9uc1dpdGhDYWxsYmFjazpXVEZNb3ZlKGNhbGxi
YWNrKV07CiB9CiAKLXZvaWQgc3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoKQordm9pZCBzdG9w
T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mKQogewog
ICAgIC8vIGNvb2tpZVN0b3JhZ2VBZGFwdGVyIGNhbiBiZSBuaWwgaGVyZSwgaWYgdGhlIFdlYlBy
b2Nlc3MgY3Jhc2hlZCBhbmQgd2FzIHJlc3RhcnRlZCBiZXR3ZWVuCiAgICAgLy8gd2hlbiBzdGFy
dE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMgd2FzIGNhbGxlZCwgYW5kIHN0b3BPYnNlcnZpbmdDb29r
aWVDaGFuZ2VzIGlzIGN1cnJlbnRseSBiZWluZyBjYWxsZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llU3RvcmFnZVNvdXAuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZVN0b3JhZ2VTb3VwLmNwcApp
bmRleCBmNDdmZWYwM2I1OC4uYjczNDk2NmI1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVTdG9yYWdlU291cC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZVN0b3JhZ2VTb3VwLmNwcApAQCAt
MjMsMzAgKzIzLDM3IEBACiAKICNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZVNlc3Npb24uaCIKICNp
bmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1
ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRp
YyBDb29raWVDaGFuZ2VDYWxsYmFja1B0ciBjb29raWVDaGFuZ2VDYWxsYmFjazsKK3N0YXRpYyBI
YXNoTWFwPFNvdXBDb29raWVKYXIqLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+PiYgY29va2llQ2hh
bmdlQ2FsbGJhY2tNYXAoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFNv
dXBDb29raWVKYXIqLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+Pj4gbWFwOworICAgIHJldHVybiBt
YXA7Cit9CiAKIHN0YXRpYyB2b2lkIHNvdXBDb29raWVzQ2hhbmdlZChTb3VwQ29va2llSmFyKiBq
YXIpCiB7Ci0gICAgaWYgKGphciAhPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9y
YWdlU2Vzc2lvbigpLmNvb2tpZVN0b3JhZ2UoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNvb2tp
ZUNoYW5nZUNhbGxiYWNrKCk7CisgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBjb29raWVDaGFuZ2VD
YWxsYmFja01hcCgpLmdldChqYXIpKQorICAgICAgICBjYWxsYmFjaygpOwogfQogCi12b2lkIHN0
YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhDb29raWVDaGFuZ2VDYWxsYmFja1B0ciBjYWxsYmFj
aykKK3ZvaWQgc3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgc3RvcmFnZVNlc3Npb24sIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4mJiBjYWxsYmFj
aykKIHsKLSAgICBBU1NFUlQoIWNvb2tpZUNoYW5nZUNhbGxiYWNrKTsKLSAgICBjb29raWVDaGFu
Z2VDYWxsYmFjayA9IGNhbGxiYWNrOwotCi0gICAgZ19zaWduYWxfY29ubmVjdChOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmNvb2tpZVN0b3JhZ2UoKSwgImNo
YW5nZWQiLCBHX0NBTExCQUNLKHNvdXBDb29raWVzQ2hhbmdlZCksIDApOworICAgIGF1dG8qIGph
ciA9IHN0b3JhZ2VTZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKTsKKyAgICBBU1NFUlQoIWNvb2tpZUNo
YW5nZUNhbGxiYWNrTWFwKCkuY29udGFpbnMoamFyKSk7CisgICAgY29va2llQ2hhbmdlQ2FsbGJh
Y2tNYXAoKS5hZGQoamFyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgZ19zaWduYWxfY29ubmVj
dChqYXIsICJjaGFuZ2VkIiwgR19DQUxMQkFDSyhzb3VwQ29va2llc0NoYW5nZWQpLCBudWxscHRy
KTsKIH0KIAotdm9pZCBzdG9wT2JzZXJ2aW5nQ29va2llQ2hhbmdlcygpCit2b2lkIHN0b3BPYnNl
cnZpbmdDb29raWVDaGFuZ2VzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc3RvcmFnZVNl
c3Npb24pCiB7Ci0gICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuY29va2llU3RvcmFnZSgp
LCByZWludGVycHJldF9jYXN0PHZvaWQqPihzb3VwQ29va2llc0NoYW5nZWQpLCBudWxscHRyKTsK
LSAgICBjb29raWVDaGFuZ2VDYWxsYmFjayA9IG51bGxwdHI7CisgICAgYXV0byogamFyID0gc3Rv
cmFnZVNlc3Npb24uY29va2llU3RvcmFnZSgpOworICAgIEFTU0VSVChjb29raWVDaGFuZ2VDYWxs
YmFja01hcCgpLmNvbnRhaW5zKGphcikpOworICAgIGNvb2tpZUNoYW5nZUNhbGxiYWNrTWFwKCku
cmVtb3ZlKGphcik7CisgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKGph
ciwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc291cENvb2tpZXNDaGFuZ2VkKSwgbnVsbHB0cik7
CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwppbmRleCBhMmMwMWYzOTE3ZS4uMTk1ZWE4ZGRhYjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw1NSBAQAorMjAxNy0wMi0xMyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxj
Z2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgQ29va2llTWFuYWdlciBvbmx5IHdvcmtzIHdp
dGggdGhlIGRlZmF1bHQgc2Vzc2lvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTY4MjI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTWFrZSBDb29raWVNYW5hZ2VyIHNlc3Npb24gYXdhcmUgYnkgYWRkaW5n
IGEgU2Vzc2lvbklEIHBhcmFtZXRlciB0byBhbGwgaXRzIGZ1bmN0aW9ucywgYW5kIHVwZGF0ZSBh
bGwgdGhlIGNhbGxlcnMKKyAgICAgICAgdG8gcGFzcyB0aGUgZGVmYXVsdCBzZXNzaW9uIElELCBw
cmVzZXJ2aW5nIHRoZSBjdXJyZW50CisgICAgICAgIGJlaGF2aW9yLiBXZWJDb29raWVNYW5hZ2Vy
UHJveHk6OnN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcygpIG5vdyBhbHNvIHJlY2VpdmVzIGFu
IG9wdGlvbmFsIGNhbGxiYWNrIHRvIGJlCisgICAgICAgIGNhbGxlZCBvbiBldmVyeSBjaGFuZ2Uu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb29raWVNYW5hZ2VyLmNwcDoKKyAgICAg
ICAgKFdLQ29va2llTWFuYWdlckdldEhvc3RuYW1lc1dpdGhDb29raWVzKToKKyAgICAgICAgKFdL
Q29va2llTWFuYWdlckRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZSk6CisgICAgICAgIChXS0Nvb2tp
ZU1hbmFnZXJEZWxldGVBbGxDb29raWVzKToKKyAgICAgICAgKFdLQ29va2llTWFuYWdlckRlbGV0
ZUFsbENvb2tpZXNNb2RpZmllZEFmdGVyRGF0ZSk6CisgICAgICAgIChXS0Nvb2tpZU1hbmFnZXJT
dGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMpOgorICAgICAgICAoV0tDb29raWVNYW5hZ2VyU3Rv
cE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdENvb2tpZU1hbmFnZXIuY3BwOgorICAgICAgICAoX1dlYktpdENvb2tpZU1hbmFnZXJQcml2
YXRlOjp+X1dlYktpdENvb2tpZU1hbmFnZXJQcml2YXRlKToKKyAgICAgICAgKHdlYmtpdENvb2tp
ZU1hbmFnZXJDcmVhdGUpOgorICAgICAgICAod2Via2l0X2Nvb2tpZV9tYW5hZ2VyX3NldF9wZXJz
aXN0ZW50X3N0b3JhZ2UpOgorICAgICAgICAod2Via2l0X2Nvb2tpZV9tYW5hZ2VyX2dldF9kb21h
aW5zX3dpdGhfY29va2llcyk6CisgICAgICAgICh3ZWJraXRfY29va2llX21hbmFnZXJfZGVsZXRl
X2Nvb2tpZXNfZm9yX2RvbWFpbik6CisgICAgICAgICh3ZWJraXRfY29va2llX21hbmFnZXJfZGVs
ZXRlX2FsbF9jb29raWVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRv
bWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9u
OjphZGRTaW5nbGVDb29raWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lv
bjo6ZGVsZXRlQWxsQ29va2llcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFn
ZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0
SG9zdG5hbWVzV2l0aENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2Vy
UHJveHk6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNv
b2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQWxsQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmFkZENvb2tpZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6c3RhcnRPYnNlcnZpbmdDb29raWVDaGFu
Z2VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpzdG9wT2JzZXJ2
aW5nQ29va2llQ2hhbmdlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94
eTo6Y29va2llc0RpZENoYW5nZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFn
ZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkubWVz
c2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpXZWJDb29raWVNYW5hZ2Vy
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6Z2V0SG9zdG5hbWVzV2l0aENv
b2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVDb29raWVz
Rm9ySG9zdG5hbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVB
bGxDb29raWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQWxs
Q29va2llc01vZGlmaWVkU2luY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2Vy
OjphZGRDb29raWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpzdGFydE9i
c2VydmluZ0Nvb2tpZUNoYW5nZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2Vy
OjpzdG9wT2JzZXJ2aW5nQ29va2llQ2hhbmdlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Db29r
aWVzL1dlYkNvb2tpZU1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Nvb2tpZXMvV2Vi
Q29va2llTWFuYWdlci5tZXNzYWdlcy5pbjoKKwogMjAxNy0wMi0xMiAgRGFuIEJlcm5zdGVpbiAg
PG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gU29tZSAtcmVzcG9uZHNUb1NlbGVj
dG9yOiBjaGVja3MgYXJlIHVubmVjZXNzYXJ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tDb29raWVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS0Nvb2tpZU1hbmFnZXIuY3BwCmluZGV4IGU0YTMwNjExYTA5Li43NjI0YmVl
ZTk0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29va2ll
TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29va2ll
TWFuYWdlci5jcHAKQEAgLTQzLDE3ICs0MywxNyBAQCB2b2lkIFdLQ29va2llTWFuYWdlclNldENs
aWVudChXS0Nvb2tpZU1hbmFnZXJSZWYgY29va2llTWFuYWdlclJlZiwgY29uc3QgV0tDb29raQog
CiB2b2lkIFdLQ29va2llTWFuYWdlckdldEhvc3RuYW1lc1dpdGhDb29raWVzKFdLQ29va2llTWFu
YWdlclJlZiBjb29raWVNYW5hZ2VyUmVmLCB2b2lkKiBjb250ZXh0LCBXS0Nvb2tpZU1hbmFnZXJH
ZXRDb29raWVIb3N0bmFtZXNGdW5jdGlvbiBjYWxsYmFjaykKIHsKLSAgICB0b0ltcGwoY29va2ll
TWFuYWdlclJlZiktPmdldEhvc3RuYW1lc1dpdGhDb29raWVzKHRvR2VuZXJpY0NhbGxiYWNrRnVu
Y3Rpb24oY29udGV4dCwgY2FsbGJhY2spKTsKKyAgICB0b0ltcGwoY29va2llTWFuYWdlclJlZikt
PmdldEhvc3RuYW1lc1dpdGhDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Np
b25JRCgpLCB0b0dlbmVyaWNDYWxsYmFja0Z1bmN0aW9uKGNvbnRleHQsIGNhbGxiYWNrKSk7CiB9
CiAKIHZvaWQgV0tDb29raWVNYW5hZ2VyRGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKFdLQ29va2ll
TWFuYWdlclJlZiBjb29raWVNYW5hZ2VyUmVmLCBXS1N0cmluZ1JlZiBob3N0bmFtZSkKIHsKLSAg
ICB0b0ltcGwoY29va2llTWFuYWdlclJlZiktPmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZSh0b0lt
cGwoaG9zdG5hbWUpLT5zdHJpbmcoKSk7CisgICAgdG9JbXBsKGNvb2tpZU1hbmFnZXJSZWYpLT5k
ZWxldGVDb29raWVzRm9ySG9zdG5hbWUoV2ViQ29yZTo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lv
bklEKCksIHRvSW1wbChob3N0bmFtZSktPnN0cmluZygpKTsKIH0KIAogdm9pZCBXS0Nvb2tpZU1h
bmFnZXJEZWxldGVBbGxDb29raWVzKFdLQ29va2llTWFuYWdlclJlZiBjb29raWVNYW5hZ2VyUmVm
KQogewotICAgIHRvSW1wbChjb29raWVNYW5hZ2VyUmVmKS0+ZGVsZXRlQWxsQ29va2llcygpOwor
ICAgIHRvSW1wbChjb29raWVNYW5hZ2VyUmVmKS0+ZGVsZXRlQWxsQ29va2llcyhXZWJDb3JlOjpT
ZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CiB9CiAKIHZvaWQgV0tDb29raWVNYW5hZ2Vy
RGVsZXRlQWxsQ29va2llc01vZGlmaWVkQWZ0ZXJEYXRlKFdLQ29va2llTWFuYWdlclJlZiBjb29r
aWVNYW5hZ2VyUmVmLCBkb3VibGUgZGF0ZSkKQEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBXS0Nvb2tp
ZU1hbmFnZXJEZWxldGVBbGxDb29raWVzTW9kaWZpZWRBZnRlckRhdGUoV0tDb29raWVNYW5hZ2Vy
UmVmIGNvb2tpZU0KICAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOjpjaHJvbm87CiAKICAgICBhdXRv
IHRpbWUgPSBzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQoZHVyYXRpb25fY2FzdDxzeXN0ZW1fY2xv
Y2s6OmR1cmF0aW9uPihkdXJhdGlvbjxkb3VibGU+KGRhdGUpKSk7Ci0gICAgdG9JbXBsKGNvb2tp
ZU1hbmFnZXJSZWYpLT5kZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZSh0aW1lKTsKKyAgICB0
b0ltcGwoY29va2llTWFuYWdlclJlZiktPmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFdl
YkNvcmU6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCB0aW1lKTsKIH0KIAogdm9pZCBX
S0Nvb2tpZU1hbmFnZXJTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFdLQ29va2llTWFuYWdlclJl
ZiBjb29raWVNYW5hZ2VyLCBXS0hUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5KQpAQCAtNzYs
MTAgKzc2LDEwIEBAIHZvaWQgV0tDb29raWVNYW5hZ2VyR2V0SFRUUENvb2tpZUFjY2VwdFBvbGlj
eShXS0Nvb2tpZU1hbmFnZXJSZWYgY29va2llTWFuYWdlciwKIAogdm9pZCBXS0Nvb2tpZU1hbmFn
ZXJTdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoV0tDb29raWVNYW5hZ2VyUmVmIGNvb2tpZU1h
bmFnZXIpCiB7Ci0gICAgdG9JbXBsKGNvb2tpZU1hbmFnZXIpLT5zdGFydE9ic2VydmluZ0Nvb2tp
ZUNoYW5nZXMoKTsKKyAgICB0b0ltcGwoY29va2llTWFuYWdlciktPnN0YXJ0T2JzZXJ2aW5nQ29v
a2llQ2hhbmdlcyhXZWJDb3JlOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CiB9CiAK
IHZvaWQgV0tDb29raWVNYW5hZ2VyU3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoV0tDb29raWVN
YW5hZ2VyUmVmIGNvb2tpZU1hbmFnZXIpCiB7Ci0gICAgdG9JbXBsKGNvb2tpZU1hbmFnZXIpLT5z
dG9wT2JzZXJ2aW5nQ29va2llQ2hhbmdlcygpOworICAgIHRvSW1wbChjb29raWVNYW5hZ2VyKS0+
c3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoV2ViQ29yZTo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vz
c2lvbklEKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0Q29va2llTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRDb29raWVNYW5hZ2VyLmNwcAppbmRleCA2ZjQ3ZjYwZTc3My4uYzAzY2MwYTk3
ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENv
b2tpZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdENvb2tpZU1hbmFnZXIuY3BwCkBAIC01NSw3ICs1NSw3IEBAIGVudW0gewogc3RydWN0IF9X
ZWJLaXRDb29raWVNYW5hZ2VyUHJpdmF0ZSB7CiAgICAgfl9XZWJLaXRDb29raWVNYW5hZ2VyUHJp
dmF0ZSgpCiAgICAgewotICAgICAgICB3ZWJDb29raWVNYW5hZ2VyLT5zdG9wT2JzZXJ2aW5nQ29v
a2llQ2hhbmdlcygpOworICAgICAgICB3ZWJDb29raWVNYW5hZ2VyLT5zdG9wT2JzZXJ2aW5nQ29v
a2llQ2hhbmdlcyhXZWJDb3JlOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CiAgICAg
fQogCiAgICAgUmVmUHRyPFdlYkNvb2tpZU1hbmFnZXJQcm94eT4gd2ViQ29va2llTWFuYWdlcjsK
QEAgLTE0NSw3ICsxNDUsNyBAQCBXZWJLaXRDb29raWVNYW5hZ2VyKiB3ZWJraXRDb29raWVNYW5h
Z2VyQ3JlYXRlKFdlYkNvb2tpZU1hbmFnZXJQcm94eSogd2ViQ29va2llTQogICAgICAgICBjb29r
aWVzRGlkQ2hhbmdlCiAgICAgfTsKICAgICBXS0Nvb2tpZU1hbmFnZXJTZXRDbGllbnQodG9BUEko
d2ViQ29va2llTWFuYWdlciksICZ3a0Nvb2tpZU1hbmFnZXJDbGllbnQuYmFzZSk7Ci0gICAgbWFu
YWdlci0+cHJpdi0+d2ViQ29va2llTWFuYWdlci0+c3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2Vz
KCk7CisgICAgbWFuYWdlci0+cHJpdi0+d2ViQ29va2llTWFuYWdlci0+c3RhcnRPYnNlcnZpbmdD
b29raWVDaGFuZ2VzKFdlYkNvcmU6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKIAog
ICAgIHJldHVybiBtYW5hZ2VyOwogfQpAQCAtMTY5LDkgKzE2OSw5IEBAIHZvaWQgd2Via2l0X2Nv
b2tpZV9tYW5hZ2VyX3NldF9wZXJzaXN0ZW50X3N0b3JhZ2UoV2ViS2l0Q29va2llTWFuYWdlciog
bWFuYWdlciwKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19DT09LSUVfTUFOQUdFUiht
YW5hZ2VyKSk7CiAgICAgZ19yZXR1cm5faWZfZmFpbChmaWxlbmFtZSk7CiAKLSAgICBtYW5hZ2Vy
LT5wcml2LT53ZWJDb29raWVNYW5hZ2VyLT5zdG9wT2JzZXJ2aW5nQ29va2llQ2hhbmdlcygpOwor
ICAgIG1hbmFnZXItPnByaXYtPndlYkNvb2tpZU1hbmFnZXItPnN0b3BPYnNlcnZpbmdDb29raWVD
aGFuZ2VzKFdlYkNvcmU6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKICAgICBtYW5h
Z2VyLT5wcml2LT53ZWJDb29raWVNYW5hZ2VyLT5zZXRDb29raWVQZXJzaXN0ZW50U3RvcmFnZShT
dHJpbmc6OmZyb21VVEY4KGZpbGVuYW1lKSwgdG9Tb3VwQ29va2llUGVyc2lzdGVudFN0b3JhZ2VU
eXBlKHN0b3JhZ2UpKTsKLSAgICBtYW5hZ2VyLT5wcml2LT53ZWJDb29raWVNYW5hZ2VyLT5zdGFy
dE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoKTsKKyAgICBtYW5hZ2VyLT5wcml2LT53ZWJDb29raWVN
YW5hZ2VyLT5zdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoV2ViQ29yZTo6U2Vzc2lvbklEOjpk
ZWZhdWx0U2Vzc2lvbklEKCkpOwogfQogCiAvKioKQEAgLTI2OSw3ICsyNjksNyBAQCB2b2lkIHdl
YmtpdF9jb29raWVfbWFuYWdlcl9nZXRfZG9tYWluc193aXRoX2Nvb2tpZXMoV2ViS2l0Q29va2ll
TWFuYWdlciogbWFuYWdlcgogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX0NPT0tJRV9N
QU5BR0VSKG1hbmFnZXIpKTsKIAogICAgIEdUYXNrKiB0YXNrID0gZ190YXNrX25ldyhtYW5hZ2Vy
LCBjYW5jZWxsYWJsZSwgY2FsbGJhY2ssIHVzZXJEYXRhKTsKLSAgICBtYW5hZ2VyLT5wcml2LT53
ZWJDb29raWVNYW5hZ2VyLT5nZXRIb3N0bmFtZXNXaXRoQ29va2llcyh0b0dlbmVyaWNDYWxsYmFj
a0Z1bmN0aW9uKHRhc2ssIHdlYmtpdENvb2tpZU1hbmFnZXJHZXREb21haW5zV2l0aENvb2tpZXND
YWxsYmFjaykpOworICAgIG1hbmFnZXItPnByaXYtPndlYkNvb2tpZU1hbmFnZXItPmdldEhvc3Ru
YW1lc1dpdGhDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCB0
b0dlbmVyaWNDYWxsYmFja0Z1bmN0aW9uKHRhc2ssIHdlYmtpdENvb2tpZU1hbmFnZXJHZXREb21h
aW5zV2l0aENvb2tpZXNDYWxsYmFjaykpOwogfQogCiAvKioKQEAgLTMwNSw3ICszMDUsNyBAQCB2
b2lkIHdlYmtpdF9jb29raWVfbWFuYWdlcl9kZWxldGVfY29va2llc19mb3JfZG9tYWluKFdlYktp
dENvb2tpZU1hbmFnZXIqIG1hbmFnZQogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX0NP
T0tJRV9NQU5BR0VSKG1hbmFnZXIpKTsKICAgICBnX3JldHVybl9pZl9mYWlsKGRvbWFpbik7CiAK
LSAgICBtYW5hZ2VyLT5wcml2LT53ZWJDb29raWVNYW5hZ2VyLT5kZWxldGVDb29raWVzRm9ySG9z
dG5hbWUoU3RyaW5nOjpmcm9tVVRGOChkb21haW4pKTsKKyAgICBtYW5hZ2VyLT5wcml2LT53ZWJD
b29raWVNYW5hZ2VyLT5kZWxldGVDb29raWVzRm9ySG9zdG5hbWUoV2ViQ29yZTo6U2Vzc2lvbklE
OjpkZWZhdWx0U2Vzc2lvbklEKCksIFN0cmluZzo6ZnJvbVVURjgoZG9tYWluKSk7CiB9CiAKIC8q
KgpAQCAtMzE4LDUgKzMxOCw1IEBAIHZvaWQgd2Via2l0X2Nvb2tpZV9tYW5hZ2VyX2RlbGV0ZV9h
bGxfY29va2llcyhXZWJLaXRDb29raWVNYW5hZ2VyKiBtYW5hZ2VyKQogewogICAgIGdfcmV0dXJu
X2lmX2ZhaWwoV0VCS0lUX0lTX0NPT0tJRV9NQU5BR0VSKG1hbmFnZXIpKTsKIAotICAgIG1hbmFn
ZXItPnByaXYtPndlYkNvb2tpZU1hbmFnZXItPmRlbGV0ZUFsbENvb2tpZXMoKTsKKyAgICBtYW5h
Z2VyLT5wcml2LT53ZWJDb29raWVNYW5hZ2VyLT5kZWxldGVBbGxDb29raWVzKFdlYkNvcmU6OlNl
c3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcApp
bmRleCAyMjhlYTUzM2MyOS4uZjc0OGVlZWVlNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAK
QEAgLTcyNyw3ICs3MjcsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjphZGRTaW5nbGVD
b29raWUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbgogICAgICAgICBGQUlM
X1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhNaXNzaW5nUGFyYW1ldGVyLCAiVGhl
IHBhcmFtZXRlciAnaHR0cE9ubHknIHdhcyBub3QgZm91bmQuIik7CiAKICAgICBXZWJDb29raWVN
YW5hZ2VyUHJveHkqIGNvb2tpZU1hbmFnZXIgPSBtX3Byb2Nlc3NQb29sLT5zdXBwbGVtZW50PFdl
YkNvb2tpZU1hbmFnZXJQcm94eT4oKTsKLSAgICBjb29raWVNYW5hZ2VyLT5hZGRDb29raWUoY29v
a2llLCBhY3RpdmVVUkwuaG9zdCgpKTsKKyAgICBjb29raWVNYW5hZ2VyLT5hZGRDb29raWUoV2Vi
Q29yZTo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIGNvb2tpZSwgYWN0aXZlVVJMLmhv
c3QoKSk7CiAKICAgICBjYWxsYmFjay0+c2VuZFN1Y2Nlc3MoKTsKIH0KQEAgLTc0Miw3ICs3NDIs
NyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpkZWxldGVBbGxDb29raWVzKEVycm9yU3Ry
aW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaQogICAgIEFTU0VSVChhY3RpdmVVUkwuaXNWYWxp
ZCgpKTsKIAogICAgIFdlYkNvb2tpZU1hbmFnZXJQcm94eSogY29va2llTWFuYWdlciA9IG1fcHJv
Y2Vzc1Bvb2wtPnN1cHBsZW1lbnQ8V2ViQ29va2llTWFuYWdlclByb3h5PigpOwotICAgIGNvb2tp
ZU1hbmFnZXItPmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShhY3RpdmVVUkwuaG9zdCgpKTsKKyAg
ICBjb29raWVNYW5hZ2VyLT5kZWxldGVDb29raWVzRm9ySG9zdG5hbWUoV2ViQ29yZTo6U2Vzc2lv
bklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIGFjdGl2ZVVSTC5ob3N0KCkpOwogfQogCiAjaWYgVVNF
KEFQUEtJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVN
YW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFn
ZXJQcm94eS5jcHAKaW5kZXggYzZmZjkzNjAzZWQuLmExYjJjNmRlNjkwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcApAQCAtOTMs
MTUgKzkzLDE1IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZXJlZldlYkNvbnRleHRT
dXBwbGVtZW50KCkKICAgICBBUEk6Ok9iamVjdDo6ZGVyZWYoKTsKIH0KIAotdm9pZCBXZWJDb29r
aWVNYW5hZ2VyUHJveHk6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKHN0ZDo6ZnVuY3Rpb248dm9p
ZCAoQVBJOjpBcnJheSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFja0Z1bmN0aW9uKQor
dm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKFdlYkNv
cmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoQVBJOjpBcnJheSos
IENhbGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGF1dG8gY2Fs
bGJhY2sgPSBBcnJheUNhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7
CiAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CiAgICAg
bV9hcnJheUNhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOwogCi0g
ICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVj
ZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpHZXRIb3N0bmFtZXNXaXRoQ29va2ll
cyhjYWxsYmFja0lEKSk7CisgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nl
c3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpHZXRI
b3N0bmFtZXNXaXRoQ29va2llcyhzZXNzaW9uSUQsIGNhbGxiYWNrSUQpKTsKIH0KLSAgICAKKwog
dm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRpZEdldEhvc3RuYW1lc1dpdGhDb29raWVzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBob3N0bmFtZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAg
ICAgUmVmUHRyPEFycmF5Q2FsbGJhY2s+IGNhbGxiYWNrID0gbV9hcnJheUNhbGxiYWNrcy50YWtl
KGNhbGxiYWNrSUQpOwpAQCAtMTEzLDM5ICsxMTMsNDQgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2Vy
UHJveHk6OmRpZEdldEhvc3RuYW1lc1dpdGhDb29raWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBo
b3MKICAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKEFQSTo6QXJy
YXk6OmNyZWF0ZVN0cmluZ0FycmF5KGhvc3RuYW1lcykucHRyKCkpOwogfQogCi12b2lkIFdlYkNv
b2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKGNvbnN0IFN0cmluZyYg
aG9zdG5hbWUpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQ29va2llc0Zvckhv
c3RuYW1lKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgaG9zdG5h
bWUpCiB7Ci0gICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5j
aGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpEZWxldGVDb29raWVz
Rm9ySG9zdG5hbWUoaG9zdG5hbWUpKTsKKyAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3Jr
aW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFn
ZXI6OkRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShzZXNzaW9uSUQsIGhvc3RuYW1lKSk7CiB9CiAK
LXZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVBbGxDb29raWVzKCkKK3ZvaWQgV2Vi
Q29va2llTWFuYWdlclByb3h5OjpkZWxldGVBbGxDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBz
ZXNzaW9uSUQpCiB7Ci0gICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NS
ZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpEZWxldGVB
bGxDb29raWVzKCkpOworICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNz
UmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6RGVsZXRl
QWxsQ29va2llcyhzZXNzaW9uSUQpKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6
OmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6
OnRpbWVfcG9pbnQgdGltZSkKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVBbGxD
b29raWVzTW9kaWZpZWRTaW5jZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6OmNo
cm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRpbWUpCiB7Ci0gICAgcHJvY2Vzc1Bvb2wo
KS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2Vz
OjpXZWJDb29raWVNYW5hZ2VyOjpEZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZSh0aW1lKSk7
CisgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lm
TmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpEZWxldGVBbGxDb29raWVzTW9k
aWZpZWRTaW5jZShzZXNzaW9uSUQsIHRpbWUpKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2Vy
UHJveHk6OmFkZENvb2tpZShjb25zdCBXZWJDb3JlOjpDb29raWUmIGNvb2tpZSwgY29uc3QgU3Ry
aW5nJiBob3N0bmFtZSkKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjphZGRDb29raWUoV2Vi
Q29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6Q29va2llJiBjb29raWUs
IGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiB7Ci0gICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0
d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVN
YW5hZ2VyOjpBZGRDb29raWUoY29va2llLCBob3N0bmFtZSkpOworICAgIHByb2Nlc3NQb29sKCkt
PnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6
V2ViQ29va2llTWFuYWdlcjo6QWRkQ29va2llKHNlc3Npb25JRCwgY29va2llLCBob3N0bmFtZSkp
OwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c3RhcnRPYnNlcnZpbmdDb29raWVD
aGFuZ2VzKCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzdGFydE9ic2VydmluZ0Nvb2tp
ZUNoYW5nZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RkOjpmdW5jdGlvbjx2b2lk
ICgpPiYmIGNhbGxiYWNrKQogewotICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQ
cm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6
U3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKCkpOworICAgIGlmIChjYWxsYmFjaykKKyAgICAg
ICAgbV9jb29raWVPYnNlcnZlcnMuc2V0KHNlc3Npb25JRCwgV1RGTW92ZShjYWxsYmFjaykpOwor
ICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5l
Y2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U3RhcnRPYnNlcnZpbmdDb29raWVD
aGFuZ2VzKHNlc3Npb25JRCkpOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c3Rv
cE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoKQordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnN0
b3BPYnNlcnZpbmdDb29raWVDaGFuZ2VzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7
Ci0gICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lm
TmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpTdG9wT2JzZXJ2aW5nQ29va2ll
Q2hhbmdlcygpKTsKKyAgICBtX2Nvb2tpZU9ic2VydmVycy5yZW1vdmUoc2Vzc2lvbklEKTsKKyAg
ICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNl
c3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OlN0b3BPYnNlcnZpbmdDb29raWVDaGFu
Z2VzKHNlc3Npb25JRCkpOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Y29va2ll
c0RpZENoYW5nZSgpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Y29va2llc0RpZENoYW5n
ZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIG1fY2xpZW50LmNvb2tpZXNE
aWRDaGFuZ2UodGhpcyk7CisgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX2Nvb2tpZU9ic2VydmVy
cy5nZXQoc2Vzc2lvbklEKSkKKyAgICAgICAgY2FsbGJhY2soKTsKIH0KIAogdm9pZCBXZWJDb29r
aWVNYW5hZ2VyUHJveHk6OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koSFRUUENvb2tpZUFjY2Vw
dFBvbGljeSBwb2xpY3kpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
Q29va2llTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2ll
TWFuYWdlclByb3h5LmgKaW5kZXggNTQ2NmM5NTZmYjYuLjcyMDZjYTY3MGZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5oCkBAIC0zMSw2
ICszMSw3IEBACiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiV2ViQ29u
dGV4dFN1cHBsZW1lbnQuaCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyUHJveHlDbGllbnQu
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
QEAgLTY0LDE3ICs2NSwxNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGluaXRpYWxpemVDbGllbnQo
Y29uc3QgV0tDb29raWVNYW5hZ2VyQ2xpZW50QmFzZSopOwogICAgIAotICAgIHZvaWQgZ2V0SG9z
dG5hbWVzV2l0aENvb2tpZXMoc3RkOjpmdW5jdGlvbjx2b2lkIChBUEk6OkFycmF5KiwgQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+KTsKLSAgICB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShjb25z
dCBTdHJpbmcmIGhvc3RuYW1lKTsKLSAgICB2b2lkIGRlbGV0ZUFsbENvb2tpZXMoKTsKLSAgICB2
b2lkIGRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xv
Y2s6OnRpbWVfcG9pbnQpOwotICAgIHZvaWQgYWRkQ29va2llKGNvbnN0IFdlYkNvcmU6OkNvb2tp
ZSYsIGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpOworICAgIHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENv
b2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklELCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKEFQSTo6QXJyYXkq
LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4pOworICAgIHZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3Ru
YW1lKFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSk7CisgICAgdm9p
ZCBkZWxldGVBbGxDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCk7CisgICAgdm9pZCBkZWxldGVB
bGxDb29raWVzTW9kaWZpZWRTaW5jZShXZWJDb3JlOjpTZXNzaW9uSUQsIHN0ZDo6Y2hyb25vOjpz
eXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQpOworICAgIHZvaWQgYWRkQ29va2llKFdlYkNvcmU6OlNl
c3Npb25JRCwgY29uc3QgV2ViQ29yZTo6Q29va2llJiwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSk7
CiAKICAgICB2b2lkIHNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koSFRUUENvb2tpZUFjY2VwdFBv
bGljeSk7CiAgICAgdm9pZCBnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHN0ZDo6ZnVuY3Rpb248
dm9pZCAoSFRUUENvb2tpZUFjY2VwdFBvbGljeSwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+KTsKIAot
ICAgIHZvaWQgc3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKCk7Ci0gICAgdm9pZCBzdG9wT2Jz
ZXJ2aW5nQ29va2llQ2hhbmdlcygpOworICAgIHZvaWQgc3RhcnRPYnNlcnZpbmdDb29raWVDaGFu
Z2VzKFdlYkNvcmU6OlNlc3Npb25JRCwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiYmID0gbnVsbHB0
cik7CisgICAgdm9pZCBzdG9wT2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhXZWJDb3JlOjpTZXNzaW9u
SUQpOwogCiAjaWYgVVNFKFNPVVApCiAgICAgdm9pZCBzZXRDb29raWVQZXJzaXN0ZW50U3RvcmFn
ZShjb25zdCBTdHJpbmcmIHN0b3JhZ2VQYXRoLCB1aW50MzJfdCBzdG9yYWdlVHlwZSk7CkBAIC05
MCw3ICs5MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRHZXRIb3N0bmFtZXNXaXRoQ29va2ll
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogICAgIHZvaWQg
ZGlkR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSh1aW50MzJfdCBwb2xpY3ksIHVpbnQ2NF90IGNh
bGxiYWNrSUQpOwogCi0gICAgdm9pZCBjb29raWVzRGlkQ2hhbmdlKCk7CisgICAgdm9pZCBjb29r
aWVzRGlkQ2hhbmdlKFdlYkNvcmU6OlNlc3Npb25JRCk7CiAKICAgICAvLyBXZWJDb250ZXh0U3Vw
cGxlbWVudAogICAgIHZvaWQgcHJvY2Vzc1Bvb2xEZXN0cm95ZWQoKSBvdmVycmlkZTsKQEAgLTEw
OSw2ICsxMTAsOCBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxBcnJh
eUNhbGxiYWNrPj4gbV9hcnJheUNhbGxiYWNrczsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQ
dHI8SFRUUENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrPj4gbV9odHRwQ29va2llQWNjZXB0UG9s
aWN5Q2FsbGJhY2tzOwogCisgICAgSGFzaE1hcDxXZWJDb3JlOjpTZXNzaW9uSUQsIHN0ZDo6ZnVu
Y3Rpb248dm9pZCAoKT4+IG1fY29va2llT2JzZXJ2ZXJzOworCiAgICAgV2ViQ29va2llTWFuYWdl
clByb3h5Q2xpZW50IG1fY2xpZW50OwogCiAjaWYgVVNFKFNPVVApCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5p
bgppbmRleCA0OWFjNmRiMjNiMy4uMTJlMDA5MDE4YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpA
QCAtMjQsNSArMjQsNSBAQCBtZXNzYWdlcyAtPiBXZWJDb29raWVNYW5hZ2VyUHJveHkgewogICAg
IERpZEdldEhvc3RuYW1lc1dpdGhDb29raWVzKFZlY3RvcjxTdHJpbmc+IGhvc3RuYW1lcywgdWlu
dDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgRGlkR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSh1aW50
MzJfdCBwb2xpY3ksIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogICAgIAotICAgIENvb2tpZXNEaWRD
aGFuZ2UoKQorICAgIENvb2tpZXNEaWRDaGFuZ2UoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25J
RCkKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJD
b29raWVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJD
b29raWVNYW5hZ2VyLmNwcAppbmRleCBlMTE0OGExYWIzMy4uYTU3ZjkzNzRjMjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdl
ci5jcHAKQEAgLTQyLDggKzQyLDYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCi1zdGF0aWMgV2ViQ29va2llTWFuYWdlciogc2hhcmVkQ29va2llTWFu
YWdlcjsKLQogY29uc3QgY2hhciogV2ViQ29va2llTWFuYWdlcjo6c3VwcGxlbWVudE5hbWUoKQog
ewogICAgIHJldHVybiAiV2ViQ29va2llTWFuYWdlciI7CkBAIC01MywxNSArNTEsMTMgQEAgV2Vi
Q29va2llTWFuYWdlcjo6V2ViQ29va2llTWFuYWdlcihDaGlsZFByb2Nlc3MqIHByb2Nlc3MpCiAg
ICAgOiBtX3Byb2Nlc3MocHJvY2VzcykKIHsKICAgICBtX3Byb2Nlc3MtPmFkZE1lc3NhZ2VSZWNl
aXZlcihNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCAq
dGhpcyk7Ci0KLSAgICBBU1NFUlQoIXNoYXJlZENvb2tpZU1hbmFnZXIpOwotICAgIHNoYXJlZENv
b2tpZU1hbmFnZXIgPSB0aGlzOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmdldEhvc3Ru
YW1lc1dpdGhDb29raWVzKHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYkNvb2tpZU1hbmFn
ZXI6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKFNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpCiB7CiAgICAgSGFzaFNldDxTdHJpbmc+IGhvc3RuYW1lczsKLSAgICBXZWJD
b3JlOjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1
bHRTdG9yYWdlU2Vzc2lvbigpLCBob3N0bmFtZXMpOworICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vz
c2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkK
KyAgICAgICAgV2ViQ29yZTo6Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoKnN0b3JhZ2VTZXNzaW9u
LCBob3N0bmFtZXMpOwogCiAgICAgVmVjdG9yPFN0cmluZz4gaG9zdG5hbWVMaXN0OwogICAgIGNv
cHlUb1ZlY3Rvcihob3N0bmFtZXMsIGhvc3RuYW1lTGlzdCk7CkBAIC02OSw0NSArNjUsNDQgQEAg
dm9pZCBXZWJDb29raWVNYW5hZ2VyOjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyh1aW50NjRfdCBj
YWxsYmFja0lEKQogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdl
clByb3h5OjpEaWRHZXRIb3N0bmFtZXNXaXRoQ29va2llcyhob3N0bmFtZUxpc3QsIGNhbGxiYWNr
SUQpLCAwKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVDb29raWVzRm9ySG9z
dG5hbWUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKLXsKLSAgICBXZWJDb3JlOjpkZWxldGVDb29r
aWVzRm9ySG9zdG5hbWVzKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNz
aW9uKCksIHsgaG9zdG5hbWUgfSk7Ci19Ci0KLXZvaWQgV2ViQ29va2llTWFuYWdlcjo6ZGVsZXRl
QWxsQ29va2llcygpCi17Ci0gICAgV2ViQ29yZTo6ZGVsZXRlQWxsQ29va2llcyhOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpKTsKLX0KLQotdm9pZCBXZWJDb29r
aWVNYW5hZ2VyOjpkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShzdGQ6OmNocm9ubzo6c3lz
dGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRpbWUpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0
ZUNvb2tpZXNGb3JIb3N0bmFtZShTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGhv
c3RuYW1lKQogewotICAgIFdlYkNvcmU6OmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCksIHRpbWUpOworICAg
IGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFn
ZVNlc3Npb24oc2Vzc2lvbklEKSkKKyAgICAgICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llc0Zvckhv
c3RuYW1lcygqc3RvcmFnZVNlc3Npb24sIHsgaG9zdG5hbWUgfSk7CiB9CiAKLXZvaWQgV2ViQ29v
a2llTWFuYWdlcjo6YWRkQ29va2llKGNvbnN0IENvb2tpZSYgY29va2llLCBjb25zdCBTdHJpbmcm
IGhvc3RuYW1lKQordm9pZCBXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVBbGxDb29raWVzKFNlc3Np
b25JRCBzZXNzaW9uSUQpCiB7Ci0gICAgV2ViQ29yZTo6YWRkQ29va2llKE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCksIFVSTChVUkwoKSwgaG9zdG5hbWUpLCBj
b29raWUpOworICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKKyAgICAgICAgV2ViQ29yZTo6ZGVsZXRl
QWxsQ29va2llcygqc3RvcmFnZVNlc3Npb24pOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6
OnN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcygpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRl
bGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFNlc3Npb25JRCBzZXNzaW9uSUQsIHN0ZDo6Y2hy
b25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgdGltZSkKIHsKLSAgICBXZWJDb3JlOjpzdGFy
dE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoY29va2llc0RpZENoYW5nZSk7CisgICAgaWYgKGF1dG8q
IHN0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihz
ZXNzaW9uSUQpKQorICAgICAgICBXZWJDb3JlOjpkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5j
ZSgqc3RvcmFnZVNlc3Npb24sIHRpbWUpOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnN0
b3BPYnNlcnZpbmdDb29raWVDaGFuZ2VzKCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6YWRkQ29v
a2llKFNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IENvb2tpZSYgY29va2llLCBjb25zdCBTdHJp
bmcmIGhvc3RuYW1lKQogewotICAgIFdlYkNvcmU6OnN0b3BPYnNlcnZpbmdDb29raWVDaGFuZ2Vz
KCk7CisgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQorICAgICAgICBXZWJDb3JlOjphZGRDb29raWUo
KnN0b3JhZ2VTZXNzaW9uLCBVUkwoVVJMKCksIGhvc3RuYW1lKSwgY29va2llKTsKIH0KIAotdm9p
ZCBXZWJDb29raWVNYW5hZ2VyOjpjb29raWVzRGlkQ2hhbmdlKCkKK3ZvaWQgV2ViQ29va2llTWFu
YWdlcjo6c3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKFNlc3Npb25JRCBzZXNzaW9uSUQpCiB7
Ci0gICAgc2hhcmVkQ29va2llTWFuYWdlci0+ZGlzcGF0Y2hDb29raWVzRGlkQ2hhbmdlKCk7Cisg
ICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9y
YWdlU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIFdlYkNvcmU6OnN0YXJ0T2JzZXJ2aW5n
Q29va2llQ2hhbmdlcygqc3RvcmFnZVNlc3Npb24sIFt0aGlzLCBzZXNzaW9uSURdIHsKKyAgICAg
ICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgICAgICAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6Q29va2llc0RpZENoYW5nZShz
ZXNzaW9uSUQpLCAwKTsKKyAgICAgICAgfSk7CisgICAgfQogfQogCi12b2lkIFdlYkNvb2tpZU1h
bmFnZXI6OmRpc3BhdGNoQ29va2llc0RpZENoYW5nZSgpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXI6
OnN0b3BPYnNlcnZpbmdDb29raWVDaGFuZ2VzKFNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0gICAg
QVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6Q29va2llc0RpZENoYW5nZSgpLCAwKTsKKyAgICBpZiAo
YXV0byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNz
aW9uKHNlc3Npb25JRCkpCisgICAgICAgIFdlYkNvcmU6OnN0b3BPYnNlcnZpbmdDb29raWVDaGFu
Z2VzKCpzdG9yYWdlU2Vzc2lvbik7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6c2V0SFRU
UENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2Vy
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5o
CmluZGV4IGE5OTU4NjYzMzU1Li5mYzNiMmQ5OGQ5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oCkBAIC0zMCw2ICszMCw3
IEBACiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nl
c3NTdXBwbGVtZW50LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1N1cHBsZW1lbnQuaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CkBAIC02MiwyMiAr
NjMsMTggQEAgcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQg
ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJp
ZGU7CiAKLSAgICB2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKHVpbnQ2NF90IGNhbGxiYWNr
SUQpOwotICAgIHZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKGNvbnN0IFN0cmluZyYpOwot
ICAgIHZvaWQgZGVsZXRlQWxsQ29va2llcygpOwotICAgIHZvaWQgZGVsZXRlQWxsQ29va2llc01v
ZGlmaWVkU2luY2Uoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCk7Ci0gICAg
dm9pZCBhZGRDb29raWUoY29uc3QgV2ViQ29yZTo6Q29va2llJiwgY29uc3QgU3RyaW5nJiBob3N0
bmFtZSk7CisgICAgdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhXZWJDb3JlOjpTZXNzaW9u
SUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3Ru
YW1lKFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBkZWxldGVB
bGxDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCk7CisgICAgdm9pZCBkZWxldGVBbGxDb29raWVz
TW9kaWZpZWRTaW5jZShXZWJDb3JlOjpTZXNzaW9uSUQsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xv
Y2s6OnRpbWVfcG9pbnQpOworICAgIHZvaWQgYWRkQ29va2llKFdlYkNvcmU6OlNlc3Npb25JRCwg
Y29uc3QgV2ViQ29yZTo6Q29va2llJiwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSk7CiAKICAgICB2
b2lkIHBsYXRmb3JtU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29va2llQWNjZXB0UG9s
aWN5KTsKICAgICB2b2lkIGdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDY0X3QgY2FsbGJh
Y2tJRCk7CiAgICAgSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwbGF0Zm9ybUdldEhUVFBDb29raWVB
Y2NlcHRQb2xpY3koKTsKIAotICAgIHZvaWQgc3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKCk7
Ci0gICAgdm9pZCBzdG9wT2JzZXJ2aW5nQ29va2llQ2hhbmdlcygpOwotCi0gICAgc3RhdGljIHZv
aWQgY29va2llc0RpZENoYW5nZSgpOwotICAgIHZvaWQgZGlzcGF0Y2hDb29raWVzRGlkQ2hhbmdl
KCk7Ci0KKyAgICB2b2lkIHN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhXZWJDb3JlOjpTZXNz
aW9uSUQpOworICAgIHZvaWQgc3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoV2ViQ29yZTo6U2Vz
c2lvbklEKTsKIAogICAgIENoaWxkUHJvY2VzcyogbV9wcm9jZXNzOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFn
ZXIubWVzc2FnZXMuaW4KaW5kZXggYzJkMTZhZjFjMDEuLjVkNTE1MzY2NDUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2ll
TWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMjQsMTcgKzI0LDE3IEBACiAgKi8KICAKICBtZXNzYWdl
cyAtPiBXZWJDb29raWVNYW5hZ2VyIHsKLSAgICB2b2lkIEdldEhvc3RuYW1lc1dpdGhDb29raWVz
KHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgdm9pZCBEZWxldGVDb29raWVzRm9ySG9zdG5hbWUo
U3RyaW5nIGhvc3RuYW1lKQotICAgIHZvaWQgRGVsZXRlQWxsQ29va2llcygpCi0gICAgdm9pZCBE
ZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0
aW1lX3BvaW50IHRpbWUpCi0gICAgdm9pZCBBZGRDb29raWUoc3RydWN0IFdlYkNvcmU6OkNvb2tp
ZSBjb29raWUsIFN0cmluZyBob3N0bmFtZSkKKyAgICB2b2lkIEdldEhvc3RuYW1lc1dpdGhDb29r
aWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisg
ICAgdm9pZCBEZWxldGVDb29raWVzRm9ySG9zdG5hbWUoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgU3RyaW5nIGhvc3RuYW1lKQorICAgIHZvaWQgRGVsZXRlQWxsQ29va2llcyhXZWJDb3Jl
OjpTZXNzaW9uSUQgc2Vzc2lvbklEKQorICAgIHZvaWQgRGVsZXRlQWxsQ29va2llc01vZGlmaWVk
U2luY2UoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RkOjpjaHJvbm86OnN5c3RlbV9j
bG9jazo6dGltZV9wb2ludCB0aW1lKQorICAgIHZvaWQgQWRkQ29va2llKFdlYkNvcmU6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJDb3JlOjpDb29raWUgY29va2llLCBTdHJpbmcgaG9z
dG5hbWUpCiAKICAgICB2b2lkIFNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDMyX3QgcG9s
aWN5KQogICAgIHZvaWQgR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSh1aW50NjRfdCBjYWxsYmFj
a0lEKQogICAgIAotICAgIHZvaWQgU3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKCkKLSAgICB2
b2lkIFN0b3BPYnNlcnZpbmdDb29raWVDaGFuZ2VzKCkKKyAgICB2b2lkIFN0YXJ0T2JzZXJ2aW5n
Q29va2llQ2hhbmdlcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQorICAgIHZvaWQgU3Rv
cE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIAog
I2lmIFVTRShTT1VQKQogICAgIFNldENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlKFN0cmluZyBzdG9y
YWdlUGF0aCwgdWludDMyX3Qgc3RvcmFnZVR5cGUpCg==
</data>
<flag name="review"
          id="323166"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>301478</attachid>
            <date>2017-02-14 01:39:32 -0800</date>
            <delta_ts>2017-02-14 01:39:32 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>wk-cookies-session.diff</filename>
            <type>text/plain</type>
            <size>35989</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyN2RmNGRlN2ZmMS4uNzAzZDEzZDFiNTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMCBAQAorMjAxNy0wMi0xNCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGln
YWxpYS5jb20+CisKKyAgICAgICAgQ29va2llTWFuYWdlciBvbmx5IHdvcmtzIHdpdGggdGhlIGRl
ZmF1bHQgc2Vzc2lvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTY4MjI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKwor
ICAgICAgICBVcGRhdGUgY29va2llIG9ic2VydmVyIEFQSSB0byB1c2UgYSBzdGQ6OmZ1bmN0aW9u
IGluc3RlYWQgb2YgYSBmdW5jdGlvbiBwb2ludGVyIGFuZCBtYWtlIGl0IHdvcmsgd2l0aCBtdWx0
aXBsZQorICAgICAgICBzZXNzaW9ucyBpbiB0aGUgYmFja2VuZHMgdGhhdCBzdXBwb3J0IGl0Lgor
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Db29raWVTdG9yYWdlLmg6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZOZXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y29va2llQ2hhbmdlQ2FsbGJhY2tNYXApOgorICAgICAgICAoV2ViQ29yZTo6bm90aWZ5
Q29va2llc0NoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6c3RhcnRPYnNlcnZpbmdDb29raWVD
aGFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OnN0b3BPYnNlcnZpbmdDb29raWVDaGFuZ2VzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVTdG9yYWdlTWFjLm1tOgorICAg
ICAgICAoLVtXZWJDb29raWVTdG9yYWdlT2JqQ0FkYXB0ZXIgc3RhcnRMaXN0ZW5pbmdGb3JDb29r
aWVDaGFuZ2VOb3RpZmljYXRpb25zV2l0aENhbGxiYWNrOl0pOgorICAgICAgICAoLVtXZWJDb29r
aWVTdG9yYWdlT2JqQ0FkYXB0ZXIgc3RvcExpc3RlbmluZ0ZvckNvb2tpZUNoYW5nZU5vdGlmaWNh
dGlvbnNdKToKKyAgICAgICAgKFdlYkNvcmU6OnN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyk6
CisgICAgICAgIChXZWJDb3JlOjpzdG9wT2JzZXJ2aW5nQ29va2llQ2hhbmdlcyk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZVN0b3JhZ2VTb3VwLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNvb2tpZUNoYW5nZUNhbGxiYWNrTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OnNv
dXBDb29raWVzQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpzdGFydE9ic2VydmluZ0Nvb2tp
ZUNoYW5nZXMpOgorICAgICAgICAoV2ViQ29yZTo6c3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMp
OgorCiAyMDE3LTAyLTEzICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAg
ICAgICAgUkVHUkVTU0lPTjogVXBkYXRlIHZvbHVtZSBhbmQgc2NydWJiaW5nIHNsaWRlciB0byBt
YXRjaCBISSBkZXNpZ25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Nvb2tpZVN0b3JhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29v
a2llU3RvcmFnZS5oCmluZGV4IDllY2E1ZWMzMGJlLi5jNTA1M2NjOTA1ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Db29raWVTdG9yYWdlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Db29raWVTdG9yYWdlLmgKQEAgLTIzLDE3ICsy
MywxNiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5k
ZWYgQ29va2llU3RvcmFnZV9oCi0jZGVmaW5lIENvb2tpZVN0b3JhZ2VfaAorI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlIDxmdW5jdGlvbmFsPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIFRo
ZXNlIGFyZSBhbHdheXMgb2JzZXJ2aW5nIHRoZSBzaGFyZWQgY29va2llIHN0b3JhZ2UsIGV2ZW4g
d2hlbiBpbiBwcml2YXRlIGJyb3dzaW5nIG1vZGUuCitjbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Np
b247CiAKLXR5cGVkZWYgdm9pZCgqQ29va2llQ2hhbmdlQ2FsbGJhY2tQdHIpKCk7Ci1XRUJDT1JF
X0VYUE9SVCB2b2lkIHN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhDb29raWVDaGFuZ2VDYWxs
YmFja1B0cik7Ci1XRUJDT1JFX0VYUE9SVCB2b2lkIHN0b3BPYnNlcnZpbmdDb29raWVDaGFuZ2Vz
KCk7CitXRUJDT1JFX0VYUE9SVCB2b2lkIHN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhjb25z
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+JiYpOworV0VC
Q09SRV9FWFBPUlQgdm9pZCBzdG9wT2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mKTsKIAogfQogCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llU3RvcmFnZUNGTmV0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llU3RvcmFnZUNGTmV0LmNwcAppbmRleCA3
ZTc5NWUyNDA0Zi4uNjE5YjA3ODkwOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvQ29va2llU3RvcmFnZUNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZVN0b3JhZ2VDRk5ldC5jcHAKQEAgLTI3LDcgKzI3
LDkgQEAKICNpbmNsdWRlICJDb29raWVTdG9yYWdlLmgiCiAKICNpbmNsdWRlICJOZXR3b3JrU3Rv
cmFnZVNlc3Npb24uaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9N
YWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKICNpZiBQTEFU
Rk9STShDT0NPQSkKICNpbmNsdWRlICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCkBAIC00MSwx
MiArNDMsMTcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgUExBVEZPUk0oV0lOKQogCi1z
dGF0aWMgQ29va2llQ2hhbmdlQ2FsbGJhY2tQdHIgY29va2llQ2hhbmdlQ2FsbGJhY2s7CitzdGF0
aWMgSGFzaE1hcDxDRkhUVFBDb29raWVTdG9yYWdlUmVmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+
PiYgY29va2llQ2hhbmdlQ2FsbGJhY2tNYXAoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxIYXNoTWFwPENGSFRUUENvb2tpZVN0b3JhZ2VSZWYsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4+
PiBtYXA7CisgICAgcmV0dXJuIG1hcDsKK30KIAotc3RhdGljIHZvaWQgbm90aWZ5Q29va2llc0No
YW5nZWQoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiwgdm9pZCAqKQorc3RhdGljIHZvaWQgbm90aWZ5
Q29va2llc0NoYW5nZWQoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVTdG9yYWdlLCB2b2lk
ICopCiB7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbXSB7Ci0gICAgICAgIGNvb2tpZUNoYW5nZUNh
bGxiYWNrKCk7CisgICAgY2FsbE9uTWFpblRocmVhZChbY29va2llU3RvcmFnZV0geworICAgICAg
ICBpZiAoYXV0byBjYWxsYmFjayA9IGNvb2tpZUNoYW5nZUNhbGxiYWNrTWFwKCkuZ2V0KGNvb2tp
ZVN0b3JhZ2UpKQorICAgICAgICAgICAgY2FsbGJhY2soKTsKICAgICB9KTsKIH0KIApAQCAtNjEs
MzUgKzY4LDM1IEBAIHN0YXRpYyBpbmxpbmUgQ0ZSdW5Mb29wUmVmIGNvb2tpZVN0b3JhZ2VPYnNl
cnZlclJ1bkxvb3AoKQogICAgIHJldHVybiBsb2FkZXJSdW5Mb29wKCk7CiB9CiAKLXZvaWQgc3Rh
cnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKENvb2tpZUNoYW5nZUNhbGxiYWNrUHRyIGNhbGxiYWNr
KQordm9pZCBzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbiwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiYmIGNhbGxiYWNr
KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBBU1NFUlQoIWNvb2tpZUNo
YW5nZUNhbGxiYWNrKTsKLSAgICBjb29raWVDaGFuZ2VDYWxsYmFjayA9IGNhbGxiYWNrOwotCiAg
ICAgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3AgPSBjb29raWVTdG9yYWdlT2JzZXJ2ZXJSdW5Mb29wKCk7
CiAgICAgQVNTRVJUKHJ1bkxvb3ApOwogCi0gICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3Jh
Z2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9y
YWdlU2Vzc2lvbigpLmNvb2tpZVN0b3JhZ2UoKTsKKyAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2ll
U3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IHN0b3JhZ2VTZXNzaW9uLmNvb2tpZVN0b3JhZ2Uo
KTsKICAgICBBU1NFUlQoY29va2llU3RvcmFnZSk7CiAKKyAgICBBU1NFUlQoY29va2llQ2hhbmdl
Q2FsbGJhY2tNYXAoKS5jb250YWlucyhjb29raWVTdG9yYWdlLmdldCgpKSk7CisgICAgY29va2ll
Q2hhbmdlQ2FsbGJhY2tNYXAoKS5hZGQoY29va2llU3RvcmFnZS5nZXQoKSwgV1RGTW92ZShjYWxs
YmFjaykpOworCiAgICAgQ0ZIVFRQQ29va2llU3RvcmFnZVNjaGVkdWxlV2l0aFJ1bkxvb3AoY29v
a2llU3RvcmFnZS5nZXQoKSwgcnVuTG9vcCwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKICAgICBD
RkhUVFBDb29raWVTdG9yYWdlQWRkT2JzZXJ2ZXIoY29va2llU3RvcmFnZS5nZXQoKSwgcnVuTG9v
cCwga0NGUnVuTG9vcERlZmF1bHRNb2RlLCBub3RpZnlDb29raWVzQ2hhbmdlZCwgMCk7CiB9CiAK
LXZvaWQgc3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoKQordm9pZCBzdG9wT2JzZXJ2aW5nQ29v
a2llQ2hhbmdlcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uKQog
ewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBjb29raWVDaGFuZ2VDYWxsYmFj
ayA9IDA7Ci0KICAgICBDRlJ1bkxvb3BSZWYgcnVuTG9vcCA9IGNvb2tpZVN0b3JhZ2VPYnNlcnZl
clJ1bkxvb3AoKTsKICAgICBBU1NFUlQocnVuTG9vcCk7CiAKLSAgICBSZXRhaW5QdHI8Q0ZIVFRQ
Q29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuY29va2llU3RvcmFnZSgpOworICAgIFJldGFpblB0cjxD
RkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gc3RvcmFnZVNlc3Npb24uY29v
a2llU3RvcmFnZSgpOwogICAgIEFTU0VSVChjb29raWVTdG9yYWdlKTsKIAorICAgIGNvb2tpZUNo
YW5nZUNhbGxiYWNrTWFwKCkucmVtb3ZlKGNvb2tpZVN0b3JhZ2UuZ2V0KCkpOworCiAgICAgQ0ZI
VFRQQ29va2llU3RvcmFnZVJlbW92ZU9ic2VydmVyKGNvb2tpZVN0b3JhZ2UuZ2V0KCksIHJ1bkxv
b3AsIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSwgbm90aWZ5Q29va2llc0NoYW5nZWQsIDApOwogICAg
IENGSFRUUENvb2tpZVN0b3JhZ2VVbnNjaGVkdWxlRnJvbVJ1bkxvb3AoY29va2llU3RvcmFnZS5n
ZXQoKSwgcnVuTG9vcCwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZVN0b3JhZ2VNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVTdG9yYWdlTWFjLm1tCmlu
ZGV4IDhjMGU4YzU1NDcxLi5lNzgyYjA2NmU0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llU3RvcmFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVTdG9yYWdlTWFjLm1tCkBAIC0zMSwxMSAr
MzEsMTEgQEAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBAaW50ZXJmYWNlIFdlYkNvb2tp
ZVN0b3JhZ2VPYmpDQWRhcHRlciA6IE5TT2JqZWN0IHsKLSAgICBDb29raWVDaGFuZ2VDYWxsYmFj
a1B0ciBtX2Nvb2tpZUNoYW5nZUNhbGxiYWNrOworICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4g
bV9jb29raWVDaGFuZ2VDYWxsYmFjazsKIH0KIC0odm9pZClub3RpZnlDb29raWVzQ2hhbmdlZE9u
TWFpblRocmVhZDsKIC0odm9pZCljb29raWVzQ2hhbmdlZE5vdGlmaWNhdGlvbkhhbmRsZXI6KE5T
Tm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uOwotLSh2b2lkKXN0YXJ0TGlzdGVuaW5nRm9yQ29v
a2llQ2hhbmdlTm90aWZpY2F0aW9uc1dpdGhDYWxsYmFjazooQ29va2llQ2hhbmdlQ2FsbGJhY2tQ
dHIpY2FsbGJhY2s7CistKHZvaWQpc3RhcnRMaXN0ZW5pbmdGb3JDb29raWVDaGFuZ2VOb3RpZmlj
YXRpb25zV2l0aENhbGxiYWNrOihzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+JiYpY2FsbGJhY2s7CiAt
KHZvaWQpc3RvcExpc3RlbmluZ0ZvckNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnM7CiBAZW5kCiAK
QEAgLTUzLDE3ICs1MywxNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICAgICBbc2VsZiBw
ZXJmb3JtU2VsZWN0b3JPbk1haW5UaHJlYWQ6QHNlbGVjdG9yKG5vdGlmeUNvb2tpZXNDaGFuZ2Vk
T25NYWluVGhyZWFkKSB3aXRoT2JqZWN0Om5pbCB3YWl0VW50aWxEb25lOkZBTFNFXTsKIH0KIAot
LSh2b2lkKXN0YXJ0TGlzdGVuaW5nRm9yQ29va2llQ2hhbmdlTm90aWZpY2F0aW9uc1dpdGhDYWxs
YmFjazooQ29va2llQ2hhbmdlQ2FsbGJhY2tQdHIpY2FsbGJhY2sKKy0odm9pZClzdGFydExpc3Rl
bmluZ0ZvckNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnNXaXRoQ2FsbGJhY2s6KHN0ZDo6ZnVuY3Rp
b248dm9pZCAoKT4mJiljYWxsYmFjawogewogICAgIEFTU0VSVCghbV9jb29raWVDaGFuZ2VDYWxs
YmFjayk7Ci0gICAgbV9jb29raWVDaGFuZ2VDYWxsYmFjayA9IGNhbGxiYWNrOworICAgIG1fY29v
a2llQ2hhbmdlQ2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsKICAgICBbW05TTm90aWZpY2F0
aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVj
dG9yKGNvb2tpZXNDaGFuZ2VkTm90aWZpY2F0aW9uSGFuZGxlcjopIG5hbWU6TlNIVFRQQ29va2ll
TWFuYWdlckNvb2tpZXNDaGFuZ2VkTm90aWZpY2F0aW9uIG9iamVjdDpbTlNIVFRQQ29va2llU3Rv
cmFnZSBzaGFyZWRIVFRQQ29va2llU3RvcmFnZV1dOwogfQogCiAtKHZvaWQpc3RvcExpc3Rlbmlu
Z0ZvckNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMKIHsKICAgICBbW05TTm90aWZpY2F0aW9uQ2Vu
dGVyIGRlZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVyOnNlbGYgbmFtZTpOU0hUVFBDb29raWVN
YW5hZ2VyQ29va2llc0NoYW5nZWROb3RpZmljYXRpb24gb2JqZWN0Om5pbF07Ci0gICAgbV9jb29r
aWVDaGFuZ2VDYWxsYmFjayA9IDA7CisgICAgbV9jb29raWVDaGFuZ2VDYWxsYmFjayA9IG51bGxw
dHI7CiB9CiAKIEBlbmQKQEAgLTcyLDE0ICs3MiwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHN0YXRpYyBXZWJDb29raWVTdG9yYWdlT2JqQ0FkYXB0ZXIgKmNvb2tpZVN0b3JhZ2VBZGFwdGVy
OwogCi12b2lkIHN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhDb29raWVDaGFuZ2VDYWxsYmFj
a1B0ciBjYWxsYmFjaykKK3ZvaWQgc3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4mJiBjYWxsYmFjaykK
IHsKICAgICBpZiAoIWNvb2tpZVN0b3JhZ2VBZGFwdGVyKQogICAgICAgICBjb29raWVTdG9yYWdl
QWRhcHRlciA9IFtbV2ViQ29va2llU3RvcmFnZU9iakNBZGFwdGVyIGFsbG9jXSBpbml0XTsKLSAg
ICBbY29va2llU3RvcmFnZUFkYXB0ZXIgc3RhcnRMaXN0ZW5pbmdGb3JDb29raWVDaGFuZ2VOb3Rp
ZmljYXRpb25zV2l0aENhbGxiYWNrOmNhbGxiYWNrXTsKKyAgICBbY29va2llU3RvcmFnZUFkYXB0
ZXIgc3RhcnRMaXN0ZW5pbmdGb3JDb29raWVDaGFuZ2VOb3RpZmljYXRpb25zV2l0aENhbGxiYWNr
OldURk1vdmUoY2FsbGJhY2spXTsKIH0KIAotdm9pZCBzdG9wT2JzZXJ2aW5nQ29va2llQ2hhbmdl
cygpCit2b2lkIHN0b3BPYnNlcnZpbmdDb29raWVDaGFuZ2VzKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYpCiB7CiAgICAgLy8gY29va2llU3RvcmFnZUFkYXB0ZXIgY2FuIGJlIG5pbCBoZXJl
LCBpZiB0aGUgV2ViUHJvY2VzcyBjcmFzaGVkIGFuZCB3YXMgcmVzdGFydGVkIGJldHdlZW4KICAg
ICAvLyB3aGVuIHN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyB3YXMgY2FsbGVkLCBhbmQgc3Rv
cE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMgaXMgY3VycmVudGx5IGJlaW5nIGNhbGxlZC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVTdG9yYWdl
U291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llU3Rv
cmFnZVNvdXAuY3BwCmluZGV4IGY0N2ZlZjAzYjU4Li5iNzM0OTY2YjVlYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZVN0b3JhZ2VTb3VwLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llU3RvcmFn
ZVNvdXAuY3BwCkBAIC0yMywzMCArMjMsMzcgQEAKIAogI2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdl
U2Vzc2lvbi5oIgogI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotc3RhdGljIENvb2tpZUNoYW5nZUNhbGxiYWNrUHRyIGNvb2tpZUNoYW5nZUNhbGxi
YWNrOworc3RhdGljIEhhc2hNYXA8U291cENvb2tpZUphciosIHN0ZDo6ZnVuY3Rpb248dm9pZCAo
KT4+JiBjb29raWVDaGFuZ2VDYWxsYmFja01hcCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEhhc2hNYXA8U291cENvb2tpZUphciosIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4+PiBtYXA7
CisgICAgcmV0dXJuIG1hcDsKK30KIAogc3RhdGljIHZvaWQgc291cENvb2tpZXNDaGFuZ2VkKFNv
dXBDb29raWVKYXIqIGphcikKIHsKLSAgICBpZiAoamFyICE9IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuY29va2llU3RvcmFnZSgpKQotICAgICAgICByZXR1
cm47Ci0gICAgY29va2llQ2hhbmdlQ2FsbGJhY2soKTsKKyAgICBpZiAoYXV0byBjYWxsYmFjayA9
IGNvb2tpZUNoYW5nZUNhbGxiYWNrTWFwKCkuZ2V0KGphcikpCisgICAgICAgIGNhbGxiYWNrKCk7
CiB9CiAKLXZvaWQgc3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKENvb2tpZUNoYW5nZUNhbGxi
YWNrUHRyIGNhbGxiYWNrKQordm9pZCBzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbiwgc3RkOjpmdW5jdGlvbjx2b2lk
ICgpPiYmIGNhbGxiYWNrKQogewotICAgIEFTU0VSVCghY29va2llQ2hhbmdlQ2FsbGJhY2spOwot
ICAgIGNvb2tpZUNoYW5nZUNhbGxiYWNrID0gY2FsbGJhY2s7Ci0KLSAgICBnX3NpZ25hbF9jb25u
ZWN0KE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuY29va2ll
U3RvcmFnZSgpLCAiY2hhbmdlZCIsIEdfQ0FMTEJBQ0soc291cENvb2tpZXNDaGFuZ2VkKSwgMCk7
CisgICAgYXV0byogamFyID0gc3RvcmFnZVNlc3Npb24uY29va2llU3RvcmFnZSgpOworICAgIEFT
U0VSVCghY29va2llQ2hhbmdlQ2FsbGJhY2tNYXAoKS5jb250YWlucyhqYXIpKTsKKyAgICBjb29r
aWVDaGFuZ2VDYWxsYmFja01hcCgpLmFkZChqYXIsIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICBn
X3NpZ25hbF9jb25uZWN0KGphciwgImNoYW5nZWQiLCBHX0NBTExCQUNLKHNvdXBDb29raWVzQ2hh
bmdlZCksIG51bGxwdHIpOwogfQogCi12b2lkIHN0b3BPYnNlcnZpbmdDb29raWVDaGFuZ2VzKCkK
K3ZvaWQgc3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiBzdG9yYWdlU2Vzc2lvbikKIHsKLSAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0
X2J5X2Z1bmMoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5j
b29raWVTdG9yYWdlKCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHNvdXBDb29raWVzQ2hhbmdl
ZCksIG51bGxwdHIpOwotICAgIGNvb2tpZUNoYW5nZUNhbGxiYWNrID0gbnVsbHB0cjsKKyAgICBh
dXRvKiBqYXIgPSBzdG9yYWdlU2Vzc2lvbi5jb29raWVTdG9yYWdlKCk7CisgICAgQVNTRVJUKGNv
b2tpZUNoYW5nZUNhbGxiYWNrTWFwKCkuY29udGFpbnMoamFyKSk7CisgICAgY29va2llQ2hhbmdl
Q2FsbGJhY2tNYXAoKS5yZW1vdmUoamFyKTsKKyAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25u
ZWN0X2J5X2Z1bmMoamFyLCByZWludGVycHJldF9jYXN0PHZvaWQqPihzb3VwQ29va2llc0NoYW5n
ZWQpLCBudWxscHRyKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGUwNzIxN2YyNGZlLi4zNjA0YTZl
YjhkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDE3LTAyLTE0ICBDYXJsb3MgR2Fy
Y2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBDb29raWVNYW5hZ2Vy
IG9ubHkgd29ya3Mgd2l0aCB0aGUgZGVmYXVsdCBzZXNzaW9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjgyMjkKKworICAgICAgICBSZXZpZXdlZCBi
eSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgIE1ha2UgQ29va2llTWFuYWdlciBzZXNzaW9u
IGF3YXJlIGJ5IGFkZGluZyBhIFNlc3Npb25JRCBwYXJhbWV0ZXIgdG8gYWxsIGl0cyBmdW5jdGlv
bnMsIGFuZCB1cGRhdGUgYWxsIHRoZSBjYWxsZXJzCisgICAgICAgIHRvIHBhc3MgdGhlIGRlZmF1
bHQgc2Vzc2lvbiBJRCwgcHJlc2VydmluZyB0aGUgY3VycmVudAorICAgICAgICBiZWhhdmlvci4g
V2ViQ29va2llTWFuYWdlclByb3h5OjpzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoKSBub3cg
YWxzbyByZWNlaXZlcyBhbiBvcHRpb25hbCBjYWxsYmFjayB0byBiZQorICAgICAgICBjYWxsZWQg
b24gZXZlcnkgY2hhbmdlLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29va2llTWFu
YWdlci5jcHA6CisgICAgICAgIChXS0Nvb2tpZU1hbmFnZXJHZXRIb3N0bmFtZXNXaXRoQ29va2ll
cyk6CisgICAgICAgIChXS0Nvb2tpZU1hbmFnZXJEZWxldGVDb29raWVzRm9ySG9zdG5hbWUpOgor
ICAgICAgICAoV0tDb29raWVNYW5hZ2VyRGVsZXRlQWxsQ29va2llcyk6CisgICAgICAgIChXS0Nv
b2tpZU1hbmFnZXJEZWxldGVBbGxDb29raWVzTW9kaWZpZWRBZnRlckRhdGUpOgorICAgICAgICAo
V0tDb29raWVNYW5hZ2VyU3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKToKKyAgICAgICAgKFdL
Q29va2llTWFuYWdlclN0b3BPYnNlcnZpbmdDb29raWVDaGFuZ2VzKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRDb29raWVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKF9XZWJLaXRD
b29raWVNYW5hZ2VyUHJpdmF0ZTo6fl9XZWJLaXRDb29raWVNYW5hZ2VyUHJpdmF0ZSk6CisgICAg
ICAgICh3ZWJraXRDb29raWVNYW5hZ2VyQ3JlYXRlKToKKyAgICAgICAgKHdlYmtpdF9jb29raWVf
bWFuYWdlcl9zZXRfcGVyc2lzdGVudF9zdG9yYWdlKToKKyAgICAgICAgKHdlYmtpdF9jb29raWVf
bWFuYWdlcl9nZXRfZG9tYWluc193aXRoX2Nvb2tpZXMpOgorICAgICAgICAod2Via2l0X2Nvb2tp
ZV9tYW5hZ2VyX2RlbGV0ZV9jb29raWVzX2Zvcl9kb21haW4pOgorICAgICAgICAod2Via2l0X2Nv
b2tpZV9tYW5hZ2VyX2RlbGV0ZV9hbGxfY29va2llcyk6CisgICAgICAgICogVUlQcm9jZXNzL0F1
dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJB
dXRvbWF0aW9uU2Vzc2lvbjo6YWRkU2luZ2xlQ29va2llKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
QXV0b21hdGlvblNlc3Npb246OmRlbGV0ZUFsbENvb2tpZXMpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVN
YW5hZ2VyUHJveHk6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUFsbENvb2tpZXMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUFsbENvb2tpZXNNb2Rp
ZmllZFNpbmNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjphZGRD
b29raWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OnN0YXJ0T2Jz
ZXJ2aW5nQ29va2llQ2hhbmdlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6c3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b29raWVNYW5hZ2VyUHJveHk6OmNvb2tpZXNEaWRDaGFuZ2UpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJDb29raWVNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29va2ll
TWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvQ29va2llcy9X
ZWJDb29raWVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6
V2ViQ29va2llTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6Omdl
dEhvc3RuYW1lc1dpdGhDb29raWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdl
cjo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2ll
TWFuYWdlcjo6ZGVsZXRlQWxsQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1h
bmFnZXI6OmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViQ29va2llTWFuYWdlcjo6YWRkQ29va2llKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2ll
TWFuYWdlcjo6c3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViQ29va2llTWFuYWdlcjo6c3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2FnZXMuaW46CisKIDIwMTctMDItMTIg
IEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rvcjog
ZXhwb3NlIHN5c3RlbSB1c2VyIGludGVyZmFjZSBsYXlvdXQgZGlyZWN0aW9uIHRocm91Z2ggSW5z
cGVjdG9yRnJvbnRlbmRIb3N0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tDb29raWVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS0Nvb2tpZU1hbmFnZXIuY3BwCmluZGV4IGU0YTMwNjExYTA5Li43NjI0YmVlZTk0YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29va2llTWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29va2llTWFuYWdlci5j
cHAKQEAgLTQzLDE3ICs0MywxNyBAQCB2b2lkIFdLQ29va2llTWFuYWdlclNldENsaWVudChXS0Nv
b2tpZU1hbmFnZXJSZWYgY29va2llTWFuYWdlclJlZiwgY29uc3QgV0tDb29raQogCiB2b2lkIFdL
Q29va2llTWFuYWdlckdldEhvc3RuYW1lc1dpdGhDb29raWVzKFdLQ29va2llTWFuYWdlclJlZiBj
b29raWVNYW5hZ2VyUmVmLCB2b2lkKiBjb250ZXh0LCBXS0Nvb2tpZU1hbmFnZXJHZXRDb29raWVI
b3N0bmFtZXNGdW5jdGlvbiBjYWxsYmFjaykKIHsKLSAgICB0b0ltcGwoY29va2llTWFuYWdlclJl
ZiktPmdldEhvc3RuYW1lc1dpdGhDb29raWVzKHRvR2VuZXJpY0NhbGxiYWNrRnVuY3Rpb24oY29u
dGV4dCwgY2FsbGJhY2spKTsKKyAgICB0b0ltcGwoY29va2llTWFuYWdlclJlZiktPmdldEhvc3Ru
YW1lc1dpdGhDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCB0
b0dlbmVyaWNDYWxsYmFja0Z1bmN0aW9uKGNvbnRleHQsIGNhbGxiYWNrKSk7CiB9CiAKIHZvaWQg
V0tDb29raWVNYW5hZ2VyRGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKFdLQ29va2llTWFuYWdlclJl
ZiBjb29raWVNYW5hZ2VyUmVmLCBXS1N0cmluZ1JlZiBob3N0bmFtZSkKIHsKLSAgICB0b0ltcGwo
Y29va2llTWFuYWdlclJlZiktPmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZSh0b0ltcGwoaG9zdG5h
bWUpLT5zdHJpbmcoKSk7CisgICAgdG9JbXBsKGNvb2tpZU1hbmFnZXJSZWYpLT5kZWxldGVDb29r
aWVzRm9ySG9zdG5hbWUoV2ViQ29yZTo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIHRv
SW1wbChob3N0bmFtZSktPnN0cmluZygpKTsKIH0KIAogdm9pZCBXS0Nvb2tpZU1hbmFnZXJEZWxl
dGVBbGxDb29raWVzKFdLQ29va2llTWFuYWdlclJlZiBjb29raWVNYW5hZ2VyUmVmKQogewotICAg
IHRvSW1wbChjb29raWVNYW5hZ2VyUmVmKS0+ZGVsZXRlQWxsQ29va2llcygpOworICAgIHRvSW1w
bChjb29raWVNYW5hZ2VyUmVmKS0+ZGVsZXRlQWxsQ29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQ6
OmRlZmF1bHRTZXNzaW9uSUQoKSk7CiB9CiAKIHZvaWQgV0tDb29raWVNYW5hZ2VyRGVsZXRlQWxs
Q29va2llc01vZGlmaWVkQWZ0ZXJEYXRlKFdLQ29va2llTWFuYWdlclJlZiBjb29raWVNYW5hZ2Vy
UmVmLCBkb3VibGUgZGF0ZSkKQEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBXS0Nvb2tpZU1hbmFnZXJE
ZWxldGVBbGxDb29raWVzTW9kaWZpZWRBZnRlckRhdGUoV0tDb29raWVNYW5hZ2VyUmVmIGNvb2tp
ZU0KICAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOjpjaHJvbm87CiAKICAgICBhdXRvIHRpbWUgPSBz
eXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQoZHVyYXRpb25fY2FzdDxzeXN0ZW1fY2xvY2s6OmR1cmF0
aW9uPihkdXJhdGlvbjxkb3VibGU+KGRhdGUpKSk7Ci0gICAgdG9JbXBsKGNvb2tpZU1hbmFnZXJS
ZWYpLT5kZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZSh0aW1lKTsKKyAgICB0b0ltcGwoY29v
a2llTWFuYWdlclJlZiktPmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFdlYkNvcmU6OlNl
c3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCB0aW1lKTsKIH0KIAogdm9pZCBXS0Nvb2tpZU1h
bmFnZXJTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFdLQ29va2llTWFuYWdlclJlZiBjb29raWVN
YW5hZ2VyLCBXS0hUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5KQpAQCAtNzYsMTAgKzc2LDEw
IEBAIHZvaWQgV0tDb29raWVNYW5hZ2VyR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShXS0Nvb2tp
ZU1hbmFnZXJSZWYgY29va2llTWFuYWdlciwKIAogdm9pZCBXS0Nvb2tpZU1hbmFnZXJTdGFydE9i
c2VydmluZ0Nvb2tpZUNoYW5nZXMoV0tDb29raWVNYW5hZ2VyUmVmIGNvb2tpZU1hbmFnZXIpCiB7
Ci0gICAgdG9JbXBsKGNvb2tpZU1hbmFnZXIpLT5zdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMo
KTsKKyAgICB0b0ltcGwoY29va2llTWFuYWdlciktPnN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdl
cyhXZWJDb3JlOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CiB9CiAKIHZvaWQgV0tD
b29raWVNYW5hZ2VyU3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoV0tDb29raWVNYW5hZ2VyUmVm
IGNvb2tpZU1hbmFnZXIpCiB7Ci0gICAgdG9JbXBsKGNvb2tpZU1hbmFnZXIpLT5zdG9wT2JzZXJ2
aW5nQ29va2llQ2hhbmdlcygpOworICAgIHRvSW1wbChjb29raWVNYW5hZ2VyKS0+c3RvcE9ic2Vy
dmluZ0Nvb2tpZUNoYW5nZXMoV2ViQ29yZTo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
Q29va2llTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRDb29raWVNYW5hZ2VyLmNwcAppbmRleCA2ZjQ3ZjYwZTc3My4uYzAzY2MwYTk3ZDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvb2tpZU1hbmFn
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvb2tp
ZU1hbmFnZXIuY3BwCkBAIC01NSw3ICs1NSw3IEBAIGVudW0gewogc3RydWN0IF9XZWJLaXRDb29r
aWVNYW5hZ2VyUHJpdmF0ZSB7CiAgICAgfl9XZWJLaXRDb29raWVNYW5hZ2VyUHJpdmF0ZSgpCiAg
ICAgewotICAgICAgICB3ZWJDb29raWVNYW5hZ2VyLT5zdG9wT2JzZXJ2aW5nQ29va2llQ2hhbmdl
cygpOworICAgICAgICB3ZWJDb29raWVNYW5hZ2VyLT5zdG9wT2JzZXJ2aW5nQ29va2llQ2hhbmdl
cyhXZWJDb3JlOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CiAgICAgfQogCiAgICAg
UmVmUHRyPFdlYkNvb2tpZU1hbmFnZXJQcm94eT4gd2ViQ29va2llTWFuYWdlcjsKQEAgLTE0NSw3
ICsxNDUsNyBAQCBXZWJLaXRDb29raWVNYW5hZ2VyKiB3ZWJraXRDb29raWVNYW5hZ2VyQ3JlYXRl
KFdlYkNvb2tpZU1hbmFnZXJQcm94eSogd2ViQ29va2llTQogICAgICAgICBjb29raWVzRGlkQ2hh
bmdlCiAgICAgfTsKICAgICBXS0Nvb2tpZU1hbmFnZXJTZXRDbGllbnQodG9BUEkod2ViQ29va2ll
TWFuYWdlciksICZ3a0Nvb2tpZU1hbmFnZXJDbGllbnQuYmFzZSk7Ci0gICAgbWFuYWdlci0+cHJp
di0+d2ViQ29va2llTWFuYWdlci0+c3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKCk7CisgICAg
bWFuYWdlci0+cHJpdi0+d2ViQ29va2llTWFuYWdlci0+c3RhcnRPYnNlcnZpbmdDb29raWVDaGFu
Z2VzKFdlYkNvcmU6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKIAogICAgIHJldHVy
biBtYW5hZ2VyOwogfQpAQCAtMTY5LDkgKzE2OSw5IEBAIHZvaWQgd2Via2l0X2Nvb2tpZV9tYW5h
Z2VyX3NldF9wZXJzaXN0ZW50X3N0b3JhZ2UoV2ViS2l0Q29va2llTWFuYWdlciogbWFuYWdlciwK
ICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19DT09LSUVfTUFOQUdFUihtYW5hZ2VyKSk7
CiAgICAgZ19yZXR1cm5faWZfZmFpbChmaWxlbmFtZSk7CiAKLSAgICBtYW5hZ2VyLT5wcml2LT53
ZWJDb29raWVNYW5hZ2VyLT5zdG9wT2JzZXJ2aW5nQ29va2llQ2hhbmdlcygpOworICAgIG1hbmFn
ZXItPnByaXYtPndlYkNvb2tpZU1hbmFnZXItPnN0b3BPYnNlcnZpbmdDb29raWVDaGFuZ2VzKFdl
YkNvcmU6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKICAgICBtYW5hZ2VyLT5wcml2
LT53ZWJDb29raWVNYW5hZ2VyLT5zZXRDb29raWVQZXJzaXN0ZW50U3RvcmFnZShTdHJpbmc6OmZy
b21VVEY4KGZpbGVuYW1lKSwgdG9Tb3VwQ29va2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlKHN0b3Jh
Z2UpKTsKLSAgICBtYW5hZ2VyLT5wcml2LT53ZWJDb29raWVNYW5hZ2VyLT5zdGFydE9ic2Vydmlu
Z0Nvb2tpZUNoYW5nZXMoKTsKKyAgICBtYW5hZ2VyLT5wcml2LT53ZWJDb29raWVNYW5hZ2VyLT5z
dGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoV2ViQ29yZTo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vz
c2lvbklEKCkpOwogfQogCiAvKioKQEAgLTI2OSw3ICsyNjksNyBAQCB2b2lkIHdlYmtpdF9jb29r
aWVfbWFuYWdlcl9nZXRfZG9tYWluc193aXRoX2Nvb2tpZXMoV2ViS2l0Q29va2llTWFuYWdlciog
bWFuYWdlcgogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX0NPT0tJRV9NQU5BR0VSKG1h
bmFnZXIpKTsKIAogICAgIEdUYXNrKiB0YXNrID0gZ190YXNrX25ldyhtYW5hZ2VyLCBjYW5jZWxs
YWJsZSwgY2FsbGJhY2ssIHVzZXJEYXRhKTsKLSAgICBtYW5hZ2VyLT5wcml2LT53ZWJDb29raWVN
YW5hZ2VyLT5nZXRIb3N0bmFtZXNXaXRoQ29va2llcyh0b0dlbmVyaWNDYWxsYmFja0Z1bmN0aW9u
KHRhc2ssIHdlYmtpdENvb2tpZU1hbmFnZXJHZXREb21haW5zV2l0aENvb2tpZXNDYWxsYmFjaykp
OworICAgIG1hbmFnZXItPnByaXYtPndlYkNvb2tpZU1hbmFnZXItPmdldEhvc3RuYW1lc1dpdGhD
b29raWVzKFdlYkNvcmU6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCB0b0dlbmVyaWND
YWxsYmFja0Z1bmN0aW9uKHRhc2ssIHdlYmtpdENvb2tpZU1hbmFnZXJHZXREb21haW5zV2l0aENv
b2tpZXNDYWxsYmFjaykpOwogfQogCiAvKioKQEAgLTMwNSw3ICszMDUsNyBAQCB2b2lkIHdlYmtp
dF9jb29raWVfbWFuYWdlcl9kZWxldGVfY29va2llc19mb3JfZG9tYWluKFdlYktpdENvb2tpZU1h
bmFnZXIqIG1hbmFnZQogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX0NPT0tJRV9NQU5B
R0VSKG1hbmFnZXIpKTsKICAgICBnX3JldHVybl9pZl9mYWlsKGRvbWFpbik7CiAKLSAgICBtYW5h
Z2VyLT5wcml2LT53ZWJDb29raWVNYW5hZ2VyLT5kZWxldGVDb29raWVzRm9ySG9zdG5hbWUoU3Ry
aW5nOjpmcm9tVVRGOChkb21haW4pKTsKKyAgICBtYW5hZ2VyLT5wcml2LT53ZWJDb29raWVNYW5h
Z2VyLT5kZWxldGVDb29raWVzRm9ySG9zdG5hbWUoV2ViQ29yZTo6U2Vzc2lvbklEOjpkZWZhdWx0
U2Vzc2lvbklEKCksIFN0cmluZzo6ZnJvbVVURjgoZG9tYWluKSk7CiB9CiAKIC8qKgpAQCAtMzE4
LDUgKzMxOCw1IEBAIHZvaWQgd2Via2l0X2Nvb2tpZV9tYW5hZ2VyX2RlbGV0ZV9hbGxfY29va2ll
cyhXZWJLaXRDb29raWVNYW5hZ2VyKiBtYW5hZ2VyKQogewogICAgIGdfcmV0dXJuX2lmX2ZhaWwo
V0VCS0lUX0lTX0NPT0tJRV9NQU5BR0VSKG1hbmFnZXIpKTsKIAotICAgIG1hbmFnZXItPnByaXYt
PndlYkNvb2tpZU1hbmFnZXItPmRlbGV0ZUFsbENvb2tpZXMoKTsKKyAgICBtYW5hZ2VyLT5wcml2
LT53ZWJDb29raWVNYW5hZ2VyLT5kZWxldGVBbGxDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRDo6
ZGVmYXVsdFNlc3Npb25JRCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCAyMjhl
YTUzM2MyOS4uZjc0OGVlZWVlNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKQEAgLTcyNyw3
ICs3MjcsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjphZGRTaW5nbGVDb29raWUoRXJy
b3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbgogICAgICAgICBGQUlMX1dJVEhfUFJF
REVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhNaXNzaW5nUGFyYW1ldGVyLCAiVGhlIHBhcmFtZXRl
ciAnaHR0cE9ubHknIHdhcyBub3QgZm91bmQuIik7CiAKICAgICBXZWJDb29raWVNYW5hZ2VyUHJv
eHkqIGNvb2tpZU1hbmFnZXIgPSBtX3Byb2Nlc3NQb29sLT5zdXBwbGVtZW50PFdlYkNvb2tpZU1h
bmFnZXJQcm94eT4oKTsKLSAgICBjb29raWVNYW5hZ2VyLT5hZGRDb29raWUoY29va2llLCBhY3Rp
dmVVUkwuaG9zdCgpKTsKKyAgICBjb29raWVNYW5hZ2VyLT5hZGRDb29raWUoV2ViQ29yZTo6U2Vz
c2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIGNvb2tpZSwgYWN0aXZlVVJMLmhvc3QoKSk7CiAK
ICAgICBjYWxsYmFjay0+c2VuZFN1Y2Nlc3MoKTsKIH0KQEAgLTc0Miw3ICs3NDIsNyBAQCB2b2lk
IFdlYkF1dG9tYXRpb25TZXNzaW9uOjpkZWxldGVBbGxDb29raWVzKEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgY29uc3QgU3RyaQogICAgIEFTU0VSVChhY3RpdmVVUkwuaXNWYWxpZCgpKTsKIAog
ICAgIFdlYkNvb2tpZU1hbmFnZXJQcm94eSogY29va2llTWFuYWdlciA9IG1fcHJvY2Vzc1Bvb2wt
PnN1cHBsZW1lbnQ8V2ViQ29va2llTWFuYWdlclByb3h5PigpOwotICAgIGNvb2tpZU1hbmFnZXIt
PmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShhY3RpdmVVUkwuaG9zdCgpKTsKKyAgICBjb29raWVN
YW5hZ2VyLT5kZWxldGVDb29raWVzRm9ySG9zdG5hbWUoV2ViQ29yZTo6U2Vzc2lvbklEOjpkZWZh
dWx0U2Vzc2lvbklEKCksIGFjdGl2ZVVSTC5ob3N0KCkpOwogfQogCiAjaWYgVVNFKEFQUEtJVCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5j
cHAKaW5kZXggYzZmZjkzNjAzZWQuLmExYjJjNmRlNjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcApAQCAtOTMsMTUgKzkzLDE1
IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZXJlZldlYkNvbnRleHRTdXBwbGVtZW50
KCkKICAgICBBUEk6Ok9iamVjdDo6ZGVyZWYoKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2Vy
UHJveHk6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKHN0ZDo6ZnVuY3Rpb248dm9pZCAoQVBJOjpB
cnJheSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJD
b29raWVNYW5hZ2VyUHJveHk6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKFdlYkNvcmU6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoQVBJOjpBcnJheSosIENhbGxiYWNr
QmFzZTo6RXJyb3IpPiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGF1dG8gY2FsbGJhY2sgPSBB
cnJheUNhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CiAgICAgdWlu
dDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CiAgICAgbV9hcnJheUNh
bGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOwogCi0gICAgcHJvY2Vz
c1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1l
c3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpHZXRIb3N0bmFtZXNXaXRoQ29va2llcyhjYWxsYmFj
a0lEKSk7CisgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5j
aGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpHZXRIb3N0bmFtZXNX
aXRoQ29va2llcyhzZXNzaW9uSUQsIGNhbGxiYWNrSUQpKTsKIH0KLSAgICAKKwogdm9pZCBXZWJD
b29raWVNYW5hZ2VyUHJveHk6OmRpZEdldEhvc3RuYW1lc1dpdGhDb29raWVzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBob3N0bmFtZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAgICAgUmVmUHRy
PEFycmF5Q2FsbGJhY2s+IGNhbGxiYWNrID0gbV9hcnJheUNhbGxiYWNrcy50YWtlKGNhbGxiYWNr
SUQpOwpAQCAtMTEzLDM5ICsxMTMsNDQgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRp
ZEdldEhvc3RuYW1lc1dpdGhDb29raWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBob3MKICAgICBj
YWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKEFQSTo6QXJyYXk6OmNyZWF0
ZVN0cmluZ0FycmF5KGhvc3RuYW1lcykucHRyKCkpOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFn
ZXJQcm94eTo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUp
Cit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKFdl
YkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiB7Ci0g
ICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVj
ZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpEZWxldGVDb29raWVzRm9ySG9zdG5h
bWUoaG9zdG5hbWUpKTsKKyAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vz
c1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkRlbGV0
ZUNvb2tpZXNGb3JIb3N0bmFtZShzZXNzaW9uSUQsIGhvc3RuYW1lKSk7CiB9CiAKLXZvaWQgV2Vi
Q29va2llTWFuYWdlclByb3h5OjpkZWxldGVBbGxDb29raWVzKCkKK3ZvaWQgV2ViQ29va2llTWFu
YWdlclByb3h5OjpkZWxldGVBbGxDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQp
CiB7Ci0gICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGlu
Z0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpEZWxldGVBbGxDb29raWVz
KCkpOworICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hp
bmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6RGVsZXRlQWxsQ29va2ll
cyhzZXNzaW9uSUQpKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUFs
bENvb2tpZXNNb2RpZmllZFNpbmNlKHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9p
bnQgdGltZSkKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVBbGxDb29raWVzTW9k
aWZpZWRTaW5jZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6OmNocm9ubzo6c3lz
dGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRpbWUpCiB7Ci0gICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRv
TmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29r
aWVNYW5hZ2VyOjpEZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZSh0aW1lKSk7CisgICAgcHJv
Y2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5
KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpEZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5j
ZShzZXNzaW9uSUQsIHRpbWUpKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmFk
ZENvb2tpZShjb25zdCBXZWJDb3JlOjpDb29raWUmIGNvb2tpZSwgY29uc3QgU3RyaW5nJiBob3N0
bmFtZSkKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjphZGRDb29raWUoV2ViQ29yZTo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6Q29va2llJiBjb29raWUsIGNvbnN0IFN0
cmluZyYgaG9zdG5hbWUpCiB7Ci0gICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1By
b2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpB
ZGRDb29raWUoY29va2llLCBob3N0bmFtZSkpOworICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05l
dHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2ll
TWFuYWdlcjo6QWRkQ29va2llKHNlc3Npb25JRCwgY29va2llLCBob3N0bmFtZSkpOwogfQogCi12
b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKCkK
K3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMo
V2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiYmIGNh
bGxiYWNrKQogewotICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVs
YXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U3RhcnRPYnNl
cnZpbmdDb29raWVDaGFuZ2VzKCkpOworICAgIGlmIChjYWxsYmFjaykKKyAgICAgICAgbV9jb29r
aWVPYnNlcnZlcnMuc2V0KHNlc3Npb25JRCwgV1RGTW92ZShjYWxsYmFjaykpOworICAgIHByb2Nl
c3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShN
ZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKHNl
c3Npb25JRCkpOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c3RvcE9ic2Vydmlu
Z0Nvb2tpZUNoYW5nZXMoKQordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnN0b3BPYnNlcnZp
bmdDb29raWVDaGFuZ2VzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0gICAgcHJv
Y2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5
KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpTdG9wT2JzZXJ2aW5nQ29va2llQ2hhbmdlcygp
KTsKKyAgICBtX2Nvb2tpZU9ic2VydmVycy5yZW1vdmUoc2Vzc2lvbklEKTsKKyAgICBwcm9jZXNz
UG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVz
c2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OlN0b3BPYnNlcnZpbmdDb29raWVDaGFuZ2VzKHNlc3Np
b25JRCkpOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Y29va2llc0RpZENoYW5n
ZSgpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Y29va2llc0RpZENoYW5nZShXZWJDb3Jl
OjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIG1fY2xpZW50LmNvb2tpZXNEaWRDaGFuZ2Uo
dGhpcyk7CisgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX2Nvb2tpZU9ic2VydmVycy5nZXQoc2Vz
c2lvbklEKSkKKyAgICAgICAgY2FsbGJhY2soKTsKIH0KIAogdm9pZCBXZWJDb29raWVNYW5hZ2Vy
UHJveHk6OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koSFRUUENvb2tpZUFjY2VwdFBvbGljeSBw
b2xpY3kpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFu
YWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclBy
b3h5LmgKaW5kZXggNTQ2NmM5NTZmYjYuLjcyMDZjYTY3MGZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5oCkBAIC0zMSw2ICszMSw3IEBA
CiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dFN1cHBs
ZW1lbnQuaCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyUHJveHlDbGllbnQuaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTY0LDE3
ICs2NSwxNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGluaXRpYWxpemVDbGllbnQoY29uc3QgV0tD
b29raWVNYW5hZ2VyQ2xpZW50QmFzZSopOwogICAgIAotICAgIHZvaWQgZ2V0SG9zdG5hbWVzV2l0
aENvb2tpZXMoc3RkOjpmdW5jdGlvbjx2b2lkIChBUEk6OkFycmF5KiwgQ2FsbGJhY2tCYXNlOjpF
cnJvcik+KTsKLSAgICB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShjb25zdCBTdHJpbmcm
IGhvc3RuYW1lKTsKLSAgICB2b2lkIGRlbGV0ZUFsbENvb2tpZXMoKTsKLSAgICB2b2lkIGRlbGV0
ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVf
cG9pbnQpOwotICAgIHZvaWQgYWRkQ29va2llKGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYsIGNvbnN0
IFN0cmluZyYgaG9zdG5hbWUpOworICAgIHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoV2Vi
Q29yZTo6U2Vzc2lvbklELCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKEFQSTo6QXJyYXkqLCBDYWxsYmFj
a0Jhc2U6OkVycm9yKT4pOworICAgIHZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKFdlYkNv
cmU6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSk7CisgICAgdm9pZCBkZWxldGVB
bGxDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCk7CisgICAgdm9pZCBkZWxldGVBbGxDb29raWVz
TW9kaWZpZWRTaW5jZShXZWJDb3JlOjpTZXNzaW9uSUQsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xv
Y2s6OnRpbWVfcG9pbnQpOworICAgIHZvaWQgYWRkQ29va2llKFdlYkNvcmU6OlNlc3Npb25JRCwg
Y29uc3QgV2ViQ29yZTo6Q29va2llJiwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSk7CiAKICAgICB2
b2lkIHNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koSFRUUENvb2tpZUFjY2VwdFBvbGljeSk7CiAg
ICAgdm9pZCBnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHN0ZDo6ZnVuY3Rpb248dm9pZCAoSFRU
UENvb2tpZUFjY2VwdFBvbGljeSwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+KTsKIAotICAgIHZvaWQg
c3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKCk7Ci0gICAgdm9pZCBzdG9wT2JzZXJ2aW5nQ29v
a2llQ2hhbmdlcygpOworICAgIHZvaWQgc3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKFdlYkNv
cmU6OlNlc3Npb25JRCwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiYmID0gbnVsbHB0cik7CisgICAg
dm9pZCBzdG9wT2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhXZWJDb3JlOjpTZXNzaW9uSUQpOwogCiAj
aWYgVVNFKFNPVVApCiAgICAgdm9pZCBzZXRDb29raWVQZXJzaXN0ZW50U3RvcmFnZShjb25zdCBT
dHJpbmcmIHN0b3JhZ2VQYXRoLCB1aW50MzJfdCBzdG9yYWdlVHlwZSk7CkBAIC05MCw3ICs5MSw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRHZXRIb3N0bmFtZXNXaXRoQ29va2llcyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogICAgIHZvaWQgZGlkR2V0SFRU
UENvb2tpZUFjY2VwdFBvbGljeSh1aW50MzJfdCBwb2xpY3ksIHVpbnQ2NF90IGNhbGxiYWNrSUQp
OwogCi0gICAgdm9pZCBjb29raWVzRGlkQ2hhbmdlKCk7CisgICAgdm9pZCBjb29raWVzRGlkQ2hh
bmdlKFdlYkNvcmU6OlNlc3Npb25JRCk7CiAKICAgICAvLyBXZWJDb250ZXh0U3VwcGxlbWVudAog
ICAgIHZvaWQgcHJvY2Vzc1Bvb2xEZXN0cm95ZWQoKSBvdmVycmlkZTsKQEAgLTEwOSw2ICsxMTAs
OCBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxBcnJheUNhbGxiYWNr
Pj4gbV9hcnJheUNhbGxiYWNrczsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8SFRUUENv
b2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrPj4gbV9odHRwQ29va2llQWNjZXB0UG9saWN5Q2FsbGJh
Y2tzOwogCisgICAgSGFzaE1hcDxXZWJDb3JlOjpTZXNzaW9uSUQsIHN0ZDo6ZnVuY3Rpb248dm9p
ZCAoKT4+IG1fY29va2llT2JzZXJ2ZXJzOworCiAgICAgV2ViQ29va2llTWFuYWdlclByb3h5Q2xp
ZW50IG1fY2xpZW50OwogCiAjaWYgVVNFKFNPVVApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgppbmRleCA0
OWFjNmRiMjNiMy4uMTJlMDA5MDE4YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjQsNSAr
MjQsNSBAQCBtZXNzYWdlcyAtPiBXZWJDb29raWVNYW5hZ2VyUHJveHkgewogICAgIERpZEdldEhv
c3RuYW1lc1dpdGhDb29raWVzKFZlY3RvcjxTdHJpbmc+IGhvc3RuYW1lcywgdWludDY0X3QgY2Fs
bGJhY2tJRCk7CiAgICAgRGlkR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSh1aW50MzJfdCBwb2xp
Y3ksIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogICAgIAotICAgIENvb2tpZXNEaWRDaGFuZ2UoKQor
ICAgIENvb2tpZXNEaWRDaGFuZ2UoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5h
Z2VyLmNwcAppbmRleCBlMTE0OGExYWIzMy4uYTU3ZjkzNzRjMjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5jcHAKQEAg
LTQyLDggKzQyLDYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCi1zdGF0aWMgV2ViQ29va2llTWFuYWdlciogc2hhcmVkQ29va2llTWFuYWdlcjsKLQog
Y29uc3QgY2hhciogV2ViQ29va2llTWFuYWdlcjo6c3VwcGxlbWVudE5hbWUoKQogewogICAgIHJl
dHVybiAiV2ViQ29va2llTWFuYWdlciI7CkBAIC01MywxNSArNTEsMTMgQEAgV2ViQ29va2llTWFu
YWdlcjo6V2ViQ29va2llTWFuYWdlcihDaGlsZFByb2Nlc3MqIHByb2Nlc3MpCiAgICAgOiBtX3By
b2Nlc3MocHJvY2VzcykKIHsKICAgICBtX3Byb2Nlc3MtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNz
YWdlczo6V2ViQ29va2llTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCAqdGhpcyk7Ci0K
LSAgICBBU1NFUlQoIXNoYXJlZENvb2tpZU1hbmFnZXIpOwotICAgIHNoYXJlZENvb2tpZU1hbmFn
ZXIgPSB0aGlzOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmdldEhvc3RuYW1lc1dpdGhD
b29raWVzKHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmdldEhv
c3RuYW1lc1dpdGhDb29raWVzKFNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpCiB7CiAgICAgSGFzaFNldDxTdHJpbmc+IGhvc3RuYW1lczsKLSAgICBXZWJDb3JlOjpnZXRI
b3N0bmFtZXNXaXRoQ29va2llcyhOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdl
U2Vzc2lvbigpLCBob3N0bmFtZXMpOworICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKKyAgICAgICAg
V2ViQ29yZTo6Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoKnN0b3JhZ2VTZXNzaW9uLCBob3N0bmFt
ZXMpOwogCiAgICAgVmVjdG9yPFN0cmluZz4gaG9zdG5hbWVMaXN0OwogICAgIGNvcHlUb1ZlY3Rv
cihob3N0bmFtZXMsIGhvc3RuYW1lTGlzdCk7CkBAIC02OSw0NSArNjUsNDQgQEAgdm9pZCBXZWJD
b29raWVNYW5hZ2VyOjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyh1aW50NjRfdCBjYWxsYmFja0lE
KQogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpE
aWRHZXRIb3N0bmFtZXNXaXRoQ29va2llcyhob3N0bmFtZUxpc3QsIGNhbGxiYWNrSUQpLCAwKTsK
IH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoY29u
c3QgU3RyaW5nJiBob3N0bmFtZSkKLXsKLSAgICBXZWJDb3JlOjpkZWxldGVDb29raWVzRm9ySG9z
dG5hbWVzKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCksIHsg
aG9zdG5hbWUgfSk7Ci19Ci0KLXZvaWQgV2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQWxsQ29va2ll
cygpCi17Ci0gICAgV2ViQ29yZTo6ZGVsZXRlQWxsQ29va2llcyhOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpKTsKLX0KLQotdm9pZCBXZWJDb29raWVNYW5hZ2Vy
OjpkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2Nr
Ojp0aW1lX3BvaW50IHRpbWUpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUNvb2tpZXNG
b3JIb3N0bmFtZShTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQog
ewotICAgIFdlYkNvcmU6OmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCksIHRpbWUpOworICAgIGlmIChhdXRv
KiBzdG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24o
c2Vzc2lvbklEKSkKKyAgICAgICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcygq
c3RvcmFnZVNlc3Npb24sIHsgaG9zdG5hbWUgfSk7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdl
cjo6YWRkQ29va2llKGNvbnN0IENvb2tpZSYgY29va2llLCBjb25zdCBTdHJpbmcmIGhvc3RuYW1l
KQordm9pZCBXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVBbGxDb29raWVzKFNlc3Npb25JRCBzZXNz
aW9uSUQpCiB7Ci0gICAgV2ViQ29yZTo6YWRkQ29va2llKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCksIFVSTChVUkwoKSwgaG9zdG5hbWUpLCBjb29raWUpOwor
ICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3Rv
cmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKKyAgICAgICAgV2ViQ29yZTo6ZGVsZXRlQWxsQ29va2ll
cygqc3RvcmFnZVNlc3Npb24pOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnN0YXJ0T2Jz
ZXJ2aW5nQ29va2llQ2hhbmdlcygpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUFsbENv
b2tpZXNNb2RpZmllZFNpbmNlKFNlc3Npb25JRCBzZXNzaW9uSUQsIHN0ZDo6Y2hyb25vOjpzeXN0
ZW1fY2xvY2s6OnRpbWVfcG9pbnQgdGltZSkKIHsKLSAgICBXZWJDb3JlOjpzdGFydE9ic2Vydmlu
Z0Nvb2tpZUNoYW5nZXMoY29va2llc0RpZENoYW5nZSk7CisgICAgaWYgKGF1dG8qIHN0b3JhZ2VT
ZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQp
KQorICAgICAgICBXZWJDb3JlOjpkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZSgqc3RvcmFn
ZVNlc3Npb24sIHRpbWUpOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnN0b3BPYnNlcnZp
bmdDb29raWVDaGFuZ2VzKCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6YWRkQ29va2llKFNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IENvb2tpZSYgY29va2llLCBjb25zdCBTdHJpbmcmIGhvc3Ru
YW1lKQogewotICAgIFdlYkNvcmU6OnN0b3BPYnNlcnZpbmdDb29raWVDaGFuZ2VzKCk7CisgICAg
aWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdl
U2Vzc2lvbihzZXNzaW9uSUQpKQorICAgICAgICBXZWJDb3JlOjphZGRDb29raWUoKnN0b3JhZ2VT
ZXNzaW9uLCBVUkwoVVJMKCksIGhvc3RuYW1lKSwgY29va2llKTsKIH0KIAotdm9pZCBXZWJDb29r
aWVNYW5hZ2VyOjpjb29raWVzRGlkQ2hhbmdlKCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6c3Rh
cnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKFNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0gICAgc2hh
cmVkQ29va2llTWFuYWdlci0+ZGlzcGF0Y2hDb29raWVzRGlkQ2hhbmdlKCk7CisgICAgaWYgKGF1
dG8qIHN0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lv
bihzZXNzaW9uSUQpKSB7CisgICAgICAgIFdlYkNvcmU6OnN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hh
bmdlcygqc3RvcmFnZVNlc3Npb24sIFt0aGlzLCBzZXNzaW9uSURdIHsKKyAgICAgICAgICAgIEFT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6Q29va2llc0RpZENoYW5nZShzZXNzaW9uSUQp
LCAwKTsKKyAgICAgICAgfSk7CisgICAgfQogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRp
c3BhdGNoQ29va2llc0RpZENoYW5nZSgpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnN0b3BPYnNl
cnZpbmdDb29raWVDaGFuZ2VzKFNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0gICAgQVNTRVJUKFJ1
bkxvb3A6OmlzTWFpbigpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYkNvb2tp
ZU1hbmFnZXJQcm94eTo6Q29va2llc0RpZENoYW5nZSgpLCAwKTsKKyAgICBpZiAoYXV0byogc3Rv
cmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Np
b25JRCkpCisgICAgICAgIFdlYkNvcmU6OnN0b3BPYnNlcnZpbmdDb29raWVDaGFuZ2VzKCpzdG9y
YWdlU2Vzc2lvbik7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6c2V0SFRUUENvb2tpZUFj
Y2VwdFBvbGljeShIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oCmluZGV4IGE5
OTU4NjYzMzU1Li5mYzNiMmQ5OGQ5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5j
bHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NTdXBwbGVt
ZW50LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1N1cHBsZW1lbnQuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CkBAIC02MiwyMiArNjMsMTggQEAg
cHJpdmF0ZToKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKLSAg
ICB2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAg
IHZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQg
ZGVsZXRlQWxsQ29va2llcygpOwotICAgIHZvaWQgZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2lu
Y2Uoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCk7Ci0gICAgdm9pZCBhZGRD
b29raWUoY29uc3QgV2ViQ29yZTo6Q29va2llJiwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSk7Cisg
ICAgdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQsIHVpbnQ2
NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKFdlYkNv
cmU6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBkZWxldGVBbGxDb29raWVz
KFdlYkNvcmU6OlNlc3Npb25JRCk7CisgICAgdm9pZCBkZWxldGVBbGxDb29raWVzTW9kaWZpZWRT
aW5jZShXZWJDb3JlOjpTZXNzaW9uSUQsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVf
cG9pbnQpOworICAgIHZvaWQgYWRkQ29va2llKFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3QgV2Vi
Q29yZTo6Q29va2llJiwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSk7CiAKICAgICB2b2lkIHBsYXRm
b3JtU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29va2llQWNjZXB0UG9saWN5KTsKICAg
ICB2b2lkIGdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDY0X3QgY2FsbGJhY2tJRCk7CiAg
ICAgSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwbGF0Zm9ybUdldEhUVFBDb29raWVBY2NlcHRQb2xp
Y3koKTsKIAotICAgIHZvaWQgc3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKCk7Ci0gICAgdm9p
ZCBzdG9wT2JzZXJ2aW5nQ29va2llQ2hhbmdlcygpOwotCi0gICAgc3RhdGljIHZvaWQgY29va2ll
c0RpZENoYW5nZSgpOwotICAgIHZvaWQgZGlzcGF0Y2hDb29raWVzRGlkQ2hhbmdlKCk7Ci0KKyAg
ICB2b2lkIHN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhXZWJDb3JlOjpTZXNzaW9uSUQpOwor
ICAgIHZvaWQgc3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoV2ViQ29yZTo6U2Vzc2lvbklEKTsK
IAogICAgIENoaWxkUHJvY2VzcyogbV9wcm9jZXNzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2Fn
ZXMuaW4KaW5kZXggYzJkMTZhZjFjMDEuLjVkNTE1MzY2NDUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5t
ZXNzYWdlcy5pbgpAQCAtMjQsMTcgKzI0LDE3IEBACiAgKi8KICAKICBtZXNzYWdlcyAtPiBXZWJD
b29raWVNYW5hZ2VyIHsKLSAgICB2b2lkIEdldEhvc3RuYW1lc1dpdGhDb29raWVzKHVpbnQ2NF90
IGNhbGxiYWNrSUQpCi0gICAgdm9pZCBEZWxldGVDb29raWVzRm9ySG9zdG5hbWUoU3RyaW5nIGhv
c3RuYW1lKQotICAgIHZvaWQgRGVsZXRlQWxsQ29va2llcygpCi0gICAgdm9pZCBEZWxldGVBbGxD
b29raWVzTW9kaWZpZWRTaW5jZShzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50
IHRpbWUpCi0gICAgdm9pZCBBZGRDb29raWUoc3RydWN0IFdlYkNvcmU6OkNvb2tpZSBjb29raWUs
IFN0cmluZyBob3N0bmFtZSkKKyAgICB2b2lkIEdldEhvc3RuYW1lc1dpdGhDb29raWVzKFdlYkNv
cmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgdm9pZCBE
ZWxldGVDb29raWVzRm9ySG9zdG5hbWUoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3Ry
aW5nIGhvc3RuYW1lKQorICAgIHZvaWQgRGVsZXRlQWxsQ29va2llcyhXZWJDb3JlOjpTZXNzaW9u
SUQgc2Vzc2lvbklEKQorICAgIHZvaWQgRGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoV2Vi
Q29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGlt
ZV9wb2ludCB0aW1lKQorICAgIHZvaWQgQWRkQ29va2llKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIHN0cnVjdCBXZWJDb3JlOjpDb29raWUgY29va2llLCBTdHJpbmcgaG9zdG5hbWUpCiAK
ICAgICB2b2lkIFNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDMyX3QgcG9saWN5KQogICAg
IHZvaWQgR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSh1aW50NjRfdCBjYWxsYmFja0lEKQogICAg
IAotICAgIHZvaWQgU3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKCkKLSAgICB2b2lkIFN0b3BP
YnNlcnZpbmdDb29raWVDaGFuZ2VzKCkKKyAgICB2b2lkIFN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hh
bmdlcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQorICAgIHZvaWQgU3RvcE9ic2Vydmlu
Z0Nvb2tpZUNoYW5nZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIAogI2lmIFVTRShT
T1VQKQogICAgIFNldENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlKFN0cmluZyBzdG9yYWdlUGF0aCwg
dWludDMyX3Qgc3RvcmFnZVR5cGUpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>