<?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>148665</bug_id>
          
          <creation_ts>2015-08-31 18:03:30 -0700</creation_ts>
          <short_desc>[ES6] Recognize calls in tail position</short_desc>
          <delta_ts>2015-09-03 20:05:58 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>148661</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Basile Clement">basile_clement</reporter>
          <assigned_to name="Basile Clement">basile_clement</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>msaboff</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1122400</commentid>
    <comment_count>0</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-08-31 18:03:30 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122444</commentid>
    <comment_count>1</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-08-31 19:04:40 -0700</bug_when>
    <thetext>*** Bug 146481 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122445</commentid>
    <comment_count>2</comment_count>
      <attachid>260345</attachid>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-08-31 19:05:20 -0700</bug_when>
    <thetext>Created attachment 260345
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122447</commentid>
    <comment_count>3</comment_count>
      <attachid>260346</attachid>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-08-31 19:25:24 -0700</bug_when>
    <thetext>Created attachment 260346
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122530</commentid>
    <comment_count>4</comment_count>
      <attachid>260346</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-09-01 07:39:56 -0700</bug_when>
    <thetext>Comment on attachment 260346
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122603</commentid>
    <comment_count>5</comment_count>
      <attachid>260346</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-09-01 11:29:50 -0700</bug_when>
    <thetext>Comment on attachment 260346
Patch

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

&gt; Source/JavaScriptCore/parser/Nodes.h:85
&gt; +    enum TailCallMode {
&gt; +        CanHaveTailCalls,
&gt; +        NoTailCalls,
&gt; +    };

Please use &quot;enum class&quot;.

&quot;CanHaveTailCalls&quot; seems to wishy-washy. This is the value we use to indicate that we are in tail position, so all calls will be tail calls, right? If so, I would call this &quot;enum class TailCallMode { DoTailCall, DoNotTailCall }&quot; or &quot;enum class TailPosition { InTailPosition, NotInTailPosition }&quot;.

It would be nice if we stored this state on the bytecode generator, rather than passing it through to each emitBytecode function. There&apos;s a lot of boilerplate for passing this value through, which we don&apos;t need.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122615</commentid>
    <comment_count>6</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-09-01 11:51:31 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 260346 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=260346&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/parser/Nodes.h:85
&gt; &gt; +    enum TailCallMode {
&gt; &gt; +        CanHaveTailCalls,
&gt; &gt; +        NoTailCalls,
&gt; &gt; +    };
&gt; 
&gt; Please use &quot;enum class&quot;.
&gt; 
&gt; &quot;CanHaveTailCalls&quot; seems to wishy-washy. This is the value we use to
&gt; indicate that we are in tail position, so all calls will be tail calls,
&gt; right? If so, I would call this &quot;enum class TailCallMode { DoTailCall,
&gt; DoNotTailCall }&quot; or &quot;enum class TailPosition { InTailPosition,
&gt; NotInTailPosition }&quot;.

When said this way, it makes sense. I couldn&apos;t find a good name because I got stuck thinking that if we don&apos;t have an actual call, then we are not doing a tail call, and I kind of got confused by this. I like the TailPosition enum class.

&gt; 
&gt; It would be nice if we stored this state on the bytecode generator, rather
&gt; than passing it through to each emitBytecode function. There&apos;s a lot of
&gt; boilerplate for passing this value through, which we don&apos;t need.

Unless I am missing something, storing this on the bytecode generator would make us explicitely clear the &quot;in tail position&quot; state on all constructs that prevent tail calls. The reason I used the &quot;function argument&quot; style was that it allowed to explicitely pass that information for constructs that supports tail calls, and make the default to not have tail calls. This makes it simpler for AST edges that don&apos;t support tail calls (which is a bunch of them), and also makes it less error-prone to add new nodes. But maybe I am missing an implementation possibility here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122638</commentid>
    <comment_count>7</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-09-01 14:09:56 -0700</bug_when>
    <thetext>*** Bug 146481 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122639</commentid>
    <comment_count>8</comment_count>
      <attachid>260381</attachid>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-09-01 14:10:53 -0700</bug_when>
    <thetext>Created attachment 260381
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123229</commentid>
    <comment_count>9</comment_count>
      <attachid>260381</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-09-03 17:27:55 -0700</bug_when>
    <thetext>Comment on attachment 260381
Patch

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

r=me with suggestion.

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h:68
&gt; +    class SetForScope {

I think we should give this its own file in hopes of using it in other contexts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123283</commentid>
    <comment_count>10</comment_count>
      <attachid>260552</attachid>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-09-03 19:17:21 -0700</bug_when>
    <thetext>Created attachment 260552
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123311</commentid>
    <comment_count>11</comment_count>
      <attachid>260552</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-03 20:05:53 -0700</bug_when>
    <thetext>Comment on attachment 260552
Patch for landing

Clearing flags on attachment: 260552

Committed r189336: &lt;http://trac.webkit.org/changeset/189336&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123312</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-03 20:05:58 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260345</attachid>
            <date>2015-08-31 19:05:20 -0700</date>
            <delta_ts>2015-08-31 19:25:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148665-20150831190503.patch</filename>
            <type>text/plain</type>
            <size>121228</size>
            <attacher name="Basile Clement">basile_clement</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MjAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
YzY0ZTU1ZjI2ZDM5YzQ4MmEzNzFjNjE1ZWEyOWQ4NGM2ZmM0ZTFjLi40MmJiZTgzN2E5YTJmY2Zh
ZmVhYmYzMjQxYzQwNmNjMWFhNjZmNDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwxNDUgQEAKIDIwMTUtMDgtMzEgIEJhc2lsZSBDbGVtZW50ICA8YmFzaWxlX2NsZW1lbnRA
YXBwbGUuY29tPgogCisgICAgICAgIFtFUzZdIFJlY29nbml6ZSBjYWxscyBpbiB0YWlsIHBvc2l0
aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg2
NjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IHBhdGNoIGFkZHMgdGhlIGNhcGFiaWxpdHkgZm9yIHRoZSBieXRlY29kZSBnZW5lcmF0b3IgdG8g
cmVjb2duaXplCisgICAgICAgIGFuZCBkaXNwYXRjaCB0YWlsIGNhbGxzLCBhcyBwZXIgRVM2IHNw
ZWM6CisgICAgICAgIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82
LjAvI3NlYy1pc2ludGFpbHBvc2l0aW9uCisKKyAgICAgICAgVGhpcyBkb2VzIG5vdCBjaGFuZ2Ug
dGhlIGdlbmVyYXRlZCBieXRlY29kZSwgYnV0IG1lcmVseSBwcm92aWRlcyB0aGUKKyAgICAgICAg
aG9vayBmb3IgZ2VuZXJhdGluZyB0YWlsIGNhbGxzIGluIHN1YnNlcXVlbnQgcGF0Y2hlcyB0b3dh
cmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NjQ3
NworCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRUYWlsQ2FsbCk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VGFpbENhbGxWYXJhcmdzKToKKyAgICAgICAgKiBieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXROb2RlKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNw
cDoKKyAgICAgICAgKEpTQzo6Q29uc3RhbnROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAo
SlNDOjpOdW1iZXJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpSZWdFeHBOb2Rl
OjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpUaGlzTm9kZTo6ZW1pdEJ5dGVjb2RlKToK
KyAgICAgICAgKEpTQzo6U3VwZXJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpO
ZXdUYXJnZXROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpSZXNvbHZlTm9kZTo6
ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6VGVtcGxhdGVTdHJpbmdOb2RlOjplbWl0Qnl0
ZWNvZGUpOgorICAgICAgICAoSlNDOjpUZW1wbGF0ZUxpdGVyYWxOb2RlOjplbWl0Qnl0ZWNvZGUp
OgorICAgICAgICAoSlNDOjpUYWdnZWRUZW1wbGF0ZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAg
ICAgIChKU0M6OkFycmF5Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6T2JqZWN0
TGl0ZXJhbE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlByb3BlcnR5TGlzdE5v
ZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkJyYWNrZXRBY2Nlc3Nvck5vZGU6OmVt
aXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkRvdEFjY2Vzc29yTm9kZTo6ZW1pdEJ5dGVjb2Rl
KToKKyAgICAgICAgKEpTQzo6QXJndW1lbnRMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAg
ICAgKEpTQzo6TmV3RXhwck5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkV2YWxG
dW5jdGlvbkNhbGxOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNh
bGxWYWx1ZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbFJl
c29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUludHJpbnNp
Y05vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbEJyYWNrZXRO
b2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxEb3ROb2RlOjpl
bWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1p
dEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0
Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpQb3N0Zml4Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAg
ICAgICAgKEpTQzo6RGVsZXRlUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChK
U0M6OkRlbGV0ZUJyYWNrZXROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpEZWxl
dGVEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpEZWxldGVWYWx1ZU5vZGU6
OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlZvaWROb2RlOjplbWl0Qnl0ZWNvZGUpOgor
ICAgICAgICAoSlNDOjpUeXBlT2ZSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAg
KEpTQzo6VHlwZU9mVmFsdWVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpQcmVm
aXhOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpVbmFyeU9wTm9kZTo6ZW1pdEJ5
dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Qml0d2lzZU5vdE5vZGU6OmVtaXRCeXRlY29kZSk6Cisg
ICAgICAgIChKU0M6OkJpbmFyeU9wTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6
RXF1YWxOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpTdHJpY3RFcXVhbE5vZGU6
OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlRocm93YWJsZUJpbmFyeU9wTm9kZTo6ZW1p
dEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6SW5zdGFuY2VPZk5vZGU6OmVtaXRCeXRlY29kZSk6
CisgICAgICAgIChKU0M6OkxvZ2ljYWxPcE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChK
U0M6OkNvbmRpdGlvbmFsTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UmVhZE1v
ZGlmeVJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpBc3NpZ25SZXNv
bHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QXNzaWduRG90Tm9kZTo6ZW1p
dEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UmVhZE1vZGlmeURvdE5vZGU6OmVtaXRCeXRlY29k
ZSk6CisgICAgICAgIChKU0M6OkFzc2lnbkVycm9yTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAg
ICAgKEpTQzo6QXNzaWduQnJhY2tldE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6
OlJlYWRNb2RpZnlCcmFja2V0Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q29t
bWFOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpTb3VyY2VFbGVtZW50czo6ZW1p
dEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QmxvY2tOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAg
ICAgICAoSlNDOjpFbXB0eVN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChK
U0M6OkRlYnVnZ2VyU3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6
RXhwclN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkRlY2xhcmF0
aW9uU3RhdGVtZW50OjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpFbXB0eVZhckV4cHJl
c3Npb246OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkVtcHR5TGV0RXhwcmVzc2lvbjo6
ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6SWZFbHNlTm9kZTo6ZW1pdEJ5dGVjb2RlKToK
KyAgICAgICAgKEpTQzo6RG9XaGlsZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6
OldoaWxlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Rm9yTm9kZTo6ZW1pdEJ5
dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Rm9ySW5Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAg
ICAoSlNDOjpGb3JPZk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNvbnRpbnVl
Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QnJlYWtOb2RlOjplbWl0Qnl0ZWNv
ZGUpOgorICAgICAgICAoSlNDOjpSZXR1cm5Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAo
SlNDOjpXaXRoTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q2FzZUNsYXVzZU5v
ZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNhc2VCbG9ja05vZGU6OmVtaXRCeXRl
Y29kZUZvckJsb2NrKToKKyAgICAgICAgKEpTQzo6U3dpdGNoTm9kZTo6ZW1pdEJ5dGVjb2RlKToK
KyAgICAgICAgKEpTQzo6TGFiZWxOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpU
aHJvd05vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlRyeU5vZGU6OmVtaXRCeXRl
Y29kZSk6CisgICAgICAgIChKU0M6OlNjb3BlTm9kZTo6ZW1pdFN0YXRlbWVudHNCeXRlY29kZSk6
CisgICAgICAgIChKU0M6OlByb2dyYW1Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlND
OjpNb2R1bGVQcm9ncmFtTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RXZhbE5v
ZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uTm9kZTo6ZW1pdEJ5dGVj
b2RlKToKKyAgICAgICAgKEpTQzo6RnVuY0RlY2xOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAg
ICAoSlNDOjpGdW5jRXhwck5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkFycm93
RnVuY0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDbGFzc0RlY2xOb2Rl
OjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNv
ZGUpOgorICAgICAgICAoSlNDOjpJbXBvcnREZWNsYXJhdGlvbk5vZGU6OmVtaXRCeXRlY29kZSk6
CisgICAgICAgIChKU0M6OkV4cG9ydEFsbERlY2xhcmF0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKToK
KyAgICAgICAgKEpTQzo6RXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uTm9kZTo6ZW1pdEJ5dGVjb2Rl
KToKKyAgICAgICAgKEpTQzo6RXhwb3J0TG9jYWxEZWNsYXJhdGlvbk5vZGU6OmVtaXRCeXRlY29k
ZSk6CisgICAgICAgIChKU0M6OkV4cG9ydE5hbWVkRGVjbGFyYXRpb25Ob2RlOjplbWl0Qnl0ZWNv
ZGUpOgorICAgICAgICAoSlNDOjpEZXN0cnVjdHVyaW5nQXNzaWdubWVudE5vZGU6OmVtaXRCeXRl
Y29kZSk6CisgICAgICAgIChKU0M6OlNwcmVhZEV4cHJlc3Npb25Ob2RlOjplbWl0Qnl0ZWNvZGUp
OgorICAgICAgICAoSlNDOjpQb3N0Zml4Tm9kZTo6ZW1pdFJlc29sdmUpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpQb3N0Zml4Tm9kZTo6ZW1pdEJyYWNrZXQpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpQb3N0Zml4Tm9kZTo6ZW1pdERvdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlByZWZp
eE5vZGU6OmVtaXRSZXNvbHZlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6UHJlZml4Tm9kZTo6
ZW1pdEJyYWNrZXQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCaW5hcnlPcE5vZGU6OmVtaXRC
eXRlY29kZUluQ29uZGl0aW9uQ29udGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkJpbmFy
eU9wTm9kZTo6dHJ5Rm9sZFRvQnJhbmNoKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6ZW1pdFJl
YWRNb2RpZnlBc3NpZ25tZW50KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QmxvY2tOb2RlOjps
YXN0U3RhdGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6c2luZ2xlU3RhdGVtZW50KTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SWZFbHNlTm9kZTo6dHJ5Rm9sZEJyZWFrQW5kQ29udGlu
dWUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGb3JJbk5vZGU6OmVtaXRNdWx0aUxvb3BCeXRl
Y29kZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNvbnRpbnVlTm9kZTo6dHJpdmlhbFRhcmdl
dCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkJyZWFrTm9kZTo6dHJpdmlhbFRhcmdldCk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OnByb2Nlc3NDbGF1c2VMaXN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6Q2FzZUJsb2NrTm9kZTo6dHJ5VGFibGVTd2l0Y2gpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpPYmplY3RQYXR0ZXJuTm9kZTo6YmluZFZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwYXJzZXIvTm9kZXMuaDoKKyAgICAgICAgKEpTQzo6QnJhY2tldEFjY2Vzc29yTm9kZTo6c3Vi
c2NyaXB0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QmluYXJ5T3BOb2RlOjpsaHMpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpFeHByU3RhdGVtZW50Tm9kZTo6ZXhwcik6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OlNjb3BlTm9kZTo6bmVlZGVkQ29uc3RhbnRzKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6RXZhbE5vZGU6OmVuZENvbHVtbik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1v
ZHVsZVByb2dyYW1Ob2RlOjplbmRDb2x1bW4pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpEZXN0
cnVjdHVyaW5nQXNzaWdubWVudE5vZGU6OmJpbmRpbmdzKTogRGVsZXRlZC4KKyAgICAgICAgKiBy
dW50aW1lL09wdGlvbnMuaDoKKworMjAxNS0wOC0zMSAgQmFzaWxlIENsZW1lbnQgIDxiYXNpbGVf
Y2xlbWVudEBhcHBsZS5jb20+CisKICAgICAgICAgVW5yZXZpZXdlZCwgYnVpbGQgZml4IGFmdGVy
IHIxODkyOTIKIAogICAgICAgICAqIGJ5dGVjb2RlL1ZhbHVlUmVjb3ZlcnkuaDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAKaW5kZXggNjJjMmQzYmE0MjU3NjM4ZTg0MGJiM2E2MmQyNzc0YjBmMzEyN2RmYy4uYTM5
MmUwNGQ4YmZmZTliZTZhYWFlMTU0NGM2YmE0OGNkMDgwYWVjZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAK
QEAgLTIyOTgsNiArMjI5OCwxMyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dENhbGwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBFeHBlYwogICAgIHJldHVy
biBlbWl0Q2FsbChvcF9jYWxsLCBkc3QsIGZ1bmMsIGV4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1
bWVudHMsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0VGFpbENhbGwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklE
KiBmdW5jLCBFeHBlY3RlZEZ1bmN0aW9uIGV4cGVjdGVkRnVuY3Rpb24sIENhbGxBcmd1bWVudHMm
IGNhbGxBcmd1bWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKK3sK
KyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGVtaXR0aW5nIGEgbmV3IG9wX3RhaWxfY2FsbCBo
ZXJlCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NjQ4
NAorICAgIHJldHVybiBlbWl0Q2FsbChvcF9jYWxsLCBkc3QsIGZ1bmMsIGV4cGVjdGVkRnVuY3Rp
b24sIGNhbGxBcmd1bWVudHMsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7Cit9CisKIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbEV2YWwoUmVnaXN0ZXJJRCogZHN0
LCBSZWdpc3RlcklEKiBmdW5jLCBDYWxsQXJndW1lbnRzJiBjYWxsQXJndW1lbnRzLCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCiB7CiAgICAgcmV0dXJuIGVtaXRDYWxsKG9w
X2NhbGxfZXZhbCwgZHN0LCBmdW5jLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMs
IGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CkBAIC0yNDQ3LDYgKzI0NTQsMTMgQEAgUmVn
aXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsVmFyYXJncyhSZWdpc3RlcklEKiBk
c3QsIFJlZ2lzdGVySUQqIGZ1bmMKICAgICByZXR1cm4gZW1pdENhbGxWYXJhcmdzKG9wX2NhbGxf
dmFyYXJncywgZHN0LCBmdW5jLCB0aGlzUmVnaXN0ZXIsIGFyZ3VtZW50cywgZmlyc3RGcmVlUmVn
aXN0ZXIsIGZpcnN0VmFyQXJnT2Zmc2V0LCBwcm9maWxlSG9va1JlZ2lzdGVyLCBkaXZvdCwgZGl2
b3RTdGFydCwgZGl2b3RFbmQpOwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdFRhaWxDYWxsVmFyYXJncyhSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIFJl
Z2lzdGVySUQqIHRoaXNSZWdpc3RlciwgUmVnaXN0ZXJJRCogYXJndW1lbnRzLCBSZWdpc3RlcklE
KiBmaXJzdEZyZWVSZWdpc3RlciwgaW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCwgUmVnaXN0ZXJJ
RCogcHJvZmlsZUhvb2tSZWdpc3RlciwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
RW5kKQoreworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgZW1pdHRpbmcgYSBuZXcgb3BfdGFp
bF9jYWxsX3ZhcmFyZ3MgaGVyZQorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDY0ODQKKyAgICByZXR1cm4gZW1pdENhbGxWYXJhcmdzKG9wX2NhbGxfdmFy
YXJncywgZHN0LCBmdW5jLCB0aGlzUmVnaXN0ZXIsIGFyZ3VtZW50cywgZmlyc3RGcmVlUmVnaXN0
ZXIsIGZpcnN0VmFyQXJnT2Zmc2V0LCBwcm9maWxlSG9va1JlZ2lzdGVyLCBkaXZvdCwgZGl2b3RT
dGFydCwgZGl2b3RFbmQpOworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dENvbnN0cnVjdFZhcmFyZ3MoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBSZWdp
c3RlcklEKiB0aGlzUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGFyZ3VtZW50cywgUmVnaXN0ZXJJRCog
Zmlyc3RGcmVlUmVnaXN0ZXIsIGludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQsIFJlZ2lzdGVySUQq
IHByb2ZpbGVIb29rUmVnaXN0ZXIsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVu
ZCkKIHsKICAgICByZXR1cm4gZW1pdENhbGxWYXJhcmdzKG9wX2NvbnN0cnVjdF92YXJhcmdzLCBk
c3QsIGZ1bmMsIHRoaXNSZWdpc3RlciwgYXJndW1lbnRzLCBmaXJzdEZyZWVSZWdpc3RlciwgZmly
c3RWYXJBcmdPZmZzZXQsIHByb2ZpbGVIb29rUmVnaXN0ZXIsIGRpdm90LCBkaXZvdFN0YXJ0LCBk
aXZvdEVuZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggODljZGVhZDEzNTQ0ODFjNzQ2NjcwZTM1Zjk2MDA1
OTM3ZmI5NWJhNy4uNDQxNmM4NWRhZmQ0NTNjZDcwMjQ0ZDkyZjJhMmM4ZmVmNTYzNWJlNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuaApAQCAtMzU2LDcgKzM1Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBM
YWJlbFNjb3BlUHRyIG5ld0xhYmVsU2NvcGUoTGFiZWxTY29wZTo6VHlwZSwgY29uc3QgSWRlbnRp
ZmllciogPSAwKTsKICAgICAgICAgUGFzc1JlZlB0cjxMYWJlbD4gbmV3TGFiZWwoKTsKIAotICAg
ICAgICB2b2lkIGVtaXROb2RlKFJlZ2lzdGVySUQqIGRzdCwgU3RhdGVtZW50Tm9kZSogbikKKyAg
ICAgICAgdm9pZCBlbWl0Tm9kZShSZWdpc3RlcklEKiBkc3QsIFN0YXRlbWVudE5vZGUqIG4sIFRh
aWxDYWxsTW9kZSB0YWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykKICAgICAgICAgewogICAgICAg
ICAgICAgLy8gTm9kZTo6ZW1pdENvZGUgYXNzdW1lcyB0aGF0IGRzdCwgaWYgcHJvdmlkZWQsIGlz
IGVpdGhlciBhIGxvY2FsIG9yIGEgcmVmZXJlbmNlZCB0ZW1wb3JhcnkuCiAgICAgICAgICAgICBB
U1NFUlQoIWRzdCB8fCBkc3QgPT0gaWdub3JlZFJlc3VsdCgpIHx8ICFkc3QtPmlzVGVtcG9yYXJ5
KCkgfHwgZHN0LT5yZWZDb3VudCgpKTsKQEAgLTM2NCw3ICszNjQsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgICAgICAgICBlbWl0VGhyb3dFeHByZXNzaW9uVG9vRGVlcEV4Y2VwdGlvbigp
OwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG4t
PmVtaXRCeXRlY29kZSgqdGhpcywgZHN0KTsKKyAgICAgICAgICAgIG4tPmVtaXRCeXRlY29kZSgq
dGhpcywgZHN0LCB0YWlsQ2FsbE1vZGUpOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBlbWl0
Tm9kZShTdGF0ZW1lbnROb2RlKiBuKQpAQCAtMzcyLDEzICszNzIsMTMgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgICAgICBlbWl0Tm9kZSgwLCBuKTsKICAgICAgICAgfQogCi0gICAgICAgIFJl
Z2lzdGVySUQqIGVtaXROb2RlKFJlZ2lzdGVySUQqIGRzdCwgRXhwcmVzc2lvbk5vZGUqIG4pCisg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXROb2RlKFJlZ2lzdGVySUQqIGRzdCwgRXhwcmVzc2lvbk5v
ZGUqIG4sIFRhaWxDYWxsTW9kZSB0YWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykKICAgICAgICAg
ewogICAgICAgICAgICAgLy8gTm9kZTo6ZW1pdENvZGUgYXNzdW1lcyB0aGF0IGRzdCwgaWYgcHJv
dmlkZWQsIGlzIGVpdGhlciBhIGxvY2FsIG9yIGEgcmVmZXJlbmNlZCB0ZW1wb3JhcnkuCiAgICAg
ICAgICAgICBBU1NFUlQoIWRzdCB8fCBkc3QgPT0gaWdub3JlZFJlc3VsdCgpIHx8ICFkc3QtPmlz
VGVtcG9yYXJ5KCkgfHwgZHN0LT5yZWZDb3VudCgpKTsKICAgICAgICAgICAgIGlmICghbV92bS0+
aXNTYWZlVG9SZWN1cnNlKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGVtaXRUaHJvd0V4cHJl
c3Npb25Ub29EZWVwRXhjZXB0aW9uKCk7Ci0gICAgICAgICAgICByZXR1cm4gbi0+ZW1pdEJ5dGVj
b2RlKCp0aGlzLCBkc3QpOworICAgICAgICAgICAgcmV0dXJuIG4tPmVtaXRCeXRlY29kZSgqdGhp
cywgZHN0LCB0YWlsQ2FsbE1vZGUpOwogICAgICAgICB9CiAKICAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdE5vZGUoRXhwcmVzc2lvbk5vZGUqIG4pCkBAIC01MTcsOCArNTE3LDEwIEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAKICAgICAgICAgRXhwZWN0ZWRGdW5jdGlvbiBleHBlY3RlZEZ1bmN0
aW9uRm9ySWRlbnRpZmllcihjb25zdCBJZGVudGlmaWVyJik7CiAgICAgICAgIFJlZ2lzdGVySUQq
IGVtaXRDYWxsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgRXhwZWN0ZWRGdW5j
dGlvbiwgQ2FsbEFyZ3VtZW50cyYsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVu
ZCk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRUYWlsQ2FsbChSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIGZ1bmMsIEV4cGVjdGVkRnVuY3Rpb24sIENhbGxBcmd1bWVudHMmLCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0
Q2FsbEV2YWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBDYWxsQXJndW1lbnRz
JiwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKICAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdENhbGxWYXJhcmdzKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywg
UmVnaXN0ZXJJRCogdGhpc1JlZ2lzdGVyLCBSZWdpc3RlcklEKiBhcmd1bWVudHMsIFJlZ2lzdGVy
SUQqIGZpcnN0RnJlZVJlZ2lzdGVyLCBpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0LCBSZWdpc3Rl
cklEKiBwcm9maWxlSG9va1JlZ2lzdGVyLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3RFbmQpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0VGFpbENhbGxWYXJhcmdzKFJlZ2lzdGVy
SUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgUmVnaXN0ZXJJRCogdGhpc1JlZ2lzdGVyLCBSZWdp
c3RlcklEKiBhcmd1bWVudHMsIFJlZ2lzdGVySUQqIGZpcnN0RnJlZVJlZ2lzdGVyLCBpbnQzMl90
IGZpcnN0VmFyQXJnT2Zmc2V0LCBSZWdpc3RlcklEKiBwcm9maWxlSG9va1JlZ2lzdGVyLCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAgICAgICAgIGVudW0gUHJvcGVy
dHlEZXNjcmlwdG9yT3B0aW9uIHsKICAgICAgICAgICAgIFByb3BlcnR5Q29uZmlndXJhYmxlID0g
MSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2Rl
Z2VuLmNwcAppbmRleCA5YzZlNzZmMmY0MmJkZGNlOTY1YjgyNDIyOGFiNjUyMThmZTBlMTdlLi5h
MWRhZTdiNmRkZmFmMzdjMWJiMDhiMmQxZTZiNGU2NDY5MjA3Y2Q3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0xMTEs
NyArMTExLDcgQEAgdm9pZCBDb25zdGFudE5vZGU6OmVtaXRCeXRlY29kZUluQ29uZGl0aW9uQ29u
dGV4dChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLAogICAgIC8vIEFsbCBvdGhlciBjYXNl
cyBhcmUgdW5jb25kaXRpb25hbCBmYWxsLXRocm91Z2hzLCBsaWtlICJpZiAodHJ1ZSkiLgogfQog
Ci1SZWdpc3RlcklEKiBDb25zdGFudE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCitSZWdpc3RlcklEKiBDb25zdGFudE5vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBk
c3QsIFRhaWxDYWxsTW9kZSkKIHsKICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVz
dWx0KCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTI1LDcgKzEyNSw3IEBAIEpTVmFsdWUgU3Ry
aW5nTm9kZTo6anNWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yKSBjb25zdAogCiAv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTnVtYmVyTm9kZSAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJlZ2lzdGVySUQqIE51bWJlck5vZGU6OmVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCitSZWdp
c3RlcklEKiBOdW1iZXJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2FsbE1vZGUpCiB7CiAgICAgaWYgKGRzdCA9PSBn
ZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTEz
NCw3ICsxMzQsNyBAQCBSZWdpc3RlcklEKiBOdW1iZXJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZAogCiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0gUmVnRXhwTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQogCi1SZWdpc3RlcklEKiBSZWdFeHBOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCogUmVnRXhw
Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVy
SUQqIGRzdCwgVGFpbENhbGxNb2RlKQogewogICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9y
ZWRSZXN1bHQoKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xNDMsNyArMTQzLDcgQEAgUmVnaXN0
ZXJJRCogUmVnRXhwTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqIGQKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFRo
aXNOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUmVnaXN0ZXJJ
RCogVGhpc05vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3RlcklEKiBkc3QpCitSZWdpc3RlcklEKiBUaGlzTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlKQog
ewogICAgIGlmIChtX3Nob3VsZEFsd2F5c0VtaXRURFpDaGVjayB8fCBnZW5lcmF0b3IuY29uc3Ry
dWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkKQogICAgICAgICBnZW5lcmF0
b3IuZW1pdFREWkNoZWNrKGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSk7CkBAIC0xNTksNyArMTU5
LDcgQEAgUmVnaXN0ZXJJRCogVGhpc05vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tIFN1cGVyTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAKLVJlZ2lzdGVySUQqIFN1cGVyTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK1JlZ2lzdGVySUQqIFN1cGVyTm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwg
VGFpbENhbGxNb2RlKQogewogICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQo
KSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xODMsNyArMTgzLDcgQEAgc3RhdGljIFJlZ2lzdGVy
SUQqIGVtaXRTdXBlckJhc2VGb3JDYWxsZWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvcikK
IAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIE5ld1RhcmdldE5vZGUgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1SZWdpc3RlcklEKiBOZXdUYXJnZXROb2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCog
ZHN0KQorUmVnaXN0ZXJJRCogTmV3VGFyZ2V0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlKQogewogICAg
IGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CkBAIC0xOTgsNyArMTk4LDcgQEAgYm9vbCBSZXNvbHZlTm9kZTo6aXNQdXJlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IpIGNvbnN0CiAgICAgcmV0dXJuIGdlbmVyYXRvci52YXJp
YWJsZShtX2lkZW50KS5vZmZzZXQoKS5pc1N0YWNrKCk7CiB9CiAKLVJlZ2lzdGVySUQqIFJlc29s
dmVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0
ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCogUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSkKIHsK
ICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUobV9pZGVudCk7CiAgICAgaWYg
KFJlZ2lzdGVySUQqIGxvY2FsID0gdmFyLmxvY2FsKCkpIHsKQEAgLTIyMyw3ICsyMjMsNyBAQCBS
ZWdpc3RlcklEKiBSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqCiAjaWYgRU5BQkxFKEVTNl9URU1QTEFURV9MSVRFUkFMX1NZ
TlRBWCkKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBUZW1wbGF0ZVN0cmluZ05v
ZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUmVnaXN0ZXJJRCogVGVt
cGxhdGVTdHJpbmdOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCogVGVtcGxhdGVTdHJpbmdOb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBU
YWlsQ2FsbE1vZGUpCiB7CiAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIzMiw3ICsyMzIsNyBAQCBSZWdpc3RlcklE
KiBUZW1wbGF0ZVN0cmluZ05vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpcwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gVGVtcGxh
dGVMaXRlcmFsTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1SZWdp
c3RlcklEKiBUZW1wbGF0ZUxpdGVyYWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCogVGVtcGxhdGVMaXRl
cmFsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqIGRzdCwgVGFpbENhbGxNb2RlKQogewogICAgIGlmICghbV90ZW1wbGF0ZUV4cHJlc3Np
b25zKSB7CiAgICAgICAgIFRlbXBsYXRlU3RyaW5nTm9kZSogdGVtcGxhdGVTdHJpbmcgPSBtX3Rl
bXBsYXRlU3RyaW5ncy0+dmFsdWUoKTsKQEAgLTI2OCw3ICsyNjgsNyBAQCBSZWdpc3RlcklEKiBU
ZW1wbGF0ZUxpdGVyYWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gVGFnZ2VkVGVt
cGxhdGVOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJlZ2lzdGVy
SUQqIFRhZ2dlZFRlbXBsYXRlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK1JlZ2lzdGVySUQqIFRhZ2dlZFRlbXBsYXRlTm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQq
IGRzdCwgVGFpbENhbGxNb2RlKQogewogICAgIEV4cGVjdGVkRnVuY3Rpb24gZXhwZWN0ZWRGdW5j
dGlvbiA9IE5vRXhwZWN0ZWRGdW5jdGlvbjsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGFnID0g
bnVsbHB0cjsKQEAgLTMzMCw3ICszMzAsNyBAQCBSZWdpc3RlcklEKiBUYWdnZWRUZW1wbGF0ZU5v
ZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpcwogCiAv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQXJyYXlOb2RlIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1SZWdpc3RlcklEKiBBcnJheU5vZGU6OmVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCitSZWdp
c3RlcklEKiBBcnJheU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSkKIHsKICAgICAvLyBGSVhNRTogU2hv
dWxkIHdlIHB1dCBhbGwgb2YgdGhpcyBjb2RlIGludG8gZW1pdE5ld0FycmF5PwogCkBAIC00MjAs
NyArNDIwLDcgQEAgQXJndW1lbnRMaXN0Tm9kZSogQXJyYXlOb2RlOjp0b0FyZ3VtZW50TGlzdChQ
YXJzZXJBcmVuYSYgcGFyc2VyQXJlbmEsIGludCBsaW5lTnUKIAogLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tIE9iamVjdExpdGVyYWxOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KIAotUmVnaXN0ZXJJRCogT2JqZWN0TGl0ZXJhbE5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCitSZWdpc3RlcklEKiBP
YmplY3RMaXRlcmFsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlKQogewogICAgIGlmICghbV9saXN0KSB7
CiAgICAgICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKQEAgLTQzOSw3
ICs0MzksNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZW1pdFB1dEhvbWVPYmplY3QoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZgogICAgIGdlbmVyYXRvci5lbWl0UHV0
QnlJZChmdW5jdGlvbiwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5ob21lT2JqZWN0UHJpdmF0
ZU5hbWUsIGhvbWVPYmplY3QpOwogfQogCi1SZWdpc3RlcklEKiBQcm9wZXJ0eUxpc3ROb2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0
KQorUmVnaXN0ZXJJRCogUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlKQogewogICAg
IC8vIEZhc3QgY2FzZTogdGhpcyBsb29wIGp1c3QgaGFuZGxlcyByZWd1bGFyIHZhbHVlIHByb3Bl
cnRpZXMuCiAgICAgUHJvcGVydHlMaXN0Tm9kZSogcCA9IHRoaXM7CkBAIC01ODQsNyArNTg0LDcg
QEAgdm9pZCBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0UHV0Q29uc3RhbnRQcm9wZXJ0eShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWcKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tIEJyYWNrZXRBY2Nlc3Nvck5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIAotUmVnaXN0ZXJJRCogQnJhY2tldEFjY2Vzc29yTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK1JlZ2lzdGVySUQqIEJy
YWNrZXRBY2Nlc3Nvck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSkKIHsKICAgICBpZiAobV9iYXNlLT5p
c1N1cGVyTm9kZSgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgZ2VuZXJhdGUgdGhl
IHByb2ZpbGVyIGluZm8/CkBAIC02MTUsNyArNjE1LDcgQEAgUmVnaXN0ZXJJRCogQnJhY2tldEFj
Y2Vzc29yTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2kKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIERvdEFjY2Vzc29yTm9kZSAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1SZWdpc3RlcklEKiBEb3RBY2Nlc3Nv
ck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cklEKiBkc3QpCitSZWdpc3RlcklEKiBEb3RBY2Nlc3Nvck5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSkK
IHsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IG1fYmFzZS0+aXNTdXBlck5vZGUoKSA/
IGVtaXRTdXBlckJhc2VGb3JDYWxsZWUoZ2VuZXJhdG9yKSA6IGdlbmVyYXRvci5lbWl0Tm9kZSht
X2Jhc2UpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RT
dGFydCgpLCBkaXZvdEVuZCgpKTsKQEAgLTYyNyw3ICs2MjcsNyBAQCBSZWdpc3RlcklEKiBEb3RB
Y2Nlc3Nvck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3RlcgogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQXJndW1lbnRMaXN0
Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1SZWdpc3RlcklEKiBBcmd1bWVu
dExpc3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCogQXJndW1lbnRMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxN
b2RlKQogewogICAgIEFTU0VSVChtX2V4cHIpOwogICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdE5v
ZGUoZHN0LCBtX2V4cHIpOwpAQCAtNjM1LDcgKzYzNSw3IEBAIFJlZ2lzdGVySUQqIEFyZ3VtZW50
TGlzdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBOZXdFeHByTm9kZSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJlZ2lzdGVySUQqIE5ld0V4cHJOb2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCog
ZHN0KQorUmVnaXN0ZXJJRCogTmV3RXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSkKIHsKICAgICBF
eHBlY3RlZEZ1bmN0aW9uIGV4cGVjdGVkRnVuY3Rpb247CiAgICAgaWYgKG1fZXhwci0+aXNSZXNv
bHZlTm9kZSgpKQpAQCAtNjc2LDcgKzY3Niw3IEBAIENhbGxBcmd1bWVudHM6OkNhbGxBcmd1bWVu
dHMoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgQXJndW1lbnRzTm9kZSogYXJndW1lCiAK
IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFdmFsRnVuY3Rpb25DYWxsTm9kZSAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJlZ2lzdGVySUQqIEV2YWxGdW5j
dGlvbkNhbGxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCogRXZhbEZ1bmN0aW9uQ2FsbE5vZGU6OmVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRh
aWxDYWxsTW9kZSkKIHsKICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoZ2Vu
ZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5ldmFsKTsKICAgICBpZiAoUmVnaXN0ZXJJRCogbG9jYWwg
PSB2YXIubG9jYWwoKSkgewpAQCAtNjk5LDcgKzY5OSw3IEBAIFJlZ2lzdGVySUQqIEV2YWxGdW5j
dGlvbkNhbGxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbkNhbGxWYWx1
ZU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1SZWdpc3RlcklEKiBG
dW5jdGlvbkNhbGxWYWx1ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCitSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxWYWx1ZU5v
ZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklE
KiBkc3QsIFRhaWxDYWxsTW9kZSB0YWlsQ2FsbE1vZGUpCiB7CiAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IGZ1bmMgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9leHByKTsKICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gcmV0dXJuVmFsdWUgPSBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIGZ1bmMu
Z2V0KCkpOwpAQCAtNzEzLDE0ICs3MTMsMTggQEAgUmVnaXN0ZXJJRCogRnVuY3Rpb25DYWxsVmFs
dWVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmUKICAg
ICAgICAgcmV0dXJuIHJldDsKICAgICB9CiAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGNhbGxBcmd1
bWVudHMudGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOwotICAgIFJlZ2lzdGVySUQqIHJl
dCA9IGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgZnVuYy5nZXQoKSwgTm9F
eHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRp
dm90RW5kKCkpOworICAgIFJlZ2lzdGVySUQqIHJldDsKKyAgICBpZiAodGFpbENhbGxNb2RlID09
IENhbkhhdmVUYWlsQ2FsbHMpCisgICAgICAgIHJldCA9IGdlbmVyYXRvci5lbWl0VGFpbENhbGwo
cmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmMuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFy
Z3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICBlbHNlCisg
ICAgICAgIHJldCA9IGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgZnVuYy5n
ZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0
YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocmV0dXJu
VmFsdWUuZ2V0KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgcmV0dXJuIHJldDsK
IH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9uQ2FsbFJlc29s
dmVOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUmVnaXN0ZXJJRCog
RnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCitSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxSZXNv
bHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqIGRzdCwgVGFpbENhbGxNb2RlIHRhaWxDYWxsTW9kZSkKIHsKICAgICBFeHBlY3RlZEZ1
bmN0aW9uIGV4cGVjdGVkRnVuY3Rpb24gPSBnZW5lcmF0b3IuZXhwZWN0ZWRGdW5jdGlvbkZvcklk
ZW50aWZpZXIobV9pZGVudCk7CiAKQEAgLTczMyw3ICs3MzcsMTEgQEAgUmVnaXN0ZXJJRCogRnVu
Y3Rpb25DYWxsUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLAogICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQoY2FsbEFyZ3VtZW50cy50aGlzUmVn
aXN0ZXIoKSwganNVbmRlZmluZWQoKSk7CiAgICAgICAgIC8vIFRoaXMgcGFzc2VzIE5vRXhwZWN0
ZWRGdW5jdGlvbiBiZWNhdXNlIHdlIGV4cGVjdCB0aGF0IGlmIHRoZSBmdW5jdGlvbiBpcyBpbiBh
CiAgICAgICAgIC8vIGxvY2FsIHZhcmlhYmxlLCB0aGVuIGl0J3Mgbm90IG9uZSBvZiBvdXIgYnVp
bHQtaW4gY29uc3RydWN0b3JzLgotICAgICAgICBSZWdpc3RlcklEKiByZXQgPSBnZW5lcmF0b3Iu
ZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmMuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlv
biwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAg
ICAgICAgUmVnaXN0ZXJJRCogcmV0OworICAgICAgICBpZiAodGFpbENhbGxNb2RlID09IENhbkhh
dmVUYWlsQ2FsbHMpCisgICAgICAgICAgICByZXQgPSBnZW5lcmF0b3IuZW1pdFRhaWxDYWxsKHJl
dHVyblZhbHVlLmdldCgpLCBmdW5jLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1
bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIHJldCA9IGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwg
ZnVuYy5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBk
aXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVU
eXBlKHJldHVyblZhbHVlLmdldCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAg
ICByZXR1cm4gcmV0OwogICAgIH0KQEAgLTc0OSwxNCArNzU3LDE4IEBAIFJlZ2lzdGVySUQqIEZ1
bmN0aW9uQ2FsbFJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUoY2FsbEFyZ3VtZW50
cy50aGlzUmVnaXN0ZXIoKSwgdmFyKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUo
ZnVuYy5nZXQoKSwgY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgdmFyLCBUaHJvd0lmTm90
Rm91bmQpOwogICAgIGdlbmVyYXRvci5lbWl0VERaQ2hlY2tJZk5lY2Vzc2FyeSh2YXIsIGZ1bmMu
Z2V0KCksIG51bGxwdHIpOwotICAgIFJlZ2lzdGVySUQqIHJldCA9IGdlbmVyYXRvci5lbWl0Q2Fs
bChyZXR1cm5WYWx1ZS5nZXQoKSwgZnVuYy5nZXQoKSwgZXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFy
Z3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICBSZWdpc3Rl
cklEKiByZXQ7CisgICAgaWYgKHRhaWxDYWxsTW9kZSA9PSBDYW5IYXZlVGFpbENhbGxzKQorICAg
ICAgICByZXQgPSBnZW5lcmF0b3IuZW1pdFRhaWxDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5j
LmdldCgpLCBleHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0
YXJ0KCksIGRpdm90RW5kKCkpOworICAgIGVsc2UKKyAgICAgICAgcmV0ID0gZ2VuZXJhdG9yLmVt
aXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jLmdldCgpLCBleHBlY3RlZEZ1bmN0aW9uLCBj
YWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIGdl
bmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocmV0dXJuVmFsdWUuZ2V0KCksIGRpdm90U3RhcnQoKSwg
ZGl2b3RFbmQoKSk7CiAgICAgcmV0dXJuIHJldDsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tIEJ5dGVjb2RlSW50cmluc2ljTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAKLVJlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK1Jl
Z2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlKQogewogICAg
IHJldHVybiAodGhpcy0+Km1fZW1pdHRlcikoZ2VuZXJhdG9yLCBkc3QpOwogfQpAQCAtNzg2LDcg
Kzc5OCw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5z
aWNfdG9TdHJpbmcoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAKLVJlZ2lzdGVySUQqIEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0
KQorUmVnaXN0ZXJJRCogRnVuY3Rpb25DYWxsQnJhY2tldE5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSB0
YWlsQ2FsbE1vZGUpCiB7CiAgICAgYm9vbCBiYXNlSXNTdXBlciA9IG1fYmFzZS0+aXNTdXBlck5v
ZGUoKTsKICAgICBib29sIHN1YnNjcmlwdElzU3RyaW5nID0gbV9zdWJzY3JpcHQtPmlzU3RyaW5n
KCk7CkBAIC04MTcsMTQgKzgyOSwxOCBAQCBSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxCcmFja2V0
Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsCiAgICAgICAg
IGdlbmVyYXRvci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBnZW5lcmF0
b3IudGhpc1JlZ2lzdGVyKCkpOwogICAgIGVsc2UKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3Zl
KGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGJhc2UuZ2V0KCkpOwotICAgIFJlZ2lzdGVy
SUQqIHJldCA9IGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgZnVuY3Rpb24u
Z2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RT
dGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICBSZWdpc3RlcklEKiByZXQ7CisgICAgaWYgKHRhaWxD
YWxsTW9kZSA9PSBDYW5IYXZlVGFpbENhbGxzKQorICAgICAgICByZXQgPSBnZW5lcmF0b3IuZW1p
dFRhaWxDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1
bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkp
OworICAgIGVsc2UKKyAgICAgICAgcmV0ID0gZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVl
LmdldCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRz
LCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIGdlbmVyYXRvci5lbWl0
UHJvZmlsZVR5cGUocmV0dXJuVmFsdWUuZ2V0KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7
CiAgICAgcmV0dXJuIHJldDsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
IEZ1bmN0aW9uQ2FsbERvdE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
Ci1SZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCogRnVuY3Rp
b25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlIHRhaWxDYWxsTW9kZSkKIHsKICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gZnVuY3Rpb24gPSBnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCk7
CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVyblZhbHVlID0gZ2VuZXJhdG9yLmZpbmFsRGVz
dGluYXRpb24oZHN0LCBmdW5jdGlvbi5nZXQoKSk7CkBAIC04MzYsMTIgKzg1MiwxNiBAQCBSZWdp
c3RlcklEKiBGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaQogICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3Vt
ZW50cy50aGlzUmVnaXN0ZXIoKSwgbV9iYXNlKTsKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Np
b25JbmZvKHN1YmV4cHJlc3Npb25EaXZvdCgpLCBzdWJleHByZXNzaW9uU3RhcnQoKSwgc3ViZXhw
cmVzc2lvbkVuZCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZnVuY3Rpb24uZ2V0KCks
IGJhc2VJc1N1cGVyID8gZW1pdFN1cGVyQmFzZUZvckNhbGxlZShnZW5lcmF0b3IpIDogY2FsbEFy
Z3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgbV9pZGVudCk7Ci0gICAgUmVnaXN0ZXJJRCogcmV0ID0g
Z2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9F
eHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRp
dm90RW5kKCkpOworICAgIFJlZ2lzdGVySUQqIHJldDsKKyAgICBpZiAodGFpbENhbGxNb2RlID09
IENhbkhhdmVUYWlsQ2FsbHMpCisgICAgICAgIHJldCA9IGdlbmVyYXRvci5lbWl0VGFpbENhbGwo
cmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNh
bGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgZWxz
ZQorICAgICAgICByZXQgPSBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1
bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCks
IGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlw
ZShyZXR1cm5WYWx1ZS5nZXQoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICByZXR1
cm4gcmV0OwogfQogCi1SZWdpc3RlcklEKiBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK1Jl
Z2lzdGVySUQqIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2FsbE1vZGUgdGFpbENh
bGxNb2RlKQogewogICAgIFJlZlB0cjxMYWJlbD4gcmVhbENhbGwgPSBnZW5lcmF0b3IubmV3TGFi
ZWwoKTsKICAgICBSZWZQdHI8TGFiZWw+IGVuZCA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwpAQCAt
ODY1LDcgKzg4NSwxMCBAQCBSZWdpc3RlcklEKiBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsCiAgICAgICAgICAgICBhcmd1
bWVudHNSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0Tm9kZShzdWJqZWN0KTsKICAgICAgICAgICAg
IGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oc3ByZWFkLT5kaXZvdCgpLCBzcHJlYWQtPmRp
dm90U3RhcnQoKSwgc3ByZWFkLT5kaXZvdEVuZCgpKTsKICAgICAgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiB0aGlzUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdEdldEJ5VmFsKGdlbmVyYXRvci5u
ZXdUZW1wb3JhcnkoKSwgYXJndW1lbnRzUmVnaXN0ZXIuZ2V0KCksIGdlbmVyYXRvci5lbWl0TG9h
ZCgwLCBqc051bWJlcigwKSkpOwotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsVmFyYXJn
cyhyZXR1cm5WYWx1ZS5nZXQoKSwgYmFzZS5nZXQoKSwgdGhpc1JlZ2lzdGVyLmdldCgpLCBhcmd1
bWVudHNSZWdpc3Rlci5nZXQoKSwgZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCAxLCBwcm9maWxl
SG9va1JlZ2lzdGVyLmdldCgpLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwor
ICAgICAgICAgICAgaWYgKHRhaWxDYWxsTW9kZSA9PSBDYW5IYXZlVGFpbENhbGxzKQorICAgICAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0VGFpbENhbGxWYXJhcmdzKHJldHVyblZhbHVlLmdldCgp
LCBiYXNlLmdldCgpLCB0aGlzUmVnaXN0ZXIuZ2V0KCksIGFyZ3VtZW50c1JlZ2lzdGVyLmdldCgp
LCBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIDEsIHByb2ZpbGVIb29rUmVnaXN0ZXIuZ2V0KCks
IGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsVmFyYXJncyhyZXR1cm5WYWx1ZS5nZXQo
KSwgYmFzZS5nZXQoKSwgdGhpc1JlZ2lzdGVyLmdldCgpLCBhcmd1bWVudHNSZWdpc3Rlci5nZXQo
KSwgZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCAxLCBwcm9maWxlSG9va1JlZ2lzdGVyLmdldCgp
LCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICB9IGVsc2UgaWYg
KG1fYXJncy0+bV9saXN0Tm9kZSAmJiBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fZXhwcikgewogICAg
ICAgICAgICAgQXJndW1lbnRMaXN0Tm9kZSogb2xkTGlzdCA9IG1fYXJncy0+bV9saXN0Tm9kZTsK
ICAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IG1fYXJncy0+bV9saXN0Tm9kZS0+bV9u
ZXh0OwpAQCAtODczLDEzICs4OTYsMTkgQEAgUmVnaXN0ZXJJRCogQ2FsbEZ1bmN0aW9uQ2FsbERv
dE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLAogICAgICAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92
ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwogICAgICAgICAg
ICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICAg
ICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBv
bGRMaXN0LT5tX2V4cHIpOwotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZh
bHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFy
Z3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgICAg
IGlmICh0YWlsQ2FsbE1vZGUgPT0gQ2FuSGF2ZVRhaWxDYWxscykKKyAgICAgICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdFRhaWxDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0
KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFy
dCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9F
eHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRp
dm90RW5kKCkpOwogICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gb2xkTGlzdDsKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rp
b24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBi
YXNlLmdldCgpKTsKICAgICAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5l
cmF0b3IsIG1fYXJncyk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQoY2FsbEFyZ3Vt
ZW50cy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7Ci0gICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBl
Y3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90
RW5kKCkpOworICAgICAgICAgICAgaWYgKHRhaWxDYWxsTW9kZSA9PSBDYW5IYXZlVGFpbENhbGxz
KQorICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0VGFpbENhbGwocmV0dXJuVmFsdWUuZ2V0
KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRz
LCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVh
bEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90
KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgaWYg
KGVtaXRDYWxsQ2hlY2spIHsKQEAgLTg4OCw3ICs5MTcsMTAgQEAgUmVnaXN0ZXJJRCogQ2FsbEZ1
bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLAogICAgICAgICB7CiAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMo
Z2VuZXJhdG9yLCBtX2FyZ3MpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGNhbGxB
cmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGJhc2UuZ2V0KCkpOwotICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3Rl
ZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5k
KCkpOworICAgICAgICAgICAgaWYgKHRhaWxDYWxsTW9kZSA9PSBDYW5IYXZlVGFpbENhbGxzKQor
ICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0VGFpbENhbGwocmV0dXJuVmFsdWUuZ2V0KCks
IGZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90
KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlvbi5n
ZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0
YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICB9CiAgICAgICAgIGdlbmVyYXRvci5lbWl0TGFi
ZWwoZW5kLmdldCgpKTsKICAgICB9CkBAIC05MDIsNyArOTM0LDcgQEAgc3RhdGljIGJvb2wgYXJl
VHJpdmlhbEFwcGx5QXJndW1lbnRzKEFyZ3VtZW50c05vZGUqIGFyZ3MpCiAgICAgICAgIHx8ICgh
YXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5tX25leHQgJiYgYXJncy0+bV9saXN0Tm9kZS0+bV9u
ZXh0LT5tX2V4cHItPmlzU2ltcGxlQXJyYXkoKSk7CiB9CiAKLVJlZ2lzdGVySUQqIEFwcGx5RnVu
Y3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqIGRzdCkKK1JlZ2lzdGVySUQqIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQq
IGRzdCwgVGFpbENhbGxNb2RlIHRhaWxDYWxsTW9kZSkKIHsKICAgICAvLyBBIGZldyBzaW1wbGUg
Y2FzZXMgY2FuIGJlIHRyaXZpYWxseSBoYW5kbGVkIGFzIG9yZGluYXJ5IGZ1bmN0aW9uIGNhbGxz
LgogICAgIC8vIGZ1bmN0aW9uLmFwcGx5KCksIGZ1bmN0aW9uLmFwcGx5KGFyZykgLT4gaWRlbnRp
Y2FsIHRvIGZ1bmN0aW9uLmNhbGwKQEAgLTk1MSw3ICs5ODMsMTAgQEAgUmVnaXN0ZXJJRCogQXBw
bHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwKICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChlbmQuZ2V0
KCkpOwogICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRF
bnVtZXJhdGlvbih0aGlzLCBzcHJlYWQtPmV4cHJlc3Npb24oKSwgZXh0cmFjdG9yKTsKLSAgICAg
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGxWYXJhcmdzKHJldHVyblZhbHVlLmdldCgpLCBy
ZWFsRnVuY3Rpb24uZ2V0KCksIHRoaXNSZWdpc3Rlci5nZXQoKSwgYXJndW1lbnRzUmVnaXN0ZXIu
Z2V0KCksIGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgMCwgcHJvZmlsZUhvb2tSZWdpc3Rlci5n
ZXQoKSwgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgICAgICAg
ICBpZiAodGFpbENhbGxNb2RlID09IENhbkhhdmVUYWlsQ2FsbHMpCisgICAgICAgICAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0VGFpbENhbGxWYXJhcmdzKHJldHVyblZhbHVlLmdldCgpLCByZWFs
RnVuY3Rpb24uZ2V0KCksIHRoaXNSZWdpc3Rlci5nZXQoKSwgYXJndW1lbnRzUmVnaXN0ZXIuZ2V0
KCksIGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgMCwgcHJvZmlsZUhvb2tSZWdpc3Rlci5nZXQo
KSwgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbFZhcmFyZ3MocmV0dXJu
VmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgdGhpc1JlZ2lzdGVyLmdldCgpLCBhcmd1
bWVudHNSZWdpc3Rlci5nZXQoKSwgZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCAwLCBwcm9maWxl
SG9va1JlZ2lzdGVyLmdldCgpLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwog
ICAgICAgICAgICAgfSBlbHNlIGlmIChtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dCkgewogICAg
ICAgICAgICAgICAgIEFTU0VSVChtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9leHByLT5p
c1NpbXBsZUFycmF5KCkpOwogICAgICAgICAgICAgICAgIEFTU0VSVCghbV9hcmdzLT5tX2xpc3RO
b2RlLT5tX25leHQtPm1fbmV4dCk7CkBAIC05NTksMjAgKzk5NCwyOSBAQCBSZWdpc3RlcklEKiBB
cHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLAogICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rp
b24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBi
YXNlLmdldCgpKTsKICAgICAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMo
Z2VuZXJhdG9yLCBtX2FyZ3MpOwogICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShj
YWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRMaXN0LT5tX2V4cHIpOwotICAgICAgICAg
ICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9u
LmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90
U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgICAgICAgICAgaWYgKHRhaWxDYWxsTW9kZSA9
PSBDYW5IYXZlVGFpbENhbGxzKQorICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFRh
aWxDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRG
dW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgp
KTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVk
RnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQo
KSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIG1fYXJncy0+bV9saXN0
Tm9kZSA9IG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0OwogICAgICAgICAgICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9y
LnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsKICAgICAgICAgICAgICAgICBDYWxs
QXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwogICAgICAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRM
aXN0LT5tX2V4cHIpOwotICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5W
YWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxB
cmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgICAg
ICAgICAgaWYgKHRhaWxDYWxsTW9kZSA9PSBDYW5IYXZlVGFpbENhbGxzKQorICAgICAgICAgICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdFRhaWxDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVu
Y3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwg
ZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1
bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCks
IGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBt
X2FyZ3MtPm1fbGlzdE5vZGUgPSBvbGRMaXN0OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShn
ZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwogICAgICAgICAgICAg
Q2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1Vu
ZGVmaW5lZCgpKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5n
ZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVu
dHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgICAgICBpZiAo
dGFpbENhbGxNb2RlID09IENhbkhhdmVUYWlsQ2FsbHMpCisgICAgICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRUYWlsQ2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBO
b0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwg
ZGl2b3RFbmQoKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0
ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVu
ZCgpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVChtX2FyZ3MtPm1f
bGlzdE5vZGUgJiYgbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQpOwpAQCAtOTkwLDE0ICsxMDM0
LDIwIEBAIFJlZ2lzdGVySUQqIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsCiAgICAgICAgIHdoaWxlICgoYXJncyA9IGFy
Z3MtPm1fbmV4dCkpCiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoYXJncy0+bV9leHBy
KTsKIAotICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGxWYXJhcmdzKHJldHVyblZhbHVlLmdldCgp
LCByZWFsRnVuY3Rpb24uZ2V0KCksIHRoaXNSZWdpc3Rlci5nZXQoKSwgYXJnc1JlZ2lzdGVyLmdl
dCgpLCBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIDAsIHByb2ZpbGVIb29rUmVnaXN0ZXIuZ2V0
KCksIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgIGlmICh0YWls
Q2FsbE1vZGUgPT0gQ2FuSGF2ZVRhaWxDYWxscykKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
VGFpbENhbGxWYXJhcmdzKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIHRo
aXNSZWdpc3Rlci5nZXQoKSwgYXJnc1JlZ2lzdGVyLmdldCgpLCBnZW5lcmF0b3IubmV3VGVtcG9y
YXJ5KCksIDAsIHByb2ZpbGVIb29rUmVnaXN0ZXIuZ2V0KCksIGRpdm90KCksIGRpdm90U3RhcnQo
KSwgZGl2b3RFbmQoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
Q2FsbFZhcmFyZ3MocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgdGhpc1Jl
Z2lzdGVyLmdldCgpLCBhcmdzUmVnaXN0ZXIuZ2V0KCksIGdlbmVyYXRvci5uZXdUZW1wb3Jhcnko
KSwgMCwgcHJvZmlsZUhvb2tSZWdpc3Rlci5nZXQoKSwgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBk
aXZvdEVuZCgpKTsKICAgICB9CiAgICAgaWYgKGVtaXRDYWxsQ2hlY2spIHsKICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRKdW1wKGVuZC5nZXQoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwo
cmVhbENhbGwuZ2V0KCkpOwogICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2Vu
ZXJhdG9yLCBtX2FyZ3MpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdE1vdmUoY2FsbEFyZ3VtZW50
cy50aGlzUmVnaXN0ZXIoKSwgYmFzZS5nZXQoKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0Q2Fs
bChyZXR1cm5WYWx1ZS5nZXQoKSwgZnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwg
Y2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAg
ICAgaWYgKHRhaWxDYWxsTW9kZSA9PSBDYW5IYXZlVGFpbENhbGxzKQorICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRUYWlsQ2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgZnVuY3Rpb24uZ2V0KCksIE5v
RXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBk
aXZvdEVuZCgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxs
KHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBj
YWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAg
ICBnZW5lcmF0b3IuZW1pdExhYmVsKGVuZC5nZXQoKSk7CiAgICAgfQogICAgIGdlbmVyYXRvci5l
bWl0UHJvZmlsZVR5cGUocmV0dXJuVmFsdWUuZ2V0KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQo
KSk7CkBAIC0xMTAzLDcgKzExNTMsNyBAQCBSZWdpc3RlcklEKiBQb3N0Zml4Tm9kZTo6ZW1pdERv
dChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAgICAgcmV0
dXJuIGdlbmVyYXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwgb2xkVmFsdWUpOwog
fQogCi1SZWdpc3RlcklEKiBQb3N0Zml4Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK1JlZ2lzdGVySUQqIFBvc3RmaXhOb2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCog
ZHN0LCBUYWlsQ2FsbE1vZGUpCiB7CiAgICAgaWYgKG1fZXhwci0+aXNSZXNvbHZlTm9kZSgpKQog
ICAgICAgICByZXR1cm4gZW1pdFJlc29sdmUoZ2VuZXJhdG9yLCBkc3QpOwpAQCAtMTEyMSw3ICsx
MTcxLDcgQEAgUmVnaXN0ZXJJRCogUG9zdGZpeE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKgogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0gRGVsZXRlUmVzb2x2ZU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KIAotUmVnaXN0ZXJJRCogRGVsZXRlUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCitSZWdpc3RlcklE
KiBEZWxldGVSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlKQogewogICAgIFZhcmlhYmxlIHZh
ciA9IGdlbmVyYXRvci52YXJpYWJsZShtX2lkZW50KTsKICAgICBpZiAodmFyLmxvY2FsKCkpIHsK
QEAgLTExMzcsNyArMTE4Nyw3IEBAIFJlZ2lzdGVySUQqIERlbGV0ZVJlc29sdmVOb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0CiAKIC8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBEZWxldGVCcmFja2V0Tm9kZSAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1SZWdpc3RlcklEKiBEZWxldGVCcmFja2V0Tm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRz
dCkKK1JlZ2lzdGVySUQqIERlbGV0ZUJyYWNrZXROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2FsbE1vZGUpCiB7CiAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHIwID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fYmFzZSk7CiAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHIxID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fc3Vic2NyaXB0
KTsKQEAgLTExNTAsNyArMTIwMCw3IEBAIFJlZ2lzdGVySUQqIERlbGV0ZUJyYWNrZXROb2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0CiAKIC8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBEZWxldGVEb3ROb2RlIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJlZ2lzdGVySUQqIERlbGV0ZURvdE5vZGU6OmVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCitS
ZWdpc3RlcklEKiBEZWxldGVEb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2FsbE1vZGUpCiB7CiAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHIwID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fYmFzZSk7CiAKQEAgLTExNjIs
NyArMTIxMiw3IEBAIFJlZ2lzdGVySUQqIERlbGV0ZURvdE5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklECiAKIC8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSBEZWxldGVWYWx1ZU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIAotUmVnaXN0ZXJJRCogRGVsZXRlVmFsdWVOb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJ
RCogRGVsZXRlVmFsdWVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2FsbE1vZGUpCiB7CiAgICAgZ2VuZXJhdG9yLmVt
aXROb2RlKGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCksIG1fZXhwcik7CiAKQEAgLTExNzIsNyAr
MTIyMiw3IEBAIFJlZ2lzdGVySUQqIERlbGV0ZVZhbHVlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVyCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSBWb2lkTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAKLVJlZ2lzdGVySUQqIFZvaWROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCogVm9pZE5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3Qs
IFRhaWxDYWxsTW9kZSkKIHsKICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0
KCkpIHsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0
KCksIG1fZXhwcik7CkBAIC0xMTg0LDcgKzEyMzQsNyBAQCBSZWdpc3RlcklEKiBWb2lkTm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRz
dAogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gVHlwZU9mUmVzb2x2ZU5vZGUg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUmVnaXN0ZXJJRCogVHlwZU9m
UmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3RlcklEKiBkc3QpCitSZWdpc3RlcklEKiBUeXBlT2ZSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENh
bGxNb2RlKQogewogICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShtX2lkZW50
KTsKICAgICBpZiAoUmVnaXN0ZXJJRCogbG9jYWwgPSB2YXIubG9jYWwoKSkgewpAQCAtMTIwNCw3
ICsxMjU0LDcgQEAgUmVnaXN0ZXJJRCogVHlwZU9mUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3QKIAogLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tIFR5cGVPZlZhbHVlTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQogCi1SZWdpc3RlcklEKiBUeXBlT2ZWYWx1ZU5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCitSZWdpc3RlcklE
KiBUeXBlT2ZWYWx1ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSkKIHsKICAgICBpZiAoZHN0ID09IGdl
bmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpIHsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGdl
bmVyYXRvci5pZ25vcmVkUmVzdWx0KCksIG1fZXhwcik7CkBAIC0xMjk4LDcgKzEzNDgsNyBAQCBS
ZWdpc3RlcklEKiBQcmVmaXhOb2RlOjplbWl0RG90KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqIGRzdCkKICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0
aW9uSWZOZWVkZWQoZHN0LCBwcm9wRHN0LmdldCgpKTsKIH0KIAotUmVnaXN0ZXJJRCogUHJlZml4
Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVy
SUQqIGRzdCkKK1JlZ2lzdGVySUQqIFByZWZpeE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSkKIHsKICAg
ICBpZiAobV9leHByLT5pc1Jlc29sdmVOb2RlKCkpCiAgICAgICAgIHJldHVybiBlbWl0UmVzb2x2
ZShnZW5lcmF0b3IsIGRzdCk7CkBAIC0xMzE2LDcgKzEzNjYsNyBAQCBSZWdpc3RlcklEKiBQcmVm
aXhOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0
ZXJJRCogZAogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gVW5hcnkgT3BlcmF0
aW9uIE5vZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJlZ2lzdGVy
SUQqIFVuYXJ5T3BOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCogVW5hcnlPcE5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxs
TW9kZSkKIHsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3JjID0gZ2VuZXJhdG9yLmVtaXROb2Rl
KG1fZXhwcik7CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhwb3NpdGlvbigpLCBw
b3NpdGlvbigpLCBwb3NpdGlvbigpKTsKQEAgLTEzMjUsNyArMTM3NSw3IEBAIFJlZ2lzdGVySUQq
IFVuYXJ5T3BOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCoKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEJpdHdpc2VO
b3ROb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgCi1SZWdpc3RlcklE
KiBCaXR3aXNlTm90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqIGRzdCkKK1JlZ2lzdGVySUQqIEJpdHdpc2VOb3ROb2RlOjplbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBUYWls
Q2FsbE1vZGUpCiB7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNyYzIgPSBnZW5lcmF0b3IuZW1p
dExvYWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBqc051bWJlcigtMSkpOwogICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBzcmMxID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fZXhwcik7CkBAIC0xNTE4
LDcgKzE1NjgsNyBAQCB2b2lkIEJpbmFyeU9wTm9kZTo6dHJ5Rm9sZFRvQnJhbmNoKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFRyaVN0YXRlJiBicmFuYwogICAgICAgICBicmFuY2hDb25k
aXRpb24gPSB0cmlTdGF0ZSghdmFsdWUucHVyZVRvQm9vbGVhbigpKTsKIH0KIAotUmVnaXN0ZXJJ
RCogQmluYXJ5T3BOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCogQmluYXJ5T3BOb2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2Fs
bE1vZGUpCiB7CiAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSB0aGlzLT5vcGNvZGVJRCgpOwogCkBA
IC0xNTYyLDcgKzE2MTIsNyBAQCBSZWdpc3RlcklEKiBCaW5hcnlPcE5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKgogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKLVJlZ2lzdGVySUQqIEVxdWFsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK1JlZ2lzdGVySUQqIEVxdWFs
Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVy
SUQqIGRzdCwgVGFpbENhbGxNb2RlKQogewogICAgIGlmIChtX2V4cHIxLT5pc051bGwoKSB8fCBt
X2V4cHIyLT5pc051bGwoKSkgewogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3JjID0gZ2Vu
ZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpOwpAQCAtMTU4MCw3ICsxNjMwLDcgQEAgUmVnaXN0
ZXJJRCogRXF1YWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCogZHMKICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRFcXVhbGl0eU9wKG9w
X2VxLCBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIHNyYzEuZ2V0KCkpLCBzcmMxLmdl
dCgpLCBzcmMyLmdldCgpKTsKIH0KIAotUmVnaXN0ZXJJRCogU3RyaWN0RXF1YWxOb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQor
UmVnaXN0ZXJJRCogU3RyaWN0RXF1YWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2FsbE1vZGUpCiB7CiAgICAgRXhw
cmVzc2lvbk5vZGUqIGxlZnQgPSBtX2V4cHIxOwogICAgIEV4cHJlc3Npb25Ob2RlKiByaWdodCA9
IG1fZXhwcjI7CkBAIC0xNTkyLDcgKzE2NDIsNyBAQCBSZWdpc3RlcklEKiBTdHJpY3RFcXVhbE5v
ZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rlcgog
ICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEVxdWFsaXR5T3Aob3Bfc3RyaWN0ZXEsIGdlbmVyYXRv
ci5maW5hbERlc3RpbmF0aW9uKGRzdCwgc3JjMS5nZXQoKSksIHNyYzEuZ2V0KCksIHNyYzIuZ2V0
KCkpOwogfQogCi1SZWdpc3RlcklEKiBUaHJvd2FibGVCaW5hcnlPcE5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCitSZWdpc3Rl
cklEKiBUaHJvd2FibGVCaW5hcnlPcE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSkKIHsKICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gc3JjMSA9IGdlbmVyYXRvci5lbWl0Tm9kZUZvckxlZnRIYW5kU2lkZSht
X2V4cHIxLCBtX3JpZ2h0SGFzQXNzaWdubWVudHMsIG1fZXhwcjItPmlzUHVyZShnZW5lcmF0b3Ip
KTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3JjMiA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2V4
cHIyKTsKQEAgLTE2MDAsNyArMTY1MCw3IEBAIFJlZ2lzdGVySUQqIFRocm93YWJsZUJpbmFyeU9w
Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlCiAgICAg
cmV0dXJuIGdlbmVyYXRvci5lbWl0QmluYXJ5T3Aob3Bjb2RlSUQoKSwgZ2VuZXJhdG9yLmZpbmFs
RGVzdGluYXRpb24oZHN0LCBzcmMxLmdldCgpKSwgc3JjMS5nZXQoKSwgc3JjMi5nZXQoKSwgT3Bl
cmFuZFR5cGVzKG1fZXhwcjEtPnJlc3VsdERlc2NyaXB0b3IoKSwgbV9leHByMi0+cmVzdWx0RGVz
Y3JpcHRvcigpKSk7CiB9CiAKLVJlZ2lzdGVySUQqIEluc3RhbmNlT2ZOb2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0
ZXJJRCogSW5zdGFuY2VPZk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSkKIHsKICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gc3JjMSA9IGdlbmVyYXRvci5lbWl0Tm9kZUZvckxlZnRIYW5kU2lkZShtX2V4cHIx
LCBtX3JpZ2h0SGFzQXNzaWdubWVudHMsIG1fZXhwcjItPmlzUHVyZShnZW5lcmF0b3IpKTsKICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3JjMiA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2V4cHIyKTsK
QEAgLTE2MjIsNyArMTY3Miw3IEBAIFJlZ2lzdGVySUQqIEluc3RhbmNlT2ZOb2RlOjplbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJCiAKIC8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBMb2dpY2FsT3BOb2RlIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIAotUmVnaXN0ZXJJRCogTG9naWNhbE9wTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK1JlZ2lzdGVySUQq
IExvZ2ljYWxPcE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSB0YWlsQ2FsbE1vZGUpCiB7CiAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHRlbXAgPSBnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCk7CiAg
ICAgUmVmUHRyPExhYmVsPiB0YXJnZXQgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKQEAgLTE2MzIs
NyArMTY4Miw3IEBAIFJlZ2lzdGVySUQqIExvZ2ljYWxPcE5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklECiAgICAgICAgIGdlbmVyYXRvci5l
bWl0SnVtcElmRmFsc2UodGVtcC5nZXQoKSwgdGFyZ2V0LmdldCgpKTsKICAgICBlbHNlCiAgICAg
ICAgIGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1ZSh0ZW1wLmdldCgpLCB0YXJnZXQuZ2V0KCkpOwot
ICAgIGdlbmVyYXRvci5lbWl0Tm9kZSh0ZW1wLmdldCgpLCBtX2V4cHIyKTsKKyAgICBnZW5lcmF0
b3IuZW1pdE5vZGUodGVtcC5nZXQoKSwgbV9leHByMiwgdGFpbENhbGxNb2RlKTsKICAgICBnZW5l
cmF0b3IuZW1pdExhYmVsKHRhcmdldC5nZXQoKSk7CiAKICAgICByZXR1cm4gZ2VuZXJhdG9yLm1v
dmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZHN0LCB0ZW1wLmdldCgpKTsKQEAgLTE2NTIsNyArMTcw
Miw3IEBAIHZvaWQgTG9naWNhbE9wTm9kZTo6ZW1pdEJ5dGVjb2RlSW5Db25kaXRpb25Db250ZXh0
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSBDb25kaXRpb25hbE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAKLVJlZ2lzdGVySUQqIENvbmRpdGlvbmFsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK1JlZ2lzdGVySUQqIENvbmRpdGlv
bmFsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqIGRzdCwgVGFpbENhbGxNb2RlIHRhaWxDYWxsTW9kZSkKIHsKICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gbmV3RHN0ID0gZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KTsKICAgICBS
ZWZQdHI8TGFiZWw+IGJlZm9yZUVsc2UgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKQEAgLTE2NjMs
MTIgKzE3MTMsMTIgQEAgUmVnaXN0ZXJJRCogQ29uZGl0aW9uYWxOb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXIKICAgICBnZW5lcmF0b3IuZW1p
dExhYmVsKGJlZm9yZVRoZW4uZ2V0KCkpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlQ29u
dHJvbEZsb3cobV9leHByMS0+c3RhcnRPZmZzZXQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXROb2Rl
KG5ld0RzdC5nZXQoKSwgbV9leHByMSk7CisgICAgZ2VuZXJhdG9yLmVtaXROb2RlKG5ld0RzdC5n
ZXQoKSwgbV9leHByMSwgdGFpbENhbGxNb2RlKTsKICAgICBnZW5lcmF0b3IuZW1pdEp1bXAoYWZ0
ZXJFbHNlLmdldCgpKTsKIAogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoYmVmb3JlRWxzZS5nZXQo
KSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlQ29udHJvbEZsb3cobV9leHByMS0+ZW5kT2Zm
c2V0KCkgKyAxKTsKLSAgICBnZW5lcmF0b3IuZW1pdE5vZGUobmV3RHN0LmdldCgpLCBtX2V4cHIy
KTsKKyAgICBnZW5lcmF0b3IuZW1pdE5vZGUobmV3RHN0LmdldCgpLCBtX2V4cHIyLCB0YWlsQ2Fs
bE1vZGUpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChhZnRlckVsc2UuZ2V0KCkpOwogCkBA
IC0xNzM2LDcgKzE3ODYsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBSZWdpc3RlcklEKiBlbWl0
UmVhZE1vZGlmeUFzc2lnbm1lbnQoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbgogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKLVJlZ2lzdGVySUQqIFJlYWRNb2RpZnlSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK1JlZ2lz
dGVySUQqIFJlYWRNb2RpZnlSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlKQogewogICAgIEpT
VGV4dFBvc2l0aW9uIG5ld0Rpdm90ID0gZGl2b3RTdGFydCgpICsgbV9pZGVudC5sZW5ndGgoKTsK
ICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUobV9pZGVudCk7CkBAIC0xNzg1
LDcgKzE4MzUsNyBAQCBSZWdpc3RlcklEKiBSZWFkTW9kaWZ5UmVzb2x2ZU5vZGU6OmVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZQogCiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0gQXNzaWduUmVzb2x2ZU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KIAotUmVnaXN0ZXJJRCogQXNzaWduUmVzb2x2ZU5vZGU6OmVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCitSZWdp
c3RlcklEKiBBc3NpZ25SZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlKQogewogICAgIFZhcmlh
YmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShtX2lkZW50KTsKICAgICBib29sIGlzUmVhZE9u
bHkgPSB2YXIuaXNSZWFkT25seSgpICYmIG1fYXNzaWdubWVudENvbnRleHQgIT0gQXNzaWdubWVu
dENvbnRleHQ6OkNvbnN0RGVjbGFyYXRpb25TdGF0ZW1lbnQ7CkBAIC0xODQ1LDcgKzE4OTUsNyBA
QCBSZWdpc3RlcklEKiBBc3NpZ25SZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdAogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0gQXNzaWduRG90Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
Ci1SZWdpc3RlcklEKiBBc3NpZ25Eb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCogQXNzaWduRG90Tm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQq
IGRzdCwgVGFpbENhbGxNb2RlKQogewogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2Vu
ZXJhdG9yLmVtaXROb2RlRm9yTGVmdEhhbmRTaWRlKG1fYmFzZSwgbV9yaWdodEhhc0Fzc2lnbm1l
bnRzLCBtX3JpZ2h0LT5pc1B1cmUoZ2VuZXJhdG9yKSk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHZhbHVlID0gZ2VuZXJhdG9yLmRlc3RpbmF0aW9uRm9yQXNzaWduUmVzdWx0KGRzdCk7CkBAIC0x
ODU5LDcgKzE5MDksNyBAQCBSZWdpc3RlcklEKiBBc3NpZ25Eb3ROb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRAogCiAvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0gUmVhZE1vZGlmeURvdE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIAotUmVnaXN0ZXJJRCogUmVhZE1vZGlmeURvdE5vZGU6OmVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCitS
ZWdpc3RlcklEKiBSZWFkTW9kaWZ5RG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlKQogewogICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlRm9yTGVmdEhhbmRTaWRl
KG1fYmFzZSwgbV9yaWdodEhhc0Fzc2lnbm1lbnRzLCBtX3JpZ2h0LT5pc1B1cmUoZ2VuZXJhdG9y
KSk7CiAKQEAgLTE4NzUsMTQgKzE5MjUsMTQgQEAgUmVnaXN0ZXJJRCogUmVhZE1vZGlmeURvdE5v
ZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3QKIAog
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEFzc2lnbkVycm9yTm9kZSAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1SZWdpc3RlcklEKiBBc3NpZ25FcnJvck5v
ZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklE
KikKK1JlZ2lzdGVySUQqIEFzc2lnbkVycm9yTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqLCBUYWlsQ2FsbE1vZGUpCiB7CiAgICAgcmV0
dXJuIGVtaXRUaHJvd1JlZmVyZW5jZUVycm9yKGdlbmVyYXRvciwgQVNDSUlMaXRlcmFsKCJMZWZ0
IHNpZGUgb2YgYXNzaWdubWVudCBpcyBub3QgYSByZWZlcmVuY2UuIikpOwogfQogCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQXNzaWduQnJhY2tldE5vZGUgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUmVnaXN0ZXJJRCogQXNzaWduQnJhY2tldE5vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBk
c3QpCitSZWdpc3RlcklEKiBBc3NpZ25CcmFja2V0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlKQogewog
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlRm9yTGVmdEhh
bmRTaWRlKG1fYmFzZSwgbV9zdWJzY3JpcHRIYXNBc3NpZ25tZW50cyB8fCBtX3JpZ2h0SGFzQXNz
aWdubWVudHMsIG1fc3Vic2NyaXB0LT5pc1B1cmUoZ2VuZXJhdG9yKSAmJiBtX3JpZ2h0LT5pc1B1
cmUoZ2VuZXJhdG9yKSk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3BlcnR5ID0gZ2VuZXJh
dG9yLmVtaXROb2RlRm9yTGVmdEhhbmRTaWRlKG1fc3Vic2NyaXB0LCBtX3JpZ2h0SGFzQXNzaWdu
bWVudHMsIG1fcmlnaHQtPmlzUHVyZShnZW5lcmF0b3IpKTsKQEAgLTE5MDMsNyArMTk1Myw3IEBA
IFJlZ2lzdGVySUQqIEFzc2lnbkJyYWNrZXROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSBSZWFkTW9kaWZ5QnJhY2tldE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KIAotUmVnaXN0ZXJJRCogUmVhZE1vZGlmeUJyYWNrZXROb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJ
RCogUmVhZE1vZGlmeUJyYWNrZXROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2FsbE1vZGUpCiB7CiAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGVGb3JMZWZ0SGFuZFNpZGUobV9i
YXNlLCBtX3N1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzIHx8IG1fcmlnaHRIYXNBc3NpZ25tZW50cywg
bV9zdWJzY3JpcHQtPmlzUHVyZShnZW5lcmF0b3IpICYmIG1fcmlnaHQtPmlzUHVyZShnZW5lcmF0
b3IpKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvcGVydHkgPSBnZW5lcmF0b3IuZW1pdE5v
ZGVGb3JMZWZ0SGFuZFNpZGUobV9zdWJzY3JpcHQsIG1fcmlnaHRIYXNBc3NpZ25tZW50cywgbV9y
aWdodC0+aXNQdXJlKGdlbmVyYXRvcikpOwpAQCAtMTkyMSwxMiArMTk3MSwxMiBAQCBSZWdpc3Rl
cklEKiBSZWFkTW9kaWZ5QnJhY2tldE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29t
bWFOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1SZWdpc3RlcklE
KiBDb21tYU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3RlcklEKiBkc3QpCitSZWdpc3RlcklEKiBDb21tYU5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSB0
YWlsQ2FsbE1vZGUpCiB7CiAgICAgQ29tbWFOb2RlKiBub2RlID0gdGhpczsKICAgICBmb3IgKDsg
bm9kZSAmJiBub2RlLT5uZXh0KCk7IG5vZGUgPSBub2RlLT5uZXh0KCkpCiAgICAgICAgIGdlbmVy
YXRvci5lbWl0Tm9kZShnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpLCBub2RlLT5tX2V4cHIpOwot
ICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBub2RlLT5tX2V4cHIpOworICAgIHJl
dHVybiBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBub2RlLT5tX2V4cHIsIHRhaWxDYWxsTW9kZSk7
CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTb3VyY2VFbGVtZW50cyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xOTM3LDEwICsxOTg3LDEwIEBAIGlu
bGluZSBTdGF0ZW1lbnROb2RlKiBTb3VyY2VFbGVtZW50czo6bGFzdFN0YXRlbWVudCgpIGNvbnN0
CiAgICAgcmV0dXJuIG1fdGFpbDsKIH0KIAotaW5saW5lIHZvaWQgU291cmNlRWxlbWVudHM6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3Qp
CitpbmxpbmUgdm9pZCBTb3VyY2VFbGVtZW50czo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlIHRhaWxDYWxsTW9k
ZSkKIHsKICAgICBmb3IgKFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCA9IG1faGVhZDsgc3RhdGVt
ZW50OyBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnQtPm5leHQoKSkKLSAgICAgICAgZ2VuZXJhdG9yLmVt
aXROb2RlKGRzdCwgc3RhdGVtZW50KTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwg
c3RhdGVtZW50LCB0YWlsQ2FsbE1vZGUpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0gQmxvY2tOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpA
QCAtMTk1NSwzMiArMjAwNSwzMiBAQCBTdGF0ZW1lbnROb2RlKiBCbG9ja05vZGU6OnNpbmdsZVN0
YXRlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc3RhdGVtZW50cyA/IG1fc3RhdGVtZW50cy0+
c2luZ2xlU3RhdGVtZW50KCkgOiAwOwogfQogCi12b2lkIEJsb2NrTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3ZvaWQgQmxv
Y2tOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0
ZXJJRCogZHN0LCBUYWlsQ2FsbE1vZGUgdGFpbENhbGxNb2RlKQogewogICAgIGlmICghbV9zdGF0
ZW1lbnRzKQogICAgICAgICByZXR1cm47CiAgICAgZ2VuZXJhdG9yLnB1c2hMZXhpY2FsU2NvcGUo
dGhpcywgdHJ1ZSk7Ci0gICAgbV9zdGF0ZW1lbnRzLT5lbWl0Qnl0ZWNvZGUoZ2VuZXJhdG9yLCBk
c3QpOworICAgIG1fc3RhdGVtZW50cy0+ZW1pdEJ5dGVjb2RlKGdlbmVyYXRvciwgZHN0LCB0YWls
Q2FsbE1vZGUpOwogICAgIGdlbmVyYXRvci5wb3BMZXhpY2FsU2NvcGUodGhpcyk7CiB9CiAKIC8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFbXB0eVN0YXRlbWVudE5vZGUgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLXZvaWQgRW1wdHlTdGF0ZW1lbnROb2RlOjplbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCit2b2lkIEVt
cHR5U3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqLCBUYWlsQ2FsbE1vZGUpCiB7CiAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1
Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBs
aW5lU3RhcnRPZmZzZXQoKSk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSBEZWJ1Z2dlclN0YXRlbWVudE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLXZv
aWQgRGVidWdnZXJTdGF0ZW1lbnROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCit2b2lkIERlYnVnZ2VyU3RhdGVtZW50Tm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqLCBUYWls
Q2FsbE1vZGUpCiB7CiAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soRGlkUmVhY2hCcmVha3Bv
aW50LCBsYXN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7CiB9CiAK
IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFeHByU3RhdGVtZW50Tm9kZSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLXZvaWQgRXhwclN0YXRlbWVudE5vZGU6OmVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCit2
b2lkIEV4cHJTdGF0ZW1lbnROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2FsbE1vZGUpCiB7CiAgICAgQVNTRVJUKG1f
ZXhwcik7CiAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQs
IGZpcnN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7CkBAIC0xOTg5
LDcgKzIwMzksNyBAQCB2b2lkIEV4cHJTdGF0ZW1lbnROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZAogCiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0gRGVjbGFyYXRpb25TdGF0ZW1lbnQgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQogCi12b2lkIERlY2xhcmF0aW9uU3RhdGVtZW50OjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCit2b2lkIERlY2xhcmF0aW9u
U3RhdGVtZW50OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCosIFRhaWxDYWxsTW9kZSkKIHsKICAgICBBU1NFUlQobV9leHByKTsKICAgICBnZW5l
cmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIHN0
YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKQEAgLTE5OTgsNyArMjA0OCw3IEBAIHZv
aWQgRGVjbGFyYXRpb25TdGF0ZW1lbnQ6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklECiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSBFbXB0eVZhckV4cHJlc3Npb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1SZWdp
c3RlcklEKiBFbXB0eVZhckV4cHJlc3Npb246OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKK1JlZ2lzdGVySUQqIEVtcHR5VmFyRXhwcmVzc2lv
bjo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQq
LCBUYWlsQ2FsbE1vZGUpCiB7CiAgICAgLy8gSXQncyBzYWZlIHRvIHJldHVybiBudWxsIGhlcmUg
YmVjYXVzZSB0aGlzIG5vZGUgd2lsbCBhbHdheXMgYmUgYSBjaGlsZCBub2RlIG9mIERlY2xhcmF0
aW9uU3RhdGVtZW50IHdoaWNoIGlnbm9yZXMgb3VyIHJldHVybiB2YWx1ZS4KICAgICBpZiAoIWdl
bmVyYXRvci52bSgpLT50eXBlUHJvZmlsZXIoKSkKQEAgLTIwMTgsNyArMjA2OCw3IEBAIFJlZ2lz
dGVySUQqIEVtcHR5VmFyRXhwcmVzc2lvbjo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBF
bXB0eUxldEV4cHJlc3Npb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1SZWdpc3Rl
cklEKiBFbXB0eUxldEV4cHJlc3Npb246OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKikKK1JlZ2lzdGVySUQqIEVtcHR5TGV0RXhwcmVzc2lvbjo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqLCBU
YWlsQ2FsbE1vZGUpCiB7CiAgICAgLy8gTGV4aWNhbCBkZWNsYXJhdGlvbnMgbGlrZSAnbGV0JyBt
dXN0IG1vdmUgdW5kZWZpbmVkIGludG8gdGhlaXIgdmFyaWFibGVzIHNvIHdlIGRvbid0CiAgICAg
Ly8gZ2V0IFREWiBlcnJvcnMgZm9yIHNpdHVhdGlvbnMgbGlrZSB0aGlzOiBgbGV0IHg7IHg7YApA
QCAtMjA3Niw3ICsyMTI2LDcgQEAgYm9vbCBJZkVsc2VOb2RlOjp0cnlGb2xkQnJlYWtBbmRDb250
aW51ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBTdGF0ZW1lbnQKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLXZvaWQgSWZFbHNlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3ZvaWQgSWZFbHNlTm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFp
bENhbGxNb2RlIHRhaWxDYWxsTW9kZSkKIHsKICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhX
aWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFy
dE9mZnNldCgpKTsKICAgICAKQEAgLTIwOTQsNyArMjE0NCw3IEBAIHZvaWQgSWZFbHNlTm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRz
dCkKICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVDb250cm9sRmxvdyhtX2lmQmxvY2stPnN0YXJ0
T2Zmc2V0KCkpOwogCiAgICAgaWYgKCFkaWRGb2xkSWZCbG9jaykgewotICAgICAgICBnZW5lcmF0
b3IuZW1pdE5vZGUoZHN0LCBtX2lmQmxvY2spOworICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUo
ZHN0LCBtX2lmQmxvY2ssIHRhaWxDYWxsTW9kZSk7CiAgICAgICAgIGlmIChtX2Vsc2VCbG9jaykK
ICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChhZnRlckVsc2UuZ2V0KCkpOwogICAgIH0K
QEAgLTIxMDMsNyArMjE1Myw3IEBAIHZvaWQgSWZFbHNlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIAogICAgIGlmIChtX2Vs
c2VCbG9jaykgewogICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVDb250cm9sRmxvdyhtX2lm
QmxvY2stPmVuZE9mZnNldCgpICsgKG1faWZCbG9jay0+aXNCbG9jaygpID8gMSA6IDApKTsKLSAg
ICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9lbHNlQmxvY2spOworICAgICAgICBnZW5l
cmF0b3IuZW1pdE5vZGUoZHN0LCBtX2Vsc2VCbG9jaywgdGFpbENhbGxNb2RlKTsKICAgICB9CiAK
ICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGFmdGVyRWxzZS5nZXQoKSk7CkBAIC0yMTEzLDcgKzIx
NjMsNyBAQCB2b2lkIElmRWxzZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSBEb1doaWxlTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAK
LXZvaWQgRG9XaGlsZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKiBkc3QpCit2b2lkIERvV2hpbGVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2FsbE1vZGUg
dGFpbENhbGxNb2RlKQogewogICAgIExhYmVsU2NvcGVQdHIgc2NvcGUgPSBnZW5lcmF0b3IubmV3
TGFiZWxTY29wZShMYWJlbFNjb3BlOjpMb29wKTsKIApAQCAtMjEyMiw3ICsyMTcyLDcgQEAgdm9p
ZCBEb1doaWxlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqIGRzdCkKICAgICBnZW5lcmF0b3IuZW1pdExvb3BIaW50KCk7CiAgICAgZ2Vu
ZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGxhc3RMaW5lKCksIHN0
YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKIAotICAgIGdlbmVyYXRvci5lbWl0Tm9k
ZShkc3QsIG1fc3RhdGVtZW50KTsKKyAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX3N0YXRl
bWVudCwgdGFpbENhbGxNb2RlKTsKIAogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoc2NvcGUtPmNv
bnRpbnVlVGFyZ2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRl
U3RhdGVtZW50LCBsYXN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7
CkBAIC0yMTMzLDcgKzIxODMsNyBAQCB2b2lkIERvV2hpbGVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogCiAvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gV2hpbGVOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQogCi12b2lkIFdoaWxlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3ZvaWQgV2hpbGVOb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBU
YWlsQ2FsbE1vZGUgdGFpbENhbGxNb2RlKQogewogICAgIExhYmVsU2NvcGVQdHIgc2NvcGUgPSBn
ZW5lcmF0b3IubmV3TGFiZWxTY29wZShMYWJlbFNjb3BlOjpMb29wKTsKICAgICBSZWZQdHI8TGFi
ZWw+IHRvcE9mTG9vcCA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwpAQCAtMjE0NSw3ICsyMTk1LDcg
QEAgdm9pZCBXaGlsZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKiBkc3QpCiAgICAgZ2VuZXJhdG9yLmVtaXRMb29wSGludCgpOwogICAg
IAogICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZUNvbnRyb2xGbG93KG1fc3RhdGVtZW50LT5zdGFy
dE9mZnNldCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX3N0YXRlbWVudCk7Cisg
ICAgZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9zdGF0ZW1lbnQsIHRhaWxDYWxsTW9kZSk7CiAK
ICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHNjb3BlLT5jb250aW51ZVRhcmdldCgpKTsKICAgICBn
ZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCks
IHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKQEAgLTIxNTksNyArMjIwOSw3IEBA
IHZvaWQgV2hpbGVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCogZHN0KQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
Rm9yTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi12b2lkIEZv
ck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cklEKiBkc3QpCit2b2lkIEZvck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSB0YWlsQ2FsbE1vZGUpCiB7
CiAgICAgTGFiZWxTY29wZVB0ciBzY29wZSA9IGdlbmVyYXRvci5uZXdMYWJlbFNjb3BlKExhYmVs
U2NvcGU6Okxvb3ApOwogCkBAIC0yMTc5LDcgKzIyMjksNyBAQCB2b2lkIEZvck5vZGU6OmVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAg
ICAgZ2VuZXJhdG9yLmVtaXRMb29wSGludCgpOwogICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZUNv
bnRyb2xGbG93KG1fc3RhdGVtZW50LT5zdGFydE9mZnNldCgpKTsKIAotICAgIGdlbmVyYXRvci5l
bWl0Tm9kZShkc3QsIG1fc3RhdGVtZW50KTsKKyAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBt
X3N0YXRlbWVudCwgdGFpbENhbGxNb2RlKTsKIAogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoc2Nv
cGUtPmNvbnRpbnVlVGFyZ2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxF
eGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zm
c2V0KCkpOwpAQCAtMjQyOCwxMyArMjQ3OCwxMyBAQCB2b2lkIEZvckluTm9kZTo6ZW1pdE11bHRp
TG9vcEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqCiAg
ICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlQ29udHJvbEZsb3cocHJvZmlsZXJFbmRPZmZzZXQpOwog
fQogCi12b2lkIEZvckluTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3ZvaWQgRm9ySW5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2FsbE1vZGUp
CiB7CiAgICAgdGhpcy0+ZW1pdE11bHRpTG9vcEJ5dGVjb2RlKGdlbmVyYXRvciwgZHN0KTsKIH0K
IAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZvck9mTm9kZSAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLXZvaWQgRm9yT2ZOb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQordm9pZCBGb3JP
Zk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cklEKiBkc3QsIFRhaWxDYWxsTW9kZSkKIHsKICAgICBpZiAoIW1fbGV4cHItPmlzQXNzaWdubWVu
dExvY2F0aW9uKCkpIHsKICAgICAgICAgZW1pdFRocm93UmVmZXJlbmNlRXJyb3IoZ2VuZXJhdG9y
LCBBU0NJSUxpdGVyYWwoIkxlZnQgc2lkZSBvZiBmb3Itb2Ygc3RhdGVtZW50IGlzIG5vdCBhIHJl
ZmVyZW5jZS4iKSk7CkBAIC0yNTA0LDcgKzI1NTQsNyBAQCBMYWJlbCogQ29udGludWVOb2RlOjp0
cml2aWFsVGFyZ2V0KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IpCiAgICAgcmV0dXJuIHNj
b3BlLT5jb250aW51ZVRhcmdldCgpOwogfQogCi12b2lkIENvbnRpbnVlTm9kZTo6ZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQordm9pZCBDb250
aW51ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklEKiwgVGFpbENhbGxNb2RlKQogewogICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdp
bGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0
T2Zmc2V0KCkpOwogICAgIApAQCAtMjUzMyw3ICsyNTgzLDcgQEAgTGFiZWwqIEJyZWFrTm9kZTo6
dHJpdmlhbFRhcmdldChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yKQogICAgIHJldHVybiBz
Y29wZS0+YnJlYWtUYXJnZXQoKTsKIH0KIAotdm9pZCBCcmVha05vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKK3ZvaWQgQnJlYWtOb2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCos
IFRhaWxDYWxsTW9kZSkKIHsKICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0
ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgp
KTsKICAgICAKQEAgLTI1NDgsNyArMjU5OCw3IEBAIHZvaWQgQnJlYWtOb2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAKIC8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBSZXR1cm5Ob2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAKLXZvaWQgUmV0dXJuTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3ZvaWQgUmV0dXJuTm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRz
dCwgVGFpbENhbGxNb2RlIHRhaWxDYWxsTW9kZSkKIHsKICAgICBnZW5lcmF0b3IuZW1pdERlYnVn
SG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxp
bmVTdGFydE9mZnNldCgpKTsKICAgICBBU1NFUlQoZ2VuZXJhdG9yLmNvZGVUeXBlKCkgPT0gRnVu
Y3Rpb25Db2RlKTsKQEAgLTI1NTYsNyArMjYwNiw3IEBAIHZvaWQgUmV0dXJuTm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKICAg
ICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCiAgICAgICAgIGRzdCA9IDA7
CiAKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuUmVnaXN0ZXIgPSBtX3ZhbHVlID8gZ2Vu
ZXJhdG9yLmVtaXROb2RlKGRzdCwgbV92YWx1ZSkgOiBnZW5lcmF0b3IuZW1pdExvYWQoZHN0LCBq
c1VuZGVmaW5lZCgpKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuUmVnaXN0ZXIgPSBt
X3ZhbHVlID8gZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV92YWx1ZSwgdGFpbENhbGxNb2RlKSA6
IGdlbmVyYXRvci5lbWl0TG9hZChkc3QsIGpzVW5kZWZpbmVkKCkpOwogICAgIGdlbmVyYXRvci5l
bWl0UHJvZmlsZVR5cGUocmV0dXJuUmVnaXN0ZXIuZ2V0KCksIFByb2ZpbGVUeXBlQnl0ZWNvZGVG
dW5jdGlvblJldHVyblN0YXRlbWVudCwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICBp
ZiAoZ2VuZXJhdG9yLmlzSW5GaW5hbGx5QmxvY2soKSkgewogICAgICAgICByZXR1cm5SZWdpc3Rl
ciA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHJldHVyblJl
Z2lzdGVyLmdldCgpKTsKQEAgLTI1NzQsMjUgKzI2MjQsMjUgQEAgdm9pZCBSZXR1cm5Ob2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0
KQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gV2l0aE5vZGUgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi12b2lkIFdpdGhOb2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQordm9pZCBX
aXRoTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqIGRzdCwgVGFpbENhbGxNb2RlIHRhaWxDYWxsTW9kZSkKIHsKICAgICBnZW5lcmF0b3Iu
ZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIHN0YXJ0T2Zm
c2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKIAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29w
ZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2V4cHIpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVz
c2lvbkluZm8obV9kaXZvdCwgbV9kaXZvdCAtIG1fZXhwcmVzc2lvbkxlbmd0aCwgbV9kaXZvdCk7
CiAgICAgZ2VuZXJhdG9yLmVtaXRQdXNoV2l0aFNjb3BlKHNjb3BlLmdldCgpKTsKLSAgICBnZW5l
cmF0b3IuZW1pdE5vZGUoZHN0LCBtX3N0YXRlbWVudCk7CisgICAgZ2VuZXJhdG9yLmVtaXROb2Rl
KGRzdCwgbV9zdGF0ZW1lbnQsIHRhaWxDYWxsTW9kZSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRQb3BX
aXRoU2NvcGUoKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENhc2VD
bGF1c2VOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWlubGluZSB2b2lk
IENhc2VDbGF1c2VOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCogZHN0KQoraW5saW5lIHZvaWQgQ2FzZUNsYXVzZU5vZGU6OmVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxD
YWxsTW9kZSB0YWlsQ2FsbE1vZGUpCiB7CiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlQ29udHJv
bEZsb3cobV9zdGFydE9mZnNldCk7CiAgICAgaWYgKCFtX3N0YXRlbWVudHMpCiAgICAgICAgIHJl
dHVybjsKLSAgICBtX3N0YXRlbWVudHMtPmVtaXRCeXRlY29kZShnZW5lcmF0b3IsIGRzdCk7Cisg
ICAgbV9zdGF0ZW1lbnRzLT5lbWl0Qnl0ZWNvZGUoZ2VuZXJhdG9yLCBkc3QsIHRhaWxDYWxsTW9k
ZSk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDYXNlQmxvY2tOb2Rl
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0yNjg2LDcgKzI3MzYsNyBAQCBT
d2l0Y2hJbmZvOjpTd2l0Y2hUeXBlIENhc2VCbG9ja05vZGU6OnRyeVRhYmxlU3dpdGNoKFZlY3Rv
cjxFeHByZXNzaW9uTm9kZSosIDg+JgogICAgIHJldHVybiBTd2l0Y2hJbmZvOjpTd2l0Y2hTdHJp
bmc7CiB9CiAKLXZvaWQgQ2FzZUJsb2NrTm9kZTo6ZW1pdEJ5dGVjb2RlRm9yQmxvY2soQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogc3dpdGNoRXhwcmVzc2lvbiwgUmVn
aXN0ZXJJRCogZHN0KQordm9pZCBDYXNlQmxvY2tOb2RlOjplbWl0Qnl0ZWNvZGVGb3JCbG9jayhC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBzd2l0Y2hFeHByZXNzaW9u
LCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSB0YWlsQ2FsbE1vZGUpCiB7CiAgICAgUmVm
UHRyPExhYmVsPiBkZWZhdWx0TGFiZWw7CiAgICAgVmVjdG9yPFJlZlB0cjxMYWJlbD4sIDg+IGxh
YmVsVmVjdG9yOwpAQCAtMjcyNSwxNyArMjc3NSwxNyBAQCB2b2lkIENhc2VCbG9ja05vZGU6OmVt
aXRCeXRlY29kZUZvckJsb2NrKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVy
SQogICAgIHNpemVfdCBpID0gMDsKICAgICBmb3IgKENsYXVzZUxpc3ROb2RlKiBsaXN0ID0gbV9s
aXN0MTsgbGlzdDsgbGlzdCA9IGxpc3QtPmdldE5leHQoKSkgewogICAgICAgICBnZW5lcmF0b3Iu
ZW1pdExhYmVsKGxhYmVsVmVjdG9yW2krK10uZ2V0KCkpOwotICAgICAgICBsaXN0LT5nZXRDbGF1
c2UoKS0+ZW1pdEJ5dGVjb2RlKGdlbmVyYXRvciwgZHN0KTsKKyAgICAgICAgbGlzdC0+Z2V0Q2xh
dXNlKCktPmVtaXRCeXRlY29kZShnZW5lcmF0b3IsIGRzdCwgdGFpbENhbGxNb2RlKTsKICAgICB9
CiAKICAgICBpZiAobV9kZWZhdWx0Q2xhdXNlKSB7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0TGFi
ZWwoZGVmYXVsdExhYmVsLmdldCgpKTsKLSAgICAgICAgbV9kZWZhdWx0Q2xhdXNlLT5lbWl0Qnl0
ZWNvZGUoZ2VuZXJhdG9yLCBkc3QpOworICAgICAgICBtX2RlZmF1bHRDbGF1c2UtPmVtaXRCeXRl
Y29kZShnZW5lcmF0b3IsIGRzdCwgdGFpbENhbGxNb2RlKTsKICAgICB9CiAKICAgICBmb3IgKENs
YXVzZUxpc3ROb2RlKiBsaXN0ID0gbV9saXN0MjsgbGlzdDsgbGlzdCA9IGxpc3QtPmdldE5leHQo
KSkgewogICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGxhYmVsVmVjdG9yW2krK10uZ2V0KCkp
OwotICAgICAgICBsaXN0LT5nZXRDbGF1c2UoKS0+ZW1pdEJ5dGVjb2RlKGdlbmVyYXRvciwgZHN0
KTsKKyAgICAgICAgbGlzdC0+Z2V0Q2xhdXNlKCktPmVtaXRCeXRlY29kZShnZW5lcmF0b3IsIGRz
dCwgdGFpbENhbGxNb2RlKTsKICAgICB9CiAgICAgaWYgKCFtX2RlZmF1bHRDbGF1c2UpCiAgICAg
ICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZGVmYXVsdExhYmVsLmdldCgpKTsKQEAgLTI3NDksNyAr
Mjc5OSw3IEBAIHZvaWQgQ2FzZUJsb2NrTm9kZTo6ZW1pdEJ5dGVjb2RlRm9yQmxvY2soQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSBTd2l0Y2hOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAKLXZvaWQgU3dpdGNoTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3ZvaWQgU3dpdGNoTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxN
b2RlIHRhaWxDYWxsTW9kZSkKIHsKICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhl
Y3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNl
dCgpKTsKICAgICAKQEAgLTI3NTgsNyArMjgwOCw3IEBAIHZvaWQgU3dpdGNoTm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gcjAgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9leHByKTsKIAog
ICAgIGdlbmVyYXRvci5wdXNoTGV4aWNhbFNjb3BlKHRoaXMsIGZhbHNlKTsKLSAgICBtX2Jsb2Nr
LT5lbWl0Qnl0ZWNvZGVGb3JCbG9jayhnZW5lcmF0b3IsIHIwLmdldCgpLCBkc3QpOworICAgIG1f
YmxvY2stPmVtaXRCeXRlY29kZUZvckJsb2NrKGdlbmVyYXRvciwgcjAuZ2V0KCksIGRzdCwgdGFp
bENhbGxNb2RlKTsKICAgICBnZW5lcmF0b3IucG9wTGV4aWNhbFNjb3BlKHRoaXMpOwogCiAgICAg
Z2VuZXJhdG9yLmVtaXRMYWJlbChzY29wZS0+YnJlYWtUYXJnZXQoKSk7CkBAIC0yNzY3LDcgKzI4
MTcsNyBAQCB2b2lkIFN3aXRjaE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSBMYWJlbE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAK
LXZvaWQgTGFiZWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCogZHN0KQordm9pZCBMYWJlbE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSkKIHsK
ICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RM
aW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKIApAQCAtMjc4MSw3ICsy
ODMxLDcgQEAgdm9pZCBMYWJlbE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSBUaHJvd05vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAK
LXZvaWQgVGhyb3dOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCogZHN0KQordm9pZCBUaHJvd05vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSkKIHsK
ICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RM
aW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKIApAQCAtMjc5Niw3ICsy
ODQ2LDcgQEAgdm9pZCBUaHJvd05vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSBUcnlOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAK
LXZvaWQgVHJ5Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqIGRzdCkKK3ZvaWQgVHJ5Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlIHRhaWxDYWxs
TW9kZSkKIHsKICAgICAvLyBOT1RFOiBUaGUgY2F0Y2ggYW5kIGZpbmFsbHkgYmxvY2tzIG11c3Qg
YmUgbGFiZWxlZCBleHBsaWNpdGx5LCBzbyB0aGUKICAgICAvLyBvcHRpbWl6ZXIga25vd3MgdGhl
eSBtYXkgYmUganVtcGVkIHRvIGZyb20gYW55d2hlcmUuCkBAIC0yODM0LDcgKzI4ODQsNyBAQCB2
b2lkIFRyeU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3RlcklEKiBkc3QpCiAKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXNoQ2F0Y2hTY29wZSht
X3Rocm93blZhbHVlSWRlbnQsIHRocm93blZhbHVlUmVnaXN0ZXIuZ2V0KCksIG1fY2F0Y2hFbnZp
cm9ubWVudCk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZUNvbnRyb2xGbG93KG1fdHJ5
QmxvY2stPmVuZE9mZnNldCgpICsgMSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShkc3Qs
IG1fY2F0Y2hCbG9jayk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fY2F0Y2hC
bG9jaywgbV9maW5hbGx5QmxvY2sgPyBOb1RhaWxDYWxscyA6IHRhaWxDYWxsTW9kZSk7CiAgICAg
ICAgIGdlbmVyYXRvci5lbWl0UG9wQ2F0Y2hTY29wZShtX2NhdGNoRW52aXJvbm1lbnQpOwogICAg
ICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGNhdGNoRW5kTGFiZWwuZ2V0KCkpOwogICAgIH0KQEAg
LTI4NTAsNyArMjkwMCw3IEBAIHZvaWQgVHJ5Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIAogICAgICAgICAvLyBOb3JtYWwg
cGF0aDogcnVuIHRoZSBmaW5hbGx5IGNvZGUsIGFuZCBqdW1wIHRvIHRoZSBlbmQuCiAgICAgICAg
IGdlbmVyYXRvci5lbWl0UHJvZmlsZUNvbnRyb2xGbG93KGZpbmFsbHlTdGFydE9mZnNldCk7Ci0g
ICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fZmluYWxseUJsb2NrKTsKKyAgICAgICAg
Z2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9maW5hbGx5QmxvY2ssIHRhaWxDYWxsTW9kZSk7CiAg
ICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZUNvbnRyb2xGbG93KG1fZmluYWxseUJsb2NrLT5l
bmRPZmZzZXQoKSArIDEpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXAoZmluYWxseUVuZExh
YmVsLmdldCgpKTsKIApAQCAtMjg1OSw3ICsyOTA5LDcgQEAgdm9pZCBUcnlOb2RlOjplbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhyb3duVmFsdWVSZWdpc3RlciA9IGdlbmVyYXRvci5u
ZXdUZW1wb3JhcnkoKTsKICAgICAgICAgZ2VuZXJhdG9yLnBvcFRyeUFuZEVtaXRDYXRjaCh0cnlE
YXRhLCBleGNlcHRpb25SZWdpc3Rlci5nZXQoKSwgdGhyb3duVmFsdWVSZWdpc3Rlci5nZXQoKSwg
cHJlRmluYWxseUxhYmVsLmdldCgpLCBIYW5kbGVyVHlwZTo6RmluYWxseSk7CiAgICAgICAgIGdl
bmVyYXRvci5lbWl0UHJvZmlsZUNvbnRyb2xGbG93KGZpbmFsbHlTdGFydE9mZnNldCk7Ci0gICAg
ICAgIGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fZmluYWxseUJsb2NrKTsKKyAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9maW5hbGx5QmxvY2ssIHRhaWxDYWxsTW9kZSk7CiAgICAg
ICAgIGdlbmVyYXRvci5lbWl0VGhyb3coZXhjZXB0aW9uUmVnaXN0ZXIuZ2V0KCkpOwogCiAgICAg
ICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZmluYWxseUVuZExhYmVsLmdldCgpKTsKQEAgLTI4NzEs
MTYgKzI5MjEsMTYgQEAgdm9pZCBUcnlOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0gU2NvcGVOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWlu
bGluZSB2b2lkIFNjb3BlTm9kZTo6ZW1pdFN0YXRlbWVudHNCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCitpbmxpbmUgdm9pZCBTY29wZU5vZGU6
OmVtaXRTdGF0ZW1lbnRzQnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCogZHN0LCBUYWlsQ2FsbE1vZGUgdGFpbENhbGxNb2RlKQogewogICAgIGlmICghbV9z
dGF0ZW1lbnRzKQogICAgICAgICByZXR1cm47Ci0gICAgbV9zdGF0ZW1lbnRzLT5lbWl0Qnl0ZWNv
ZGUoZ2VuZXJhdG9yLCBkc3QpOworICAgIG1fc3RhdGVtZW50cy0+ZW1pdEJ5dGVjb2RlKGdlbmVy
YXRvciwgZHN0LCB0YWlsQ2FsbE1vZGUpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0gUHJvZ3JhbU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotdm9p
ZCBQcm9ncmFtTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqKQordm9pZCBQcm9ncmFtTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqLCBUYWlsQ2FsbE1vZGUpCiB7CiAgICAgZ2Vu
ZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVQcm9ncmFtLCBzdGFydExpbmUoKSwgc3Rh
cnRTdGFydE9mZnNldCgpLCBzdGFydExpbmVTdGFydE9mZnNldCgpKTsKIApAQCAtMjg5NSwxMyAr
Mjk0NSwxMyBAQCB2b2lkIFByb2dyYW1Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSBNb2R1bGVQcm9ncmFtTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLQogCi12b2lkIE1v
ZHVsZVByb2dyYW1Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3Rl
cklEKikKK3ZvaWQgTW9kdWxlUHJvZ3JhbU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqLCBUYWlsQ2FsbE1vZGUpCiB7CiB9CiAKIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSBFdmFsTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogCi12b2lkIEV2YWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCopCit2b2lkIEV2YWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCosIFRhaWxDYWxsTW9kZSkKIHsKICAgICBn
ZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVByb2dyYW0sIHN0YXJ0TGluZSgpLCBz
dGFydFN0YXJ0T2Zmc2V0KCksIHN0YXJ0TGluZVN0YXJ0T2Zmc2V0KCkpOwogCkBAIC0yOTE1LDcg
KzI5NjUsNyBAQCB2b2lkIEV2YWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSBGdW5jdGlvbk5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotdm9pZCBG
dW5jdGlvbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3RlcklEKikKK3ZvaWQgRnVuY3Rpb25Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCosIFRhaWxDYWxsTW9kZSkKIHsKICAgICBpZiAo
Z2VuZXJhdG9yLnZtKCktPnR5cGVQcm9maWxlcigpKSB7CiAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbV9wYXJhbWV0ZXJzLT5zaXplKCk7IGkrKykgewpAQCAtMjkzMCw3ICsyOTgwLDEw
IEBAIHZvaWQgRnVuY3Rpb25Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXN0ZXJJRCopCiAKICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVDb250cm9s
RmxvdyhzdGFydFN0YXJ0T2Zmc2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKERp
ZEVudGVyQ2FsbEZyYW1lLCBzdGFydExpbmUoKSwgc3RhcnRTdGFydE9mZnNldCgpLCBzdGFydExp
bmVTdGFydE9mZnNldCgpKTsKLSAgICBlbWl0U3RhdGVtZW50c0J5dGVjb2RlKGdlbmVyYXRvciwg
Z2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSk7CisgICAgaWYgKE9wdGlvbnM6OmVuYWJsZVRhaWxD
YWxscygpICYmIGlzU3RyaWN0TW9kZSgpICYmIGdlbmVyYXRvci5jb25zdHJ1Y3RvcktpbmQoKSA9
PSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpCisgICAgICAgIGVtaXRTdGF0ZW1lbnRzQnl0ZWNvZGUo
Z2VuZXJhdG9yLCBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpLCBDYW5IYXZlVGFpbENhbGxzKTsK
KyAgICBlbHNlCisgICAgICAgIGVtaXRTdGF0ZW1lbnRzQnl0ZWNvZGUoZ2VuZXJhdG9yLCBnZW5l
cmF0b3IuaWdub3JlZFJlc3VsdCgpKTsKIAogICAgIFN0YXRlbWVudE5vZGUqIHNpbmdsZVN0YXRl
bWVudCA9IHRoaXMtPnNpbmdsZVN0YXRlbWVudCgpOwogICAgIFJldHVybk5vZGUqIHJldHVybk5v
ZGUgPSAwOwpAQCAtMjk1NSwyMCArMzAwOCwyMCBAQCB2b2lkIEZ1bmN0aW9uTm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogCiAvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY0RlY2xOb2RlIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogCi12b2lkIEZ1bmNEZWNsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopCit2b2lkIEZ1bmNEZWNsTm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCosIFRhaWxDYWxsTW9kZSkKIHsK
IH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmNFeHByTm9kZSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUmVnaXN0ZXJJRCogRnVuY0V4cHJOb2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCog
ZHN0KQorUmVnaXN0ZXJJRCogRnVuY0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2FsbE1vZGUpCiB7CiAgICAg
cmV0dXJuIGdlbmVyYXRvci5lbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9uKGdlbmVyYXRvci5maW5h
bERlc3RpbmF0aW9uKGRzdCksIHRoaXMpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0gQXJyb3dGdW5jRXhwck5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAKLVJlZ2lzdGVySUQqIEFycm93RnVuY0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCogQXJy
b3dGdW5jRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSkKIHsKICAgICByZXR1cm4gZ2VuZXJhdG9y
LmVtaXROZXdBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbihnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlv
bihkc3QpLCB0aGlzKTsKIH0KQEAgLTI5NzYsMTQgKzMwMjksMTQgQEAgUmVnaXN0ZXJJRCogQXJy
b3dGdW5jRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3QKICNpZiBFTkFCTEUoRVM2X0NMQVNTX1NZTlRBWCkKIC8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSBDbGFzc0RlY2xOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQogCi12b2lkIENsYXNzRGVjbE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCit2b2lkIENsYXNzRGVjbE5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3Qs
IFRhaWxDYWxsTW9kZSkKIHsKICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX2NsYXNzRGVj
bGFyYXRpb24pOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ2xhc3NF
eHByTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUmVnaXN0ZXJJRCog
Q2xhc3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqIGRzdCkKK1JlZ2lzdGVySUQqIENsYXNzRXhwck5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxs
TW9kZSkKIHsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3VwZXJjbGFzczsKICAgICBpZiAobV9j
bGFzc0hlcml0YWdlKSB7CkBAIC0zMDU1LDM2ICszMTA4LDM2IEBAIFJlZ2lzdGVySUQqIENsYXNz
RXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklECiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBJbXBvcnREZWNsYXJh
dGlvbk5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotdm9pZCBJbXBvcnREZWNsYXJhdGlv
bk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKQordm9p
ZCBJbXBvcnREZWNsYXJhdGlvbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqLCBUYWlsQ2FsbE1vZGUpCiB7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSBFeHBvcnRBbGxEZWNsYXJhdGlvbk5vZGUgLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIAotdm9pZCBFeHBvcnRBbGxEZWNsYXJhdGlvbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKQordm9pZCBFeHBvcnRBbGxEZWNsYXJhdGlvbk5vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqLCBUYWlsQ2FsbE1v
ZGUpCiB7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFeHBvcnREZWZh
dWx0RGVjbGFyYXRpb25Ob2RlIC0tLS0tLS0tLS0tLS0tLS0KIAotdm9pZCBFeHBvcnREZWZhdWx0
RGVjbGFyYXRpb25Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3Rl
cklEKikKK3ZvaWQgRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCosIFRhaWxDYWxsTW9kZSkKIHsKIH0KIAogLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEV4cG9ydExvY2FsRGVjbGFyYXRpb25Ob2Rl
IC0tLS0tLS0tLS0tLS0tLS0tLQogCi12b2lkIEV4cG9ydExvY2FsRGVjbGFyYXRpb25Ob2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKikKK3ZvaWQgRXhwb3J0
TG9jYWxEZWNsYXJhdGlvbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqLCBUYWlsQ2FsbE1vZGUpCiB7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSBFeHBvcnROYW1lZERlY2xhcmF0aW9uTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0K
IAotdm9pZCBFeHBvcnROYW1lZERlY2xhcmF0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopCit2b2lkIEV4cG9ydE5hbWVkRGVjbGFyYXRpb25Ob2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiwgVGFpbENhbGxN
b2RlKQogewogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRGVzdHJ1Y3R1
cmluZ0Fzc2lnbm1lbnROb2RlIC0tLS0tLS0tLS0tLS0tLS0tCi1SZWdpc3RlcklEKiBEZXN0cnVj
dHVyaW5nQXNzaWdubWVudE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCitSZWdpc3RlcklEKiBEZXN0cnVjdHVyaW5nQXNzaWdu
bWVudE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSkKIHsKICAgICBpZiAoUmVnaXN0ZXJJRCogcmVzdWx0
ID0gbV9iaW5kaW5ncy0+ZW1pdERpcmVjdEJpbmRpbmcoZ2VuZXJhdG9yLCBkc3QsIG1faW5pdGlh
bGl6ZXIpKQogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMzMzNCw3ICszMzg3LDcgQEAgdm9p
ZCBCaW5kaW5nTm9kZTo6Y29sbGVjdEJvdW5kSWRlbnRpZmllcnMoVmVjdG9yPElkZW50aWZpZXI+
JiBpZGVudGlmaWVycykgY29uc3QKICAgICBpZGVudGlmaWVycy5hcHBlbmQobV9ib3VuZFByb3Bl
cnR5KTsKIH0KICAgICAKLVJlZ2lzdGVySUQqIFNwcmVhZEV4cHJlc3Npb25Ob2RlOjplbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKikKK1JlZ2lzdGVySUQqIFNwcmVh
ZEV4cHJlc3Npb25Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3Rl
cklEKiwgVGFpbENhbGxNb2RlKQogewogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L05vZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKaW5kZXggZWQz
MDBlNzc2NDU1YWZmMWE5NzNlYWJiNTM3ZWNlYmVmNGI0NzcxMS4uNzkwMTc2MzBjMTgxZGJlZDBl
OGViMjRlYzYxZGVlYzY0MTVjZDNhOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Ob2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMu
aApAQCAtNzksNiArNzksMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfTsKICAgICBpbmxpbmUg
RmFsbFRocm91Z2hNb2RlIGludmVydChGYWxsVGhyb3VnaE1vZGUgZmFsbFRocm91Z2hNb2RlKSB7
IHJldHVybiBzdGF0aWNfY2FzdDxGYWxsVGhyb3VnaE1vZGU+KCFmYWxsVGhyb3VnaE1vZGUpOyB9
CiAKKyAgICBlbnVtIFRhaWxDYWxsTW9kZSB7CisgICAgICAgIENhbkhhdmVUYWlsQ2FsbHMsCisg
ICAgICAgIE5vVGFpbENhbGxzLAorICAgIH07CisKICAgICBuYW1lc3BhY2UgRGVjbGFyYXRpb25T
dGFja3MgewogICAgICAgICB0eXBlZGVmIFZlY3RvcjxGdW5jdGlvbk1ldGFkYXRhTm9kZSo+IEZ1
bmN0aW9uU3RhY2s7CiAgICAgfQpAQCAtMTQ5LDcgKzE1NCw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBFeHByZXNzaW9uTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBSZXN1bHRUeXBl
ID0gUmVzdWx0VHlwZTo6dW5rbm93blR5cGUoKSk7CiAKICAgICBwdWJsaWM6Ci0gICAgICAgIHZp
cnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogZGVzdGluYXRpb24gPSAwKSA9IDA7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCog
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogZGVzdGluYXRpb24g
PSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgPSAwOwogCiAgICAgICAgIHZpcnR1YWwg
Ym9vbCBpc051bWJlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwg
Ym9vbCBpc1N0cmluZygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0xODcsNyArMTkyLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFN0YXRlbWVudE5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJik7CiAKICAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBkZXN0aW5hdGlvbiA9IDApID0gMDsK
KyAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqIGRlc3RpbmF0aW9uID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpID0g
MDsKIAogICAgICAgICB2b2lkIHNldExvYyh1bnNpZ25lZCBmaXJzdExpbmUsIHVuc2lnbmVkIGxh
c3RMaW5lLCBpbnQgc3RhcnRPZmZzZXQsIGludCBsaW5lU3RhcnRPZmZzZXQpOwogICAgICAgICB1
bnNpZ25lZCBsYXN0TGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdExpbmU7IH0KQEAgLTIzMCw3
ICsyMzUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdmlydHVhbCBib29sIGlzQ29uc3Rh
bnQoKSBjb25zdCAgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgICAgICB2aXJ0dWFsIEpT
VmFsdWUganNWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYpIGNvbnN0ID0gMDsKICAgICBwcml2YXRl
OgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0
ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBU
YWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBlbWl0Qnl0ZWNvZGVJbkNvbmRpdGlvbkNvbnRleHQoQnl0ZWNvZGVHZW5lcmF0b3ImLCBMYWJl
bCogdHJ1ZVRhcmdldCwgTGFiZWwqIGZhbHNlVGFyZ2V0LCBGYWxsVGhyb3VnaE1vZGUpIG92ZXJy
aWRlOwogICAgIH07CiAKQEAgLTI2MCw3ICsyNjUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgTnVtYmVyTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBkb3VibGUgdmFsdWUpOwogICAg
ICAgICBkb3VibGUgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CiAgICAgICAgIHZp
cnR1YWwgYm9vbCBpc0ludGVnZXJOb2RlKCkgY29uc3QgPSAwOwotICAgICAgICB2aXJ0dWFsIFJl
Z2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0g
MCkgb3ZlcnJpZGUgZmluYWw7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBO
b1RhaWxDYWxscykgb3ZlcnJpZGUgZmluYWw7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0
dWFsIGJvb2wgaXNOdW1iZXIoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9
CkBAIC00NzAsNyArNDc1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGNvbnN0IElkZW50
aWZpZXImIHJhdygpIHsgcmV0dXJuIG1fcmF3OyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICB2
aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUg
PSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9j
b29rZWQ7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1fcmF3OwpAQCAtNDk4LDcgKzUwMyw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBUZW1wbGF0ZUV4cHJlc3Npb25MaXN0Tm9kZSog
dGVtcGxhdGVFeHByZXNzaW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fdGVtcGxhdGVFeHByZXNzaW9u
czsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAg
ICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwog
CiAgICAgICAgIFRlbXBsYXRlU3RyaW5nTGlzdE5vZGUqIG1fdGVtcGxhdGVTdHJpbmdzOwogICAg
ICAgICBUZW1wbGF0ZUV4cHJlc3Npb25MaXN0Tm9kZSogbV90ZW1wbGF0ZUV4cHJlc3Npb25zOwpA
QCAtNTExLDcgKzUxNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBUZW1wbGF0ZUxpdGVy
YWxOb2RlKiB0ZW1wbGF0ZUxpdGVyYWwoKSBjb25zdCB7IHJldHVybiBtX3RlbXBsYXRlTGl0ZXJh
bDsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAg
ICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwog
CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX3RhZzsKICAgICAgICAgVGVtcGxhdGVMaXRlcmFs
Tm9kZSogbV90ZW1wbGF0ZUxpdGVyYWw7CkBAIC01MjMsNyArNTI4LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIFJlZ0V4cE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRl
bnRpZmllciYgcGF0dGVybiwgY29uc3QgSWRlbnRpZmllciYgZmxhZ3MpOwogCiAgICAgcHJpdmF0
ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIFJlZ2lz
dGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwg
VGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogCiAgICAgICAgIGNvbnN0IElk
ZW50aWZpZXImIG1fcGF0dGVybjsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9mbGFnczsK
QEAgLTUzNCw3ICs1MzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVGhpc05vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgVGhpc1REWk1vZGUpOwogCiAgICAgcHJpdmF0ZToKLSAgICAg
ICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxN
b2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogCiAgICAgICAgIGJvb2wgbV9zaG91bGRBbHdh
eXNFbWl0VERaQ2hlY2s7CiAgICAgfTsKQEAgLTU0NSw3ICs1NTAsNyBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1N1cGVyTm9kZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklE
KiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJy
aWRlOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92
ZXJyaWRlOwogICAgIH07CiAKICAgICBjbGFzcyBOZXdUYXJnZXROb2RlIGZpbmFsIDogcHVibGlj
IEV4cHJlc3Npb25Ob2RlIHsKQEAgLTU1Myw3ICs1NTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgTmV3VGFyZ2V0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mKTsKIAogICAgIHByaXZh
dGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCBSZWdp
c3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAs
IFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKICAgICB9OwogCiAgICAgY2xh
c3MgUmVzb2x2ZU5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewpAQCAtNTYzLDcgKzU2OCw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVy
KCkgY29uc3QgeyByZXR1cm4gbV9pZGVudDsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmly
dHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3Rl
cklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0g
Tm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1B1cmUoQnl0
ZWNvZGVHZW5lcmF0b3ImKSBjb25zdCBvdmVycmlkZTsKICAgICAgICAgdmlydHVhbCBib29sIGlz
TG9jYXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CkBAIC01OTgsNyArNjAz
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgRWxlbWVudE5vZGUqIGVsZW1lbnRzKCkg
Y29uc3QgeyBBU1NFUlQoaXNTaW1wbGVBcnJheSgpKTsgcmV0dXJuIG1fZWxlbWVudDsgfQogICAg
IHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVh
bCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKIAogICAgICAgICB2
aXJ0dWFsIGJvb2wgaXNTaW1wbGVBcnJheSgpIGNvbnN0IG92ZXJyaWRlOwogCkBAIC02MzgsNyAr
NjQzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFByb3BlcnR5TGlzdE5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgUHJvcGVydHlOb2RlKiwgUHJvcGVydHlMaXN0Tm9kZSopOwogCiAg
ICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0
dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogICAgICAgICB2
b2lkIGVtaXRQdXRDb25zdGFudFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCosIFByb3BlcnR5Tm9kZSYpOwogCiAgICAgICAgIFByb3BlcnR5Tm9kZSogbV9ub2RlOwpAQCAt
NjUxLDcgKzY1Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBPYmplY3RMaXRlcmFsTm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBQcm9wZXJ0eUxpc3ROb2RlKik7CiAKICAgICBwcml2
YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVn
aXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAw
LCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgUHJvcGVy
dHlMaXN0Tm9kZSogbV9saXN0OwogICAgIH07CkBAIC02NjYsNyArNjcxLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIGJvb2wgc3Vic2NyaXB0SGFzQXNzaWdubWVudHMoKSBjb25zdCB7IHJl
dHVybiBtX3N1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzOyB9CiAKICAgICBwcml2YXRlOgotICAgICAg
ICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1v
ZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgdmlydHVhbCBib29sIGlzTG9j
YXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgICAgIHZpcnR1YWwg
Ym9vbCBpc0JyYWNrZXRBY2Nlc3Nvck5vZGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9CkBAIC02ODQsNyArNjg5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50OyB9CiAKICAgICBw
cml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwg
UmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgdmly
dHVhbCBib29sIGlzTG9jYXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBpc0RvdEFjY2Vzc29yTm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KQEAgLTcwMCw3ICs3MDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgRXhwcmVzc2lvbk5vZGUqIGV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBtX2V4cHJlc3Np
b247IH0KICAgICAgICAgCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklE
KiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJy
aWRlOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92
ZXJyaWRlOwogICAgICAgICAKICAgICAgICAgdmlydHVhbCBib29sIGlzU3ByZWFkRXhwcmVzc2lv
bigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgRXhwcmVzc2lvbk5v
ZGUqIG1fZXhwcmVzc2lvbjsKQEAgLTcxNSw3ICs3MjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcjsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZp
cnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9
IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKICAgICB9OwogCiAgICAgY2xhc3MgQXJndW1lbnRzTm9k
ZSA6IHB1YmxpYyBQYXJzZXJBcmVuYUZyZWVhYmxlIHsKQEAgLTczMiw3ICs3MzcsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgTmV3RXhwck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
RXhwcmVzc2lvbk5vZGUqLCBBcmd1bWVudHNOb2RlKik7CiAKICAgICBwcml2YXRlOgotICAgICAg
ICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1v
ZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1f
ZXhwcjsKICAgICAgICAgQXJndW1lbnRzTm9kZSogbV9hcmdzOwpAQCAtNzQzLDcgKzc0OCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBFdmFsRnVuY3Rpb25DYWxsTm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBBcmd1bWVudHNOb2RlKiwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90RW5kKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCog
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlk
ZTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVy
cmlkZTsKIAogICAgICAgICBBcmd1bWVudHNOb2RlKiBtX2FyZ3M7CiAgICAgfTsKQEAgLTc1Myw3
ICs3NTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRnVuY3Rpb25DYWxsVmFsdWVOb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiwgQXJndW1lbnRzTm9kZSos
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKICAgICBwcml2YXRlOgot
ICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJ
RCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWls
Q2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgRXhwcmVzc2lvbk5v
ZGUqIG1fZXhwcjsKICAgICAgICAgQXJndW1lbnRzTm9kZSogbV9hcmdzOwpAQCAtNzY0LDcgKzc2
OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSos
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKICAgICBwcml2YXRlOgot
ICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJ
RCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWls
Q2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgY29uc3QgSWRlbnRp
ZmllciYgbV9pZGVudDsKICAgICAgICAgQXJndW1lbnRzTm9kZSogbV9hcmdzOwpAQCAtNzc1LDcg
Kzc4MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBGdW5jdGlvbkNhbGxCcmFja2V0Tm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lv
bk5vZGUqIHN1YnNjcmlwdCwgYm9vbCBzdWJzY3JpcHRIYXNBc3NpZ25tZW50cywgQXJndW1lbnRz
Tm9kZSosIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKICAgICBwcml2
YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVn
aXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAw
LCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgRXhwcmVz
c2lvbk5vZGUqIG1fYmFzZTsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fc3Vic2NyaXB0OwpA
QCAtNzg4LDcgKzc5Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBGdW5jdGlvbkNhbGxE
b3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25z
dCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZv
dCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBkaXZvdEVuZCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQq
IGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJp
ZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3Zl
cnJpZGU7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Jhc2U7
CkBAIC04MDksNyArODE0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAjdW5kZWYgSlNDX0RFQ0xBUkVf
QllURUNPREVfSU5UUklOU0lDX0ZVTkNUSU9OUwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmly
dHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3Rl
cklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0g
Tm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogCiAgICAgICAgIEVtaXR0ZXJUeXBlIG1fZW1pdHRlcjsK
ICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9pZGVudDsKQEAgLTgyMSw3ICs4MjYsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBB
cmd1bWVudHNOb2RlKiwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKIAog
ICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmly
dHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3Rl
cklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKICAgICB9Owog
ICAgIAogICAgIGNsYXNzIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZSA6IHB1YmxpYyBGdW5jdGlv
bkNhbGxEb3ROb2RlIHsKQEAgLTgyOSw3ICs4MzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJl
c3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKICAgICBwcml2YXRlOgotICAgICAg
ICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1v
ZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAgICAgfTsKIAogICAgIGNsYXNzIERlbGV0ZVJl
c29sdmVOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVz
c2lvbkRhdGEgewpAQCAtODM3LDcgKzg0Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBE
ZWxldGVSZXNvbHZlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVy
JiwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKIAogICAgIHByaXZhdGU6
Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3Rl
cklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRh
aWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKIAogICAgICAgICBjb25zdCBJZGVu
dGlmaWVyJiBtX2lkZW50OwogICAgIH07CkBAIC04NDcsNyArODUyLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIERlbGV0ZUJyYWNrZXROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4
cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmly
dHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3Rl
cklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0g
Tm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Jhc2U7
CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX3N1YnNjcmlwdDsKQEAgLTg1OCw3ICs4NjMsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRGVsZXRlRG90Tm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2
aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUg
PSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fYmFz
ZTsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9pZGVudDsKQEAgLTg2OSw3ICs4NzQsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRGVsZXRlVmFsdWVOb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKik7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0
dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBO
b1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcjsK
ICAgICB9OwpAQCAtODc5LDcgKzg4NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBWb2lk
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSopOwogCiAgICAgcHJp
dmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIFJl
Z2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0g
MCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogCiAgICAgICAgIEV4cHJl
c3Npb25Ob2RlKiBtX2V4cHI7CiAgICAgfTsKQEAgLTg5MSw3ICs4OTYsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0
dXJuIG1faWRlbnQ7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJ
RCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVy
cmlkZTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBv
dmVycmlkZTsKIAogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX2lkZW50OwogICAgIH07CkBA
IC05MDEsNyArOTA2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFR5cGVPZlZhbHVlTm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSopOwogCiAgICAgcHJpdmF0
ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIFJlZ2lz
dGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwg
VGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogCiAgICAgICAgIEV4cHJlc3Np
b25Ob2RlKiBtX2V4cHI7CiAgICAgfTsKQEAgLTkxMSw3ICs5MTYsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgUHJlZml4Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9u
Tm9kZSosIE9wZXJhdG9yLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwog
CiAgICAgcHJvdGVjdGVkOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAg
IHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAgICAg
ICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdFJlc29sdmUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKiA9IDApOwogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCcmFja2V0
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKICAgICAgICAgdmlydHVhbCBS
ZWdpc3RlcklEKiBlbWl0RG90KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsK
QEAgLTkyNSw3ICs5MzAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUG9zdGZpeE5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqLCBPcGVyYXRvciwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwg
Y29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAg
IHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9k
ZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBl
bWl0UmVzb2x2ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7
CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJyYWNrZXQoQnl0ZWNvZGVHZW5lcmF0
b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVy
SUQqIGVtaXREb3QoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRl
OwpAQCAtOTQwLDcgKzk0NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBjb25zdCBFeHBy
ZXNzaW9uTm9kZSogZXhwcigpIGNvbnN0IHsgcmV0dXJuIG1fZXhwcjsgfQogCiAgICAgcHJpdmF0
ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIFJlZ2lz
dGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwg
VGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogCiAgICAgICAgIE9wY29kZUlE
IG9wY29kZUlEKCkgY29uc3QgeyByZXR1cm4gbV9vcGNvZGVJRDsgfQogCkBAIC05NzAsNyArOTc1
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGNvbnN0IEV4cHJlc3Npb25Ob2RlKiBleHBy
KCkgY29uc3QgeyByZXR1cm4gbV9leHByOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0
dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBO
b1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcjsK
ICAgICB9OwpAQCAtOTk1LDcgKzEwMDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIHByaXZh
dGU6CiAgICAgICAgIHZvaWQgdHJ5Rm9sZFRvQnJhbmNoKEJ5dGVjb2RlR2VuZXJhdG9yJiwgVHJp
U3RhdGUmIGJyYW5jaENvbmRpdGlvbiwgRXhwcmVzc2lvbk5vZGUqJiBicmFuY2hFeHByZXNzaW9u
KTsKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIFJlZ2lz
dGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwg
VGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogCiAgICAgcHJvdGVjdGVkOgog
ICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCgpIGNvbnN0IHsgcmV0dXJuIG1fb3Bjb2RlSUQ7IH0K
QEAgLTEwNzksNyArMTA4NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBUaHJvd2FibGVC
aW5hcnlPcE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIx
LCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIE9wY29kZUlELCBib29sIHJpZ2h0SGFzQXNzaWdubWVu
dHMpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAg
ICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwog
ICAgIH07CiAgICAgCiAgICAgY2xhc3MgSW5zdGFuY2VPZk5vZGUgOiBwdWJsaWMgVGhyb3dhYmxl
QmluYXJ5T3BOb2RlIHsKQEAgLTEwODcsNyArMTA5Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBJbnN0YW5jZU9mTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRz
KTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAg
ICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKICAg
ICB9OwogCiAgICAgY2xhc3MgSW5Ob2RlIDogcHVibGljIFRocm93YWJsZUJpbmFyeU9wTm9kZSB7
CkBAIC0xMTAwLDcgKzExMDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRXF1YWxOb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogCiAgICAgcHJpdmF0ZToK
LSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVy
SUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFp
bENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogICAgIH07CiAKICAgICBjbGFzcyBO
b3RFcXVhbE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKQEAgLTExMTMsNyArMTExOCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTdHJpY3RFcXVhbE5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFs
IFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1Rh
aWxDYWxscykgb3ZlcnJpZGU7CiAgICAgfTsKIAogICAgIGNsYXNzIE5vdFN0cmljdEVxdWFsTm9k
ZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewpAQCAtMTE0Miw3ICsxMTQ3LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIExvZ2ljYWxPcE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIExvZ2ljYWxPcGVyYXRv
cik7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAg
ICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwg
UmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGVJbkNvbmRpdGlvbkNvbnRleHQoQnl0ZWNv
ZGVHZW5lcmF0b3ImLCBMYWJlbCogdHJ1ZVRhcmdldCwgTGFiZWwqIGZhbHNlVGFyZ2V0LCBGYWxs
VGhyb3VnaE1vZGUpIG92ZXJyaWRlOwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2V4cHIx
OwpAQCAtMTE1Niw3ICsxMTYxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIENvbmRpdGlv
bmFsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogbG9naWNhbCwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIpOwogCiAgICAgcHJp
dmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIFJl
Z2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0g
MCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogCiAgICAgICAgIEV4cHJl
c3Npb25Ob2RlKiBtX2xvZ2ljYWw7CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2V4cHIxOwpA
QCAtMTE2OCw3ICsxMTczLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlYWRNb2RpZnlS
ZXNvbHZlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgT3Bl
cmF0b3IsIEV4cHJlc3Npb25Ob2RlKiAgcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywg
Y29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RT
dGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKIAogICAgIHByaXZhdGU6Ci0g
ICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklE
KiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxD
YWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKIAogICAgICAgICBjb25zdCBJZGVudGlm
aWVyJiBtX2lkZW50OwogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9yaWdodDsKQEAgLTExODEs
NyArMTE4Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBBc3NpZ25SZXNvbHZlTm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvbk5vZGUq
IHJpZ2h0LCBBc3NpZ25tZW50Q29udGV4dCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0
dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBO
b1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9pZGVu
dDsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fcmlnaHQ7CkBAIC0xMTkzLDcgKzExOTgsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVhZE1vZGlmeUJyYWNrZXROb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vi
c2NyaXB0LCBPcGVyYXRvciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHN1YnNjcmlwdEhh
c0Fzc2lnbm1lbnRzLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJl
Z2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0g
MCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxD
YWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fYmFzZTsKICAgICAg
ICAgRXhwcmVzc2lvbk5vZGUqIG1fc3Vic2NyaXB0OwpAQCAtMTIwOCw3ICsxMjEzLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIEFzc2lnbkJyYWNrZXROb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBF
eHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgc3Vic2NyaXB0SGFzQXNzaWdubWVudHMsIGJvb2wg
cmlnaHRIYXNBc3NpZ25tZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5k
KTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAg
ICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKIAog
ICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9iYXNlOwogICAgICAgICBFeHByZXNzaW9uTm9kZSog
bV9zdWJzY3JpcHQ7CkBAIC0xMjIyLDcgKzEyMjcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgQXNzaWduRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSog
YmFzZSwgY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwog
CiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2
aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogCiAgICAg
ICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Jhc2U7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1f
aWRlbnQ7CkBAIC0xMjM1LDcgKzEyNDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVh
ZE1vZGlmeURvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJh
c2UsIGNvbnN0IElkZW50aWZpZXImLCBPcGVyYXRvciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBi
b29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZv
dEVuZCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7Cisg
ICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7
CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fYmFzZTsKICAgICAgICAgY29uc3QgSWRlbnRp
ZmllciYgbV9pZGVudDsKQEAgLTEyNDksNyArMTI1NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBBc3NpZ25FcnJvck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1
YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5v
VGFpbENhbGxzKSBvdmVycmlkZTsKICAgICB9OwogICAgIAogICAgIGNsYXNzIENvbW1hTm9kZSBm
aW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CkBAIC0xMjYxLDcgKzEyNjYsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0NvbW1h
Tm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgdmlydHVhbCBS
ZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWls
Q2FsbHMpIG92ZXJyaWRlOwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2V4cHI7CiAgICAg
ICAgIENvbW1hTm9kZSogbV9uZXh0OwpAQCAtMTI3Niw3ICsxMjgxLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIFN0YXRlbWVudE5vZGUqIHNpbmdsZVN0YXRlbWVudCgpIGNvbnN0OwogICAg
ICAgICBTdGF0ZW1lbnROb2RlKiBsYXN0U3RhdGVtZW50KCkgY29uc3Q7CiAKLSAgICAgICAgdm9p
ZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBkZXN0aW5hdGlv
bik7CisgICAgICAgIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogZGVzdGluYXRpb24sIFRhaWxDYWxsTW9kZSk7CiAgICAgICAgIHZvaWQgYW5hbHl6ZU1v
ZHVsZShNb2R1bGVBbmFseXplciYpOwogCiAgICAgcHJpdmF0ZToKQEAgLTEyOTIsNyArMTI5Nyw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTdGF0ZW1lbnROb2RlKiBsYXN0U3RhdGVtZW50
KCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAg
ICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogCiAgICAgICAg
IHZpcnR1YWwgYm9vbCBpc0Jsb2NrKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQog
CkBAIC0xMzA0LDcgKzEzMDksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRW1wdHlTdGF0
ZW1lbnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpOwogCiAgICAgcHJpdmF0ZToKLSAgICAg
ICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENh
bGxzKSBvdmVycmlkZTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNFbXB0eVN0YXRlbWVudCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB9OwpAQCAtMTMxNCw3ICsxMzE5
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIERlYnVnZ2VyU3RhdGVtZW50Tm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mKTsKICAgICAgICAgCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmly
dHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0g
MCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBv
dmVycmlkZTsKICAgICB9OwogCiAgICAgY2xhc3MgRXhwclN0YXRlbWVudE5vZGUgOiBwdWJsaWMg
U3RhdGVtZW50Tm9kZSB7CkBAIC0xMzI2LDcgKzEzMzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNFeHByU3RhdGVtZW50KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAg
ICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcjsKICAgICB9OwpAQCAtMTMzNSw3ICsxMzQwLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgogICAgICAgICBEZWNsYXJhdGlvblN0YXRlbWVu
dChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSopOwogICAgIHByaXZhdGU6
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBO
b1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcjsK
ICAgICB9OwpAQCAtMTM0NSw3ICsxMzUwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEVt
cHR5VmFyRXhwcmVzc2lvbihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVy
Jik7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAg
ICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwg
UmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAK
ICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9pZGVudDsKICAgICB9OwpAQCAtMTM1NSw3ICsx
MzYwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEVtcHR5TGV0RXhwcmVzc2lvbihjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJik7CiAKICAgICBwcml2YXRlOgot
ICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJ
RCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWls
Q2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgY29uc3QgSWRlbnRp
ZmllciYgbV9pZGVudDsKICAgICB9OwpAQCAtMTM2NSw3ICsxMzcwLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIElmRWxzZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lv
bk5vZGUqIGNvbmRpdGlvbiwgU3RhdGVtZW50Tm9kZSogaWZCbG9jaywgU3RhdGVtZW50Tm9kZSog
ZWxzZUJsb2NrKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAgICAgICAg
IGJvb2wgdHJ5Rm9sZEJyZWFrQW5kQ29udGludWUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBTdGF0ZW1l
bnROb2RlKiBpZkJsb2NrLAogICAgICAgICAgICAgTGFiZWwqJiB0cnVlVGFyZ2V0LCBGYWxsVGhy
b3VnaE1vZGUmKTsKIApAQCAtMTM3OSw3ICsxMzg0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIERvV2hpbGVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFN0YXRlbWVudE5vZGUqLCBF
eHByZXNzaW9uTm9kZSopOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCB2b2lkIGVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7
CisgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKIAog
ICAgICAgICBTdGF0ZW1lbnROb2RlKiBtX3N0YXRlbWVudDsKICAgICAgICAgRXhwcmVzc2lvbk5v
ZGUqIG1fZXhwcjsKQEAgLTEzOTAsNyArMTM5NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBXaGlsZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqLCBTdGF0
ZW1lbnROb2RlKik7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogCiAgICAg
ICAgIEV4cHJlc3Npb25Ob2RlKiBtX2V4cHI7CiAgICAgICAgIFN0YXRlbWVudE5vZGUqIG1fc3Rh
dGVtZW50OwpAQCAtMTQwMSw3ICsxNDA2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEZv
ck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjIsIEV4cHJlc3Npb25Ob2RlKiBleHByMywgU3RhdGVtZW50Tm9kZSos
IFZhcmlhYmxlRW52aXJvbm1lbnQmKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwg
dm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92
ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJp
ZGU7CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcjE7CiAgICAgICAgIEV4cHJlc3Np
b25Ob2RlKiBtX2V4cHIyOwpAQCAtMTQzMCw3ICsxNDM1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHZvaWQgZW1pdExvb3BIZWFkZXIoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiBwcm9wZXJ0eU5hbWUpOwogICAgICAgICB2b2lkIGVtaXRNdWx0aUxvb3BCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqIGRzdCk7CiAKLSAgICAgICAgdmlydHVhbCB2b2lk
IGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJp
ZGU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
LCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsK
ICAgICB9OwogICAgIAogICAgIGNsYXNzIEZvck9mTm9kZSA6IHB1YmxpYyBFbnVtZXJhdGlvbk5v
ZGUgewpAQCAtMTQzOCw3ICsxNDQzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEZvck9m
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSosIEV4cHJlc3Npb25O
b2RlKiwgU3RhdGVtZW50Tm9kZSosIFZhcmlhYmxlRW52aXJvbm1lbnQmKTsKICAgICAgICAgCiAg
ICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxD
YWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKICAgICB9OwogCiAgICAgY2xhc3MgQ29u
dGludWVOb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNz
aW9uRGF0YSB7CkBAIC0xNDQ4LDcgKzE0NTMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
CiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBib29sIGlzQ29udGludWUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAg
Y29uc3QgSWRlbnRpZmllciYgbV9pZGVudDsKICAgICB9OwpAQCAtMTQ2MCw3ICsxNDY1LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwg
Ym9vbCBpc0JyZWFrKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgICAgICB2
aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMp
IG92ZXJyaWRlOwogCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1faWRlbnQ7CiAgICAgfTsK
QEAgLTE0NzIsNyArMTQ3Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBFeHByZXNzaW9u
Tm9kZSogdmFsdWUoKSB7IHJldHVybiBtX3ZhbHVlOyB9CiAKICAgICBwcml2YXRlOgotICAgICAg
ICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2Fs
bHMpIG92ZXJyaWRlOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1JldHVybk5vZGUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKQEAgLTE0ODQsNyArMTQ4OSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBXaXRoTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHBy
ZXNzaW9uTm9kZSosIFN0YXRlbWVudE5vZGUqLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3Qs
IHVpbnQzMl90IGV4cHJlc3Npb25MZW5ndGgpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmly
dHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0g
MCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBv
dmVycmlkZTsKIAogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9leHByOwogICAgICAgICBTdGF0
ZW1lbnROb2RlKiBtX3N0YXRlbWVudDsKQEAgLTE0OTcsNyArMTUwMiw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBMYWJlbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRl
bnRpZmllciYgbmFtZSwgU3RhdGVtZW50Tm9kZSopOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAg
dmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxz
KSBvdmVycmlkZTsKIAogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX25hbWU7CiAgICAgICAg
IFN0YXRlbWVudE5vZGUqIG1fc3RhdGVtZW50OwpAQCAtMTUwOCw3ICsxNTEzLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIFRocm93Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHBy
ZXNzaW9uTm9kZSopOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKIAogICAg
ICAgICBFeHByZXNzaW9uTm9kZSogbV9leHByOwogICAgIH07CkBAIC0xNTE4LDcgKzE1MjMsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVHJ5Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBTdGF0ZW1lbnROb2RlKiB0cnlCbG9jaywgY29uc3QgSWRlbnRpZmllciYgZXhjZXB0aW9uSWRl
bnQsIFN0YXRlbWVudE5vZGUqIGNhdGNoQmxvY2ssIFZhcmlhYmxlRW52aXJvbm1lbnQmIGNhdGNo
RW52aXJvbm1lbnQsIFN0YXRlbWVudE5vZGUqIGZpbmFsbHlCbG9jayk7CiAKICAgICBwcml2YXRl
OgotICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwg
UmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0g
Tm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogCiAgICAgICAgIFN0YXRlbWVudE5vZGUqIG1fdHJ5Qmxv
Y2s7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1fdGhyb3duVmFsdWVJZGVudDsKQEAgLTE1
NzIsNyArMTU3Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIFN0YXRlbWVudE5vZGUq
IHNpbmdsZVN0YXRlbWVudCgpIGNvbnN0OwogCi0gICAgICAgIHZvaWQgZW1pdFN0YXRlbWVudHNC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqIGRlc3RpbmF0aW9uKTsKKyAg
ICAgICAgdm9pZCBlbWl0U3RhdGVtZW50c0J5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogZGVzdGluYXRpb24sIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKTsKICAgICAg
ICAgCiAgICAgICAgIHZvaWQgc2V0Q2xvc2VkVmFyaWFibGVzKFZlY3RvcjxSZWZQdHI8VW5pcXVl
ZFN0cmluZ0ltcGw+PiYmKSB7IH0KIApAQCAtMTYwNSw3ICsxNjEwLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiYgY2xv
c2VkVmFyaWFibGVzKCkgY29uc3QgeyByZXR1cm4gbV9jbG9zZWRWYXJpYWJsZXM7IH0KIAogICAg
IHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIHZvaWQg
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2Fs
bE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8VW5p
cXVlZFN0cmluZ0ltcGw+PiBtX2Nsb3NlZFZhcmlhYmxlczsKICAgICAgICAgdW5zaWduZWQgbV9z
dGFydENvbHVtbjsKICAgICAgICAgdW5zaWduZWQgbV9lbmRDb2x1bW47CkBAIC0xNjIxLDcgKzE2
MjYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2NvcGVJ
c0Z1bmN0aW9uID0gZmFsc2U7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIHZvaWQg
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlk
ZTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwog
CiAgICAgICAgIHVuc2lnbmVkIG1fZW5kQ29sdW1uOwogICAgIH07CkBAIC0xNjM2LDcgKzE2NDEs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2NvcGVJc0Z1
bmN0aW9uID0gZmFsc2U7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIHZvaWQgZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsK
KyAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogICAg
ICAgICB1bnNpZ25lZCBtX3N0YXJ0Q29sdW1uOwogICAgICAgICB1bnNpZ25lZCBtX2VuZENvbHVt
bjsKICAgICB9OwpAQCAtMTY5NCw3ICsxNjk5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IE1vZHVsZU5hbWVOb2RlKiBtb2R1bGVOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9tb2R1bGVOYW1l
OyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmly
dHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0g
MCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgYW5hbHl6ZU1vZHVsZShNb2R1bGVBbmFseXplciYpIG92ZXJyaWRlOwogCiAgICAgICAg
IEltcG9ydFNwZWNpZmllckxpc3ROb2RlKiBtX3NwZWNpZmllckxpc3Q7CkBAIC0xNzA4LDcgKzE3
MTMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTW9kdWxlTmFtZU5vZGUqIG1vZHVsZU5h
bWUoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZU5hbWU7IH0KIAogICAgIHByaXZhdGU6Ci0gICAg
ICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3Rl
cklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxD
YWxscykgb3ZlcnJpZGU7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBhbmFseXplTW9kdWxlKE1vZHVs
ZUFuYWx5emVyJikgb3ZlcnJpZGU7CiAKICAgICAgICAgTW9kdWxlTmFtZU5vZGUqIG1fbW9kdWxl
TmFtZTsKQEAgLTE3MjIsNyArMTcyNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBjb25z
dCBJZGVudGlmaWVyJiBsb2NhbE5hbWUoKSBjb25zdCB7IHJldHVybiBtX2xvY2FsTmFtZTsgfQog
CiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRh
aWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKICAgICAgICAgdmlydHVhbCB2b2lk
IGFuYWx5emVNb2R1bGUoTW9kdWxlQW5hbHl6ZXImKSBvdmVycmlkZTsKICAgICAgICAgU3RhdGVt
ZW50Tm9kZSogbV9kZWNsYXJhdGlvbjsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9sb2Nh
bE5hbWU7CkBAIC0xNzM1LDcgKzE3NDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29u
c3QgU3RhdGVtZW50Tm9kZSYgZGVjbGFyYXRpb24oKSBjb25zdCB7IHJldHVybiAqbV9kZWNsYXJh
dGlvbjsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKICAgICAgICAgdmly
dHVhbCB2b2lkIGFuYWx5emVNb2R1bGUoTW9kdWxlQW5hbHl6ZXImKSBvdmVycmlkZTsKICAgICAg
ICAgU3RhdGVtZW50Tm9kZSogbV9kZWNsYXJhdGlvbjsKICAgICB9OwpAQCAtMTc3NCw3ICsxNzc5
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE1vZHVsZU5hbWVOb2RlKiBtb2R1bGVOYW1l
KCkgY29uc3QgeyByZXR1cm4gbV9tb2R1bGVOYW1lOyB9CiAKICAgICBwcml2YXRlOgotICAgICAg
ICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2Fs
bHMpIG92ZXJyaWRlOwogICAgICAgICB2aXJ0dWFsIHZvaWQgYW5hbHl6ZU1vZHVsZShNb2R1bGVB
bmFseXplciYpIG92ZXJyaWRlOwogICAgICAgICBFeHBvcnRTcGVjaWZpZXJMaXN0Tm9kZSogbV9z
cGVjaWZpZXJMaXN0OwogICAgICAgICBNb2R1bGVOYW1lTm9kZSogbV9tb2R1bGVOYW1lIHsgbnVs
bHB0ciB9OwpAQCAtMTg3MSw3ICsxODc2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAg
RnVuY3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0
ZXJzOyB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxs
TW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKIAogICAgICAgICB2b2lkIGZpbmlzaFBhcnNp
bmcoY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uTW9kZSk7CiAgICAgICAgIApAQCAtMTkwOCw3
ICsxOTEzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEZ1bmNFeHByTm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25NZXRhZGF0YU5vZGUq
LCBjb25zdCBTb3VyY2VDb2RlJik7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJl
Z2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0g
MCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxD
YWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgdmlydHVhbCBib29sIGlzRnVuY0V4cHJOb2RlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIH07CkBAIC0xOTE4LDcgKzE5MjMs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgQXJyb3dGdW5jRXhwck5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiwg
Y29uc3QgU291cmNlQ29kZSYpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdp
c3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAp
IG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2Fs
bHMpIG92ZXJyaWRlOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Fycm93RnVuY0V4cHJOb2Rl
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIH07CkBAIC0xOTMyLDcgKzE5
MzcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbmFtZSgp
IHsgcmV0dXJuIG1fbmFtZTsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdp
c3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAp
IG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2Fs
bHMpIG92ZXJyaWRlOwogCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1fbmFtZTsKICAgICAg
ICAgRXhwcmVzc2lvbk5vZGUqIG1fY29uc3RydWN0b3JFeHByZXNzaW9uOwpAQCAtMjAzOCw3ICsy
MDQzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBi
b29sIGlzQXNzaWdubWVudExvY2F0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNEZXN0cnVjdHVyaW5nTm9kZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAg
ICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwog
CiAgICAgICAgIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSogbV9iaW5kaW5nczsKICAgICAgICAg
RXhwcmVzc2lvbk5vZGUqIG1faW5pdGlhbGl6ZXI7CkBAIC0yMDUyLDcgKzIwNTcsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG1ldGFkYXRhKCkgeyBy
ZXR1cm4gbV9tZXRhZGF0YTsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCB2b2lk
IGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJp
ZGU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
LCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsK
IAogICAgICAgICBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbV9tZXRhZGF0YTsKICAgICB9OwpAQCAt
MjA2Myw3ICsyMDY4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIENsYXNzRGVjbE5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGNsYXNzRXhwcmVzc2lvbik7
CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVh
bCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwg
VGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogCiAgICAgICAgIEV4cHJlc3Np
b25Ob2RlKiBtX2NsYXNzRGVjbGFyYXRpb247CiAgICAgfTsKQEAgLTIwNzUsNyArMjA4MCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBleHByKCkgY29uc3Qg
eyByZXR1cm4gbV9leHByOyB9CiAKLSAgICAgICAgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBkZXN0aW5hdGlvbik7CisgICAgICAgIHZvaWQgZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogZGVzdGluYXRpb24sIFRhaWxD
YWxsTW9kZSk7CiAgICAgICAgIHZvaWQgc2V0U3RhcnRPZmZzZXQoaW50IG9mZnNldCkgeyBtX3N0
YXJ0T2Zmc2V0ID0gb2Zmc2V0OyB9CiAKICAgICBwcml2YXRlOgpAQCAtMjEwMSw3ICsyMTA2LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgogICAgICAgICBDYXNlQmxvY2tOb2RlKENs
YXVzZUxpc3ROb2RlKiBsaXN0MSwgQ2FzZUNsYXVzZU5vZGUqIGRlZmF1bHRDbGF1c2UsIENsYXVz
ZUxpc3ROb2RlKiBsaXN0Mik7CiAKLSAgICAgICAgdm9pZCBlbWl0Qnl0ZWNvZGVGb3JCbG9jayhC
eXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqIGlucHV0LCBSZWdpc3RlcklEKiBkZXN0aW5h
dGlvbik7CisgICAgICAgIHZvaWQgZW1pdEJ5dGVjb2RlRm9yQmxvY2soQnl0ZWNvZGVHZW5lcmF0
b3ImLCBSZWdpc3RlcklEKiBpbnB1dCwgUmVnaXN0ZXJJRCogZGVzdGluYXRpb24sIFRhaWxDYWxs
TW9kZSk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBTd2l0Y2hJbmZvOjpTd2l0Y2hUeXBlIHRy
eVRhYmxlU3dpdGNoKFZlY3RvcjxFeHByZXNzaW9uTm9kZSosIDg+JiBsaXRlcmFsVmVjdG9yLCBp
bnQzMl90JiBtaW5fbnVtLCBpbnQzMl90JiBtYXhfbnVtKTsKQEAgLTIxMTYsNyArMjEyMSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTd2l0Y2hOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIEV4cHJlc3Npb25Ob2RlKiwgQ2FzZUJsb2NrTm9kZSosIFZhcmlhYmxlRW52aXJvbm1lbnQm
KTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0
dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAw
LCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgRXhwcmVz
c2lvbk5vZGUqIG1fZXhwcjsKICAgICAgICAgQ2FzZUJsb2NrTm9kZSogbV9ibG9jazsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAppbmRleCAyZjdmZDM1MzJjYTI5NThlZDBj
NDU1MzIzYTBjZjMxN2RmZWJkYjdkLi45YmFjYmQxYWU2ZjZiN2I4NWRkZjFjZDc2OWE2N2U4YWE4
ODlhYjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25z
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCkBAIC0xMjgs
NiArMTI4LDcgQEAgdHlwZWRlZiBjb25zdCBjaGFyKiBvcHRpb25TdHJpbmc7CiAgICAgdihib29s
LCBmb3JjZVByb2ZpbGVyQnl0ZWNvZGVHZW5lcmF0aW9uLCBmYWxzZSwgbnVsbHB0cikgXAogICAg
IFwKICAgICB2KGJvb2wsIGVuYWJsZUZ1bmN0aW9uRG90QXJndW1lbnRzLCB0cnVlLCBudWxscHRy
KSBcCisgICAgdihib29sLCBlbmFibGVUYWlsQ2FsbHMsIHRydWUsIG51bGxwdHIpIFwKICAgICBc
CiAgICAgLyogc2hvd0Rpc2Fzc2VtYmx5IGltcGxpZXMgc2hvd0RGR0Rpc2Fzc2VtYmx5LiAqLyBc
CiAgICAgdihib29sLCBzaG93RGlzYXNzZW1ibHksIGZhbHNlLCAiZHVtcHMgZGlzYXNzZW1ibHkg
b2YgYWxsIEpJVCBjb21waWxlZCBjb2RlIHVwb24gY29tcGlsYXRpb24iKSBcCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260346</attachid>
            <date>2015-08-31 19:25:24 -0700</date>
            <delta_ts>2015-09-01 14:10:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148665-20150831192507.patch</filename>
            <type>text/plain</type>
            <size>121839</size>
            <attacher name="Basile Clement">basile_clement</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MjAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
MGQyZTVjOGVhZTdiZDU0OGM5YjgwMzUxNTQ1M2ZiYzRhZTMyYzlkLi5lZWQ3MjQzMjFjYTkxYWE1
MDg1ZDViZDA1ZmRiNjIwNmUwOGY1YmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDMgQEAKKzIwMTUtMDgtMzEgIEJhc2lsZSBDbGVtZW50ICA8YmFzaWxlX2NsZW1lbnRA
YXBwbGUuY29tPgorCisgICAgICAgIFtFUzZdIFJlY29nbml6ZSBjYWxscyBpbiB0YWlsIHBvc2l0
aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg2
NjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IHBhdGNoIGFkZHMgdGhlIGNhcGFiaWxpdHkgZm9yIHRoZSBieXRlY29kZSBnZW5lcmF0b3IgdG8g
cmVjb2duaXplCisgICAgICAgIGFuZCBkaXNwYXRjaCB0YWlsIGNhbGxzLCBhcyBwZXIgRVM2IHNw
ZWM6CisgICAgICAgIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82
LjAvI3NlYy1pc2ludGFpbHBvc2l0aW9uCisKKyAgICAgICAgVGhpcyBkb2VzIG5vdCBjaGFuZ2Ug
dGhlIGdlbmVyYXRlZCBieXRlY29kZSwgYnV0IG1lcmVseSBwcm92aWRlcyB0aGUKKyAgICAgICAg
aG9vayBmb3IgZ2VuZXJhdGluZyB0YWlsIGNhbGxzIGluIHN1YnNlcXVlbnQgcGF0Y2hlcyB0b3dh
cmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NjQ3
NworCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRUYWlsQ2FsbCk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VGFpbENhbGxWYXJhcmdzKToKKyAgICAgICAgKiBieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXROb2RlKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNw
cDoKKyAgICAgICAgKEpTQzo6Q29uc3RhbnROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAo
SlNDOjpOdW1iZXJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpSZWdFeHBOb2Rl
OjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpUaGlzTm9kZTo6ZW1pdEJ5dGVjb2RlKToK
KyAgICAgICAgKEpTQzo6U3VwZXJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpO
ZXdUYXJnZXROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpSZXNvbHZlTm9kZTo6
ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6VGVtcGxhdGVTdHJpbmdOb2RlOjplbWl0Qnl0
ZWNvZGUpOgorICAgICAgICAoSlNDOjpUZW1wbGF0ZUxpdGVyYWxOb2RlOjplbWl0Qnl0ZWNvZGUp
OgorICAgICAgICAoSlNDOjpUYWdnZWRUZW1wbGF0ZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAg
ICAgIChKU0M6OkFycmF5Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6T2JqZWN0
TGl0ZXJhbE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlByb3BlcnR5TGlzdE5v
ZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkJyYWNrZXRBY2Nlc3Nvck5vZGU6OmVt
aXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkRvdEFjY2Vzc29yTm9kZTo6ZW1pdEJ5dGVjb2Rl
KToKKyAgICAgICAgKEpTQzo6QXJndW1lbnRMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAg
ICAgKEpTQzo6TmV3RXhwck5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkV2YWxG
dW5jdGlvbkNhbGxOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNh
bGxWYWx1ZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbFJl
c29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUludHJpbnNp
Y05vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbEJyYWNrZXRO
b2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxEb3ROb2RlOjpl
bWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1p
dEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0
Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpQb3N0Zml4Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAg
ICAgICAgKEpTQzo6RGVsZXRlUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChK
U0M6OkRlbGV0ZUJyYWNrZXROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpEZWxl
dGVEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpEZWxldGVWYWx1ZU5vZGU6
OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlZvaWROb2RlOjplbWl0Qnl0ZWNvZGUpOgor
ICAgICAgICAoSlNDOjpUeXBlT2ZSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAg
KEpTQzo6VHlwZU9mVmFsdWVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpQcmVm
aXhOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpVbmFyeU9wTm9kZTo6ZW1pdEJ5
dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Qml0d2lzZU5vdE5vZGU6OmVtaXRCeXRlY29kZSk6Cisg
ICAgICAgIChKU0M6OkJpbmFyeU9wTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6
RXF1YWxOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpTdHJpY3RFcXVhbE5vZGU6
OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlRocm93YWJsZUJpbmFyeU9wTm9kZTo6ZW1p
dEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6SW5zdGFuY2VPZk5vZGU6OmVtaXRCeXRlY29kZSk6
CisgICAgICAgIChKU0M6OkxvZ2ljYWxPcE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChK
U0M6OkNvbmRpdGlvbmFsTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UmVhZE1v
ZGlmeVJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpBc3NpZ25SZXNv
bHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QXNzaWduRG90Tm9kZTo6ZW1p
dEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UmVhZE1vZGlmeURvdE5vZGU6OmVtaXRCeXRlY29k
ZSk6CisgICAgICAgIChKU0M6OkFzc2lnbkVycm9yTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAg
ICAgKEpTQzo6QXNzaWduQnJhY2tldE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6
OlJlYWRNb2RpZnlCcmFja2V0Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q29t
bWFOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpTb3VyY2VFbGVtZW50czo6ZW1p
dEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QmxvY2tOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAg
ICAgICAoSlNDOjpFbXB0eVN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChK
U0M6OkRlYnVnZ2VyU3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6
RXhwclN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkRlY2xhcmF0
aW9uU3RhdGVtZW50OjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpFbXB0eVZhckV4cHJl
c3Npb246OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkVtcHR5TGV0RXhwcmVzc2lvbjo6
ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6SWZFbHNlTm9kZTo6ZW1pdEJ5dGVjb2RlKToK
KyAgICAgICAgKEpTQzo6RG9XaGlsZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6
OldoaWxlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Rm9yTm9kZTo6ZW1pdEJ5
dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Rm9ySW5Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAg
ICAoSlNDOjpGb3JPZk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNvbnRpbnVl
Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QnJlYWtOb2RlOjplbWl0Qnl0ZWNv
ZGUpOgorICAgICAgICAoSlNDOjpSZXR1cm5Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAo
SlNDOjpXaXRoTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q2FzZUNsYXVzZU5v
ZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNhc2VCbG9ja05vZGU6OmVtaXRCeXRl
Y29kZUZvckJsb2NrKToKKyAgICAgICAgKEpTQzo6U3dpdGNoTm9kZTo6ZW1pdEJ5dGVjb2RlKToK
KyAgICAgICAgKEpTQzo6TGFiZWxOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpU
aHJvd05vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlRyeU5vZGU6OmVtaXRCeXRl
Y29kZSk6CisgICAgICAgIChKU0M6OlNjb3BlTm9kZTo6ZW1pdFN0YXRlbWVudHNCeXRlY29kZSk6
CisgICAgICAgIChKU0M6OlByb2dyYW1Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlND
OjpNb2R1bGVQcm9ncmFtTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RXZhbE5v
ZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uTm9kZTo6ZW1pdEJ5dGVj
b2RlKToKKyAgICAgICAgKEpTQzo6RnVuY0RlY2xOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAg
ICAoSlNDOjpGdW5jRXhwck5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkFycm93
RnVuY0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDbGFzc0RlY2xOb2Rl
OjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNv
ZGUpOgorICAgICAgICAoSlNDOjpJbXBvcnREZWNsYXJhdGlvbk5vZGU6OmVtaXRCeXRlY29kZSk6
CisgICAgICAgIChKU0M6OkV4cG9ydEFsbERlY2xhcmF0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKToK
KyAgICAgICAgKEpTQzo6RXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uTm9kZTo6ZW1pdEJ5dGVjb2Rl
KToKKyAgICAgICAgKEpTQzo6RXhwb3J0TG9jYWxEZWNsYXJhdGlvbk5vZGU6OmVtaXRCeXRlY29k
ZSk6CisgICAgICAgIChKU0M6OkV4cG9ydE5hbWVkRGVjbGFyYXRpb25Ob2RlOjplbWl0Qnl0ZWNv
ZGUpOgorICAgICAgICAoSlNDOjpEZXN0cnVjdHVyaW5nQXNzaWdubWVudE5vZGU6OmVtaXRCeXRl
Y29kZSk6CisgICAgICAgIChKU0M6OlNwcmVhZEV4cHJlc3Npb25Ob2RlOjplbWl0Qnl0ZWNvZGUp
OgorICAgICAgICAoSlNDOjpQb3N0Zml4Tm9kZTo6ZW1pdFJlc29sdmUpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpQb3N0Zml4Tm9kZTo6ZW1pdEJyYWNrZXQpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpQb3N0Zml4Tm9kZTo6ZW1pdERvdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlByZWZp
eE5vZGU6OmVtaXRSZXNvbHZlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6UHJlZml4Tm9kZTo6
ZW1pdEJyYWNrZXQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCaW5hcnlPcE5vZGU6OmVtaXRC
eXRlY29kZUluQ29uZGl0aW9uQ29udGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkJpbmFy
eU9wTm9kZTo6dHJ5Rm9sZFRvQnJhbmNoKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6ZW1pdFJl
YWRNb2RpZnlBc3NpZ25tZW50KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QmxvY2tOb2RlOjps
YXN0U3RhdGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6c2luZ2xlU3RhdGVtZW50KTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SWZFbHNlTm9kZTo6dHJ5Rm9sZEJyZWFrQW5kQ29udGlu
dWUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGb3JJbk5vZGU6OmVtaXRNdWx0aUxvb3BCeXRl
Y29kZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNvbnRpbnVlTm9kZTo6dHJpdmlhbFRhcmdl
dCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkJyZWFrTm9kZTo6dHJpdmlhbFRhcmdldCk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OnByb2Nlc3NDbGF1c2VMaXN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6Q2FzZUJsb2NrTm9kZTo6dHJ5VGFibGVTd2l0Y2gpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpPYmplY3RQYXR0ZXJuTm9kZTo6YmluZFZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwYXJzZXIvTm9kZXMuaDoKKyAgICAgICAgKEpTQzo6QnJhY2tldEFjY2Vzc29yTm9kZTo6c3Vi
c2NyaXB0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QmluYXJ5T3BOb2RlOjpsaHMpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpFeHByU3RhdGVtZW50Tm9kZTo6ZXhwcik6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OlNjb3BlTm9kZTo6bmVlZGVkQ29uc3RhbnRzKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6RXZhbE5vZGU6OmVuZENvbHVtbik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1v
ZHVsZVByb2dyYW1Ob2RlOjplbmRDb2x1bW4pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpEZXN0
cnVjdHVyaW5nQXNzaWdubWVudE5vZGU6OmJpbmRpbmdzKTogRGVsZXRlZC4KKyAgICAgICAgKiBy
dW50aW1lL09wdGlvbnMuaDoKKwogMjAxNS0wOC0zMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBbRVM2XSBJbnRyb2R1Y2UgTW9kdWxlUHJvZ3JhbUV4
ZWN1dGFibGUgZmFtaWxpZXMgYW5kIGNvbXBpbGUgTW9kdWxlIGNvZGUgdG8gYnl0ZWNvZGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHAKaW5kZXggNzgzYjIxNTdhMWYxZTEzYzJlY2MxYWZmZjVlN2ZkYzQ5ZmU5ZTNk
Ny4uYjk4MTUzM2MzZjEyMTVhYzNhMDkwMTkxNDk5MjE1ODE0NzUzMTNiMiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAKQEAgLTI0NjgsNiArMjQ2OCwxMyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdENhbGwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBFeHBlYwogICAg
IHJldHVybiBlbWl0Q2FsbChvcF9jYWxsLCBkc3QsIGZ1bmMsIGV4cGVjdGVkRnVuY3Rpb24sIGNh
bGxBcmd1bWVudHMsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CiB9CiAKK1JlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VGFpbENhbGwoUmVnaXN0ZXJJRCogZHN0LCBSZWdp
c3RlcklEKiBmdW5jLCBFeHBlY3RlZEZ1bmN0aW9uIGV4cGVjdGVkRnVuY3Rpb24sIENhbGxBcmd1
bWVudHMmIGNhbGxBcmd1bWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVu
ZCkKK3sKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGVtaXR0aW5nIGEgbmV3IG9wX3RhaWxf
Y2FsbCBoZXJlCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE0NjQ4NAorICAgIHJldHVybiBlbWl0Q2FsbChvcF9jYWxsLCBkc3QsIGZ1bmMsIGV4cGVjdGVk
RnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7Cit9
CisKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbEV2YWwoUmVnaXN0ZXJJ
RCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBDYWxsQXJndW1lbnRzJiBjYWxsQXJndW1lbnRzLCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0
YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCiB7CiAgICAgcmV0dXJuIGVtaXRD
YWxsKG9wX2NhbGxfZXZhbCwgZHN0LCBmdW5jLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1
bWVudHMsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CkBAIC0yNjE3LDYgKzI2MjQsMTMg
QEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsVmFyYXJncyhSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMKICAgICByZXR1cm4gZW1pdENhbGxWYXJhcmdzKG9w
X2NhbGxfdmFyYXJncywgZHN0LCBmdW5jLCB0aGlzUmVnaXN0ZXIsIGFyZ3VtZW50cywgZmlyc3RG
cmVlUmVnaXN0ZXIsIGZpcnN0VmFyQXJnT2Zmc2V0LCBwcm9maWxlSG9va1JlZ2lzdGVyLCBkaXZv
dCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdFRhaWxDYWxsVmFyYXJncyhSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1
bmMsIFJlZ2lzdGVySUQqIHRoaXNSZWdpc3RlciwgUmVnaXN0ZXJJRCogYXJndW1lbnRzLCBSZWdp
c3RlcklEKiBmaXJzdEZyZWVSZWdpc3RlciwgaW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCwgUmVn
aXN0ZXJJRCogcHJvZmlsZUhvb2tSZWdpc3RlciwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90RW5kKQoreworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgZW1pdHRpbmcgYSBuZXcg
b3BfdGFpbF9jYWxsX3ZhcmFyZ3MgaGVyZQorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDY0ODQKKyAgICByZXR1cm4gZW1pdENhbGxWYXJhcmdzKG9wX2Nh
bGxfdmFyYXJncywgZHN0LCBmdW5jLCB0aGlzUmVnaXN0ZXIsIGFyZ3VtZW50cywgZmlyc3RGcmVl
UmVnaXN0ZXIsIGZpcnN0VmFyQXJnT2Zmc2V0LCBwcm9maWxlSG9va1JlZ2lzdGVyLCBkaXZvdCwg
ZGl2b3RTdGFydCwgZGl2b3RFbmQpOworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdENvbnN0cnVjdFZhcmFyZ3MoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5j
LCBSZWdpc3RlcklEKiB0aGlzUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGFyZ3VtZW50cywgUmVnaXN0
ZXJJRCogZmlyc3RGcmVlUmVnaXN0ZXIsIGludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQsIFJlZ2lz
dGVySUQqIHByb2ZpbGVIb29rUmVnaXN0ZXIsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwg
Y29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBk
aXZvdEVuZCkKIHsKICAgICByZXR1cm4gZW1pdENhbGxWYXJhcmdzKG9wX2NvbnN0cnVjdF92YXJh
cmdzLCBkc3QsIGZ1bmMsIHRoaXNSZWdpc3RlciwgYXJndW1lbnRzLCBmaXJzdEZyZWVSZWdpc3Rl
ciwgZmlyc3RWYXJBcmdPZmZzZXQsIHByb2ZpbGVIb29rUmVnaXN0ZXIsIGRpdm90LCBkaXZvdFN0
YXJ0LCBkaXZvdEVuZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggZWJmN2QxNzJiOGUxOWQ4MThmYjA1YjFl
OGJlZDYyMWQ1YWFjNjA0YS4uMTU0MTg4ZWJkNmZmOWY3YWUwZDgwNDIzNGFiM2RjZjE2NWY4NjFi
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuaApAQCAtMzU3LDcgKzM1Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBMYWJlbFNjb3BlUHRyIG5ld0xhYmVsU2NvcGUoTGFiZWxTY29wZTo6VHlwZSwgY29uc3Qg
SWRlbnRpZmllciogPSAwKTsKICAgICAgICAgUGFzc1JlZlB0cjxMYWJlbD4gbmV3TGFiZWwoKTsK
IAotICAgICAgICB2b2lkIGVtaXROb2RlKFJlZ2lzdGVySUQqIGRzdCwgU3RhdGVtZW50Tm9kZSog
bikKKyAgICAgICAgdm9pZCBlbWl0Tm9kZShSZWdpc3RlcklEKiBkc3QsIFN0YXRlbWVudE5vZGUq
IG4sIFRhaWxDYWxsTW9kZSB0YWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykKICAgICAgICAgewog
ICAgICAgICAgICAgLy8gTm9kZTo6ZW1pdENvZGUgYXNzdW1lcyB0aGF0IGRzdCwgaWYgcHJvdmlk
ZWQsIGlzIGVpdGhlciBhIGxvY2FsIG9yIGEgcmVmZXJlbmNlZCB0ZW1wb3JhcnkuCiAgICAgICAg
ICAgICBBU1NFUlQoIWRzdCB8fCBkc3QgPT0gaWdub3JlZFJlc3VsdCgpIHx8ICFkc3QtPmlzVGVt
cG9yYXJ5KCkgfHwgZHN0LT5yZWZDb3VudCgpKTsKQEAgLTM2NSw3ICszNjUsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgICAgICAgICBlbWl0VGhyb3dFeHByZXNzaW9uVG9vRGVlcEV4Y2Vw
dGlvbigpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIG4tPmVtaXRCeXRlY29kZSgqdGhpcywgZHN0KTsKKyAgICAgICAgICAgIG4tPmVtaXRCeXRl
Y29kZSgqdGhpcywgZHN0LCB0YWlsQ2FsbE1vZGUpOwogICAgICAgICB9CiAKICAgICAgICAgdm9p
ZCBlbWl0Tm9kZShTdGF0ZW1lbnROb2RlKiBuKQpAQCAtMzczLDEzICszNzMsMTMgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICBlbWl0Tm9kZSgwLCBuKTsKICAgICAgICAgfQogCi0gICAg
ICAgIFJlZ2lzdGVySUQqIGVtaXROb2RlKFJlZ2lzdGVySUQqIGRzdCwgRXhwcmVzc2lvbk5vZGUq
IG4pCisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROb2RlKFJlZ2lzdGVySUQqIGRzdCwgRXhwcmVz
c2lvbk5vZGUqIG4sIFRhaWxDYWxsTW9kZSB0YWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykKICAg
ICAgICAgewogICAgICAgICAgICAgLy8gTm9kZTo6ZW1pdENvZGUgYXNzdW1lcyB0aGF0IGRzdCwg
aWYgcHJvdmlkZWQsIGlzIGVpdGhlciBhIGxvY2FsIG9yIGEgcmVmZXJlbmNlZCB0ZW1wb3Jhcnku
CiAgICAgICAgICAgICBBU1NFUlQoIWRzdCB8fCBkc3QgPT0gaWdub3JlZFJlc3VsdCgpIHx8ICFk
c3QtPmlzVGVtcG9yYXJ5KCkgfHwgZHN0LT5yZWZDb3VudCgpKTsKICAgICAgICAgICAgIGlmICgh
bV92bS0+aXNTYWZlVG9SZWN1cnNlKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGVtaXRUaHJv
d0V4cHJlc3Npb25Ub29EZWVwRXhjZXB0aW9uKCk7Ci0gICAgICAgICAgICByZXR1cm4gbi0+ZW1p
dEJ5dGVjb2RlKCp0aGlzLCBkc3QpOworICAgICAgICAgICAgcmV0dXJuIG4tPmVtaXRCeXRlY29k
ZSgqdGhpcywgZHN0LCB0YWlsQ2FsbE1vZGUpOwogICAgICAgICB9CiAKICAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdE5vZGUoRXhwcmVzc2lvbk5vZGUqIG4pCkBAIC01MTgsOCArNTE4LDEwIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgRXhwZWN0ZWRGdW5jdGlvbiBleHBlY3Rl
ZEZ1bmN0aW9uRm9ySWRlbnRpZmllcihjb25zdCBJZGVudGlmaWVyJik7CiAgICAgICAgIFJlZ2lz
dGVySUQqIGVtaXRDYWxsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgRXhwZWN0
ZWRGdW5jdGlvbiwgQ2FsbEFyZ3VtZW50cyYsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwg
Y29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBk
aXZvdEVuZCk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRUYWlsQ2FsbChSZWdpc3RlcklEKiBk
c3QsIFJlZ2lzdGVySUQqIGZ1bmMsIEV4cGVjdGVkRnVuY3Rpb24sIENhbGxBcmd1bWVudHMmLCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0
YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogICAgICAgICBSZWdpc3RlcklE
KiBlbWl0Q2FsbEV2YWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBDYWxsQXJn
dW1lbnRzJiwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlv
biYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKICAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdENhbGxWYXJhcmdzKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCog
ZnVuYywgUmVnaXN0ZXJJRCogdGhpc1JlZ2lzdGVyLCBSZWdpc3RlcklEKiBhcmd1bWVudHMsIFJl
Z2lzdGVySUQqIGZpcnN0RnJlZVJlZ2lzdGVyLCBpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0LCBS
ZWdpc3RlcklEKiBwcm9maWxlSG9va1JlZ2lzdGVyLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlv
biYgZGl2b3RFbmQpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0VGFpbENhbGxWYXJhcmdzKFJl
Z2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgUmVnaXN0ZXJJRCogdGhpc1JlZ2lzdGVy
LCBSZWdpc3RlcklEKiBhcmd1bWVudHMsIFJlZ2lzdGVySUQqIGZpcnN0RnJlZVJlZ2lzdGVyLCBp
bnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0LCBSZWdpc3RlcklEKiBwcm9maWxlSG9va1JlZ2lzdGVy
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZv
dFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAgICAgICAgIGVudW0g
UHJvcGVydHlEZXNjcmlwdG9yT3B0aW9uIHsKICAgICAgICAgICAgIFByb3BlcnR5Q29uZmlndXJh
YmxlID0gMSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Tm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcAppbmRleCBkMzI4Nzc4MjBmYmExNDlkMjQ0NTEyMWNmZTY5MTNiNDA3NTYz
NmZkLi45N2RmMzIxOWM2YmMyMzUzMGFkZmFmOGRlY2U0MGE1Y2FjYTBkZjFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBA
IC0xMTEsNyArMTExLDcgQEAgdm9pZCBDb25zdGFudE5vZGU6OmVtaXRCeXRlY29kZUluQ29uZGl0
aW9uQ29udGV4dChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLAogICAgIC8vIEFsbCBvdGhl
ciBjYXNlcyBhcmUgdW5jb25kaXRpb25hbCBmYWxsLXRocm91Z2hzLCBsaWtlICJpZiAodHJ1ZSki
LgogfQogCi1SZWdpc3RlcklEKiBDb25zdGFudE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCitSZWdpc3RlcklEKiBDb25zdGFu
dE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cklEKiBkc3QsIFRhaWxDYWxsTW9kZSkKIHsKICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25v
cmVkUmVzdWx0KCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTI1LDcgKzEyNSw3IEBAIEpTVmFs
dWUgU3RyaW5nTm9kZTo6anNWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yKSBjb25z
dAogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTnVtYmVyTm9kZSAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJlZ2lzdGVySUQqIE51bWJlck5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3Qp
CitSZWdpc3RlcklEKiBOdW1iZXJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2FsbE1vZGUpCiB7CiAgICAgaWYgKGRz
dCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
QEAgLTEzNCw3ICsxMzQsNyBAQCBSZWdpc3RlcklEKiBOdW1iZXJOb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZAogCiAvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUmVnRXhwTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQogCi1SZWdpc3RlcklEKiBSZWdFeHBOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCog
UmVnRXhwTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlKQogewogICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9y
Lmlnbm9yZWRSZXN1bHQoKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xNDMsNyArMTQzLDcgQEAg
UmVnaXN0ZXJJRCogUmVnRXhwTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGQKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tIFRoaXNOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUmVn
aXN0ZXJJRCogVGhpc05vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKiBkc3QpCitSZWdpc3RlcklEKiBUaGlzTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxN
b2RlKQogewogICAgIGlmIChtX3Nob3VsZEFsd2F5c0VtaXRURFpDaGVjayB8fCBnZW5lcmF0b3Iu
Y29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkKQogICAgICAgICBn
ZW5lcmF0b3IuZW1pdFREWkNoZWNrKGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSk7CkBAIC0xNTks
NyArMTU5LDcgQEAgUmVnaXN0ZXJJRCogVGhpc05vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QKIAogLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tIFN1cGVyTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAKLVJlZ2lzdGVySUQqIFN1cGVyTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK1JlZ2lzdGVySUQqIFN1cGVyTm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQq
IGRzdCwgVGFpbENhbGxNb2RlKQogewogICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRS
ZXN1bHQoKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xODMsNyArMTgzLDcgQEAgc3RhdGljIFJl
Z2lzdGVySUQqIGVtaXRTdXBlckJhc2VGb3JDYWxsZWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvcikKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIE5ld1RhcmdldE5vZGUg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1SZWdpc3RlcklEKiBOZXdUYXJn
ZXROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0
ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCogTmV3VGFyZ2V0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlKQog
ewogICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CkBAIC0xOTgsNyArMTk4LDcgQEAgYm9vbCBSZXNvbHZlTm9kZTo6aXNQdXJl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IpIGNvbnN0CiAgICAgcmV0dXJuIGdlbmVyYXRv
ci52YXJpYWJsZShtX2lkZW50KS5vZmZzZXQoKS5pc1N0YWNrKCk7CiB9CiAKLVJlZ2lzdGVySUQq
IFJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCogUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9k
ZSkKIHsKICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUobV9pZGVudCk7CiAg
ICAgaWYgKFJlZ2lzdGVySUQqIGxvY2FsID0gdmFyLmxvY2FsKCkpIHsKQEAgLTIyMyw3ICsyMjMs
NyBAQCBSZWdpc3RlcklEKiBSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqCiAjaWYgRU5BQkxFKEVTNl9URU1QTEFURV9MSVRF
UkFMX1NZTlRBWCkKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBUZW1wbGF0ZVN0
cmluZ05vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUmVnaXN0ZXJJ
RCogVGVtcGxhdGVTdHJpbmdOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCogVGVtcGxhdGVTdHJpbmdOb2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCog
ZHN0LCBUYWlsQ2FsbE1vZGUpCiB7CiAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJl
c3VsdCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIzMiw3ICsyMzIsNyBAQCBSZWdp
c3RlcklEKiBUZW1wbGF0ZVN0cmluZ05vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZWdpcwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
VGVtcGxhdGVMaXRlcmFsTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
Ci1SZWdpc3RlcklEKiBUZW1wbGF0ZUxpdGVyYWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCogVGVtcGxh
dGVMaXRlcmFsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlKQogewogICAgIGlmICghbV90ZW1wbGF0ZUV4
cHJlc3Npb25zKSB7CiAgICAgICAgIFRlbXBsYXRlU3RyaW5nTm9kZSogdGVtcGxhdGVTdHJpbmcg
PSBtX3RlbXBsYXRlU3RyaW5ncy0+dmFsdWUoKTsKQEAgLTI2OCw3ICsyNjgsNyBAQCBSZWdpc3Rl
cklEKiBUZW1wbGF0ZUxpdGVyYWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gVGFn
Z2VkVGVtcGxhdGVOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJl
Z2lzdGVySUQqIFRhZ2dlZFRlbXBsYXRlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK1JlZ2lzdGVySUQqIFRhZ2dlZFRlbXBs
YXRlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqIGRzdCwgVGFpbENhbGxNb2RlKQogewogICAgIEV4cGVjdGVkRnVuY3Rpb24gZXhwZWN0
ZWRGdW5jdGlvbiA9IE5vRXhwZWN0ZWRGdW5jdGlvbjsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
dGFnID0gbnVsbHB0cjsKQEAgLTMzMCw3ICszMzAsNyBAQCBSZWdpc3RlcklEKiBUYWdnZWRUZW1w
bGF0ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
cwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQXJyYXlOb2RlIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1SZWdpc3RlcklEKiBBcnJheU5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3Qp
CitSZWdpc3RlcklEKiBBcnJheU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSkKIHsKICAgICAvLyBGSVhN
RTogU2hvdWxkIHdlIHB1dCBhbGwgb2YgdGhpcyBjb2RlIGludG8gZW1pdE5ld0FycmF5PwogCkBA
IC00MjAsNyArNDIwLDcgQEAgQXJndW1lbnRMaXN0Tm9kZSogQXJyYXlOb2RlOjp0b0FyZ3VtZW50
TGlzdChQYXJzZXJBcmVuYSYgcGFyc2VyQXJlbmEsIGludCBsaW5lTnUKIAogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tIE9iamVjdExpdGVyYWxOb2RlIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIAotUmVnaXN0ZXJJRCogT2JqZWN0TGl0ZXJhbE5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCitSZWdpc3Rl
cklEKiBPYmplY3RMaXRlcmFsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlKQogewogICAgIGlmICghbV9s
aXN0KSB7CiAgICAgICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKQEAg
LTQzOSw3ICs0MzksNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZW1pdFB1dEhvbWVPYmplY3QoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZgogICAgIGdlbmVyYXRvci5l
bWl0UHV0QnlJZChmdW5jdGlvbiwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5ob21lT2JqZWN0
UHJpdmF0ZU5hbWUsIGhvbWVPYmplY3QpOwogfQogCi1SZWdpc3RlcklEKiBQcm9wZXJ0eUxpc3RO
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJ
RCogZHN0KQorUmVnaXN0ZXJJRCogUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlKQog
ewogICAgIC8vIEZhc3QgY2FzZTogdGhpcyBsb29wIGp1c3QgaGFuZGxlcyByZWd1bGFyIHZhbHVl
IHByb3BlcnRpZXMuCiAgICAgUHJvcGVydHlMaXN0Tm9kZSogcCA9IHRoaXM7CkBAIC01ODQsNyAr
NTg0LDcgQEAgdm9pZCBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0UHV0Q29uc3RhbnRQcm9wZXJ0eShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWcKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tIEJyYWNrZXRBY2Nlc3Nvck5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KIAotUmVnaXN0ZXJJRCogQnJhY2tldEFjY2Vzc29yTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK1JlZ2lzdGVy
SUQqIEJyYWNrZXRBY2Nlc3Nvck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSkKIHsKICAgICBpZiAobV9i
YXNlLT5pc1N1cGVyTm9kZSgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgZ2VuZXJh
dGUgdGhlIHByb2ZpbGVyIGluZm8/CkBAIC02MTUsNyArNjE1LDcgQEAgUmVnaXN0ZXJJRCogQnJh
Y2tldEFjY2Vzc29yTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2kKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIERvdEFjY2Vzc29y
Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1SZWdpc3RlcklEKiBEb3RB
Y2Nlc3Nvck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3RlcklEKiBkc3QpCitSZWdpc3RlcklEKiBEb3RBY2Nlc3Nvck5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxs
TW9kZSkKIHsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IG1fYmFzZS0+aXNTdXBlck5v
ZGUoKSA/IGVtaXRTdXBlckJhc2VGb3JDYWxsZWUoZ2VuZXJhdG9yKSA6IGdlbmVyYXRvci5lbWl0
Tm9kZShtX2Jhc2UpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwg
ZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKQEAgLTYyNyw3ICs2MjcsNyBAQCBSZWdpc3RlcklE
KiBEb3RBY2Nlc3Nvck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcgogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQXJndW1l
bnRMaXN0Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1SZWdpc3RlcklEKiBB
cmd1bWVudExpc3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCogQXJndW1lbnRMaXN0Tm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFp
bENhbGxNb2RlKQogewogICAgIEFTU0VSVChtX2V4cHIpOwogICAgIHJldHVybiBnZW5lcmF0b3Iu
ZW1pdE5vZGUoZHN0LCBtX2V4cHIpOwpAQCAtNjM1LDcgKzYzNSw3IEBAIFJlZ2lzdGVySUQqIEFy
Z3VtZW50TGlzdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBOZXdFeHByTm9k
ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJlZ2lzdGVySUQqIE5ld0V4
cHJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0
ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCogTmV3RXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSkKIHsK
ICAgICBFeHBlY3RlZEZ1bmN0aW9uIGV4cGVjdGVkRnVuY3Rpb247CiAgICAgaWYgKG1fZXhwci0+
aXNSZXNvbHZlTm9kZSgpKQpAQCAtNjc2LDcgKzY3Niw3IEBAIENhbGxBcmd1bWVudHM6OkNhbGxB
cmd1bWVudHMoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgQXJndW1lbnRzTm9kZSogYXJn
dW1lCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFdmFsRnVuY3Rpb25DYWxs
Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJlZ2lzdGVySUQqIEV2
YWxGdW5jdGlvbkNhbGxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCogRXZhbEZ1bmN0aW9uQ2FsbE5vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBk
c3QsIFRhaWxDYWxsTW9kZSkKIHsKICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFi
bGUoZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5ldmFsKTsKICAgICBpZiAoUmVnaXN0ZXJJRCog
bG9jYWwgPSB2YXIubG9jYWwoKSkgewpAQCAtNjk5LDcgKzY5OSw3IEBAIFJlZ2lzdGVySUQqIEV2
YWxGdW5jdGlvbkNhbGxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbkNh
bGxWYWx1ZU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1SZWdpc3Rl
cklEKiBGdW5jdGlvbkNhbGxWYWx1ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCitSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxW
YWx1ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSB0YWlsQ2FsbE1vZGUpCiB7CiAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IGZ1bmMgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9leHByKTsKICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gcmV0dXJuVmFsdWUgPSBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3Qs
IGZ1bmMuZ2V0KCkpOwpAQCAtNzEzLDE0ICs3MTMsMTggQEAgUmVnaXN0ZXJJRCogRnVuY3Rpb25D
YWxsVmFsdWVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmUKICAgICAgICAgcmV0dXJuIHJldDsKICAgICB9CiAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGNh
bGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOwotICAgIFJlZ2lzdGVy
SUQqIHJldCA9IGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgZnVuYy5nZXQo
KSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0
KCksIGRpdm90RW5kKCkpOworICAgIFJlZ2lzdGVySUQqIHJldDsKKyAgICBpZiAodGFpbENhbGxN
b2RlID09IENhbkhhdmVUYWlsQ2FsbHMpCisgICAgICAgIHJldCA9IGdlbmVyYXRvci5lbWl0VGFp
bENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmMuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwg
Y2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICBl
bHNlCisgICAgICAgIHJldCA9IGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwg
ZnVuYy5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBk
aXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUo
cmV0dXJuVmFsdWUuZ2V0KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgcmV0dXJu
IHJldDsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9uQ2Fs
bFJlc29sdmVOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUmVnaXN0
ZXJJRCogRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCitSZWdpc3RlcklEKiBGdW5jdGlvbkNh
bGxSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlIHRhaWxDYWxsTW9kZSkKIHsKICAgICBFeHBl
Y3RlZEZ1bmN0aW9uIGV4cGVjdGVkRnVuY3Rpb24gPSBnZW5lcmF0b3IuZXhwZWN0ZWRGdW5jdGlv
bkZvcklkZW50aWZpZXIobV9pZGVudCk7CiAKQEAgLTczMyw3ICs3MzcsMTEgQEAgUmVnaXN0ZXJJ
RCogRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLAogICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQoY2FsbEFyZ3VtZW50cy50
aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7CiAgICAgICAgIC8vIFRoaXMgcGFzc2VzIE5v
RXhwZWN0ZWRGdW5jdGlvbiBiZWNhdXNlIHdlIGV4cGVjdCB0aGF0IGlmIHRoZSBmdW5jdGlvbiBp
cyBpbiBhCiAgICAgICAgIC8vIGxvY2FsIHZhcmlhYmxlLCB0aGVuIGl0J3Mgbm90IG9uZSBvZiBv
dXIgYnVpbHQtaW4gY29uc3RydWN0b3JzLgotICAgICAgICBSZWdpc3RlcklEKiByZXQgPSBnZW5l
cmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmMuZ2V0KCksIE5vRXhwZWN0ZWRG
dW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgp
KTsKKyAgICAgICAgUmVnaXN0ZXJJRCogcmV0OworICAgICAgICBpZiAodGFpbENhbGxNb2RlID09
IENhbkhhdmVUYWlsQ2FsbHMpCisgICAgICAgICAgICByZXQgPSBnZW5lcmF0b3IuZW1pdFRhaWxD
YWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNh
bGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHJldCA9IGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5n
ZXQoKSwgZnVuYy5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZv
dCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdFBy
b2ZpbGVUeXBlKHJldHVyblZhbHVlLmdldCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwog
ICAgICAgICByZXR1cm4gcmV0OwogICAgIH0KQEAgLTc0OSwxNCArNzU3LDE4IEBAIFJlZ2lzdGVy
SUQqIEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUoY2FsbEFy
Z3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgdmFyKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGcm9t
U2NvcGUoZnVuYy5nZXQoKSwgY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgdmFyLCBUaHJv
d0lmTm90Rm91bmQpOwogICAgIGdlbmVyYXRvci5lbWl0VERaQ2hlY2tJZk5lY2Vzc2FyeSh2YXIs
IGZ1bmMuZ2V0KCksIG51bGxwdHIpOwotICAgIFJlZ2lzdGVySUQqIHJldCA9IGdlbmVyYXRvci5l
bWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgZnVuYy5nZXQoKSwgZXhwZWN0ZWRGdW5jdGlvbiwg
Y2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICBS
ZWdpc3RlcklEKiByZXQ7CisgICAgaWYgKHRhaWxDYWxsTW9kZSA9PSBDYW5IYXZlVGFpbENhbGxz
KQorICAgICAgICByZXQgPSBnZW5lcmF0b3IuZW1pdFRhaWxDYWxsKHJldHVyblZhbHVlLmdldCgp
LCBmdW5jLmdldCgpLCBleHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBk
aXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgIGVsc2UKKyAgICAgICAgcmV0ID0gZ2VuZXJh
dG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jLmdldCgpLCBleHBlY3RlZEZ1bmN0
aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwog
ICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocmV0dXJuVmFsdWUuZ2V0KCksIGRpdm90U3Rh
cnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgcmV0dXJuIHJldDsKIH0KIAogLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tIEJ5dGVjb2RlSW50cmluc2ljTm9kZSAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRz
dCkKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlKQog
ewogICAgIHJldHVybiAodGhpcy0+Km1fZW1pdHRlcikoZ2VuZXJhdG9yLCBkc3QpOwogfQpAQCAt
Nzg2LDcgKzc5OCw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9p
bnRyaW5zaWNfdG9TdHJpbmcoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlCiAKIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZSAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJlZ2lzdGVySUQqIEZ1bmN0aW9uQ2FsbEJyYWNrZXRO
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJ
RCogZHN0KQorUmVnaXN0ZXJJRCogRnVuY3Rpb25DYWxsQnJhY2tldE5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxs
TW9kZSB0YWlsQ2FsbE1vZGUpCiB7CiAgICAgYm9vbCBiYXNlSXNTdXBlciA9IG1fYmFzZS0+aXNT
dXBlck5vZGUoKTsKICAgICBib29sIHN1YnNjcmlwdElzU3RyaW5nID0gbV9zdWJzY3JpcHQtPmlz
U3RyaW5nKCk7CkBAIC04MTcsMTQgKzgyOSwxOCBAQCBSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxC
cmFja2V0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsCiAg
ICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBn
ZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCkpOwogICAgIGVsc2UKICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRNb3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGJhc2UuZ2V0KCkpOwotICAgIFJl
Z2lzdGVySUQqIHJldCA9IGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgZnVu
Y3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwg
ZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICBSZWdpc3RlcklEKiByZXQ7CisgICAgaWYg
KHRhaWxDYWxsTW9kZSA9PSBDYW5IYXZlVGFpbENhbGxzKQorICAgICAgICByZXQgPSBnZW5lcmF0
b3IuZW1pdFRhaWxDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBl
Y3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90
RW5kKCkpOworICAgIGVsc2UKKyAgICAgICAgcmV0ID0gZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVy
blZhbHVlLmdldCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJn
dW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIGdlbmVyYXRv
ci5lbWl0UHJvZmlsZVR5cGUocmV0dXJuVmFsdWUuZ2V0KCksIGRpdm90U3RhcnQoKSwgZGl2b3RF
bmQoKSk7CiAgICAgcmV0dXJuIHJldDsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tIEZ1bmN0aW9uQ2FsbERvdE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogCi1SZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCog
RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlIHRhaWxDYWxsTW9kZSkKIHsKICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gZnVuY3Rpb24gPSBnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9u
KGRzdCk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVyblZhbHVlID0gZ2VuZXJhdG9yLmZp
bmFsRGVzdGluYXRpb24oZHN0LCBmdW5jdGlvbi5nZXQoKSk7CkBAIC04MzYsMTIgKzg1MiwxNiBA
QCBSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaQogICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2Fs
bEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgbV9iYXNlKTsKICAgICBnZW5lcmF0b3IuZW1pdEV4
cHJlc3Npb25JbmZvKHN1YmV4cHJlc3Npb25EaXZvdCgpLCBzdWJleHByZXNzaW9uU3RhcnQoKSwg
c3ViZXhwcmVzc2lvbkVuZCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZnVuY3Rpb24u
Z2V0KCksIGJhc2VJc1N1cGVyID8gZW1pdFN1cGVyQmFzZUZvckNhbGxlZShnZW5lcmF0b3IpIDog
Y2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgbV9pZGVudCk7Ci0gICAgUmVnaXN0ZXJJRCog
cmV0ID0gZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlvbi5nZXQo
KSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0
KCksIGRpdm90RW5kKCkpOworICAgIFJlZ2lzdGVySUQqIHJldDsKKyAgICBpZiAodGFpbENhbGxN
b2RlID09IENhbkhhdmVUYWlsQ2FsbHMpCisgICAgICAgIHJldCA9IGdlbmVyYXRvci5lbWl0VGFp
bENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rp
b24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Cisg
ICAgZWxzZQorICAgICAgICByZXQgPSBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0
KCksIGZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRp
dm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9m
aWxlVHlwZShyZXR1cm5WYWx1ZS5nZXQoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAg
ICByZXR1cm4gcmV0OwogfQogCi1SZWdpc3RlcklEKiBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRz
dCkKK1JlZ2lzdGVySUQqIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2FsbE1vZGUg
dGFpbENhbGxNb2RlKQogewogICAgIFJlZlB0cjxMYWJlbD4gcmVhbENhbGwgPSBnZW5lcmF0b3Iu
bmV3TGFiZWwoKTsKICAgICBSZWZQdHI8TGFiZWw+IGVuZCA9IGdlbmVyYXRvci5uZXdMYWJlbCgp
OwpAQCAtODY1LDcgKzg4NSwxMCBAQCBSZWdpc3RlcklEKiBDYWxsRnVuY3Rpb25DYWxsRG90Tm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsCiAgICAgICAgICAg
ICBhcmd1bWVudHNSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0Tm9kZShzdWJqZWN0KTsKICAgICAg
ICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oc3ByZWFkLT5kaXZvdCgpLCBzcHJl
YWQtPmRpdm90U3RhcnQoKSwgc3ByZWFkLT5kaXZvdEVuZCgpKTsKICAgICAgICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiB0aGlzUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdEdldEJ5VmFsKGdlbmVy
YXRvci5uZXdUZW1wb3JhcnkoKSwgYXJndW1lbnRzUmVnaXN0ZXIuZ2V0KCksIGdlbmVyYXRvci5l
bWl0TG9hZCgwLCBqc051bWJlcigwKSkpOwotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxs
VmFyYXJncyhyZXR1cm5WYWx1ZS5nZXQoKSwgYmFzZS5nZXQoKSwgdGhpc1JlZ2lzdGVyLmdldCgp
LCBhcmd1bWVudHNSZWdpc3Rlci5nZXQoKSwgZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCAxLCBw
cm9maWxlSG9va1JlZ2lzdGVyLmdldCgpLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5k
KCkpOworICAgICAgICAgICAgaWYgKHRhaWxDYWxsTW9kZSA9PSBDYW5IYXZlVGFpbENhbGxzKQor
ICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0VGFpbENhbGxWYXJhcmdzKHJldHVyblZhbHVl
LmdldCgpLCBiYXNlLmdldCgpLCB0aGlzUmVnaXN0ZXIuZ2V0KCksIGFyZ3VtZW50c1JlZ2lzdGVy
LmdldCgpLCBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIDEsIHByb2ZpbGVIb29rUmVnaXN0ZXIu
Z2V0KCksIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsVmFyYXJncyhyZXR1cm5WYWx1
ZS5nZXQoKSwgYmFzZS5nZXQoKSwgdGhpc1JlZ2lzdGVyLmdldCgpLCBhcmd1bWVudHNSZWdpc3Rl
ci5nZXQoKSwgZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCAxLCBwcm9maWxlSG9va1JlZ2lzdGVy
LmdldCgpLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICB9IGVs
c2UgaWYgKG1fYXJncy0+bV9saXN0Tm9kZSAmJiBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fZXhwcikg
ewogICAgICAgICAgICAgQXJndW1lbnRMaXN0Tm9kZSogb2xkTGlzdCA9IG1fYXJncy0+bV9saXN0
Tm9kZTsKICAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IG1fYXJncy0+bV9saXN0Tm9k
ZS0+bV9uZXh0OwpAQCAtODczLDEzICs4OTYsMTkgQEAgUmVnaXN0ZXJJRCogQ2FsbEZ1bmN0aW9u
Q2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLAog
ICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5l
bWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwogICAg
ICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsK
ICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3Rl
cigpLCBvbGRMaXN0LT5tX2V4cHIpOwotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJl
dHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwg
Y2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAg
ICAgICAgIGlmICh0YWlsQ2FsbE1vZGUgPT0gQ2FuSGF2ZVRhaWxDYWxscykKKyAgICAgICAgICAg
ICAgICBnZW5lcmF0b3IuZW1pdFRhaWxDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rp
b24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2
b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQo
KSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0
KCksIGRpdm90RW5kKCkpOwogICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gb2xkTGlz
dDsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWFs
RnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihk
c3QpLCBiYXNlLmdldCgpKTsKICAgICAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50
cyhnZW5lcmF0b3IsIG1fYXJncyk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQoY2Fs
bEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7Ci0gICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwg
Tm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCks
IGRpdm90RW5kKCkpOworICAgICAgICAgICAgaWYgKHRhaWxDYWxsTW9kZSA9PSBDYW5IYXZlVGFp
bENhbGxzKQorICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0VGFpbENhbGwocmV0dXJuVmFs
dWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJn
dW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQo
KSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMs
IGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgIH0KICAgICB9CiAg
ICAgaWYgKGVtaXRDYWxsQ2hlY2spIHsKQEAgLTg4OCw3ICs5MTcsMTAgQEAgUmVnaXN0ZXJJRCog
Q2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLAogICAgICAgICB7CiAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1
bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3Zl
KGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGJhc2UuZ2V0KCkpOwotICAgICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9F
eHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRp
dm90RW5kKCkpOworICAgICAgICAgICAgaWYgKHRhaWxDYWxsTW9kZSA9PSBDYW5IYXZlVGFpbENh
bGxzKQorICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0VGFpbENhbGwocmV0dXJuVmFsdWUu
Z2V0KCksIGZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMs
IGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5j
dGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBk
aXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICB9CiAgICAgICAgIGdlbmVyYXRvci5l
bWl0TGFiZWwoZW5kLmdldCgpKTsKICAgICB9CkBAIC05MDIsNyArOTM0LDcgQEAgc3RhdGljIGJv
b2wgYXJlVHJpdmlhbEFwcGx5QXJndW1lbnRzKEFyZ3VtZW50c05vZGUqIGFyZ3MpCiAgICAgICAg
IHx8ICghYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5tX25leHQgJiYgYXJncy0+bV9saXN0Tm9k
ZS0+bV9uZXh0LT5tX2V4cHItPmlzU2ltcGxlQXJyYXkoKSk7CiB9CiAKLVJlZ2lzdGVySUQqIEFw
cGx5RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK1JlZ2lzdGVySUQqIEFwcGx5RnVuY3Rpb25DYWxs
RG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqIGRzdCwgVGFpbENhbGxNb2RlIHRhaWxDYWxsTW9kZSkKIHsKICAgICAvLyBBIGZldyBz
aW1wbGUgY2FzZXMgY2FuIGJlIHRyaXZpYWxseSBoYW5kbGVkIGFzIG9yZGluYXJ5IGZ1bmN0aW9u
IGNhbGxzLgogICAgIC8vIGZ1bmN0aW9uLmFwcGx5KCksIGZ1bmN0aW9uLmFwcGx5KGFyZykgLT4g
aWRlbnRpY2FsIHRvIGZ1bmN0aW9uLmNhbGwKQEAgLTk1MSw3ICs5ODMsMTAgQEAgUmVnaXN0ZXJJ
RCogQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwKICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChl
bmQuZ2V0KCkpOwogICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRFbnVtZXJhdGlvbih0aGlzLCBzcHJlYWQtPmV4cHJlc3Npb24oKSwgZXh0cmFjdG9yKTsK
LSAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGxWYXJhcmdzKHJldHVyblZhbHVlLmdl
dCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIHRoaXNSZWdpc3Rlci5nZXQoKSwgYXJndW1lbnRzUmVn
aXN0ZXIuZ2V0KCksIGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgMCwgcHJvZmlsZUhvb2tSZWdp
c3Rlci5nZXQoKSwgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAg
ICAgICAgICBpZiAodGFpbENhbGxNb2RlID09IENhbkhhdmVUYWlsQ2FsbHMpCisgICAgICAgICAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0VGFpbENhbGxWYXJhcmdzKHJldHVyblZhbHVlLmdldCgp
LCByZWFsRnVuY3Rpb24uZ2V0KCksIHRoaXNSZWdpc3Rlci5nZXQoKSwgYXJndW1lbnRzUmVnaXN0
ZXIuZ2V0KCksIGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgMCwgcHJvZmlsZUhvb2tSZWdpc3Rl
ci5nZXQoKSwgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbFZhcmFyZ3Mo
cmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgdGhpc1JlZ2lzdGVyLmdldCgp
LCBhcmd1bWVudHNSZWdpc3Rlci5nZXQoKSwgZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCAwLCBw
cm9maWxlSG9va1JlZ2lzdGVyLmdldCgpLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5k
KCkpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dCkg
ewogICAgICAgICAgICAgICAgIEFTU0VSVChtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9l
eHByLT5pc1NpbXBsZUFycmF5KCkpOwogICAgICAgICAgICAgICAgIEFTU0VSVCghbV9hcmdzLT5t
X2xpc3ROb2RlLT5tX25leHQtPm1fbmV4dCk7CkBAIC05NTksMjAgKzk5NCwyOSBAQCBSZWdpc3Rl
cklEKiBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLAogICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWFs
RnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihk
c3QpLCBiYXNlLmdldCgpKTsKICAgICAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1
bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwogICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRMaXN0LT5tX2V4cHIpOwotICAg
ICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1
bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCks
IGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgICAgICAgICAgaWYgKHRhaWxDYWxs
TW9kZSA9PSBDYW5IYXZlVGFpbENhbGxzKQorICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdFRhaWxDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhw
ZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZv
dEVuZCgpKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4
cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2
b3RFbmQoKSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIG1fYXJncy0+
bV9saXN0Tm9kZSA9IG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0OwogICAgICAgICAgICAgICAg
IFJlZlB0cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2Vu
ZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsKICAgICAgICAgICAgICAg
ICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwogICAgICAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3Rlcigp
LCBvbGRMaXN0LT5tX2V4cHIpOwotICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChy
ZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24s
IGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAg
ICAgICAgICAgICAgaWYgKHRhaWxDYWxsTW9kZSA9PSBDYW5IYXZlVGFpbENhbGxzKQorICAgICAg
ICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFRhaWxDYWxsKHJldHVyblZhbHVlLmdldCgpLCBy
ZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2
b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwg
cmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRp
dm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBvbGRMaXN0OwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0
TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwogICAgICAg
ICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3Rlcigp
LCBqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5W
YWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxB
cmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgICAg
ICBpZiAodGFpbENhbGxNb2RlID09IENhbkhhdmVUYWlsQ2FsbHMpCisgICAgICAgICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRUYWlsQ2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdl
dCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3Rh
cnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5v
RXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBk
aXZvdEVuZCgpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVChtX2Fy
Z3MtPm1fbGlzdE5vZGUgJiYgbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQpOwpAQCAtOTkwLDE0
ICsxMDM0LDIwIEBAIFJlZ2lzdGVySUQqIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsCiAgICAgICAgIHdoaWxlICgoYXJn
cyA9IGFyZ3MtPm1fbmV4dCkpCiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoYXJncy0+
bV9leHByKTsKIAotICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGxWYXJhcmdzKHJldHVyblZhbHVl
LmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIHRoaXNSZWdpc3Rlci5nZXQoKSwgYXJnc1JlZ2lz
dGVyLmdldCgpLCBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIDAsIHByb2ZpbGVIb29rUmVnaXN0
ZXIuZ2V0KCksIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgIGlm
ICh0YWlsQ2FsbE1vZGUgPT0gQ2FuSGF2ZVRhaWxDYWxscykKKyAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0VGFpbENhbGxWYXJhcmdzKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0
KCksIHRoaXNSZWdpc3Rlci5nZXQoKSwgYXJnc1JlZ2lzdGVyLmdldCgpLCBnZW5lcmF0b3IubmV3
VGVtcG9yYXJ5KCksIDAsIHByb2ZpbGVIb29rUmVnaXN0ZXIuZ2V0KCksIGRpdm90KCksIGRpdm90
U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0Q2FsbFZhcmFyZ3MocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwg
dGhpc1JlZ2lzdGVyLmdldCgpLCBhcmdzUmVnaXN0ZXIuZ2V0KCksIGdlbmVyYXRvci5uZXdUZW1w
b3JhcnkoKSwgMCwgcHJvZmlsZUhvb2tSZWdpc3Rlci5nZXQoKSwgZGl2b3QoKSwgZGl2b3RTdGFy
dCgpLCBkaXZvdEVuZCgpKTsKICAgICB9CiAgICAgaWYgKGVtaXRDYWxsQ2hlY2spIHsKICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGVuZC5nZXQoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0
TGFiZWwocmVhbENhbGwuZ2V0KCkpOwogICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVu
dHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdE1vdmUoY2FsbEFy
Z3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgYmFzZS5nZXQoKSk7Ci0gICAgICAgIGdlbmVyYXRvci5l
bWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgZnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5j
dGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsK
KyAgICAgICAgaWYgKHRhaWxDYWxsTW9kZSA9PSBDYW5IYXZlVGFpbENhbGxzKQorICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRUYWlsQ2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgZnVuY3Rpb24uZ2V0
KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFy
dCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0
aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwog
ICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGVuZC5nZXQoKSk7CiAgICAgfQogICAgIGdlbmVy
YXRvci5lbWl0UHJvZmlsZVR5cGUocmV0dXJuVmFsdWUuZ2V0KCksIGRpdm90U3RhcnQoKSwgZGl2
b3RFbmQoKSk7CkBAIC0xMTAzLDcgKzExNTMsNyBAQCBSZWdpc3RlcklEKiBQb3N0Zml4Tm9kZTo6
ZW1pdERvdChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAg
ICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwgb2xkVmFs
dWUpOwogfQogCi1SZWdpc3RlcklEKiBQb3N0Zml4Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK1JlZ2lzdGVySUQqIFBvc3Rm
aXhOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0
ZXJJRCogZHN0LCBUYWlsQ2FsbE1vZGUpCiB7CiAgICAgaWYgKG1fZXhwci0+aXNSZXNvbHZlTm9k
ZSgpKQogICAgICAgICByZXR1cm4gZW1pdFJlc29sdmUoZ2VuZXJhdG9yLCBkc3QpOwpAQCAtMTEy
MSw3ICsxMTcxLDcgQEAgUmVnaXN0ZXJJRCogUG9zdGZpeE5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKgogCiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0gRGVsZXRlUmVzb2x2ZU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KIAotUmVnaXN0ZXJJRCogRGVsZXRlUmVzb2x2ZU5vZGU6OmVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCitSZWdp
c3RlcklEKiBEZWxldGVSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlKQogewogICAgIFZhcmlh
YmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShtX2lkZW50KTsKICAgICBpZiAodmFyLmxvY2Fs
KCkpIHsKQEAgLTExMzcsNyArMTE4Nyw3IEBAIFJlZ2lzdGVySUQqIERlbGV0ZVJlc29sdmVOb2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0CiAKIC8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBEZWxldGVCcmFja2V0Tm9kZSAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1SZWdpc3RlcklEKiBEZWxldGVCcmFja2V0
Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVy
SUQqIGRzdCkKK1JlZ2lzdGVySUQqIERlbGV0ZUJyYWNrZXROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2FsbE1vZGUp
CiB7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHIwID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fYmFz
ZSk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHIxID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fc3Vi
c2NyaXB0KTsKQEAgLTExNTAsNyArMTIwMCw3IEBAIFJlZ2lzdGVySUQqIERlbGV0ZUJyYWNrZXRO
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0CiAK
IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBEZWxldGVEb3ROb2RlIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJlZ2lzdGVySUQqIERlbGV0ZURvdE5vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBk
c3QpCitSZWdpc3RlcklEKiBEZWxldGVEb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2FsbE1vZGUpCiB7CiAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHIwID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fYmFzZSk7CiAKQEAg
LTExNjIsNyArMTIxMiw3IEBAIFJlZ2lzdGVySUQqIERlbGV0ZURvdE5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklECiAKIC8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBEZWxldGVWYWx1ZU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIAotUmVnaXN0ZXJJRCogRGVsZXRlVmFsdWVOb2RlOjplbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQorUmVn
aXN0ZXJJRCogRGVsZXRlVmFsdWVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2FsbE1vZGUpCiB7CiAgICAgZ2VuZXJh
dG9yLmVtaXROb2RlKGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCksIG1fZXhwcik7CiAKQEAgLTEx
NzIsNyArMTIyMiw3IEBAIFJlZ2lzdGVySUQqIERlbGV0ZVZhbHVlTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVyCiAKIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSBWb2lkTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiAKLVJlZ2lzdGVySUQqIFZvaWROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCogVm9pZE5v
ZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklE
KiBkc3QsIFRhaWxDYWxsTW9kZSkKIHsKICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVk
UmVzdWx0KCkpIHsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGdlbmVyYXRvci5pZ25vcmVk
UmVzdWx0KCksIG1fZXhwcik7CkBAIC0xMTg0LDcgKzEyMzQsNyBAQCBSZWdpc3RlcklEKiBWb2lk
Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVy
SUQqIGRzdAogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gVHlwZU9mUmVzb2x2
ZU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUmVnaXN0ZXJJRCog
VHlwZU9mUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKiBkc3QpCitSZWdpc3RlcklEKiBUeXBlT2ZSZXNvbHZlTm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwg
VGFpbENhbGxNb2RlKQogewogICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZSht
X2lkZW50KTsKICAgICBpZiAoUmVnaXN0ZXJJRCogbG9jYWwgPSB2YXIubG9jYWwoKSkgewpAQCAt
MTIwNCw3ICsxMjU0LDcgQEAgUmVnaXN0ZXJJRCogVHlwZU9mUmVzb2x2ZU5vZGU6OmVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3QKIAogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tIFR5cGVPZlZhbHVlTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQogCi1SZWdpc3RlcklEKiBUeXBlT2ZWYWx1ZU5vZGU6OmVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCitSZWdp
c3RlcklEKiBUeXBlT2ZWYWx1ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSkKIHsKICAgICBpZiAoZHN0
ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpIHsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRO
b2RlKGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCksIG1fZXhwcik7CkBAIC0xMjk4LDcgKzEzNDgs
NyBAQCBSZWdpc3RlcklEKiBQcmVmaXhOb2RlOjplbWl0RG90KEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rl
c3RpbmF0aW9uSWZOZWVkZWQoZHN0LCBwcm9wRHN0LmdldCgpKTsKIH0KIAotUmVnaXN0ZXJJRCog
UHJlZml4Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqIGRzdCkKK1JlZ2lzdGVySUQqIFByZWZpeE5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSkK
IHsKICAgICBpZiAobV9leHByLT5pc1Jlc29sdmVOb2RlKCkpCiAgICAgICAgIHJldHVybiBlbWl0
UmVzb2x2ZShnZW5lcmF0b3IsIGRzdCk7CkBAIC0xMzE2LDcgKzEzNjYsNyBAQCBSZWdpc3RlcklE
KiBQcmVmaXhOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogZAogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gVW5hcnkg
T3BlcmF0aW9uIE5vZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJl
Z2lzdGVySUQqIFVuYXJ5T3BOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCogVW5hcnlPcE5vZGU6OmVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRh
aWxDYWxsTW9kZSkKIHsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3JjID0gZ2VuZXJhdG9yLmVt
aXROb2RlKG1fZXhwcik7CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhwb3NpdGlv
bigpLCBwb3NpdGlvbigpLCBwb3NpdGlvbigpKTsKQEAgLTEzMjUsNyArMTM3NSw3IEBAIFJlZ2lz
dGVySUQqIFVuYXJ5T3BOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCoKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEJp
dHdpc2VOb3ROb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgCi1SZWdp
c3RlcklEKiBCaXR3aXNlTm90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK1JlZ2lzdGVySUQqIEJpdHdpc2VOb3ROb2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0
LCBUYWlsQ2FsbE1vZGUpCiB7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNyYzIgPSBnZW5lcmF0
b3IuZW1pdExvYWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBqc051bWJlcigtMSkpOwogICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBzcmMxID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fZXhwcik7CkBA
IC0xNTE4LDcgKzE1NjgsNyBAQCB2b2lkIEJpbmFyeU9wTm9kZTo6dHJ5Rm9sZFRvQnJhbmNoKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFRyaVN0YXRlJiBicmFuYwogICAgICAgICBicmFu
Y2hDb25kaXRpb24gPSB0cmlTdGF0ZSghdmFsdWUucHVyZVRvQm9vbGVhbigpKTsKIH0KIAotUmVn
aXN0ZXJJRCogQmluYXJ5T3BOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCogQmluYXJ5T3BOb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBU
YWlsQ2FsbE1vZGUpCiB7CiAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSB0aGlzLT5vcGNvZGVJRCgp
OwogCkBAIC0xNTYyLDcgKzE2MTIsNyBAQCBSZWdpc3RlcklEKiBCaW5hcnlPcE5vZGU6OmVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKgogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKLVJlZ2lzdGVySUQqIEVxdWFsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK1JlZ2lzdGVySUQq
IEVxdWFsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlKQogewogICAgIGlmIChtX2V4cHIxLT5pc051bGwo
KSB8fCBtX2V4cHIyLT5pc051bGwoKSkgewogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3Jj
ID0gZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpOwpAQCAtMTU4MCw3ICsxNjMwLDcgQEAg
UmVnaXN0ZXJJRCogRXF1YWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXN0ZXJJRCogZHMKICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRFcXVhbGl0
eU9wKG9wX2VxLCBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIHNyYzEuZ2V0KCkpLCBz
cmMxLmdldCgpLCBzcmMyLmdldCgpKTsKIH0KIAotUmVnaXN0ZXJJRCogU3RyaWN0RXF1YWxOb2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCog
ZHN0KQorUmVnaXN0ZXJJRCogU3RyaWN0RXF1YWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2FsbE1vZGUpCiB7CiAg
ICAgRXhwcmVzc2lvbk5vZGUqIGxlZnQgPSBtX2V4cHIxOwogICAgIEV4cHJlc3Npb25Ob2RlKiBy
aWdodCA9IG1fZXhwcjI7CkBAIC0xNTkyLDcgKzE2NDIsNyBAQCBSZWdpc3RlcklEKiBTdHJpY3RF
cXVhbE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcgogICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEVxdWFsaXR5T3Aob3Bfc3RyaWN0ZXEsIGdl
bmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgc3JjMS5nZXQoKSksIHNyYzEuZ2V0KCksIHNy
YzIuZ2V0KCkpOwogfQogCi1SZWdpc3RlcklEKiBUaHJvd2FibGVCaW5hcnlPcE5vZGU6OmVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCitS
ZWdpc3RlcklEKiBUaHJvd2FibGVCaW5hcnlPcE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSkKIHsKICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3JjMSA9IGdlbmVyYXRvci5lbWl0Tm9kZUZvckxlZnRIYW5k
U2lkZShtX2V4cHIxLCBtX3JpZ2h0SGFzQXNzaWdubWVudHMsIG1fZXhwcjItPmlzUHVyZShnZW5l
cmF0b3IpKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3JjMiA9IGdlbmVyYXRvci5lbWl0Tm9k
ZShtX2V4cHIyKTsKQEAgLTE2MDAsNyArMTY1MCw3IEBAIFJlZ2lzdGVySUQqIFRocm93YWJsZUJp
bmFyeU9wTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
CiAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0QmluYXJ5T3Aob3Bjb2RlSUQoKSwgZ2VuZXJhdG9y
LmZpbmFsRGVzdGluYXRpb24oZHN0LCBzcmMxLmdldCgpKSwgc3JjMS5nZXQoKSwgc3JjMi5nZXQo
KSwgT3BlcmFuZFR5cGVzKG1fZXhwcjEtPnJlc3VsdERlc2NyaXB0b3IoKSwgbV9leHByMi0+cmVz
dWx0RGVzY3JpcHRvcigpKSk7CiB9CiAKLVJlZ2lzdGVySUQqIEluc3RhbmNlT2ZOb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQor
UmVnaXN0ZXJJRCogSW5zdGFuY2VPZk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSkKIHsKICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gc3JjMSA9IGdlbmVyYXRvci5lbWl0Tm9kZUZvckxlZnRIYW5kU2lkZSht
X2V4cHIxLCBtX3JpZ2h0SGFzQXNzaWdubWVudHMsIG1fZXhwcjItPmlzUHVyZShnZW5lcmF0b3Ip
KTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3JjMiA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2V4
cHIyKTsKQEAgLTE2MjIsNyArMTY3Miw3IEBAIFJlZ2lzdGVySUQqIEluc3RhbmNlT2ZOb2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJCiAKIC8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBMb2dpY2FsT3BOb2RlIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIAotUmVnaXN0ZXJJRCogTG9naWNhbE9wTm9kZTo6ZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK1JlZ2lz
dGVySUQqIExvZ2ljYWxPcE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSB0YWlsQ2FsbE1vZGUpCiB7CiAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRlbXAgPSBnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRz
dCk7CiAgICAgUmVmUHRyPExhYmVsPiB0YXJnZXQgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKQEAg
LTE2MzIsNyArMTY4Miw3IEBAIFJlZ2lzdGVySUQqIExvZ2ljYWxPcE5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklECiAgICAgICAgIGdlbmVy
YXRvci5lbWl0SnVtcElmRmFsc2UodGVtcC5nZXQoKSwgdGFyZ2V0LmdldCgpKTsKICAgICBlbHNl
CiAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1ZSh0ZW1wLmdldCgpLCB0YXJnZXQuZ2V0
KCkpOwotICAgIGdlbmVyYXRvci5lbWl0Tm9kZSh0ZW1wLmdldCgpLCBtX2V4cHIyKTsKKyAgICBn
ZW5lcmF0b3IuZW1pdE5vZGUodGVtcC5nZXQoKSwgbV9leHByMiwgdGFpbENhbGxNb2RlKTsKICAg
ICBnZW5lcmF0b3IuZW1pdExhYmVsKHRhcmdldC5nZXQoKSk7CiAKICAgICByZXR1cm4gZ2VuZXJh
dG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZHN0LCB0ZW1wLmdldCgpKTsKQEAgLTE2NTIs
NyArMTcwMiw3IEBAIHZvaWQgTG9naWNhbE9wTm9kZTo6ZW1pdEJ5dGVjb2RlSW5Db25kaXRpb25D
b250ZXh0KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsCiAKIC8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSBDb25kaXRpb25hbE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAKLVJlZ2lzdGVySUQqIENvbmRpdGlvbmFsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK1JlZ2lzdGVySUQqIENv
bmRpdGlvbmFsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlIHRhaWxDYWxsTW9kZSkKIHsKICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gbmV3RHN0ID0gZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KTsK
ICAgICBSZWZQdHI8TGFiZWw+IGJlZm9yZUVsc2UgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKQEAg
LTE2NjMsMTIgKzE3MTMsMTIgQEAgUmVnaXN0ZXJJRCogQ29uZGl0aW9uYWxOb2RlOjplbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXIKICAgICBnZW5lcmF0
b3IuZW1pdExhYmVsKGJlZm9yZVRoZW4uZ2V0KCkpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9m
aWxlQ29udHJvbEZsb3cobV9leHByMS0+c3RhcnRPZmZzZXQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVt
aXROb2RlKG5ld0RzdC5nZXQoKSwgbV9leHByMSk7CisgICAgZ2VuZXJhdG9yLmVtaXROb2RlKG5l
d0RzdC5nZXQoKSwgbV9leHByMSwgdGFpbENhbGxNb2RlKTsKICAgICBnZW5lcmF0b3IuZW1pdEp1
bXAoYWZ0ZXJFbHNlLmdldCgpKTsKIAogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoYmVmb3JlRWxz
ZS5nZXQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlQ29udHJvbEZsb3cobV9leHByMS0+
ZW5kT2Zmc2V0KCkgKyAxKTsKLSAgICBnZW5lcmF0b3IuZW1pdE5vZGUobmV3RHN0LmdldCgpLCBt
X2V4cHIyKTsKKyAgICBnZW5lcmF0b3IuZW1pdE5vZGUobmV3RHN0LmdldCgpLCBtX2V4cHIyLCB0
YWlsQ2FsbE1vZGUpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChhZnRlckVsc2UuZ2V0KCkp
OwogCkBAIC0xNzM2LDcgKzE3ODYsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBSZWdpc3RlcklE
KiBlbWl0UmVhZE1vZGlmeUFzc2lnbm1lbnQoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbgogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKLVJlZ2lzdGVySUQqIFJlYWRNb2RpZnlSZXNvbHZlTm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkK
K1JlZ2lzdGVySUQqIFJlYWRNb2RpZnlSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlKQogewog
ICAgIEpTVGV4dFBvc2l0aW9uIG5ld0Rpdm90ID0gZGl2b3RTdGFydCgpICsgbV9pZGVudC5sZW5n
dGgoKTsKICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUobV9pZGVudCk7CkBA
IC0xNzg1LDcgKzE4MzUsNyBAQCBSZWdpc3RlcklEKiBSZWFkTW9kaWZ5UmVzb2x2ZU5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZQogCiAvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQXNzaWduUmVzb2x2ZU5vZGUgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUmVnaXN0ZXJJRCogQXNzaWduUmVzb2x2ZU5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3Qp
CitSZWdpc3RlcklEKiBBc3NpZ25SZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlKQogewogICAg
IFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShtX2lkZW50KTsKICAgICBib29sIGlz
UmVhZE9ubHkgPSB2YXIuaXNSZWFkT25seSgpICYmIG1fYXNzaWdubWVudENvbnRleHQgIT0gQXNz
aWdubWVudENvbnRleHQ6OkNvbnN0RGVjbGFyYXRpb25TdGF0ZW1lbnQ7CkBAIC0xODQ1LDcgKzE4
OTUsNyBAQCBSZWdpc3RlcklEKiBBc3NpZ25SZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdAogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0gQXNzaWduRG90Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogCi1SZWdpc3RlcklEKiBBc3NpZ25Eb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCogQXNzaWdu
RG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqIGRzdCwgVGFpbENhbGxNb2RlKQogewogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNl
ID0gZ2VuZXJhdG9yLmVtaXROb2RlRm9yTGVmdEhhbmRTaWRlKG1fYmFzZSwgbV9yaWdodEhhc0Fz
c2lnbm1lbnRzLCBtX3JpZ2h0LT5pc1B1cmUoZ2VuZXJhdG9yKSk7CiAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmRlc3RpbmF0aW9uRm9yQXNzaWduUmVzdWx0KGRzdCk7
CkBAIC0xODU5LDcgKzE5MDksNyBAQCBSZWdpc3RlcklEKiBBc3NpZ25Eb3ROb2RlOjplbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRAogCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUmVhZE1vZGlmeURvdE5vZGUgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUmVnaXN0ZXJJRCogUmVhZE1vZGlmeURvdE5vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBk
c3QpCitSZWdpc3RlcklEKiBSZWFkTW9kaWZ5RG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlKQogewog
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlRm9yTGVmdEhh
bmRTaWRlKG1fYmFzZSwgbV9yaWdodEhhc0Fzc2lnbm1lbnRzLCBtX3JpZ2h0LT5pc1B1cmUoZ2Vu
ZXJhdG9yKSk7CiAKQEAgLTE4NzUsMTQgKzE5MjUsMTQgQEAgUmVnaXN0ZXJJRCogUmVhZE1vZGlm
eURvdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3QKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEFzc2lnbkVycm9yTm9kZSAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1SZWdpc3RlcklEKiBBc3NpZ25F
cnJvck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklEKikKK1JlZ2lzdGVySUQqIEFzc2lnbkVycm9yTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqLCBUYWlsQ2FsbE1vZGUpCiB7CiAg
ICAgcmV0dXJuIGVtaXRUaHJvd1JlZmVyZW5jZUVycm9yKGdlbmVyYXRvciwgQVNDSUlMaXRlcmFs
KCJMZWZ0IHNpZGUgb2YgYXNzaWdubWVudCBpcyBub3QgYSByZWZlcmVuY2UuIikpOwogfQogCiAv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQXNzaWduQnJhY2tldE5vZGUgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUmVnaXN0ZXJJRCogQXNzaWduQnJhY2tl
dE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cklEKiBkc3QpCitSZWdpc3RlcklEKiBBc3NpZ25CcmFja2V0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2Rl
KQogewogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlRm9y
TGVmdEhhbmRTaWRlKG1fYmFzZSwgbV9zdWJzY3JpcHRIYXNBc3NpZ25tZW50cyB8fCBtX3JpZ2h0
SGFzQXNzaWdubWVudHMsIG1fc3Vic2NyaXB0LT5pc1B1cmUoZ2VuZXJhdG9yKSAmJiBtX3JpZ2h0
LT5pc1B1cmUoZ2VuZXJhdG9yKSk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3BlcnR5ID0g
Z2VuZXJhdG9yLmVtaXROb2RlRm9yTGVmdEhhbmRTaWRlKG1fc3Vic2NyaXB0LCBtX3JpZ2h0SGFz
QXNzaWdubWVudHMsIG1fcmlnaHQtPmlzUHVyZShnZW5lcmF0b3IpKTsKQEAgLTE5MDMsNyArMTk1
Myw3IEBAIFJlZ2lzdGVySUQqIEFzc2lnbkJyYWNrZXROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSBSZWFkTW9kaWZ5QnJhY2tldE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIAotUmVnaXN0ZXJJRCogUmVhZE1vZGlmeUJyYWNrZXROb2RlOjplbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQorUmVn
aXN0ZXJJRCogUmVhZE1vZGlmeUJyYWNrZXROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2FsbE1vZGUpCiB7CiAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGVGb3JMZWZ0SGFuZFNp
ZGUobV9iYXNlLCBtX3N1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzIHx8IG1fcmlnaHRIYXNBc3NpZ25t
ZW50cywgbV9zdWJzY3JpcHQtPmlzUHVyZShnZW5lcmF0b3IpICYmIG1fcmlnaHQtPmlzUHVyZShn
ZW5lcmF0b3IpKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvcGVydHkgPSBnZW5lcmF0b3Iu
ZW1pdE5vZGVGb3JMZWZ0SGFuZFNpZGUobV9zdWJzY3JpcHQsIG1fcmlnaHRIYXNBc3NpZ25tZW50
cywgbV9yaWdodC0+aXNQdXJlKGdlbmVyYXRvcikpOwpAQCAtMTkyMSwxMiArMTk3MSwxMiBAQCBS
ZWdpc3RlcklEKiBSZWFkTW9kaWZ5QnJhY2tldE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0gQ29tbWFOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1SZWdp
c3RlcklEKiBDb21tYU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKiBkc3QpCitSZWdpc3RlcklEKiBDb21tYU5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxs
TW9kZSB0YWlsQ2FsbE1vZGUpCiB7CiAgICAgQ29tbWFOb2RlKiBub2RlID0gdGhpczsKICAgICBm
b3IgKDsgbm9kZSAmJiBub2RlLT5uZXh0KCk7IG5vZGUgPSBub2RlLT5uZXh0KCkpCiAgICAgICAg
IGdlbmVyYXRvci5lbWl0Tm9kZShnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpLCBub2RlLT5tX2V4
cHIpOwotICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBub2RlLT5tX2V4cHIpOwor
ICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBub2RlLT5tX2V4cHIsIHRhaWxDYWxs
TW9kZSk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTb3VyY2VFbGVt
ZW50cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xOTM3LDEwICsxOTg3LDEw
IEBAIGlubGluZSBTdGF0ZW1lbnROb2RlKiBTb3VyY2VFbGVtZW50czo6bGFzdFN0YXRlbWVudCgp
IGNvbnN0CiAgICAgcmV0dXJuIG1fdGFpbDsKIH0KIAotaW5saW5lIHZvaWQgU291cmNlRWxlbWVu
dHM6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklE
KiBkc3QpCitpbmxpbmUgdm9pZCBTb3VyY2VFbGVtZW50czo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlIHRhaWxD
YWxsTW9kZSkKIHsKICAgICBmb3IgKFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCA9IG1faGVhZDsg
c3RhdGVtZW50OyBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnQtPm5leHQoKSkKLSAgICAgICAgZ2VuZXJh
dG9yLmVtaXROb2RlKGRzdCwgc3RhdGVtZW50KTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2Rl
KGRzdCwgc3RhdGVtZW50LCB0YWlsQ2FsbE1vZGUpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gQmxvY2tOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQpAQCAtMTk1NSwzMiArMjAwNSwzMiBAQCBTdGF0ZW1lbnROb2RlKiBCbG9ja05vZGU6OnNp
bmdsZVN0YXRlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc3RhdGVtZW50cyA/IG1fc3RhdGVt
ZW50cy0+c2luZ2xlU3RhdGVtZW50KCkgOiAwOwogfQogCi12b2lkIEJsb2NrTm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3Zv
aWQgQmxvY2tOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2FsbE1vZGUgdGFpbENhbGxNb2RlKQogewogICAgIGlmICgh
bV9zdGF0ZW1lbnRzKQogICAgICAgICByZXR1cm47CiAgICAgZ2VuZXJhdG9yLnB1c2hMZXhpY2Fs
U2NvcGUodGhpcywgdHJ1ZSk7Ci0gICAgbV9zdGF0ZW1lbnRzLT5lbWl0Qnl0ZWNvZGUoZ2VuZXJh
dG9yLCBkc3QpOworICAgIG1fc3RhdGVtZW50cy0+ZW1pdEJ5dGVjb2RlKGdlbmVyYXRvciwgZHN0
LCB0YWlsQ2FsbE1vZGUpOwogICAgIGdlbmVyYXRvci5wb3BMZXhpY2FsU2NvcGUodGhpcyk7CiB9
CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFbXB0eVN0YXRlbWVudE5vZGUg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLXZvaWQgRW1wdHlTdGF0ZW1lbnROb2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCit2
b2lkIEVtcHR5U3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqLCBUYWlsQ2FsbE1vZGUpCiB7CiAgICAgZ2VuZXJhdG9yLmVt
aXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBzdGFydE9mZnNl
dCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSBEZWJ1Z2dlclN0YXRlbWVudE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAKLXZvaWQgRGVidWdnZXJTdGF0ZW1lbnROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCit2b2lkIERlYnVnZ2VyU3RhdGVtZW50Tm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQq
LCBUYWlsQ2FsbE1vZGUpCiB7CiAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soRGlkUmVhY2hC
cmVha3BvaW50LCBsYXN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7
CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFeHByU3RhdGVtZW50Tm9k
ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLXZvaWQgRXhwclN0YXRlbWVudE5vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBk
c3QpCit2b2lkIEV4cHJTdGF0ZW1lbnROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2FsbE1vZGUpCiB7CiAgICAgQVNT
RVJUKG1fZXhwcik7CiAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0
ZW1lbnQsIGZpcnN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7CkBA
IC0xOTg5LDcgKzIwMzksNyBAQCB2b2lkIEV4cHJTdGF0ZW1lbnROb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZAogCiAvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRGVjbGFyYXRpb25TdGF0ZW1lbnQgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQogCi12b2lkIERlY2xhcmF0aW9uU3RhdGVtZW50OjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCit2b2lkIERlY2xh
cmF0aW9uU3RhdGVtZW50OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCosIFRhaWxDYWxsTW9kZSkKIHsKICAgICBBU1NFUlQobV9leHByKTsKICAg
ICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5l
KCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKQEAgLTE5OTgsNyArMjA0OCw3
IEBAIHZvaWQgRGVjbGFyYXRpb25TdGF0ZW1lbnQ6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklECiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSBFbXB0eVZhckV4cHJlc3Npb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
Ci1SZWdpc3RlcklEKiBFbXB0eVZhckV4cHJlc3Npb246OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKK1JlZ2lzdGVySUQqIEVtcHR5VmFyRXhw
cmVzc2lvbjo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqLCBUYWlsQ2FsbE1vZGUpCiB7CiAgICAgLy8gSXQncyBzYWZlIHRvIHJldHVybiBudWxs
IGhlcmUgYmVjYXVzZSB0aGlzIG5vZGUgd2lsbCBhbHdheXMgYmUgYSBjaGlsZCBub2RlIG9mIERl
Y2xhcmF0aW9uU3RhdGVtZW50IHdoaWNoIGlnbm9yZXMgb3VyIHJldHVybiB2YWx1ZS4KICAgICBp
ZiAoIWdlbmVyYXRvci52bSgpLT50eXBlUHJvZmlsZXIoKSkKQEAgLTIwMTgsNyArMjA2OCw3IEBA
IFJlZ2lzdGVySUQqIEVtcHR5VmFyRXhwcmVzc2lvbjo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSBFbXB0eUxldEV4cHJlc3Npb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1S
ZWdpc3RlcklEKiBFbXB0eUxldEV4cHJlc3Npb246OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKK1JlZ2lzdGVySUQqIEVtcHR5TGV0RXhwcmVz
c2lvbjo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVy
SUQqLCBUYWlsQ2FsbE1vZGUpCiB7CiAgICAgLy8gTGV4aWNhbCBkZWNsYXJhdGlvbnMgbGlrZSAn
bGV0JyBtdXN0IG1vdmUgdW5kZWZpbmVkIGludG8gdGhlaXIgdmFyaWFibGVzIHNvIHdlIGRvbid0
CiAgICAgLy8gZ2V0IFREWiBlcnJvcnMgZm9yIHNpdHVhdGlvbnMgbGlrZSB0aGlzOiBgbGV0IHg7
IHg7YApAQCAtMjA3Niw3ICsyMTI2LDcgQEAgYm9vbCBJZkVsc2VOb2RlOjp0cnlGb2xkQnJlYWtB
bmRDb250aW51ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBTdGF0ZW1lbnQKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgSWZFbHNlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3ZvaWQgSWZFbHNlTm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRz
dCwgVGFpbENhbGxNb2RlIHRhaWxDYWxsTW9kZSkKIHsKICAgICBnZW5lcmF0b3IuZW1pdERlYnVn
SG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxp
bmVTdGFydE9mZnNldCgpKTsKICAgICAKQEAgLTIwOTQsNyArMjE0NCw3IEBAIHZvaWQgSWZFbHNl
Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVy
SUQqIGRzdCkKICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVDb250cm9sRmxvdyhtX2lmQmxvY2st
PnN0YXJ0T2Zmc2V0KCkpOwogCiAgICAgaWYgKCFkaWRGb2xkSWZCbG9jaykgewotICAgICAgICBn
ZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX2lmQmxvY2spOworICAgICAgICBnZW5lcmF0b3IuZW1p
dE5vZGUoZHN0LCBtX2lmQmxvY2ssIHRhaWxDYWxsTW9kZSk7CiAgICAgICAgIGlmIChtX2Vsc2VC
bG9jaykKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChhZnRlckVsc2UuZ2V0KCkpOwog
ICAgIH0KQEAgLTIxMDMsNyArMjE1Myw3IEBAIHZvaWQgSWZFbHNlTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIAogICAgIGlm
IChtX2Vsc2VCbG9jaykgewogICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVDb250cm9sRmxv
dyhtX2lmQmxvY2stPmVuZE9mZnNldCgpICsgKG1faWZCbG9jay0+aXNCbG9jaygpID8gMSA6IDAp
KTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9lbHNlQmxvY2spOworICAgICAg
ICBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX2Vsc2VCbG9jaywgdGFpbENhbGxNb2RlKTsKICAg
ICB9CiAKICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGFmdGVyRWxzZS5nZXQoKSk7CkBAIC0yMTEz
LDcgKzIxNjMsNyBAQCB2b2lkIElmRWxzZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSBEb1doaWxlTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAKLXZvaWQgRG9XaGlsZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCit2b2lkIERvV2hpbGVOb2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2Fs
bE1vZGUgdGFpbENhbGxNb2RlKQogewogICAgIExhYmVsU2NvcGVQdHIgc2NvcGUgPSBnZW5lcmF0
b3IubmV3TGFiZWxTY29wZShMYWJlbFNjb3BlOjpMb29wKTsKIApAQCAtMjEyMiw3ICsyMTcyLDcg
QEAgdm9pZCBEb1doaWxlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKICAgICBnZW5lcmF0b3IuZW1pdExvb3BIaW50KCk7CiAg
ICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGxhc3RMaW5l
KCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKIAotICAgIGdlbmVyYXRvci5l
bWl0Tm9kZShkc3QsIG1fc3RhdGVtZW50KTsKKyAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBt
X3N0YXRlbWVudCwgdGFpbENhbGxNb2RlKTsKIAogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoc2Nv
cGUtPmNvbnRpbnVlVGFyZ2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxF
eGVjdXRlU3RhdGVtZW50LCBsYXN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZz
ZXQoKSk7CkBAIC0yMTMzLDcgKzIxODMsNyBAQCB2b2lkIERvV2hpbGVOb2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogCiAvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gV2hpbGVOb2RlIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogCi12b2lkIFdoaWxlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3ZvaWQgV2hpbGVOb2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCog
ZHN0LCBUYWlsQ2FsbE1vZGUgdGFpbENhbGxNb2RlKQogewogICAgIExhYmVsU2NvcGVQdHIgc2Nv
cGUgPSBnZW5lcmF0b3IubmV3TGFiZWxTY29wZShMYWJlbFNjb3BlOjpMb29wKTsKICAgICBSZWZQ
dHI8TGFiZWw+IHRvcE9mTG9vcCA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwpAQCAtMjE0NSw3ICsy
MTk1LDcgQEAgdm9pZCBXaGlsZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAgICAgZ2VuZXJhdG9yLmVtaXRMb29wSGludCgp
OwogICAgIAogICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZUNvbnRyb2xGbG93KG1fc3RhdGVtZW50
LT5zdGFydE9mZnNldCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX3N0YXRlbWVu
dCk7CisgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9zdGF0ZW1lbnQsIHRhaWxDYWxsTW9k
ZSk7CiAKICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHNjb3BlLT5jb250aW51ZVRhcmdldCgpKTsK
ICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RM
aW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKQEAgLTIxNTksNyArMjIw
OSw3IEBAIHZvaWQgV2hpbGVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0gRm9yTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi12
b2lkIEZvck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3RlcklEKiBkc3QpCit2b2lkIEZvck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSB0YWlsQ2FsbE1v
ZGUpCiB7CiAgICAgTGFiZWxTY29wZVB0ciBzY29wZSA9IGdlbmVyYXRvci5uZXdMYWJlbFNjb3Bl
KExhYmVsU2NvcGU6Okxvb3ApOwogCkBAIC0yMTc5LDcgKzIyMjksNyBAQCB2b2lkIEZvck5vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBk
c3QpCiAgICAgZ2VuZXJhdG9yLmVtaXRMb29wSGludCgpOwogICAgIGdlbmVyYXRvci5lbWl0UHJv
ZmlsZUNvbnRyb2xGbG93KG1fc3RhdGVtZW50LT5zdGFydE9mZnNldCgpKTsKIAotICAgIGdlbmVy
YXRvci5lbWl0Tm9kZShkc3QsIG1fc3RhdGVtZW50KTsKKyAgICBnZW5lcmF0b3IuZW1pdE5vZGUo
ZHN0LCBtX3N0YXRlbWVudCwgdGFpbENhbGxNb2RlKTsKIAogICAgIGdlbmVyYXRvci5lbWl0TGFi
ZWwoc2NvcGUtPmNvbnRpbnVlVGFyZ2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29r
KFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0
YXJ0T2Zmc2V0KCkpOwpAQCAtMjQyOCwxMyArMjQ3OCwxMyBAQCB2b2lkIEZvckluTm9kZTo6ZW1p
dE11bHRpTG9vcEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVy
SUQqCiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlQ29udHJvbEZsb3cocHJvZmlsZXJFbmRPZmZz
ZXQpOwogfQogCi12b2lkIEZvckluTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3ZvaWQgRm9ySW5Ob2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2Fs
bE1vZGUpCiB7CiAgICAgdGhpcy0+ZW1pdE11bHRpTG9vcEJ5dGVjb2RlKGdlbmVyYXRvciwgZHN0
KTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZvck9mTm9kZSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLXZvaWQgRm9yT2ZOb2RlOjplbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQordm9p
ZCBGb3JPZk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSkKIHsKICAgICBpZiAoIW1fbGV4cHItPmlzQXNz
aWdubWVudExvY2F0aW9uKCkpIHsKICAgICAgICAgZW1pdFRocm93UmVmZXJlbmNlRXJyb3IoZ2Vu
ZXJhdG9yLCBBU0NJSUxpdGVyYWwoIkxlZnQgc2lkZSBvZiBmb3Itb2Ygc3RhdGVtZW50IGlzIG5v
dCBhIHJlZmVyZW5jZS4iKSk7CkBAIC0yNTA0LDcgKzI1NTQsNyBAQCBMYWJlbCogQ29udGludWVO
b2RlOjp0cml2aWFsVGFyZ2V0KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IpCiAgICAgcmV0
dXJuIHNjb3BlLT5jb250aW51ZVRhcmdldCgpOwogfQogCi12b2lkIENvbnRpbnVlTm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQordm9p
ZCBDb250aW51ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKiwgVGFpbENhbGxNb2RlKQogewogICAgIGdlbmVyYXRvci5lbWl0RGVidWdI
b29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGlu
ZVN0YXJ0T2Zmc2V0KCkpOwogICAgIApAQCAtMjUzMyw3ICsyNTgzLDcgQEAgTGFiZWwqIEJyZWFr
Tm9kZTo6dHJpdmlhbFRhcmdldChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yKQogICAgIHJl
dHVybiBzY29wZS0+YnJlYWtUYXJnZXQoKTsKIH0KIAotdm9pZCBCcmVha05vZGU6OmVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKK3ZvaWQgQnJl
YWtOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0
ZXJJRCosIFRhaWxDYWxsTW9kZSkKIHsKICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxs
RXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9m
ZnNldCgpKTsKICAgICAKQEAgLTI1NDgsNyArMjU5OCw3IEBAIHZvaWQgQnJlYWtOb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAKIC8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBSZXR1cm5Ob2RlIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLXZvaWQgUmV0dXJuTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3ZvaWQgUmV0dXJu
Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVy
SUQqIGRzdCwgVGFpbENhbGxNb2RlIHRhaWxDYWxsTW9kZSkKIHsKICAgICBnZW5lcmF0b3IuZW1p
dERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIHN0YXJ0T2Zmc2V0
KCksIGxpbmVTdGFydE9mZnNldCgpKTsKICAgICBBU1NFUlQoZ2VuZXJhdG9yLmNvZGVUeXBlKCkg
PT0gRnVuY3Rpb25Db2RlKTsKQEAgLTI1NTYsNyArMjYwNiw3IEBAIHZvaWQgUmV0dXJuTm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRz
dCkKICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCiAgICAgICAgIGRz
dCA9IDA7CiAKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuUmVnaXN0ZXIgPSBtX3ZhbHVl
ID8gZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV92YWx1ZSkgOiBnZW5lcmF0b3IuZW1pdExvYWQo
ZHN0LCBqc1VuZGVmaW5lZCgpKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuUmVnaXN0
ZXIgPSBtX3ZhbHVlID8gZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV92YWx1ZSwgdGFpbENhbGxN
b2RlKSA6IGdlbmVyYXRvci5lbWl0TG9hZChkc3QsIGpzVW5kZWZpbmVkKCkpOwogICAgIGdlbmVy
YXRvci5lbWl0UHJvZmlsZVR5cGUocmV0dXJuUmVnaXN0ZXIuZ2V0KCksIFByb2ZpbGVUeXBlQnl0
ZWNvZGVGdW5jdGlvblJldHVyblN0YXRlbWVudCwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsK
ICAgICBpZiAoZ2VuZXJhdG9yLmlzSW5GaW5hbGx5QmxvY2soKSkgewogICAgICAgICByZXR1cm5S
ZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHJl
dHVyblJlZ2lzdGVyLmdldCgpKTsKQEAgLTI1NzQsMjUgKzI2MjQsMjUgQEAgdm9pZCBSZXR1cm5O
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJ
RCogZHN0KQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gV2l0aE5vZGUgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi12b2lkIFdpdGhOb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQor
dm9pZCBXaXRoTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlIHRhaWxDYWxsTW9kZSkKIHsKICAgICBnZW5l
cmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIHN0
YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKIAogICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBzY29wZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2V4cHIpOwogICAgIGdlbmVyYXRvci5lbWl0
RXhwcmVzc2lvbkluZm8obV9kaXZvdCwgbV9kaXZvdCAtIG1fZXhwcmVzc2lvbkxlbmd0aCwgbV9k
aXZvdCk7CiAgICAgZ2VuZXJhdG9yLmVtaXRQdXNoV2l0aFNjb3BlKHNjb3BlLmdldCgpKTsKLSAg
ICBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX3N0YXRlbWVudCk7CisgICAgZ2VuZXJhdG9yLmVt
aXROb2RlKGRzdCwgbV9zdGF0ZW1lbnQsIHRhaWxDYWxsTW9kZSk7CiAgICAgZ2VuZXJhdG9yLmVt
aXRQb3BXaXRoU2NvcGUoKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
IENhc2VDbGF1c2VOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWlubGlu
ZSB2b2lkIENhc2VDbGF1c2VOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQoraW5saW5lIHZvaWQgQ2FzZUNsYXVzZU5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3Qs
IFRhaWxDYWxsTW9kZSB0YWlsQ2FsbE1vZGUpCiB7CiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxl
Q29udHJvbEZsb3cobV9zdGFydE9mZnNldCk7CiAgICAgaWYgKCFtX3N0YXRlbWVudHMpCiAgICAg
ICAgIHJldHVybjsKLSAgICBtX3N0YXRlbWVudHMtPmVtaXRCeXRlY29kZShnZW5lcmF0b3IsIGRz
dCk7CisgICAgbV9zdGF0ZW1lbnRzLT5lbWl0Qnl0ZWNvZGUoZ2VuZXJhdG9yLCBkc3QsIHRhaWxD
YWxsTW9kZSk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDYXNlQmxv
Y2tOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0yNjg2LDcgKzI3MzYs
NyBAQCBTd2l0Y2hJbmZvOjpTd2l0Y2hUeXBlIENhc2VCbG9ja05vZGU6OnRyeVRhYmxlU3dpdGNo
KFZlY3RvcjxFeHByZXNzaW9uTm9kZSosIDg+JgogICAgIHJldHVybiBTd2l0Y2hJbmZvOjpTd2l0
Y2hTdHJpbmc7CiB9CiAKLXZvaWQgQ2FzZUJsb2NrTm9kZTo6ZW1pdEJ5dGVjb2RlRm9yQmxvY2so
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogc3dpdGNoRXhwcmVzc2lv
biwgUmVnaXN0ZXJJRCogZHN0KQordm9pZCBDYXNlQmxvY2tOb2RlOjplbWl0Qnl0ZWNvZGVGb3JC
bG9jayhCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBzd2l0Y2hFeHBy
ZXNzaW9uLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSB0YWlsQ2FsbE1vZGUpCiB7CiAg
ICAgUmVmUHRyPExhYmVsPiBkZWZhdWx0TGFiZWw7CiAgICAgVmVjdG9yPFJlZlB0cjxMYWJlbD4s
IDg+IGxhYmVsVmVjdG9yOwpAQCAtMjcyNSwxNyArMjc3NSwxNyBAQCB2b2lkIENhc2VCbG9ja05v
ZGU6OmVtaXRCeXRlY29kZUZvckJsb2NrKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySQogICAgIHNpemVfdCBpID0gMDsKICAgICBmb3IgKENsYXVzZUxpc3ROb2RlKiBsaXN0
ID0gbV9saXN0MTsgbGlzdDsgbGlzdCA9IGxpc3QtPmdldE5leHQoKSkgewogICAgICAgICBnZW5l
cmF0b3IuZW1pdExhYmVsKGxhYmVsVmVjdG9yW2krK10uZ2V0KCkpOwotICAgICAgICBsaXN0LT5n
ZXRDbGF1c2UoKS0+ZW1pdEJ5dGVjb2RlKGdlbmVyYXRvciwgZHN0KTsKKyAgICAgICAgbGlzdC0+
Z2V0Q2xhdXNlKCktPmVtaXRCeXRlY29kZShnZW5lcmF0b3IsIGRzdCwgdGFpbENhbGxNb2RlKTsK
ICAgICB9CiAKICAgICBpZiAobV9kZWZhdWx0Q2xhdXNlKSB7CiAgICAgICAgIGdlbmVyYXRvci5l
bWl0TGFiZWwoZGVmYXVsdExhYmVsLmdldCgpKTsKLSAgICAgICAgbV9kZWZhdWx0Q2xhdXNlLT5l
bWl0Qnl0ZWNvZGUoZ2VuZXJhdG9yLCBkc3QpOworICAgICAgICBtX2RlZmF1bHRDbGF1c2UtPmVt
aXRCeXRlY29kZShnZW5lcmF0b3IsIGRzdCwgdGFpbENhbGxNb2RlKTsKICAgICB9CiAKICAgICBm
b3IgKENsYXVzZUxpc3ROb2RlKiBsaXN0ID0gbV9saXN0MjsgbGlzdDsgbGlzdCA9IGxpc3QtPmdl
dE5leHQoKSkgewogICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGxhYmVsVmVjdG9yW2krK10u
Z2V0KCkpOwotICAgICAgICBsaXN0LT5nZXRDbGF1c2UoKS0+ZW1pdEJ5dGVjb2RlKGdlbmVyYXRv
ciwgZHN0KTsKKyAgICAgICAgbGlzdC0+Z2V0Q2xhdXNlKCktPmVtaXRCeXRlY29kZShnZW5lcmF0
b3IsIGRzdCwgdGFpbENhbGxNb2RlKTsKICAgICB9CiAgICAgaWYgKCFtX2RlZmF1bHRDbGF1c2Up
CiAgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZGVmYXVsdExhYmVsLmdldCgpKTsKQEAgLTI3
NDksNyArMjc5OSw3IEBAIHZvaWQgQ2FzZUJsb2NrTm9kZTo6ZW1pdEJ5dGVjb2RlRm9yQmxvY2so
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJCiAKIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSBTd2l0Y2hOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiAKLXZvaWQgU3dpdGNoTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3ZvaWQgU3dpdGNoTm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFp
bENhbGxNb2RlIHRhaWxDYWxsTW9kZSkKIHsKICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhX
aWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFy
dE9mZnNldCgpKTsKICAgICAKQEAgLTI3NTgsNyArMjgwOCw3IEBAIHZvaWQgU3dpdGNoTm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRz
dCkKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcjAgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9leHBy
KTsKIAogICAgIGdlbmVyYXRvci5wdXNoTGV4aWNhbFNjb3BlKHRoaXMsIGZhbHNlKTsKLSAgICBt
X2Jsb2NrLT5lbWl0Qnl0ZWNvZGVGb3JCbG9jayhnZW5lcmF0b3IsIHIwLmdldCgpLCBkc3QpOwor
ICAgIG1fYmxvY2stPmVtaXRCeXRlY29kZUZvckJsb2NrKGdlbmVyYXRvciwgcjAuZ2V0KCksIGRz
dCwgdGFpbENhbGxNb2RlKTsKICAgICBnZW5lcmF0b3IucG9wTGV4aWNhbFNjb3BlKHRoaXMpOwog
CiAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChzY29wZS0+YnJlYWtUYXJnZXQoKSk7CkBAIC0yNzY3
LDcgKzI4MTcsNyBAQCB2b2lkIFN3aXRjaE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSBMYWJlbE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAKLXZvaWQgTGFiZWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQordm9pZCBMYWJlbE5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9k
ZSkKIHsKICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwg
Zmlyc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKIApAQCAtMjc4
MSw3ICsyODMxLDcgQEAgdm9pZCBMYWJlbE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSBUaHJvd05vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAKLXZvaWQgVGhyb3dOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQordm9pZCBUaHJvd05vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9k
ZSkKIHsKICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwg
Zmlyc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKIApAQCAtMjc5
Niw3ICsyODQ2LDcgQEAgdm9pZCBUaHJvd05vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSBUcnlOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAKLXZvaWQgVHJ5Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3ZvaWQgVHJ5Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlIHRh
aWxDYWxsTW9kZSkKIHsKICAgICAvLyBOT1RFOiBUaGUgY2F0Y2ggYW5kIGZpbmFsbHkgYmxvY2tz
IG11c3QgYmUgbGFiZWxlZCBleHBsaWNpdGx5LCBzbyB0aGUKICAgICAvLyBvcHRpbWl6ZXIga25v
d3MgdGhleSBtYXkgYmUganVtcGVkIHRvIGZyb20gYW55d2hlcmUuCkBAIC0yODM0LDcgKzI4ODQs
NyBAQCB2b2lkIFRyeU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKiBkc3QpCiAKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXNoQ2F0Y2hT
Y29wZShtX3Rocm93blZhbHVlSWRlbnQsIHRocm93blZhbHVlUmVnaXN0ZXIuZ2V0KCksIG1fY2F0
Y2hFbnZpcm9ubWVudCk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZUNvbnRyb2xGbG93
KG1fdHJ5QmxvY2stPmVuZE9mZnNldCgpICsgMSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0Tm9k
ZShkc3QsIG1fY2F0Y2hCbG9jayk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1f
Y2F0Y2hCbG9jaywgbV9maW5hbGx5QmxvY2sgPyBOb1RhaWxDYWxscyA6IHRhaWxDYWxsTW9kZSk7
CiAgICAgICAgIGdlbmVyYXRvci5lbWl0UG9wQ2F0Y2hTY29wZShtX2NhdGNoRW52aXJvbm1lbnQp
OwogICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGNhdGNoRW5kTGFiZWwuZ2V0KCkpOwogICAg
IH0KQEAgLTI4NTAsNyArMjkwMCw3IEBAIHZvaWQgVHJ5Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIAogICAgICAgICAvLyBO
b3JtYWwgcGF0aDogcnVuIHRoZSBmaW5hbGx5IGNvZGUsIGFuZCBqdW1wIHRvIHRoZSBlbmQuCiAg
ICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZUNvbnRyb2xGbG93KGZpbmFsbHlTdGFydE9mZnNl
dCk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fZmluYWxseUJsb2NrKTsKKyAg
ICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9maW5hbGx5QmxvY2ssIHRhaWxDYWxsTW9k
ZSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZUNvbnRyb2xGbG93KG1fZmluYWxseUJs
b2NrLT5lbmRPZmZzZXQoKSArIDEpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXAoZmluYWxs
eUVuZExhYmVsLmdldCgpKTsKIApAQCAtMjg1OSw3ICsyOTA5LDcgQEAgdm9pZCBUcnlOb2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0
KQogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhyb3duVmFsdWVSZWdpc3RlciA9IGdlbmVy
YXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICAgICAgZ2VuZXJhdG9yLnBvcFRyeUFuZEVtaXRDYXRj
aCh0cnlEYXRhLCBleGNlcHRpb25SZWdpc3Rlci5nZXQoKSwgdGhyb3duVmFsdWVSZWdpc3Rlci5n
ZXQoKSwgcHJlRmluYWxseUxhYmVsLmdldCgpLCBIYW5kbGVyVHlwZTo6RmluYWxseSk7CiAgICAg
ICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZUNvbnRyb2xGbG93KGZpbmFsbHlTdGFydE9mZnNldCk7
Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fZmluYWxseUJsb2NrKTsKKyAgICAg
ICAgZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9maW5hbGx5QmxvY2ssIHRhaWxDYWxsTW9kZSk7
CiAgICAgICAgIGdlbmVyYXRvci5lbWl0VGhyb3coZXhjZXB0aW9uUmVnaXN0ZXIuZ2V0KCkpOwog
CiAgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZmluYWxseUVuZExhYmVsLmdldCgpKTsKQEAg
LTI4NzEsMTEgKzI5MjEsMTEgQEAgdm9pZCBUcnlOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogCiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0gU2NvcGVOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAKLWlubGluZSB2b2lkIFNjb3BlTm9kZTo6ZW1pdFN0YXRlbWVudHNCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCitpbmxpbmUgdm9pZCBTY29w
ZU5vZGU6OmVtaXRTdGF0ZW1lbnRzQnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2FsbE1vZGUgdGFpbENhbGxNb2RlKQogewogICAgIGlm
ICghbV9zdGF0ZW1lbnRzKQogICAgICAgICByZXR1cm47Ci0gICAgbV9zdGF0ZW1lbnRzLT5lbWl0
Qnl0ZWNvZGUoZ2VuZXJhdG9yLCBkc3QpOworICAgIG1fc3RhdGVtZW50cy0+ZW1pdEJ5dGVjb2Rl
KGdlbmVyYXRvciwgZHN0LCB0YWlsQ2FsbE1vZGUpOwogfQogCiBzdGF0aWMgdm9pZCBlbWl0UHJv
Z3JhbU5vZGVCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBTY29wZU5vZGUm
IHNjb3BlTm9kZSkKQEAgLTI4OTMsMjEgKzI5NDMsMjEgQEAgc3RhdGljIHZvaWQgZW1pdFByb2dy
YW1Ob2RlQnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgU2NvcGVOb2RlJiBz
Y28KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByb2dyYW1Ob2RlIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLXZvaWQgUHJvZ3JhbU5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKK3ZvaWQgUHJvZ3Jh
bU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cklEKiwgVGFpbENhbGxNb2RlKQogewogICAgIGVtaXRQcm9ncmFtTm9kZUJ5dGVjb2RlKGdlbmVy
YXRvciwgKnRoaXMpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTW9k
dWxlUHJvZ3JhbU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotdm9pZCBNb2R1bGVQcm9ncmFt
Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVy
SUQqKQordm9pZCBNb2R1bGVQcm9ncmFtTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqLCBUYWlsQ2FsbE1vZGUpCiB7CiAgICAgZW1pdFBy
b2dyYW1Ob2RlQnl0ZWNvZGUoZ2VuZXJhdG9yLCAqdGhpcyk7CiB9CiAKIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSBFdmFsTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogCi12b2lkIEV2YWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCopCit2b2lkIEV2YWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCosIFRhaWxDYWxsTW9kZSkKIHsKICAgICBn
ZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVByb2dyYW0sIHN0YXJ0TGluZSgpLCBz
dGFydFN0YXJ0T2Zmc2V0KCksIHN0YXJ0TGluZVN0YXJ0T2Zmc2V0KCkpOwogCkBAIC0yOTIxLDcg
KzI5NzEsNyBAQCB2b2lkIEV2YWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSBGdW5jdGlvbk5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotdm9pZCBG
dW5jdGlvbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3RlcklEKikKK3ZvaWQgRnVuY3Rpb25Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCosIFRhaWxDYWxsTW9kZSkKIHsKICAgICBpZiAo
Z2VuZXJhdG9yLnZtKCktPnR5cGVQcm9maWxlcigpKSB7CiAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbV9wYXJhbWV0ZXJzLT5zaXplKCk7IGkrKykgewpAQCAtMjkzNiw3ICsyOTg2LDEw
IEBAIHZvaWQgRnVuY3Rpb25Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXN0ZXJJRCopCiAKICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVDb250cm9s
RmxvdyhzdGFydFN0YXJ0T2Zmc2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKERp
ZEVudGVyQ2FsbEZyYW1lLCBzdGFydExpbmUoKSwgc3RhcnRTdGFydE9mZnNldCgpLCBzdGFydExp
bmVTdGFydE9mZnNldCgpKTsKLSAgICBlbWl0U3RhdGVtZW50c0J5dGVjb2RlKGdlbmVyYXRvciwg
Z2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSk7CisgICAgaWYgKE9wdGlvbnM6OmVuYWJsZVRhaWxD
YWxscygpICYmIGlzU3RyaWN0TW9kZSgpICYmIGdlbmVyYXRvci5jb25zdHJ1Y3RvcktpbmQoKSA9
PSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpCisgICAgICAgIGVtaXRTdGF0ZW1lbnRzQnl0ZWNvZGUo
Z2VuZXJhdG9yLCBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpLCBDYW5IYXZlVGFpbENhbGxzKTsK
KyAgICBlbHNlCisgICAgICAgIGVtaXRTdGF0ZW1lbnRzQnl0ZWNvZGUoZ2VuZXJhdG9yLCBnZW5l
cmF0b3IuaWdub3JlZFJlc3VsdCgpKTsKIAogICAgIFN0YXRlbWVudE5vZGUqIHNpbmdsZVN0YXRl
bWVudCA9IHRoaXMtPnNpbmdsZVN0YXRlbWVudCgpOwogICAgIFJldHVybk5vZGUqIHJldHVybk5v
ZGUgPSAwOwpAQCAtMjk2MSwyMCArMzAxNCwyMCBAQCB2b2lkIEZ1bmN0aW9uTm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogCiAvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY0RlY2xOb2RlIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogCi12b2lkIEZ1bmNEZWNsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopCit2b2lkIEZ1bmNEZWNsTm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCosIFRhaWxDYWxsTW9kZSkKIHsK
IH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmNFeHByTm9kZSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUmVnaXN0ZXJJRCogRnVuY0V4cHJOb2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCog
ZHN0KQorUmVnaXN0ZXJJRCogRnVuY0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2FsbE1vZGUpCiB7CiAgICAg
cmV0dXJuIGdlbmVyYXRvci5lbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9uKGdlbmVyYXRvci5maW5h
bERlc3RpbmF0aW9uKGRzdCksIHRoaXMpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0gQXJyb3dGdW5jRXhwck5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAKLVJlZ2lzdGVySUQqIEFycm93RnVuY0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCogQXJy
b3dGdW5jRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSkKIHsKICAgICByZXR1cm4gZ2VuZXJhdG9y
LmVtaXROZXdBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbihnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlv
bihkc3QpLCB0aGlzKTsKIH0KQEAgLTI5ODIsMTQgKzMwMzUsMTQgQEAgUmVnaXN0ZXJJRCogQXJy
b3dGdW5jRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3QKICNpZiBFTkFCTEUoRVM2X0NMQVNTX1NZTlRBWCkKIC8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSBDbGFzc0RlY2xOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQogCi12b2lkIENsYXNzRGVjbE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCit2b2lkIENsYXNzRGVjbE5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3Qs
IFRhaWxDYWxsTW9kZSkKIHsKICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX2NsYXNzRGVj
bGFyYXRpb24pOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ2xhc3NF
eHByTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUmVnaXN0ZXJJRCog
Q2xhc3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqIGRzdCkKK1JlZ2lzdGVySUQqIENsYXNzRXhwck5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxs
TW9kZSkKIHsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3VwZXJjbGFzczsKICAgICBpZiAobV9j
bGFzc0hlcml0YWdlKSB7CkBAIC0zMDYxLDIxICszMTE0LDIxIEBAIFJlZ2lzdGVySUQqIENsYXNz
RXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklECiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBJbXBvcnREZWNsYXJh
dGlvbk5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotdm9pZCBJbXBvcnREZWNsYXJhdGlv
bk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKQordm9p
ZCBJbXBvcnREZWNsYXJhdGlvbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqLCBUYWlsQ2FsbE1vZGUpCiB7CiAgICAgLy8gRG8gbm90aGluZyBhdCBydW50
aW1lLgogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRXhwb3J0QWxsRGVj
bGFyYXRpb25Ob2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLXZvaWQgRXhwb3J0QWxsRGVjbGFy
YXRpb25Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKikK
K3ZvaWQgRXhwb3J0QWxsRGVjbGFyYXRpb25Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiwgVGFpbENhbGxNb2RlKQogewogICAgIC8vIERvIG5vdGhpbmcg
YXQgcnVudGltZS4KIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEV4cG9y
dERlZmF1bHREZWNsYXJhdGlvbk5vZGUgLS0tLS0tLS0tLS0tLS0tLQogCi12b2lkIEV4cG9ydERl
ZmF1bHREZWNsYXJhdGlvbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCit2b2lkIEV4cG9ydERlZmF1bHREZWNsYXJhdGlvbk5v
ZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklE
KiBkc3QsIFRhaWxDYWxsTW9kZSkKIHsKICAgICBBU1NFUlQobV9kZWNsYXJhdGlvbik7CiAgICAg
Z2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9kZWNsYXJhdGlvbik7CkBAIC0zMDgzLDcgKzMxMzYs
NyBAQCB2b2lkIEV4cG9ydERlZmF1bHREZWNsYXJhdGlvbk5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0gRXhwb3J0TG9jYWxEZWNsYXJhdGlvbk5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tCiAK
LXZvaWQgRXhwb3J0TG9jYWxEZWNsYXJhdGlvbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCit2b2lkIEV4cG9ydExvY2FsRGVj
bGFyYXRpb25Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2FsbE1vZGUpCiB7CiAgICAgQVNTRVJUKG1fZGVjbGFyYXRp
b24pOwogICAgIGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fZGVjbGFyYXRpb24pOwpAQCAtMzA5
MSwxMyArMzE0NCwxMyBAQCB2b2lkIEV4cG9ydExvY2FsRGVjbGFyYXRpb25Ob2RlOjplbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaQogCiAvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0gRXhwb3J0TmFtZWREZWNsYXJhdGlvbk5vZGUgLS0tLS0tLS0t
LS0tLS0tLS0tCiAKLXZvaWQgRXhwb3J0TmFtZWREZWNsYXJhdGlvbk5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKQordm9pZCBFeHBvcnROYW1lZERlY2xh
cmF0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCos
IFRhaWxDYWxsTW9kZSkKIHsKICAgICAvLyBEbyBub3RoaW5nIGF0IHJ1bnRpbWUuCiB9CiAKIC8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBEZXN0cnVjdHVyaW5nQXNzaWdubWVudE5v
ZGUgLS0tLS0tLS0tLS0tLS0tLS0KLVJlZ2lzdGVySUQqIERlc3RydWN0dXJpbmdBc3NpZ25tZW50
Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVy
SUQqIGRzdCkKK1JlZ2lzdGVySUQqIERlc3RydWN0dXJpbmdBc3NpZ25tZW50Tm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFp
bENhbGxNb2RlKQogewogICAgIGlmIChSZWdpc3RlcklEKiByZXN1bHQgPSBtX2JpbmRpbmdzLT5l
bWl0RGlyZWN0QmluZGluZyhnZW5lcmF0b3IsIGRzdCwgbV9pbml0aWFsaXplcikpCiAgICAgICAg
IHJldHVybiByZXN1bHQ7CkBAIC0zMzQ3LDcgKzM0MDAsNyBAQCB2b2lkIEJpbmRpbmdOb2RlOjpj
b2xsZWN0Qm91bmRJZGVudGlmaWVycyhWZWN0b3I8SWRlbnRpZmllcj4mIGlkZW50aWZpZXJzKSBj
b25zdAogICAgIGlkZW50aWZpZXJzLmFwcGVuZChtX2JvdW5kUHJvcGVydHkpOwogfQogICAgIAot
UmVnaXN0ZXJJRCogU3ByZWFkRXhwcmVzc2lvbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqKQorUmVnaXN0ZXJJRCogU3ByZWFkRXhwcmVzc2lvbk5vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqLCBUYWlsQ2FsbE1v
ZGUpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCBlZDMwMGU3NzY0NTVhZmYxYTk3
M2VhYmI1MzdlY2ViZWY0YjQ3NzExLi43OTAxNzYzMGMxODFkYmVkMGU4ZWIyNGVjNjFkZWVjNjQx
NWNkM2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC03OSw2ICs3OSwx
MSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9OwogICAgIGlubGluZSBGYWxsVGhyb3VnaE1vZGUg
aW52ZXJ0KEZhbGxUaHJvdWdoTW9kZSBmYWxsVGhyb3VnaE1vZGUpIHsgcmV0dXJuIHN0YXRpY19j
YXN0PEZhbGxUaHJvdWdoTW9kZT4oIWZhbGxUaHJvdWdoTW9kZSk7IH0KIAorICAgIGVudW0gVGFp
bENhbGxNb2RlIHsKKyAgICAgICAgQ2FuSGF2ZVRhaWxDYWxscywKKyAgICAgICAgTm9UYWlsQ2Fs
bHMsCisgICAgfTsKKwogICAgIG5hbWVzcGFjZSBEZWNsYXJhdGlvblN0YWNrcyB7CiAgICAgICAg
IHR5cGVkZWYgVmVjdG9yPEZ1bmN0aW9uTWV0YWRhdGFOb2RlKj4gRnVuY3Rpb25TdGFjazsKICAg
ICB9CkBAIC0xNDksNyArMTU0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEV4cHJlc3Np
b25Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFJlc3VsdFR5cGUgPSBSZXN1bHRUeXBlOjp1
bmtub3duVHlwZSgpKTsKIAogICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklE
KiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBkZXN0aW5hdGlv
biA9IDApID0gMDsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBkZXN0aW5hdGlvbiA9IDAsIFRhaWxDYWxsTW9k
ZSA9IE5vVGFpbENhbGxzKSA9IDA7CiAKICAgICAgICAgdmlydHVhbCBib29sIGlzTnVtYmVyKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzU3RyaW5nKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTE4Nyw3ICsxOTIsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgU3RhdGVtZW50Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mKTsKIAogICAg
IHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqIGRlc3RpbmF0aW9uID0gMCkgPSAwOworICAgICAgICB2aXJ0dWFs
IHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogZGVzdGlu
YXRpb24gPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgPSAwOwogCiAgICAgICAgIHZv
aWQgc2V0TG9jKHVuc2lnbmVkIGZpcnN0TGluZSwgdW5zaWduZWQgbGFzdExpbmUsIGludCBzdGFy
dE9mZnNldCwgaW50IGxpbmVTdGFydE9mZnNldCk7CiAgICAgICAgIHVuc2lnbmVkIGxhc3RMaW5l
KCkgY29uc3QgeyByZXR1cm4gbV9sYXN0TGluZTsgfQpAQCAtMjMwLDcgKzIzNSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNDb25zdGFudCgpIGNvbnN0ICBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgICAgIHZpcnR1YWwgSlNWYWx1ZSBqc1ZhbHVlKEJ5
dGVjb2RlR2VuZXJhdG9yJikgY29uc3QgPSAwOwogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1
YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5v
VGFpbENhbGxzKSBvdmVycmlkZTsKICAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZUlu
Q29uZGl0aW9uQ29udGV4dChCeXRlY29kZUdlbmVyYXRvciYsIExhYmVsKiB0cnVlVGFyZ2V0LCBM
YWJlbCogZmFsc2VUYXJnZXQsIEZhbGxUaHJvdWdoTW9kZSkgb3ZlcnJpZGU7CiAgICAgfTsKIApA
QCAtMjYwLDcgKzI2NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBOdW1iZXJOb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGRvdWJsZSB2YWx1ZSk7CiAgICAgICAgIGRvdWJsZSB2YWx1
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzSW50
ZWdlck5vZGUoKSBjb25zdCA9IDA7Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZSBmaW5h
bDsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVy
cmlkZSBmaW5hbDsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc051bWJl
cigpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KQEAgLTQ3MCw3ICs0NzUs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgcmF3KCkgeyBy
ZXR1cm4gbV9yYXc7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJ
RCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVy
cmlkZTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBv
dmVycmlkZTsKIAogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX2Nvb2tlZDsKICAgICAgICAg
Y29uc3QgSWRlbnRpZmllciYgbV9yYXc7CkBAIC00OTgsNyArNTAzLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIFRlbXBsYXRlRXhwcmVzc2lvbkxpc3ROb2RlKiB0ZW1wbGF0ZUV4cHJlc3Np
b25zKCkgY29uc3QgeyByZXR1cm4gbV90ZW1wbGF0ZUV4cHJlc3Npb25zOyB9CiAKICAgICBwcml2
YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVn
aXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAw
LCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgVGVtcGxh
dGVTdHJpbmdMaXN0Tm9kZSogbV90ZW1wbGF0ZVN0cmluZ3M7CiAgICAgICAgIFRlbXBsYXRlRXhw
cmVzc2lvbkxpc3ROb2RlKiBtX3RlbXBsYXRlRXhwcmVzc2lvbnM7CkBAIC01MTEsNyArNTE2LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFRlbXBsYXRlTGl0ZXJhbE5vZGUqIHRlbXBsYXRl
TGl0ZXJhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdGVtcGxhdGVMaXRlcmFsOyB9CiAKICAgICBwcml2
YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVn
aXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAw
LCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgRXhwcmVz
c2lvbk5vZGUqIG1fdGFnOwogICAgICAgICBUZW1wbGF0ZUxpdGVyYWxOb2RlKiBtX3RlbXBsYXRl
TGl0ZXJhbDsKQEAgLTUyMyw3ICs1MjgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVn
RXhwTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiBwYXR0ZXJu
LCBjb25zdCBJZGVudGlmaWVyJiBmbGFncyk7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0
dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBO
b1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9wYXR0
ZXJuOwogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX2ZsYWdzOwpAQCAtNTM0LDcgKzUzOSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBUaGlzTm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBUaGlzVERaTW9kZSk7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lz
dGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkg
b3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxs
cykgb3ZlcnJpZGU7CiAKICAgICAgICAgYm9vbCBtX3Nob3VsZEFsd2F5c0VtaXRURFpDaGVjazsK
ICAgICB9OwpAQCAtNTQ1LDcgKzU1MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgcHJpdmF0
ZToKICAgICAgICAgdmlydHVhbCBib29sIGlzU3VwZXJOb2RlKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZp
cnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAgICAgfTsK
IAogICAgIGNsYXNzIE5ld1RhcmdldE5vZGUgZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUg
ewpAQCAtNTUzLDcgKzU1OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBOZXdUYXJnZXRO
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmly
dHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3Rl
cklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0g
Tm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogICAgIH07CiAKICAgICBjbGFzcyBSZXNvbHZlTm9kZSA6
IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CkBAIC01NjMsNyArNTY4LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVy
biBtX2lkZW50OyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQq
IGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJp
ZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3Zl
cnJpZGU7CiAKICAgICAgICAgdmlydHVhbCBib29sIGlzUHVyZShCeXRlY29kZUdlbmVyYXRvciYp
IGNvbnN0IG92ZXJyaWRlOwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNMb2NhdGlvbigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KQEAgLTU5OCw3ICs2MDMsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgICAgICBFbGVtZW50Tm9kZSogZWxlbWVudHMoKSBjb25zdCB7IEFTU0VSVChp
c1NpbXBsZUFycmF5KCkpOyByZXR1cm4gbV9lbGVtZW50OyB9CiAgICAgcHJpdmF0ZToKLSAgICAg
ICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxN
b2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1Np
bXBsZUFycmF5KCkgY29uc3Qgb3ZlcnJpZGU7CiAKQEAgLTYzOCw3ICs2NDMsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgUHJvcGVydHlMaXN0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBQcm9wZXJ0eU5vZGUqLCBQcm9wZXJ0eUxpc3ROb2RlKik7CiAKICAgICBwcml2YXRlOgotICAg
ICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCog
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2Fs
bE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgZW1pdFB1dENvbnN0
YW50UHJvcGVydHkoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiwgUHJvcGVydHlOb2Rl
Jik7CiAKICAgICAgICAgUHJvcGVydHlOb2RlKiBtX25vZGU7CkBAIC02NTEsNyArNjU2LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE9iamVjdExpdGVyYWxOb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIFByb3BlcnR5TGlzdE5vZGUqKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZp
cnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9
IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKIAogICAgICAgICBQcm9wZXJ0eUxpc3ROb2RlKiBtX2xp
c3Q7CiAgICAgfTsKQEAgLTY2Niw3ICs2NzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
Ym9vbCBzdWJzY3JpcHRIYXNBc3NpZ25tZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fc3Vic2NyaXB0
SGFzQXNzaWdubWVudHM7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0
ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBv
dmVycmlkZTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxz
KSBvdmVycmlkZTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNMb2NhdGlvbigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzQnJhY2tldEFj
Y2Vzc29yTm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KQEAgLTY4NCw3ICs2
ODksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnRp
ZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnQ7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAg
IHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9k
ZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNMb2Nh
dGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgdmlydHVhbCBi
b29sIGlzRG90QWNjZXNzb3JOb2RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpA
QCAtNzAwLDcgKzcwNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBFeHByZXNzaW9uTm9k
ZSogZXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fZXhwcmVzc2lvbjsgfQogICAgICAgICAK
ICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZp
cnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAgICAgICAg
IAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTcHJlYWRFeHByZXNzaW9uKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9leHByZXNzaW9u
OwpAQCAtNzE1LDcgKzcyMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBFeHByZXNzaW9u
Tm9kZSogbV9leHByOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklE
KiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJy
aWRlOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92
ZXJyaWRlOwogICAgIH07CiAKICAgICBjbGFzcyBBcmd1bWVudHNOb2RlIDogcHVibGljIFBhcnNl
ckFyZW5hRnJlZWFibGUgewpAQCAtNzMyLDcgKzczNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBOZXdFeHByTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSos
IEFyZ3VtZW50c05vZGUqKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0
ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBv
dmVycmlkZTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxz
KSBvdmVycmlkZTsKIAogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9leHByOwogICAgICAgICBB
cmd1bWVudHNOb2RlKiBtX2FyZ3M7CkBAIC03NDMsNyArNzQ4LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIEV2YWxGdW5jdGlvbkNhbGxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEFy
Z3VtZW50c05vZGUqLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAg
ICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0
dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogCiAgICAgICAg
IEFyZ3VtZW50c05vZGUqIG1fYXJnczsKICAgICB9OwpAQCAtNzUzLDcgKzc1OCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBGdW5jdGlvbkNhbGxWYWx1ZU5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqLCBBcmd1bWVudHNOb2RlKiwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwg
UmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFp
bENhbGxzKSBvdmVycmlkZTsKIAogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9leHByOwogICAg
ICAgICBBcmd1bWVudHNOb2RlKiBtX2FyZ3M7CkBAIC03NjQsNyArNzY5LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBBcmd1bWVudHNOb2RlKiwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwg
UmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFp
bENhbGxzKSBvdmVycmlkZTsKIAogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX2lkZW50Owog
ICAgICAgICBBcmd1bWVudHNOb2RlKiBtX2FyZ3M7CkBAIC03NzUsNyArNzgwLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0
LCBib29sIHN1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzLCBBcmd1bWVudHNOb2RlKiwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZp
cnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9
IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKIAogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9iYXNl
OwogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9zdWJzY3JpcHQ7CkBAIC03ODgsNyArNzkzLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBB
cmd1bWVudHNOb2RlKiwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKIAog
ICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmly
dHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3Rl
cklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKIAogICAgIHBy
b3RlY3RlZDoKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fYmFzZTsKQEAgLTgwOSw3ICs4MTQs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICN1bmRlZiBKU0NfREVDTEFSRV9CWVRFQ09ERV9JTlRSSU5T
SUNfRlVOQ1RJT05TCiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQq
IGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJp
ZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3Zl
cnJpZGU7CiAKICAgICAgICAgRW1pdHRlclR5cGUgbV9lbWl0dGVyOwogICAgICAgICBjb25zdCBJ
ZGVudGlmaWVyJiBtX2lkZW50OwpAQCAtODIxLDcgKzgyNiw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBF
eHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIEFyZ3VtZW50c05vZGUqLCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0
YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAgICAgcHJpdmF0ZToKLSAg
ICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
LCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQq
IGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENh
bGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogICAgIH07CiAgICAgCiAgICAgY2xhc3Mg
QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlIDogcHVibGljIEZ1bmN0aW9uQ2FsbERvdE5vZGUgewpA
QCAtODI5LDcgKzgzNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBBcHBseUZ1bmN0aW9u
Q2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2Us
IGNvbnN0IElkZW50aWZpZXImLCBBcmd1bWVudHNOb2RlKiwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90RW5kKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0
ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBv
dmVycmlkZTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxz
KSBvdmVycmlkZTsKICAgICB9OwogCiAgICAgY2xhc3MgRGVsZXRlUmVzb2x2ZU5vZGUgOiBwdWJs
aWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CkBAIC04
MzcsNyArODQyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIERlbGV0ZVJlc29sdmVOb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVh
bCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9U
YWlsQ2FsbHMpIG92ZXJyaWRlOwogCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1faWRlbnQ7
CiAgICAgfTsKQEAgLTg0Nyw3ICs4NTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRGVs
ZXRlQnJhY2tldE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJh
c2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZv
dCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBkaXZvdEVuZCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQq
IGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJp
ZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3Zl
cnJpZGU7CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fYmFzZTsKICAgICAgICAgRXhwcmVz
c2lvbk5vZGUqIG1fc3Vic2NyaXB0OwpAQCAtODU4LDcgKzg2Myw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBEZWxldGVEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Np
b25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRp
dm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGRpdm90RW5kKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJ
RCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVy
cmlkZTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBv
dmVycmlkZTsKIAogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9iYXNlOwogICAgICAgICBjb25z
dCBJZGVudGlmaWVyJiBtX2lkZW50OwpAQCAtODY5LDcgKzg3NCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBEZWxldGVWYWx1ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVz
c2lvbk5vZGUqKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCog
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlk
ZTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVy
cmlkZTsKIAogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9leHByOwogICAgIH07CkBAIC04Nzks
NyArODg0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFZvaWROb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKik7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2
aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUg
PSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhw
cjsKICAgICB9OwpAQCAtODkxLDcgKzg5Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBj
b25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudDsgfQog
CiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2
aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogCiAgICAg
ICAgIGNvbnN0IElkZW50aWZpZXImIG1faWRlbnQ7CiAgICAgfTsKQEAgLTkwMSw3ICs5MDYsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVHlwZU9mVmFsdWVOb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKik7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0
dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBO
b1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcjsK
ICAgICB9OwpAQCAtOTExLDcgKzkxNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBQcmVm
aXhOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiwgT3BlcmF0b3Is
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKICAgICBwcm90ZWN0ZWQ6
Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3Rl
cklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRh
aWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKICAgICAgICAgdmlydHVhbCBSZWdp
c3RlcklEKiBlbWl0UmVzb2x2ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7
CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJyYWNrZXQoQnl0ZWNvZGVHZW5lcmF0
b3ImLCBSZWdpc3RlcklEKiA9IDApOwogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRE
b3QoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtOTI1LDcgKzkzMCw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBQb3N0Zml4Tm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBFeHByZXNzaW9uTm9kZSosIE9wZXJhdG9yLCBjb25zdCBKU1RleHRQb3NpdGlvbiYg
ZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZGl2b3RFbmQpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3Rl
cklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92
ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMp
IG92ZXJyaWRlOwogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRSZXNvbHZlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKICAgICAgICAgdmlydHVh
bCBSZWdpc3RlcklEKiBlbWl0QnJhY2tldChCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gMCkgb3ZlcnJpZGU7CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdERvdChCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CkBAIC05NDAsNyArOTQ1
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGNvbnN0IEV4cHJlc3Npb25Ob2RlKiBleHBy
KCkgY29uc3QgeyByZXR1cm4gbV9leHByOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0
dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBO
b1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQoKSBjb25z
dCB7IHJldHVybiBtX29wY29kZUlEOyB9CiAKQEAgLTk3MCw3ICs5NzUsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgY29uc3QgRXhwcmVzc2lvbk5vZGUqIGV4cHIoKSBjb25zdCB7IHJldHVy
biBtX2V4cHI7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCog
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlk
ZTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVy
cmlkZTsKIAogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9leHByOwogICAgIH07CkBAIC05OTUs
NyArMTAwMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdm9p
ZCB0cnlGb2xkVG9CcmFuY2goQnl0ZWNvZGVHZW5lcmF0b3ImLCBUcmlTdGF0ZSYgYnJhbmNoQ29u
ZGl0aW9uLCBFeHByZXNzaW9uTm9kZSomIGJyYW5jaEV4cHJlc3Npb24pOwotICAgICAgICB2aXJ0
dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBO
b1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIE9wY29kZUlE
IG9wY29kZUlEKCkgY29uc3QgeyByZXR1cm4gbV9vcGNvZGVJRDsgfQpAQCAtMTA3OSw3ICsxMDg0
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFRocm93YWJsZUJpbmFyeU9wTm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2Rl
KiBleHByMiwgT3Bjb2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAKICAgICBwcml2
YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVn
aXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAw
LCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAgICAgfTsKICAgICAKICAg
ICBjbGFzcyBJbnN0YW5jZU9mTm9kZSA6IHB1YmxpYyBUaHJvd2FibGVCaW5hcnlPcE5vZGUgewpA
QCAtMTA4Nyw3ICsxMDkyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEluc3RhbmNlT2ZO
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogCiAgICAgcHJpdmF0
ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIFJlZ2lz
dGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwg
VGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogICAgIH07CiAKICAgICBjbGFz
cyBJbk5vZGUgOiBwdWJsaWMgVGhyb3dhYmxlQmluYXJ5T3BOb2RlIHsKQEAgLTExMDAsNyArMTEw
NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBFcXVhbE5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFs
IFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1Rh
aWxDYWxscykgb3ZlcnJpZGU7CiAgICAgfTsKIAogICAgIGNsYXNzIE5vdEVxdWFsTm9kZSA6IHB1
YmxpYyBCaW5hcnlPcE5vZGUgewpAQCAtMTExMyw3ICsxMTE4LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIFN0cmljdEVxdWFsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNz
aW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2ln
bm1lbnRzKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsK
KyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlk
ZTsKICAgICB9OwogCiAgICAgY2xhc3MgTm90U3RyaWN0RXF1YWxOb2RlIDogcHVibGljIEJpbmFy
eU9wTm9kZSB7CkBAIC0xMTQyLDcgKzExNDcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
TG9naWNhbE9wTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogZXhw
cjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgTG9naWNhbE9wZXJhdG9yKTsKIAogICAgIHByaXZh
dGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCBSZWdp
c3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAs
IFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKICAgICAgICAgdmlydHVhbCB2
b2lkIGVtaXRCeXRlY29kZUluQ29uZGl0aW9uQ29udGV4dChCeXRlY29kZUdlbmVyYXRvciYsIExh
YmVsKiB0cnVlVGFyZ2V0LCBMYWJlbCogZmFsc2VUYXJnZXQsIEZhbGxUaHJvdWdoTW9kZSkgb3Zl
cnJpZGU7CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcjE7CkBAIC0xMTU2LDcgKzEx
NjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgQ29uZGl0aW9uYWxOb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBsb2dpY2FsLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMik7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2
aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUg
PSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fbG9n
aWNhbDsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcjE7CkBAIC0xMTY4LDcgKzExNzMs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVhZE1vZGlmeVJlc29sdmVOb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBPcGVyYXRvciwgRXhwcmVzc2lv
bk5vZGUqICByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBS
ZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWls
Q2FsbHMpIG92ZXJyaWRlOwogCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1faWRlbnQ7CiAg
ICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX3JpZ2h0OwpAQCAtMTE4MSw3ICsxMTg2LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIEFzc2lnblJlc29sdmVOb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIEFzc2lnbm1l
bnRDb250ZXh0KTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCog
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlk
ZTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVy
cmlkZTsKIAogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX2lkZW50OwogICAgICAgICBFeHBy
ZXNzaW9uTm9kZSogbV9yaWdodDsKQEAgLTExOTMsNyArMTE5OCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBSZWFkTW9kaWZ5QnJhY2tldE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
RXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIE9wZXJhdG9y
LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgc3Vic2NyaXB0SGFzQXNzaWdubWVudHMsIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
RW5kKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAg
ICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
LCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsK
IAogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9iYXNlOwogICAgICAgICBFeHByZXNzaW9uTm9k
ZSogbV9zdWJzY3JpcHQ7CkBAIC0xMjA4LDcgKzEyMTMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgQXNzaWduQnJhY2tldE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lv
bk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIEV4cHJlc3Npb25Ob2RlKiBy
aWdodCwgYm9vbCBzdWJzY3JpcHRIYXNBc3NpZ25tZW50cywgYm9vbCByaWdodEhhc0Fzc2lnbm1l
bnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBk
aXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAgICAgcHJpdmF0
ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIFJlZ2lz
dGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwg
VGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogCiAgICAgICAgIEV4cHJlc3Np
b25Ob2RlKiBtX2Jhc2U7CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX3N1YnNjcmlwdDsKQEAg
LTEyMjIsNyArMTIyNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBBc3NpZ25Eb3ROb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVu
dGlmaWVyJiwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKICAgICBwcml2YXRlOgot
ICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJ
RCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWls
Q2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgRXhwcmVzc2lvbk5v
ZGUqIG1fYmFzZTsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9pZGVudDsKQEAgLTEyMzUs
NyArMTI0MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWFkTW9kaWZ5RG90Tm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRp
ZmllciYsIE9wZXJhdG9yLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3Np
Z25tZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlv
biYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKIAogICAgIHBy
aXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCBS
ZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKIAogICAgICAgICBFeHBy
ZXNzaW9uTm9kZSogbV9iYXNlOwogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX2lkZW50OwpA
QCAtMTI0OSw3ICsxMjU0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEFzc2lnbkVycm9y
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3Qs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYg
ZGl2b3RFbmQpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRl
OworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJy
aWRlOwogICAgIH07CiAgICAgCiAgICAgY2xhc3MgQ29tbWFOb2RlIGZpbmFsIDogcHVibGljIEV4
cHJlc3Npb25Ob2RlIHsKQEAgLTEyNjEsNyArMTI2Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBib29sIGlzQ29tbWFOb2RlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7Cisg
ICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7
CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcjsKICAgICAgICAgQ29tbWFOb2RlKiBt
X25leHQ7CkBAIC0xMjc2LDcgKzEyODEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU3Rh
dGVtZW50Tm9kZSogc2luZ2xlU3RhdGVtZW50KCkgY29uc3Q7CiAgICAgICAgIFN0YXRlbWVudE5v
ZGUqIGxhc3RTdGF0ZW1lbnQoKSBjb25zdDsKIAotICAgICAgICB2b2lkIGVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqIGRlc3RpbmF0aW9uKTsKKyAgICAgICAgdm9p
ZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBkZXN0aW5hdGlv
biwgVGFpbENhbGxNb2RlKTsKICAgICAgICAgdm9pZCBhbmFseXplTW9kdWxlKE1vZHVsZUFuYWx5
emVyJik7CiAKICAgICBwcml2YXRlOgpAQCAtMTI5Miw3ICsxMjk3LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIFN0YXRlbWVudE5vZGUqIGxhc3RTdGF0ZW1lbnQoKSBjb25zdDsKIAogICAg
IHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIHZvaWQg
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2Fs
bE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgdmlydHVhbCBib29sIGlz
QmxvY2soKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKQEAgLTEzMDQsNyArMTMw
OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBFbXB0eVN0YXRlbWVudE5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJik7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIHZvaWQg
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlk
ZTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwog
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5U3RhdGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gdHJ1ZTsgfQogICAgIH07CkBAIC0xMzE0LDcgKzEzMTksNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgRGVidWdnZXJTdGF0ZW1lbnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYpOwogICAgICAgICAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogICAgIH07
CiAKICAgICBjbGFzcyBFeHByU3RhdGVtZW50Tm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsK
QEAgLTEzMjYsNyArMTMzMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByaXZhdGU6CiAgICAg
ICAgIHZpcnR1YWwgYm9vbCBpc0V4cHJTdGF0ZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxD
YWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKIAogICAgICAgICBFeHByZXNzaW9uTm9k
ZSogbV9leHByOwogICAgIH07CkBAIC0xMzM1LDcgKzEzNDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICBwdWJsaWM6CiAgICAgICAgIERlY2xhcmF0aW9uU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKik7CiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVh
bCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkg
b3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVy
cmlkZTsKIAogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9leHByOwogICAgIH07CkBAIC0xMzQ1
LDcgKzEzNTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRW1wdHlWYXJFeHByZXNzaW9u
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImKTsKIAogICAgIHByaXZh
dGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCBSZWdp
c3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAs
IFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKIAogICAgICAgICBjb25zdCBJ
ZGVudGlmaWVyJiBtX2lkZW50OwogICAgIH07CkBAIC0xMzU1LDcgKzEzNjAsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgRW1wdHlMZXRFeHByZXNzaW9uKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIGNvbnN0IElkZW50aWZpZXImKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwg
UmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFp
bENhbGxzKSBvdmVycmlkZTsKIAogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX2lkZW50Owog
ICAgIH07CkBAIC0xMzY1LDcgKzEzNzAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSWZF
bHNlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogY29uZGl0aW9u
LCBTdGF0ZW1lbnROb2RlKiBpZkJsb2NrLCBTdGF0ZW1lbnROb2RlKiBlbHNlQmxvY2spOwogCiAg
ICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxD
YWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKICAgICAgICAgYm9vbCB0cnlGb2xkQnJl
YWtBbmRDb250aW51ZShCeXRlY29kZUdlbmVyYXRvciYsIFN0YXRlbWVudE5vZGUqIGlmQmxvY2ss
CiAgICAgICAgICAgICBMYWJlbComIHRydWVUYXJnZXQsIEZhbGxUaHJvdWdoTW9kZSYpOwogCkBA
IC0xMzc5LDcgKzEzODQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRG9XaGlsZU5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgU3RhdGVtZW50Tm9kZSosIEV4cHJlc3Npb25Ob2RlKik7
CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVh
bCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwg
VGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogCiAgICAgICAgIFN0YXRlbWVu
dE5vZGUqIG1fc3RhdGVtZW50OwogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9leHByOwpAQCAt
MTM5MCw3ICsxMzk1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFdoaWxlTm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSosIFN0YXRlbWVudE5vZGUqKTsKIAog
ICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIHZv
aWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWls
Q2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgRXhwcmVzc2lvbk5v
ZGUqIG1fZXhwcjsKICAgICAgICAgU3RhdGVtZW50Tm9kZSogbV9zdGF0ZW1lbnQ7CkBAIC0xNDAx
LDcgKzE0MDYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRm9yTm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIzLCBTdGF0ZW1lbnROb2RlKiwgVmFyaWFibGVFbnZpcm9u
bWVudCYpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKIAogICAgICAgICBF
eHByZXNzaW9uTm9kZSogbV9leHByMTsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcjI7
CkBAIC0xNDMwLDcgKzE0MzUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0
TG9vcEhlYWRlcihCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqIHByb3BlcnR5TmFtZSk7
CiAgICAgICAgIHZvaWQgZW1pdE11bHRpTG9vcEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwg
UmVnaXN0ZXJJRCogZHN0KTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmly
dHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0g
MCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogICAgIH07CiAgICAgCiAg
ICAgY2xhc3MgRm9yT2ZOb2RlIDogcHVibGljIEVudW1lcmF0aW9uTm9kZSB7CkBAIC0xNDM4LDcg
KzE0NDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRm9yT2ZOb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiwgRXhwcmVzc2lvbk5vZGUqLCBTdGF0ZW1lbnRO
b2RlKiwgVmFyaWFibGVFbnZpcm9ubWVudCYpOwogICAgICAgICAKICAgICBwcml2YXRlOgotICAg
ICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWls
Q2FsbHMpIG92ZXJyaWRlOwogICAgIH07CiAKICAgICBjbGFzcyBDb250aW51ZU5vZGUgOiBwdWJs
aWMgU3RhdGVtZW50Tm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKQEAgLTE0
NDgsNyArMTQ1Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICBwcml2YXRlOgog
ICAgICAgICB2aXJ0dWFsIGJvb2wgaXNDb250aW51ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxs
TW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKIAogICAgICAgICBjb25zdCBJZGVudGlmaWVy
JiBtX2lkZW50OwogICAgIH07CkBAIC0xNDYwLDcgKzE0NjUsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBib29sIGlzQnJlYWsoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAg
ICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9pZGVudDsKICAgICB9OwpAQCAtMTQ3Miw3ICsxNDc3
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiB2YWx1ZSgpIHsg
cmV0dXJuIG1fdmFsdWU7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRl
OworICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwg
UmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAK
ICAgICAgICAgdmlydHVhbCBib29sIGlzUmV0dXJuTm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KIApAQCAtMTQ4NCw3ICsxNDg5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIFdpdGhOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiwgU3Rh
dGVtZW50Tm9kZSosIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgdWludDMyX3QgZXhwcmVz
c2lvbkxlbmd0aCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogCiAgICAg
ICAgIEV4cHJlc3Npb25Ob2RlKiBtX2V4cHI7CiAgICAgICAgIFN0YXRlbWVudE5vZGUqIG1fc3Rh
dGVtZW50OwpAQCAtMTQ5Nyw3ICsxNTAyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIExh
YmVsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBT
dGF0ZW1lbnROb2RlKik7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIHZvaWQgZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsK
KyAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogCiAg
ICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1fbmFtZTsKICAgICAgICAgU3RhdGVtZW50Tm9kZSog
bV9zdGF0ZW1lbnQ7CkBAIC0xNTA4LDcgKzE1MTMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgVGhyb3dOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKik7CiAK
ICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCB2
b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFp
bENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogCiAgICAgICAgIEV4cHJlc3Npb25O
b2RlKiBtX2V4cHI7CiAgICAgfTsKQEAgLTE1MTgsNyArMTUyMyw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBUcnlOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFN0YXRlbWVudE5vZGUq
IHRyeUJsb2NrLCBjb25zdCBJZGVudGlmaWVyJiBleGNlcHRpb25JZGVudCwgU3RhdGVtZW50Tm9k
ZSogY2F0Y2hCbG9jaywgVmFyaWFibGVFbnZpcm9ubWVudCYgY2F0Y2hFbnZpcm9ubWVudCwgU3Rh
dGVtZW50Tm9kZSogZmluYWxseUJsb2NrKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1
YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAp
IG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3Zl
cnJpZGU7CiAKICAgICAgICAgU3RhdGVtZW50Tm9kZSogbV90cnlCbG9jazsKICAgICAgICAgY29u
c3QgSWRlbnRpZmllciYgbV90aHJvd25WYWx1ZUlkZW50OwpAQCAtMTU3Miw3ICsxNTc3LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgU3RhdGVtZW50Tm9kZSogc2luZ2xlU3RhdGVtZW50
KCkgY29uc3Q7CiAKLSAgICAgICAgdm9pZCBlbWl0U3RhdGVtZW50c0J5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogZGVzdGluYXRpb24pOworICAgICAgICB2b2lkIGVtaXRT
dGF0ZW1lbnRzQnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBkZXN0aW5h
dGlvbiwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpOwogICAgICAgICAKICAgICAgICAgdm9p
ZCBzZXRDbG9zZWRWYXJpYWJsZXMoVmVjdG9yPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+JiYp
IHsgfQogCkBAIC0xNjA1LDcgKzE2MTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29u
c3QgVmVjdG9yPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+JiBjbG9zZWRWYXJpYWJsZXMoKSBj
b25zdCB7IHJldHVybiBtX2Nsb3NlZFZhcmlhYmxlczsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAg
ICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENh
bGxzKSBvdmVycmlkZTsKICAgICAgICAgVmVjdG9yPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+
IG1fY2xvc2VkVmFyaWFibGVzOwogICAgICAgICB1bnNpZ25lZCBtX3N0YXJ0Q29sdW1uOwogICAg
ICAgICB1bnNpZ25lZCBtX2VuZENvbHVtbjsKQEAgLTE2MjEsNyArMTYyNiw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzY29wZUlzRnVuY3Rpb24gPSBmYWxz
ZTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0
dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAw
LCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgdW5zaWdu
ZWQgbV9lbmRDb2x1bW47CiAgICAgfTsKQEAgLTE2MzYsNyArMTY0MSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzY29wZUlzRnVuY3Rpb24gPSBmYWxzZTsK
IAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFs
IHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBU
YWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAgICAgICAgIHVuc2lnbmVkIG1f
c3RhcnRDb2x1bW47CiAgICAgICAgIHVuc2lnbmVkIG1fZW5kQ29sdW1uOwogICAgIH07CkBAIC0x
Njk0LDcgKzE2OTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTW9kdWxlTmFtZU5vZGUq
IG1vZHVsZU5hbWUoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZU5hbWU7IH0KIAogICAgIHByaXZh
dGU6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
LCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUg
PSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBhbmFseXplTW9k
dWxlKE1vZHVsZUFuYWx5emVyJikgb3ZlcnJpZGU7CiAKICAgICAgICAgSW1wb3J0U3BlY2lmaWVy
TGlzdE5vZGUqIG1fc3BlY2lmaWVyTGlzdDsKQEAgLTE3MDgsNyArMTcxMyw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBNb2R1bGVOYW1lTm9kZSogbW9kdWxlTmFtZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbW9kdWxlTmFtZTsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCB2b2lk
IGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJp
ZGU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
LCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsK
ICAgICAgICAgdmlydHVhbCB2b2lkIGFuYWx5emVNb2R1bGUoTW9kdWxlQW5hbHl6ZXImKSBvdmVy
cmlkZTsKIAogICAgICAgICBNb2R1bGVOYW1lTm9kZSogbV9tb2R1bGVOYW1lOwpAQCAtMTcyMiw3
ICsxNzI3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGxv
Y2FsTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxOYW1lOyB9CiAKICAgICBwcml2YXRlOgot
ICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9U
YWlsQ2FsbHMpIG92ZXJyaWRlOwogICAgICAgICB2aXJ0dWFsIHZvaWQgYW5hbHl6ZU1vZHVsZShN
b2R1bGVBbmFseXplciYpIG92ZXJyaWRlOwogICAgICAgICBTdGF0ZW1lbnROb2RlKiBtX2RlY2xh
cmF0aW9uOwogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX2xvY2FsTmFtZTsKQEAgLTE3MzUs
NyArMTc0MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBjb25zdCBTdGF0ZW1lbnROb2Rl
JiBkZWNsYXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuICptX2RlY2xhcmF0aW9uOyB9CiAKICAgICBw
cml2YXRlOgotICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxN
b2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogICAgICAgICB2aXJ0dWFsIHZvaWQgYW5hbHl6
ZU1vZHVsZShNb2R1bGVBbmFseXplciYpIG92ZXJyaWRlOwogICAgICAgICBTdGF0ZW1lbnROb2Rl
KiBtX2RlY2xhcmF0aW9uOwogICAgIH07CkBAIC0xNzc0LDcgKzE3NzksNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgTW9kdWxlTmFtZU5vZGUqIG1vZHVsZU5hbWUoKSBjb25zdCB7IHJldHVy
biBtX21vZHVsZU5hbWU7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRl
OworICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwg
UmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBhbmFseXplTW9kdWxlKE1vZHVsZUFuYWx5emVyJikgb3ZlcnJp
ZGU7CiAgICAgICAgIEV4cG9ydFNwZWNpZmllckxpc3ROb2RlKiBtX3NwZWNpZmllckxpc3Q7CiAg
ICAgICAgIE1vZHVsZU5hbWVOb2RlKiBtX21vZHVsZU5hbWUgeyBudWxscHRyIH07CkBAIC0xODcx
LDcgKzE4NzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBGdW5jdGlvblBhcmFtZXRl
cnMqIHBhcmFtZXRlcnMoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnM7IH0KIAotICAgICAg
ICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2Fs
bHMpIG92ZXJyaWRlOwogCiAgICAgICAgIHZvaWQgZmluaXNoUGFyc2luZyhjb25zdCBJZGVudGlm
aWVyJiwgRnVuY3Rpb25Nb2RlKTsKICAgICAgICAgCkBAIC0xOTA4LDcgKzE5MTMsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgRnVuY0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSosIGNvbnN0IFNvdXJjZUNv
ZGUmKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAg
ICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
LCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsK
IAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNGdW5jRXhwck5vZGUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9CiAgICAgfTsKQEAgLTE5MTgsNyArMTkyMyw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBBcnJvd0Z1bmNFeHByTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBj
b25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBjb25zdCBTb3VyY2VDb2Rl
Jik7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAg
ICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwg
UmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAK
ICAgICAgICAgdmlydHVhbCBib29sIGlzQXJyb3dGdW5jRXhwck5vZGUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CiAgICAgfTsKQEAgLTE5MzIsNyArMTkzNyw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBuYW1lKCkgeyByZXR1cm4gbV9uYW1l
OyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAg
ICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwg
UmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAK
ICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9uYW1lOwogICAgICAgICBFeHByZXNzaW9uTm9k
ZSogbV9jb25zdHJ1Y3RvckV4cHJlc3Npb247CkBAIC0yMDM4LDcgKzIwNDMsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNBc3NpZ25tZW50
TG9jYXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgICAgIHZpcnR1
YWwgYm9vbCBpc0Rlc3RydWN0dXJpbmdOb2RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVn
aXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAw
LCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgRGVzdHJ1
Y3R1cmluZ1BhdHRlcm5Ob2RlKiBtX2JpbmRpbmdzOwogICAgICAgICBFeHByZXNzaW9uTm9kZSog
bV9pbml0aWFsaXplcjsKQEAgLTIwNTIsNyArMjA1Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbWV0YWRhdGEoKSB7IHJldHVybiBtX21ldGFkYXRh
OyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmly
dHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0g
MCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogCiAgICAgICAgIEZ1bmN0
aW9uTWV0YWRhdGFOb2RlKiBtX21ldGFkYXRhOwogICAgIH07CkBAIC0yMDYzLDcgKzIwNjgsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgQ2xhc3NEZWNsTm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBFeHByZXNzaW9uTm9kZSogY2xhc3NFeHByZXNzaW9uKTsKIAogICAgIHByaXZhdGU6
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBO
b1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fY2xhc3NE
ZWNsYXJhdGlvbjsKICAgICB9OwpAQCAtMjA3NSw3ICsyMDgwLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIGV4cHIoKSBjb25zdCB7IHJldHVybiBtX2V4cHI7
IH0KIAotICAgICAgICB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqIGRlc3RpbmF0aW9uKTsKKyAgICAgICAgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBkZXN0aW5hdGlvbiwgVGFpbENhbGxNb2RlKTsKICAgICAg
ICAgdm9pZCBzZXRTdGFydE9mZnNldChpbnQgb2Zmc2V0KSB7IG1fc3RhcnRPZmZzZXQgPSBvZmZz
ZXQ7IH0KIAogICAgIHByaXZhdGU6CkBAIC0yMTAxLDcgKzIxMDYsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICBwdWJsaWM6CiAgICAgICAgIENhc2VCbG9ja05vZGUoQ2xhdXNlTGlzdE5vZGUqIGxp
c3QxLCBDYXNlQ2xhdXNlTm9kZSogZGVmYXVsdENsYXVzZSwgQ2xhdXNlTGlzdE5vZGUqIGxpc3Qy
KTsKIAotICAgICAgICB2b2lkIGVtaXRCeXRlY29kZUZvckJsb2NrKEJ5dGVjb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCogaW5wdXQsIFJlZ2lzdGVySUQqIGRlc3RpbmF0aW9uKTsKKyAgICAgICAg
dm9pZCBlbWl0Qnl0ZWNvZGVGb3JCbG9jayhCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
IGlucHV0LCBSZWdpc3RlcklEKiBkZXN0aW5hdGlvbiwgVGFpbENhbGxNb2RlKTsKIAogICAgIHBy
aXZhdGU6CiAgICAgICAgIFN3aXRjaEluZm86OlN3aXRjaFR5cGUgdHJ5VGFibGVTd2l0Y2goVmVj
dG9yPEV4cHJlc3Npb25Ob2RlKiwgOD4mIGxpdGVyYWxWZWN0b3IsIGludDMyX3QmIG1pbl9udW0s
IGludDMyX3QmIG1heF9udW0pOwpAQCAtMjExNiw3ICsyMTIxLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIFN3aXRjaE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5v
ZGUqLCBDYXNlQmxvY2tOb2RlKiwgVmFyaWFibGVFbnZpcm9ubWVudCYpOwogCiAgICAgcHJpdmF0
ZToKLSAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9
IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKIAogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9leHBy
OwogICAgICAgICBDYXNlQmxvY2tOb2RlKiBtX2Jsb2NrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT3B0aW9ucy5oCmluZGV4IDJmN2ZkMzUzMmNhMjk1OGVkMGM0NTUzMjNhMGNmMzE3ZGZl
YmRiN2QuLjliYWNiZDFhZTZmNmI3Yjg1ZGRmMWNkNzY5YTY3ZThhYTg4OWFiMjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKQEAgLTEyOCw2ICsxMjgsNyBAQCB0eXBl
ZGVmIGNvbnN0IGNoYXIqIG9wdGlvblN0cmluZzsKICAgICB2KGJvb2wsIGZvcmNlUHJvZmlsZXJC
eXRlY29kZUdlbmVyYXRpb24sIGZhbHNlLCBudWxscHRyKSBcCiAgICAgXAogICAgIHYoYm9vbCwg
ZW5hYmxlRnVuY3Rpb25Eb3RBcmd1bWVudHMsIHRydWUsIG51bGxwdHIpIFwKKyAgICB2KGJvb2ws
IGVuYWJsZVRhaWxDYWxscywgdHJ1ZSwgbnVsbHB0cikgXAogICAgIFwKICAgICAvKiBzaG93RGlz
YXNzZW1ibHkgaW1wbGllcyBzaG93REZHRGlzYXNzZW1ibHkuICovIFwKICAgICB2KGJvb2wsIHNo
b3dEaXNhc3NlbWJseSwgZmFsc2UsICJkdW1wcyBkaXNhc3NlbWJseSBvZiBhbGwgSklUIGNvbXBp
bGVkIGNvZGUgdXBvbiBjb21waWxhdGlvbiIpIFwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260381</attachid>
            <date>2015-09-01 14:10:53 -0700</date>
            <delta_ts>2015-09-03 19:17:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148665-20150901141036.patch</filename>
            <type>text/plain</type>
            <size>29085</size>
            <attacher name="Basile Clement">basile_clement</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MjI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
Mjg2ZjUzMWUyNGEzZjkxMzg2ZDIxMDc2MTI2ZjhiOWY1MzMyOTYxLi4wMjA0YmQxZDY1NTc2MTA2
ZDM0MDBkYjJmNTg4Nzc0Yjc4NDY2NDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NyBAQAorMjAxNS0wOS0wMSAgQmFzaWxlIENsZW1lbnQgIDxiYXNpbGVfY2xlbWVudEBh
cHBsZS5jb20+CisKKyAgICAgICAgW0VTNl0gUmVjb2duaXplIGNhbGxzIGluIHRhaWwgcG9zaXRp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODY2
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggYWRkcyB0aGUgY2FwYWJpbGl0eSBmb3IgdGhlIGJ5dGVjb2RlIGdlbmVyYXRvciB0byBy
ZWNvZ25pemUKKyAgICAgICAgYW5kIGRpc3BhdGNoIHRhaWwgY2FsbHMsIGFzIHBlciBFUzYgc3Bl
YzoKKyAgICAgICAgaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYu
MC8jc2VjLWlzaW50YWlscG9zaXRpb24KKworICAgICAgICBUaGlzIGRvZXMgbm90IGNoYW5nZSB0
aGUgZ2VuZXJhdGVkIGJ5dGVjb2RlLCBidXQgbWVyZWx5IHByb3ZpZGVzIHRoZQorICAgICAgICBo
b29rIGZvciBnZW5lcmF0aW5nIHRhaWwgY2FsbHMgaW4gc3Vic2VxdWVudCBwYXRjaGVzIHRvd2Fy
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2NDc3
CisKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGxJblRhaWxQb3NpdGlvbik6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbFZhcmFyZ3NJblRhaWxQb3NpdGlvbik6
CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChK
U0M6OlNldEZvclNjb3BlOjpTZXRGb3JTY29wZSk6CisgICAgICAgIChKU0M6OlNldEZvclNjb3Bl
Ojp+U2V0Rm9yU2NvcGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5v
ZGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5vZGVJblRhaWxQb3Np
dGlvbik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAg
IChKU0M6OkZ1bmN0aW9uQ2FsbFZhbHVlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpT
Qzo6RnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6
OkZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpG
dW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDYWxsRnVu
Y3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QXBwbHlGdW5j
dGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpMb2dpY2FsT3BO
b2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDb25kaXRpb25hbE5vZGU6OmVtaXRC
eXRlY29kZSk6CisgICAgICAgIChKU0M6OkNvbW1hTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAg
ICAgKEpTQzo6U291cmNlRWxlbWVudHM6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6Oklm
RWxzZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkRvV2hpbGVOb2RlOjplbWl0
Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpXaGlsZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAg
ICAgIChKU0M6OkZvck5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlJldHVybk5v
ZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OldpdGhOb2RlOjplbWl0Qnl0ZWNvZGUp
OgorICAgICAgICAoSlNDOjpUcnlOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIHJ1bnRp
bWUvT3B0aW9ucy5oOgorCiAyMDE1LTA5LTAxICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29t
PgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHByb3RvY29sIGdlbmVyYXRvciBzaG91bGQgbm90
IGFsbG93IG5vbi1ib29sZWFuIHZhbHVlcyBmb3IgIm9wdGlvbmFsIiBrZXkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHAKaW5kZXggNzgzYjIxNTdhMWYxZTEzYzJlY2MxYWZmZjVlN2ZkYzQ5ZmU5ZTNkNy4uNDAyNDdi
YTc4NDJlNDZjMzM3MzQwYTNhMTMyMmZlMzRiZmI0YWQ0OSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAg
LTE4Myw2ICsxODMsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0m
IHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICwgbV92bSgmdm0p
CiAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGNvZGVCbG9jay0+aXNCdWlsdGluRnVuY3Rpb24o
KSkKICAgICAsIG1fdXNlc05vblN0cmljdEV2YWwoY29kZUJsb2NrLT51c2VzRXZhbCgpICYmICFj
b2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKQorICAgICwgbV9pblRhaWxQb3NpdGlvbihPcHRpb25z
OjplbmFibGVUYWlsQ2FsbHMoKSAmJiBjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3Rvcktp
bmQ6Ok5vbmUgJiYgaXNTdHJpY3RNb2RlKCkpCiB7CiAgICAgZm9yIChhdXRvJiBjb25zdGFudFJl
Z2lzdGVyIDogbV9saW5rVGltZUNvbnN0YW50UmVnaXN0ZXJzKQogICAgICAgICBjb25zdGFudFJl
Z2lzdGVyID0gbnVsbHB0cjsKQEAgLTI0NjgsNiArMjQ2OSwxNCBAQCBSZWdpc3RlcklEKiBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdENhbGwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5j
LCBFeHBlYwogICAgIHJldHVybiBlbWl0Q2FsbChvcF9jYWxsLCBkc3QsIGZ1bmMsIGV4cGVjdGVk
RnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CiB9
CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbEluVGFpbFBvc2l0aW9u
KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgRXhwZWN0ZWRGdW5jdGlvbiBleHBl
Y3RlZEZ1bmN0aW9uLCBDYWxsQXJndW1lbnRzJiBjYWxsQXJndW1lbnRzLCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCit7CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBl
bWl0dGluZyBhIG5ldyBvcF90YWlsX2NhbGwgaGVyZSB3aGVuCisgICAgLy8gbV9pblRhaWxQb3Np
dGlvbiBpcyBmYWxzZQorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDg2NjEKKyAgICByZXR1cm4gZW1pdENhbGwob3BfY2FsbCwgZHN0LCBmdW5jLCBleHBl
Y3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQp
OworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGxFdmFsKFJlZ2lz
dGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgQ2FsbEFyZ3VtZW50cyYgY2FsbEFyZ3VtZW50
cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKQogewogICAgIHJldHVybiBl
bWl0Q2FsbChvcF9jYWxsX2V2YWwsIGRzdCwgZnVuYywgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxs
QXJndW1lbnRzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOwpAQCAtMjYxNyw2ICsyNjI2
LDE0IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbFZhcmFyZ3MoUmVn
aXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jCiAgICAgcmV0dXJuIGVtaXRDYWxsVmFyYXJn
cyhvcF9jYWxsX3ZhcmFyZ3MsIGRzdCwgZnVuYywgdGhpc1JlZ2lzdGVyLCBhcmd1bWVudHMsIGZp
cnN0RnJlZVJlZ2lzdGVyLCBmaXJzdFZhckFyZ09mZnNldCwgcHJvZmlsZUhvb2tSZWdpc3Rlciwg
ZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRDYWxsVmFyYXJnc0luVGFpbFBvc2l0aW9uKFJlZ2lzdGVySUQqIGRzdCwg
UmVnaXN0ZXJJRCogZnVuYywgUmVnaXN0ZXJJRCogdGhpc1JlZ2lzdGVyLCBSZWdpc3RlcklEKiBh
cmd1bWVudHMsIFJlZ2lzdGVySUQqIGZpcnN0RnJlZVJlZ2lzdGVyLCBpbnQzMl90IGZpcnN0VmFy
QXJnT2Zmc2V0LCBSZWdpc3RlcklEKiBwcm9maWxlSG9va1JlZ2lzdGVyLCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCit7CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBl
bWl0dGluZyBhIG5ldyBvcF90YWlsX2NhbGwgaGVyZSB3aGVuCisgICAgLy8gbV9pblRhaWxQb3Np
dGlvbiBpcyBmYWxzZQorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDg2NjEKKyAgICByZXR1cm4gZW1pdENhbGxWYXJhcmdzKG9wX2NhbGxfdmFyYXJncywg
ZHN0LCBmdW5jLCB0aGlzUmVnaXN0ZXIsIGFyZ3VtZW50cywgZmlyc3RGcmVlUmVnaXN0ZXIsIGZp
cnN0VmFyQXJnT2Zmc2V0LCBwcm9maWxlSG9va1JlZ2lzdGVyLCBkaXZvdCwgZGl2b3RTdGFydCwg
ZGl2b3RFbmQpOworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENvbnN0
cnVjdFZhcmFyZ3MoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBSZWdpc3RlcklE
KiB0aGlzUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGFyZ3VtZW50cywgUmVnaXN0ZXJJRCogZmlyc3RG
cmVlUmVnaXN0ZXIsIGludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQsIFJlZ2lzdGVySUQqIHByb2Zp
bGVIb29rUmVnaXN0ZXIsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKIHsK
ICAgICByZXR1cm4gZW1pdENhbGxWYXJhcmdzKG9wX2NvbnN0cnVjdF92YXJhcmdzLCBkc3QsIGZ1
bmMsIHRoaXNSZWdpc3RlciwgYXJndW1lbnRzLCBmaXJzdEZyZWVSZWdpc3RlciwgZmlyc3RWYXJB
cmdPZmZzZXQsIHByb2ZpbGVIb29rUmVnaXN0ZXIsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVu
ZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmgKaW5kZXggZWJmN2QxNzJiOGUxOWQ4MThmYjA1YjFlOGJlZDYyMWQ1YWFj
NjA0YS4uZWM0MDgxZmNhMzIwZjY4OGM3ZDhjNmEyNmQzZGRhNmExOGM5YzQ5ZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaApAQCAtNjQsNiArNjQsMzMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEV4cGVjdEFy
cmF5Q29uc3RydWN0b3IKICAgICB9OwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBj
bGFzcyBTZXRGb3JTY29wZSB7CisgICAgcHVibGljOgorICAgICAgICBTZXRGb3JTY29wZShUJiBj
dXJyZW50VmFsdWUsIGNvbnN0IFQmIG5ld1ZhbHVlKQorICAgICAgICAgICAgOiBtX3JlZihjdXJy
ZW50VmFsdWUpCisgICAgICAgICAgICAsIG1fb2xkVmFsdWUoY3VycmVudFZhbHVlKQorICAgICAg
ICB7CisgICAgICAgICAgICBtX3JlZiA9IG5ld1ZhbHVlOworICAgICAgICB9CisKKyAgICAgICAg
U2V0Rm9yU2NvcGUoVCYgY3VycmVudFZhbHVlLCBUJiYgbmV3VmFsdWUpCisgICAgICAgICAgICA6
IG1fcmVmKGN1cnJlbnRWYWx1ZSkKKyAgICAgICAgICAgICwgbV9vbGRWYWx1ZShjdXJyZW50VmFs
dWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGN1cnJlbnRWYWx1ZSA9IFdURjo6bW92ZShuZXdW
YWx1ZSk7CisgICAgICAgIH0KKworICAgICAgICB+U2V0Rm9yU2NvcGUoKQorICAgICAgICB7Cisg
ICAgICAgICAgICBtX3JlZiA9IG1fb2xkVmFsdWU7CisgICAgICAgIH0KKworICAgIHByaXZhdGU6
CisgICAgICAgIFQmIG1fcmVmOworICAgICAgICBUIG1fb2xkVmFsdWU7CisgICAgfTsKKwogICAg
IGNsYXNzIENhbGxBcmd1bWVudHMgewogICAgIHB1YmxpYzoKICAgICAgICAgQ2FsbEFyZ3VtZW50
cyhCeXRlY29kZUdlbmVyYXRvciYsIEFyZ3VtZW50c05vZGUqLCB1bnNpZ25lZCBhZGRpdGlvbmFs
QXJndW1lbnRzID0gMCk7CkBAIC0zNTksNiArMzg2LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgICAgIHZvaWQgZW1pdE5vZGUoUmVnaXN0ZXJJRCogZHN0LCBTdGF0ZW1lbnROb2RlKiBuKQog
ICAgICAgICB7CisgICAgICAgICAgICBTZXRGb3JTY29wZTxib29sPiB0YWlsUG9zaXRpb25Qb2lz
b25lcihtX2luVGFpbFBvc2l0aW9uLCBmYWxzZSk7CisgICAgICAgICAgICByZXR1cm4gZW1pdE5v
ZGVJblRhaWxQb3NpdGlvbihkc3QsIG4pOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBlbWl0
Tm9kZUluVGFpbFBvc2l0aW9uKFJlZ2lzdGVySUQqIGRzdCwgU3RhdGVtZW50Tm9kZSogbikKKyAg
ICAgICAgewogICAgICAgICAgICAgLy8gTm9kZTo6ZW1pdENvZGUgYXNzdW1lcyB0aGF0IGRzdCwg
aWYgcHJvdmlkZWQsIGlzIGVpdGhlciBhIGxvY2FsIG9yIGEgcmVmZXJlbmNlZCB0ZW1wb3Jhcnku
CiAgICAgICAgICAgICBBU1NFUlQoIWRzdCB8fCBkc3QgPT0gaWdub3JlZFJlc3VsdCgpIHx8ICFk
c3QtPmlzVGVtcG9yYXJ5KCkgfHwgZHN0LT5yZWZDb3VudCgpKTsKICAgICAgICAgICAgIGlmICgh
bV92bS0+aXNTYWZlVG9SZWN1cnNlKCkpIHsKQEAgLTM3MCwxMSArNDAzLDIyIEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgICAgIHZvaWQgZW1pdE5vZGUoU3RhdGVtZW50Tm9kZSogbikKICAgICAg
ICAgewotICAgICAgICAgICAgZW1pdE5vZGUoMCwgbik7CisgICAgICAgICAgICBlbWl0Tm9kZShu
dWxscHRyLCBuKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgZW1pdE5vZGVJblRhaWxQb3Np
dGlvbihTdGF0ZW1lbnROb2RlKiBuKQorICAgICAgICB7CisgICAgICAgICAgICBlbWl0Tm9kZUlu
VGFpbFBvc2l0aW9uKG51bGxwdHIsIG4pOwogICAgICAgICB9CiAKICAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdE5vZGUoUmVnaXN0ZXJJRCogZHN0LCBFeHByZXNzaW9uTm9kZSogbikKICAgICAgICAg
eworICAgICAgICAgICAgU2V0Rm9yU2NvcGU8Ym9vbD4gdGFpbFBvc2l0aW9uUG9pc29uZXIobV9p
blRhaWxQb3NpdGlvbiwgZmFsc2UpOworICAgICAgICAgICAgcmV0dXJuIGVtaXROb2RlSW5UYWls
UG9zaXRpb24oZHN0LCBuKTsKKyAgICAgICAgfQorCisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRO
b2RlSW5UYWlsUG9zaXRpb24oUmVnaXN0ZXJJRCogZHN0LCBFeHByZXNzaW9uTm9kZSogbikKKyAg
ICAgICAgewogICAgICAgICAgICAgLy8gTm9kZTo6ZW1pdENvZGUgYXNzdW1lcyB0aGF0IGRzdCwg
aWYgcHJvdmlkZWQsIGlzIGVpdGhlciBhIGxvY2FsIG9yIGEgcmVmZXJlbmNlZCB0ZW1wb3Jhcnku
CiAgICAgICAgICAgICBBU1NFUlQoIWRzdCB8fCBkc3QgPT0gaWdub3JlZFJlc3VsdCgpIHx8ICFk
c3QtPmlzVGVtcG9yYXJ5KCkgfHwgZHN0LT5yZWZDb3VudCgpKTsKICAgICAgICAgICAgIGlmICgh
bV92bS0+aXNTYWZlVG9SZWN1cnNlKCkpCkBAIC0zODQsNyArNDI4LDEyIEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROb2RlKEV4cHJlc3Npb25Ob2RlKiBuKQog
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdE5vZGUoMCwgbik7CisgICAgICAgICAg
ICByZXR1cm4gZW1pdE5vZGUobnVsbHB0ciwgbik7CisgICAgICAgIH0KKworICAgICAgICBSZWdp
c3RlcklEKiBlbWl0Tm9kZUluVGFpbFBvc2l0aW9uKEV4cHJlc3Npb25Ob2RlKiBuKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gZW1pdE5vZGVJblRhaWxQb3NpdGlvbihudWxscHRyLCBu
KTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgZW1pdE5vZGVJbkNvbmRpdGlvbkNvbnRleHQo
RXhwcmVzc2lvbk5vZGUqIG4sIExhYmVsKiB0cnVlVGFyZ2V0LCBMYWJlbCogZmFsc2VUYXJnZXQs
IEZhbGxUaHJvdWdoTW9kZSBmYWxsVGhyb3VnaE1vZGUpCkBAIC01MTgsOCArNTY3LDEwIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgRXhwZWN0ZWRGdW5jdGlvbiBleHBlY3Rl
ZEZ1bmN0aW9uRm9ySWRlbnRpZmllcihjb25zdCBJZGVudGlmaWVyJik7CiAgICAgICAgIFJlZ2lz
dGVySUQqIGVtaXRDYWxsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgRXhwZWN0
ZWRGdW5jdGlvbiwgQ2FsbEFyZ3VtZW50cyYsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwg
Y29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBk
aXZvdEVuZCk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDYWxsSW5UYWlsUG9zaXRpb24oUmVn
aXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBFeHBlY3RlZEZ1bmN0aW9uLCBDYWxsQXJn
dW1lbnRzJiwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlv
biYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKICAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdENhbGxFdmFsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVu
YywgQ2FsbEFyZ3VtZW50cyYsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7
CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDYWxsVmFyYXJncyhSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIGZ1bmMsIFJlZ2lzdGVySUQqIHRoaXNSZWdpc3RlciwgUmVnaXN0ZXJJRCogYXJn
dW1lbnRzLCBSZWdpc3RlcklEKiBmaXJzdEZyZWVSZWdpc3RlciwgaW50MzJfdCBmaXJzdFZhckFy
Z09mZnNldCwgUmVnaXN0ZXJJRCogcHJvZmlsZUhvb2tSZWdpc3RlciwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENhbGxWYXJh
cmdzSW5UYWlsUG9zaXRpb24oUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBSZWdp
c3RlcklEKiB0aGlzUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGFyZ3VtZW50cywgUmVnaXN0ZXJJRCog
Zmlyc3RGcmVlUmVnaXN0ZXIsIGludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQsIFJlZ2lzdGVySUQq
IHByb2ZpbGVIb29rUmVnaXN0ZXIsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVu
ZCk7CiAKICAgICAgICAgZW51bSBQcm9wZXJ0eURlc2NyaXB0b3JPcHRpb24gewogICAgICAgICAg
ICAgUHJvcGVydHlDb25maWd1cmFibGUgPSAxLApAQCAtODMzLDYgKzg4NCw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBib29sIG1fZXhwcmVzc2lvblRvb0RlZXAgeyBmYWxzZSB9OwogICAg
ICAgICBib29sIG1faXNCdWlsdGluRnVuY3Rpb24geyBmYWxzZSB9OwogICAgICAgICBib29sIG1f
dXNlc05vblN0cmljdEV2YWwgeyBmYWxzZSB9OworICAgICAgICBib29sIG1faW5UYWlsUG9zaXRp
b24geyBmYWxzZSB9OwogICAgIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCBkMzI4Nzc4MjBmYmExNDlkMjQ0
NTEyMWNmZTY5MTNiNDA3NTYzNmZkLi45MzkwYWZlZjVkODgxMjc2MzdlMWY3YTY1Y2FmZmZmYTFj
YjM4ZTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05v
ZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9O
b2Rlc0NvZGVnZW4uY3BwCkBAIC03MTMsNyArNzEzLDcgQEAgUmVnaXN0ZXJJRCogRnVuY3Rpb25D
YWxsVmFsdWVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmUKICAgICAgICAgcmV0dXJuIHJldDsKICAgICB9CiAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGNh
bGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOwotICAgIFJlZ2lzdGVy
SUQqIHJldCA9IGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgZnVuYy5nZXQo
KSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0
KCksIGRpdm90RW5kKCkpOworICAgIFJlZ2lzdGVySUQqIHJldCA9IGdlbmVyYXRvci5lbWl0Q2Fs
bEluVGFpbFBvc2l0aW9uKHJldHVyblZhbHVlLmdldCgpLCBmdW5jLmdldCgpLCBOb0V4cGVjdGVk
RnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQo
KSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShyZXR1cm5WYWx1ZS5nZXQoKSwgZGl2
b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICByZXR1cm4gcmV0OwogfQpAQCAtNzMzLDcgKzcz
Myw3IEBAIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2Fk
KGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOwogICAgICAgICAv
LyBUaGlzIHBhc3NlcyBOb0V4cGVjdGVkRnVuY3Rpb24gYmVjYXVzZSB3ZSBleHBlY3QgdGhhdCBp
ZiB0aGUgZnVuY3Rpb24gaXMgaW4gYQogICAgICAgICAvLyBsb2NhbCB2YXJpYWJsZSwgdGhlbiBp
dCdzIG5vdCBvbmUgb2Ygb3VyIGJ1aWx0LWluIGNvbnN0cnVjdG9ycy4KLSAgICAgICAgUmVnaXN0
ZXJJRCogcmV0ID0gZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jLmdl
dCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3Rh
cnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgIFJlZ2lzdGVySUQqIHJldCA9IGdlbmVyYXRvci5l
bWl0Q2FsbEluVGFpbFBvc2l0aW9uKHJldHVyblZhbHVlLmdldCgpLCBmdW5jLmdldCgpLCBOb0V4
cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2
b3RFbmQoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocmV0dXJuVmFsdWUu
Z2V0KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgIHJldHVybiByZXQ7CiAg
ICAgfQpAQCAtNzQ5LDcgKzc0OSw3IEBAIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQ2FsbFJlc29sdmVO
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwKICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwg
dmFyKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUoZnVuYy5nZXQoKSwgY2FsbEFy
Z3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgdmFyLCBUaHJvd0lmTm90Rm91bmQpOwogICAgIGdlbmVy
YXRvci5lbWl0VERaQ2hlY2tJZk5lY2Vzc2FyeSh2YXIsIGZ1bmMuZ2V0KCksIG51bGxwdHIpOwot
ICAgIFJlZ2lzdGVySUQqIHJldCA9IGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQo
KSwgZnVuYy5nZXQoKSwgZXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwg
ZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICBSZWdpc3RlcklEKiByZXQgPSBnZW5lcmF0
b3IuZW1pdENhbGxJblRhaWxQb3NpdGlvbihyZXR1cm5WYWx1ZS5nZXQoKSwgZnVuYy5nZXQoKSwg
ZXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBk
aXZvdEVuZCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHJldHVyblZhbHVlLmdl
dCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIHJldHVybiByZXQ7CiB9CkBAIC04
MTcsNyArODE3LDcgQEAgUmVnaXN0ZXJJRCogRnVuY3Rpb25DYWxsQnJhY2tldE5vZGU6OmVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLAogICAgICAgICBnZW5lcmF0b3Iu
ZW1pdE1vdmUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLnRoaXNSZWdp
c3RlcigpKTsKICAgICBlbHNlCiAgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShjYWxsQXJndW1l
bnRzLnRoaXNSZWdpc3RlcigpLCBiYXNlLmdldCgpKTsKLSAgICBSZWdpc3RlcklEKiByZXQgPSBn
ZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmN0aW9uLmdldCgpLCBOb0V4
cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2
b3RFbmQoKSk7CisgICAgUmVnaXN0ZXJJRCogcmV0ID0gZ2VuZXJhdG9yLmVtaXRDYWxsSW5UYWls
UG9zaXRpb24ocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVu
Y3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7
CiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShyZXR1cm5WYWx1ZS5nZXQoKSwgZGl2b3RT
dGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICByZXR1cm4gcmV0OwogfQpAQCAtODM2LDcgKzgzNiw3
IEBAIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpCiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShj
YWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBtX2Jhc2UpOwogICAgIGdlbmVyYXRvci5lbWl0
RXhwcmVzc2lvbkluZm8oc3ViZXhwcmVzc2lvbkRpdm90KCksIHN1YmV4cHJlc3Npb25TdGFydCgp
LCBzdWJleHByZXNzaW9uRW5kKCkpOwogICAgIGdlbmVyYXRvci5lbWl0R2V0QnlJZChmdW5jdGlv
bi5nZXQoKSwgYmFzZUlzU3VwZXIgPyBlbWl0U3VwZXJCYXNlRm9yQ2FsbGVlKGdlbmVyYXRvcikg
OiBjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBtX2lkZW50KTsKLSAgICBSZWdpc3RlcklE
KiByZXQgPSBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmN0aW9uLmdl
dCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3Rh
cnQoKSwgZGl2b3RFbmQoKSk7CisgICAgUmVnaXN0ZXJJRCogcmV0ID0gZ2VuZXJhdG9yLmVtaXRD
YWxsSW5UYWlsUG9zaXRpb24ocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmN0aW9uLmdldCgpLCBOb0V4
cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2
b3RFbmQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShyZXR1cm5WYWx1ZS5nZXQo
KSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICByZXR1cm4gcmV0OwogfQpAQCAtODY1
LDcgKzg2NSw3IEBAIFJlZ2lzdGVySUQqIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwKICAgICAgICAgICAgIGFyZ3VtZW50
c1JlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXROb2RlKHN1YmplY3QpOwogICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhzcHJlYWQtPmRpdm90KCksIHNwcmVhZC0+ZGl2b3RT
dGFydCgpLCBzcHJlYWQtPmRpdm90RW5kKCkpOwogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHRoaXNSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0R2V0QnlWYWwoZ2VuZXJhdG9yLm5ld1Rl
bXBvcmFyeSgpLCBhcmd1bWVudHNSZWdpc3Rlci5nZXQoKSwgZ2VuZXJhdG9yLmVtaXRMb2FkKDAs
IGpzTnVtYmVyKDApKSk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGxWYXJhcmdzKHJl
dHVyblZhbHVlLmdldCgpLCBiYXNlLmdldCgpLCB0aGlzUmVnaXN0ZXIuZ2V0KCksIGFyZ3VtZW50
c1JlZ2lzdGVyLmdldCgpLCBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIDEsIHByb2ZpbGVIb29r
UmVnaXN0ZXIuZ2V0KCksIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGxWYXJhcmdzSW5UYWlsUG9zaXRpb24ocmV0dXJuVmFs
dWUuZ2V0KCksIGJhc2UuZ2V0KCksIHRoaXNSZWdpc3Rlci5nZXQoKSwgYXJndW1lbnRzUmVnaXN0
ZXIuZ2V0KCksIGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgMSwgcHJvZmlsZUhvb2tSZWdpc3Rl
ci5nZXQoKSwgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAgfSBl
bHNlIGlmIChtX2FyZ3MtPm1fbGlzdE5vZGUgJiYgbV9hcmdzLT5tX2xpc3ROb2RlLT5tX2V4cHIp
IHsKICAgICAgICAgICAgIEFyZ3VtZW50TGlzdE5vZGUqIG9sZExpc3QgPSBtX2FyZ3MtPm1fbGlz
dE5vZGU7CiAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5v
ZGUtPm1fbmV4dDsKQEAgLTg3MywxMyArODczLDEzIEBAIFJlZ2lzdGVySUQqIENhbGxGdW5jdGlv
bkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwK
ICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3Iu
ZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsKICAg
ICAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7
CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0
ZXIoKSwgb2xkTGlzdC0+bV9leHByKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChy
ZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24s
IGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGxJblRhaWxQb3NpdGlvbihyZXR1cm5WYWx1ZS5nZXQo
KSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMs
IGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgICAgICBtX2FyZ3Mt
Pm1fbGlzdE5vZGUgPSBvbGRMaXN0OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0
b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwogICAgICAgICAgICAgQ2FsbEFy
Z3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICAgICAgICAgIGdl
bmVyYXRvci5lbWl0TG9hZChjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5l
ZCgpKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwg
cmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRp
dm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdENhbGxJblRhaWxQb3NpdGlvbihyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdl
dCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3Rh
cnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKGVtaXRDYWxsQ2hl
Y2spIHsKQEAgLTg4OCw3ICs4ODgsNyBAQCBSZWdpc3RlcklEKiBDYWxsRnVuY3Rpb25DYWxsRG90
Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsCiAgICAgICAg
IHsKICAgICAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1f
YXJncyk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE1vdmUoY2FsbEFyZ3VtZW50cy50aGlz
UmVnaXN0ZXIoKSwgYmFzZS5nZXQoKSk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwo
cmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNh
bGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAg
ICAgICBnZW5lcmF0b3IuZW1pdENhbGxJblRhaWxQb3NpdGlvbihyZXR1cm5WYWx1ZS5nZXQoKSwg
ZnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3Qo
KSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAgfQogICAgICAgICBnZW5lcmF0
b3IuZW1pdExhYmVsKGVuZC5nZXQoKSk7CiAgICAgfQpAQCAtOTUxLDcgKzk1MSw3IEBAIFJlZ2lz
dGVySUQqIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsCiAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TGFi
ZWwoZW5kLmdldCgpKTsKICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0RW51bWVyYXRpb24odGhpcywgc3ByZWFkLT5leHByZXNzaW9uKCksIGV4dHJhY3Rv
cik7Ci0gICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsVmFyYXJncyhyZXR1cm5WYWx1
ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCB0aGlzUmVnaXN0ZXIuZ2V0KCksIGFyZ3VtZW50
c1JlZ2lzdGVyLmdldCgpLCBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIDAsIHByb2ZpbGVIb29r
UmVnaXN0ZXIuZ2V0KCksIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAg
ICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsVmFyYXJnc0luVGFpbFBvc2l0aW9uKHJldHVy
blZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIHRoaXNSZWdpc3Rlci5nZXQoKSwgYXJn
dW1lbnRzUmVnaXN0ZXIuZ2V0KCksIGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgMCwgcHJvZmls
ZUhvb2tSZWdpc3Rlci5nZXQoKSwgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsK
ICAgICAgICAgICAgIH0gZWxzZSBpZiAobV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQpIHsKICAg
ICAgICAgICAgICAgICBBU1NFUlQobV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fZXhwci0+
aXNTaW1wbGVBcnJheSgpKTsKICAgICAgICAgICAgICAgICBBU1NFUlQoIW1fYXJncy0+bV9saXN0
Tm9kZS0+bV9uZXh0LT5tX25leHQpOwpAQCAtOTU5LDIwICs5NTksMjAgQEAgUmVnaXN0ZXJJRCog
QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwKICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0
aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwg
YmFzZS5nZXQoKSk7CiAgICAgICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRz
KGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUo
Y2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgb2xkTGlzdC0+bV9leHByKTsKLSAgICAgICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlv
bi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZv
dFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2Fs
bEluVGFpbFBvc2l0aW9uKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5v
RXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBk
aXZvdEVuZCgpKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgbV9hcmdz
LT5tX2xpc3ROb2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQ7CiAgICAgICAgICAgICAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShn
ZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwogICAgICAgICAgICAg
ICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CiAgICAg
ICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVy
KCksIG9sZExpc3QtPm1fZXhwcik7Ci0gICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxs
KHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlv
biwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAg
ICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGxJblRhaWxQb3NpdGlvbihyZXR1cm5WYWx1
ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1
bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBvbGRMaXN0OwogICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVy
YXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkp
OwogICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9h
cmdzKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJndW1lbnRzLnRoaXNS
ZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2Fs
bChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rp
b24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Cisg
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGxJblRhaWxQb3NpdGlvbihyZXR1cm5WYWx1ZS5n
ZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVu
dHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgIH0KICAgICB9
IGVsc2UgewogICAgICAgICBBU1NFUlQobV9hcmdzLT5tX2xpc3ROb2RlICYmIG1fYXJncy0+bV9s
aXN0Tm9kZS0+bV9uZXh0KTsKQEAgLTk5MCwxNCArOTkwLDE0IEBAIFJlZ2lzdGVySUQqIEFwcGx5
RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsCiAgICAgICAgIHdoaWxlICgoYXJncyA9IGFyZ3MtPm1fbmV4dCkpCiAgICAgICAgICAg
ICBnZW5lcmF0b3IuZW1pdE5vZGUoYXJncy0+bV9leHByKTsKIAotICAgICAgICBnZW5lcmF0b3Iu
ZW1pdENhbGxWYXJhcmdzKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIHRo
aXNSZWdpc3Rlci5nZXQoKSwgYXJnc1JlZ2lzdGVyLmdldCgpLCBnZW5lcmF0b3IubmV3VGVtcG9y
YXJ5KCksIDAsIHByb2ZpbGVIb29rUmVnaXN0ZXIuZ2V0KCksIGRpdm90KCksIGRpdm90U3RhcnQo
KSwgZGl2b3RFbmQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbFZhcmFyZ3NJblRhaWxQ
b3NpdGlvbihyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCB0aGlzUmVnaXN0
ZXIuZ2V0KCksIGFyZ3NSZWdpc3Rlci5nZXQoKSwgZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCAw
LCBwcm9maWxlSG9va1JlZ2lzdGVyLmdldCgpLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90
RW5kKCkpOwogICAgIH0KICAgICBpZiAoZW1pdENhbGxDaGVjaykgewogICAgICAgICBnZW5lcmF0
b3IuZW1pdEp1bXAoZW5kLmdldCgpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChyZWFs
Q2FsbC5nZXQoKSk7CiAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0
b3IsIG1fYXJncyk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRo
aXNSZWdpc3RlcigpLCBiYXNlLmdldCgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJl
dHVyblZhbHVlLmdldCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxs
QXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICBn
ZW5lcmF0b3IuZW1pdENhbGxJblRhaWxQb3NpdGlvbihyZXR1cm5WYWx1ZS5nZXQoKSwgZnVuY3Rp
b24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2
b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChlbmQu
Z2V0KCkpOwogICAgIH0KICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHJldHVyblZhbHVl
LmdldCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwpAQCAtMTYzMiw3ICsxNjMyLDcgQEAg
UmVnaXN0ZXJJRCogTG9naWNhbE9wTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZGYWxz
ZSh0ZW1wLmdldCgpLCB0YXJnZXQuZ2V0KCkpOwogICAgIGVsc2UKICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRKdW1wSWZUcnVlKHRlbXAuZ2V0KCksIHRhcmdldC5nZXQoKSk7Ci0gICAgZ2VuZXJhdG9y
LmVtaXROb2RlKHRlbXAuZ2V0KCksIG1fZXhwcjIpOworICAgIGdlbmVyYXRvci5lbWl0Tm9kZUlu
VGFpbFBvc2l0aW9uKHRlbXAuZ2V0KCksIG1fZXhwcjIpOwogICAgIGdlbmVyYXRvci5lbWl0TGFi
ZWwodGFyZ2V0LmdldCgpKTsKIAogICAgIHJldHVybiBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRp
b25JZk5lZWRlZChkc3QsIHRlbXAuZ2V0KCkpOwpAQCAtMTY2MywxMiArMTY2MywxMiBAQCBSZWdp
c3RlcklEKiBDb25kaXRpb25hbE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcgogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoYmVmb3JlVGhlbi5n
ZXQoKSk7CiAKICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVDb250cm9sRmxvdyhtX2V4cHIxLT5z
dGFydE9mZnNldCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdE5vZGUobmV3RHN0LmdldCgpLCBtX2V4
cHIxKTsKKyAgICBnZW5lcmF0b3IuZW1pdE5vZGVJblRhaWxQb3NpdGlvbihuZXdEc3QuZ2V0KCks
IG1fZXhwcjEpOwogICAgIGdlbmVyYXRvci5lbWl0SnVtcChhZnRlckVsc2UuZ2V0KCkpOwogCiAg
ICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChiZWZvcmVFbHNlLmdldCgpKTsKICAgICBnZW5lcmF0b3Iu
ZW1pdFByb2ZpbGVDb250cm9sRmxvdyhtX2V4cHIxLT5lbmRPZmZzZXQoKSArIDEpOwotICAgIGdl
bmVyYXRvci5lbWl0Tm9kZShuZXdEc3QuZ2V0KCksIG1fZXhwcjIpOworICAgIGdlbmVyYXRvci5l
bWl0Tm9kZUluVGFpbFBvc2l0aW9uKG5ld0RzdC5nZXQoKSwgbV9leHByMik7CiAKICAgICBnZW5l
cmF0b3IuZW1pdExhYmVsKGFmdGVyRWxzZS5nZXQoKSk7CiAKQEAgLTE5MjYsNyArMTkyNiw3IEBA
IFJlZ2lzdGVySUQqIENvbW1hTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzCiAgICAgQ29tbWFOb2RlKiBub2RlID0gdGhpczsKICAg
ICBmb3IgKDsgbm9kZSAmJiBub2RlLT5uZXh0KCk7IG5vZGUgPSBub2RlLT5uZXh0KCkpCiAgICAg
ICAgIGdlbmVyYXRvci5lbWl0Tm9kZShnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpLCBub2RlLT5t
X2V4cHIpOwotICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBub2RlLT5tX2V4cHIp
OworICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdE5vZGVJblRhaWxQb3NpdGlvbihkc3QsIG5vZGUt
Pm1fZXhwcik7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTb3VyY2VF
bGVtZW50cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xOTQwLDcgKzE5NDAs
NyBAQCBpbmxpbmUgU3RhdGVtZW50Tm9kZSogU291cmNlRWxlbWVudHM6Omxhc3RTdGF0ZW1lbnQo
KSBjb25zdAogaW5saW5lIHZvaWQgU291cmNlRWxlbWVudHM6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7CiAgICAgZm9yIChTdGF0
ZW1lbnROb2RlKiBzdGF0ZW1lbnQgPSBtX2hlYWQ7IHN0YXRlbWVudDsgc3RhdGVtZW50ID0gc3Rh
dGVtZW50LT5uZXh0KCkpCi0gICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIHN0YXRlbWVu
dCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZUluVGFpbFBvc2l0aW9uKGRzdCwgc3RhdGVt
ZW50KTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEJsb2NrTm9kZSAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTIwOTQsNyArMjA5NCw3IEBA
IHZvaWQgSWZFbHNlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqIGRzdCkKICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVDb250cm9sRmxv
dyhtX2lmQmxvY2stPnN0YXJ0T2Zmc2V0KCkpOwogCiAgICAgaWYgKCFkaWRGb2xkSWZCbG9jaykg
ewotICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX2lmQmxvY2spOworICAgICAgICBn
ZW5lcmF0b3IuZW1pdE5vZGVJblRhaWxQb3NpdGlvbihkc3QsIG1faWZCbG9jayk7CiAgICAgICAg
IGlmIChtX2Vsc2VCbG9jaykKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChhZnRlckVs
c2UuZ2V0KCkpOwogICAgIH0KQEAgLTIxMDMsNyArMjEwMyw3IEBAIHZvaWQgSWZFbHNlTm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRz
dCkKIAogICAgIGlmIChtX2Vsc2VCbG9jaykgewogICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2Zp
bGVDb250cm9sRmxvdyhtX2lmQmxvY2stPmVuZE9mZnNldCgpICsgKG1faWZCbG9jay0+aXNCbG9j
aygpID8gMSA6IDApKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9lbHNlQmxv
Y2spOworICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGVJblRhaWxQb3NpdGlvbihkc3QsIG1fZWxz
ZUJsb2NrKTsKICAgICB9CiAKICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGFmdGVyRWxzZS5nZXQo
KSk7CkBAIC0yMTIyLDcgKzIxMjIsNyBAQCB2b2lkIERvV2hpbGVOb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogICAgIGdlbmVy
YXRvci5lbWl0TG9vcEhpbnQoKTsKICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhl
Y3V0ZVN0YXRlbWVudCwgbGFzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0
KCkpOwogCi0gICAgZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9zdGF0ZW1lbnQpOworICAgIGdl
bmVyYXRvci5lbWl0Tm9kZUluVGFpbFBvc2l0aW9uKGRzdCwgbV9zdGF0ZW1lbnQpOwogCiAgICAg
Z2VuZXJhdG9yLmVtaXRMYWJlbChzY29wZS0+Y29udGludWVUYXJnZXQoKSk7CiAgICAgZ2VuZXJh
dG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGxhc3RMaW5lKCksIHN0YXJ0
T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKQEAgLTIxNDUsNyArMjE0NSw3IEBAIHZvaWQg
V2hpbGVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCogZHN0KQogICAgIGdlbmVyYXRvci5lbWl0TG9vcEhpbnQoKTsKICAgICAKICAgICBn
ZW5lcmF0b3IuZW1pdFByb2ZpbGVDb250cm9sRmxvdyhtX3N0YXRlbWVudC0+c3RhcnRPZmZzZXQo
KSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9zdGF0ZW1lbnQpOworICAgIGdlbmVy
YXRvci5lbWl0Tm9kZUluVGFpbFBvc2l0aW9uKGRzdCwgbV9zdGF0ZW1lbnQpOwogCiAgICAgZ2Vu
ZXJhdG9yLmVtaXRMYWJlbChzY29wZS0+Y29udGludWVUYXJnZXQoKSk7CiAgICAgZ2VuZXJhdG9y
LmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBzdGFydE9m
ZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7CkBAIC0yMTc5LDcgKzIxNzksNyBAQCB2b2lkIEZv
ck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cklEKiBkc3QpCiAgICAgZ2VuZXJhdG9yLmVtaXRMb29wSGludCgpOwogICAgIGdlbmVyYXRvci5l
bWl0UHJvZmlsZUNvbnRyb2xGbG93KG1fc3RhdGVtZW50LT5zdGFydE9mZnNldCgpKTsKIAotICAg
IGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fc3RhdGVtZW50KTsKKyAgICBnZW5lcmF0b3IuZW1p
dE5vZGVJblRhaWxQb3NpdGlvbihkc3QsIG1fc3RhdGVtZW50KTsKIAogICAgIGdlbmVyYXRvci5l
bWl0TGFiZWwoc2NvcGUtPmNvbnRpbnVlVGFyZ2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0RGVi
dWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwg
bGluZVN0YXJ0T2Zmc2V0KCkpOwpAQCAtMjU1Niw3ICsyNTU2LDcgQEAgdm9pZCBSZXR1cm5Ob2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCog
ZHN0KQogICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKICAgICAgICAg
ZHN0ID0gMDsKIAotICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5SZWdpc3RlciA9IG1fdmFs
dWUgPyBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX3ZhbHVlKSA6IGdlbmVyYXRvci5lbWl0TG9h
ZChkc3QsIGpzVW5kZWZpbmVkKCkpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5SZWdp
c3RlciA9IG1fdmFsdWUgPyBnZW5lcmF0b3IuZW1pdE5vZGVJblRhaWxQb3NpdGlvbihkc3QsIG1f
dmFsdWUpIDogZ2VuZXJhdG9yLmVtaXRMb2FkKGRzdCwganNVbmRlZmluZWQoKSk7CiAgICAgZ2Vu
ZXJhdG9yLmVtaXRQcm9maWxlVHlwZShyZXR1cm5SZWdpc3Rlci5nZXQoKSwgUHJvZmlsZVR5cGVC
eXRlY29kZUZ1bmN0aW9uUmV0dXJuU3RhdGVtZW50LCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkp
OwogICAgIGlmIChnZW5lcmF0b3IuaXNJbkZpbmFsbHlCbG9jaygpKSB7CiAgICAgICAgIHJldHVy
blJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwg
cmV0dXJuUmVnaXN0ZXIuZ2V0KCkpOwpAQCAtMjU4MSw3ICsyNTgxLDcgQEAgdm9pZCBXaXRoTm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQq
IGRzdCkKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdE5vZGUo
bV9leHByKTsKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKG1fZGl2b3QsIG1fZGl2
b3QgLSBtX2V4cHJlc3Npb25MZW5ndGgsIG1fZGl2b3QpOwogICAgIGdlbmVyYXRvci5lbWl0UHVz
aFdpdGhTY29wZShzY29wZS5nZXQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9z
dGF0ZW1lbnQpOworICAgIGdlbmVyYXRvci5lbWl0Tm9kZUluVGFpbFBvc2l0aW9uKGRzdCwgbV9z
dGF0ZW1lbnQpOwogICAgIGdlbmVyYXRvci5lbWl0UG9wV2l0aFNjb3BlKCk7CiB9CiAKQEAgLTI4
MzQsNyArMjgzNCwxMCBAQCB2b2lkIFRyeU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAKICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRQdXNoQ2F0Y2hTY29wZShtX3Rocm93blZhbHVlSWRlbnQsIHRocm93blZhbHVlUmVnaXN0ZXIu
Z2V0KCksIG1fY2F0Y2hFbnZpcm9ubWVudCk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmls
ZUNvbnRyb2xGbG93KG1fdHJ5QmxvY2stPmVuZE9mZnNldCgpICsgMSk7Ci0gICAgICAgIGdlbmVy
YXRvci5lbWl0Tm9kZShkc3QsIG1fY2F0Y2hCbG9jayk7CisgICAgICAgIGlmIChtX2ZpbmFsbHlC
bG9jaykKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fY2F0Y2hCbG9jayk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZUluVGFpbFBvc2l0
aW9uKGRzdCwgbV9jYXRjaEJsb2NrKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQb3BDYXRjaFNj
b3BlKG1fY2F0Y2hFbnZpcm9ubWVudCk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoY2F0
Y2hFbmRMYWJlbC5nZXQoKSk7CiAgICAgfQpAQCAtMjg1MCw3ICsyODUzLDcgQEAgdm9pZCBUcnlO
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJ
RCogZHN0KQogCiAgICAgICAgIC8vIE5vcm1hbCBwYXRoOiBydW4gdGhlIGZpbmFsbHkgY29kZSwg
YW5kIGp1bXAgdG8gdGhlIGVuZC4KICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlQ29udHJv
bEZsb3coZmluYWxseVN0YXJ0T2Zmc2V0KTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGRz
dCwgbV9maW5hbGx5QmxvY2spOworICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGVJblRhaWxQb3Np
dGlvbihkc3QsIG1fZmluYWxseUJsb2NrKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxl
Q29udHJvbEZsb3cobV9maW5hbGx5QmxvY2stPmVuZE9mZnNldCgpICsgMSk7CiAgICAgICAgIGdl
bmVyYXRvci5lbWl0SnVtcChmaW5hbGx5RW5kTGFiZWwuZ2V0KCkpOwogCkBAIC0yODU5LDcgKzI4
NjIsNyBAQCB2b2lkIFRyeU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aHJv
d25WYWx1ZVJlZ2lzdGVyID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgICAgICBnZW5l
cmF0b3IucG9wVHJ5QW5kRW1pdENhdGNoKHRyeURhdGEsIGV4Y2VwdGlvblJlZ2lzdGVyLmdldCgp
LCB0aHJvd25WYWx1ZVJlZ2lzdGVyLmdldCgpLCBwcmVGaW5hbGx5TGFiZWwuZ2V0KCksIEhhbmRs
ZXJUeXBlOjpGaW5hbGx5KTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlQ29udHJvbEZs
b3coZmluYWxseVN0YXJ0T2Zmc2V0KTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwg
bV9maW5hbGx5QmxvY2spOworICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGVJblRhaWxQb3NpdGlv
bihkc3QsIG1fZmluYWxseUJsb2NrKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRUaHJvdyhleGNl
cHRpb25SZWdpc3Rlci5nZXQoKSk7CiAKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChmaW5h
bGx5RW5kTGFiZWwuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT3B0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5o
CmluZGV4IDJmN2ZkMzUzMmNhMjk1OGVkMGM0NTUzMjNhMGNmMzE3ZGZlYmRiN2QuLjliYWNiZDFh
ZTZmNmI3Yjg1ZGRmMWNkNzY5YTY3ZThhYTg4OWFiMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcHRpb25zLmgKQEAgLTEyOCw2ICsxMjgsNyBAQCB0eXBlZGVmIGNvbnN0IGNoYXIq
IG9wdGlvblN0cmluZzsKICAgICB2KGJvb2wsIGZvcmNlUHJvZmlsZXJCeXRlY29kZUdlbmVyYXRp
b24sIGZhbHNlLCBudWxscHRyKSBcCiAgICAgXAogICAgIHYoYm9vbCwgZW5hYmxlRnVuY3Rpb25E
b3RBcmd1bWVudHMsIHRydWUsIG51bGxwdHIpIFwKKyAgICB2KGJvb2wsIGVuYWJsZVRhaWxDYWxs
cywgdHJ1ZSwgbnVsbHB0cikgXAogICAgIFwKICAgICAvKiBzaG93RGlzYXNzZW1ibHkgaW1wbGll
cyBzaG93REZHRGlzYXNzZW1ibHkuICovIFwKICAgICB2KGJvb2wsIHNob3dEaXNhc3NlbWJseSwg
ZmFsc2UsICJkdW1wcyBkaXNhc3NlbWJseSBvZiBhbGwgSklUIGNvbXBpbGVkIGNvZGUgdXBvbiBj
b21waWxhdGlvbiIpIFwK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260552</attachid>
            <date>2015-09-03 19:17:21 -0700</date>
            <delta_ts>2015-09-03 20:05:53 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-148665-20150903191720.patch</filename>
            <type>text/plain</type>
            <size>29453</size>
            <attacher name="Basile Clement">basile_clement</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MTFmZThjZmRkNzI2OWRhYzQ2MWRiM2ZiMDNmYzAzNDFhNjFlODYzLi4wYzYzNzFjNjI2MTQwYzZl
MDc1ZjZiZjVjYzc5YTk1M2Q4MjRhMTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0OCBAQAorMjAxNS0wOS0wMyAgQmFzaWxlIENsZW1lbnQgIDxiYXNpbGVfY2xlbWVudEBh
cHBsZS5jb20+CisKKyAgICAgICAgW0VTNl0gUmVjb2duaXplIGNhbGxzIGluIHRhaWwgcG9zaXRp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODY2
NQorCisgICAgICAgIFJldmlld2VkIGJ5IFNhYW0gQmFyYXRpLgorCisgICAgICAgIFRoaXMgcGF0
Y2ggYWRkcyB0aGUgY2FwYWJpbGl0eSBmb3IgdGhlIGJ5dGVjb2RlIGdlbmVyYXRvciB0byByZWNv
Z25pemUKKyAgICAgICAgYW5kIGRpc3BhdGNoIHRhaWwgY2FsbHMsIGFzIHBlciBFUzYgc3BlYzoK
KyAgICAgICAgaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8j
c2VjLWlzaW50YWlscG9zaXRpb24KKworICAgICAgICBUaGlzIGRvZXMgbm90IGNoYW5nZSB0aGUg
Z2VuZXJhdGVkIGJ5dGVjb2RlLCBidXQgbWVyZWx5IHByb3ZpZGVzIHRoZQorICAgICAgICBob29r
IGZvciBnZW5lcmF0aW5nIHRhaWwgY2FsbHMgaW4gc3Vic2VxdWVudCBwYXRjaGVzIHRvd2FyZAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2NDc3CisK
KyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGxJblRhaWxQb3NpdGlvbik6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbFZhcmFyZ3NJblRhaWxQb3NpdGlvbik6Cisg
ICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Tm9kZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0Tm9kZUluVGFpbFBvc2l0aW9uKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIv
Tm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25DYWxsVmFsdWVOb2RlOjpl
bWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZTo6ZW1p
dEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25DYWxsQnJhY2tldE5vZGU6OmVtaXRC
eXRlY29kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29k
ZSk6CisgICAgICAgIChKU0M6OkNhbGxGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUp
OgorICAgICAgICAoSlNDOjpBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZSk6
CisgICAgICAgIChKU0M6OkxvZ2ljYWxPcE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChK
U0M6OkNvbmRpdGlvbmFsTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q29tbWFO
b2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpTb3VyY2VFbGVtZW50czo6ZW1pdEJ5
dGVjb2RlKToKKyAgICAgICAgKEpTQzo6SWZFbHNlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAg
ICAgKEpTQzo6RG9XaGlsZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OldoaWxl
Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Rm9yTm9kZTo6ZW1pdEJ5dGVjb2Rl
KToKKyAgICAgICAgKEpTQzo6UmV0dXJuTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpT
Qzo6V2l0aE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlRyeU5vZGU6OmVtaXRC
eXRlY29kZSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL1NldEZvclNjb3BlLmg6IEFkZGVkLgor
ICAgICAgICAoSlNDOjpTZXRGb3JTY29wZTo6U2V0Rm9yU2NvcGUpOgorICAgICAgICAoSlNDOjpT
ZXRGb3JTY29wZTo6flNldEZvclNjb3BlKToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuaDoK
KwogMjAxNS0wOS0wMyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAg
IFdhdGNocG9pbnRzT25TdHJ1Y3R1cmVTdHViSW5mbyBkb2Vzbid0IG5lZWQgdG8gYmUgcmVmZXJl
bmNlIGNvdW50ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggNTA4OWY1NjYxNDZiOTM3NWJkY2QwOTdh
ZTBkYTc2YWViNjQyMzZiMy4uMjc0MDI0YzgzMjlmNTRkMzM0MzJjNzJmNzdjZjM5OTc2YjMzYTMx
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTE5MSw2ICsxOTEsNyBAQCBCeXRlY29kZUdlbmVyYXRv
cjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwg
VW5saW5rZQogICAgICwgbV92bSgmdm0pCiAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGNvZGVC
bG9jay0+aXNCdWlsdGluRnVuY3Rpb24oKSkKICAgICAsIG1fdXNlc05vblN0cmljdEV2YWwoY29k
ZUJsb2NrLT51c2VzRXZhbCgpICYmICFjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKQorICAgICwg
bV9pblRhaWxQb3NpdGlvbihPcHRpb25zOjplbmFibGVUYWlsQ2FsbHMoKSAmJiBjb25zdHJ1Y3Rv
cktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUgJiYgaXNTdHJpY3RNb2RlKCkpCiB7CiAg
ICAgZm9yIChhdXRvJiBjb25zdGFudFJlZ2lzdGVyIDogbV9saW5rVGltZUNvbnN0YW50UmVnaXN0
ZXJzKQogICAgICAgICBjb25zdGFudFJlZ2lzdGVyID0gbnVsbHB0cjsKQEAgLTI0ODAsNiArMjQ4
MSwxNCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGwoUmVnaXN0ZXJJ
RCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBFeHBlYwogICAgIHJldHVybiBlbWl0Q2FsbChvcF9j
YWxsLCBkc3QsIGZ1bmMsIGV4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90LCBk
aXZvdFN0YXJ0LCBkaXZvdEVuZCk7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0Q2FsbEluVGFpbFBvc2l0aW9uKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVu
YywgRXhwZWN0ZWRGdW5jdGlvbiBleHBlY3RlZEZ1bmN0aW9uLCBDYWxsQXJndW1lbnRzJiBjYWxs
QXJndW1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCit7CisgICAg
Ly8gRklYTUU6IFdlIHNob3VsZCBiZSBlbWl0dGluZyBhIG5ldyBvcF90YWlsX2NhbGwgaGVyZSB3
aGVuCisgICAgLy8gbV9pblRhaWxQb3NpdGlvbiBpcyBmYWxzZQorICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg2NjEKKyAgICByZXR1cm4gZW1pdENhbGwo
b3BfY2FsbCwgZHN0LCBmdW5jLCBleHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZv
dCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdENhbGxFdmFsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgQ2Fs
bEFyZ3VtZW50cyYgY2FsbEFyZ3VtZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRp
dm90RW5kKQogewogICAgIHJldHVybiBlbWl0Q2FsbChvcF9jYWxsX2V2YWwsIGRzdCwgZnVuYywg
Tm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2
b3RFbmQpOwpAQCAtMjYyOSw2ICsyNjM4LDE0IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0Q2FsbFZhcmFyZ3MoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jCiAg
ICAgcmV0dXJuIGVtaXRDYWxsVmFyYXJncyhvcF9jYWxsX3ZhcmFyZ3MsIGRzdCwgZnVuYywgdGhp
c1JlZ2lzdGVyLCBhcmd1bWVudHMsIGZpcnN0RnJlZVJlZ2lzdGVyLCBmaXJzdFZhckFyZ09mZnNl
dCwgcHJvZmlsZUhvb2tSZWdpc3RlciwgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsKIH0K
IAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsVmFyYXJnc0luVGFpbFBv
c2l0aW9uKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgUmVnaXN0ZXJJRCogdGhp
c1JlZ2lzdGVyLCBSZWdpc3RlcklEKiBhcmd1bWVudHMsIFJlZ2lzdGVySUQqIGZpcnN0RnJlZVJl
Z2lzdGVyLCBpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0LCBSZWdpc3RlcklEKiBwcm9maWxlSG9v
a1JlZ2lzdGVyLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCit7CisgICAg
Ly8gRklYTUU6IFdlIHNob3VsZCBiZSBlbWl0dGluZyBhIG5ldyBvcF90YWlsX2NhbGwgaGVyZSB3
aGVuCisgICAgLy8gbV9pblRhaWxQb3NpdGlvbiBpcyBmYWxzZQorICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg2NjEKKyAgICByZXR1cm4gZW1pdENhbGxW
YXJhcmdzKG9wX2NhbGxfdmFyYXJncywgZHN0LCBmdW5jLCB0aGlzUmVnaXN0ZXIsIGFyZ3VtZW50
cywgZmlyc3RGcmVlUmVnaXN0ZXIsIGZpcnN0VmFyQXJnT2Zmc2V0LCBwcm9maWxlSG9va1JlZ2lz
dGVyLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOworfQorCiBSZWdpc3RlcklEKiBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdENvbnN0cnVjdFZhcmFyZ3MoUmVnaXN0ZXJJRCogZHN0LCBSZWdp
c3RlcklEKiBmdW5jLCBSZWdpc3RlcklEKiB0aGlzUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGFyZ3Vt
ZW50cywgUmVnaXN0ZXJJRCogZmlyc3RGcmVlUmVnaXN0ZXIsIGludDMyX3QgZmlyc3RWYXJBcmdP
ZmZzZXQsIFJlZ2lzdGVySUQqIHByb2ZpbGVIb29rUmVnaXN0ZXIsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdEVuZCkKIHsKICAgICByZXR1cm4gZW1pdENhbGxWYXJhcmdzKG9wX2Nv
bnN0cnVjdF92YXJhcmdzLCBkc3QsIGZ1bmMsIHRoaXNSZWdpc3RlciwgYXJndW1lbnRzLCBmaXJz
dEZyZWVSZWdpc3RlciwgZmlyc3RWYXJBcmdPZmZzZXQsIHByb2ZpbGVIb29rUmVnaXN0ZXIsIGRp
dm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggOTA2MGE1OGM3MjUz
NjQwN2I4OTk4ZWZkYTFiZWNkYzBiOTQyMWMwZC4uNDA1OThkMTEyYzE4MDA3MGYwMWNiMGM3NGUw
MWIxZjhlNzRhN2RjNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUg
IkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiUGFyc2VyRXJyb3IuaCIKICNpbmNsdWRlICJSZWdp
c3RlcklELmgiCisjaW5jbHVkZSAiU2V0Rm9yU2NvcGUuaCIKICNpbmNsdWRlICJTeW1ib2xUYWJs
ZS5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKQEAgLTM1OSw2
ICszNjAsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBlbWl0Tm9kZShSZWdp
c3RlcklEKiBkc3QsIFN0YXRlbWVudE5vZGUqIG4pCiAgICAgICAgIHsKKyAgICAgICAgICAgIFNl
dEZvclNjb3BlPGJvb2w+IHRhaWxQb3NpdGlvblBvaXNvbmVyKG1faW5UYWlsUG9zaXRpb24sIGZh
bHNlKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0Tm9kZUluVGFpbFBvc2l0aW9uKGRzdCwgbik7
CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGVtaXROb2RlSW5UYWlsUG9zaXRpb24oUmVnaXN0
ZXJJRCogZHN0LCBTdGF0ZW1lbnROb2RlKiBuKQorICAgICAgICB7CiAgICAgICAgICAgICAvLyBO
b2RlOjplbWl0Q29kZSBhc3N1bWVzIHRoYXQgZHN0LCBpZiBwcm92aWRlZCwgaXMgZWl0aGVyIGEg
bG9jYWwgb3IgYSByZWZlcmVuY2VkIHRlbXBvcmFyeS4KICAgICAgICAgICAgIEFTU0VSVCghZHN0
IHx8IGRzdCA9PSBpZ25vcmVkUmVzdWx0KCkgfHwgIWRzdC0+aXNUZW1wb3JhcnkoKSB8fCBkc3Qt
PnJlZkNvdW50KCkpOwogICAgICAgICAgICAgaWYgKCFtX3ZtLT5pc1NhZmVUb1JlY3Vyc2UoKSkg
ewpAQCAtMzcwLDExICszNzcsMjIgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBl
bWl0Tm9kZShTdGF0ZW1lbnROb2RlKiBuKQogICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0Tm9k
ZSgwLCBuKTsKKyAgICAgICAgICAgIGVtaXROb2RlKG51bGxwdHIsIG4pOworICAgICAgICB9CisK
KyAgICAgICAgdm9pZCBlbWl0Tm9kZUluVGFpbFBvc2l0aW9uKFN0YXRlbWVudE5vZGUqIG4pCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGVtaXROb2RlSW5UYWlsUG9zaXRpb24obnVsbHB0ciwgbik7
CiAgICAgICAgIH0KIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Tm9kZShSZWdpc3RlcklEKiBk
c3QsIEV4cHJlc3Npb25Ob2RlKiBuKQogICAgICAgICB7CisgICAgICAgICAgICBTZXRGb3JTY29w
ZTxib29sPiB0YWlsUG9zaXRpb25Qb2lzb25lcihtX2luVGFpbFBvc2l0aW9uLCBmYWxzZSk7Cisg
ICAgICAgICAgICByZXR1cm4gZW1pdE5vZGVJblRhaWxQb3NpdGlvbihkc3QsIG4pOworICAgICAg
ICB9CisKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5vZGVJblRhaWxQb3NpdGlvbihSZWdpc3Rl
cklEKiBkc3QsIEV4cHJlc3Npb25Ob2RlKiBuKQorICAgICAgICB7CiAgICAgICAgICAgICAvLyBO
b2RlOjplbWl0Q29kZSBhc3N1bWVzIHRoYXQgZHN0LCBpZiBwcm92aWRlZCwgaXMgZWl0aGVyIGEg
bG9jYWwgb3IgYSByZWZlcmVuY2VkIHRlbXBvcmFyeS4KICAgICAgICAgICAgIEFTU0VSVCghZHN0
IHx8IGRzdCA9PSBpZ25vcmVkUmVzdWx0KCkgfHwgIWRzdC0+aXNUZW1wb3JhcnkoKSB8fCBkc3Qt
PnJlZkNvdW50KCkpOwogICAgICAgICAgICAgaWYgKCFtX3ZtLT5pc1NhZmVUb1JlY3Vyc2UoKSkK
QEAgLTM4NCw3ICs0MDIsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdE5vZGUoRXhwcmVzc2lvbk5vZGUqIG4pCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBlbWl0Tm9kZSgwLCBuKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0Tm9kZShudWxscHRy
LCBuKTsKKyAgICAgICAgfQorCisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROb2RlSW5UYWlsUG9z
aXRpb24oRXhwcmVzc2lvbk5vZGUqIG4pCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBl
bWl0Tm9kZUluVGFpbFBvc2l0aW9uKG51bGxwdHIsIG4pOwogICAgICAgICB9CiAKICAgICAgICAg
dm9pZCBlbWl0Tm9kZUluQ29uZGl0aW9uQ29udGV4dChFeHByZXNzaW9uTm9kZSogbiwgTGFiZWwq
IHRydWVUYXJnZXQsIExhYmVsKiBmYWxzZVRhcmdldCwgRmFsbFRocm91Z2hNb2RlIGZhbGxUaHJv
dWdoTW9kZSkKQEAgLTUxOCw4ICs1NDEsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAog
ICAgICAgICBFeHBlY3RlZEZ1bmN0aW9uIGV4cGVjdGVkRnVuY3Rpb25Gb3JJZGVudGlmaWVyKGNv
bnN0IElkZW50aWZpZXImKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENhbGwoUmVnaXN0ZXJJ
RCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBFeHBlY3RlZEZ1bmN0aW9uLCBDYWxsQXJndW1lbnRz
JiwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKKyAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdENhbGxJblRhaWxQb3NpdGlvbihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQq
IGZ1bmMsIEV4cGVjdGVkRnVuY3Rpb24sIENhbGxBcmd1bWVudHMmLCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q2FsbEV2YWwo
UmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBDYWxsQXJndW1lbnRzJiwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwg
Y29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dENhbGxWYXJhcmdzKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgUmVnaXN0ZXJJ
RCogdGhpc1JlZ2lzdGVyLCBSZWdpc3RlcklEKiBhcmd1bWVudHMsIFJlZ2lzdGVySUQqIGZpcnN0
RnJlZVJlZ2lzdGVyLCBpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0LCBSZWdpc3RlcklEKiBwcm9m
aWxlSG9va1JlZ2lzdGVyLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwor
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q2FsbFZhcmFyZ3NJblRhaWxQb3NpdGlvbihSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIFJlZ2lzdGVySUQqIHRoaXNSZWdpc3RlciwgUmVn
aXN0ZXJJRCogYXJndW1lbnRzLCBSZWdpc3RlcklEKiBmaXJzdEZyZWVSZWdpc3RlciwgaW50MzJf
dCBmaXJzdFZhckFyZ09mZnNldCwgUmVnaXN0ZXJJRCogcHJvZmlsZUhvb2tSZWdpc3RlciwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFy
dCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKIAogICAgICAgICBlbnVtIFByb3Bl
cnR5RGVzY3JpcHRvck9wdGlvbiB7CiAgICAgICAgICAgICBQcm9wZXJ0eUNvbmZpZ3VyYWJsZSA9
IDEsCkBAIC04MzMsNiArODU4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgbV9l
eHByZXNzaW9uVG9vRGVlcCB7IGZhbHNlIH07CiAgICAgICAgIGJvb2wgbV9pc0J1aWx0aW5GdW5j
dGlvbiB7IGZhbHNlIH07CiAgICAgICAgIGJvb2wgbV91c2VzTm9uU3RyaWN0RXZhbCB7IGZhbHNl
IH07CisgICAgICAgIGJvb2wgbV9pblRhaWxQb3NpdGlvbiB7IGZhbHNlIH07CiAgICAgfTsKIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0Nv
ZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwCmluZGV4IDZhMjU5MjM5N2JmYWNmMTQ1ZjQ3MGNmNTFkM2RlYjg0YTNkNDgzYjIuLjli
MzQ2NDMwMjFjZTcyNmJkMzgzY2Y0YTVkNTYyMTEyMWJhNWI3ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTcxMyw3
ICs3MTMsNyBAQCBSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxWYWx1ZU5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZQogICAgICAgICByZXR1cm4gcmV0Owog
ICAgIH0KICAgICBnZW5lcmF0b3IuZW1pdExvYWQoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIo
KSwganNVbmRlZmluZWQoKSk7Ci0gICAgUmVnaXN0ZXJJRCogcmV0ID0gZ2VuZXJhdG9yLmVtaXRD
YWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNh
bGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgUmVn
aXN0ZXJJRCogcmV0ID0gZ2VuZXJhdG9yLmVtaXRDYWxsSW5UYWlsUG9zaXRpb24ocmV0dXJuVmFs
dWUuZ2V0KCksIGZ1bmMuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywg
ZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdFBy
b2ZpbGVUeXBlKHJldHVyblZhbHVlLmdldCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwog
ICAgIHJldHVybiByZXQ7CiB9CkBAIC03MzMsNyArNzMzLDcgQEAgUmVnaXN0ZXJJRCogRnVuY3Rp
b25DYWxsUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLAogICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0
ZXIoKSwganNVbmRlZmluZWQoKSk7CiAgICAgICAgIC8vIFRoaXMgcGFzc2VzIE5vRXhwZWN0ZWRG
dW5jdGlvbiBiZWNhdXNlIHdlIGV4cGVjdCB0aGF0IGlmIHRoZSBmdW5jdGlvbiBpcyBpbiBhCiAg
ICAgICAgIC8vIGxvY2FsIHZhcmlhYmxlLCB0aGVuIGl0J3Mgbm90IG9uZSBvZiBvdXIgYnVpbHQt
aW4gY29uc3RydWN0b3JzLgotICAgICAgICBSZWdpc3RlcklEKiByZXQgPSBnZW5lcmF0b3IuZW1p
dENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmMuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwg
Y2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAg
ICAgUmVnaXN0ZXJJRCogcmV0ID0gZ2VuZXJhdG9yLmVtaXRDYWxsSW5UYWlsUG9zaXRpb24ocmV0
dXJuVmFsdWUuZ2V0KCksIGZ1bmMuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3Vt
ZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRQcm9maWxlVHlwZShyZXR1cm5WYWx1ZS5nZXQoKSwgZGl2b3RTdGFydCgpLCBkaXZv
dEVuZCgpKTsKICAgICAgICAgcmV0dXJuIHJldDsKICAgICB9CkBAIC03NDksNyArNzQ5LDcgQEAg
UmVnaXN0ZXJJRCogRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLAogICAgICAgICBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29w
ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCB2YXIpKTsKICAgICBnZW5lcmF0b3IuZW1p
dEdldEZyb21TY29wZShmdW5jLmdldCgpLCBjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCB2
YXIsIFRocm93SWZOb3RGb3VuZCk7CiAgICAgZ2VuZXJhdG9yLmVtaXRURFpDaGVja0lmTmVjZXNz
YXJ5KHZhciwgZnVuYy5nZXQoKSwgbnVsbHB0cik7Ci0gICAgUmVnaXN0ZXJJRCogcmV0ID0gZ2Vu
ZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jLmdldCgpLCBleHBlY3RlZEZ1
bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkp
OworICAgIFJlZ2lzdGVySUQqIHJldCA9IGdlbmVyYXRvci5lbWl0Q2FsbEluVGFpbFBvc2l0aW9u
KHJldHVyblZhbHVlLmdldCgpLCBmdW5jLmdldCgpLCBleHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJn
dW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIGdlbmVyYXRv
ci5lbWl0UHJvZmlsZVR5cGUocmV0dXJuVmFsdWUuZ2V0KCksIGRpdm90U3RhcnQoKSwgZGl2b3RF
bmQoKSk7CiAgICAgcmV0dXJuIHJldDsKIH0KQEAgLTgxNyw3ICs4MTcsNyBAQCBSZWdpc3RlcklE
KiBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsCiAgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRo
aXNSZWdpc3RlcigpLCBnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCkpOwogICAgIGVsc2UKICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGJhc2Uu
Z2V0KCkpOwotICAgIFJlZ2lzdGVySUQqIHJldCA9IGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5W
YWx1ZS5nZXQoKSwgZnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3Vt
ZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICBSZWdpc3RlcklE
KiByZXQgPSBnZW5lcmF0b3IuZW1pdENhbGxJblRhaWxQb3NpdGlvbihyZXR1cm5WYWx1ZS5nZXQo
KSwgZnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2
b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdFByb2Zp
bGVUeXBlKHJldHVyblZhbHVlLmdldCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAg
IHJldHVybiByZXQ7CiB9CkBAIC04MzYsNyArODM2LDcgQEAgUmVnaXN0ZXJJRCogRnVuY3Rpb25D
YWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2kKICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVy
KCksIG1fYmFzZSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhzdWJleHByZXNz
aW9uRGl2b3QoKSwgc3ViZXhwcmVzc2lvblN0YXJ0KCksIHN1YmV4cHJlc3Npb25FbmQoKSk7CiAg
ICAgZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGZ1bmN0aW9uLmdldCgpLCBiYXNlSXNTdXBlciA/IGVt
aXRTdXBlckJhc2VGb3JDYWxsZWUoZ2VuZXJhdG9yKSA6IGNhbGxBcmd1bWVudHMudGhpc1JlZ2lz
dGVyKCksIG1faWRlbnQpOwotICAgIFJlZ2lzdGVySUQqIHJldCA9IGdlbmVyYXRvci5lbWl0Q2Fs
bChyZXR1cm5WYWx1ZS5nZXQoKSwgZnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwg
Y2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICBS
ZWdpc3RlcklEKiByZXQgPSBnZW5lcmF0b3IuZW1pdENhbGxJblRhaWxQb3NpdGlvbihyZXR1cm5W
YWx1ZS5nZXQoKSwgZnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3Vt
ZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICBnZW5lcmF0b3Iu
ZW1pdFByb2ZpbGVUeXBlKHJldHVyblZhbHVlLmdldCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5k
KCkpOwogICAgIHJldHVybiByZXQ7CiB9CkBAIC04NjUsNyArODY1LDcgQEAgUmVnaXN0ZXJJRCog
Q2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLAogICAgICAgICAgICAgYXJndW1lbnRzUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1p
dE5vZGUoc3ViamVjdCk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZv
KHNwcmVhZC0+ZGl2b3QoKSwgc3ByZWFkLT5kaXZvdFN0YXJ0KCksIHNwcmVhZC0+ZGl2b3RFbmQo
KSk7CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1JlZ2lzdGVyID0gZ2VuZXJh
dG9yLmVtaXRHZXRCeVZhbChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGFyZ3VtZW50c1JlZ2lz
dGVyLmdldCgpLCBnZW5lcmF0b3IuZW1pdExvYWQoMCwganNOdW1iZXIoMCkpKTsKLSAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0Q2FsbFZhcmFyZ3MocmV0dXJuVmFsdWUuZ2V0KCksIGJhc2UuZ2V0
KCksIHRoaXNSZWdpc3Rlci5nZXQoKSwgYXJndW1lbnRzUmVnaXN0ZXIuZ2V0KCksIGdlbmVyYXRv
ci5uZXdUZW1wb3JhcnkoKSwgMSwgcHJvZmlsZUhvb2tSZWdpc3Rlci5nZXQoKSwgZGl2b3QoKSwg
ZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2Fs
bFZhcmFyZ3NJblRhaWxQb3NpdGlvbihyZXR1cm5WYWx1ZS5nZXQoKSwgYmFzZS5nZXQoKSwgdGhp
c1JlZ2lzdGVyLmdldCgpLCBhcmd1bWVudHNSZWdpc3Rlci5nZXQoKSwgZ2VuZXJhdG9yLm5ld1Rl
bXBvcmFyeSgpLCAxLCBwcm9maWxlSG9va1JlZ2lzdGVyLmdldCgpLCBkaXZvdCgpLCBkaXZvdFN0
YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICB9IGVsc2UgaWYgKG1fYXJncy0+bV9saXN0Tm9k
ZSAmJiBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fZXhwcikgewogICAgICAgICAgICAgQXJndW1lbnRM
aXN0Tm9kZSogb2xkTGlzdCA9IG1fYXJncy0+bV9saXN0Tm9kZTsKICAgICAgICAgICAgIG1fYXJn
cy0+bV9saXN0Tm9kZSA9IG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0OwpAQCAtODczLDEzICs4
NzMsMTMgQEAgUmVnaXN0ZXJJRCogQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLAogICAgICAgICAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERl
c3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwogICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBj
YWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRMaXN0LT5tX2V4cHIpOwot
ICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVu
Y3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwg
ZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2Fs
bEluVGFpbFBvc2l0aW9uKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5v
RXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBk
aXZvdEVuZCgpKTsKICAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IG9sZExpc3Q7CiAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0
aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwg
YmFzZS5nZXQoKSk7CiAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2Vu
ZXJhdG9yLCBtX2FyZ3MpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGNhbGxBcmd1
bWVudHMudGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOwotICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhw
ZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZv
dEVuZCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbEluVGFpbFBvc2l0aW9uKHJl
dHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwg
Y2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAg
ICAgfQogICAgIH0KICAgICBpZiAoZW1pdENhbGxDaGVjaykgewpAQCAtODg4LDcgKzg4OCw3IEBA
IFJlZ2lzdGVySUQqIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwKICAgICAgICAgewogICAgICAgICAgICAgQ2FsbEFyZ3Vt
ZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBiYXNlLmdldCgpKTsK
LSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgZnVuY3Rp
b24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2
b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbElu
VGFpbFBvc2l0aW9uKHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3Rl
ZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5k
KCkpOwogICAgICAgICB9CiAgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZW5kLmdldCgpKTsK
ICAgICB9CkBAIC05NTEsNyArOTUxLDcgQEAgUmVnaXN0ZXJJRCogQXBwbHlGdW5jdGlvbkNhbGxE
b3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwKICAgICAg
ICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChlbmQuZ2V0KCkpOwogICAgICAgICAg
ICAgICAgIH07CiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFbnVtZXJhdGlvbih0aGlz
LCBzcHJlYWQtPmV4cHJlc3Npb24oKSwgZXh0cmFjdG9yKTsKLSAgICAgICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdENhbGxWYXJhcmdzKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0
KCksIHRoaXNSZWdpc3Rlci5nZXQoKSwgYXJndW1lbnRzUmVnaXN0ZXIuZ2V0KCksIGdlbmVyYXRv
ci5uZXdUZW1wb3JhcnkoKSwgMCwgcHJvZmlsZUhvb2tSZWdpc3Rlci5nZXQoKSwgZGl2b3QoKSwg
ZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1p
dENhbGxWYXJhcmdzSW5UYWlsUG9zaXRpb24ocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlv
bi5nZXQoKSwgdGhpc1JlZ2lzdGVyLmdldCgpLCBhcmd1bWVudHNSZWdpc3Rlci5nZXQoKSwgZ2Vu
ZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCAwLCBwcm9maWxlSG9va1JlZ2lzdGVyLmdldCgpLCBkaXZv
dCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICAgICAgfSBlbHNlIGlmICht
X2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dCkgewogICAgICAgICAgICAgICAgIEFTU0VSVChtX2Fy
Z3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9leHByLT5pc1NpbXBsZUFycmF5KCkpOwogICAgICAg
ICAgICAgICAgIEFTU0VSVCghbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fbmV4dCk7CkBA
IC05NTksMjAgKzk1OSwyMCBAQCBSZWdpc3RlcklEKiBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLAogICAgICAgICAgICAg
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUo
Z2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsKICAgICAgICAgICAg
ICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwogICAg
ICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3Rl
cigpLCBvbGRMaXN0LT5tX2V4cHIpOwotICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2Fs
bChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rp
b24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Cisg
ICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsSW5UYWlsUG9zaXRpb24ocmV0dXJuVmFs
dWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJn
dW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBtX2FyZ3MtPm1f
bGlzdE5vZGUtPm1fbmV4dDsKICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVh
bEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24o
ZHN0KSwgYmFzZS5nZXQoKSk7CiAgICAgICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJn
dW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1p
dE5vZGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgb2xkTGlzdC0+bV9leHByKTsKLSAg
ICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxG
dW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgp
LCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0Q2FsbEluVGFpbFBvc2l0aW9uKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0
KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFy
dCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG1fYXJncy0+bV9s
aXN0Tm9kZSA9IG9sZExpc3Q7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50
ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7CiAgICAgICAgICAgICBDYWxsQXJndW1l
bnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwogICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRMb2FkKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkp
OwotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFs
RnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3Qo
KSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
Q2FsbEluVGFpbFBvc2l0aW9uKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCks
IE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgp
LCBkaXZvdEVuZCgpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVCht
X2FyZ3MtPm1fbGlzdE5vZGUgJiYgbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQpOwpAQCAtOTkw
LDE0ICs5OTAsMTQgQEAgUmVnaXN0ZXJJRCogQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwKICAgICAgICAgd2hpbGUgKChh
cmdzID0gYXJncy0+bV9uZXh0KSkKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShhcmdz
LT5tX2V4cHIpOwogCi0gICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbFZhcmFyZ3MocmV0dXJuVmFs
dWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgdGhpc1JlZ2lzdGVyLmdldCgpLCBhcmdzUmVn
aXN0ZXIuZ2V0KCksIGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgMCwgcHJvZmlsZUhvb2tSZWdp
c3Rlci5nZXQoKSwgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAg
Z2VuZXJhdG9yLmVtaXRDYWxsVmFyYXJnc0luVGFpbFBvc2l0aW9uKHJldHVyblZhbHVlLmdldCgp
LCByZWFsRnVuY3Rpb24uZ2V0KCksIHRoaXNSZWdpc3Rlci5nZXQoKSwgYXJnc1JlZ2lzdGVyLmdl
dCgpLCBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIDAsIHByb2ZpbGVIb29rUmVnaXN0ZXIuZ2V0
KCksIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgfQogICAgIGlmIChl
bWl0Q2FsbENoZWNrKSB7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0KCkpOwog
ICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHJlYWxDYWxsLmdldCgpKTsKICAgICAgICAgQ2Fs
bEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGJhc2UuZ2V0KCkp
OwotICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmN0aW9u
LmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90
U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbEluVGFpbFBv
c2l0aW9uKHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0
aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwog
ICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGVuZC5nZXQoKSk7CiAgICAgfQogICAgIGdlbmVy
YXRvci5lbWl0UHJvZmlsZVR5cGUocmV0dXJuVmFsdWUuZ2V0KCksIGRpdm90U3RhcnQoKSwgZGl2
b3RFbmQoKSk7CkBAIC0xNjMyLDcgKzE2MzIsNyBAQCBSZWdpc3RlcklEKiBMb2dpY2FsT3BOb2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRAog
ICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZkZhbHNlKHRlbXAuZ2V0KCksIHRhcmdldC5nZXQo
KSk7CiAgICAgZWxzZQogICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZlRydWUodGVtcC5nZXQo
KSwgdGFyZ2V0LmdldCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdE5vZGUodGVtcC5nZXQoKSwgbV9l
eHByMik7CisgICAgZ2VuZXJhdG9yLmVtaXROb2RlSW5UYWlsUG9zaXRpb24odGVtcC5nZXQoKSwg
bV9leHByMik7CiAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbCh0YXJnZXQuZ2V0KCkpOwogCiAgICAg
cmV0dXJuIGdlbmVyYXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwgdGVtcC5nZXQo
KSk7CkBAIC0xNjYzLDEyICsxNjYzLDEyIEBAIFJlZ2lzdGVySUQqIENvbmRpdGlvbmFsTm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVyCiAgICAg
Z2VuZXJhdG9yLmVtaXRMYWJlbChiZWZvcmVUaGVuLmdldCgpKTsKIAogICAgIGdlbmVyYXRvci5l
bWl0UHJvZmlsZUNvbnRyb2xGbG93KG1fZXhwcjEtPnN0YXJ0T2Zmc2V0KCkpOwotICAgIGdlbmVy
YXRvci5lbWl0Tm9kZShuZXdEc3QuZ2V0KCksIG1fZXhwcjEpOworICAgIGdlbmVyYXRvci5lbWl0
Tm9kZUluVGFpbFBvc2l0aW9uKG5ld0RzdC5nZXQoKSwgbV9leHByMSk7CiAgICAgZ2VuZXJhdG9y
LmVtaXRKdW1wKGFmdGVyRWxzZS5nZXQoKSk7CiAKICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGJl
Zm9yZUVsc2UuZ2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZUNvbnRyb2xGbG93KG1f
ZXhwcjEtPmVuZE9mZnNldCgpICsgMSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXROb2RlKG5ld0RzdC5n
ZXQoKSwgbV9leHByMik7CisgICAgZ2VuZXJhdG9yLmVtaXROb2RlSW5UYWlsUG9zaXRpb24obmV3
RHN0LmdldCgpLCBtX2V4cHIyKTsKIAogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoYWZ0ZXJFbHNl
LmdldCgpKTsKIApAQCAtMTkyNyw3ICsxOTI3LDcgQEAgUmVnaXN0ZXJJRCogQ29tbWFOb2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHMK
ICAgICBDb21tYU5vZGUqIG5vZGUgPSB0aGlzOwogICAgIGZvciAoOyBub2RlICYmIG5vZGUtPm5l
eHQoKTsgbm9kZSA9IG5vZGUtPm5leHQoKSkKICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGdl
bmVyYXRvci5pZ25vcmVkUmVzdWx0KCksIG5vZGUtPm1fZXhwcik7Ci0gICAgcmV0dXJuIGdlbmVy
YXRvci5lbWl0Tm9kZShkc3QsIG5vZGUtPm1fZXhwcik7CisgICAgcmV0dXJuIGdlbmVyYXRvci5l
bWl0Tm9kZUluVGFpbFBvc2l0aW9uKGRzdCwgbm9kZS0+bV9leHByKTsKIH0KIAogLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFNvdXJjZUVsZW1lbnRzIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KQEAgLTE5NDEsNyArMTk0MSw3IEBAIGlubGluZSBTdGF0ZW1lbnROb2Rl
KiBTb3VyY2VFbGVtZW50czo6bGFzdFN0YXRlbWVudCgpIGNvbnN0CiBpbmxpbmUgdm9pZCBTb3Vy
Y2VFbGVtZW50czo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqIGRzdCkKIHsKICAgICBmb3IgKFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCA9IG1f
aGVhZDsgc3RhdGVtZW50OyBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnQtPm5leHQoKSkKLSAgICAgICAg
Z2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgc3RhdGVtZW50KTsKKyAgICAgICAgZ2VuZXJhdG9yLmVt
aXROb2RlSW5UYWlsUG9zaXRpb24oZHN0LCBzdGF0ZW1lbnQpOwogfQogCiAvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0gQmxvY2tOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQpAQCAtMjA5NSw3ICsyMDk1LDcgQEAgdm9pZCBJZkVsc2VOb2RlOjplbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogICAg
IGdlbmVyYXRvci5lbWl0UHJvZmlsZUNvbnRyb2xGbG93KG1faWZCbG9jay0+c3RhcnRPZmZzZXQo
KSk7CiAKICAgICBpZiAoIWRpZEZvbGRJZkJsb2NrKSB7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0
Tm9kZShkc3QsIG1faWZCbG9jayk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZUluVGFpbFBv
c2l0aW9uKGRzdCwgbV9pZkJsb2NrKTsKICAgICAgICAgaWYgKG1fZWxzZUJsb2NrKQogICAgICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGFmdGVyRWxzZS5nZXQoKSk7CiAgICAgfQpAQCAtMjEw
NCw3ICsyMTA0LDcgQEAgdm9pZCBJZkVsc2VOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogCiAgICAgaWYgKG1fZWxzZUJsb2Nr
KSB7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZUNvbnRyb2xGbG93KG1faWZCbG9jay0+
ZW5kT2Zmc2V0KCkgKyAobV9pZkJsb2NrLT5pc0Jsb2NrKCkgPyAxIDogMCkpOwotICAgICAgICBn
ZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX2Vsc2VCbG9jayk7CisgICAgICAgIGdlbmVyYXRvci5l
bWl0Tm9kZUluVGFpbFBvc2l0aW9uKGRzdCwgbV9lbHNlQmxvY2spOwogICAgIH0KIAogICAgIGdl
bmVyYXRvci5lbWl0TGFiZWwoYWZ0ZXJFbHNlLmdldCgpKTsKQEAgLTIxMjMsNyArMjEyMyw3IEBA
IHZvaWQgRG9XaGlsZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKiBkc3QpCiAgICAgZ2VuZXJhdG9yLmVtaXRMb29wSGludCgpOwogICAg
IGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBsYXN0TGluZSgp
LCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7CiAKLSAgICBnZW5lcmF0b3IuZW1p
dE5vZGUoZHN0LCBtX3N0YXRlbWVudCk7CisgICAgZ2VuZXJhdG9yLmVtaXROb2RlSW5UYWlsUG9z
aXRpb24oZHN0LCBtX3N0YXRlbWVudCk7CiAKICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHNjb3Bl
LT5jb250aW51ZVRhcmdldCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhl
Y3V0ZVN0YXRlbWVudCwgbGFzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0
KCkpOwpAQCAtMjE0Niw3ICsyMTQ2LDcgQEAgdm9pZCBXaGlsZU5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAgICAgZ2VuZXJh
dG9yLmVtaXRMb29wSGludCgpOwogICAgIAogICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZUNvbnRy
b2xGbG93KG1fc3RhdGVtZW50LT5zdGFydE9mZnNldCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdE5v
ZGUoZHN0LCBtX3N0YXRlbWVudCk7CisgICAgZ2VuZXJhdG9yLmVtaXROb2RlSW5UYWlsUG9zaXRp
b24oZHN0LCBtX3N0YXRlbWVudCk7CiAKICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHNjb3BlLT5j
b250aW51ZVRhcmdldCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0
ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgp
KTsKQEAgLTIxODAsNyArMjE4MCw3IEBAIHZvaWQgRm9yTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKICAgICBnZW5lcmF0b3Iu
ZW1pdExvb3BIaW50KCk7CiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlQ29udHJvbEZsb3cobV9z
dGF0ZW1lbnQtPnN0YXJ0T2Zmc2V0KCkpOwogCi0gICAgZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwg
bV9zdGF0ZW1lbnQpOworICAgIGdlbmVyYXRvci5lbWl0Tm9kZUluVGFpbFBvc2l0aW9uKGRzdCwg
bV9zdGF0ZW1lbnQpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChzY29wZS0+Y29udGludWVU
YXJnZXQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1l
bnQsIGZpcnN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7CkBAIC0y
NTU3LDcgKzI1NTcsNyBAQCB2b2lkIFJldHVybk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAgICAgaWYgKGRzdCA9PSBnZW5l
cmF0b3IuaWdub3JlZFJlc3VsdCgpKQogICAgICAgICBkc3QgPSAwOwogCi0gICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHJldHVyblJlZ2lzdGVyID0gbV92YWx1ZSA/IGdlbmVyYXRvci5lbWl0Tm9kZShk
c3QsIG1fdmFsdWUpIDogZ2VuZXJhdG9yLmVtaXRMb2FkKGRzdCwganNVbmRlZmluZWQoKSk7Cisg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVyblJlZ2lzdGVyID0gbV92YWx1ZSA/IGdlbmVyYXRv
ci5lbWl0Tm9kZUluVGFpbFBvc2l0aW9uKGRzdCwgbV92YWx1ZSkgOiBnZW5lcmF0b3IuZW1pdExv
YWQoZHN0LCBqc1VuZGVmaW5lZCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHJl
dHVyblJlZ2lzdGVyLmdldCgpLCBQcm9maWxlVHlwZUJ5dGVjb2RlRnVuY3Rpb25SZXR1cm5TdGF0
ZW1lbnQsIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgaWYgKGdlbmVyYXRvci5pc0lu
RmluYWxseUJsb2NrKCkpIHsKICAgICAgICAgcmV0dXJuUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1p
dE1vdmUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCByZXR1cm5SZWdpc3Rlci5nZXQoKSk7CkBA
IC0yNTgyLDcgKzI1ODIsNyBAQCB2b2lkIFdpdGhOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2V4cHIpOwogICAgIGdlbmVyYXRvci5l
bWl0RXhwcmVzc2lvbkluZm8obV9kaXZvdCwgbV9kaXZvdCAtIG1fZXhwcmVzc2lvbkxlbmd0aCwg
bV9kaXZvdCk7CiAgICAgZ2VuZXJhdG9yLmVtaXRQdXNoV2l0aFNjb3BlKHNjb3BlLmdldCgpKTsK
LSAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX3N0YXRlbWVudCk7CisgICAgZ2VuZXJhdG9y
LmVtaXROb2RlSW5UYWlsUG9zaXRpb24oZHN0LCBtX3N0YXRlbWVudCk7CiAgICAgZ2VuZXJhdG9y
LmVtaXRQb3BXaXRoU2NvcGUoKTsKIH0KIApAQCAtMjgzNSw3ICsyODM1LDEwIEBAIHZvaWQgVHJ5
Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVy
SUQqIGRzdCkKIAogICAgICAgICBnZW5lcmF0b3IuZW1pdFB1c2hDYXRjaFNjb3BlKG1fdGhyb3du
VmFsdWVJZGVudCwgdGhyb3duVmFsdWVSZWdpc3Rlci5nZXQoKSwgbV9jYXRjaEVudmlyb25tZW50
KTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlQ29udHJvbEZsb3cobV90cnlCbG9jay0+
ZW5kT2Zmc2V0KCkgKyAxKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9jYXRj
aEJsb2NrKTsKKyAgICAgICAgaWYgKG1fZmluYWxseUJsb2NrKQorICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXROb2RlKGRzdCwgbV9jYXRjaEJsb2NrKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXROb2RlSW5UYWlsUG9zaXRpb24oZHN0LCBtX2NhdGNoQmxvY2spOwog
ICAgICAgICBnZW5lcmF0b3IuZW1pdFBvcENhdGNoU2NvcGUobV9jYXRjaEVudmlyb25tZW50KTsK
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChjYXRjaEVuZExhYmVsLmdldCgpKTsKICAgICB9
CkBAIC0yODUxLDcgKzI4NTQsNyBAQCB2b2lkIFRyeU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAKICAgICAgICAgLy8gTm9y
bWFsIHBhdGg6IHJ1biB0aGUgZmluYWxseSBjb2RlLCBhbmQganVtcCB0byB0aGUgZW5kLgogICAg
ICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVDb250cm9sRmxvdyhmaW5hbGx5U3RhcnRPZmZzZXQp
OwotICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX2ZpbmFsbHlCbG9jayk7CisgICAg
ICAgIGdlbmVyYXRvci5lbWl0Tm9kZUluVGFpbFBvc2l0aW9uKGRzdCwgbV9maW5hbGx5QmxvY2sp
OwogICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVDb250cm9sRmxvdyhtX2ZpbmFsbHlCbG9j
ay0+ZW5kT2Zmc2V0KCkgKyAxKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGZpbmFsbHlF
bmRMYWJlbC5nZXQoKSk7CiAKQEAgLTI4NjAsNyArMjg2Myw3IEBAIHZvaWQgVHJ5Tm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkK
ICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRocm93blZhbHVlUmVnaXN0ZXIgPSBnZW5lcmF0
b3IubmV3VGVtcG9yYXJ5KCk7CiAgICAgICAgIGdlbmVyYXRvci5wb3BUcnlBbmRFbWl0Q2F0Y2go
dHJ5RGF0YSwgZXhjZXB0aW9uUmVnaXN0ZXIuZ2V0KCksIHRocm93blZhbHVlUmVnaXN0ZXIuZ2V0
KCksIHByZUZpbmFsbHlMYWJlbC5nZXQoKSwgSGFuZGxlclR5cGU6OkZpbmFsbHkpOwogICAgICAg
ICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVDb250cm9sRmxvdyhmaW5hbGx5U3RhcnRPZmZzZXQpOwot
ICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX2ZpbmFsbHlCbG9jayk7CisgICAgICAg
IGdlbmVyYXRvci5lbWl0Tm9kZUluVGFpbFBvc2l0aW9uKGRzdCwgbV9maW5hbGx5QmxvY2spOwog
ICAgICAgICBnZW5lcmF0b3IuZW1pdFRocm93KGV4Y2VwdGlvblJlZ2lzdGVyLmdldCgpKTsKIAog
ICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGZpbmFsbHlFbmRMYWJlbC5nZXQoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL1NldEZvclNjb3BlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL1NldEZvclNjb3BlLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYTQxMTVlYzExYWMyOTUyNjI1ZTVlNmRkYjAzODQ4MzE1Y2JiOGRjNAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvU2V0Rm9yU2NvcGUu
aApAQCAtMCwwICsxLDM3IEBACisjaWZuZGVmIFNldEZvclNjb3BlX2gKKyNkZWZpbmUgU2V0Rm9y
U2NvcGVfaAorCisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCituYW1lc3BhY2UgSlND
IHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2NsYXNzIFNldEZvclNjb3BlIHsKK3B1YmxpYzoK
KyAgICBTZXRGb3JTY29wZShUJiBjdXJyZW50VmFsdWUsIGNvbnN0IFQmIG5ld1ZhbHVlKQorICAg
ICAgICA6IG1fcmVmKGN1cnJlbnRWYWx1ZSkKKyAgICAgICAgLCBtX29sZFZhbHVlKGN1cnJlbnRW
YWx1ZSkKKyAgICB7CisgICAgICAgIG1fcmVmID0gbmV3VmFsdWU7CisgICAgfQorCisgICAgU2V0
Rm9yU2NvcGUoVCYgY3VycmVudFZhbHVlLCBUJiYgbmV3VmFsdWUpCisgICAgICAgIDogbV9yZWYo
Y3VycmVudFZhbHVlKQorICAgICAgICAsIG1fb2xkVmFsdWUoY3VycmVudFZhbHVlKQorICAgIHsK
KyAgICAgICAgY3VycmVudFZhbHVlID0gV1RGOjptb3ZlKG5ld1ZhbHVlKTsKKyAgICB9CisKKyAg
ICB+U2V0Rm9yU2NvcGUoKQorICAgIHsKKyAgICAgICAgbV9yZWYgPSBtX29sZFZhbHVlOworICAg
IH0KKworcHJpdmF0ZToKKyAgICBUJiBtX3JlZjsKKyAgICBUIG1fb2xkVmFsdWU7Cit9OworCit9
OyAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBTZXRGb3JTY29wZV9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKaW5kZXggMmY3ZmQzNTMyY2EyOTU4ZWQwYzQ1NTMy
M2EwY2YzMTdkZmViZGI3ZC4uOWJhY2JkMWFlNmY2YjdiODVkZGYxY2Q3NjlhNjdlOGFhODg5YWIy
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaApAQCAtMTI4LDYgKzEy
OCw3IEBAIHR5cGVkZWYgY29uc3QgY2hhciogb3B0aW9uU3RyaW5nOwogICAgIHYoYm9vbCwgZm9y
Y2VQcm9maWxlckJ5dGVjb2RlR2VuZXJhdGlvbiwgZmFsc2UsIG51bGxwdHIpIFwKICAgICBcCiAg
ICAgdihib29sLCBlbmFibGVGdW5jdGlvbkRvdEFyZ3VtZW50cywgdHJ1ZSwgbnVsbHB0cikgXAor
ICAgIHYoYm9vbCwgZW5hYmxlVGFpbENhbGxzLCB0cnVlLCBudWxscHRyKSBcCiAgICAgXAogICAg
IC8qIHNob3dEaXNhc3NlbWJseSBpbXBsaWVzIHNob3dERkdEaXNhc3NlbWJseS4gKi8gXAogICAg
IHYoYm9vbCwgc2hvd0Rpc2Fzc2VtYmx5LCBmYWxzZSwgImR1bXBzIGRpc2Fzc2VtYmx5IG9mIGFs
bCBKSVQgY29tcGlsZWQgY29kZSB1cG9uIGNvbXBpbGF0aW9uIikgXAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>