<?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>160859</bug_id>
          
          <creation_ts>2016-08-15 13:02:54 -0700</creation_ts>
          <short_desc>Migrate line breaking code from ints to Optional&lt;unsigned&gt;s</short_desc>
          <delta_ts>2016-08-16 17:35:56 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>jonlee</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1220117</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-08-15 13:02:54 -0700</bug_when>
    <thetext>Migrate line breaking code from ints to Optional&lt;unsigned&gt;s</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220118</commentid>
    <comment_count>1</comment_count>
      <attachid>286080</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-08-15 13:05:56 -0700</bug_when>
    <thetext>Created attachment 286080
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220140</commentid>
    <comment_count>2</comment_count>
      <attachid>286090</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-08-15 13:47:41 -0700</bug_when>
    <thetext>Created attachment 286090
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220269</commentid>
    <comment_count>3</comment_count>
      <attachid>286125</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-08-15 18:01:06 -0700</bug_when>
    <thetext>Created attachment 286125
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220376</commentid>
    <comment_count>4</comment_count>
      <attachid>286125</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-08-15 23:21:09 -0700</bug_when>
    <thetext>Comment on attachment 286125
Patch

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

Make sure to do performance testing if you haven’t already. This is all inlined because it&apos;s so hot, so maybe the separate booleans in the Optional will slow things down a bit.

&gt; Source/WebCore/rendering/BreakLines.h:23
&gt; +#ifndef BreakLines_h
&gt; +#define BreakLines_h

Should use #pragma once

&gt; Source/WebCore/rendering/BreakLines.h:35
&gt; +static const UChar asciiLineBreakTableFirstChar = &apos;!&apos;;
&gt; +static const UChar asciiLineBreakTableLastChar = 127;
&gt; +static const unsigned asciiLineBreakTableColumnCount = (asciiLineBreakTableLastChar - asciiLineBreakTableFirstChar) / 8 + 1;

No need for &quot;static&quot; on any of these.

Not sure the names here need to say ASCII. Given the first character is &apos;!&apos; and the last is 127, then, yes, it&apos;s only ASCII characters, but the code doesn&apos;t seem to rely on that so why include that acronym in the names. Also, why not write out the word &quot;Character&quot; instead of &quot;Char&quot;?

&gt; Source/WebCore/rendering/BreakLines.h:42
&gt; +enum class NBSPBehavior {
&gt; +    IgnoreNBSP,
&gt; +    TreatNBSPAsBreak,
&gt; +};

Do we need to use NBSP here instead of writing out NonBreakingSpace? The acronym seems odious.

&gt; Source/WebCore/rendering/BreakLines.h:186
&gt; +    String string = lazyBreakIterator.string();

We could make this faster by making the function return const String&amp; and use auto&amp; here to avoid unnecessary reference count churning. Or even use StringView.

&gt; Source/WebCore/rendering/BreakLines.h:252
&gt; +    if (keepAllWords) {
&gt; +        if (breakNBSP)
&gt; +            nextBreakable = nextBreakablePositionKeepingAllWords(lazyBreakIterator, startPosition);
&gt; +        else
&gt; +            nextBreakable = nextBreakablePositionKeepingAllWordsIgnoringNBSP(lazyBreakIterator, startPosition);
&gt; +    } else if (isLooseMode) {
&gt; +        if (breakNBSP)
&gt; +            nextBreakable = nextBreakablePositionLoose(lazyBreakIterator, startPosition);
&gt; +        else
&gt; +            nextBreakable = nextBreakablePositionIgnoringNBSPLoose(lazyBreakIterator, startPosition);
&gt; +    } else {
&gt; +        if (breakNBSP)
&gt; +            nextBreakable = nextBreakablePosition(lazyBreakIterator, startPosition);
&gt; +        else
&gt; +            nextBreakable = nextBreakablePositionIgnoringNBSP(lazyBreakIterator, startPosition);
&gt; +    }

Seems kind of messy with all these inline functions that are just boilerplate calling the 8 bit and 16 bit versions of things. I wonder if there is a cleaner way to organize this so we don’t actually have to write everything out.

&gt; Source/WebCore/rendering/SimpleLineLayoutTextFragmentIterator.h:27
&gt;  #ifndef SimpleLineLayoutTextFragmentIterator_h
&gt;  #define SimpleLineLayoutTextFragmentIterator_h

#pragma once

&gt; Source/WebCore/rendering/line/BreakingContext.h:26
&gt;  #ifndef BreakingContext_h
&gt;  #define BreakingContext_h

#pragma once

&gt; Source/WebKit/ios/Misc/WebUIKitSupport.mm:94
&gt;      LazyLineBreakIterator breakIterator(String(characters, length));

I think this shows that we should change LazyLineBreakIterator to operate on a StringView rather than a String. If there is no lifetime problem with the string we are doing the line breaks on, then it seems valuable to make that change.

&gt; Source/WebKit/ios/Misc/WebUIKitSupport.mm:97
&gt; -    while ((breakPos = nextBreakablePosition(breakIterator, breakPos)) &lt; position)
&gt; +    while (static_cast&lt;int&gt;(breakPos = nextBreakablePosition(breakIterator, breakPos)) &lt; position)
&gt;          lastBreakPos = breakPos++;
&gt; -    return lastBreakPos &lt; position ? (NSUInteger)lastBreakPos : INT_MAX;
&gt; +    return static_cast&lt;int&gt;(lastBreakPos) &lt; position ? lastBreakPos : INT_MAX;

These casts aren’t obviously safe if the numbers happen to be huge. But perhaps we have a guarantee they won’t be.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220402</commentid>
    <comment_count>5</comment_count>
      <attachid>286162</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-08-16 00:43:44 -0700</bug_when>
    <thetext>Created attachment 286162
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220598</commentid>
    <comment_count>6</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-08-16 15:19:04 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 286125 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=286125&amp;action=review
&gt; 
&gt; Make sure to do performance testing if you haven’t already. This is all
&gt; inlined because it&apos;s so hot, so maybe the separate booleans in the Optional
&gt; will slow things down a bit.

PLT shows no regression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220615</commentid>
    <comment_count>7</comment_count>
      <attachid>286162</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-16 15:40:46 -0700</bug_when>
    <thetext>Comment on attachment 286162
Patch for committing

Clearing flags on attachment: 286162

Committed r204531: &lt;http://trac.webkit.org/changeset/204531&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220687</commentid>
    <comment_count>8</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-08-16 17:35:43 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #4)
&gt; &gt; Comment on attachment 286125 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=286125&amp;action=review
&gt; &gt; 
&gt; &gt; Make sure to do performance testing if you haven’t already. This is all
&gt; &gt; inlined because it&apos;s so hot, so maybe the separate booleans in the Optional
&gt; &gt; will slow things down a bit.
&gt; 
&gt; PLT shows no regression.

Running PerformanceTests/Layout/line-layout.html also shows no regression.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286080</attachid>
            <date>2016-08-15 13:05:56 -0700</date>
            <delta_ts>2016-08-15 13:47:38 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-160859-20160815130411.patch</filename>
            <type>text/plain</type>
            <size>72129</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0NDY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjlkZGU5ODEwMmUzNGEy
ODA1YzZlZWFhOTU2Yzk1MDU4NGZkOTNiOC4uNmJhMWMyYjRmOTE4NzgwMTA2MWM0ZDM1NzAwOTNm
YjBkNTkwNzk2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDE2LTA4LTE1ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgTWlncmF0ZSBs
aW5lIGJyZWFraW5nIGNvZGUgZnJvbSBpbnRzIHRvIE9wdGlvbmFsPHVuc2lnbmVkPnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDg1OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByZXZpb3VzbHksIHdl
IHdlcmUgdXNpbmcgLTEgdG8gbWVhbiAiYmVmb3JlIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0cmlu
ZyIuIE5vdywKKyAgICAgICAgTnVsbG9wdCBtZWFucyB0aGF0LgorCisgICAgICAgIFRoaXMgcGF0
Y2ggYWxzbyByZW5hbWVzIGJyZWFrX2xpbmVzLntoLGNwcH0gdG8gQnJlYWtMaW5lcy57aC5jcHB9
LiBUaGlzIGZpbGUgd2FzCisgICAgICAgIG9yaWdpbmFsbHkgbmFtZWQgZHVyaW5nIHRoZSBLSFRN
TCBkYXlzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2
aW9yIGNoYW5nZS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiByZW5kZXJpbmcvQnJlYWtM
aW5lcy5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvYnJlYWtfbGlu
ZXMuY3BwLgorICAgICAgICAqIHJlbmRlcmluZy9CcmVha0xpbmVzLmg6IFJlbmFtZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvYnJlYWtfbGluZXMuaC4KKyAgICAgICAgKFdlYkNvcmU6
OmlzQnJlYWthYmxlU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkQnJlYWtBZnRlcik6
CisgICAgICAgIChXZWJDb3JlOjpuZWVkc0xpbmVCcmVha0l0ZXJhdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6Om5leHRCcmVha2FibGVQb3NpdGlvbk5vbkxvb3NlbHkpOgorICAgICAgICAoV2ViQ29y
ZTo6bmV4dEJyZWFrYWJsZVBvc2l0aW9uTG9vc2VseSk6CisgICAgICAgIChXZWJDb3JlOjpuZXh0
QnJlYWthYmxlUG9zaXRpb25LZWVwaW5nQWxsV29yZHMpOgorICAgICAgICAoV2ViQ29yZTo6bmV4
dEJyZWFrYWJsZVBvc2l0aW9uS2VlcGluZ0FsbFdvcmRzSWdub3JpbmdOQlNQKToKKyAgICAgICAg
KFdlYkNvcmU6Om5leHRCcmVha2FibGVQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpuZXh0
QnJlYWthYmxlUG9zaXRpb25JZ25vcmluZ05CU1ApOgorICAgICAgICAoV2ViQ29yZTo6bmV4dEJy
ZWFrYWJsZVBvc2l0aW9uTG9vc2UpOgorICAgICAgICAoV2ViQ29yZTo6bmV4dEJyZWFrYWJsZVBv
c2l0aW9uSWdub3JpbmdOQlNQTG9vc2UpOgorICAgICAgICAoV2ViQ29yZTo6aXNCcmVha2FibGUp
OgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5oOgorICAgICAgICAoV2ViQ29y
ZTo6SW5saW5lSXRlcmF0b3I6Om1vdmVUbyk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVy
YXRvcjo6bmV4dEJyZWFrYWJsZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0
ZXJhdG9yOjpzZXROZXh0QnJlYWthYmxlUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5s
aW5lSXRlcmF0b3I6OklubGluZUl0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJp
bmcvSW5saW5lVGV4dEJveC5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxX
aWR0aHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJpbmdBbGxJbk9uZS5jcHA6CisgICAg
ICAgICogcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJdGVyYXRvci5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9icmVha19saW5lcy5oOgorICAgICAgICAoV2ViQ29yZTo6aXNC
cmVha2FibGVTcGFjZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpzaG91bGRCcmVha0Fm
dGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om5lZWRzTGluZUJyZWFrSXRlcmF0b3Ip
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6bmV4dEJyZWFrYWJsZVBvc2l0aW9uTm9uTG9v
c2VseSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpuZXh0QnJlYWthYmxlUG9zaXRpb25M
b29zZWx5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om5leHRCcmVha2FibGVQb3NpdGlv
bktlZXBpbmdBbGxXb3Jkcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpuZXh0QnJlYWth
YmxlUG9zaXRpb25LZWVwaW5nQWxsV29yZHNJZ25vcmluZ05CU1ApOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6bmV4dEJyZWFrYWJsZVBvc2l0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6Om5leHRCcmVha2FibGVQb3NpdGlvbklnbm9yaW5nTkJTUCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpuZXh0QnJlYWthYmxlUG9zaXRpb25Mb29zZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpuZXh0QnJlYWthYmxlUG9zaXRpb25JZ25vcmluZ05CU1BMb29zZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjppc0JyZWFrYWJsZSk6IERlbGV0ZWQuCisgICAgICAg
ICogcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpC
cmVha2luZ0NvbnRleHQ6OmNvbW1pdExpbmVCcmVha0F0Q3VycmVudFdpZHRoKToKKyAgICAgICAg
KFdlYkNvcmU6OkJyZWFraW5nQ29udGV4dDo6SW5saW5lSXRlcmF0b3JIaXN0b3J5OjpuZXh0QnJl
YWthYmxlUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QnJlYWtpbmdDb250ZXh0OjpJbmxp
bmVJdGVyYXRvckhpc3Rvcnk6Om1vdmVUbyk6CisgICAgICAgIChXZWJDb3JlOjp0cnlIeXBoZW5h
dGluZyk6CisgICAgICAgIChXZWJDb3JlOjpCcmVha2luZ0NvbnRleHQ6OmhhbmRsZVRleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6QnJlYWtpbmdDb250ZXh0OjpvcHRpbWFsTGluZUJyZWFrTG9jYXRp
b25Gb3JUcmFpbGluZ1dvcmQpOgorCiAyMDE2LTA4LTE1ICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRml4IFdpbkNhaXJvIGJ1aWxkIGFmdGVy
IHIyMDQ0NjYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cKaW5kZXggMTEwYWYwOTkyMGFhZmQwZjU5NDI1M2RmYzAw
N2I2MzRmZDk2M2ZkNy4uNjJiZDI1N2MyOWQ3M2E0ZjBiZjhlYzMwYTZkYTk4ODUwNjAxY2Q2OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvaW9zL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE2LTA4LTE1ICBNeWxlcyBDLiBN
YXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgTWlncmF0ZSBsaW5lIGJy
ZWFraW5nIGNvZGUgZnJvbSBpbnRzIHRvIE9wdGlvbmFsPHVuc2lnbmVkPnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDg1OQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWlzYy9XZWJVSUtpdFN1cHBv
cnQubW06CisgICAgICAgIChXZWJLaXRHZXRMYXN0TGluZUJyZWFrSW5CdWZmZXIpOgorCiAyMDE2
LTA4LTE1ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAg
UmVtb3ZlIHVudXNlZCBpbmNsdWRlcyBvZiB3dGYgaGVhZGVycwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApp
bmRleCA2NjYxYWNkYWYwMjNkNDBjOTUyZTI4MDMyODEyMTAwYjNmZGI0N2YyLi41YTkxMTRiYWUx
NjA1ZjNhN2ZlMjlkNGVlMDAwMjA5YThmZTY1ODYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAt
MjQwOCw2ICsyNDA4LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHJlbmRlcmluZy9BdXRv
VGFibGVMYXlvdXQuY3BwCiAgICAgcmVuZGVyaW5nL0JpZGlSdW4uY3BwCiAgICAgcmVuZGVyaW5n
L0JvcmRlckVkZ2UuY3BwCisgICAgcmVuZGVyaW5nL0JyZWFrTGluZXMuY3BwCiAgICAgcmVuZGVy
aW5nL0NsaXBSZWN0LmNwcAogICAgIHJlbmRlcmluZy9Db3VudGVyTm9kZS5jcHAKICAgICByZW5k
ZXJpbmcvRWxsaXBzaXNCb3guY3BwCkBAIC0yNTI2LDcgKzI1MjcsNiBAQCBzZXQoV2ViQ29yZV9T
T1VSQ0VTCiAgICAgcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5jcHAKICAgICByZW5k
ZXJpbmcvVGV4dFBhaW50U3R5bGUuY3BwCiAgICAgcmVuZGVyaW5nL1RleHRQYWludGVyLmNwcAot
ICAgIHJlbmRlcmluZy9icmVha19saW5lcy5jcHAKIAogICAgIHJlbmRlcmluZy9saW5lL0xpbmVC
cmVha2VyLmNwcAogICAgIHJlbmRlcmluZy9saW5lL0xpbmVJbmZvLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGMwMmExOGU1
YjUzNWMxYmUxNTNkYmE2NzAwOGZlMGUxZGQwYzYwYmUuLjgyNTc4OTU0NDVkMjRhYmRmMmIxNGE1
NTZjYTZlYmJiMWMzNTk2YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU2NzEsOCArNTY3MSw3IEBACiAJCUJDRUE0NzhGMDk3
Q0FBQzgwMDk0QzlFNCAvKiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFQTQ3N0MwOTdDQUFDODAw
OTRDOUU0IC8qIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgKi87IH07CiAJCUJDRUE0
NzkwMDk3Q0FBQzgwMDk0QzlFNCAvKiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUE0NzdEMDk3Q0FB
QzgwMDk0QzlFNCAvKiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0VBNDg1MjA5N0Q5MzAyMDA5
NEM5RTQgLyogUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUE0ODEzMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5k
ZXJCbG9ja0xpbmVMYXlvdXQuY3BwICovOyB9OwotCQlCQ0VBNDg1NDA5N0Q5MzAyMDA5NEM5RTQg
LyogYnJlYWtfbGluZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkNFQTQ4MTUwOTdEOTMwMjAwOTRDOUU0IC8qIGJyZWFrX2xpbmVzLmNwcCAqLzsg
fTsKLQkJQkNFQTQ4NTUwOTdEOTMwMjAwOTRDOUU0IC8qIGJyZWFrX2xpbmVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VBNDgxNjA5N0Q5MzAyMDA5
NEM5RTQgLyogYnJlYWtfbGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQlCQ0VBNDg1NDA5N0Q5MzAyMDA5NEM5RTQgLyogQnJlYWtMaW5lcy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VBNDgx
NTA5N0Q5MzAyMDA5NEM5RTQgLyogQnJlYWtMaW5lcy5jcHAgKi87IH07CiAJCUJDRUE0ODU5MDk3
RDkzMDIwMDk0QzlFNCAvKiBJbmxpbmVUZXh0Qm94LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUE0ODFBMDk3RDkzMDIwMDk0QzlFNCAvKiBJbmxp
bmVUZXh0Qm94LmNwcCAqLzsgfTsKIAkJQkNFQTQ4NUEwOTdEOTMwMjAwOTRDOUU0IC8qIElubGlu
ZVRleHRCb3guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDRUE0ODFCMDk3RDkzMDIwMDk0QzlFNCAvKiBJbmxpbmVUZXh0Qm94LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNFQTQ4NUYwOTdEOTMwMjAw
OTRDOUU0IC8qIFJlbmRlckJsb2NrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDRUE0ODIwMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJCbG9jay5j
cHAgKi87IH07CkBAIC01NzkxLDYgKzU3OTAsNyBAQAogCQlDMjgwODMzRjFDNkRDMjZGMDAxNDUx
QjYgLyogSlNGb250RmFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQzI4MDgzM0UxQzZEQzIyQzAwMTQ1MUI2IC8qIEpTRm9udEZhY2UuaCAqLzsgfTsK
IAkJQzI4MDgzNDAxQzZEQzI3NTAwMTQ1MUI2IC8qIEpTRm9udEZhY2UuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI4MDgzM0QxQzZEQzIyQzAwMTQ1
MUI2IC8qIEpTRm9udEZhY2UuY3BwICovOyB9OwogCQlDMjgwODM0MjFDNkRDOTZBMDAxNDUxQjYg
LyogSlNGb250RmFjZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDMjgwODM0MTFDNkRDOTZBMDAxNDUxQjYgLyogSlNGb250RmFjZUN1c3Rv
bS5jcHAgKi87IH07CisJCUMyRTFGNDNGMUQ2MjU0RTEwMDk0NjI1QyAvKiBCcmVha0xpbmVzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VBNDgxNjA5
N0Q5MzAyMDA5NEM5RTQgLyogQnJlYWtMaW5lcy5oICovOyB9OwogCQlDMzMwQTIyMzEzRUMxOTZC
MDAwMEI0NUIgLyogQ29sb3JDaG9vc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDMzMwQTIyMTEzRUMxOTZCMDAwMEI0NUIgLyogQ29sb3JDaG9vc2Vy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzMz
RUU1QzQxNEZCNDk2MTAwMDIwOTVBIC8qIEJhc2VDbGlja2FibGVXaXRoS2V5SW5wdXRUeXBlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMzM0VFNUMy
MTRGQjQ5NjEwMDAyMDk1QSAvKiBCYXNlQ2xpY2thYmxlV2l0aEtleUlucHV0VHlwZS5jcHAgKi87
IH07CiAJCUMzM0VFNUM1MTRGQjQ5NjEwMDAyMDk1QSAvKiBCYXNlQ2xpY2thYmxlV2l0aEtleUlu
cHV0VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzMzRUU1QzMxNEZCNDk2MTAwMDIwOTVBIC8qIEJhc2VDbGlja2FibGVXaXRoS2V5SW5wdXRUeXBl
LmggKi87IH07CkBAIC0xMzQ5MCw4ICsxMzQ5MCw4IEBACiAJCUJDRUE0Nzg5MDk3Q0FBQzgwMDk0
QzlFNCAvKiBDU1NQcm9wZXJ0eU5hbWVzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBDU1NQ
cm9wZXJ0eU5hbWVzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0VBNDc4QzA5
N0NBQUM4MDA5NEM5RTQgLyogQ1NTVmFsdWVLZXl3b3Jkcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gQ1NTVmFsdWVLZXl3b3Jkcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QkNFQTQ4MTMwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckJsb2NrTGluZUxheW91dC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyQmxvY2tMaW5lTGF5b3V0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkNFQTQ4MTUwOTdEOTMwMjAwOTRD
OUU0IC8qIGJyZWFrX2xpbmVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBicmVha19saW5lcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJDRUE0
ODE2MDk3RDkzMDIwMDk0QzlFNCAvKiBicmVha19saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gYnJlYWtfbGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQkNFQTQ4MTUwOTdEOTMwMjAwOTRDOUU0IC8qIEJyZWFrTGluZXMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJyZWFrTGluZXMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlCQ0VBNDgxNjA5N0Q5MzAyMDA5NEM5RTQgLyogQnJlYWtMaW5lcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnJlYWtMaW5lcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0VBNDgxQTA5N0Q5MzAyMDA5NEM5RTQgLyogSW5saW5l
VGV4dEJveC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5saW5l
VGV4dEJveC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRUE0ODFCMDk3RDkz
MDIwMDk0QzlFNCAvKiBJbmxpbmVUZXh0Qm94LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJbmxpbmVUZXh0Qm94Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJD
RUE0ODIwMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJCbG9jay5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyQmxvY2suY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMjM2MzQsOCArMjM2MzQsOCBAQAogCQkJCUJDRTc4OTg1MTEyMEU3QTYw
MDYwRUNFNSAvKiBCaWRpUnVuLmggKi8sCiAJCQkJNThBRUUyRjMxOEQ0QkNDRjAwMjJFN0ZFIC8q
IEJvcmRlckVkZ2UuY3BwICovLAogCQkJCTU4OTU1NkVDMThENEE0NDAwMDc2NEIwMyAvKiBCb3Jk
ZXJFZGdlLmggKi8sCi0JCQkJQkNFQTQ4MTUwOTdEOTMwMjAwOTRDOUU0IC8qIGJyZWFrX2xpbmVz
LmNwcCAqLywKLQkJCQlCQ0VBNDgxNjA5N0Q5MzAyMDA5NEM5RTQgLyogYnJlYWtfbGluZXMuaCAq
LywKKwkJCQlCQ0VBNDgxNTA5N0Q5MzAyMDA5NEM5RTQgLyogQnJlYWtMaW5lcy5jcHAgKi8sCisJ
CQkJQkNFQTQ4MTYwOTdEOTMwMjAwOTRDOUU0IC8qIEJyZWFrTGluZXMuaCAqLywKIAkJCQlGQjky
REY0OTE1RkVEMDg3MDA5OTQ0MzMgLyogQ2xpcFBhdGhPcGVyYXRpb24uaCAqLywKIAkJCQk1ODAz
NzE1RjFBNjZGMDBBMDBCQUY1MTkgLyogQ2xpcFJlY3QuY3BwICovLAogCQkJCTU4MDM3MTYwMUE2
NkYwMEEwMEJBRjUxOSAvKiBDbGlwUmVjdC5oICovLApAQCAtMjQ5MTgsNyArMjQ5MTgsNiBAQAog
CQkJCTU4OTU1NkVEMThENEE0NDAwMDc2NEIwMyAvKiBCb3JkZXJFZGdlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzVFQjVEQjBFODFCN0VBMDBCMjU5NjUgLyogQm9yZGVyVmFsdWUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTZFRDhDMzdBMTgzQkZGOEMwMDlFNTNCRCAvKiBCb3hTaGFwZS5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJQkNFQTQ4NTUwOTdEOTMwMjAwOTRDOUU0IC8qIGJyZWFrX2xpbmVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUREQjA5OUU2NDkyMDA1NkU1ODEgLyogQnJlYWtCbG9j
a3F1b3RlQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTk5RTc1OTAxMTA1NUExRjAwRDkw
NEZBIC8qIEJyaWRnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTlCNTk3NzUxMTA4NjU3OTAwNzE1
OUU4IC8qIEJyaWRnZUpTQy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjExOSw2ICsyNjExOCw3IEBA
CiAJCQkJRkRGMDlEQzkxMzk5QjYyMjAwNjg4RTVCIC8qIEpTQmlxdWFkRmlsdGVyTm9kZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMkUyRDk5Q0UxMEUyQkJEQTAwNDk2MzM3IC8qIEpTQmxvYi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMTREQ0YzQjMxQjZCRTIwODAwNjJENEMzIC8qIEpTQnl0ZUxlbmd0
aFF1ZXVpbmdTdHJhdGVneS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzJFMUY0M0YxRDYyNTRFMTAw
OTQ2MjVDIC8qIEJyZWFrTGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0NDlFMjRDMTA3RDRB
ODQwMEI1NzkzRiAvKiBKU0NhbGxiYWNrRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjVERjMy
M0EwOUQxREU2NTAwMEJFMzI1IC8qIEpTQ2FudmFzR3JhZGllbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTY1REYzMjNDMDlEMURFNjUwMDBCRTMyNSAvKiBKU0NhbnZhc1BhdHRlcm4uaCBpbiBIZWFk
ZXJzICovLApAQCAtMjg4MTAsNyArMjg4MTAsNyBAQAogCQkJCTk3NkQ2QzdFMTIyQjhBM0QwMDFG
RDFGNyAvKiBCbG9iVVJMLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU4QUVFMkY0MThENEJDQ0Yw
MDIyRTdGRSAvKiBCb3JkZXJFZGdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTZFRDhDMzc5MTgz
QkZGOEMwMDlFNTNCRCAvKiBCb3hTaGFwZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlCQ0VBNDg1
NDA5N0Q5MzAyMDA5NEM5RTQgLyogYnJlYWtfbGluZXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
QkNFQTQ4NTQwOTdEOTMwMjAwOTRDOUU0IC8qIEJyZWFrTGluZXMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJOTMzMDlEREEwOTlFNjQ5MjAwNTZFNTgxIC8qIEJyZWFrQmxvY2txdW90ZUNvbW1hbmQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTlCNTk3NzMxMTA4NjU2QjAwNzE1OUU4IC8qIEJyaWRn
ZUpTQy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QTQ1MDMyRjE4REI3MTcyMDAzNzdCMzQgLyog
QnVmZmVyZWRMaW5lUmVhZGVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0JyZWFrTGluZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0JyZWFrTGluZXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmYjUxZGIzODBlNTk3MTEyNjAzMzE1Yjcy
YTEwZjYzOWIwYWIxYTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvQnJlYWtMaW5lcy5jcHAKQEAgLTAsMCArMSwxMDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDUsIDIwMDcsIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJCcmVha0xpbmVzLmgiCisKKyNpbmNs
dWRlIDx3dGYvQVNDSUlDVHlwZS5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNp
bmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKKy8vIFBhY2sgOCBiaXRzIGludG8gb25lIGJ5dGUKKyNkZWZpbmUgQihhLCBiLCBjLCBk
LCBlLCBmLCBnLCBoKSBcCisgICAgKChhKSB8ICgoYikgPDwgMSkgfCAoKGMpIDw8IDIpIHwgKChk
KSA8PCAzKSB8ICgoZSkgPDwgNCkgfCAoKGYpIDw8IDUpIHwgKChnKSA8PCA2KSB8ICgoaCkgPDwg
NykpCisKKy8vIExpbmUgYnJlYWtpbmcgdGFibGUgcm93IGZvciBlYWNoIGRpZ2l0ICgwLTkpCisj
ZGVmaW5lIERJIHsgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCB9CisKKy8vIExp
bmUgYnJlYWtpbmcgdGFibGUgcm93IGZvciBhc2NpaSBsZXR0ZXJzIChhLXogQS1aKQorI2RlZmlu
ZSBBTCB7IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAgfQorCisjZGVmaW5lIEYg
MHhGRgorCisvLyBMaW5lIGJyZWFraW5nIHRhYmxlIGZvciBwcmludGFibGUgQVNDSUkgY2hhcmFj
dGVycy4gTGluZSBicmVha2luZyBvcHBvcnR1bml0aWVzIGluIHRoaXMgdGFibGUgYXJlIGFzIGJl
bG93OgorLy8gLSBiZWZvcmUgb3BlbmluZyBwdW5jdHVhdGlvbnMgc3VjaCBhcyAnKCcsICc8Jywg
J1snLCAneycgYWZ0ZXIgY2VydGFpbiBjaGFyYWN0ZXJzIChjb21wYXRpYmxlIHdpdGggRmlyZWZv
eCAzLjYpOworLy8gLSBhZnRlciAnLScgYW5kICc/JyAoYmFja3dhcmQtY29tcGF0aWJsZSwgYW5k
IGNvbXBhdGlibGUgd2l0aCBJbnRlcm5ldCBFeHBsb3JlcikuCisvLyBQbGVhc2UgcmVmZXIgdG8g
PGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzY5OD4gZm9yIGxpbmUg
YnJlYWtpbmcgbWF0cml4ZXMgb2YgZGlmZmVyZW50IGJyb3dzZXJzCisvLyBhbmQgdGhlIElDVSBz
dGFuZGFyZC4KK1dFQkNPUkVfRVhQT1JUIGNvbnN0IHVuc2lnbmVkIGNoYXIgYXNjaWlMaW5lQnJl
YWtUYWJsZVtdW2FzY2lpTGluZUJyZWFrVGFibGVDb2x1bW5Db3VudF0gPSB7CisgICAgLy8gICEg
ICIgICMgICQgICUgICYgICcgICggICAgICkgICogICsgICwgIC0gIC4gIC8gIDAgIDEtOCAgIDkg
IDogIDsgIDwgID0gID4gID8gIEAgICAgIEEtWCAgICAgIFkgIFogIFsgIFwgIF0gIF4gIF8gIGAg
ICAgIGEteCAgICAgIHkgIHogIHsgIHwgIH0gIH4gIERFTAorICAgIHsgQigwLCAwLCAwLCAwLCAw
LCAwLCAwLCAxKSwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgQigwLCAwLCAwLCAxLCAw
LCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAxLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwg
QigwLCAwLCAxLCAwLCAwLCAwLCAwLCAwKSB9LCAvLyAhCisgICAgeyBCKDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDEpLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCBCKDAsIDAsIDAsIDEsIDAs
IDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBC
KDAsIDAsIDEsIDAsIDAsIDAsIDAsIDApIH0sIC8vICIKKyAgICB7IEIoMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMSksIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIEIoMCwgMCwgMCwgMSwgMCwg
MCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIo
MCwgMCwgMSwgMCwgMCwgMCwgMCwgMCkgfSwgLy8gIworICAgIHsgQigwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwKSwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgQigwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwKSB9LCAvLyAkCisgICAgeyBCKDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDEpLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCBCKDAsIDAsIDAsIDEsIDAsIDAs
IDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAs
IDAsIDEsIDAsIDAsIDAsIDAsIDApIH0sIC8vICUKKyAgICB7IEIoMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMSksIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIEIoMCwgMCwgMCwgMSwgMCwgMCwg
MCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwg
MCwgMSwgMCwgMCwgMCwgMCwgMCkgfSwgLy8gJgorICAgIHsgQigwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwKSwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgQigwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwKSwgMCwgMCwgMCwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwKSB9LCAvLyAnCisgICAgeyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDApLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDApLCAwLCAwLCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDApIH0sIC8vICgKKyAgICB7IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MSksIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIEIoMCwgMCwgMCwgMSwgMCwgMCwgMCwg
MCksIDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwg
MSwgMCwgMCwgMCwgMCwgMCkgfSwgLy8gKQorICAgIHsgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAx
KSwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgQigwLCAwLCAwLCAxLCAwLCAwLCAwLCAw
KSwgMCwgMCwgMCwgQigwLCAwLCAxLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAx
LCAwLCAwLCAwLCAwLCAwKSB9LCAvLyAqCisgICAgeyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEp
LCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCBCKDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAp
LCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEs
IDAsIDAsIDAsIDAsIDApIH0sIC8vICsKKyAgICB7IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSks
IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIEIoMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCks
IDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMSwg
MCwgMCwgMCwgMCwgMCkgfSwgLy8gLAorICAgIHsgQigxLCAxLCAxLCAxLCAxLCAxLCAxLCAxKSwg
QigxLCAxLCAxLCAxLCAxLCAwLCAxLCAwKSwgMCwgQigwLCAxLCAxLCAxLCAxLCAxLCAxLCAxKSwg
RiwgRiwgRiwgQigxLCAxLCAxLCAxLCAxLCAxLCAxLCAxKSwgRiwgRiwgRiwgQigxLCAxLCAxLCAx
LCAxLCAxLCAxLCAxKSB9LCAvLyAtIE5vdGU6IGJyZWFraW5nIGJlZm9yZSAnMCctJzknIGlzIGhh
bmRsZWQgaGFyZC1jb2RlZCBpbiBzaG91bGRCcmVha0FmdGVyKCkuCisgICAgeyBCKDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDEpLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCBCKDAsIDAsIDAs
IDEsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAsIDAsIDAsIDApLCAwLCAw
LCAwLCBCKDAsIDAsIDEsIDAsIDAsIDAsIDAsIDApIH0sIC8vIC4KKyAgICB7IEIoMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCksIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIEIoMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIDAs
IDAsIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCkgfSwgLy8gLworICAgIERJLCAgREksICBESSwg
IERJLCAgREksICBESSwgIERJLCAgREksICBESSwgIERJLCAvLyAwLTkKKyAgICB7IEIoMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMSksIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIEIoMCwgMCwg
MCwgMSwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCksIDAs
IDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCkgfSwgLy8gOgorICAgIHsgQigwLCAwLCAw
LCAwLCAwLCAwLCAwLCAxKSwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgQigwLCAwLCAw
LCAxLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAxLCAwLCAwLCAwLCAwLCAwKSwgMCwg
MCwgMCwgQigwLCAwLCAxLCAwLCAwLCAwLCAwLCAwKSB9LCAvLyA7CisgICAgeyBCKDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDApLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCBCKDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCAw
LCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApIH0sIC8vIDwKKyAgICB7IEIoMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMSksIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIEIoMCwgMCwgMCwg
MSwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCksIDAsIDAs
IDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCkgfSwgLy8gPQorICAgIHsgQigwLCAwLCAwLCAw
LCAwLCAwLCAwLCAxKSwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgQigwLCAwLCAwLCAx
LCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAxLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwg
MCwgQigwLCAwLCAxLCAwLCAwLCAwLCAwLCAwKSB9LCAvLyA+CisgICAgeyBCKDAsIDAsIDEsIDEs
IDEsIDEsIDAsIDEpLCBCKDAsIDEsIDEsIDAsIDEsIDAsIDAsIDEpLCBGLCBCKDEsIDAsIDAsIDEs
IDEsIDEsIDAsIDEpLCBGLCBGLCBGLCBCKDEsIDEsIDEsIDEsIDAsIDEsIDEsIDEpLCBGLCBGLCBG
LCBCKDEsIDEsIDEsIDEsIDAsIDEsIDEsIDApIH0sIC8vID8KKyAgICB7IEIoMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCksIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIEIoMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAs
IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCkgfSwgLy8gQAorICAgIEFMLCAgQUwsICBBTCwgIEFM
LCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwg
IEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsIC8v
IEEtWgorICAgIHsgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgQigwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwKSwgMCwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSB9LCAv
LyBbCisgICAgeyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEpLCBCKDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDApLCAwLCBCKDAsIDAsIDAsIDEsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEs
IDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAsIDAsIDAsIDApIH0sIC8v
ICdcJworICAgIHsgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAxKSwgQigwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwKSwgMCwgQigwLCAwLCAwLCAxLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAx
LCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAxLCAwLCAwLCAwLCAwLCAwKSB9LCAv
LyBdCisgICAgeyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCBCKDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDApLCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApIH0sIC8v
IF4KKyAgICB7IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIEIoMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCksIDAsIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCkgfSwgLy8g
XworICAgIHsgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgQigwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwKSwgMCwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSB9LCAvLyBg
CisgICAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBB
TCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUws
ICBBTCwgIEFMLCAgQUwsICBBTCwgLy8gYS16CisgICAgeyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDApLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDApLCAwLCAwLCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDApIH0sIC8vIHsKKyAgICB7IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MSksIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIEIoMCwgMCwgMCwgMSwgMCwgMCwgMCwg
MCksIDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwg
MSwgMCwgMCwgMCwgMCwgMCkgfSwgLy8gfAorICAgIHsgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAx
KSwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgQigwLCAwLCAwLCAxLCAwLCAwLCAwLCAw
KSwgMCwgMCwgMCwgQigwLCAwLCAxLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAx
LCAwLCAwLCAwLCAwLCAwKSB9LCAvLyB9CisgICAgeyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEp
LCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCBCKDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAp
LCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEs
IDAsIDAsIDAsIDAsIDApIH0sIC8vIH4KKyAgICB7IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCks
IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCks
IDAsIDAsIDAsIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCkgfSwgLy8gREVMCit9OworCisjdW5kZWYgQgorI3VuZGVmIEYKKyN1bmRl
ZiBESQorI3VuZGVmIEFMCisKK0NPTVBJTEVfQVNTRVJUKFdURl9BUlJBWV9MRU5HVEgoYXNjaWlM
aW5lQnJlYWtUYWJsZSkgPT0gYXNjaWlMaW5lQnJlYWtUYWJsZUxhc3RDaGFyIC0gYXNjaWlMaW5l
QnJlYWtUYWJsZUZpcnN0Q2hhciArIDEsIFRlc3RMaW5lQnJlYWtUYWJsZUNvbnNpc3RlbmN5KTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0JyZWFrTGluZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9CcmVha0xpbmVz
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYWRlMGE0NWM4YWJmNTZjZjQ3YjZlN2MyZDA2MmUzZDdhOWY5MjFmNwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9CcmVha0xpbmVzLmgK
QEAgLTAsMCArMSwyNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDcsIDIwMTAs
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAq
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaWZuZGVmIEJyZWFrTGlu
ZXNfaAorI2RlZmluZSBCcmVha0xpbmVzX2gKKworI2luY2x1ZGUgPHVuaWNvZGUvdWJyay5oPgor
I2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CisjaW5jbHVkZSA8d3Rm
L3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0
aWMgY29uc3QgVUNoYXIgYXNjaWlMaW5lQnJlYWtUYWJsZUZpcnN0Q2hhciA9ICchJzsKK3N0YXRp
YyBjb25zdCBVQ2hhciBhc2NpaUxpbmVCcmVha1RhYmxlTGFzdENoYXIgPSAxMjc7CitzdGF0aWMg
Y29uc3QgdW5zaWduZWQgYXNjaWlMaW5lQnJlYWtUYWJsZUNvbHVtbkNvdW50ID0gKGFzY2lpTGlu
ZUJyZWFrVGFibGVMYXN0Q2hhciAtIGFzY2lpTGluZUJyZWFrVGFibGVGaXJzdENoYXIpIC8gOCAr
IDE7CisKK1dFQkNPUkVfRVhQT1JUIGV4dGVybiBjb25zdCB1bnNpZ25lZCBjaGFyIGFzY2lpTGlu
ZUJyZWFrVGFibGVbXVthc2NpaUxpbmVCcmVha1RhYmxlQ29sdW1uQ291bnRdOworCitlbnVtIGNs
YXNzIE5CU1BCZWhhdmlvciB7CisgICAgSWdub3JlTkJTUCwKKyAgICBUcmVhdE5CU1BBc0JyZWFr
LAorfTsKKwordGVtcGxhdGU8TkJTUEJlaGF2aW9yIG5ic3BCZWhhdmlvcj4KK3N0YXRpYyBpbmxp
bmUgYm9vbCBpc0JyZWFrYWJsZVNwYWNlKFVDaGFyIGNoYXJhY3RlcikKK3sKKyAgICBzd2l0Y2gg
KGNoYXJhY3RlcikgeworICAgIGNhc2UgJyAnOgorICAgIGNhc2UgJ1xuJzoKKyAgICBjYXNlICdc
dCc6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGNhc2Ugbm9CcmVha1NwYWNlOgorICAgICAg
ICByZXR1cm4gbmJzcEJlaGF2aW9yID09IE5CU1BCZWhhdmlvcjo6VHJlYXROQlNQQXNCcmVhazsK
KyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitpbmxpbmUg
Ym9vbCBzaG91bGRCcmVha0FmdGVyKFVDaGFyIGxhc3RDaGFyYWN0ZXIsIFVDaGFyIGNoYXJhY3Rl
ciwgVUNoYXIgbmV4dENoYXJhY3RlcikKK3sKKyAgICAvLyBEb24ndCBhbGxvdyBsaW5lIGJyZWFr
aW5nIGJldHdlZW4gJy0nIGFuZCBhIGRpZ2l0IGlmIHRoZSAnLScgbWF5IG1lYW4gYSBtaW51cyBz
aWduIGluIHRoZSBjb250ZXh0LAorICAgIC8vIHdoaWxlIGFsbG93IGJyZWFraW5nIGluICdBQkNE
LTEyMzQnIGFuZCAnMTIzNC01Njc4JyB3aGljaCBtYXkgYmUgaW4gbG9uZyBVUkxzLgorICAgIGlm
IChjaGFyYWN0ZXIgPT0gJy0nICYmIGlzQVNDSUlEaWdpdChuZXh0Q2hhcmFjdGVyKSkKKyAgICAg
ICAgcmV0dXJuIGlzQVNDSUlBbHBoYW51bWVyaWMobGFzdENoYXJhY3Rlcik7CisKKyAgICAvLyBJ
ZiBib3RoIGNoIGFuZCBuZXh0Q2ggYXJlIEFTQ0lJIGNoYXJhY3RlcnMsIHVzZSBhIGxvb2t1cCB0
YWJsZSBmb3IgZW5oYW5jZWQgc3BlZWQgYW5kIGZvciBjb21wYXRpYmlsaXR5CisgICAgLy8gd2l0
aCBvdGhlciBicm93c2VycyAoc2VlIGNvbW1lbnRzIGZvciBhc2NpaUxpbmVCcmVha1RhYmxlIGZv
ciBkZXRhaWxzKS4KKyAgICBpZiAoY2hhcmFjdGVyID49IGFzY2lpTGluZUJyZWFrVGFibGVGaXJz
dENoYXIgJiYgY2hhcmFjdGVyIDw9IGFzY2lpTGluZUJyZWFrVGFibGVMYXN0Q2hhciAmJiBuZXh0
Q2hhcmFjdGVyID49IGFzY2lpTGluZUJyZWFrVGFibGVGaXJzdENoYXIgJiYgbmV4dENoYXJhY3Rl
ciA8PSBhc2NpaUxpbmVCcmVha1RhYmxlTGFzdENoYXIpIHsKKyAgICAgICAgY29uc3QgdW5zaWdu
ZWQgY2hhciogdGFibGVSb3cgPSBhc2NpaUxpbmVCcmVha1RhYmxlW2NoYXJhY3RlciAtIGFzY2lp
TGluZUJyZWFrVGFibGVGaXJzdENoYXJdOworICAgICAgICB1bnNpZ25lZCBuZXh0Q2hhcmFjdGVy
SW5kZXggPSBuZXh0Q2hhcmFjdGVyIC0gYXNjaWlMaW5lQnJlYWtUYWJsZUZpcnN0Q2hhcjsKKyAg
ICAgICAgcmV0dXJuIHRhYmxlUm93W25leHRDaGFyYWN0ZXJJbmRleCAvIDhdICYgKDEgPDwgKG5l
eHRDaGFyYWN0ZXJJbmRleCAlIDgpKTsKKyAgICB9CisgICAgLy8gT3RoZXJ3aXNlIGRlZmVyIHRv
IHRoZSBVbmljb2RlIGFsZ29yaXRobSBieSByZXR1cm5pbmcgZmFsc2UuCisgICAgcmV0dXJuIGZh
bHNlOworfQorCit0ZW1wbGF0ZTxOQlNQQmVoYXZpb3IgbmJzcEJlaGF2aW9yPgoraW5saW5lIGJv
b2wgbmVlZHNMaW5lQnJlYWtJdGVyYXRvcihVQ2hhciBjaGFyYWN0ZXIpCit7CisgICAgaWYgKG5i
c3BCZWhhdmlvciA9PSBOQlNQQmVoYXZpb3I6OlRyZWF0TkJTUEFzQnJlYWspCisgICAgICAgIHJl
dHVybiBjaGFyYWN0ZXIgPiBhc2NpaUxpbmVCcmVha1RhYmxlTGFzdENoYXI7CisgICAgcmV0dXJu
IGNoYXJhY3RlciA+IGFzY2lpTGluZUJyZWFrVGFibGVMYXN0Q2hhciAmJiBjaGFyYWN0ZXIgIT0g
bm9CcmVha1NwYWNlOworfQorCisvLyBXaGVuIGluIG5vbi1sb29zZSBtb2RlLCB3ZSBjYW4gdXNl
IHRoZSBBU0NJSSBzaG9ydGN1dCB0YWJsZS4KK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGUsIE5CU1BCZWhhdmlvciBuYnNwQmVoYXZpb3I+CitpbmxpbmUgdW5zaWduZWQgbmV4dEJyZWFr
YWJsZVBvc2l0aW9uTm9uTG9vc2VseShMYXp5TGluZUJyZWFrSXRlcmF0b3ImIGxhenlCcmVha0l0
ZXJhdG9yLCBjb25zdCBDaGFyYWN0ZXJUeXBlKiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgdW5z
aWduZWQgc3RhcnRQb3NpdGlvbikKK3sKKyAgICBPcHRpb25hbDx1bnNpZ25lZD4gbmV4dEJyZWFr
OworCisgICAgQ2hhcmFjdGVyVHlwZSBsYXN0TGFzdENoYXJhY3RlciA9IHN0YXJ0UG9zaXRpb24g
PiAxID8gc3RyaW5nW3N0YXJ0UG9zaXRpb24gLSAyXSA6IHN0YXRpY19jYXN0PENoYXJhY3RlclR5
cGU+KGxhenlCcmVha0l0ZXJhdG9yLnNlY29uZFRvTGFzdENoYXJhY3RlcigpKTsKKyAgICBDaGFy
YWN0ZXJUeXBlIGxhc3RDaGFyYWN0ZXIgPSBzdGFydFBvc2l0aW9uID4gMCA/IHN0cmluZ1tzdGFy
dFBvc2l0aW9uIC0gMV0gOiBzdGF0aWNfY2FzdDxDaGFyYWN0ZXJUeXBlPihsYXp5QnJlYWtJdGVy
YXRvci5sYXN0Q2hhcmFjdGVyKCkpOworICAgIHVuc2lnbmVkIHByaW9yQ29udGV4dExlbmd0aCA9
IGxhenlCcmVha0l0ZXJhdG9yLnByaW9yQ29udGV4dExlbmd0aCgpOworICAgIGZvciAodW5zaWdu
ZWQgaSA9IHN0YXJ0UG9zaXRpb247IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBDaGFyYWN0
ZXJUeXBlIGNoYXJhY3RlciA9IHN0cmluZ1tpXTsKKworICAgICAgICAvLyBOb24tbG9vc2UgbW9k
ZSwgc28gdXNlIEFTQ0lJIHNob3J0Y3V0IChzaG91bGRCcmVha0FmdGVyKSBpZiBub3QgYnJlYWth
YmxlIHNwYWNlLgorICAgICAgICBpZiAoaXNCcmVha2FibGVTcGFjZTxuYnNwQmVoYXZpb3I+KGNo
YXJhY3RlcikgfHwgc2hvdWxkQnJlYWtBZnRlcihsYXN0TGFzdENoYXJhY3RlciwgbGFzdENoYXJh
Y3RlciwgY2hhcmFjdGVyKSkKKyAgICAgICAgICAgIHJldHVybiBpOworCisgICAgICAgIC8vIE5v
bi1sb29zZSBtb2RlLCBzbyBjb25kaXRpb25hbGx5IHVzZSBicmVhayBpdGVyYXRvci4KKyAgICAg
ICAgaWYgKG5lZWRzTGluZUJyZWFrSXRlcmF0b3I8bmJzcEJlaGF2aW9yPihjaGFyYWN0ZXIpIHx8
IG5lZWRzTGluZUJyZWFrSXRlcmF0b3I8bmJzcEJlaGF2aW9yPihsYXN0Q2hhcmFjdGVyKSkgewor
ICAgICAgICAgICAgaWYgKCFuZXh0QnJlYWsgfHwgbmV4dEJyZWFrLnZhbHVlKCkgPCBpKSB7Cisg
ICAgICAgICAgICAgICAgLy8gRG9uJ3QgYnJlYWsgaWYgcG9zaXRpb25lZCBhdCBzdGFydCBvZiBw
cmltYXJ5IGNvbnRleHQgYW5kIHRoZXJlIGlzIG5vIHByaW9yIGNvbnRleHQuCisgICAgICAgICAg
ICAgICAgaWYgKGkgfHwgcHJpb3JDb250ZXh0TGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgICAg
IFRleHRCcmVha0l0ZXJhdG9yKiBicmVha0l0ZXJhdG9yID0gbGF6eUJyZWFrSXRlcmF0b3IuZ2V0
KHByaW9yQ29udGV4dExlbmd0aCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChicmVha0l0ZXJh
dG9yKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2FuZGlkYXRlID0gdGV4dEJyZWFr
Rm9sbG93aW5nKGJyZWFrSXRlcmF0b3IsIGkgLSAxICsgcHJpb3JDb250ZXh0TGVuZ3RoKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChjYW5kaWRhdGUgPT0gVUJSS19ET05FKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG5leHRCcmVhayA9IE51bGxvcHQ7CisgICAgICAgICAgICAg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBy
ZXN1bHQgPSBjYW5kaWRhdGU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJl
c3VsdCA+PSBwcmlvckNvbnRleHRMZW5ndGgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG5leHRCcmVhayA9IHJlc3VsdCAtIHByaW9yQ29udGV4dExlbmd0aDsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChpID09IG5leHRCcmVhayAmJiAhaXNCcmVha2Fi
bGVTcGFjZTxuYnNwQmVoYXZpb3I+KGxhc3RDaGFyYWN0ZXIpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBpOworICAgICAgICB9CisKKyAgICAgICAgbGFzdExhc3RDaGFyYWN0ZXIgPSBsYXN0Q2hh
cmFjdGVyOworICAgICAgICBsYXN0Q2hhcmFjdGVyID0gY2hhcmFjdGVyOworICAgIH0KKworICAg
IHJldHVybiBsZW5ndGg7Cit9CisKKy8vIFdoZW4gaW4gbG9vc2UgbW9kZSwgd2UgY2FuJ3QgdXNl
IHRoZSBBU0NJSSBzaG9ydGN1dCB0YWJsZSBzaW5jZSBsb29zZSBtb2RlIGFsbG93cyAiJDEwMCIg
dG8gYnJlYWsgYWZ0ZXIgJyQnIGluIGNvbnRlbnQgbWFya2VkIGFzIENKSy4KKy8vIE4uQi4gSXQg
c2hvdWxkIGJlIHBvc3NpYmxlIHRvIGNvbWJpbmUgdGhlIGZvbGxvd2luZyB3aXRoIHRoZSBub24t
bG9vc2UgdmVyc2lvbiBhYm92ZSBieSBhZGRpbmcgYSBMb29zZUJlaGF2aW9yIHRlbXBsYXRlIHBh
cmFtZXRlcjsKKy8vIGhvd2V2ZXIsIHdoZW4gZG9pbmcgdGhpcywgYSAxMCUgcGVyZm9ybWFuY2Ug
cmVncmVzc2lvbiBhcHBlYXJlZCBvbiBjaHJvbWl1bS13aW4gKGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04OTIzNSNjMTEyKS4KK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGUsIE5CU1BCZWhhdmlvciBuYnNwQmVoYXZpb3I+CitzdGF0aWMgaW5saW5lIHVuc2ln
bmVkIG5leHRCcmVha2FibGVQb3NpdGlvbkxvb3NlbHkoTGF6eUxpbmVCcmVha0l0ZXJhdG9yJiBs
YXp5QnJlYWtJdGVyYXRvciwgY29uc3QgQ2hhcmFjdGVyVHlwZSogc3RyaW5nLCB1bnNpZ25lZCBs
ZW5ndGgsIHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24pCit7CisgICAgT3B0aW9uYWw8dW5zaWduZWQ+
IG5leHRCcmVhazsKKworICAgIENoYXJhY3RlclR5cGUgbGFzdENoYXJhY3RlciA9IHN0YXJ0UG9z
aXRpb24gPiAwID8gc3RyaW5nW3N0YXJ0UG9zaXRpb24gLSAxXSA6IHN0YXRpY19jYXN0PENoYXJh
Y3RlclR5cGU+KGxhenlCcmVha0l0ZXJhdG9yLmxhc3RDaGFyYWN0ZXIoKSk7CisgICAgdW5zaWdu
ZWQgcHJpb3JDb250ZXh0TGVuZ3RoID0gbGF6eUJyZWFrSXRlcmF0b3IucHJpb3JDb250ZXh0TGVu
Z3RoKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gc3RhcnRQb3NpdGlvbjsgaSA8IGxlbmd0aDsg
aSsrKSB7CisgICAgICAgIENoYXJhY3RlclR5cGUgY2hhcmFjdGVyID0gc3RyaW5nW2ldOworCisg
ICAgICAgIC8vIEFsd2F5cyBsb29zZSBtb2RlLCBzbyBkb24ndCB1c2UgQVNDSUkgc2hvcnRjdXQg
KHNob3VsZEJyZWFrQWZ0ZXIpLgorICAgICAgICBpZiAoaXNCcmVha2FibGVTcGFjZTxuYnNwQmVo
YXZpb3I+KGNoYXJhY3RlcikpCisgICAgICAgICAgICByZXR1cm4gaTsKKworICAgICAgICAvLyBB
bHdheXMgdXNlIGxpbmUgYnJlYWsgaXRlcmF0b3IgaW4gbG9vc2UgbW9kZS4KKyAgICAgICAgaWYg
KCFuZXh0QnJlYWsgfHwgbmV4dEJyZWFrLnZhbHVlKCkgPCBpKSB7CisgICAgICAgICAgICAvLyBE
b24ndCBicmVhayBpZiBwb3NpdGlvbmVkIGF0IHN0YXJ0IG9mIHByaW1hcnkgY29udGV4dCBhbmQg
dGhlcmUgaXMgbm8gcHJpb3IgY29udGV4dC4KKyAgICAgICAgICAgIGlmIChpIHx8IHByaW9yQ29u
dGV4dExlbmd0aCkgeworICAgICAgICAgICAgICAgIFRleHRCcmVha0l0ZXJhdG9yKiBicmVha0l0
ZXJhdG9yID0gbGF6eUJyZWFrSXRlcmF0b3IuZ2V0KHByaW9yQ29udGV4dExlbmd0aCk7CisgICAg
ICAgICAgICAgICAgaWYgKGJyZWFrSXRlcmF0b3IpIHsKKyAgICAgICAgICAgICAgICAgICAgQVNT
RVJUKGkgKyBwcmlvckNvbnRleHRMZW5ndGggPj0gMSk7CisgICAgICAgICAgICAgICAgICAgIGlu
dCBjYW5kaWRhdGUgPSB0ZXh0QnJlYWtGb2xsb3dpbmcoYnJlYWtJdGVyYXRvciwgaSArIHByaW9y
Q29udGV4dExlbmd0aCAtIDEpOworICAgICAgICAgICAgICAgICAgICBpZiAoY2FuZGlkYXRlID09
IFVCUktfRE9ORSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG5leHRCcmVhayA9IE51bGxvcHQ7
CisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgcmVzdWx0ID0gY2FuZGlkYXRlOworICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJU
KHJlc3VsdCA+IHByaW9yQ29udGV4dExlbmd0aCk7CisgICAgICAgICAgICAgICAgICAgICAgICBu
ZXh0QnJlYWsgPSByZXN1bHQgLSBwcmlvckNvbnRleHRMZW5ndGg7CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKGkgPT0gbmV4dEJyZWFrICYmICFpc0JyZWFrYWJsZVNwYWNlPG5ic3BCZWhhdmlvcj4o
bGFzdENoYXJhY3RlcikpCisgICAgICAgICAgICByZXR1cm4gaTsKKworICAgICAgICBsYXN0Q2hh
cmFjdGVyID0gY2hhcmFjdGVyOworICAgIH0KKworICAgIHJldHVybiBsZW5ndGg7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIE5CU1BCZWhhdmlvciBuYnNwQmVoYXZpb3I+
CitpbmxpbmUgdW5zaWduZWQgbmV4dEJyZWFrYWJsZVBvc2l0aW9uS2VlcGluZ0FsbFdvcmRzKGNv
bnN0IENoYXJhY3RlclR5cGUqIHN0cmluZywgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBzdGFy
dFBvc2l0aW9uKQoreworICAgIGZvciAodW5zaWduZWQgaSA9IHN0YXJ0UG9zaXRpb247IGkgPCBs
ZW5ndGg7IGkrKykgeworICAgICAgICBpZiAoaXNCcmVha2FibGVTcGFjZTxuYnNwQmVoYXZpb3I+
KHN0cmluZ1tpXSkpCisgICAgICAgICAgICByZXR1cm4gaTsKKyAgICB9CisgICAgcmV0dXJuIGxl
bmd0aDsKK30KKworaW5saW5lIHVuc2lnbmVkIG5leHRCcmVha2FibGVQb3NpdGlvbktlZXBpbmdB
bGxXb3JkcyhMYXp5TGluZUJyZWFrSXRlcmF0b3ImIGxhenlCcmVha0l0ZXJhdG9yLCB1bnNpZ25l
ZCBzdGFydFBvc2l0aW9uKQoreworICAgIFN0cmluZyBzdHJpbmcgPSBsYXp5QnJlYWtJdGVyYXRv
ci5zdHJpbmcoKTsKKyAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKQorICAgICAgICByZXR1cm4gbmV4
dEJyZWFrYWJsZVBvc2l0aW9uS2VlcGluZ0FsbFdvcmRzPExDaGFyLCBOQlNQQmVoYXZpb3I6OlRy
ZWF0TkJTUEFzQnJlYWs+KHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCksIHN0
YXJ0UG9zaXRpb24pOworICAgIHJldHVybiBuZXh0QnJlYWthYmxlUG9zaXRpb25LZWVwaW5nQWxs
V29yZHM8VUNoYXIsIE5CU1BCZWhhdmlvcjo6VHJlYXROQlNQQXNCcmVhaz4oc3RyaW5nLmNoYXJh
Y3RlcnMxNigpLCBzdHJpbmcubGVuZ3RoKCksIHN0YXJ0UG9zaXRpb24pOworfQorCitpbmxpbmUg
dW5zaWduZWQgbmV4dEJyZWFrYWJsZVBvc2l0aW9uS2VlcGluZ0FsbFdvcmRzSWdub3JpbmdOQlNQ
KExhenlMaW5lQnJlYWtJdGVyYXRvciYgaXRlcmF0b3IsIHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24p
Cit7CisgICAgU3RyaW5nIHN0cmluZyA9IGl0ZXJhdG9yLnN0cmluZygpOworICAgIGlmIChzdHJp
bmcuaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBuZXh0QnJlYWthYmxlUG9zaXRpb25LZWVwaW5n
QWxsV29yZHM8TENoYXIsIE5CU1BCZWhhdmlvcjo6SWdub3JlTkJTUD4oc3RyaW5nLmNoYXJhY3Rl
cnM4KCksIHN0cmluZy5sZW5ndGgoKSwgc3RhcnRQb3NpdGlvbik7CisgICAgcmV0dXJuIG5leHRC
cmVha2FibGVQb3NpdGlvbktlZXBpbmdBbGxXb3JkczxVQ2hhciwgTkJTUEJlaGF2aW9yOjpJZ25v
cmVOQlNQPihzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0cmluZy5sZW5ndGgoKSwgc3RhcnRQb3Np
dGlvbik7Cit9CisKK2lubGluZSB1bnNpZ25lZCBuZXh0QnJlYWthYmxlUG9zaXRpb24oTGF6eUxp
bmVCcmVha0l0ZXJhdG9yJiBpdGVyYXRvciwgdW5zaWduZWQgc3RhcnRQb3NpdGlvbikKK3sKKyAg
ICBTdHJpbmcgc3RyaW5nID0gaXRlcmF0b3Iuc3RyaW5nKCk7CisgICAgaWYgKHN0cmluZy5pczhC
aXQoKSkKKyAgICAgICAgcmV0dXJuIG5leHRCcmVha2FibGVQb3NpdGlvbk5vbkxvb3NlbHk8TENo
YXIsIE5CU1BCZWhhdmlvcjo6VHJlYXROQlNQQXNCcmVhaz4oaXRlcmF0b3IsIHN0cmluZy5jaGFy
YWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCksIHN0YXJ0UG9zaXRpb24pOworICAgIHJldHVybiBu
ZXh0QnJlYWthYmxlUG9zaXRpb25Ob25Mb29zZWx5PFVDaGFyLCBOQlNQQmVoYXZpb3I6OlRyZWF0
TkJTUEFzQnJlYWs+KGl0ZXJhdG9yLCBzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0cmluZy5sZW5n
dGgoKSwgc3RhcnRQb3NpdGlvbik7Cit9CisKK2lubGluZSB1bnNpZ25lZCBuZXh0QnJlYWthYmxl
UG9zaXRpb25JZ25vcmluZ05CU1AoTGF6eUxpbmVCcmVha0l0ZXJhdG9yJiBsYXp5QnJlYWtJdGVy
YXRvciwgdW5zaWduZWQgc3RhcnRQb3NpdGlvbikKK3sKKyAgICBTdHJpbmcgc3RyaW5nID0gbGF6
eUJyZWFrSXRlcmF0b3Iuc3RyaW5nKCk7CisgICAgaWYgKHN0cmluZy5pczhCaXQoKSkKKyAgICAg
ICAgcmV0dXJuIG5leHRCcmVha2FibGVQb3NpdGlvbk5vbkxvb3NlbHk8TENoYXIsIE5CU1BCZWhh
dmlvcjo6SWdub3JlTkJTUD4obGF6eUJyZWFrSXRlcmF0b3IsIHN0cmluZy5jaGFyYWN0ZXJzOCgp
LCBzdHJpbmcubGVuZ3RoKCksIHN0YXJ0UG9zaXRpb24pOworICAgIHJldHVybiBuZXh0QnJlYWth
YmxlUG9zaXRpb25Ob25Mb29zZWx5PFVDaGFyLCBOQlNQQmVoYXZpb3I6Oklnbm9yZU5CU1A+KGxh
enlCcmVha0l0ZXJhdG9yLCBzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0cmluZy5sZW5ndGgoKSwg
c3RhcnRQb3NpdGlvbik7Cit9CisKK2lubGluZSB1bnNpZ25lZCBuZXh0QnJlYWthYmxlUG9zaXRp
b25Mb29zZShMYXp5TGluZUJyZWFrSXRlcmF0b3ImIGxhenlCcmVha0l0ZXJhdG9yLCB1bnNpZ25l
ZCBzdGFydFBvc2l0aW9uKQoreworICAgIFN0cmluZyBzdHJpbmcgPSBsYXp5QnJlYWtJdGVyYXRv
ci5zdHJpbmcoKTsKKyAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKQorICAgICAgICByZXR1cm4gbmV4
dEJyZWFrYWJsZVBvc2l0aW9uTG9vc2VseTxMQ2hhciwgTkJTUEJlaGF2aW9yOjpUcmVhdE5CU1BB
c0JyZWFrPihsYXp5QnJlYWtJdGVyYXRvciwgc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5s
ZW5ndGgoKSwgc3RhcnRQb3NpdGlvbik7CisgICAgcmV0dXJuIG5leHRCcmVha2FibGVQb3NpdGlv
bkxvb3NlbHk8VUNoYXIsIE5CU1BCZWhhdmlvcjo6VHJlYXROQlNQQXNCcmVhaz4obGF6eUJyZWFr
SXRlcmF0b3IsIHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nLmxlbmd0aCgpLCBzdGFydFBv
c2l0aW9uKTsKK30KKworaW5saW5lIHVuc2lnbmVkIG5leHRCcmVha2FibGVQb3NpdGlvbklnbm9y
aW5nTkJTUExvb3NlKExhenlMaW5lQnJlYWtJdGVyYXRvciYgbGF6eUJyZWFrSXRlcmF0b3IsIHVu
c2lnbmVkIHN0YXJ0UG9zaXRpb24pCit7CisgICAgU3RyaW5nIHN0cmluZyA9IGxhenlCcmVha0l0
ZXJhdG9yLnN0cmluZygpOworICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCisgICAgICAgIHJldHVy
biBuZXh0QnJlYWthYmxlUG9zaXRpb25Mb29zZWx5PExDaGFyLCBOQlNQQmVoYXZpb3I6Oklnbm9y
ZU5CU1A+KGxhenlCcmVha0l0ZXJhdG9yLCBzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxl
bmd0aCgpLCBzdGFydFBvc2l0aW9uKTsKKyAgICByZXR1cm4gbmV4dEJyZWFrYWJsZVBvc2l0aW9u
TG9vc2VseTxVQ2hhciwgTkJTUEJlaGF2aW9yOjpJZ25vcmVOQlNQPihsYXp5QnJlYWtJdGVyYXRv
ciwgc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBzdHJpbmcubGVuZ3RoKCksIHN0YXJ0UG9zaXRpb24p
OworfQorCitpbmxpbmUgYm9vbCBpc0JyZWFrYWJsZShMYXp5TGluZUJyZWFrSXRlcmF0b3ImIGxh
enlCcmVha0l0ZXJhdG9yLCB1bnNpZ25lZCBzdGFydFBvc2l0aW9uLCBPcHRpb25hbDx1bnNpZ25l
ZD4mIG5leHRCcmVha2FibGUsIGJvb2wgYnJlYWtOQlNQLCBib29sIGlzTG9vc2VNb2RlLCBib29s
IGtlZXBBbGxXb3JkcykKK3sKKyAgICBpZiAobmV4dEJyZWFrYWJsZSAmJiBuZXh0QnJlYWthYmxl
LnZhbHVlKCkgPj0gc3RhcnRQb3NpdGlvbikKKyAgICAgICAgcmV0dXJuIHN0YXJ0UG9zaXRpb24g
PT0gbmV4dEJyZWFrYWJsZTsKKworICAgIGlmIChrZWVwQWxsV29yZHMpIHsKKyAgICAgICAgaWYg
KGJyZWFrTkJTUCkKKyAgICAgICAgICAgIG5leHRCcmVha2FibGUgPSBuZXh0QnJlYWthYmxlUG9z
aXRpb25LZWVwaW5nQWxsV29yZHMobGF6eUJyZWFrSXRlcmF0b3IsIHN0YXJ0UG9zaXRpb24pOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBuZXh0QnJlYWthYmxlID0gbmV4dEJyZWFrYWJsZVBv
c2l0aW9uS2VlcGluZ0FsbFdvcmRzSWdub3JpbmdOQlNQKGxhenlCcmVha0l0ZXJhdG9yLCBzdGFy
dFBvc2l0aW9uKTsKKyAgICB9IGVsc2UgaWYgKGlzTG9vc2VNb2RlKSB7CisgICAgICAgIGlmIChi
cmVha05CU1ApCisgICAgICAgICAgICBuZXh0QnJlYWthYmxlID0gbmV4dEJyZWFrYWJsZVBvc2l0
aW9uTG9vc2UobGF6eUJyZWFrSXRlcmF0b3IsIHN0YXJ0UG9zaXRpb24pOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBuZXh0QnJlYWthYmxlID0gbmV4dEJyZWFrYWJsZVBvc2l0aW9uSWdub3Jp
bmdOQlNQTG9vc2UobGF6eUJyZWFrSXRlcmF0b3IsIHN0YXJ0UG9zaXRpb24pOworICAgIH0gZWxz
ZSB7CisgICAgICAgIGlmIChicmVha05CU1ApCisgICAgICAgICAgICBuZXh0QnJlYWthYmxlID0g
bmV4dEJyZWFrYWJsZVBvc2l0aW9uKGxhenlCcmVha0l0ZXJhdG9yLCBzdGFydFBvc2l0aW9uKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgbmV4dEJyZWFrYWJsZSA9IG5leHRCcmVha2FibGVQ
b3NpdGlvbklnbm9yaW5nTkJTUChsYXp5QnJlYWtJdGVyYXRvciwgc3RhcnRQb3NpdGlvbik7Cisg
ICAgfQorICAgIHJldHVybiBzdGFydFBvc2l0aW9uID09IG5leHRCcmVha2FibGU7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEJyZWFrTGluZXNfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaAppbmRleCAyZTUyOTFhZGVmZDZkMTYzYTAy
MWFjYWRlMDBkYTQwMDcxZjBhNDUxLi4zYWE1NDVjODNkYWM3OThlYjI5MmU1YmY3NTI5YWY2ZDgx
MDVmNjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lSXRlcmF0
b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaApAQCAt
NTMsMTggKzUzLDEyIEBAIHN0cnVjdCBCaWRpSXNvbGF0ZWRSdW4gewogY2xhc3MgSW5saW5lSXRl
cmF0b3IgewogcHVibGljOgogICAgIElubGluZUl0ZXJhdG9yKCkKLSAgICAgICAgOiBtX3Jvb3Qo
bnVsbHB0cikKLSAgICAgICAgLCBtX3JlbmRlcmVyKG51bGxwdHIpCi0gICAgICAgICwgbV9uZXh0
QnJlYWthYmxlUG9zaXRpb24oLTEpCi0gICAgICAgICwgbV9wb3MoMCkKLSAgICAgICAgLCBtX3Jl
ZmVyc1RvRW5kT2ZQcmV2aW91c05vZGUoZmFsc2UpCiAgICAgewogICAgIH0KIAogICAgIElubGlu
ZUl0ZXJhdG9yKFJlbmRlckVsZW1lbnQqIHJvb3QsIFJlbmRlck9iamVjdCogbywgdW5zaWduZWQg
cCkKICAgICAgICAgOiBtX3Jvb3Qocm9vdCkKICAgICAgICAgLCBtX3JlbmRlcmVyKG8pCi0gICAg
ICAgICwgbV9uZXh0QnJlYWthYmxlUG9zaXRpb24oLTEpCiAgICAgICAgICwgbV9wb3MocCkKICAg
ICAgICAgLCBtX3JlZmVyc1RvRW5kT2ZQcmV2aW91c05vZGUoZmFsc2UpCiAgICAgewpAQCAtNzcs
NyArNzEsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1vdmVUbyhvYmplY3QsIDApOwogICAgIH0KIAot
ICAgIHZvaWQgbW92ZVRvKFJlbmRlck9iamVjdCogb2JqZWN0LCB1bnNpZ25lZCBvZmZzZXQsIGlu
dCBuZXh0QnJlYWsgPSAtMSkKKyAgICB2b2lkIG1vdmVUbyhSZW5kZXJPYmplY3QqIG9iamVjdCwg
dW5zaWduZWQgb2Zmc2V0LCBPcHRpb25hbDx1bnNpZ25lZD4gbmV4dEJyZWFrID0gTnVsbG9wdCkK
ICAgICB7CiAgICAgICAgIHNldFJlbmRlcmVyKG9iamVjdCk7CiAgICAgICAgIHNldE9mZnNldChv
ZmZzZXQpOwpAQCAtODksOCArODMsOCBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgb2Zmc2V0KCkg
Y29uc3QgeyByZXR1cm4gbV9wb3M7IH0KICAgICB2b2lkIHNldE9mZnNldCh1bnNpZ25lZCBwb3Np
dGlvbik7CiAgICAgUmVuZGVyRWxlbWVudCogcm9vdCgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdDsg
fQotICAgIGludCBuZXh0QnJlYWthYmxlUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX25leHRC
cmVha2FibGVQb3NpdGlvbjsgfQotICAgIHZvaWQgc2V0TmV4dEJyZWFrYWJsZVBvc2l0aW9uKGlu
dCBwb3NpdGlvbikgeyBtX25leHRCcmVha2FibGVQb3NpdGlvbiA9IHBvc2l0aW9uOyB9CisgICAg
T3B0aW9uYWw8dW5zaWduZWQ+IG5leHRCcmVha2FibGVQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fbmV4dEJyZWFrYWJsZVBvc2l0aW9uOyB9CisgICAgdm9pZCBzZXROZXh0QnJlYWthYmxlUG9z
aXRpb24oT3B0aW9uYWw8dW5zaWduZWQ+IHBvc2l0aW9uKSB7IG1fbmV4dEJyZWFrYWJsZVBvc2l0
aW9uID0gcG9zaXRpb247IH0KICAgICBib29sIHJlZmVyc1RvRW5kT2ZQcmV2aW91c05vZGUoKSBj
b25zdCB7IHJldHVybiBtX3JlZmVyc1RvRW5kT2ZQcmV2aW91c05vZGU7IH0KICAgICB2b2lkIHNl
dFJlZmVyc1RvRW5kT2ZQcmV2aW91c05vZGUoKTsKIApAQCAtMTE4LDE4ICsxMTIsMTggQEAgcHJp
dmF0ZToKIAogICAgIFVDaGFyRGlyZWN0aW9uIHN1cnJvZ2F0ZVRleHREaXJlY3Rpb24oVUNoYXIg
Y3VycmVudENvZGVVbml0KSBjb25zdDsKIAotICAgIFJlbmRlckVsZW1lbnQqIG1fcm9vdDsKLSAg
ICBSZW5kZXJPYmplY3QqIG1fcmVuZGVyZXI7CisgICAgUmVuZGVyRWxlbWVudCogbV9yb290IHsg
bnVsbHB0ciB9OworICAgIFJlbmRlck9iamVjdCogbV9yZW5kZXJlciB7IG51bGxwdHIgfTsKIAot
ICAgIGludCBtX25leHRCcmVha2FibGVQb3NpdGlvbjsKLSAgICB1bnNpZ25lZCBtX3BvczsKKyAg
ICBPcHRpb25hbDx1bnNpZ25lZD4gbV9uZXh0QnJlYWthYmxlUG9zaXRpb247CisgICAgdW5zaWdu
ZWQgbV9wb3MgeyAwIH07CiAKICAgICAvLyBUaGVyZSBhcmUgYSBjb3VwbGUgcGxhY2VzIHdoZXJl
IHdlIHdhbnQgdG8gZGVjcmVtZW50IGFuIElubGluZUl0ZXJhdG9yLgogICAgIC8vIFVzdWFsbHkg
dGhpcyB0YWtlIHRoZSBmb3JtIG9mIGRlY3JlbWVudGluZyBtX3BvczsgaG93ZXZlciwgbV9wb3Mg
bWlnaHQgYmUgMC4KICAgICAvLyBIb3dldmVyLCB3ZSBzaG91bGRuJ3QgZXZlciBuZWVkIHRvIGRl
Y3JlbWVudCBhbiBJbmxpbmVJdGVyYXRvciBtb3JlIHRoYW4KICAgICAvLyBvbmNlLCBzbyByYXRo
ZXIgdGhhbiBpbXBsZW1lbnRpbmcgYSBkZWNyZW1lbnQoKSBmdW5jdGlvbiB3aGljaCB0cmF2ZXJz
ZXMKICAgICAvLyBub2Rlcywgd2UgY2FuIHNpbXBseSBrZWVwIHRyYWNrIG9mIHRoaXMgc3RhdGUg
YW5kIGhhbmRsZSBpdC4KLSAgICBib29sIG1fcmVmZXJzVG9FbmRPZlByZXZpb3VzTm9kZTsKKyAg
ICBib29sIG1fcmVmZXJzVG9FbmRPZlByZXZpb3VzTm9kZSB7IGZhbHNlIH07CiB9OwogCiBpbmxp
bmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IElubGluZUl0ZXJhdG9yJiBpdDEsIGNvbnN0IElubGlu
ZUl0ZXJhdG9yJiBpdDIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5s
aW5lVGV4dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5j
cHAKaW5kZXggYjhhNWE1MmZlZDRmNDNmZTJhNTgwYjg3NmRmN2ZiOWQwOGVmMmZmMi4uZTYzMmJk
YTE4NDkzNTZlMjNjOGE3MGJiMTVjZjhhODA3MTFkMWY0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcApAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIklubGluZVRleHRCb3guaCIKIAorI2luY2x1ZGUgIkJyZWFrTGlu
ZXMuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKICNp
bmNsdWRlICJEYXNoQXJyYXkuaCIKQEAgLTUwLDcgKzUxLDYgQEAKICNpbmNsdWRlICJUZXh0RGVj
b3JhdGlvblBhaW50ZXIuaCIKICNpbmNsdWRlICJUZXh0UGFpbnRTdHlsZS5oIgogI2luY2x1ZGUg
IlRleHRQYWludGVyLmgiCi0jaW5jbHVkZSAiYnJlYWtfbGluZXMuaCIKICNpbmNsdWRlIDxzdGRp
by5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRleHQuY3BwCmluZGV4IGQzZmJlN2M4NTkzMTc5YTk5NTA0ZGI1MDFkZmYxNjI3
MDVjNzc5M2EuLmFiZWJmZjBiZGM5NTk5OTFhMDBjMGFkYjIwZjNlMGRhMTk4ZGU1NWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNp
bmNsdWRlICJSZW5kZXJUZXh0LmgiCiAKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCisjaW5j
bHVkZSAiQnJlYWtMaW5lcy5oIgogI2luY2x1ZGUgIkJyZWFraW5nQ29udGV4dC5oIgogI2luY2x1
ZGUgIkNoYXJhY3RlclByb3BlcnRpZXMuaCIKICNpbmNsdWRlICJFbGxpcHNpc0JveC5oIgpAQCAt
NDYsNyArNDcsNiBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAj
aW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgIlZpc2libGVQb3NpdGlv
bi5oIgotI2luY2x1ZGUgImJyZWFrX2xpbmVzLmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oPgpAQCAtNzkxLDE1ICs3OTEsMTUgQEAgdm9pZCBSZW5kZXJU
ZXh0Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyhmbG9hdCBsZWFkV2lkdGgsIEhhc2hT
ZXQ8Y29uc3QgRm8KICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUgPSB0aGlzLT5zdHlsZSgp
OwogICAgIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250ID0gc3R5bGUuZm9udENhc2NhZGUoKTsgLy8g
RklYTUU6IFRoaXMgaWdub3JlcyBmaXJzdC1saW5lLgogICAgIGZsb2F0IHdvcmRTcGFjaW5nID0g
Zm9udC53b3JkU3BhY2luZygpOwotICAgIGludCBsZW4gPSB0ZXh0TGVuZ3RoKCk7CisgICAgdW5z
aWduZWQgbGVuID0gdGV4dExlbmd0aCgpOwogICAgIExhenlMaW5lQnJlYWtJdGVyYXRvciBicmVh
a0l0ZXJhdG9yKG1fdGV4dCwgc3R5bGUubG9jYWxlKCksIG1hcExpbmVCcmVha1RvSXRlcmF0b3JN
b2RlKHN0eWxlLmxpbmVCcmVhaygpKSk7CiAgICAgYm9vbCBuZWVkc1dvcmRTcGFjaW5nID0gZmFs
c2U7CiAgICAgYm9vbCBpZ25vcmluZ1NwYWNlcyA9IGZhbHNlOwogICAgIGJvb2wgaXNTcGFjZSA9
IGZhbHNlOwogICAgIGJvb2wgZmlyc3RXb3JkID0gdHJ1ZTsKICAgICBib29sIGZpcnN0TGluZSA9
IHRydWU7Ci0gICAgaW50IG5leHRCcmVha2FibGUgPSAtMTsKLSAgICBpbnQgbGFzdFdvcmRCb3Vu
ZGFyeSA9IDA7CisgICAgT3B0aW9uYWw8dW5zaWduZWQ+IG5leHRCcmVha2FibGU7CisgICAgdW5z
aWduZWQgbGFzdFdvcmRCb3VuZGFyeSA9IDA7CiAKICAgICAvLyBOb24temVybyBvbmx5IHdoZW4g
a2VybmluZyBpcyBlbmFibGVkLCBpbiB3aGljaCBjYXNlIHdlIG1lYXN1cmUgd29yZHMgd2l0aCB0
aGVpciB0cmFpbGluZwogICAgIC8vIHNwYWNlLCB0aGVuIHN1YnRyYWN0IGl0cyB3aWR0aC4KQEAg
LTgzMyw3ICs4MzMsNyBAQCB2b2lkIFJlbmRlclRleHQ6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2Fs
V2lkdGhzKGZsb2F0IGxlYWRXaWR0aCwgSGFzaFNldDxjb25zdCBGbwogICAgIGJvb2wga2VlcEFs
bFdvcmRzID0gc3R5bGUud29yZEJyZWFrKCkgPT0gS2VlcEFsbFdvcmRCcmVhazsKICAgICBib29s
IGlzTG9vc2VDSktNb2RlID0gYnJlYWtJdGVyYXRvci5pc0xvb3NlQ0pLTW9kZSgpOwogCi0gICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBsZW47IGkrKykgewogICAgICAgICBVQ2hhciBjID0gdW5jaGVja2VkQ2hhcmFjdGVyQXQo
aSk7CiAKICAgICAgICAgYm9vbCBwcmV2aW91c0NoYXJhY3RlcklzU3BhY2UgPSBpc1NwYWNlOwpA
QCAtODY5LDYgKzg2OSw3IEBAIHZvaWQgUmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJlZExvZ2lj
YWxXaWR0aHMoZmxvYXQgbGVhZFdpZHRoLCBIYXNoU2V0PGNvbnN0IEZvCiAgICAgICAgICAgICBs
YXN0V29yZEJvdW5kYXJ5Kys7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfSBlbHNl
IGlmIChjID09IHNvZnRIeXBoZW4gJiYgc3R5bGUuaHlwaGVucygpICE9IEh5cGhlbnNOb25lKSB7
CisgICAgICAgICAgICBBU1NFUlQoaSA+PSBsYXN0V29yZEJvdW5kYXJ5KTsKICAgICAgICAgICAg
IGN1cnJNYXhXaWR0aCArPSB3aWR0aEZyb21DYWNoZShmb250LCBsYXN0V29yZEJvdW5kYXJ5LCBp
IC0gbGFzdFdvcmRCb3VuZGFyeSwgbGVhZFdpZHRoICsgY3Vyck1heFdpZHRoLCAmZmFsbGJhY2tG
b250cywgJmdseXBoT3ZlcmZsb3csIHN0eWxlKTsKICAgICAgICAgICAgIGlmICghZmlyc3RHbHlw
aExlZnRPdmVyZmxvdykKICAgICAgICAgICAgICAgICBmaXJzdEdseXBoTGVmdE92ZXJmbG93ID0g
Z2x5cGhPdmVyZmxvdy5sZWZ0OwpAQCAtODc4LDcgKzg3OSw3IEBAIHZvaWQgUmVuZGVyVGV4dDo6
Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoZmxvYXQgbGVhZFdpZHRoLCBIYXNoU2V0PGNv
bnN0IEZvCiAKICAgICAgICAgYm9vbCBoYXNCcmVhayA9IGJyZWFrQWxsIHx8IGlzQnJlYWthYmxl
KGJyZWFrSXRlcmF0b3IsIGksIG5leHRCcmVha2FibGUsIGJyZWFrTkJTUCwgaXNMb29zZUNKS01v
ZGUsIGtlZXBBbGxXb3Jkcyk7CiAgICAgICAgIGJvb2wgYmV0d2VlbldvcmRzID0gdHJ1ZTsKLSAg
ICAgICAgaW50IGogPSBpOworICAgICAgICB1bnNpZ25lZCBqID0gaTsKICAgICAgICAgd2hpbGUg
KGMgIT0gJ1xuJyAmJiAhaXNTcGFjZUFjY29yZGluZ1RvU3R5bGUoYywgc3R5bGUpICYmIGMgIT0g
J1x0JyAmJiAoYyAhPSBzb2Z0SHlwaGVuIHx8IHN0eWxlLmh5cGhlbnMoKSA9PSBIeXBoZW5zTm9u
ZSkpIHsKICAgICAgICAgICAgIGorKzsKICAgICAgICAgICAgIGlmIChqID09IGxlbikKQEAgLTg5
Miw3ICs4OTMsNyBAQCB2b2lkIFJlbmRlclRleHQ6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lk
dGhzKGZsb2F0IGxlYWRXaWR0aCwgSGFzaFNldDxjb25zdCBGbwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAKLSAgICAgICAgaW50IHdvcmRMZW4gPSBqIC0gaTsKKyAgICAgICAgdW5zaWduZWQg
d29yZExlbiA9IGogLSBpOwogICAgICAgICBpZiAod29yZExlbikgewogICAgICAgICAgICAgZmxv
YXQgY3Vyck1pbldpZHRoID0gMDsKICAgICAgICAgICAgIGJvb2wgaXNTcGFjZSA9IChqIDwgbGVu
KSAmJiBpc1NwYWNlQWNjb3JkaW5nVG9TdHlsZShjLCBzdHlsZSk7CkBAIC05MzYsOCArOTM3LDEw
IEBAIHZvaWQgUmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoZmxvYXQg
bGVhZFdpZHRoLCBIYXNoU2V0PGNvbnN0IEZvCiAgICAgICAgICAgICBpZiAoYmV0d2VlbldvcmRz
KSB7CiAgICAgICAgICAgICAgICAgaWYgKGxhc3RXb3JkQm91bmRhcnkgPT0gaSkKICAgICAgICAg
ICAgICAgICAgICAgY3Vyck1heFdpZHRoICs9IHc7Ci0gICAgICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoaiA+PSBsYXN0
V29yZEJvdW5kYXJ5KTsKICAgICAgICAgICAgICAgICAgICAgY3Vyck1heFdpZHRoICs9IHdpZHRo
RnJvbUNhY2hlKGZvbnQsIGxhc3RXb3JkQm91bmRhcnksIGogLSBsYXN0V29yZEJvdW5kYXJ5LCBs
ZWFkV2lkdGggKyBjdXJyTWF4V2lkdGgsICZmYWxsYmFja0ZvbnRzLCAmZ2x5cGhPdmVyZmxvdywg
c3R5bGUpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBsYXN0V29yZEJvdW5k
YXJ5ID0gajsKICAgICAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlcmluZ0FsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJpbmdBbGxJbk9uZS5jcHAKaW5kZXggOGYzYmFlODJiNjdmMmM0NGE0ZGMwYmY2MzMyODA1
OTI4ZDU0MDI4NC4uMmU5NjQ0NmVmMjY3MDQ2NmRiYWRmMGU0ZDkzMjE0ZmIyMmU2MGZjMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcmluZ0FsbEluT25lLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyaW5nQWxsSW5PbmUuY3BwCkBAIC0y
OCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQXV0b1RhYmxlTGF5b3V0LmNwcCIKICNpbmNsdWRlICJC
aWRpUnVuLmNwcCIKICNpbmNsdWRlICJCb3JkZXJFZGdlLmNwcCIKKyNpbmNsdWRlICJCcmVha0xp
bmVzLmNwcCIKICNpbmNsdWRlICJDbGlwUmVjdC5jcHAiCiAjaW5jbHVkZSAiQ291bnRlck5vZGUu
Y3BwIgogI2luY2x1ZGUgIkVsbGlwc2lzQm94LmNwcCIKQEAgLTE0OSw0ICsxNTAsMyBAQAogI2lu
Y2x1ZGUgIlRleHREZWNvcmF0aW9uUGFpbnRlci5jcHAiCiAjaW5jbHVkZSAiVGV4dFBhaW50U3R5
bGUuY3BwIgogI2luY2x1ZGUgIlRleHRQYWludGVyLmNwcCIKLSNpbmNsdWRlICJicmVha19saW5l
cy5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxh
eW91dFRleHRGcmFnbWVudEl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2lt
cGxlTGluZUxheW91dFRleHRGcmFnbWVudEl0ZXJhdG9yLmgKaW5kZXggMTA3N2JjYmJmMTYwOTU1
NGJjZWJiNzc0NThmMjgwODVmZjYyNmFjZS4uYmFmY2ViMWUxZTAxMmVjMzRlMTNmMWUyMmY4YjIx
ZjJlODQyMjc5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxp
bmVMYXlvdXRUZXh0RnJhZ21lbnRJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9TaW1wbGVMaW5lTGF5b3V0VGV4dEZyYWdtZW50SXRlcmF0b3IuaApAQCAtMjYsMTAgKzI2
LDEwIEBACiAjaWZuZGVmIFNpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJdGVyYXRvcl9oCiAj
ZGVmaW5lIFNpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJdGVyYXRvcl9oCiAKKyNpbmNsdWRl
ICJCcmVha0xpbmVzLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGluZUJyZWFrLmgiCiAjaW5jbHVkZSAi
U2ltcGxlTGluZUxheW91dEZsb3dDb250ZW50cy5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRC
cmVha0l0ZXJhdG9yLmg+Ci0jaW5jbHVkZSAiYnJlYWtfbGluZXMuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvYnJlYWtfbGlu
ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2JyZWFrX2xpbmVzLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTRiOTUzNmZkMWJlZGYxY2UzNjNkNjYwMTFkNTEyMzU5
MGVmODEwOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvYnJlYWtfbGluZXMuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsMTAwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDcsIDIwMTAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJicmVha19saW5lcy5oIgotCi0jaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUu
aD4KLSNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL3VuaWNvZGUv
Q2hhcmFjdGVyTmFtZXMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0vLyBQYWNrIDggYml0
cyBpbnRvIG9uZSBieXRlCi0jZGVmaW5lIEIoYSwgYiwgYywgZCwgZSwgZiwgZywgaCkgXAotICAg
ICgoYSkgfCAoKGIpIDw8IDEpIHwgKChjKSA8PCAyKSB8ICgoZCkgPDwgMykgfCAoKGUpIDw8IDQp
IHwgKChmKSA8PCA1KSB8ICgoZykgPDwgNikgfCAoKGgpIDw8IDcpKQotCi0vLyBMaW5lIGJyZWFr
aW5nIHRhYmxlIHJvdyBmb3IgZWFjaCBkaWdpdCAoMC05KQotI2RlZmluZSBESSB7IDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAgfQotCi0vLyBMaW5lIGJyZWFraW5nIHRhYmxlIHJv
dyBmb3IgYXNjaWkgbGV0dGVycyAoYS16IEEtWikKLSNkZWZpbmUgQUwgeyAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwIH0KLQotI2RlZmluZSBGIDB4RkYKLQotLy8gTGluZSBicmVh
a2luZyB0YWJsZSBmb3IgcHJpbnRhYmxlIEFTQ0lJIGNoYXJhY3RlcnMuIExpbmUgYnJlYWtpbmcg
b3Bwb3J0dW5pdGllcyBpbiB0aGlzIHRhYmxlIGFyZSBhcyBiZWxvdzoKLS8vIC0gYmVmb3JlIG9w
ZW5pbmcgcHVuY3R1YXRpb25zIHN1Y2ggYXMgJygnLCAnPCcsICdbJywgJ3snIGFmdGVyIGNlcnRh
aW4gY2hhcmFjdGVycyAoY29tcGF0aWJsZSB3aXRoIEZpcmVmb3ggMy42KTsKLS8vIC0gYWZ0ZXIg
Jy0nIGFuZCAnPycgKGJhY2t3YXJkLWNvbXBhdGlibGUsIGFuZCBjb21wYXRpYmxlIHdpdGggSW50
ZXJuZXQgRXhwbG9yZXIpLgotLy8gUGxlYXNlIHJlZmVyIHRvIDxodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzc2OTg+IGZvciBsaW5lIGJyZWFraW5nIG1hdHJpeGVzIG9m
IGRpZmZlcmVudCBicm93c2VycwotLy8gYW5kIHRoZSBJQ1Ugc3RhbmRhcmQuCi1XRUJDT1JFX0VY
UE9SVCBjb25zdCB1bnNpZ25lZCBjaGFyIGFzY2lpTGluZUJyZWFrVGFibGVbXVthc2NpaUxpbmVC
cmVha1RhYmxlQ29sdW1uQ291bnRdID0gewotICAgIC8vICAhICAiICAjICAkICAlICAmICAnICAo
ICAgICApICAqICArICAsICAtICAuICAvICAwICAxLTggICA5ICA6ICA7ICA8ICA9ICA+ICA/ICBA
ICAgICBBLVggICAgICBZICBaICBbICBcICBdICBeICBfICBgICAgICBhLXggICAgICB5ICB6ICB7
ICB8ICB9ICB+ICBERUwKLSAgICB7IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSksIEIoMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCksIDAsIEIoMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCksIDAsIDAsIDAs
IEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwg
MCwgMCkgfSwgLy8gIQotICAgIHsgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAxKSwgQigwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwKSwgMCwgQigwLCAwLCAwLCAxLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwg
QigwLCAwLCAxLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAxLCAwLCAwLCAwLCAw
LCAwKSB9LCAvLyAiCi0gICAgeyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEpLCBCKDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDApLCAwLCBCKDAsIDAsIDAsIDEsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBC
KDAsIDAsIDEsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAsIDAsIDAs
IDApIH0sIC8vICMKLSAgICB7IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIEIoMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCksIDAsIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIo
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCkgfSwgLy8gJAotICAgIHsgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAxKSwgQigwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwKSwgMCwgQigwLCAwLCAwLCAxLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigw
LCAwLCAxLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAxLCAwLCAwLCAwLCAwLCAw
KSB9LCAvLyAlCi0gICAgeyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEpLCBCKDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDApLCAwLCBCKDAsIDAsIDAsIDEsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAs
IDAsIDEsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAsIDAsIDAsIDAp
IH0sIC8vICYKLSAgICB7IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIEIoMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCksIDAsIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCkg
fSwgLy8gJwotICAgIHsgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgQigwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwKSwgMCwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSB9
LCAvLyAoCi0gICAgeyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEpLCBCKDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDApLCAwLCBCKDAsIDAsIDAsIDEsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAs
IDEsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAsIDAsIDAsIDApIH0s
IC8vICkKLSAgICB7IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSksIEIoMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCksIDAsIEIoMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwg
MSwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCkgfSwg
Ly8gKgotICAgIHsgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAxKSwgQigwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwKSwgMCwgQigwLCAwLCAwLCAxLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAx
LCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAxLCAwLCAwLCAwLCAwLCAwKSB9LCAv
LyArCi0gICAgeyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEpLCBCKDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDApLCAwLCBCKDAsIDAsIDAsIDEsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEs
IDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAsIDAsIDAsIDApIH0sIC8v
ICwKLSAgICB7IEIoMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSksIEIoMSwgMSwgMSwgMSwgMSwgMCwg
MSwgMCksIDAsIEIoMCwgMSwgMSwgMSwgMSwgMSwgMSwgMSksIEYsIEYsIEYsIEIoMSwgMSwgMSwg
MSwgMSwgMSwgMSwgMSksIEYsIEYsIEYsIEIoMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSkgfSwgLy8g
LSBOb3RlOiBicmVha2luZyBiZWZvcmUgJzAnLSc5JyBpcyBoYW5kbGVkIGhhcmQtY29kZWQgaW4g
c2hvdWxkQnJlYWtBZnRlcigpLgotICAgIHsgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAxKSwgQigw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgQigwLCAwLCAwLCAxLCAwLCAwLCAwLCAwKSwgMCwg
MCwgMCwgQigwLCAwLCAxLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAxLCAwLCAw
LCAwLCAwLCAwKSB9LCAvLyAuCi0gICAgeyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCBCKDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCAw
LCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDApIH0sIC8vIC8KLSAgICBESSwgIERJLCAgREksICBESSwgIERJLCAgREksICBESSwg
IERJLCAgREksICBESSwgLy8gMC05Ci0gICAgeyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEpLCBC
KDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCBCKDAsIDAsIDAsIDEsIDAsIDAsIDAsIDApLCAw
LCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAs
IDAsIDAsIDAsIDApIH0sIC8vIDoKLSAgICB7IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSksIEIo
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIEIoMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCksIDAs
IDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwg
MCwgMCwgMCwgMCkgfSwgLy8gOwotICAgIHsgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgQigw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwg
MCwgMCwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwKSB9LCAvLyA8Ci0gICAgeyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEpLCBCKDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCBCKDAsIDAsIDAsIDEsIDAsIDAsIDAsIDApLCAwLCAw
LCAwLCBCKDAsIDAsIDEsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAs
IDAsIDAsIDApIH0sIC8vID0KLSAgICB7IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSksIEIoMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIEIoMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCksIDAsIDAs
IDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwg
MCwgMCwgMCkgfSwgLy8gPgotICAgIHsgQigwLCAwLCAxLCAxLCAxLCAxLCAwLCAxKSwgQigwLCAx
LCAxLCAwLCAxLCAwLCAwLCAxKSwgRiwgQigxLCAwLCAwLCAxLCAxLCAxLCAwLCAxKSwgRiwgRiwg
RiwgQigxLCAxLCAxLCAxLCAwLCAxLCAxLCAxKSwgRiwgRiwgRiwgQigxLCAxLCAxLCAxLCAwLCAx
LCAxLCAwKSB9LCAvLyA/Ci0gICAgeyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCBCKDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDApLCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAw
LCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDApIH0sIC8vIEAKLSAgICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFM
LCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwg
IEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAvLyBBLVoKLSAgICB7IEIoMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCksIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIEIoMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAs
IDAsIDAsIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCkgfSwgLy8gWwotICAgIHsgQigwLCAwLCAw
LCAwLCAwLCAwLCAwLCAxKSwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgQigwLCAwLCAw
LCAxLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAxLCAwLCAwLCAwLCAwLCAwKSwgMCwg
MCwgMCwgQigwLCAwLCAxLCAwLCAwLCAwLCAwLCAwKSB9LCAvLyAnXCcKLSAgICB7IEIoMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMSksIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIEIoMCwgMCwg
MCwgMSwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCksIDAs
IDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCkgfSwgLy8gXQotICAgIHsgQigwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwKSwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgQigwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwg
MCwgMCwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSB9LCAvLyBeCi0gICAgeyBCKDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDApLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCBCKDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCAw
LCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApIH0sIC8vIF8KLSAgICB7IEIoMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCksIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIEIoMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIDAs
IDAsIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCkgfSwgLy8gYAotICAgIEFMLCAgQUwsICBBTCwg
IEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBB
TCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUws
IC8vIGEtegotICAgIHsgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgQigwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwKSwgMCwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSB9
LCAvLyB7Ci0gICAgeyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEpLCBCKDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDApLCAwLCBCKDAsIDAsIDAsIDEsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAs
IDEsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAsIDAsIDAsIDApIH0s
IC8vIHwKLSAgICB7IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSksIEIoMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCksIDAsIEIoMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwg
MSwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCkgfSwg
Ly8gfQotICAgIHsgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAxKSwgQigwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwKSwgMCwgQigwLCAwLCAwLCAxLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAx
LCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAxLCAwLCAwLCAwLCAwLCAwKSB9LCAv
LyB+Ci0gICAgeyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCBCKDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDApLCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApIH0sIC8v
IERFTAotfTsKLQotI3VuZGVmIEIKLSN1bmRlZiBGCi0jdW5kZWYgREkKLSN1bmRlZiBBTAotCi1D
T01QSUxFX0FTU0VSVChXVEZfQVJSQVlfTEVOR1RIKGFzY2lpTGluZUJyZWFrVGFibGUpID09IGFz
Y2lpTGluZUJyZWFrVGFibGVMYXN0Q2hhciAtIGFzY2lpTGluZUJyZWFrVGFibGVGaXJzdENoYXIg
KyAxLCBUZXN0TGluZUJyZWFrVGFibGVDb25zaXN0ZW5jeSk7Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9icmVha19saW5lcy5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2JyZWFrX2xpbmVzLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGEyOTQ2MTI5Y2JhNmViOTE2ZGFiOWU1MWE4MGVjYmU5ZTE3ZmIyZGMu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL2JyZWFrX2xpbmVzLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyNDggKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNywgMjAxMCwgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCi0gKgotICovCi0KLSNpZm5kZWYgYnJlYWtfbGluZXNfaAotI2RlZmlu
ZSBicmVha19saW5lc19oCi0KLSNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgotI2luY2x1ZGUg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRv
ci5oPgotI2luY2x1ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotc3RhdGljIGNvbnN0IFVDaGFyIGFzY2lpTGluZUJyZWFrVGFibGVGaXJz
dENoYXIgPSAnISc7Ci1zdGF0aWMgY29uc3QgVUNoYXIgYXNjaWlMaW5lQnJlYWtUYWJsZUxhc3RD
aGFyID0gMTI3Owotc3RhdGljIGNvbnN0IHVuc2lnbmVkIGFzY2lpTGluZUJyZWFrVGFibGVDb2x1
bW5Db3VudCA9IChhc2NpaUxpbmVCcmVha1RhYmxlTGFzdENoYXIgLSBhc2NpaUxpbmVCcmVha1Rh
YmxlRmlyc3RDaGFyKSAvIDggKyAxOwotCi1XRUJDT1JFX0VYUE9SVCBleHRlcm4gY29uc3QgdW5z
aWduZWQgY2hhciBhc2NpaUxpbmVCcmVha1RhYmxlW11bYXNjaWlMaW5lQnJlYWtUYWJsZUNvbHVt
bkNvdW50XTsKLQotZW51bSBjbGFzcyBOQlNQQmVoYXZpb3IgewotICAgIElnbm9yZU5CU1AsCi0g
ICAgVHJlYXROQlNQQXNCcmVhaywKLX07Ci0KLXRlbXBsYXRlPE5CU1BCZWhhdmlvciBuYnNwQmVo
YXZpb3I+Ci1zdGF0aWMgaW5saW5lIGJvb2wgaXNCcmVha2FibGVTcGFjZShVQ2hhciBjaCkKLXsK
LSAgICBzd2l0Y2ggKGNoKSB7Ci0gICAgY2FzZSAnICc6Ci0gICAgY2FzZSAnXG4nOgotICAgIGNh
c2UgJ1x0JzoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgY2FzZSBub0JyZWFrU3BhY2U6Ci0g
ICAgICAgIHJldHVybiBuYnNwQmVoYXZpb3IgPT0gTkJTUEJlaGF2aW9yOjpUcmVhdE5CU1BBc0Jy
ZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19Ci0KLWlu
bGluZSBib29sIHNob3VsZEJyZWFrQWZ0ZXIoVUNoYXIgbGFzdENoLCBVQ2hhciBjaCwgVUNoYXIg
bmV4dENoKQotewotICAgIC8vIERvbid0IGFsbG93IGxpbmUgYnJlYWtpbmcgYmV0d2VlbiAnLScg
YW5kIGEgZGlnaXQgaWYgdGhlICctJyBtYXkgbWVhbiBhIG1pbnVzIHNpZ24gaW4gdGhlIGNvbnRl
eHQsCi0gICAgLy8gd2hpbGUgYWxsb3cgYnJlYWtpbmcgaW4gJ0FCQ0QtMTIzNCcgYW5kICcxMjM0
LTU2NzgnIHdoaWNoIG1heSBiZSBpbiBsb25nIFVSTHMuCi0gICAgaWYgKGNoID09ICctJyAmJiBp
c0FTQ0lJRGlnaXQobmV4dENoKSkKLSAgICAgICAgcmV0dXJuIGlzQVNDSUlBbHBoYW51bWVyaWMo
bGFzdENoKTsKLQotICAgIC8vIElmIGJvdGggY2ggYW5kIG5leHRDaCBhcmUgQVNDSUkgY2hhcmFj
dGVycywgdXNlIGEgbG9va3VwIHRhYmxlIGZvciBlbmhhbmNlZCBzcGVlZCBhbmQgZm9yIGNvbXBh
dGliaWxpdHkKLSAgICAvLyB3aXRoIG90aGVyIGJyb3dzZXJzIChzZWUgY29tbWVudHMgZm9yIGFz
Y2lpTGluZUJyZWFrVGFibGUgZm9yIGRldGFpbHMpLgotICAgIGlmIChjaCA+PSBhc2NpaUxpbmVC
cmVha1RhYmxlRmlyc3RDaGFyICYmIGNoIDw9IGFzY2lpTGluZUJyZWFrVGFibGVMYXN0Q2hhciAm
JiBuZXh0Q2ggPj0gYXNjaWlMaW5lQnJlYWtUYWJsZUZpcnN0Q2hhciAmJiBuZXh0Q2ggPD0gYXNj
aWlMaW5lQnJlYWtUYWJsZUxhc3RDaGFyKSB7Ci0gICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIq
IHRhYmxlUm93ID0gYXNjaWlMaW5lQnJlYWtUYWJsZVtjaCAtIGFzY2lpTGluZUJyZWFrVGFibGVG
aXJzdENoYXJdOwotICAgICAgICBpbnQgbmV4dENoSW5kZXggPSBuZXh0Q2ggLSBhc2NpaUxpbmVC
cmVha1RhYmxlRmlyc3RDaGFyOwotICAgICAgICByZXR1cm4gdGFibGVSb3dbbmV4dENoSW5kZXgg
LyA4XSAmICgxIDw8IChuZXh0Q2hJbmRleCAlIDgpKTsKLSAgICB9Ci0gICAgLy8gT3RoZXJ3aXNl
IGRlZmVyIHRvIHRoZSBVbmljb2RlIGFsZ29yaXRobSBieSByZXR1cm5pbmcgZmFsc2UuCi0gICAg
cmV0dXJuIGZhbHNlOwotfQotCi10ZW1wbGF0ZTxOQlNQQmVoYXZpb3IgbmJzcEJlaGF2aW9yPgot
aW5saW5lIGJvb2wgbmVlZHNMaW5lQnJlYWtJdGVyYXRvcihVQ2hhciBjaCkKLXsKLSAgICBpZiAo
bmJzcEJlaGF2aW9yID09IE5CU1BCZWhhdmlvcjo6VHJlYXROQlNQQXNCcmVhaykKLSAgICAgICAg
cmV0dXJuIGNoID4gYXNjaWlMaW5lQnJlYWtUYWJsZUxhc3RDaGFyOwotICAgIHJldHVybiBjaCA+
IGFzY2lpTGluZUJyZWFrVGFibGVMYXN0Q2hhciAmJiBjaCAhPSBub0JyZWFrU3BhY2U7Ci19Ci0K
LS8vIFdoZW4gaW4gbm9uLWxvb3NlIG1vZGUsIHdlIGNhbiB1c2UgdGhlIEFTQ0lJIHNob3J0Y3V0
IHRhYmxlLgotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwgTkJTUEJlaGF2aW9yIG5i
c3BCZWhhdmlvcj4KLWlubGluZSBpbnQgbmV4dEJyZWFrYWJsZVBvc2l0aW9uTm9uTG9vc2VseShM
YXp5TGluZUJyZWFrSXRlcmF0b3ImIGxhenlCcmVha0l0ZXJhdG9yLCBjb25zdCBDaGFyYWN0ZXJU
eXBlKiBzdHIsIHVuc2lnbmVkIGxlbmd0aCwgaW50IHBvcykKLXsKLSAgICBpbnQgbGVuID0gc3Rh
dGljX2Nhc3Q8aW50PihsZW5ndGgpOwotICAgIGludCBuZXh0QnJlYWsgPSAtMTsKLQotICAgIENo
YXJhY3RlclR5cGUgbGFzdExhc3RDaCA9IHBvcyA+IDEgPyBzdHJbcG9zIC0gMl0gOiBzdGF0aWNf
Y2FzdDxDaGFyYWN0ZXJUeXBlPihsYXp5QnJlYWtJdGVyYXRvci5zZWNvbmRUb0xhc3RDaGFyYWN0
ZXIoKSk7Ci0gICAgQ2hhcmFjdGVyVHlwZSBsYXN0Q2ggPSBwb3MgPiAwID8gc3RyW3BvcyAtIDFd
IDogc3RhdGljX2Nhc3Q8Q2hhcmFjdGVyVHlwZT4obGF6eUJyZWFrSXRlcmF0b3IubGFzdENoYXJh
Y3RlcigpKTsKLSAgICB1bnNpZ25lZCBwcmlvckNvbnRleHRMZW5ndGggPSBsYXp5QnJlYWtJdGVy
YXRvci5wcmlvckNvbnRleHRMZW5ndGgoKTsKLSAgICBmb3IgKGludCBpID0gcG9zOyBpIDwgbGVu
OyBpKyspIHsKLSAgICAgICAgQ2hhcmFjdGVyVHlwZSBjaCA9IHN0cltpXTsKLQotICAgICAgICAv
LyBOb24tbG9vc2UgbW9kZSwgc28gdXNlIEFTQ0lJIHNob3J0Y3V0IChzaG91bGRCcmVha0FmdGVy
KSBpZiBub3QgYnJlYWthYmxlIHNwYWNlLgotICAgICAgICBpZiAoaXNCcmVha2FibGVTcGFjZTxu
YnNwQmVoYXZpb3I+KGNoKSB8fCBzaG91bGRCcmVha0FmdGVyKGxhc3RMYXN0Q2gsIGxhc3RDaCwg
Y2gpKQotICAgICAgICAgICAgcmV0dXJuIGk7Ci0KLSAgICAgICAgLy8gTm9uLWxvb3NlIG1vZGUs
IHNvIGNvbmRpdGlvbmFsbHkgdXNlIGJyZWFrIGl0ZXJhdG9yLgotICAgICAgICBpZiAobmVlZHNM
aW5lQnJlYWtJdGVyYXRvcjxuYnNwQmVoYXZpb3I+KGNoKSB8fCBuZWVkc0xpbmVCcmVha0l0ZXJh
dG9yPG5ic3BCZWhhdmlvcj4obGFzdENoKSkgewotICAgICAgICAgICAgaWYgKG5leHRCcmVhayA8
IGkpIHsKLSAgICAgICAgICAgICAgICAvLyBEb24ndCBicmVhayBpZiBwb3NpdGlvbmVkIGF0IHN0
YXJ0IG9mIHByaW1hcnkgY29udGV4dCBhbmQgdGhlcmUgaXMgbm8gcHJpb3IgY29udGV4dC4KLSAg
ICAgICAgICAgICAgICBpZiAoaSB8fCBwcmlvckNvbnRleHRMZW5ndGgpIHsKLSAgICAgICAgICAg
ICAgICAgICAgVGV4dEJyZWFrSXRlcmF0b3IqIGJyZWFrSXRlcmF0b3IgPSBsYXp5QnJlYWtJdGVy
YXRvci5nZXQocHJpb3JDb250ZXh0TGVuZ3RoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGJy
ZWFrSXRlcmF0b3IpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5leHRCcmVhayA9IHRleHRC
cmVha0ZvbGxvd2luZyhicmVha0l0ZXJhdG9yLCBpIC0gMSArIHByaW9yQ29udGV4dExlbmd0aCk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV4dEJyZWFrID49IDApCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbmV4dEJyZWFrIC09IHByaW9yQ29udGV4dExlbmd0aDsKLSAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGlmIChpID09IG5leHRCcmVhayAmJiAhaXNCcmVha2FibGVTcGFjZTxuYnNwQmVoYXZp
b3I+KGxhc3RDaCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBsYXN0TGFzdENoID0gbGFzdENoOwotICAgICAgICBsYXN0Q2ggPSBjaDsKLSAgICB9Ci0K
LSAgICByZXR1cm4gbGVuOwotfQotCi0vLyBXaGVuIGluIGxvb3NlIG1vZGUsIHdlIGNhbid0IHVz
ZSB0aGUgQVNDSUkgc2hvcnRjdXQgdGFibGUgc2luY2UgbG9vc2UgbW9kZSBhbGxvd3MgIiQxMDAi
IHRvIGJyZWFrIGFmdGVyICckJyBpbiBjb250ZW50IG1hcmtlZCBhcyBDSksuCi0vLyBOLkIuIEl0
IHNob3VsZCBiZSBwb3NzaWJsZSB0byBjb21iaW5lIHRoZSBmb2xsb3dpbmcgd2l0aCB0aGUgbm9u
LWxvb3NlIHZlcnNpb24gYWJvdmUgYnkgYWRkaW5nIGEgTG9vc2VCZWhhdmlvciB0ZW1wbGF0ZSBw
YXJhbWV0ZXI7Ci0vLyBob3dldmVyLCB3aGVuIGRvaW5nIHRoaXMsIGEgMTAlIHBlcmZvcm1hbmNl
IHJlZ3Jlc3Npb24gYXBwZWFyZWQgb24gY2hyb21pdW0td2luIChodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODkyMzUjYzExMikuCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlLCBOQlNQQmVoYXZpb3IgbmJzcEJlaGF2aW9yPgotc3RhdGljIGlubGluZSBpbnQg
bmV4dEJyZWFrYWJsZVBvc2l0aW9uTG9vc2VseShMYXp5TGluZUJyZWFrSXRlcmF0b3ImIGxhenlC
cmVha0l0ZXJhdG9yLCBjb25zdCBDaGFyYWN0ZXJUeXBlKiBzdHIsIHVuc2lnbmVkIGxlbmd0aCwg
aW50IHBvcykKLXsKLSAgICBpbnQgbGVuID0gc3RhdGljX2Nhc3Q8aW50PihsZW5ndGgpOwotICAg
IGludCBuZXh0QnJlYWsgPSAtMTsKLQotICAgIENoYXJhY3RlclR5cGUgbGFzdENoID0gcG9zID4g
MCA/IHN0cltwb3MgLSAxXSA6IHN0YXRpY19jYXN0PENoYXJhY3RlclR5cGU+KGxhenlCcmVha0l0
ZXJhdG9yLmxhc3RDaGFyYWN0ZXIoKSk7Ci0gICAgdW5zaWduZWQgcHJpb3JDb250ZXh0TGVuZ3Ro
ID0gbGF6eUJyZWFrSXRlcmF0b3IucHJpb3JDb250ZXh0TGVuZ3RoKCk7Ci0gICAgZm9yIChpbnQg
aSA9IHBvczsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICAgIENoYXJhY3RlclR5cGUgY2ggPSBzdHJb
aV07Ci0KLSAgICAgICAgLy8gQWx3YXlzIGxvb3NlIG1vZGUsIHNvIGRvbid0IHVzZSBBU0NJSSBz
aG9ydGN1dCAoc2hvdWxkQnJlYWtBZnRlcikuCi0gICAgICAgIGlmIChpc0JyZWFrYWJsZVNwYWNl
PG5ic3BCZWhhdmlvcj4oY2gpKQotICAgICAgICAgICAgcmV0dXJuIGk7Ci0KLSAgICAgICAgLy8g
QWx3YXlzIHVzZSBsaW5lIGJyZWFrIGl0ZXJhdG9yIGluIGxvb3NlIG1vZGUuCi0gICAgICAgIGlm
IChuZXh0QnJlYWsgPCBpKSB7Ci0gICAgICAgICAgICAvLyBEb24ndCBicmVhayBpZiBwb3NpdGlv
bmVkIGF0IHN0YXJ0IG9mIHByaW1hcnkgY29udGV4dCBhbmQgdGhlcmUgaXMgbm8gcHJpb3IgY29u
dGV4dC4KLSAgICAgICAgICAgIGlmIChpIHx8IHByaW9yQ29udGV4dExlbmd0aCkgewotICAgICAg
ICAgICAgICAgIFRleHRCcmVha0l0ZXJhdG9yKiBicmVha0l0ZXJhdG9yID0gbGF6eUJyZWFrSXRl
cmF0b3IuZ2V0KHByaW9yQ29udGV4dExlbmd0aCk7Ci0gICAgICAgICAgICAgICAgaWYgKGJyZWFr
SXRlcmF0b3IpIHsKLSAgICAgICAgICAgICAgICAgICAgbmV4dEJyZWFrID0gdGV4dEJyZWFrRm9s
bG93aW5nKGJyZWFrSXRlcmF0b3IsIGkgLSAxICsgcHJpb3JDb250ZXh0TGVuZ3RoKTsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKG5leHRCcmVhayA+PSAwKQotICAgICAgICAgICAgICAgICAgICAg
ICAgbmV4dEJyZWFrIC09IHByaW9yQ29udGV4dExlbmd0aDsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGkgPT0gbmV4dEJyZWFrICYmICFp
c0JyZWFrYWJsZVNwYWNlPG5ic3BCZWhhdmlvcj4obGFzdENoKSkKLSAgICAgICAgICAgIHJldHVy
biBpOwotCi0gICAgICAgIGxhc3RDaCA9IGNoOwotICAgIH0KLQotICAgIHJldHVybiBsZW47Ci19
Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIE5CU1BCZWhhdmlvciBuYnNwQmVo
YXZpb3I+Ci1pbmxpbmUgdW5zaWduZWQgbmV4dEJyZWFrYWJsZVBvc2l0aW9uS2VlcGluZ0FsbFdv
cmRzKGNvbnN0IENoYXJhY3RlclR5cGUqIHN0cmluZywgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25l
ZCBzdGFydFBvc2l0aW9uKQotewotICAgIGZvciAodW5zaWduZWQgaSA9IHN0YXJ0UG9zaXRpb247
IGkgPCBsZW5ndGg7IGkrKykgewotICAgICAgICBpZiAoaXNCcmVha2FibGVTcGFjZTxuYnNwQmVo
YXZpb3I+KHN0cmluZ1tpXSkpCi0gICAgICAgICAgICByZXR1cm4gaTsKLSAgICB9Ci0gICAgcmV0
dXJuIGxlbmd0aDsKLX0KLQotaW5saW5lIHVuc2lnbmVkIG5leHRCcmVha2FibGVQb3NpdGlvbktl
ZXBpbmdBbGxXb3JkcyhMYXp5TGluZUJyZWFrSXRlcmF0b3ImIGxhenlCcmVha0l0ZXJhdG9yLCBp
bnQgc3RhcnRQb3NpdGlvbikKLXsKLSAgICBTdHJpbmcgc3RyaW5nID0gbGF6eUJyZWFrSXRlcmF0
b3Iuc3RyaW5nKCk7Ci0gICAgaWYgKHN0cmluZy5pczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIG5l
eHRCcmVha2FibGVQb3NpdGlvbktlZXBpbmdBbGxXb3JkczxMQ2hhciwgTkJTUEJlaGF2aW9yOjpU
cmVhdE5CU1BBc0JyZWFrPihzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpLCBz
dGFydFBvc2l0aW9uKTsKLSAgICByZXR1cm4gbmV4dEJyZWFrYWJsZVBvc2l0aW9uS2VlcGluZ0Fs
bFdvcmRzPFVDaGFyLCBOQlNQQmVoYXZpb3I6OlRyZWF0TkJTUEFzQnJlYWs+KHN0cmluZy5jaGFy
YWN0ZXJzMTYoKSwgc3RyaW5nLmxlbmd0aCgpLCBzdGFydFBvc2l0aW9uKTsKLX0KLQotaW5saW5l
IHVuc2lnbmVkIG5leHRCcmVha2FibGVQb3NpdGlvbktlZXBpbmdBbGxXb3Jkc0lnbm9yaW5nTkJT
UChMYXp5TGluZUJyZWFrSXRlcmF0b3ImIGl0ZXJhdG9yLCBpbnQgc3RhcnRQb3NpdGlvbikKLXsK
LSAgICBTdHJpbmcgc3RyaW5nID0gaXRlcmF0b3Iuc3RyaW5nKCk7Ci0gICAgaWYgKHN0cmluZy5p
czhCaXQoKSkKLSAgICAgICAgcmV0dXJuIG5leHRCcmVha2FibGVQb3NpdGlvbktlZXBpbmdBbGxX
b3JkczxMQ2hhciwgTkJTUEJlaGF2aW9yOjpJZ25vcmVOQlNQPihzdHJpbmcuY2hhcmFjdGVyczgo
KSwgc3RyaW5nLmxlbmd0aCgpLCBzdGFydFBvc2l0aW9uKTsKLSAgICByZXR1cm4gbmV4dEJyZWFr
YWJsZVBvc2l0aW9uS2VlcGluZ0FsbFdvcmRzPFVDaGFyLCBOQlNQQmVoYXZpb3I6Oklnbm9yZU5C
U1A+KHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nLmxlbmd0aCgpLCBzdGFydFBvc2l0aW9u
KTsKLX0KLQotaW5saW5lIGludCBuZXh0QnJlYWthYmxlUG9zaXRpb24oTGF6eUxpbmVCcmVha0l0
ZXJhdG9yJiBpdGVyYXRvciwgaW50IHBvcykKLXsKLSAgICBTdHJpbmcgc3RyaW5nID0gaXRlcmF0
b3Iuc3RyaW5nKCk7Ci0gICAgaWYgKHN0cmluZy5pczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIG5l
eHRCcmVha2FibGVQb3NpdGlvbk5vbkxvb3NlbHk8TENoYXIsIE5CU1BCZWhhdmlvcjo6VHJlYXRO
QlNQQXNCcmVhaz4oaXRlcmF0b3IsIHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3Ro
KCksIHBvcyk7Ci0gICAgcmV0dXJuIG5leHRCcmVha2FibGVQb3NpdGlvbk5vbkxvb3NlbHk8VUNo
YXIsIE5CU1BCZWhhdmlvcjo6VHJlYXROQlNQQXNCcmVhaz4oaXRlcmF0b3IsIHN0cmluZy5jaGFy
YWN0ZXJzMTYoKSwgc3RyaW5nLmxlbmd0aCgpLCBwb3MpOwotfQotCi1pbmxpbmUgaW50IG5leHRC
cmVha2FibGVQb3NpdGlvbklnbm9yaW5nTkJTUChMYXp5TGluZUJyZWFrSXRlcmF0b3ImIGxhenlC
cmVha0l0ZXJhdG9yLCBpbnQgcG9zKQotewotICAgIFN0cmluZyBzdHJpbmcgPSBsYXp5QnJlYWtJ
dGVyYXRvci5zdHJpbmcoKTsKLSAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKQotICAgICAgICByZXR1
cm4gbmV4dEJyZWFrYWJsZVBvc2l0aW9uTm9uTG9vc2VseTxMQ2hhciwgTkJTUEJlaGF2aW9yOjpJ
Z25vcmVOQlNQPihsYXp5QnJlYWtJdGVyYXRvciwgc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmlu
Zy5sZW5ndGgoKSwgcG9zKTsKLSAgICByZXR1cm4gbmV4dEJyZWFrYWJsZVBvc2l0aW9uTm9uTG9v
c2VseTxVQ2hhciwgTkJTUEJlaGF2aW9yOjpJZ25vcmVOQlNQPihsYXp5QnJlYWtJdGVyYXRvciwg
c3RyaW5nLmNoYXJhY3RlcnMxNigpLCBzdHJpbmcubGVuZ3RoKCksIHBvcyk7Ci19Ci0KLWlubGlu
ZSBpbnQgbmV4dEJyZWFrYWJsZVBvc2l0aW9uTG9vc2UoTGF6eUxpbmVCcmVha0l0ZXJhdG9yJiBs
YXp5QnJlYWtJdGVyYXRvciwgaW50IHBvcykKLXsKLSAgICBTdHJpbmcgc3RyaW5nID0gbGF6eUJy
ZWFrSXRlcmF0b3Iuc3RyaW5nKCk7Ci0gICAgaWYgKHN0cmluZy5pczhCaXQoKSkKLSAgICAgICAg
cmV0dXJuIG5leHRCcmVha2FibGVQb3NpdGlvbkxvb3NlbHk8TENoYXIsIE5CU1BCZWhhdmlvcjo6
VHJlYXROQlNQQXNCcmVhaz4obGF6eUJyZWFrSXRlcmF0b3IsIHN0cmluZy5jaGFyYWN0ZXJzOCgp
LCBzdHJpbmcubGVuZ3RoKCksIHBvcyk7Ci0gICAgcmV0dXJuIG5leHRCcmVha2FibGVQb3NpdGlv
bkxvb3NlbHk8VUNoYXIsIE5CU1BCZWhhdmlvcjo6VHJlYXROQlNQQXNCcmVhaz4obGF6eUJyZWFr
SXRlcmF0b3IsIHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nLmxlbmd0aCgpLCBwb3MpOwot
fQotCi1pbmxpbmUgaW50IG5leHRCcmVha2FibGVQb3NpdGlvbklnbm9yaW5nTkJTUExvb3NlKExh
enlMaW5lQnJlYWtJdGVyYXRvciYgbGF6eUJyZWFrSXRlcmF0b3IsIGludCBwb3MpCi17Ci0gICAg
U3RyaW5nIHN0cmluZyA9IGxhenlCcmVha0l0ZXJhdG9yLnN0cmluZygpOwotICAgIGlmIChzdHJp
bmcuaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBuZXh0QnJlYWthYmxlUG9zaXRpb25Mb29zZWx5
PExDaGFyLCBOQlNQQmVoYXZpb3I6Oklnbm9yZU5CU1A+KGxhenlCcmVha0l0ZXJhdG9yLCBzdHJp
bmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpLCBwb3MpOwotICAgIHJldHVybiBuZXh0
QnJlYWthYmxlUG9zaXRpb25Mb29zZWx5PFVDaGFyLCBOQlNQQmVoYXZpb3I6Oklnbm9yZU5CU1A+
KGxhenlCcmVha0l0ZXJhdG9yLCBzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0cmluZy5sZW5ndGgo
KSwgcG9zKTsKLX0KLQotaW5saW5lIGJvb2wgaXNCcmVha2FibGUoTGF6eUxpbmVCcmVha0l0ZXJh
dG9yJiBsYXp5QnJlYWtJdGVyYXRvciwgaW50IHBvcywgaW50JiBuZXh0QnJlYWthYmxlLCBib29s
IGJyZWFrTkJTUCwgYm9vbCBpc0xvb3NlTW9kZSwgYm9vbCBrZWVwQWxsV29yZHMpCi17Ci0gICAg
aWYgKHBvcyA8PSBuZXh0QnJlYWthYmxlKQotICAgICAgICByZXR1cm4gcG9zID09IG5leHRCcmVh
a2FibGU7Ci0KLSAgICBpZiAoa2VlcEFsbFdvcmRzKSB7Ci0gICAgICAgIGlmIChicmVha05CU1Ap
Ci0gICAgICAgICAgICBuZXh0QnJlYWthYmxlID0gc3RhdGljX2Nhc3Q8aW50PihuZXh0QnJlYWth
YmxlUG9zaXRpb25LZWVwaW5nQWxsV29yZHMobGF6eUJyZWFrSXRlcmF0b3IsIHBvcykpOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBuZXh0QnJlYWthYmxlID0gc3RhdGljX2Nhc3Q8aW50Pihu
ZXh0QnJlYWthYmxlUG9zaXRpb25LZWVwaW5nQWxsV29yZHNJZ25vcmluZ05CU1AobGF6eUJyZWFr
SXRlcmF0b3IsIHBvcykpOwotICAgIH0gZWxzZSBpZiAoaXNMb29zZU1vZGUpIHsKLSAgICAgICAg
aWYgKGJyZWFrTkJTUCkKLSAgICAgICAgICAgIG5leHRCcmVha2FibGUgPSBuZXh0QnJlYWthYmxl
UG9zaXRpb25Mb29zZShsYXp5QnJlYWtJdGVyYXRvciwgcG9zKTsKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgbmV4dEJyZWFrYWJsZSA9IG5leHRCcmVha2FibGVQb3NpdGlvbklnbm9yaW5nTkJT
UExvb3NlKGxhenlCcmVha0l0ZXJhdG9yLCBwb3MpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlm
IChicmVha05CU1ApCi0gICAgICAgICAgICBuZXh0QnJlYWthYmxlID0gbmV4dEJyZWFrYWJsZVBv
c2l0aW9uKGxhenlCcmVha0l0ZXJhdG9yLCBwb3MpOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBuZXh0QnJlYWthYmxlID0gbmV4dEJyZWFrYWJsZVBvc2l0aW9uSWdub3JpbmdOQlNQKGxhenlC
cmVha0l0ZXJhdG9yLCBwb3MpOwotICAgIH0KLSAgICByZXR1cm4gcG9zID09IG5leHRCcmVha2Fi
bGU7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIGJyZWFrX2xpbmVz
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0JyZWFraW5nQ29u
dGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0LmgK
aW5kZXggNWE3ZGQ3NWMwNjQ1NDdiNGU3ODJmNzMzNDZkOWIwN2ZjNzhhZDZjZC4uY2QxNGI0Zjk4
MDAzZGMyMmNmMjg2YzM1MDg3OTY3YmFjNWI1ZWZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0LmgKQEAgLTI1LDYgKzI1LDcgQEAKICNpZm5k
ZWYgQnJlYWtpbmdDb250ZXh0X2gKICNkZWZpbmUgQnJlYWtpbmdDb250ZXh0X2gKIAorI2luY2x1
ZGUgIkJyZWFrTGluZXMuaCIKICNpbmNsdWRlICJIeXBoZW5hdGlvbi5oIgogI2luY2x1ZGUgIkxp
bmVCcmVha2VyLmgiCiAjaW5jbHVkZSAiTGluZUluZm8uaCIKQEAgLTM4LDcgKzM5LDYgQEAKICNp
bmNsdWRlICJSZW5kZXJSdWJ5UnVuLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHSW5saW5lVGV4dC5o
IgogI2luY2x1ZGUgIlRyYWlsaW5nT2JqZWN0cy5oIgotI2luY2x1ZGUgImJyZWFrX2xpbmVzLmgi
CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmll
dy5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CkBAIC0xNjcsNyAr
MTY3LDcgQEAgcHVibGljOgogICAgICAgICBtX2hhbmdzQXRFbmQgPSBmYWxzZTsKICAgICB9CiAK
LSAgICB2b2lkIGNvbW1pdExpbmVCcmVha0F0Q3VycmVudFdpZHRoKFJlbmRlck9iamVjdCYgb2Jq
ZWN0LCB1bnNpZ25lZCBvZmZzZXQgPSAwLCBpbnQgbmV4dEJyZWFrID0gLTEpCisgICAgdm9pZCBj
b21taXRMaW5lQnJlYWtBdEN1cnJlbnRXaWR0aChSZW5kZXJPYmplY3QmIG9iamVjdCwgdW5zaWdu
ZWQgb2Zmc2V0ID0gMCwgT3B0aW9uYWw8dW5zaWduZWQ+IG5leHRCcmVhayA9IE51bGxvcHQpCiAg
ICAgewogICAgICAgICBtX3dpZHRoLmNvbW1pdCgpOwogICAgICAgICBtX2xpbmVCcmVha0hpc3Rv
cnkubW92ZVRvKCZvYmplY3QsIG9mZnNldCwgbmV4dEJyZWFrKTsKQEAgLTIwNCwxNCArMjA0LDE0
IEBAIHByaXZhdGU6CiAKICAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlcigpIGNvbnN0IHsg
cmV0dXJuIHRoaXMtPmF0KDApLnJlbmRlcmVyKCk7IH0KICAgICAgICAgdW5zaWduZWQgb2Zmc2V0
KCkgY29uc3QgeyByZXR1cm4gdGhpcy0+YXQoMCkub2Zmc2V0KCk7IH0KLSAgICAgICAgaW50IG5l
eHRCcmVha2FibGVQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIHRoaXMtPmF0KDApLm5leHRCcmVh
a2FibGVQb3NpdGlvbigpOyB9CisgICAgICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBuZXh0QnJlYWth
YmxlUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiB0aGlzLT5hdCgwKS5uZXh0QnJlYWthYmxlUG9z
aXRpb24oKTsgfQogICAgICAgICBib29sIGF0VGV4dFBhcmFncmFwaFNlcGFyYXRvcigpIGNvbnN0
IHsgcmV0dXJuIHRoaXMtPmF0KDApLmF0VGV4dFBhcmFncmFwaFNlcGFyYXRvcigpOyB9CiAgICAg
ICAgIFVDaGFyIHByZXZpb3VzSW5TYW1lTm9kZSgpIGNvbnN0IHsgcmV0dXJuIHRoaXMtPmF0KDAp
LnByZXZpb3VzSW5TYW1lTm9kZSgpOyB9CiAgICAgICAgIGNvbnN0IElubGluZUl0ZXJhdG9yJiBn
ZXQoc2l6ZV90IGkpIGNvbnN0IHsgcmV0dXJuIHRoaXMtPmF0KGkpOyB9OwogICAgICAgICBjb25z
dCBJbmxpbmVJdGVyYXRvciYgY3VycmVudCgpIGNvbnN0IHsgcmV0dXJuIGdldCgwKTsgfQogICAg
ICAgICBzaXplX3QgaGlzdG9yeUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIHRoaXMtPnNpemUoKTsg
fQogCi0gICAgICAgIHZvaWQgbW92ZVRvKFJlbmRlck9iamVjdCogb2JqZWN0LCB1bnNpZ25lZCBv
ZmZzZXQsIGludCBuZXh0QnJlYWsgPSAtMSkKKyAgICAgICAgdm9pZCBtb3ZlVG8oUmVuZGVyT2Jq
ZWN0KiBvYmplY3QsIHVuc2lnbmVkIG9mZnNldCwgT3B0aW9uYWw8dW5zaWduZWQ+IG5leHRCcmVh
ayA9IE51bGxvcHQpCiAgICAgICAgIHsKICAgICAgICAgICAgIHB1c2goWyZdKElubGluZUl0ZXJh
dG9yJiBtb2RpZnlNZSkgewogICAgICAgICAgICAgICAgIG1vZGlmeU1lLm1vdmVUbyhvYmplY3Qs
IG9mZnNldCwgbmV4dEJyZWFrKTsKQEAgLTY1MCw3ICs2NTAsNyBAQCBpbmxpbmUgdm9pZCBlbnN1
cmVDaGFyYWN0ZXJHZXRzTGluZUJveChMaW5lV2hpdGVzcGFjZUNvbGxhcHNpbmdTdGF0ZSYgbGlu
ZVdoaXRlcwogICAgIGxpbmVXaGl0ZXNwYWNlQ29sbGFwc2luZ1N0YXRlLnN0b3BJZ25vcmluZ1Nw
YWNlcyhJbmxpbmVJdGVyYXRvcigwLCB0ZXh0UGFyYWdyYXBoU2VwYXJhdG9yLnJlbmRlcmVyKCks
IHRleHRQYXJhZ3JhcGhTZXBhcmF0b3Iub2Zmc2V0KCkpKTsKIH0KIAotaW5saW5lIHZvaWQgdHJ5
SHlwaGVuYXRpbmcoUmVuZGVyVGV4dCYgdGV4dCwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNv
bnN0IEF0b21pY1N0cmluZyYgbG9jYWxlSWRlbnRpZmllciwgdW5zaWduZWQgY29uc2VjdXRpdmVI
eXBoZW5hdGVkTGluZXMsIGludCBjb25zZWN1dGl2ZUh5cGhlbmF0ZWRMaW5lc0xpbWl0LCBpbnQg
bWluaW11bVByZWZpeExpbWl0LCBpbnQgbWluaW11bVN1ZmZpeExpbWl0LCB1bnNpZ25lZCBsYXN0
U3BhY2UsIHVuc2lnbmVkIHBvcywgZmxvYXQgeFBvcywgaW50IGF2YWlsYWJsZVdpZHRoLCBib29s
IGlzRml4ZWRQaXRjaCwgYm9vbCBjb2xsYXBzZVdoaXRlU3BhY2UsIGludCBsYXN0U3BhY2VXb3Jk
U3BhY2luZywgSW5saW5lSXRlcmF0b3ImIGxpbmVCcmVhaywgaW50IG5leHRCcmVha2FibGUsIGJv
b2wmIGh5cGhlbmF0ZWQpCitpbmxpbmUgdm9pZCB0cnlIeXBoZW5hdGluZyhSZW5kZXJUZXh0JiB0
ZXh0LCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGVJ
ZGVudGlmaWVyLCB1bnNpZ25lZCBjb25zZWN1dGl2ZUh5cGhlbmF0ZWRMaW5lcywgaW50IGNvbnNl
Y3V0aXZlSHlwaGVuYXRlZExpbmVzTGltaXQsIGludCBtaW5pbXVtUHJlZml4TGltaXQsIGludCBt
aW5pbXVtU3VmZml4TGltaXQsIHVuc2lnbmVkIGxhc3RTcGFjZSwgdW5zaWduZWQgcG9zLCBmbG9h
dCB4UG9zLCBpbnQgYXZhaWxhYmxlV2lkdGgsIGJvb2wgaXNGaXhlZFBpdGNoLCBib29sIGNvbGxh
cHNlV2hpdGVTcGFjZSwgaW50IGxhc3RTcGFjZVdvcmRTcGFjaW5nLCBJbmxpbmVJdGVyYXRvciYg
bGluZUJyZWFrLCBPcHRpb25hbDx1bnNpZ25lZD4gbmV4dEJyZWFrYWJsZSwgYm9vbCYgaHlwaGVu
YXRlZCkKIHsKICAgICAvLyBNYXAgJ2h5cGhlbmF0ZS1saW1pdC17YmVmb3JlLGFmdGVyfTogYXV0
bzsnIHRvIDIuCiAgICAgdW5zaWduZWQgbWluaW11bVByZWZpeExlbmd0aDsKQEAgLTg1Nyw3ICs4
NTcsNyBAQCBpbmxpbmUgYm9vbCBCcmVha2luZ0NvbnRleHQ6OmhhbmRsZVRleHQoV29yZE1lYXN1
cmVtZW50cyYgd29yZE1lYXN1cmVtZW50cywgYm9vbAogICAgICAgICAgICAgbWlkV29yZEJyZWFr
ID0gbV93aWR0aC5jb21taXR0ZWRXaWR0aCgpICsgd3JhcFcgKyBjaGFyV2lkdGggPiBtX3dpZHRo
LmF2YWlsYWJsZVdpZHRoKCk7CiAgICAgICAgIH0KIAotICAgICAgICBpbnQgbmV4dEJyZWFrYWJs
ZVBvc2l0aW9uID0gbV9jdXJyZW50Lm5leHRCcmVha2FibGVQb3NpdGlvbigpOworICAgICAgICBP
cHRpb25hbDx1bnNpZ25lZD4gbmV4dEJyZWFrYWJsZVBvc2l0aW9uID0gbV9jdXJyZW50Lm5leHRC
cmVha2FibGVQb3NpdGlvbigpOwogICAgICAgICBib29sIGJldHdlZW5Xb3JkcyA9IGMgPT0gJ1xu
JyB8fCAobV9jdXJyV1MgIT0gUFJFICYmICFtX2F0U3RhcnQgJiYgaXNCcmVha2FibGUobV9yZW5k
ZXJUZXh0SW5mby5saW5lQnJlYWtJdGVyYXRvciwgbV9jdXJyZW50Lm9mZnNldCgpLCBuZXh0QnJl
YWthYmxlUG9zaXRpb24sIGJyZWFrTkJTUCwgaXNMb29zZUNKS01vZGUsIGtlZXBBbGxXb3JkcykK
ICAgICAgICAgICAgICYmIChzdHlsZS5oeXBoZW5zKCkgIT0gSHlwaGVuc05vbmUgfHwgKG1fY3Vy
cmVudC5wcmV2aW91c0luU2FtZU5vZGUoKSAhPSBzb2Z0SHlwaGVuKSkpOwogICAgICAgICBtX2N1
cnJlbnQuc2V0TmV4dEJyZWFrYWJsZVBvc2l0aW9uKG5leHRCcmVha2FibGVQb3NpdGlvbik7CkBA
IC05NTksMTQgKzk1OSwxNCBAQCBpbmxpbmUgYm9vbCBCcmVha2luZ0NvbnRleHQ6OmhhbmRsZVRl
eHQoV29yZE1lYXN1cmVtZW50cyYgd29yZE1lYXN1cmVtZW50cywgYm9vbAogICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBsYXN0IGJyZWFr
aW5nIHBvc2l0aW9uIGlzIGEgc29mdC1oeXBoZW4uCiAgICAgICAgICAgICAgICAgICAgIGlmICgh
aHlwaGVuYXRlZCAmJiBzdHlsZS5oeXBoZW5zKCkgIT0gSHlwaGVuc05vbmUpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIE9wdGlvbmFsPGludD4gbGFzdEJyZWFraW5nUG9zaXRvbjsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBsYXN0QnJlYWtpbmdQb3NpdG9u
OwogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlckF0
QnJlYWtpbmdQb3NpdGlvbiA9IG51bGxwdHI7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAo
bV9saW5lQnJlYWtIaXN0b3J5Lm9mZnNldCgpIHx8IG1fbGluZUJyZWFrSGlzdG9yeS5uZXh0QnJl
YWthYmxlUG9zaXRpb24oKSA+IC0xKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9s
aW5lQnJlYWtIaXN0b3J5Lm9mZnNldCgpIHx8IG1fbGluZUJyZWFrSGlzdG9yeS5uZXh0QnJlYWth
YmxlUG9zaXRpb24oKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RCcmVha2lu
Z1Bvc2l0b24gPSBtX2xpbmVCcmVha0hpc3Rvcnkub2Zmc2V0KCk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVuZGVyZXJBdEJyZWFraW5nUG9zaXRpb24gPSBtX2xpbmVCcmVha0hpc3Rv
cnkucmVuZGVyZXIoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobV9jdXJy
ZW50Lm5leHRCcmVha2FibGVQb3NpdGlvbigpID4gLTEgJiYgKHVuc2lnbmVkKW1fY3VycmVudC5u
ZXh0QnJlYWthYmxlUG9zaXRpb24oKSA8PSBtX2N1cnJlbnQub2Zmc2V0KCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobV9jdXJyZW50Lm5leHRCcmVha2FibGVQb3NpdGlv
bigpICYmIG1fY3VycmVudC5uZXh0QnJlYWthYmxlUG9zaXRpb24oKS52YWx1ZSgpIDw9IG1fY3Vy
cmVudC5vZmZzZXQoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIG1pZ2h0
IGp1c3QgYmUgcmlnaHQgYWZ0ZXIgdGhlIHNvZnQtaHlwaGVuCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbGFzdEJyZWFraW5nUG9zaXRvbiA9IG1fY3VycmVudC5uZXh0QnJlYWthYmxlUG9z
aXRpb24oKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0QnJlYWtpbmdQb3NpdG9u
ID0gbV9jdXJyZW50Lm5leHRCcmVha2FibGVQb3NpdGlvbigpLnZhbHVlKCk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVuZGVyZXJBdEJyZWFraW5nUG9zaXRpb24gPSBtX2N1cnJlbnQu
cmVuZGVyZXIoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChsYXN0QnJlYWtpbmdQb3NpdG9uKSB7CkBAIC05NzcsNyArOTc3LDcgQEAgaW5s
aW5lIGJvb2wgQnJlYWtpbmdDb250ZXh0OjpoYW5kbGVUZXh0KFdvcmRNZWFzdXJlbWVudHMmIHdv
cmRNZWFzdXJlbWVudHMsIGJvb2wKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hh
cmFjdGVyQmVmb3JlQnJlYWtpbmdQb3NpdGlvbiA9IGxhc3RDaGFyYWN0ZXJGcm9tUHJldmlvdXNS
ZW5kZXJUZXh0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzPFJlbmRl
clRleHQ+KHJlbmRlcmVyQXRCcmVha2luZ1Bvc2l0aW9uKSkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBhdXRvJiB0ZXh0UmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJU
ZXh0PigqcmVuZGVyZXJBdEJyZWFraW5nUG9zaXRpb24pOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBBU1NFUlQodGV4dFJlbmRlcmVyLnRleHRMZW5ndGgoKSA+ICh1bnNpZ25lZCko
bGFzdEJyZWFraW5nUG9zaXRvbi52YWx1ZSgpIC0gMSkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBBU1NFUlQobGFzdEJyZWFraW5nUG9zaXRvbi52YWx1ZSgpID49IDEgJiYgdGV4
dFJlbmRlcmVyLnRleHRMZW5ndGgoKSA+IChsYXN0QnJlYWtpbmdQb3NpdG9uLnZhbHVlKCkgLSAx
KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlckJlZm9yZUJyZWFr
aW5nUG9zaXRpb24gPSB0ZXh0UmVuZGVyZXIuY2hhcmFjdGVyQXQobGFzdEJyZWFraW5nUG9zaXRv
bi52YWx1ZSgpIC0gMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChjaGFyYWN0ZXJCZWZvcmVCcmVha2luZ1Bvc2l0aW9uKQpA
QCAtMTMxNSw5ICsxMzE1LDkgQEAgaW5saW5lIElubGluZUl0ZXJhdG9yIEJyZWFraW5nQ29udGV4
dDo6b3B0aW1hbExpbmVCcmVha0xvY2F0aW9uRm9yVHJhaWxpbmdXb3JkKCkKICAgICAgICAgcmV0
dXJuIGxpbmVCcmVhazsKICAgICBib29sIGlzTG9vc2VDSktNb2RlID0gbV9yZW5kZXJUZXh0SW5m
by50ZXh0ICE9ICZyZW5kZXJUZXh0ICYmIG1fcmVuZGVyVGV4dEluZm8ubGluZUJyZWFrSXRlcmF0
b3IuaXNMb29zZUNKS01vZGUoKTsKICAgICBib29sIGJyZWFrTkJTUCA9IG1fYXV0b1dyYXAgJiYg
bV9jdXJyZW50U3R5bGUtPm5ic3BNb2RlKCkgPT0gU1BBQ0U7Ci0gICAgaW50IG5leHRCcmVha2Fi
bGVQb3NpdGlvbiA9IGxpbmVCcmVhay5uZXh0QnJlYWthYmxlUG9zaXRpb24oKTsKKyAgICBPcHRp
b25hbDx1bnNpZ25lZD4gbmV4dEJyZWFrYWJsZVBvc2l0aW9uID0gbGluZUJyZWFrLm5leHRCcmVh
a2FibGVQb3NpdGlvbigpOwogICAgIGlzQnJlYWthYmxlKG1fcmVuZGVyVGV4dEluZm8ubGluZUJy
ZWFrSXRlcmF0b3IsIGxpbmVCcmVhay5vZmZzZXQoKSArIDEsIG5leHRCcmVha2FibGVQb3NpdGlv
biwgYnJlYWtOQlNQLCBpc0xvb3NlQ0pLTW9kZSwgbV9jdXJyZW50U3R5bGUtPndvcmRCcmVhaygp
ID09IEtlZXBBbGxXb3JkQnJlYWspOwotICAgIGlmIChuZXh0QnJlYWthYmxlUG9zaXRpb24gPCAw
IHx8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihuZXh0QnJlYWthYmxlUG9zaXRpb24pICE9IHJlbmRl
clRleHQudGV4dExlbmd0aCgpKQorICAgIGlmICghbmV4dEJyZWFrYWJsZVBvc2l0aW9uIHx8IG5l
eHRCcmVha2FibGVQb3NpdGlvbi52YWx1ZSgpICE9IHJlbmRlclRleHQudGV4dExlbmd0aCgpKQog
ICAgICAgICByZXR1cm4gbGluZUJyZWFrOwogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9
IGxpbmVTdHlsZShyZW5kZXJUZXh0LCBtX2xpbmVJbmZvKTsKICAgICBjb25zdCBGb250Q2FzY2Fk
ZSYgZm9udCA9IHN0eWxlLmZvbnRDYXNjYWRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2lvcy9NaXNjL1dlYlVJS2l0U3VwcG9ydC5tbSBiL1NvdXJjZS9XZWJLaXQvaW9zL01pc2MvV2Vi
VUlLaXRTdXBwb3J0Lm1tCmluZGV4IDg5OGIwNTZhYTFiNmJkMzc5YmZiMjMyOGRlM2JmOTg2YjU0
MjhjZGMuLjdhOWFjNzJiMGVlNjQzYjUwNDY3MzUxMTMzOWU0YmQ3NTExYzNkMzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvaW9zL01pc2MvV2ViVUlLaXRTdXBwb3J0Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvaW9zL01pc2MvV2ViVUlLaXRTdXBwb3J0Lm1tCkBAIC0zMywxMiArMzMsMTIgQEAK
ICNpbXBvcnQgIldlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIgogI2ltcG9ydCAiV2ViU3lzdGVtSW50
ZXJmYWNlLmgiCiAjaW1wb3J0ICJXZWJWaWV3UHJpdmF0ZS5oIgorI2ltcG9ydCA8V2ViQ29yZS9C
cmVha0xpbmVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhdGhVdGlsaXRpZXMuaD4KICNpbXBvcnQg
PFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NldHRpbmdzLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaD4KICNpbXBvcnQgPFdl
YkNvcmUvV2ViQ29yZVRocmVhZFN5c3RlbUludGVyZmFjZS5oPgotI2ltcG9ydCA8V2ViQ29yZS9i
cmVha19saW5lcy5oPgogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vZHlsZFNQSS5oPgogI2ltcG9y
dCA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KIApAQCAtODksMTIgKzg5LDEyIEBAIGZs
b2F0IFdlYktpdEdldE1pbmltdW1ab29tRm9udFNpemUodm9pZCkKIAogaW50IFdlYktpdEdldExh
c3RMaW5lQnJlYWtJbkJ1ZmZlcihVQ2hhciAqY2hhcmFjdGVycywgaW50IHBvc2l0aW9uLCBpbnQg
bGVuZ3RoKQogewotICAgIGludCBsYXN0QnJlYWtQb3MgPSBwb3NpdGlvbjsKLSAgICBpbnQgYnJl
YWtQb3MgPSAwOworICAgIHVuc2lnbmVkIGxhc3RCcmVha1BvcyA9IHBvc2l0aW9uOworICAgIHVu
c2lnbmVkIGJyZWFrUG9zID0gMDsKICAgICBMYXp5TGluZUJyZWFrSXRlcmF0b3IgYnJlYWtJdGVy
YXRvcihTdHJpbmcoY2hhcmFjdGVycywgbGVuZ3RoKSk7CiAgICAgd2hpbGUgKChicmVha1BvcyA9
IG5leHRCcmVha2FibGVQb3NpdGlvbihicmVha0l0ZXJhdG9yLCBicmVha1BvcykpIDwgcG9zaXRp
b24pCiAgICAgICAgIGxhc3RCcmVha1BvcyA9IGJyZWFrUG9zKys7Ci0gICAgcmV0dXJuIGxhc3RC
cmVha1BvcyA8IHBvc2l0aW9uID8gKE5TVUludGVnZXIpbGFzdEJyZWFrUG9zIDogSU5UX01BWDsK
KyAgICByZXR1cm4gbGFzdEJyZWFrUG9zIDwgcG9zaXRpb24gPyBzdGF0aWNfY2FzdDxpbnQ+KGxh
c3RCcmVha1BvcykgOiBJTlRfTUFYOwogfQogCiBjb25zdCBjaGFyICpXZWJLaXRQbGF0Zm9ybVN5
c3RlbVJvb3REaXJlY3Rvcnkodm9pZCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286090</attachid>
            <date>2016-08-15 13:47:41 -0700</date>
            <delta_ts>2016-08-15 18:01:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160859-20160815134556.patch</filename>
            <type>text/plain</type>
            <size>72170</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0NDY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjlkZGU5ODEwMmUzNGEy
ODA1YzZlZWFhOTU2Yzk1MDU4NGZkOTNiOC4uNmJhMWMyYjRmOTE4NzgwMTA2MWM0ZDM1NzAwOTNm
YjBkNTkwNzk2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDE2LTA4LTE1ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgTWlncmF0ZSBs
aW5lIGJyZWFraW5nIGNvZGUgZnJvbSBpbnRzIHRvIE9wdGlvbmFsPHVuc2lnbmVkPnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDg1OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByZXZpb3VzbHksIHdl
IHdlcmUgdXNpbmcgLTEgdG8gbWVhbiAiYmVmb3JlIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0cmlu
ZyIuIE5vdywKKyAgICAgICAgTnVsbG9wdCBtZWFucyB0aGF0LgorCisgICAgICAgIFRoaXMgcGF0
Y2ggYWxzbyByZW5hbWVzIGJyZWFrX2xpbmVzLntoLGNwcH0gdG8gQnJlYWtMaW5lcy57aC5jcHB9
LiBUaGlzIGZpbGUgd2FzCisgICAgICAgIG9yaWdpbmFsbHkgbmFtZWQgZHVyaW5nIHRoZSBLSFRN
TCBkYXlzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2
aW9yIGNoYW5nZS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiByZW5kZXJpbmcvQnJlYWtM
aW5lcy5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvYnJlYWtfbGlu
ZXMuY3BwLgorICAgICAgICAqIHJlbmRlcmluZy9CcmVha0xpbmVzLmg6IFJlbmFtZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvYnJlYWtfbGluZXMuaC4KKyAgICAgICAgKFdlYkNvcmU6
OmlzQnJlYWthYmxlU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkQnJlYWtBZnRlcik6
CisgICAgICAgIChXZWJDb3JlOjpuZWVkc0xpbmVCcmVha0l0ZXJhdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6Om5leHRCcmVha2FibGVQb3NpdGlvbk5vbkxvb3NlbHkpOgorICAgICAgICAoV2ViQ29y
ZTo6bmV4dEJyZWFrYWJsZVBvc2l0aW9uTG9vc2VseSk6CisgICAgICAgIChXZWJDb3JlOjpuZXh0
QnJlYWthYmxlUG9zaXRpb25LZWVwaW5nQWxsV29yZHMpOgorICAgICAgICAoV2ViQ29yZTo6bmV4
dEJyZWFrYWJsZVBvc2l0aW9uS2VlcGluZ0FsbFdvcmRzSWdub3JpbmdOQlNQKToKKyAgICAgICAg
KFdlYkNvcmU6Om5leHRCcmVha2FibGVQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpuZXh0
QnJlYWthYmxlUG9zaXRpb25JZ25vcmluZ05CU1ApOgorICAgICAgICAoV2ViQ29yZTo6bmV4dEJy
ZWFrYWJsZVBvc2l0aW9uTG9vc2UpOgorICAgICAgICAoV2ViQ29yZTo6bmV4dEJyZWFrYWJsZVBv
c2l0aW9uSWdub3JpbmdOQlNQTG9vc2UpOgorICAgICAgICAoV2ViQ29yZTo6aXNCcmVha2FibGUp
OgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5oOgorICAgICAgICAoV2ViQ29y
ZTo6SW5saW5lSXRlcmF0b3I6Om1vdmVUbyk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVy
YXRvcjo6bmV4dEJyZWFrYWJsZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0
ZXJhdG9yOjpzZXROZXh0QnJlYWthYmxlUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5s
aW5lSXRlcmF0b3I6OklubGluZUl0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJp
bmcvSW5saW5lVGV4dEJveC5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxX
aWR0aHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJpbmdBbGxJbk9uZS5jcHA6CisgICAg
ICAgICogcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJdGVyYXRvci5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9icmVha19saW5lcy5oOgorICAgICAgICAoV2ViQ29yZTo6aXNC
cmVha2FibGVTcGFjZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpzaG91bGRCcmVha0Fm
dGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om5lZWRzTGluZUJyZWFrSXRlcmF0b3Ip
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6bmV4dEJyZWFrYWJsZVBvc2l0aW9uTm9uTG9v
c2VseSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpuZXh0QnJlYWthYmxlUG9zaXRpb25M
b29zZWx5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om5leHRCcmVha2FibGVQb3NpdGlv
bktlZXBpbmdBbGxXb3Jkcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpuZXh0QnJlYWth
YmxlUG9zaXRpb25LZWVwaW5nQWxsV29yZHNJZ25vcmluZ05CU1ApOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6bmV4dEJyZWFrYWJsZVBvc2l0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6Om5leHRCcmVha2FibGVQb3NpdGlvbklnbm9yaW5nTkJTUCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpuZXh0QnJlYWthYmxlUG9zaXRpb25Mb29zZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpuZXh0QnJlYWthYmxlUG9zaXRpb25JZ25vcmluZ05CU1BMb29zZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjppc0JyZWFrYWJsZSk6IERlbGV0ZWQuCisgICAgICAg
ICogcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpC
cmVha2luZ0NvbnRleHQ6OmNvbW1pdExpbmVCcmVha0F0Q3VycmVudFdpZHRoKToKKyAgICAgICAg
KFdlYkNvcmU6OkJyZWFraW5nQ29udGV4dDo6SW5saW5lSXRlcmF0b3JIaXN0b3J5OjpuZXh0QnJl
YWthYmxlUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QnJlYWtpbmdDb250ZXh0OjpJbmxp
bmVJdGVyYXRvckhpc3Rvcnk6Om1vdmVUbyk6CisgICAgICAgIChXZWJDb3JlOjp0cnlIeXBoZW5h
dGluZyk6CisgICAgICAgIChXZWJDb3JlOjpCcmVha2luZ0NvbnRleHQ6OmhhbmRsZVRleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6QnJlYWtpbmdDb250ZXh0OjpvcHRpbWFsTGluZUJyZWFrTG9jYXRp
b25Gb3JUcmFpbGluZ1dvcmQpOgorCiAyMDE2LTA4LTE1ICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRml4IFdpbkNhaXJvIGJ1aWxkIGFmdGVy
IHIyMDQ0NjYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cKaW5kZXggMTEwYWYwOTkyMGFhZmQwZjU5NDI1M2RmYzAw
N2I2MzRmZDk2M2ZkNy4uNjJiZDI1N2MyOWQ3M2E0ZjBiZjhlYzMwYTZkYTk4ODUwNjAxY2Q2OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvaW9zL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE2LTA4LTE1ICBNeWxlcyBDLiBN
YXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgTWlncmF0ZSBsaW5lIGJy
ZWFraW5nIGNvZGUgZnJvbSBpbnRzIHRvIE9wdGlvbmFsPHVuc2lnbmVkPnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDg1OQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWlzYy9XZWJVSUtpdFN1cHBv
cnQubW06CisgICAgICAgIChXZWJLaXRHZXRMYXN0TGluZUJyZWFrSW5CdWZmZXIpOgorCiAyMDE2
LTA4LTE1ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAg
UmVtb3ZlIHVudXNlZCBpbmNsdWRlcyBvZiB3dGYgaGVhZGVycwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApp
bmRleCA2NjYxYWNkYWYwMjNkNDBjOTUyZTI4MDMyODEyMTAwYjNmZGI0N2YyLi41YTkxMTRiYWUx
NjA1ZjNhN2ZlMjlkNGVlMDAwMjA5YThmZTY1ODYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAt
MjQwOCw2ICsyNDA4LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHJlbmRlcmluZy9BdXRv
VGFibGVMYXlvdXQuY3BwCiAgICAgcmVuZGVyaW5nL0JpZGlSdW4uY3BwCiAgICAgcmVuZGVyaW5n
L0JvcmRlckVkZ2UuY3BwCisgICAgcmVuZGVyaW5nL0JyZWFrTGluZXMuY3BwCiAgICAgcmVuZGVy
aW5nL0NsaXBSZWN0LmNwcAogICAgIHJlbmRlcmluZy9Db3VudGVyTm9kZS5jcHAKICAgICByZW5k
ZXJpbmcvRWxsaXBzaXNCb3guY3BwCkBAIC0yNTI2LDcgKzI1MjcsNiBAQCBzZXQoV2ViQ29yZV9T
T1VSQ0VTCiAgICAgcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5jcHAKICAgICByZW5k
ZXJpbmcvVGV4dFBhaW50U3R5bGUuY3BwCiAgICAgcmVuZGVyaW5nL1RleHRQYWludGVyLmNwcAot
ICAgIHJlbmRlcmluZy9icmVha19saW5lcy5jcHAKIAogICAgIHJlbmRlcmluZy9saW5lL0xpbmVC
cmVha2VyLmNwcAogICAgIHJlbmRlcmluZy9saW5lL0xpbmVJbmZvLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGMwMmExOGU1
YjUzNWMxYmUxNTNkYmE2NzAwOGZlMGUxZGQwYzYwYmUuLjgxZDMwZjBjZDI2YjRkY2UyNGNhMDU5
OWFhYjU5NDMzYzhhODE0NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU2NzEsOCArNTY3MSw3IEBACiAJCUJDRUE0NzhGMDk3
Q0FBQzgwMDk0QzlFNCAvKiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFQTQ3N0MwOTdDQUFDODAw
OTRDOUU0IC8qIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgKi87IH07CiAJCUJDRUE0
NzkwMDk3Q0FBQzgwMDk0QzlFNCAvKiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUE0NzdEMDk3Q0FB
QzgwMDk0QzlFNCAvKiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0VBNDg1MjA5N0Q5MzAyMDA5
NEM5RTQgLyogUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUE0ODEzMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5k
ZXJCbG9ja0xpbmVMYXlvdXQuY3BwICovOyB9OwotCQlCQ0VBNDg1NDA5N0Q5MzAyMDA5NEM5RTQg
LyogYnJlYWtfbGluZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkNFQTQ4MTUwOTdEOTMwMjAwOTRDOUU0IC8qIGJyZWFrX2xpbmVzLmNwcCAqLzsg
fTsKLQkJQkNFQTQ4NTUwOTdEOTMwMjAwOTRDOUU0IC8qIGJyZWFrX2xpbmVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VBNDgxNjA5N0Q5MzAyMDA5
NEM5RTQgLyogYnJlYWtfbGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQlCQ0VBNDg1NDA5N0Q5MzAyMDA5NEM5RTQgLyogQnJlYWtMaW5lcy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VBNDgx
NTA5N0Q5MzAyMDA5NEM5RTQgLyogQnJlYWtMaW5lcy5jcHAgKi87IH07CiAJCUJDRUE0ODU5MDk3
RDkzMDIwMDk0QzlFNCAvKiBJbmxpbmVUZXh0Qm94LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUE0ODFBMDk3RDkzMDIwMDk0QzlFNCAvKiBJbmxp
bmVUZXh0Qm94LmNwcCAqLzsgfTsKIAkJQkNFQTQ4NUEwOTdEOTMwMjAwOTRDOUU0IC8qIElubGlu
ZVRleHRCb3guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDRUE0ODFCMDk3RDkzMDIwMDk0QzlFNCAvKiBJbmxpbmVUZXh0Qm94LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNFQTQ4NUYwOTdEOTMwMjAw
OTRDOUU0IC8qIFJlbmRlckJsb2NrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDRUE0ODIwMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJCbG9jay5j
cHAgKi87IH07CkBAIC01NzkxLDYgKzU3OTAsNyBAQAogCQlDMjgwODMzRjFDNkRDMjZGMDAxNDUx
QjYgLyogSlNGb250RmFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQzI4MDgzM0UxQzZEQzIyQzAwMTQ1MUI2IC8qIEpTRm9udEZhY2UuaCAqLzsgfTsK
IAkJQzI4MDgzNDAxQzZEQzI3NTAwMTQ1MUI2IC8qIEpTRm9udEZhY2UuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI4MDgzM0QxQzZEQzIyQzAwMTQ1
MUI2IC8qIEpTRm9udEZhY2UuY3BwICovOyB9OwogCQlDMjgwODM0MjFDNkRDOTZBMDAxNDUxQjYg
LyogSlNGb250RmFjZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDMjgwODM0MTFDNkRDOTZBMDAxNDUxQjYgLyogSlNGb250RmFjZUN1c3Rv
bS5jcHAgKi87IH07CisJCUMyRTFGNDNGMUQ2MjU0RTEwMDk0NjI1QyAvKiBCcmVha0xpbmVzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VBNDgxNjA5
N0Q5MzAyMDA5NEM5RTQgLyogQnJlYWtMaW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMzMzBBMjIzMTNFQzE5NkIwMDAwQjQ1QiAvKiBDb2xv
ckNob29zZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEMzMzBBMjIxMTNFQzE5NkIwMDAwQjQ1QiAvKiBDb2xvckNob29zZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMzNFRTVDNDE0RkI0OTYxMDAw
MjA5NUEgLyogQmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1dFR5cGUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzMzRUU1QzIxNEZCNDk2MTAwMDIwOTVB
IC8qIEJhc2VDbGlja2FibGVXaXRoS2V5SW5wdXRUeXBlLmNwcCAqLzsgfTsKIAkJQzMzRUU1QzUx
NEZCNDk2MTAwMDIwOTVBIC8qIEJhc2VDbGlja2FibGVXaXRoS2V5SW5wdXRUeXBlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMzNFRTVDMzE0RkI0OTYx
MDAwMjA5NUEgLyogQmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1dFR5cGUuaCAqLzsgfTsKQEAgLTEz
NDkwLDggKzEzNDkwLDggQEAKIAkJQkNFQTQ3ODkwOTdDQUFDODAwOTRDOUU0IC8qIENTU1Byb3Bl
cnR5TmFtZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IENTU1Byb3BlcnR5TmFtZXMuaW47
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRUE0NzhDMDk3Q0FBQzgwMDk0QzlFNCAv
KiBDU1NWYWx1ZUtleXdvcmRzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBDU1NWYWx1ZUtl
eXdvcmRzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0VBNDgxMzA5N0Q5MzAy
MDA5NEM5RTQgLyogUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlCQ0VBNDgxNTA5N0Q5MzAyMDA5NEM5RTQgLyogYnJlYWtfbGlu
ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGJyZWFrX2xpbmVz
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkNFQTQ4MTYwOTdEOTMwMjAwOTRD
OUU0IC8qIGJyZWFrX2xpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBi
cmVha19saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0VBNDgxNTA5N0Q5
MzAyMDA5NEM5RTQgLyogQnJlYWtMaW5lcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQnJlYWtMaW5lcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUJDRUE0ODE2MDk3RDkzMDIwMDk0QzlFNCAvKiBCcmVha0xpbmVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBCcmVha0xpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUJDRUE0ODFBMDk3RDkzMDIwMDk0QzlFNCAvKiBJbmxpbmVUZXh0Qm94LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmxpbmVUZXh0Qm94LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNFQTQ4MUIwOTdEOTMwMjAwOTRDOUU0IC8qIElu
bGluZVRleHRCb3guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElubGluZVRl
eHRCb3guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNFQTQ4MjAwOTdEOTMwMjAw
OTRDOUU0IC8qIFJlbmRlckJsb2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSZW5kZXJCbG9jay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0y
MzYzNCw4ICsyMzYzNCw4IEBACiAJCQkJQkNFNzg5ODUxMTIwRTdBNjAwNjBFQ0U1IC8qIEJpZGlS
dW4uaCAqLywKIAkJCQk1OEFFRTJGMzE4RDRCQ0NGMDAyMkU3RkUgLyogQm9yZGVyRWRnZS5jcHAg
Ki8sCiAJCQkJNTg5NTU2RUMxOEQ0QTQ0MDAwNzY0QjAzIC8qIEJvcmRlckVkZ2UuaCAqLywKLQkJ
CQlCQ0VBNDgxNTA5N0Q5MzAyMDA5NEM5RTQgLyogYnJlYWtfbGluZXMuY3BwICovLAotCQkJCUJD
RUE0ODE2MDk3RDkzMDIwMDk0QzlFNCAvKiBicmVha19saW5lcy5oICovLAorCQkJCUJDRUE0ODE1
MDk3RDkzMDIwMDk0QzlFNCAvKiBCcmVha0xpbmVzLmNwcCAqLywKKwkJCQlCQ0VBNDgxNjA5N0Q5
MzAyMDA5NEM5RTQgLyogQnJlYWtMaW5lcy5oICovLAogCQkJCUZCOTJERjQ5MTVGRUQwODcwMDk5
NDQzMyAvKiBDbGlwUGF0aE9wZXJhdGlvbi5oICovLAogCQkJCTU4MDM3MTVGMUE2NkYwMEEwMEJB
RjUxOSAvKiBDbGlwUmVjdC5jcHAgKi8sCiAJCQkJNTgwMzcxNjAxQTY2RjAwQTAwQkFGNTE5IC8q
IENsaXBSZWN0LmggKi8sCkBAIC0yNDkxOCw3ICsyNDkxOCw2IEBACiAJCQkJNTg5NTU2RUQxOEQ0
QTQ0MDAwNzY0QjAzIC8qIEJvcmRlckVkZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCNURC
MEU4MUI3RUEwMEIyNTk2NSAvKiBCb3JkZXJWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkVE
OEMzN0ExODNCRkY4QzAwOUU1M0JEIC8qIEJveFNoYXBlLmggaW4gSGVhZGVycyAqLywKLQkJCQlC
Q0VBNDg1NTA5N0Q5MzAyMDA5NEM5RTQgLyogYnJlYWtfbGluZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTkzMzA5RERCMDk5RTY0OTIwMDU2RTU4MSAvKiBCcmVha0Jsb2NrcXVvdGVDb21tYW5kLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1OTlFNzU5MDExMDU1QTFGMDBEOTA0RkEgLyogQnJpZGdlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1OUI1OTc3NTExMDg2NTc5MDA3MTU5RTggLyogQnJpZGdlSlND
LmggaW4gSGVhZGVycyAqLywKQEAgLTI2MTE5LDYgKzI2MTE4LDcgQEAKIAkJCQlGREYwOURDOTEz
OTlCNjIyMDA2ODhFNUIgLyogSlNCaXF1YWRGaWx0ZXJOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkyRTJEOTlDRTEwRTJCQkRBMDA0OTYzMzcgLyogSlNCbG9iLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxNERDRjNCMzFCNkJFMjA4MDA2MkQ0QzMgLyogSlNCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5
LmggaW4gSGVhZGVycyAqLywKKwkJCQlDMkUxRjQzRjFENjI1NEUxMDA5NDYyNUMgLyogQnJlYWtM
aW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ0OUUyNEMxMDdENEE4NDAwQjU3OTNGIC8qIEpT
Q2FsbGJhY2tEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NURGMzIzQTA5RDFERTY1MDAwQkUz
MjUgLyogSlNDYW52YXNHcmFkaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjVERjMyM0MwOUQx
REU2NTAwMEJFMzI1IC8qIEpTQ2FudmFzUGF0dGVybi5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODgx
MCw3ICsyODgxMCw3IEBACiAJCQkJOTc2RDZDN0UxMjJCOEEzRDAwMUZEMUY3IC8qIEJsb2JVUkwu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNThBRUUyRjQxOEQ0QkNDRjAwMjJFN0ZFIC8qIEJvcmRl
ckVkZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNkVEOEMzNzkxODNCRkY4QzAwOUU1M0JEIC8q
IEJveFNoYXBlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUJDRUE0ODU0MDk3RDkzMDIwMDk0QzlF
NCAvKiBicmVha19saW5lcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCQ0VBNDg1NDA5N0Q5MzAy
MDA5NEM5RTQgLyogQnJlYWtMaW5lcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzMwOUREQTA5
OUU2NDkyMDA1NkU1ODEgLyogQnJlYWtCbG9ja3F1b3RlQ29tbWFuZC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1OUI1OTc3MzExMDg2NTZCMDA3MTU5RTggLyogQnJpZGdlSlNDLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTdBNDUwMzJGMThEQjcxNzIwMDM3N0IzNCAvKiBCdWZmZXJlZExpbmVSZWFk
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvQnJlYWtMaW5lcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQnJlYWtMaW5lcy5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNWZiNTFkYjM4MGU1OTcxMTI2MDMzMTViNzJhMTBmNjM5YjBhYjFhMAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9CcmVha0xpbmVzLmNw
cApAQCAtMCwwICsxLDEwMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNywgMjAx
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkJyZWFrTGluZXMuaCIKKworI2luY2x1ZGUgPHd0Zi9BU0NJSUNU
eXBlLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi91bmlj
b2RlL0NoYXJhY3Rlck5hbWVzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gUGFjayA4
IGJpdHMgaW50byBvbmUgYnl0ZQorI2RlZmluZSBCKGEsIGIsIGMsIGQsIGUsIGYsIGcsIGgpIFwK
KyAgICAoKGEpIHwgKChiKSA8PCAxKSB8ICgoYykgPDwgMikgfCAoKGQpIDw8IDMpIHwgKChlKSA8
PCA0KSB8ICgoZikgPDwgNSkgfCAoKGcpIDw8IDYpIHwgKChoKSA8PCA3KSkKKworLy8gTGluZSBi
cmVha2luZyB0YWJsZSByb3cgZm9yIGVhY2ggZGlnaXQgKDAtOSkKKyNkZWZpbmUgREkgeyAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwIH0KKworLy8gTGluZSBicmVha2luZyB0YWJs
ZSByb3cgZm9yIGFzY2lpIGxldHRlcnMgKGEteiBBLVopCisjZGVmaW5lIEFMIHsgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCB9CisKKyNkZWZpbmUgRiAweEZGCisKKy8vIExpbmUg
YnJlYWtpbmcgdGFibGUgZm9yIHByaW50YWJsZSBBU0NJSSBjaGFyYWN0ZXJzLiBMaW5lIGJyZWFr
aW5nIG9wcG9ydHVuaXRpZXMgaW4gdGhpcyB0YWJsZSBhcmUgYXMgYmVsb3c6CisvLyAtIGJlZm9y
ZSBvcGVuaW5nIHB1bmN0dWF0aW9ucyBzdWNoIGFzICcoJywgJzwnLCAnWycsICd7JyBhZnRlciBj
ZXJ0YWluIGNoYXJhY3RlcnMgKGNvbXBhdGlibGUgd2l0aCBGaXJlZm94IDMuNik7CisvLyAtIGFm
dGVyICctJyBhbmQgJz8nIChiYWNrd2FyZC1jb21wYXRpYmxlLCBhbmQgY29tcGF0aWJsZSB3aXRo
IEludGVybmV0IEV4cGxvcmVyKS4KKy8vIFBsZWFzZSByZWZlciB0byA8aHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3Njk4PiBmb3IgbGluZSBicmVha2luZyBtYXRyaXhl
cyBvZiBkaWZmZXJlbnQgYnJvd3NlcnMKKy8vIGFuZCB0aGUgSUNVIHN0YW5kYXJkLgorV0VCQ09S
RV9FWFBPUlQgY29uc3QgdW5zaWduZWQgY2hhciBhc2NpaUxpbmVCcmVha1RhYmxlW11bYXNjaWlM
aW5lQnJlYWtUYWJsZUNvbHVtbkNvdW50XSA9IHsKKyAgICAvLyAgISAgIiAgIyAgJCAgJSAgJiAg
JyAgKCAgICAgKSAgKiAgKyAgLCAgLSAgLiAgLyAgMCAgMS04ICAgOSAgOiAgOyAgPCAgPSAgPiAg
PyAgQCAgICAgQS1YICAgICAgWSAgWiAgWyAgXCAgXSAgXiAgXyAgYCAgICAgYS14ICAgICAgeSAg
eiAgeyAgfCAgfSAgfiAgREVMCisgICAgeyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEpLCBCKDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCBCKDAsIDAsIDAsIDEsIDAsIDAsIDAsIDApLCAwLCAw
LCAwLCBCKDAsIDAsIDEsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAs
IDAsIDAsIDApIH0sIC8vICEKKyAgICB7IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSksIEIoMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIEIoMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCksIDAsIDAs
IDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwg
MCwgMCwgMCkgfSwgLy8gIgorICAgIHsgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAxKSwgQigwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgQigwLCAwLCAwLCAxLCAwLCAwLCAwLCAwKSwgMCwgMCwg
MCwgQigwLCAwLCAxLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAxLCAwLCAwLCAw
LCAwLCAwKSB9LCAvLyAjCisgICAgeyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCBCKDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDApLCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAw
LCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDApIH0sIC8vICQKKyAgICB7IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSksIEIoMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCksIDAsIEIoMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCksIDAsIDAsIDAs
IEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwg
MCwgMCkgfSwgLy8gJQorICAgIHsgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAxKSwgQigwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwKSwgMCwgQigwLCAwLCAwLCAxLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwg
QigwLCAwLCAxLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAxLCAwLCAwLCAwLCAw
LCAwKSB9LCAvLyAmCisgICAgeyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCBCKDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDApLCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBC
KDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDApIH0sIC8vICcKKyAgICB7IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIEIoMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCksIDAsIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIo
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCkgfSwgLy8gKAorICAgIHsgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAxKSwgQigwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwKSwgMCwgQigwLCAwLCAwLCAxLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigw
LCAwLCAxLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAxLCAwLCAwLCAwLCAwLCAw
KSB9LCAvLyApCisgICAgeyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEpLCBCKDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDApLCAwLCBCKDAsIDAsIDAsIDEsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAs
IDAsIDEsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAsIDAsIDAsIDAp
IH0sIC8vICoKKyAgICB7IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSksIEIoMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCksIDAsIEIoMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwg
MCwgMSwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCkg
fSwgLy8gKworICAgIHsgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAxKSwgQigwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwKSwgMCwgQigwLCAwLCAwLCAxLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAw
LCAxLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAxLCAwLCAwLCAwLCAwLCAwKSB9
LCAvLyAsCisgICAgeyBCKDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEpLCBCKDEsIDEsIDEsIDEsIDEs
IDAsIDEsIDApLCAwLCBCKDAsIDEsIDEsIDEsIDEsIDEsIDEsIDEpLCBGLCBGLCBGLCBCKDEsIDEs
IDEsIDEsIDEsIDEsIDEsIDEpLCBGLCBGLCBGLCBCKDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEpIH0s
IC8vIC0gTm90ZTogYnJlYWtpbmcgYmVmb3JlICcwJy0nOScgaXMgaGFuZGxlZCBoYXJkLWNvZGVk
IGluIHNob3VsZEJyZWFrQWZ0ZXIoKS4KKyAgICB7IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSks
IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIEIoMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCks
IDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMSwg
MCwgMCwgMCwgMCwgMCkgfSwgLy8gLgorICAgIHsgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwg
QigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwg
MCwgMCwgMCwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwKSB9LCAvLyAvCisgICAgREksICBESSwgIERJLCAgREksICBESSwgIERJLCAg
REksICBESSwgIERJLCAgREksIC8vIDAtOQorICAgIHsgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAx
KSwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgQigwLCAwLCAwLCAxLCAwLCAwLCAwLCAw
KSwgMCwgMCwgMCwgQigwLCAwLCAxLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAx
LCAwLCAwLCAwLCAwLCAwKSB9LCAvLyA6CisgICAgeyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEp
LCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCBCKDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAp
LCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEs
IDAsIDAsIDAsIDAsIDApIH0sIC8vIDsKKyAgICB7IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCks
IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCks
IDAsIDAsIDAsIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCkgfSwgLy8gPAorICAgIHsgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAxKSwg
QigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgQigwLCAwLCAwLCAxLCAwLCAwLCAwLCAwKSwg
MCwgMCwgMCwgQigwLCAwLCAxLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAxLCAw
LCAwLCAwLCAwLCAwKSB9LCAvLyA9CisgICAgeyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEpLCBC
KDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCBCKDAsIDAsIDAsIDEsIDAsIDAsIDAsIDApLCAw
LCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAs
IDAsIDAsIDAsIDApIH0sIC8vID4KKyAgICB7IEIoMCwgMCwgMSwgMSwgMSwgMSwgMCwgMSksIEIo
MCwgMSwgMSwgMCwgMSwgMCwgMCwgMSksIEYsIEIoMSwgMCwgMCwgMSwgMSwgMSwgMCwgMSksIEYs
IEYsIEYsIEIoMSwgMSwgMSwgMSwgMCwgMSwgMSwgMSksIEYsIEYsIEYsIEIoMSwgMSwgMSwgMSwg
MCwgMSwgMSwgMCkgfSwgLy8gPworICAgIHsgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgQigw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwg
MCwgMCwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwKSB9LCAvLyBACisgICAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUws
ICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAg
QUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgLy8gQS1aCisgICAgeyBCKDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDApLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCBCKDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAp
LCAwLCAwLCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApIH0sIC8vIFsKKyAgICB7IEIoMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMSksIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIEIoMCwg
MCwgMCwgMSwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCks
IDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCkgfSwgLy8gJ1wnCisgICAgeyBCKDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDEpLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCBCKDAs
IDAsIDAsIDEsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAsIDAsIDAsIDAp
LCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAsIDAsIDAsIDApIH0sIC8vIF0KKyAgICB7IEIoMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCksIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIEIoMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCks
IDAsIDAsIDAsIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCkgfSwgLy8gXgorICAgIHsgQigwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwKSwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgQigwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwg
MCwgMCwgMCwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSB9LCAvLyBfCisgICAgeyBCKDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDApLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCBCKDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAw
LCAwLCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApIH0sIC8vIGAKKyAgICBBTCwgIEFMLCAg
QUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFM
LCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwg
IEFMLCAvLyBhLXoKKyAgICB7IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIEIoMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCksIDAsIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIo
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCkgfSwgLy8geworICAgIHsgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAxKSwgQigwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwKSwgMCwgQigwLCAwLCAwLCAxLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigw
LCAwLCAxLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAxLCAwLCAwLCAwLCAwLCAw
KSB9LCAvLyB8CisgICAgeyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEpLCBCKDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDApLCAwLCBCKDAsIDAsIDAsIDEsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAs
IDAsIDEsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAsIDAsIDAsIDAp
IH0sIC8vIH0KKyAgICB7IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSksIEIoMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCksIDAsIEIoMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwg
MCwgMSwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCkg
fSwgLy8gfgorICAgIHsgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgQigwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwKSwgMCwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSB9
LCAvLyBERUwKK307CisKKyN1bmRlZiBCCisjdW5kZWYgRgorI3VuZGVmIERJCisjdW5kZWYgQUwK
KworQ09NUElMRV9BU1NFUlQoV1RGX0FSUkFZX0xFTkdUSChhc2NpaUxpbmVCcmVha1RhYmxlKSA9
PSBhc2NpaUxpbmVCcmVha1RhYmxlTGFzdENoYXIgLSBhc2NpaUxpbmVCcmVha1RhYmxlRmlyc3RD
aGFyICsgMSwgVGVzdExpbmVCcmVha1RhYmxlQ29uc2lzdGVuY3kpOworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQnJlYWtMaW5l
cy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0JyZWFrTGluZXMuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
ZGUwYTQ1YzhhYmY1NmNmNDdiNmU3YzJkMDYyZTNkN2E5ZjkyMWY3Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0JyZWFrTGluZXMuaApAQCAtMCwwICsxLDI1OCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNywgMjAxMCwgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgQnJlYWtMaW5lc19oCisjZGVmaW5lIEJy
ZWFrTGluZXNfaAorCisjaW5jbHVkZSA8dW5pY29kZS91YnJrLmg+CisjaW5jbHVkZSA8d3RmL0FT
Q0lJQ1R5cGUuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0
ZXJOYW1lcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBjb25zdCBVQ2hhciBh
c2NpaUxpbmVCcmVha1RhYmxlRmlyc3RDaGFyID0gJyEnOworc3RhdGljIGNvbnN0IFVDaGFyIGFz
Y2lpTGluZUJyZWFrVGFibGVMYXN0Q2hhciA9IDEyNzsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBh
c2NpaUxpbmVCcmVha1RhYmxlQ29sdW1uQ291bnQgPSAoYXNjaWlMaW5lQnJlYWtUYWJsZUxhc3RD
aGFyIC0gYXNjaWlMaW5lQnJlYWtUYWJsZUZpcnN0Q2hhcikgLyA4ICsgMTsKKworV0VCQ09SRV9F
WFBPUlQgZXh0ZXJuIGNvbnN0IHVuc2lnbmVkIGNoYXIgYXNjaWlMaW5lQnJlYWtUYWJsZVtdW2Fz
Y2lpTGluZUJyZWFrVGFibGVDb2x1bW5Db3VudF07CisKK2VudW0gY2xhc3MgTkJTUEJlaGF2aW9y
IHsKKyAgICBJZ25vcmVOQlNQLAorICAgIFRyZWF0TkJTUEFzQnJlYWssCit9OworCit0ZW1wbGF0
ZTxOQlNQQmVoYXZpb3IgbmJzcEJlaGF2aW9yPgorc3RhdGljIGlubGluZSBib29sIGlzQnJlYWth
YmxlU3BhY2UoVUNoYXIgY2hhcmFjdGVyKQoreworICAgIHN3aXRjaCAoY2hhcmFjdGVyKSB7Cisg
ICAgY2FzZSAnICc6CisgICAgY2FzZSAnXG4nOgorICAgIGNhc2UgJ1x0JzoKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgY2FzZSBub0JyZWFrU3BhY2U6CisgICAgICAgIHJldHVybiBuYnNwQmVo
YXZpb3IgPT0gTkJTUEJlaGF2aW9yOjpUcmVhdE5CU1BBc0JyZWFrOworICAgIGRlZmF1bHQ6Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2lubGluZSBib29sIHNob3VsZEJyZWFr
QWZ0ZXIoVUNoYXIgbGFzdENoYXJhY3RlciwgVUNoYXIgY2hhcmFjdGVyLCBVQ2hhciBuZXh0Q2hh
cmFjdGVyKQoreworICAgIC8vIERvbid0IGFsbG93IGxpbmUgYnJlYWtpbmcgYmV0d2VlbiAnLScg
YW5kIGEgZGlnaXQgaWYgdGhlICctJyBtYXkgbWVhbiBhIG1pbnVzIHNpZ24gaW4gdGhlIGNvbnRl
eHQsCisgICAgLy8gd2hpbGUgYWxsb3cgYnJlYWtpbmcgaW4gJ0FCQ0QtMTIzNCcgYW5kICcxMjM0
LTU2NzgnIHdoaWNoIG1heSBiZSBpbiBsb25nIFVSTHMuCisgICAgaWYgKGNoYXJhY3RlciA9PSAn
LScgJiYgaXNBU0NJSURpZ2l0KG5leHRDaGFyYWN0ZXIpKQorICAgICAgICByZXR1cm4gaXNBU0NJ
SUFscGhhbnVtZXJpYyhsYXN0Q2hhcmFjdGVyKTsKKworICAgIC8vIElmIGJvdGggY2ggYW5kIG5l
eHRDaCBhcmUgQVNDSUkgY2hhcmFjdGVycywgdXNlIGEgbG9va3VwIHRhYmxlIGZvciBlbmhhbmNl
ZCBzcGVlZCBhbmQgZm9yIGNvbXBhdGliaWxpdHkKKyAgICAvLyB3aXRoIG90aGVyIGJyb3dzZXJz
IChzZWUgY29tbWVudHMgZm9yIGFzY2lpTGluZUJyZWFrVGFibGUgZm9yIGRldGFpbHMpLgorICAg
IGlmIChjaGFyYWN0ZXIgPj0gYXNjaWlMaW5lQnJlYWtUYWJsZUZpcnN0Q2hhciAmJiBjaGFyYWN0
ZXIgPD0gYXNjaWlMaW5lQnJlYWtUYWJsZUxhc3RDaGFyICYmIG5leHRDaGFyYWN0ZXIgPj0gYXNj
aWlMaW5lQnJlYWtUYWJsZUZpcnN0Q2hhciAmJiBuZXh0Q2hhcmFjdGVyIDw9IGFzY2lpTGluZUJy
ZWFrVGFibGVMYXN0Q2hhcikgeworICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiB0YWJsZVJv
dyA9IGFzY2lpTGluZUJyZWFrVGFibGVbY2hhcmFjdGVyIC0gYXNjaWlMaW5lQnJlYWtUYWJsZUZp
cnN0Q2hhcl07CisgICAgICAgIHVuc2lnbmVkIG5leHRDaGFyYWN0ZXJJbmRleCA9IG5leHRDaGFy
YWN0ZXIgLSBhc2NpaUxpbmVCcmVha1RhYmxlRmlyc3RDaGFyOworICAgICAgICByZXR1cm4gdGFi
bGVSb3dbbmV4dENoYXJhY3RlckluZGV4IC8gOF0gJiAoMSA8PCAobmV4dENoYXJhY3RlckluZGV4
ICUgOCkpOworICAgIH0KKyAgICAvLyBPdGhlcndpc2UgZGVmZXIgdG8gdGhlIFVuaWNvZGUgYWxn
b3JpdGhtIGJ5IHJldHVybmluZyBmYWxzZS4KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3RlbXBs
YXRlPE5CU1BCZWhhdmlvciBuYnNwQmVoYXZpb3I+CitpbmxpbmUgYm9vbCBuZWVkc0xpbmVCcmVh
a0l0ZXJhdG9yKFVDaGFyIGNoYXJhY3RlcikKK3sKKyAgICBpZiAobmJzcEJlaGF2aW9yID09IE5C
U1BCZWhhdmlvcjo6VHJlYXROQlNQQXNCcmVhaykKKyAgICAgICAgcmV0dXJuIGNoYXJhY3RlciA+
IGFzY2lpTGluZUJyZWFrVGFibGVMYXN0Q2hhcjsKKyAgICByZXR1cm4gY2hhcmFjdGVyID4gYXNj
aWlMaW5lQnJlYWtUYWJsZUxhc3RDaGFyICYmIGNoYXJhY3RlciAhPSBub0JyZWFrU3BhY2U7Cit9
CisKKy8vIFdoZW4gaW4gbm9uLWxvb3NlIG1vZGUsIHdlIGNhbiB1c2UgdGhlIEFTQ0lJIHNob3J0
Y3V0IHRhYmxlLgordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwgTkJTUEJlaGF2aW9y
IG5ic3BCZWhhdmlvcj4KK2lubGluZSB1bnNpZ25lZCBuZXh0QnJlYWthYmxlUG9zaXRpb25Ob25M
b29zZWx5KExhenlMaW5lQnJlYWtJdGVyYXRvciYgbGF6eUJyZWFrSXRlcmF0b3IsIGNvbnN0IENo
YXJhY3RlclR5cGUqIHN0cmluZywgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBzdGFydFBvc2l0
aW9uKQoreworICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBuZXh0QnJlYWs7CisKKyAgICBDaGFyYWN0
ZXJUeXBlIGxhc3RMYXN0Q2hhcmFjdGVyID0gc3RhcnRQb3NpdGlvbiA+IDEgPyBzdHJpbmdbc3Rh
cnRQb3NpdGlvbiAtIDJdIDogc3RhdGljX2Nhc3Q8Q2hhcmFjdGVyVHlwZT4obGF6eUJyZWFrSXRl
cmF0b3Iuc2Vjb25kVG9MYXN0Q2hhcmFjdGVyKCkpOworICAgIENoYXJhY3RlclR5cGUgbGFzdENo
YXJhY3RlciA9IHN0YXJ0UG9zaXRpb24gPiAwID8gc3RyaW5nW3N0YXJ0UG9zaXRpb24gLSAxXSA6
IHN0YXRpY19jYXN0PENoYXJhY3RlclR5cGU+KGxhenlCcmVha0l0ZXJhdG9yLmxhc3RDaGFyYWN0
ZXIoKSk7CisgICAgdW5zaWduZWQgcHJpb3JDb250ZXh0TGVuZ3RoID0gbGF6eUJyZWFrSXRlcmF0
b3IucHJpb3JDb250ZXh0TGVuZ3RoKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gc3RhcnRQb3Np
dGlvbjsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIENoYXJhY3RlclR5cGUgY2hhcmFjdGVy
ID0gc3RyaW5nW2ldOworCisgICAgICAgIC8vIE5vbi1sb29zZSBtb2RlLCBzbyB1c2UgQVNDSUkg
c2hvcnRjdXQgKHNob3VsZEJyZWFrQWZ0ZXIpIGlmIG5vdCBicmVha2FibGUgc3BhY2UuCisgICAg
ICAgIGlmIChpc0JyZWFrYWJsZVNwYWNlPG5ic3BCZWhhdmlvcj4oY2hhcmFjdGVyKSB8fCBzaG91
bGRCcmVha0FmdGVyKGxhc3RMYXN0Q2hhcmFjdGVyLCBsYXN0Q2hhcmFjdGVyLCBjaGFyYWN0ZXIp
KQorICAgICAgICAgICAgcmV0dXJuIGk7CisKKyAgICAgICAgLy8gTm9uLWxvb3NlIG1vZGUsIHNv
IGNvbmRpdGlvbmFsbHkgdXNlIGJyZWFrIGl0ZXJhdG9yLgorICAgICAgICBpZiAobmVlZHNMaW5l
QnJlYWtJdGVyYXRvcjxuYnNwQmVoYXZpb3I+KGNoYXJhY3RlcikgfHwgbmVlZHNMaW5lQnJlYWtJ
dGVyYXRvcjxuYnNwQmVoYXZpb3I+KGxhc3RDaGFyYWN0ZXIpKSB7CisgICAgICAgICAgICBpZiAo
IW5leHRCcmVhayB8fCBuZXh0QnJlYWsudmFsdWUoKSA8IGkpIHsKKyAgICAgICAgICAgICAgICAv
LyBEb24ndCBicmVhayBpZiBwb3NpdGlvbmVkIGF0IHN0YXJ0IG9mIHByaW1hcnkgY29udGV4dCBh
bmQgdGhlcmUgaXMgbm8gcHJpb3IgY29udGV4dC4KKyAgICAgICAgICAgICAgICBpZiAoaSB8fCBw
cmlvckNvbnRleHRMZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAgICAgVGV4dEJyZWFrSXRlcmF0
b3IqIGJyZWFrSXRlcmF0b3IgPSBsYXp5QnJlYWtJdGVyYXRvci5nZXQocHJpb3JDb250ZXh0TGVu
Z3RoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGJyZWFrSXRlcmF0b3IpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBjYW5kaWRhdGUgPSB0ZXh0QnJlYWtGb2xsb3dpbmcoYnJlYWtJ
dGVyYXRvciwgaSAtIDEgKyBwcmlvckNvbnRleHRMZW5ndGgpOworICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGNhbmRpZGF0ZSA9PSBVQlJLX0RPTkUpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbmV4dEJyZWFrID0gTnVsbG9wdDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IGNhbmRpZGF0
ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQocmVzdWx0ID49IHByaW9yQ29u
dGV4dExlbmd0aCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dEJyZWFrID0gcmVz
dWx0IC0gcHJpb3JDb250ZXh0TGVuZ3RoOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICAgICAgaWYgKGkgPT0gbmV4dEJyZWFrICYmICFpc0JyZWFrYWJsZVNwYWNlPG5ic3BCZWhh
dmlvcj4obGFzdENoYXJhY3RlcikpCisgICAgICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgICAg
IH0KKworICAgICAgICBsYXN0TGFzdENoYXJhY3RlciA9IGxhc3RDaGFyYWN0ZXI7CisgICAgICAg
IGxhc3RDaGFyYWN0ZXIgPSBjaGFyYWN0ZXI7CisgICAgfQorCisgICAgcmV0dXJuIGxlbmd0aDsK
K30KKworLy8gV2hlbiBpbiBsb29zZSBtb2RlLCB3ZSBjYW4ndCB1c2UgdGhlIEFTQ0lJIHNob3J0
Y3V0IHRhYmxlIHNpbmNlIGxvb3NlIG1vZGUgYWxsb3dzICIkMTAwIiB0byBicmVhayBhZnRlciAn
JCcgaW4gY29udGVudCBtYXJrZWQgYXMgQ0pLLgorLy8gTi5CLiBJdCBzaG91bGQgYmUgcG9zc2li
bGUgdG8gY29tYmluZSB0aGUgZm9sbG93aW5nIHdpdGggdGhlIG5vbi1sb29zZSB2ZXJzaW9uIGFi
b3ZlIGJ5IGFkZGluZyBhIExvb3NlQmVoYXZpb3IgdGVtcGxhdGUgcGFyYW1ldGVyOworLy8gaG93
ZXZlciwgd2hlbiBkb2luZyB0aGlzLCBhIDEwJSBwZXJmb3JtYW5jZSByZWdyZXNzaW9uIGFwcGVh
cmVkIG9uIGNocm9taXVtLXdpbiAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg5MjM1I2MxMTIpLgordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwgTkJTUEJl
aGF2aW9yIG5ic3BCZWhhdmlvcj4KK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbmV4dEJyZWFrYWJs
ZVBvc2l0aW9uTG9vc2VseShMYXp5TGluZUJyZWFrSXRlcmF0b3ImIGxhenlCcmVha0l0ZXJhdG9y
LCBjb25zdCBDaGFyYWN0ZXJUeXBlKiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQg
c3RhcnRQb3NpdGlvbikKK3sKKyAgICBPcHRpb25hbDx1bnNpZ25lZD4gbmV4dEJyZWFrOworCisg
ICAgQ2hhcmFjdGVyVHlwZSBsYXN0Q2hhcmFjdGVyID0gc3RhcnRQb3NpdGlvbiA+IDAgPyBzdHJp
bmdbc3RhcnRQb3NpdGlvbiAtIDFdIDogc3RhdGljX2Nhc3Q8Q2hhcmFjdGVyVHlwZT4obGF6eUJy
ZWFrSXRlcmF0b3IubGFzdENoYXJhY3RlcigpKTsKKyAgICB1bnNpZ25lZCBwcmlvckNvbnRleHRM
ZW5ndGggPSBsYXp5QnJlYWtJdGVyYXRvci5wcmlvckNvbnRleHRMZW5ndGgoKTsKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBzdGFydFBvc2l0aW9uOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAg
Q2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIgPSBzdHJpbmdbaV07CisKKyAgICAgICAgLy8gQWx3YXlz
IGxvb3NlIG1vZGUsIHNvIGRvbid0IHVzZSBBU0NJSSBzaG9ydGN1dCAoc2hvdWxkQnJlYWtBZnRl
cikuCisgICAgICAgIGlmIChpc0JyZWFrYWJsZVNwYWNlPG5ic3BCZWhhdmlvcj4oY2hhcmFjdGVy
KSkKKyAgICAgICAgICAgIHJldHVybiBpOworCisgICAgICAgIC8vIEFsd2F5cyB1c2UgbGluZSBi
cmVhayBpdGVyYXRvciBpbiBsb29zZSBtb2RlLgorICAgICAgICBpZiAoIW5leHRCcmVhayB8fCBu
ZXh0QnJlYWsudmFsdWUoKSA8IGkpIHsKKyAgICAgICAgICAgIC8vIERvbid0IGJyZWFrIGlmIHBv
c2l0aW9uZWQgYXQgc3RhcnQgb2YgcHJpbWFyeSBjb250ZXh0IGFuZCB0aGVyZSBpcyBubyBwcmlv
ciBjb250ZXh0LgorICAgICAgICAgICAgaWYgKGkgfHwgcHJpb3JDb250ZXh0TGVuZ3RoKSB7Cisg
ICAgICAgICAgICAgICAgVGV4dEJyZWFrSXRlcmF0b3IqIGJyZWFrSXRlcmF0b3IgPSBsYXp5QnJl
YWtJdGVyYXRvci5nZXQocHJpb3JDb250ZXh0TGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBpZiAo
YnJlYWtJdGVyYXRvcikgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoaSArIHByaW9yQ29u
dGV4dExlbmd0aCA+PSAxKTsKKyAgICAgICAgICAgICAgICAgICAgaW50IGNhbmRpZGF0ZSA9IHRl
eHRCcmVha0ZvbGxvd2luZyhicmVha0l0ZXJhdG9yLCBpICsgcHJpb3JDb250ZXh0TGVuZ3RoIC0g
MSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjYW5kaWRhdGUgPT0gVUJSS19ET05FKQorICAg
ICAgICAgICAgICAgICAgICAgICAgbmV4dEJyZWFrID0gTnVsbG9wdDsKKyAgICAgICAgICAgICAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBj
YW5kaWRhdGU7CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQocmVzdWx0ID4gcHJpb3JD
b250ZXh0TGVuZ3RoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5leHRCcmVhayA9IHJlc3Vs
dCAtIHByaW9yQ29udGV4dExlbmd0aDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoaSA9PSBuZXh0
QnJlYWsgJiYgIWlzQnJlYWthYmxlU3BhY2U8bmJzcEJlaGF2aW9yPihsYXN0Q2hhcmFjdGVyKSkK
KyAgICAgICAgICAgIHJldHVybiBpOworCisgICAgICAgIGxhc3RDaGFyYWN0ZXIgPSBjaGFyYWN0
ZXI7CisgICAgfQorCisgICAgcmV0dXJuIGxlbmd0aDsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZSwgTkJTUEJlaGF2aW9yIG5ic3BCZWhhdmlvcj4KK2lubGluZSB1bnNpZ25l
ZCBuZXh0QnJlYWthYmxlUG9zaXRpb25LZWVwaW5nQWxsV29yZHMoY29uc3QgQ2hhcmFjdGVyVHlw
ZSogc3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24pCit7Cisg
ICAgZm9yICh1bnNpZ25lZCBpID0gc3RhcnRQb3NpdGlvbjsgaSA8IGxlbmd0aDsgaSsrKSB7Cisg
ICAgICAgIGlmIChpc0JyZWFrYWJsZVNwYWNlPG5ic3BCZWhhdmlvcj4oc3RyaW5nW2ldKSkKKyAg
ICAgICAgICAgIHJldHVybiBpOworICAgIH0KKyAgICByZXR1cm4gbGVuZ3RoOworfQorCitpbmxp
bmUgdW5zaWduZWQgbmV4dEJyZWFrYWJsZVBvc2l0aW9uS2VlcGluZ0FsbFdvcmRzKExhenlMaW5l
QnJlYWtJdGVyYXRvciYgbGF6eUJyZWFrSXRlcmF0b3IsIHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24p
Cit7CisgICAgU3RyaW5nIHN0cmluZyA9IGxhenlCcmVha0l0ZXJhdG9yLnN0cmluZygpOworICAg
IGlmIChzdHJpbmcuaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBuZXh0QnJlYWthYmxlUG9zaXRp
b25LZWVwaW5nQWxsV29yZHM8TENoYXIsIE5CU1BCZWhhdmlvcjo6VHJlYXROQlNQQXNCcmVhaz4o
c3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSwgc3RhcnRQb3NpdGlvbik7Cisg
ICAgcmV0dXJuIG5leHRCcmVha2FibGVQb3NpdGlvbktlZXBpbmdBbGxXb3JkczxVQ2hhciwgTkJT
UEJlaGF2aW9yOjpUcmVhdE5CU1BBc0JyZWFrPihzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0cmlu
Zy5sZW5ndGgoKSwgc3RhcnRQb3NpdGlvbik7Cit9CisKK2lubGluZSB1bnNpZ25lZCBuZXh0QnJl
YWthYmxlUG9zaXRpb25LZWVwaW5nQWxsV29yZHNJZ25vcmluZ05CU1AoTGF6eUxpbmVCcmVha0l0
ZXJhdG9yJiBpdGVyYXRvciwgdW5zaWduZWQgc3RhcnRQb3NpdGlvbikKK3sKKyAgICBTdHJpbmcg
c3RyaW5nID0gaXRlcmF0b3Iuc3RyaW5nKCk7CisgICAgaWYgKHN0cmluZy5pczhCaXQoKSkKKyAg
ICAgICAgcmV0dXJuIG5leHRCcmVha2FibGVQb3NpdGlvbktlZXBpbmdBbGxXb3JkczxMQ2hhciwg
TkJTUEJlaGF2aW9yOjpJZ25vcmVOQlNQPihzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxl
bmd0aCgpLCBzdGFydFBvc2l0aW9uKTsKKyAgICByZXR1cm4gbmV4dEJyZWFrYWJsZVBvc2l0aW9u
S2VlcGluZ0FsbFdvcmRzPFVDaGFyLCBOQlNQQmVoYXZpb3I6Oklnbm9yZU5CU1A+KHN0cmluZy5j
aGFyYWN0ZXJzMTYoKSwgc3RyaW5nLmxlbmd0aCgpLCBzdGFydFBvc2l0aW9uKTsKK30KKworaW5s
aW5lIHVuc2lnbmVkIG5leHRCcmVha2FibGVQb3NpdGlvbihMYXp5TGluZUJyZWFrSXRlcmF0b3Im
IGl0ZXJhdG9yLCB1bnNpZ25lZCBzdGFydFBvc2l0aW9uKQoreworICAgIFN0cmluZyBzdHJpbmcg
PSBpdGVyYXRvci5zdHJpbmcoKTsKKyAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKQorICAgICAgICBy
ZXR1cm4gbmV4dEJyZWFrYWJsZVBvc2l0aW9uTm9uTG9vc2VseTxMQ2hhciwgTkJTUEJlaGF2aW9y
OjpUcmVhdE5CU1BBc0JyZWFrPihpdGVyYXRvciwgc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmlu
Zy5sZW5ndGgoKSwgc3RhcnRQb3NpdGlvbik7CisgICAgcmV0dXJuIG5leHRCcmVha2FibGVQb3Np
dGlvbk5vbkxvb3NlbHk8VUNoYXIsIE5CU1BCZWhhdmlvcjo6VHJlYXROQlNQQXNCcmVhaz4oaXRl
cmF0b3IsIHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nLmxlbmd0aCgpLCBzdGFydFBvc2l0
aW9uKTsKK30KKworaW5saW5lIHVuc2lnbmVkIG5leHRCcmVha2FibGVQb3NpdGlvbklnbm9yaW5n
TkJTUChMYXp5TGluZUJyZWFrSXRlcmF0b3ImIGxhenlCcmVha0l0ZXJhdG9yLCB1bnNpZ25lZCBz
dGFydFBvc2l0aW9uKQoreworICAgIFN0cmluZyBzdHJpbmcgPSBsYXp5QnJlYWtJdGVyYXRvci5z
dHJpbmcoKTsKKyAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKQorICAgICAgICByZXR1cm4gbmV4dEJy
ZWFrYWJsZVBvc2l0aW9uTm9uTG9vc2VseTxMQ2hhciwgTkJTUEJlaGF2aW9yOjpJZ25vcmVOQlNQ
PihsYXp5QnJlYWtJdGVyYXRvciwgc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgo
KSwgc3RhcnRQb3NpdGlvbik7CisgICAgcmV0dXJuIG5leHRCcmVha2FibGVQb3NpdGlvbk5vbkxv
b3NlbHk8VUNoYXIsIE5CU1BCZWhhdmlvcjo6SWdub3JlTkJTUD4obGF6eUJyZWFrSXRlcmF0b3Is
IHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nLmxlbmd0aCgpLCBzdGFydFBvc2l0aW9uKTsK
K30KKworaW5saW5lIHVuc2lnbmVkIG5leHRCcmVha2FibGVQb3NpdGlvbkxvb3NlKExhenlMaW5l
QnJlYWtJdGVyYXRvciYgbGF6eUJyZWFrSXRlcmF0b3IsIHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24p
Cit7CisgICAgU3RyaW5nIHN0cmluZyA9IGxhenlCcmVha0l0ZXJhdG9yLnN0cmluZygpOworICAg
IGlmIChzdHJpbmcuaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBuZXh0QnJlYWthYmxlUG9zaXRp
b25Mb29zZWx5PExDaGFyLCBOQlNQQmVoYXZpb3I6OlRyZWF0TkJTUEFzQnJlYWs+KGxhenlCcmVh
a0l0ZXJhdG9yLCBzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpLCBzdGFydFBv
c2l0aW9uKTsKKyAgICByZXR1cm4gbmV4dEJyZWFrYWJsZVBvc2l0aW9uTG9vc2VseTxVQ2hhciwg
TkJTUEJlaGF2aW9yOjpUcmVhdE5CU1BBc0JyZWFrPihsYXp5QnJlYWtJdGVyYXRvciwgc3RyaW5n
LmNoYXJhY3RlcnMxNigpLCBzdHJpbmcubGVuZ3RoKCksIHN0YXJ0UG9zaXRpb24pOworfQorCitp
bmxpbmUgdW5zaWduZWQgbmV4dEJyZWFrYWJsZVBvc2l0aW9uSWdub3JpbmdOQlNQTG9vc2UoTGF6
eUxpbmVCcmVha0l0ZXJhdG9yJiBsYXp5QnJlYWtJdGVyYXRvciwgdW5zaWduZWQgc3RhcnRQb3Np
dGlvbikKK3sKKyAgICBTdHJpbmcgc3RyaW5nID0gbGF6eUJyZWFrSXRlcmF0b3Iuc3RyaW5nKCk7
CisgICAgaWYgKHN0cmluZy5pczhCaXQoKSkKKyAgICAgICAgcmV0dXJuIG5leHRCcmVha2FibGVQ
b3NpdGlvbkxvb3NlbHk8TENoYXIsIE5CU1BCZWhhdmlvcjo6SWdub3JlTkJTUD4obGF6eUJyZWFr
SXRlcmF0b3IsIHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCksIHN0YXJ0UG9z
aXRpb24pOworICAgIHJldHVybiBuZXh0QnJlYWthYmxlUG9zaXRpb25Mb29zZWx5PFVDaGFyLCBO
QlNQQmVoYXZpb3I6Oklnbm9yZU5CU1A+KGxhenlCcmVha0l0ZXJhdG9yLCBzdHJpbmcuY2hhcmFj
dGVyczE2KCksIHN0cmluZy5sZW5ndGgoKSwgc3RhcnRQb3NpdGlvbik7Cit9CisKK2lubGluZSBi
b29sIGlzQnJlYWthYmxlKExhenlMaW5lQnJlYWtJdGVyYXRvciYgbGF6eUJyZWFrSXRlcmF0b3Is
IHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24sIE9wdGlvbmFsPHVuc2lnbmVkPiYgbmV4dEJyZWFrYWJs
ZSwgYm9vbCBicmVha05CU1AsIGJvb2wgaXNMb29zZU1vZGUsIGJvb2wga2VlcEFsbFdvcmRzKQor
eworICAgIGlmIChuZXh0QnJlYWthYmxlICYmIG5leHRCcmVha2FibGUudmFsdWUoKSA+PSBzdGFy
dFBvc2l0aW9uKQorICAgICAgICByZXR1cm4gc3RhcnRQb3NpdGlvbiA9PSBuZXh0QnJlYWthYmxl
OworCisgICAgaWYgKGtlZXBBbGxXb3JkcykgeworICAgICAgICBpZiAoYnJlYWtOQlNQKQorICAg
ICAgICAgICAgbmV4dEJyZWFrYWJsZSA9IG5leHRCcmVha2FibGVQb3NpdGlvbktlZXBpbmdBbGxX
b3JkcyhsYXp5QnJlYWtJdGVyYXRvciwgc3RhcnRQb3NpdGlvbik7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIG5leHRCcmVha2FibGUgPSBuZXh0QnJlYWthYmxlUG9zaXRpb25LZWVwaW5nQWxs
V29yZHNJZ25vcmluZ05CU1AobGF6eUJyZWFrSXRlcmF0b3IsIHN0YXJ0UG9zaXRpb24pOworICAg
IH0gZWxzZSBpZiAoaXNMb29zZU1vZGUpIHsKKyAgICAgICAgaWYgKGJyZWFrTkJTUCkKKyAgICAg
ICAgICAgIG5leHRCcmVha2FibGUgPSBuZXh0QnJlYWthYmxlUG9zaXRpb25Mb29zZShsYXp5QnJl
YWtJdGVyYXRvciwgc3RhcnRQb3NpdGlvbik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG5l
eHRCcmVha2FibGUgPSBuZXh0QnJlYWthYmxlUG9zaXRpb25JZ25vcmluZ05CU1BMb29zZShsYXp5
QnJlYWtJdGVyYXRvciwgc3RhcnRQb3NpdGlvbik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYg
KGJyZWFrTkJTUCkKKyAgICAgICAgICAgIG5leHRCcmVha2FibGUgPSBuZXh0QnJlYWthYmxlUG9z
aXRpb24obGF6eUJyZWFrSXRlcmF0b3IsIHN0YXJ0UG9zaXRpb24pOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBuZXh0QnJlYWthYmxlID0gbmV4dEJyZWFrYWJsZVBvc2l0aW9uSWdub3JpbmdO
QlNQKGxhenlCcmVha0l0ZXJhdG9yLCBzdGFydFBvc2l0aW9uKTsKKyAgICB9CisgICAgcmV0dXJu
IHN0YXJ0UG9zaXRpb24gPT0gbmV4dEJyZWFrYWJsZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gQnJlYWtMaW5lc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9J
bmxpbmVJdGVyYXRvci5oCmluZGV4IDJlNTI5MWFkZWZkNmQxNjNhMDIxYWNhZGUwMGRhNDAwNzFm
MGE0NTEuLjNhYTU0NWM4M2RhYzc5OGViMjkyZTViZjc1MjlhZjZkODEwNWY2MWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5oCkBAIC01MywxOCArNTMsMTIgQEAg
c3RydWN0IEJpZGlJc29sYXRlZFJ1biB7CiBjbGFzcyBJbmxpbmVJdGVyYXRvciB7CiBwdWJsaWM6
CiAgICAgSW5saW5lSXRlcmF0b3IoKQotICAgICAgICA6IG1fcm9vdChudWxscHRyKQotICAgICAg
ICAsIG1fcmVuZGVyZXIobnVsbHB0cikKLSAgICAgICAgLCBtX25leHRCcmVha2FibGVQb3NpdGlv
bigtMSkKLSAgICAgICAgLCBtX3BvcygwKQotICAgICAgICAsIG1fcmVmZXJzVG9FbmRPZlByZXZp
b3VzTm9kZShmYWxzZSkKICAgICB7CiAgICAgfQogCiAgICAgSW5saW5lSXRlcmF0b3IoUmVuZGVy
RWxlbWVudCogcm9vdCwgUmVuZGVyT2JqZWN0KiBvLCB1bnNpZ25lZCBwKQogICAgICAgICA6IG1f
cm9vdChyb290KQogICAgICAgICAsIG1fcmVuZGVyZXIobykKLSAgICAgICAgLCBtX25leHRCcmVh
a2FibGVQb3NpdGlvbigtMSkKICAgICAgICAgLCBtX3BvcyhwKQogICAgICAgICAsIG1fcmVmZXJz
VG9FbmRPZlByZXZpb3VzTm9kZShmYWxzZSkKICAgICB7CkBAIC03Nyw3ICs3MSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgbW92ZVRvKG9iamVjdCwgMCk7CiAgICAgfQogCi0gICAgdm9pZCBtb3ZlVG8o
UmVuZGVyT2JqZWN0KiBvYmplY3QsIHVuc2lnbmVkIG9mZnNldCwgaW50IG5leHRCcmVhayA9IC0x
KQorICAgIHZvaWQgbW92ZVRvKFJlbmRlck9iamVjdCogb2JqZWN0LCB1bnNpZ25lZCBvZmZzZXQs
IE9wdGlvbmFsPHVuc2lnbmVkPiBuZXh0QnJlYWsgPSBOdWxsb3B0KQogICAgIHsKICAgICAgICAg
c2V0UmVuZGVyZXIob2JqZWN0KTsKICAgICAgICAgc2V0T2Zmc2V0KG9mZnNldCk7CkBAIC04OSw4
ICs4Myw4IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBt
X3BvczsgfQogICAgIHZvaWQgc2V0T2Zmc2V0KHVuc2lnbmVkIHBvc2l0aW9uKTsKICAgICBSZW5k
ZXJFbGVtZW50KiByb290KCkgY29uc3QgeyByZXR1cm4gbV9yb290OyB9Ci0gICAgaW50IG5leHRC
cmVha2FibGVQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbmV4dEJyZWFrYWJsZVBvc2l0aW9u
OyB9Ci0gICAgdm9pZCBzZXROZXh0QnJlYWthYmxlUG9zaXRpb24oaW50IHBvc2l0aW9uKSB7IG1f
bmV4dEJyZWFrYWJsZVBvc2l0aW9uID0gcG9zaXRpb247IH0KKyAgICBPcHRpb25hbDx1bnNpZ25l
ZD4gbmV4dEJyZWFrYWJsZVBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9uZXh0QnJlYWthYmxl
UG9zaXRpb247IH0KKyAgICB2b2lkIHNldE5leHRCcmVha2FibGVQb3NpdGlvbihPcHRpb25hbDx1
bnNpZ25lZD4gcG9zaXRpb24pIHsgbV9uZXh0QnJlYWthYmxlUG9zaXRpb24gPSBwb3NpdGlvbjsg
fQogICAgIGJvb2wgcmVmZXJzVG9FbmRPZlByZXZpb3VzTm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVmZXJzVG9FbmRPZlByZXZpb3VzTm9kZTsgfQogICAgIHZvaWQgc2V0UmVmZXJzVG9FbmRPZlBy
ZXZpb3VzTm9kZSgpOwogCkBAIC0xMTgsMTggKzExMiwxOCBAQCBwcml2YXRlOgogCiAgICAgVUNo
YXJEaXJlY3Rpb24gc3Vycm9nYXRlVGV4dERpcmVjdGlvbihVQ2hhciBjdXJyZW50Q29kZVVuaXQp
IGNvbnN0OwogCi0gICAgUmVuZGVyRWxlbWVudCogbV9yb290OwotICAgIFJlbmRlck9iamVjdCog
bV9yZW5kZXJlcjsKKyAgICBSZW5kZXJFbGVtZW50KiBtX3Jvb3QgeyBudWxscHRyIH07CisgICAg
UmVuZGVyT2JqZWN0KiBtX3JlbmRlcmVyIHsgbnVsbHB0ciB9OwogCi0gICAgaW50IG1fbmV4dEJy
ZWFrYWJsZVBvc2l0aW9uOwotICAgIHVuc2lnbmVkIG1fcG9zOworICAgIE9wdGlvbmFsPHVuc2ln
bmVkPiBtX25leHRCcmVha2FibGVQb3NpdGlvbjsKKyAgICB1bnNpZ25lZCBtX3BvcyB7IDAgfTsK
IAogICAgIC8vIFRoZXJlIGFyZSBhIGNvdXBsZSBwbGFjZXMgd2hlcmUgd2Ugd2FudCB0byBkZWNy
ZW1lbnQgYW4gSW5saW5lSXRlcmF0b3IuCiAgICAgLy8gVXN1YWxseSB0aGlzIHRha2UgdGhlIGZv
cm0gb2YgZGVjcmVtZW50aW5nIG1fcG9zOyBob3dldmVyLCBtX3BvcyBtaWdodCBiZSAwLgogICAg
IC8vIEhvd2V2ZXIsIHdlIHNob3VsZG4ndCBldmVyIG5lZWQgdG8gZGVjcmVtZW50IGFuIElubGlu
ZUl0ZXJhdG9yIG1vcmUgdGhhbgogICAgIC8vIG9uY2UsIHNvIHJhdGhlciB0aGFuIGltcGxlbWVu
dGluZyBhIGRlY3JlbWVudCgpIGZ1bmN0aW9uIHdoaWNoIHRyYXZlcnNlcwogICAgIC8vIG5vZGVz
LCB3ZSBjYW4gc2ltcGx5IGtlZXAgdHJhY2sgb2YgdGhpcyBzdGF0ZSBhbmQgaGFuZGxlIGl0Lgot
ICAgIGJvb2wgbV9yZWZlcnNUb0VuZE9mUHJldmlvdXNOb2RlOworICAgIGJvb2wgbV9yZWZlcnNU
b0VuZE9mUHJldmlvdXNOb2RlIHsgZmFsc2UgfTsKIH07CiAKIGlubGluZSBib29sIG9wZXJhdG9y
PT0oY29uc3QgSW5saW5lSXRlcmF0b3ImIGl0MSwgY29uc3QgSW5saW5lSXRlcmF0b3ImIGl0MikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAppbmRleCBiOGE1YTUy
ZmVkNGY0M2ZlMmE1ODBiODc2ZGY3ZmI5ZDA4ZWYyZmYyLi5lNjMyYmRhMTg0OTM1NmUyM2M4YTcw
YmIxNWNmOGE4MDcxMWQxZjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lVGV4dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRl
eHRCb3guY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiSW5saW5lVGV4dEJveC5oIgogCisjaW5jbHVkZSAiQnJlYWtMaW5lcy5oIgogI2luY2x1ZGUg
IkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIkRhc2hBcnJh
eS5oIgpAQCAtNTAsNyArNTEsNiBAQAogI2luY2x1ZGUgIlRleHREZWNvcmF0aW9uUGFpbnRlci5o
IgogI2luY2x1ZGUgIlRleHRQYWludFN0eWxlLmgiCiAjaW5jbHVkZSAiVGV4dFBhaW50ZXIuaCIK
LSNpbmNsdWRlICJicmVha19saW5lcy5oIgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5j
cHAKaW5kZXggZDNmYmU3Yzg1OTMxNzlhOTk1MDRkYjUwMWRmZjE2MjcwNWM3NzkzYS4uYWJlYmZm
MGJkYzk1OTk5MWEwMGMwYWRiMjBmM2UwZGExOThkZTU1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIlJlbmRlclRl
eHQuaCIKIAogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKKyNpbmNsdWRlICJCcmVha0xpbmVz
LmgiCiAjaW5jbHVkZSAiQnJlYWtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiQ2hhcmFjdGVyUHJv
cGVydGllcy5oIgogI2luY2x1ZGUgIkVsbGlwc2lzQm94LmgiCkBAIC00Niw3ICs0Nyw2IEBACiAj
aW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KICNpbmNsdWRlICJUZXh0UmVz
b3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVBvc2l0aW9uLmgiCi0jaW5jbHVkZSAi
YnJlYWtfbGluZXMuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWls
ZGVyLmg+CkBAIC03OTEsMTUgKzc5MSwxNSBAQCB2b2lkIFJlbmRlclRleHQ6OmNvbXB1dGVQcmVm
ZXJyZWRMb2dpY2FsV2lkdGhzKGZsb2F0IGxlYWRXaWR0aCwgSGFzaFNldDxjb25zdCBGbwogICAg
IGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IHRoaXMtPnN0eWxlKCk7CiAgICAgY29uc3QgRm9u
dENhc2NhZGUmIGZvbnQgPSBzdHlsZS5mb250Q2FzY2FkZSgpOyAvLyBGSVhNRTogVGhpcyBpZ25v
cmVzIGZpcnN0LWxpbmUuCiAgICAgZmxvYXQgd29yZFNwYWNpbmcgPSBmb250LndvcmRTcGFjaW5n
KCk7Ci0gICAgaW50IGxlbiA9IHRleHRMZW5ndGgoKTsKKyAgICB1bnNpZ25lZCBsZW4gPSB0ZXh0
TGVuZ3RoKCk7CiAgICAgTGF6eUxpbmVCcmVha0l0ZXJhdG9yIGJyZWFrSXRlcmF0b3IobV90ZXh0
LCBzdHlsZS5sb2NhbGUoKSwgbWFwTGluZUJyZWFrVG9JdGVyYXRvck1vZGUoc3R5bGUubGluZUJy
ZWFrKCkpKTsKICAgICBib29sIG5lZWRzV29yZFNwYWNpbmcgPSBmYWxzZTsKICAgICBib29sIGln
bm9yaW5nU3BhY2VzID0gZmFsc2U7CiAgICAgYm9vbCBpc1NwYWNlID0gZmFsc2U7CiAgICAgYm9v
bCBmaXJzdFdvcmQgPSB0cnVlOwogICAgIGJvb2wgZmlyc3RMaW5lID0gdHJ1ZTsKLSAgICBpbnQg
bmV4dEJyZWFrYWJsZSA9IC0xOwotICAgIGludCBsYXN0V29yZEJvdW5kYXJ5ID0gMDsKKyAgICBP
cHRpb25hbDx1bnNpZ25lZD4gbmV4dEJyZWFrYWJsZTsKKyAgICB1bnNpZ25lZCBsYXN0V29yZEJv
dW5kYXJ5ID0gMDsKIAogICAgIC8vIE5vbi16ZXJvIG9ubHkgd2hlbiBrZXJuaW5nIGlzIGVuYWJs
ZWQsIGluIHdoaWNoIGNhc2Ugd2UgbWVhc3VyZSB3b3JkcyB3aXRoIHRoZWlyIHRyYWlsaW5nCiAg
ICAgLy8gc3BhY2UsIHRoZW4gc3VidHJhY3QgaXRzIHdpZHRoLgpAQCAtODMzLDcgKzgzMyw3IEBA
IHZvaWQgUmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoZmxvYXQgbGVh
ZFdpZHRoLCBIYXNoU2V0PGNvbnN0IEZvCiAgICAgYm9vbCBrZWVwQWxsV29yZHMgPSBzdHlsZS53
b3JkQnJlYWsoKSA9PSBLZWVwQWxsV29yZEJyZWFrOwogICAgIGJvb2wgaXNMb29zZUNKS01vZGUg
PSBicmVha0l0ZXJhdG9yLmlzTG9vc2VDSktNb2RlKCk7CiAKLSAgICBmb3IgKGludCBpID0gMDsg
aSA8IGxlbjsgaSsrKSB7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7
CiAgICAgICAgIFVDaGFyIGMgPSB1bmNoZWNrZWRDaGFyYWN0ZXJBdChpKTsKIAogICAgICAgICBi
b29sIHByZXZpb3VzQ2hhcmFjdGVySXNTcGFjZSA9IGlzU3BhY2U7CkBAIC04NjksNiArODY5LDcg
QEAgdm9pZCBSZW5kZXJUZXh0Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyhmbG9hdCBs
ZWFkV2lkdGgsIEhhc2hTZXQ8Y29uc3QgRm8KICAgICAgICAgICAgIGxhc3RXb3JkQm91bmRhcnkr
KzsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9IGVsc2UgaWYgKGMgPT0gc29mdEh5
cGhlbiAmJiBzdHlsZS5oeXBoZW5zKCkgIT0gSHlwaGVuc05vbmUpIHsKKyAgICAgICAgICAgIEFT
U0VSVChpID49IGxhc3RXb3JkQm91bmRhcnkpOwogICAgICAgICAgICAgY3Vyck1heFdpZHRoICs9
IHdpZHRoRnJvbUNhY2hlKGZvbnQsIGxhc3RXb3JkQm91bmRhcnksIGkgLSBsYXN0V29yZEJvdW5k
YXJ5LCBsZWFkV2lkdGggKyBjdXJyTWF4V2lkdGgsICZmYWxsYmFja0ZvbnRzLCAmZ2x5cGhPdmVy
Zmxvdywgc3R5bGUpOwogICAgICAgICAgICAgaWYgKCFmaXJzdEdseXBoTGVmdE92ZXJmbG93KQog
ICAgICAgICAgICAgICAgIGZpcnN0R2x5cGhMZWZ0T3ZlcmZsb3cgPSBnbHlwaE92ZXJmbG93Lmxl
ZnQ7CkBAIC04NzgsNyArODc5LDcgQEAgdm9pZCBSZW5kZXJUZXh0Ojpjb21wdXRlUHJlZmVycmVk
TG9naWNhbFdpZHRocyhmbG9hdCBsZWFkV2lkdGgsIEhhc2hTZXQ8Y29uc3QgRm8KIAogICAgICAg
ICBib29sIGhhc0JyZWFrID0gYnJlYWtBbGwgfHwgaXNCcmVha2FibGUoYnJlYWtJdGVyYXRvciwg
aSwgbmV4dEJyZWFrYWJsZSwgYnJlYWtOQlNQLCBpc0xvb3NlQ0pLTW9kZSwga2VlcEFsbFdvcmRz
KTsKICAgICAgICAgYm9vbCBiZXR3ZWVuV29yZHMgPSB0cnVlOwotICAgICAgICBpbnQgaiA9IGk7
CisgICAgICAgIHVuc2lnbmVkIGogPSBpOwogICAgICAgICB3aGlsZSAoYyAhPSAnXG4nICYmICFp
c1NwYWNlQWNjb3JkaW5nVG9TdHlsZShjLCBzdHlsZSkgJiYgYyAhPSAnXHQnICYmIChjICE9IHNv
ZnRIeXBoZW4gfHwgc3R5bGUuaHlwaGVucygpID09IEh5cGhlbnNOb25lKSkgewogICAgICAgICAg
ICAgaisrOwogICAgICAgICAgICAgaWYgKGogPT0gbGVuKQpAQCAtODkyLDcgKzg5Myw3IEBAIHZv
aWQgUmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoZmxvYXQgbGVhZFdp
ZHRoLCBIYXNoU2V0PGNvbnN0IEZvCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAg
ICBpbnQgd29yZExlbiA9IGogLSBpOworICAgICAgICB1bnNpZ25lZCB3b3JkTGVuID0gaiAtIGk7
CiAgICAgICAgIGlmICh3b3JkTGVuKSB7CiAgICAgICAgICAgICBmbG9hdCBjdXJyTWluV2lkdGgg
PSAwOwogICAgICAgICAgICAgYm9vbCBpc1NwYWNlID0gKGogPCBsZW4pICYmIGlzU3BhY2VBY2Nv
cmRpbmdUb1N0eWxlKGMsIHN0eWxlKTsKQEAgLTkzNiw4ICs5MzcsMTAgQEAgdm9pZCBSZW5kZXJU
ZXh0Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyhmbG9hdCBsZWFkV2lkdGgsIEhhc2hT
ZXQ8Y29uc3QgRm8KICAgICAgICAgICAgIGlmIChiZXR3ZWVuV29yZHMpIHsKICAgICAgICAgICAg
ICAgICBpZiAobGFzdFdvcmRCb3VuZGFyeSA9PSBpKQogICAgICAgICAgICAgICAgICAgICBjdXJy
TWF4V2lkdGggKz0gdzsKLSAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChqID49IGxhc3RXb3JkQm91bmRhcnkpOwog
ICAgICAgICAgICAgICAgICAgICBjdXJyTWF4V2lkdGggKz0gd2lkdGhGcm9tQ2FjaGUoZm9udCwg
bGFzdFdvcmRCb3VuZGFyeSwgaiAtIGxhc3RXb3JkQm91bmRhcnksIGxlYWRXaWR0aCArIGN1cnJN
YXhXaWR0aCwgJmZhbGxiYWNrRm9udHMsICZnbHlwaE92ZXJmbG93LCBzdHlsZSk7CisgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIGxhc3RXb3JkQm91bmRhcnkgPSBqOwogICAgICAg
ICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyaW5n
QWxsSW5PbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcmluZ0FsbEluT25l
LmNwcAppbmRleCA4ZjNiYWU4MmI2N2YyYzQ0YTRkYzBiZjYzMzI4MDU5MjhkNTQwMjg0Li4yZTk2
NDQ2ZWYyNjcwNDY2ZGJhZGYwZTRkOTMyMTRmYjIyZTYwZmMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyaW5nQWxsSW5PbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJpbmdBbGxJbk9uZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNp
bmNsdWRlICJBdXRvVGFibGVMYXlvdXQuY3BwIgogI2luY2x1ZGUgIkJpZGlSdW4uY3BwIgogI2lu
Y2x1ZGUgIkJvcmRlckVkZ2UuY3BwIgorI2luY2x1ZGUgIkJyZWFrTGluZXMuY3BwIgogI2luY2x1
ZGUgIkNsaXBSZWN0LmNwcCIKICNpbmNsdWRlICJDb3VudGVyTm9kZS5jcHAiCiAjaW5jbHVkZSAi
RWxsaXBzaXNCb3guY3BwIgpAQCAtMTQ5LDQgKzE1MCwzIEBACiAjaW5jbHVkZSAiVGV4dERlY29y
YXRpb25QYWludGVyLmNwcCIKICNpbmNsdWRlICJUZXh0UGFpbnRTdHlsZS5jcHAiCiAjaW5jbHVk
ZSAiVGV4dFBhaW50ZXIuY3BwIgotI2luY2x1ZGUgImJyZWFrX2xpbmVzLmNwcCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0VGV4dEZyYWdtZW50
SXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0VGV4
dEZyYWdtZW50SXRlcmF0b3IuaAppbmRleCAxMDc3YmNiYmYxNjA5NTU0YmNlYmI3NzQ1OGYyODA4
NWZmNjI2YWNlLi5iYWZjZWIxZTFlMDEyZWMzNGUxM2YxZTIyZjhiMjFmMmU4NDIyNzlhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFRleHRGcmFn
bWVudEl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVM
YXlvdXRUZXh0RnJhZ21lbnRJdGVyYXRvci5oCkBAIC0yNiwxMCArMjYsMTAgQEAKICNpZm5kZWYg
U2ltcGxlTGluZUxheW91dFRleHRGcmFnbWVudEl0ZXJhdG9yX2gKICNkZWZpbmUgU2ltcGxlTGlu
ZUxheW91dFRleHRGcmFnbWVudEl0ZXJhdG9yX2gKIAorI2luY2x1ZGUgIkJyZWFrTGluZXMuaCIK
ICNpbmNsdWRlICJSZW5kZXJMaW5lQnJlYWsuaCIKICNpbmNsdWRlICJTaW1wbGVMaW5lTGF5b3V0
Rmxvd0NvbnRlbnRzLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4K
LSNpbmNsdWRlICJicmVha19saW5lcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9icmVha19saW5lcy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvYnJlYWtfbGluZXMuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBlNGI5NTM2ZmQxYmVkZjFjZTM2M2Q2NjAxMWQ1MTIzNTkwZWY4MTA4Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9icmVha19saW5lcy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDAgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNywgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgImJy
ZWFrX2xpbmVzLmgiCi0KLSNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgotI2luY2x1ZGUgPHd0
Zi9TdGRMaWJFeHRyYXMuaD4KLSNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIFBhY2sgOCBiaXRzIGludG8gb25lIGJ5dGUK
LSNkZWZpbmUgQihhLCBiLCBjLCBkLCBlLCBmLCBnLCBoKSBcCi0gICAgKChhKSB8ICgoYikgPDwg
MSkgfCAoKGMpIDw8IDIpIHwgKChkKSA8PCAzKSB8ICgoZSkgPDwgNCkgfCAoKGYpIDw8IDUpIHwg
KChnKSA8PCA2KSB8ICgoaCkgPDwgNykpCi0KLS8vIExpbmUgYnJlYWtpbmcgdGFibGUgcm93IGZv
ciBlYWNoIGRpZ2l0ICgwLTkpCi0jZGVmaW5lIERJIHsgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCB9Ci0KLS8vIExpbmUgYnJlYWtpbmcgdGFibGUgcm93IGZvciBhc2NpaSBsZXR0
ZXJzIChhLXogQS1aKQotI2RlZmluZSBBTCB7IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAgfQotCi0jZGVmaW5lIEYgMHhGRgotCi0vLyBMaW5lIGJyZWFraW5nIHRhYmxlIGZvciBw
cmludGFibGUgQVNDSUkgY2hhcmFjdGVycy4gTGluZSBicmVha2luZyBvcHBvcnR1bml0aWVzIGlu
IHRoaXMgdGFibGUgYXJlIGFzIGJlbG93OgotLy8gLSBiZWZvcmUgb3BlbmluZyBwdW5jdHVhdGlv
bnMgc3VjaCBhcyAnKCcsICc8JywgJ1snLCAneycgYWZ0ZXIgY2VydGFpbiBjaGFyYWN0ZXJzIChj
b21wYXRpYmxlIHdpdGggRmlyZWZveCAzLjYpOwotLy8gLSBhZnRlciAnLScgYW5kICc/JyAoYmFj
a3dhcmQtY29tcGF0aWJsZSwgYW5kIGNvbXBhdGlibGUgd2l0aCBJbnRlcm5ldCBFeHBsb3Jlciku
Ci0vLyBQbGVhc2UgcmVmZXIgdG8gPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zNzY5OD4gZm9yIGxpbmUgYnJlYWtpbmcgbWF0cml4ZXMgb2YgZGlmZmVyZW50IGJyb3dz
ZXJzCi0vLyBhbmQgdGhlIElDVSBzdGFuZGFyZC4KLVdFQkNPUkVfRVhQT1JUIGNvbnN0IHVuc2ln
bmVkIGNoYXIgYXNjaWlMaW5lQnJlYWtUYWJsZVtdW2FzY2lpTGluZUJyZWFrVGFibGVDb2x1bW5D
b3VudF0gPSB7Ci0gICAgLy8gICEgICIgICMgICQgICUgICYgICcgICggICAgICkgICogICsgICwg
IC0gIC4gIC8gIDAgIDEtOCAgIDkgIDogIDsgIDwgID0gID4gID8gIEAgICAgIEEtWCAgICAgIFkg
IFogIFsgIFwgIF0gIF4gIF8gIGAgICAgIGEteCAgICAgIHkgIHogIHsgIHwgIH0gIH4gIERFTAot
ICAgIHsgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAxKSwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
KSwgMCwgQigwLCAwLCAwLCAxLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAxLCAwLCAw
LCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAxLCAwLCAwLCAwLCAwLCAwKSB9LCAvLyAhCi0g
ICAgeyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEpLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAp
LCAwLCBCKDAsIDAsIDAsIDEsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAs
IDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAsIDAsIDAsIDApIH0sIC8vICIKLSAg
ICB7IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSksIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCks
IDAsIEIoMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwg
MCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCkgfSwgLy8gIwotICAg
IHsgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwg
MCwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSB9LCAvLyAkCi0gICAg
eyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEpLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAw
LCBCKDAsIDAsIDAsIDEsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAsIDAs
IDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAsIDAsIDAsIDApIH0sIC8vICUKLSAgICB7
IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSksIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAs
IEIoMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwg
MCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCkgfSwgLy8gJgotICAgIHsg
QigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwg
QigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwKSwgMCwgMCwgMCwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSB9LCAvLyAnCi0gICAgeyBC
KDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCBC
KDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDApLCAwLCAwLCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApIH0sIC8vICgKLSAgICB7IEIo
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMSksIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIEIo
MCwgMCwgMCwgMSwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwg
MCksIDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCkgfSwgLy8gKQotICAgIHsgQigw
LCAwLCAwLCAwLCAwLCAwLCAwLCAxKSwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgQigw
LCAwLCAwLCAxLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAxLCAwLCAwLCAwLCAwLCAw
KSwgMCwgMCwgMCwgQigwLCAwLCAxLCAwLCAwLCAwLCAwLCAwKSB9LCAvLyAqCi0gICAgeyBCKDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDEpLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCBCKDAs
IDAsIDAsIDEsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAsIDAsIDAsIDAp
LCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAsIDAsIDAsIDApIH0sIC8vICsKLSAgICB7IEIoMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMSksIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIEIoMCwg
MCwgMCwgMSwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCks
IDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCkgfSwgLy8gLAotICAgIHsgQigxLCAx
LCAxLCAxLCAxLCAxLCAxLCAxKSwgQigxLCAxLCAxLCAxLCAxLCAwLCAxLCAwKSwgMCwgQigwLCAx
LCAxLCAxLCAxLCAxLCAxLCAxKSwgRiwgRiwgRiwgQigxLCAxLCAxLCAxLCAxLCAxLCAxLCAxKSwg
RiwgRiwgRiwgQigxLCAxLCAxLCAxLCAxLCAxLCAxLCAxKSB9LCAvLyAtIE5vdGU6IGJyZWFraW5n
IGJlZm9yZSAnMCctJzknIGlzIGhhbmRsZWQgaGFyZC1jb2RlZCBpbiBzaG91bGRCcmVha0FmdGVy
KCkuCi0gICAgeyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEpLCBCKDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDApLCAwLCBCKDAsIDAsIDAsIDEsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEs
IDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAsIDAsIDAsIDApIH0sIC8v
IC4KLSAgICB7IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIEIoMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCksIDAsIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCkgfSwgLy8g
LwotICAgIERJLCAgREksICBESSwgIERJLCAgREksICBESSwgIERJLCAgREksICBESSwgIERJLCAv
LyAwLTkKLSAgICB7IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSksIEIoMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCksIDAsIEIoMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwg
MSwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCkgfSwg
Ly8gOgotICAgIHsgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAxKSwgQigwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwKSwgMCwgQigwLCAwLCAwLCAxLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAx
LCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAxLCAwLCAwLCAwLCAwLCAwKSB9LCAv
LyA7Ci0gICAgeyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCBCKDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDApLCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApIH0sIC8v
IDwKLSAgICB7IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSksIEIoMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCksIDAsIEIoMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMSwg
MCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCkgfSwgLy8g
PQotICAgIHsgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAxKSwgQigwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwKSwgMCwgQigwLCAwLCAwLCAxLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAxLCAw
LCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAxLCAwLCAwLCAwLCAwLCAwKSB9LCAvLyA+
Ci0gICAgeyBCKDAsIDAsIDEsIDEsIDEsIDEsIDAsIDEpLCBCKDAsIDEsIDEsIDAsIDEsIDAsIDAs
IDEpLCBGLCBCKDEsIDAsIDAsIDEsIDEsIDEsIDAsIDEpLCBGLCBGLCBGLCBCKDEsIDEsIDEsIDEs
IDAsIDEsIDEsIDEpLCBGLCBGLCBGLCBCKDEsIDEsIDEsIDEsIDAsIDEsIDEsIDApIH0sIC8vID8K
LSAgICB7IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCksIDAsIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCkgfSwgLy8gQAot
ICAgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUws
ICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAg
QUwsICBBTCwgIEFMLCAgQUwsIC8vIEEtWgotICAgIHsgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
KSwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
KSwgMCwgMCwgMCwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwKSB9LCAvLyBbCi0gICAgeyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEp
LCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCBCKDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAp
LCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEs
IDAsIDAsIDAsIDAsIDApIH0sIC8vICdcJwotICAgIHsgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAx
KSwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgQigwLCAwLCAwLCAxLCAwLCAwLCAwLCAw
KSwgMCwgMCwgMCwgQigwLCAwLCAxLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAx
LCAwLCAwLCAwLCAwLCAwKSB9LCAvLyBdCi0gICAgeyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAp
LCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAp
LCAwLCAwLCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDApIH0sIC8vIF4KLSAgICB7IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCks
IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCks
IDAsIDAsIDAsIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCkgfSwgLy8gXwotICAgIHsgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwg
QigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwg
MCwgMCwgMCwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwKSB9LCAvLyBgCi0gICAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAg
QUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFM
LCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgLy8gYS16Ci0gICAgeyBC
KDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCBC
KDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDApLCAwLCAwLCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApIH0sIC8vIHsKLSAgICB7IEIo
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMSksIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIEIo
MCwgMCwgMCwgMSwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwg
MCksIDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCkgfSwgLy8gfAotICAgIHsgQigw
LCAwLCAwLCAwLCAwLCAwLCAwLCAxKSwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgQigw
LCAwLCAwLCAxLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAxLCAwLCAwLCAwLCAwLCAw
KSwgMCwgMCwgMCwgQigwLCAwLCAxLCAwLCAwLCAwLCAwLCAwKSB9LCAvLyB9Ci0gICAgeyBCKDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDEpLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCBCKDAs
IDAsIDAsIDEsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAsIDAsIDAsIDAp
LCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAsIDAsIDAsIDApIH0sIC8vIH4KLSAgICB7IEIoMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCksIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIEIoMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCks
IDAsIDAsIDAsIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCkgfSwgLy8gREVMCi19OwotCi0jdW5k
ZWYgQgotI3VuZGVmIEYKLSN1bmRlZiBESQotI3VuZGVmIEFMCi0KLUNPTVBJTEVfQVNTRVJUKFdU
Rl9BUlJBWV9MRU5HVEgoYXNjaWlMaW5lQnJlYWtUYWJsZSkgPT0gYXNjaWlMaW5lQnJlYWtUYWJs
ZUxhc3RDaGFyIC0gYXNjaWlMaW5lQnJlYWtUYWJsZUZpcnN0Q2hhciArIDEsIFRlc3RMaW5lQnJl
YWtUYWJsZUNvbnNpc3RlbmN5KTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2JyZWFrX2xpbmVzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvYnJlYWtfbGluZXMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
YTI5NDYxMjljYmE2ZWI5MTZkYWI5ZTUxYTgwZWNiZTllMTdmYjJkYy4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
YnJlYWtfbGluZXMuaAorKysgL2Rldi9udWxsCkBAIC0xLDI0OCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDA1LCAyMDA3LCAyMDEwLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
LSAqCi0gKi8KLQotI2lmbmRlZiBicmVha19saW5lc19oCi0jZGVmaW5lIGJyZWFrX2xpbmVzX2gK
LQotI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+Ci0jaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJh
cy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+Ci0jaW5jbHVkZSA8
d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1z
dGF0aWMgY29uc3QgVUNoYXIgYXNjaWlMaW5lQnJlYWtUYWJsZUZpcnN0Q2hhciA9ICchJzsKLXN0
YXRpYyBjb25zdCBVQ2hhciBhc2NpaUxpbmVCcmVha1RhYmxlTGFzdENoYXIgPSAxMjc7Ci1zdGF0
aWMgY29uc3QgdW5zaWduZWQgYXNjaWlMaW5lQnJlYWtUYWJsZUNvbHVtbkNvdW50ID0gKGFzY2lp
TGluZUJyZWFrVGFibGVMYXN0Q2hhciAtIGFzY2lpTGluZUJyZWFrVGFibGVGaXJzdENoYXIpIC8g
OCArIDE7Ci0KLVdFQkNPUkVfRVhQT1JUIGV4dGVybiBjb25zdCB1bnNpZ25lZCBjaGFyIGFzY2lp
TGluZUJyZWFrVGFibGVbXVthc2NpaUxpbmVCcmVha1RhYmxlQ29sdW1uQ291bnRdOwotCi1lbnVt
IGNsYXNzIE5CU1BCZWhhdmlvciB7Ci0gICAgSWdub3JlTkJTUCwKLSAgICBUcmVhdE5CU1BBc0Jy
ZWFrLAotfTsKLQotdGVtcGxhdGU8TkJTUEJlaGF2aW9yIG5ic3BCZWhhdmlvcj4KLXN0YXRpYyBp
bmxpbmUgYm9vbCBpc0JyZWFrYWJsZVNwYWNlKFVDaGFyIGNoKQotewotICAgIHN3aXRjaCAoY2gp
IHsKLSAgICBjYXNlICcgJzoKLSAgICBjYXNlICdcbic6Ci0gICAgY2FzZSAnXHQnOgotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICBjYXNlIG5vQnJlYWtTcGFjZToKLSAgICAgICAgcmV0dXJuIG5i
c3BCZWhhdmlvciA9PSBOQlNQQmVoYXZpb3I6OlRyZWF0TkJTUEFzQnJlYWs7Ci0gICAgZGVmYXVs
dDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLX0KLQotaW5saW5lIGJvb2wgc2hvdWxk
QnJlYWtBZnRlcihVQ2hhciBsYXN0Q2gsIFVDaGFyIGNoLCBVQ2hhciBuZXh0Q2gpCi17Ci0gICAg
Ly8gRG9uJ3QgYWxsb3cgbGluZSBicmVha2luZyBiZXR3ZWVuICctJyBhbmQgYSBkaWdpdCBpZiB0
aGUgJy0nIG1heSBtZWFuIGEgbWludXMgc2lnbiBpbiB0aGUgY29udGV4dCwKLSAgICAvLyB3aGls
ZSBhbGxvdyBicmVha2luZyBpbiAnQUJDRC0xMjM0JyBhbmQgJzEyMzQtNTY3OCcgd2hpY2ggbWF5
IGJlIGluIGxvbmcgVVJMcy4KLSAgICBpZiAoY2ggPT0gJy0nICYmIGlzQVNDSUlEaWdpdChuZXh0
Q2gpKQotICAgICAgICByZXR1cm4gaXNBU0NJSUFscGhhbnVtZXJpYyhsYXN0Q2gpOwotCi0gICAg
Ly8gSWYgYm90aCBjaCBhbmQgbmV4dENoIGFyZSBBU0NJSSBjaGFyYWN0ZXJzLCB1c2UgYSBsb29r
dXAgdGFibGUgZm9yIGVuaGFuY2VkIHNwZWVkIGFuZCBmb3IgY29tcGF0aWJpbGl0eQotICAgIC8v
IHdpdGggb3RoZXIgYnJvd3NlcnMgKHNlZSBjb21tZW50cyBmb3IgYXNjaWlMaW5lQnJlYWtUYWJs
ZSBmb3IgZGV0YWlscykuCi0gICAgaWYgKGNoID49IGFzY2lpTGluZUJyZWFrVGFibGVGaXJzdENo
YXIgJiYgY2ggPD0gYXNjaWlMaW5lQnJlYWtUYWJsZUxhc3RDaGFyICYmIG5leHRDaCA+PSBhc2Np
aUxpbmVCcmVha1RhYmxlRmlyc3RDaGFyICYmIG5leHRDaCA8PSBhc2NpaUxpbmVCcmVha1RhYmxl
TGFzdENoYXIpIHsKLSAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogdGFibGVSb3cgPSBhc2Np
aUxpbmVCcmVha1RhYmxlW2NoIC0gYXNjaWlMaW5lQnJlYWtUYWJsZUZpcnN0Q2hhcl07Ci0gICAg
ICAgIGludCBuZXh0Q2hJbmRleCA9IG5leHRDaCAtIGFzY2lpTGluZUJyZWFrVGFibGVGaXJzdENo
YXI7Ci0gICAgICAgIHJldHVybiB0YWJsZVJvd1tuZXh0Q2hJbmRleCAvIDhdICYgKDEgPDwgKG5l
eHRDaEluZGV4ICUgOCkpOwotICAgIH0KLSAgICAvLyBPdGhlcndpc2UgZGVmZXIgdG8gdGhlIFVu
aWNvZGUgYWxnb3JpdGhtIGJ5IHJldHVybmluZyBmYWxzZS4KLSAgICByZXR1cm4gZmFsc2U7Ci19
Ci0KLXRlbXBsYXRlPE5CU1BCZWhhdmlvciBuYnNwQmVoYXZpb3I+Ci1pbmxpbmUgYm9vbCBuZWVk
c0xpbmVCcmVha0l0ZXJhdG9yKFVDaGFyIGNoKQotewotICAgIGlmIChuYnNwQmVoYXZpb3IgPT0g
TkJTUEJlaGF2aW9yOjpUcmVhdE5CU1BBc0JyZWFrKQotICAgICAgICByZXR1cm4gY2ggPiBhc2Np
aUxpbmVCcmVha1RhYmxlTGFzdENoYXI7Ci0gICAgcmV0dXJuIGNoID4gYXNjaWlMaW5lQnJlYWtU
YWJsZUxhc3RDaGFyICYmIGNoICE9IG5vQnJlYWtTcGFjZTsKLX0KLQotLy8gV2hlbiBpbiBub24t
bG9vc2UgbW9kZSwgd2UgY2FuIHVzZSB0aGUgQVNDSUkgc2hvcnRjdXQgdGFibGUuCi10ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCBOQlNQQmVoYXZpb3IgbmJzcEJlaGF2aW9yPgotaW5s
aW5lIGludCBuZXh0QnJlYWthYmxlUG9zaXRpb25Ob25Mb29zZWx5KExhenlMaW5lQnJlYWtJdGVy
YXRvciYgbGF6eUJyZWFrSXRlcmF0b3IsIGNvbnN0IENoYXJhY3RlclR5cGUqIHN0ciwgdW5zaWdu
ZWQgbGVuZ3RoLCBpbnQgcG9zKQotewotICAgIGludCBsZW4gPSBzdGF0aWNfY2FzdDxpbnQ+KGxl
bmd0aCk7Ci0gICAgaW50IG5leHRCcmVhayA9IC0xOwotCi0gICAgQ2hhcmFjdGVyVHlwZSBsYXN0
TGFzdENoID0gcG9zID4gMSA/IHN0cltwb3MgLSAyXSA6IHN0YXRpY19jYXN0PENoYXJhY3RlclR5
cGU+KGxhenlCcmVha0l0ZXJhdG9yLnNlY29uZFRvTGFzdENoYXJhY3RlcigpKTsKLSAgICBDaGFy
YWN0ZXJUeXBlIGxhc3RDaCA9IHBvcyA+IDAgPyBzdHJbcG9zIC0gMV0gOiBzdGF0aWNfY2FzdDxD
aGFyYWN0ZXJUeXBlPihsYXp5QnJlYWtJdGVyYXRvci5sYXN0Q2hhcmFjdGVyKCkpOwotICAgIHVu
c2lnbmVkIHByaW9yQ29udGV4dExlbmd0aCA9IGxhenlCcmVha0l0ZXJhdG9yLnByaW9yQ29udGV4
dExlbmd0aCgpOwotICAgIGZvciAoaW50IGkgPSBwb3M7IGkgPCBsZW47IGkrKykgewotICAgICAg
ICBDaGFyYWN0ZXJUeXBlIGNoID0gc3RyW2ldOwotCi0gICAgICAgIC8vIE5vbi1sb29zZSBtb2Rl
LCBzbyB1c2UgQVNDSUkgc2hvcnRjdXQgKHNob3VsZEJyZWFrQWZ0ZXIpIGlmIG5vdCBicmVha2Fi
bGUgc3BhY2UuCi0gICAgICAgIGlmIChpc0JyZWFrYWJsZVNwYWNlPG5ic3BCZWhhdmlvcj4oY2gp
IHx8IHNob3VsZEJyZWFrQWZ0ZXIobGFzdExhc3RDaCwgbGFzdENoLCBjaCkpCi0gICAgICAgICAg
ICByZXR1cm4gaTsKLQotICAgICAgICAvLyBOb24tbG9vc2UgbW9kZSwgc28gY29uZGl0aW9uYWxs
eSB1c2UgYnJlYWsgaXRlcmF0b3IuCi0gICAgICAgIGlmIChuZWVkc0xpbmVCcmVha0l0ZXJhdG9y
PG5ic3BCZWhhdmlvcj4oY2gpIHx8IG5lZWRzTGluZUJyZWFrSXRlcmF0b3I8bmJzcEJlaGF2aW9y
PihsYXN0Q2gpKSB7Ci0gICAgICAgICAgICBpZiAobmV4dEJyZWFrIDwgaSkgewotICAgICAgICAg
ICAgICAgIC8vIERvbid0IGJyZWFrIGlmIHBvc2l0aW9uZWQgYXQgc3RhcnQgb2YgcHJpbWFyeSBj
b250ZXh0IGFuZCB0aGVyZSBpcyBubyBwcmlvciBjb250ZXh0LgotICAgICAgICAgICAgICAgIGlm
IChpIHx8IHByaW9yQ29udGV4dExlbmd0aCkgewotICAgICAgICAgICAgICAgICAgICBUZXh0QnJl
YWtJdGVyYXRvciogYnJlYWtJdGVyYXRvciA9IGxhenlCcmVha0l0ZXJhdG9yLmdldChwcmlvckNv
bnRleHRMZW5ndGgpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYnJlYWtJdGVyYXRvcikgewot
ICAgICAgICAgICAgICAgICAgICAgICAgbmV4dEJyZWFrID0gdGV4dEJyZWFrRm9sbG93aW5nKGJy
ZWFrSXRlcmF0b3IsIGkgLSAxICsgcHJpb3JDb250ZXh0TGVuZ3RoKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChuZXh0QnJlYWsgPj0gMCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBuZXh0QnJlYWsgLT0gcHJpb3JDb250ZXh0TGVuZ3RoOwotICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGkgPT0g
bmV4dEJyZWFrICYmICFpc0JyZWFrYWJsZVNwYWNlPG5ic3BCZWhhdmlvcj4obGFzdENoKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gaTsKLSAgICAgICAgfQotCi0gICAgICAgIGxhc3RMYXN0Q2gg
PSBsYXN0Q2g7Ci0gICAgICAgIGxhc3RDaCA9IGNoOwotICAgIH0KLQotICAgIHJldHVybiBsZW47
Ci19Ci0KLS8vIFdoZW4gaW4gbG9vc2UgbW9kZSwgd2UgY2FuJ3QgdXNlIHRoZSBBU0NJSSBzaG9y
dGN1dCB0YWJsZSBzaW5jZSBsb29zZSBtb2RlIGFsbG93cyAiJDEwMCIgdG8gYnJlYWsgYWZ0ZXIg
JyQnIGluIGNvbnRlbnQgbWFya2VkIGFzIENKSy4KLS8vIE4uQi4gSXQgc2hvdWxkIGJlIHBvc3Np
YmxlIHRvIGNvbWJpbmUgdGhlIGZvbGxvd2luZyB3aXRoIHRoZSBub24tbG9vc2UgdmVyc2lvbiBh
Ym92ZSBieSBhZGRpbmcgYSBMb29zZUJlaGF2aW9yIHRlbXBsYXRlIHBhcmFtZXRlcjsKLS8vIGhv
d2V2ZXIsIHdoZW4gZG9pbmcgdGhpcywgYSAxMCUgcGVyZm9ybWFuY2UgcmVncmVzc2lvbiBhcHBl
YXJlZCBvbiBjaHJvbWl1bS13aW4gKGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04OTIzNSNjMTEyKS4KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIE5CU1BC
ZWhhdmlvciBuYnNwQmVoYXZpb3I+Ci1zdGF0aWMgaW5saW5lIGludCBuZXh0QnJlYWthYmxlUG9z
aXRpb25Mb29zZWx5KExhenlMaW5lQnJlYWtJdGVyYXRvciYgbGF6eUJyZWFrSXRlcmF0b3IsIGNv
bnN0IENoYXJhY3RlclR5cGUqIHN0ciwgdW5zaWduZWQgbGVuZ3RoLCBpbnQgcG9zKQotewotICAg
IGludCBsZW4gPSBzdGF0aWNfY2FzdDxpbnQ+KGxlbmd0aCk7Ci0gICAgaW50IG5leHRCcmVhayA9
IC0xOwotCi0gICAgQ2hhcmFjdGVyVHlwZSBsYXN0Q2ggPSBwb3MgPiAwID8gc3RyW3BvcyAtIDFd
IDogc3RhdGljX2Nhc3Q8Q2hhcmFjdGVyVHlwZT4obGF6eUJyZWFrSXRlcmF0b3IubGFzdENoYXJh
Y3RlcigpKTsKLSAgICB1bnNpZ25lZCBwcmlvckNvbnRleHRMZW5ndGggPSBsYXp5QnJlYWtJdGVy
YXRvci5wcmlvckNvbnRleHRMZW5ndGgoKTsKLSAgICBmb3IgKGludCBpID0gcG9zOyBpIDwgbGVu
OyBpKyspIHsKLSAgICAgICAgQ2hhcmFjdGVyVHlwZSBjaCA9IHN0cltpXTsKLQotICAgICAgICAv
LyBBbHdheXMgbG9vc2UgbW9kZSwgc28gZG9uJ3QgdXNlIEFTQ0lJIHNob3J0Y3V0IChzaG91bGRC
cmVha0FmdGVyKS4KLSAgICAgICAgaWYgKGlzQnJlYWthYmxlU3BhY2U8bmJzcEJlaGF2aW9yPihj
aCkpCi0gICAgICAgICAgICByZXR1cm4gaTsKLQotICAgICAgICAvLyBBbHdheXMgdXNlIGxpbmUg
YnJlYWsgaXRlcmF0b3IgaW4gbG9vc2UgbW9kZS4KLSAgICAgICAgaWYgKG5leHRCcmVhayA8IGkp
IHsKLSAgICAgICAgICAgIC8vIERvbid0IGJyZWFrIGlmIHBvc2l0aW9uZWQgYXQgc3RhcnQgb2Yg
cHJpbWFyeSBjb250ZXh0IGFuZCB0aGVyZSBpcyBubyBwcmlvciBjb250ZXh0LgotICAgICAgICAg
ICAgaWYgKGkgfHwgcHJpb3JDb250ZXh0TGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgVGV4dEJy
ZWFrSXRlcmF0b3IqIGJyZWFrSXRlcmF0b3IgPSBsYXp5QnJlYWtJdGVyYXRvci5nZXQocHJpb3JD
b250ZXh0TGVuZ3RoKTsKLSAgICAgICAgICAgICAgICBpZiAoYnJlYWtJdGVyYXRvcikgewotICAg
ICAgICAgICAgICAgICAgICBuZXh0QnJlYWsgPSB0ZXh0QnJlYWtGb2xsb3dpbmcoYnJlYWtJdGVy
YXRvciwgaSAtIDEgKyBwcmlvckNvbnRleHRMZW5ndGgpOwotICAgICAgICAgICAgICAgICAgICBp
ZiAobmV4dEJyZWFrID49IDApCi0gICAgICAgICAgICAgICAgICAgICAgICBuZXh0QnJlYWsgLT0g
cHJpb3JDb250ZXh0TGVuZ3RoOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotICAgICAgICBpZiAoaSA9PSBuZXh0QnJlYWsgJiYgIWlzQnJlYWthYmxlU3BhY2U8
bmJzcEJlaGF2aW9yPihsYXN0Q2gpKQotICAgICAgICAgICAgcmV0dXJuIGk7Ci0KLSAgICAgICAg
bGFzdENoID0gY2g7Ci0gICAgfQotCi0gICAgcmV0dXJuIGxlbjsKLX0KLQotdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZSwgTkJTUEJlaGF2aW9yIG5ic3BCZWhhdmlvcj4KLWlubGluZSB1
bnNpZ25lZCBuZXh0QnJlYWthYmxlUG9zaXRpb25LZWVwaW5nQWxsV29yZHMoY29uc3QgQ2hhcmFj
dGVyVHlwZSogc3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24p
Ci17Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gc3RhcnRQb3NpdGlvbjsgaSA8IGxlbmd0aDsgaSsr
KSB7Ci0gICAgICAgIGlmIChpc0JyZWFrYWJsZVNwYWNlPG5ic3BCZWhhdmlvcj4oc3RyaW5nW2ld
KSkKLSAgICAgICAgICAgIHJldHVybiBpOwotICAgIH0KLSAgICByZXR1cm4gbGVuZ3RoOwotfQot
Ci1pbmxpbmUgdW5zaWduZWQgbmV4dEJyZWFrYWJsZVBvc2l0aW9uS2VlcGluZ0FsbFdvcmRzKExh
enlMaW5lQnJlYWtJdGVyYXRvciYgbGF6eUJyZWFrSXRlcmF0b3IsIGludCBzdGFydFBvc2l0aW9u
KQotewotICAgIFN0cmluZyBzdHJpbmcgPSBsYXp5QnJlYWtJdGVyYXRvci5zdHJpbmcoKTsKLSAg
ICBpZiAoc3RyaW5nLmlzOEJpdCgpKQotICAgICAgICByZXR1cm4gbmV4dEJyZWFrYWJsZVBvc2l0
aW9uS2VlcGluZ0FsbFdvcmRzPExDaGFyLCBOQlNQQmVoYXZpb3I6OlRyZWF0TkJTUEFzQnJlYWs+
KHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCksIHN0YXJ0UG9zaXRpb24pOwot
ICAgIHJldHVybiBuZXh0QnJlYWthYmxlUG9zaXRpb25LZWVwaW5nQWxsV29yZHM8VUNoYXIsIE5C
U1BCZWhhdmlvcjo6VHJlYXROQlNQQXNCcmVhaz4oc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBzdHJp
bmcubGVuZ3RoKCksIHN0YXJ0UG9zaXRpb24pOwotfQotCi1pbmxpbmUgdW5zaWduZWQgbmV4dEJy
ZWFrYWJsZVBvc2l0aW9uS2VlcGluZ0FsbFdvcmRzSWdub3JpbmdOQlNQKExhenlMaW5lQnJlYWtJ
dGVyYXRvciYgaXRlcmF0b3IsIGludCBzdGFydFBvc2l0aW9uKQotewotICAgIFN0cmluZyBzdHJp
bmcgPSBpdGVyYXRvci5zdHJpbmcoKTsKLSAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKQotICAgICAg
ICByZXR1cm4gbmV4dEJyZWFrYWJsZVBvc2l0aW9uS2VlcGluZ0FsbFdvcmRzPExDaGFyLCBOQlNQ
QmVoYXZpb3I6Oklnbm9yZU5CU1A+KHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3Ro
KCksIHN0YXJ0UG9zaXRpb24pOwotICAgIHJldHVybiBuZXh0QnJlYWthYmxlUG9zaXRpb25LZWVw
aW5nQWxsV29yZHM8VUNoYXIsIE5CU1BCZWhhdmlvcjo6SWdub3JlTkJTUD4oc3RyaW5nLmNoYXJh
Y3RlcnMxNigpLCBzdHJpbmcubGVuZ3RoKCksIHN0YXJ0UG9zaXRpb24pOwotfQotCi1pbmxpbmUg
aW50IG5leHRCcmVha2FibGVQb3NpdGlvbihMYXp5TGluZUJyZWFrSXRlcmF0b3ImIGl0ZXJhdG9y
LCBpbnQgcG9zKQotewotICAgIFN0cmluZyBzdHJpbmcgPSBpdGVyYXRvci5zdHJpbmcoKTsKLSAg
ICBpZiAoc3RyaW5nLmlzOEJpdCgpKQotICAgICAgICByZXR1cm4gbmV4dEJyZWFrYWJsZVBvc2l0
aW9uTm9uTG9vc2VseTxMQ2hhciwgTkJTUEJlaGF2aW9yOjpUcmVhdE5CU1BBc0JyZWFrPihpdGVy
YXRvciwgc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSwgcG9zKTsKLSAgICBy
ZXR1cm4gbmV4dEJyZWFrYWJsZVBvc2l0aW9uTm9uTG9vc2VseTxVQ2hhciwgTkJTUEJlaGF2aW9y
OjpUcmVhdE5CU1BBc0JyZWFrPihpdGVyYXRvciwgc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBzdHJp
bmcubGVuZ3RoKCksIHBvcyk7Ci19Ci0KLWlubGluZSBpbnQgbmV4dEJyZWFrYWJsZVBvc2l0aW9u
SWdub3JpbmdOQlNQKExhenlMaW5lQnJlYWtJdGVyYXRvciYgbGF6eUJyZWFrSXRlcmF0b3IsIGlu
dCBwb3MpCi17Ci0gICAgU3RyaW5nIHN0cmluZyA9IGxhenlCcmVha0l0ZXJhdG9yLnN0cmluZygp
OwotICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBuZXh0QnJlYWthYmxl
UG9zaXRpb25Ob25Mb29zZWx5PExDaGFyLCBOQlNQQmVoYXZpb3I6Oklnbm9yZU5CU1A+KGxhenlC
cmVha0l0ZXJhdG9yLCBzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpLCBwb3Mp
OwotICAgIHJldHVybiBuZXh0QnJlYWthYmxlUG9zaXRpb25Ob25Mb29zZWx5PFVDaGFyLCBOQlNQ
QmVoYXZpb3I6Oklnbm9yZU5CU1A+KGxhenlCcmVha0l0ZXJhdG9yLCBzdHJpbmcuY2hhcmFjdGVy
czE2KCksIHN0cmluZy5sZW5ndGgoKSwgcG9zKTsKLX0KLQotaW5saW5lIGludCBuZXh0QnJlYWth
YmxlUG9zaXRpb25Mb29zZShMYXp5TGluZUJyZWFrSXRlcmF0b3ImIGxhenlCcmVha0l0ZXJhdG9y
LCBpbnQgcG9zKQotewotICAgIFN0cmluZyBzdHJpbmcgPSBsYXp5QnJlYWtJdGVyYXRvci5zdHJp
bmcoKTsKLSAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKQotICAgICAgICByZXR1cm4gbmV4dEJyZWFr
YWJsZVBvc2l0aW9uTG9vc2VseTxMQ2hhciwgTkJTUEJlaGF2aW9yOjpUcmVhdE5CU1BBc0JyZWFr
PihsYXp5QnJlYWtJdGVyYXRvciwgc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgo
KSwgcG9zKTsKLSAgICByZXR1cm4gbmV4dEJyZWFrYWJsZVBvc2l0aW9uTG9vc2VseTxVQ2hhciwg
TkJTUEJlaGF2aW9yOjpUcmVhdE5CU1BBc0JyZWFrPihsYXp5QnJlYWtJdGVyYXRvciwgc3RyaW5n
LmNoYXJhY3RlcnMxNigpLCBzdHJpbmcubGVuZ3RoKCksIHBvcyk7Ci19Ci0KLWlubGluZSBpbnQg
bmV4dEJyZWFrYWJsZVBvc2l0aW9uSWdub3JpbmdOQlNQTG9vc2UoTGF6eUxpbmVCcmVha0l0ZXJh
dG9yJiBsYXp5QnJlYWtJdGVyYXRvciwgaW50IHBvcykKLXsKLSAgICBTdHJpbmcgc3RyaW5nID0g
bGF6eUJyZWFrSXRlcmF0b3Iuc3RyaW5nKCk7Ci0gICAgaWYgKHN0cmluZy5pczhCaXQoKSkKLSAg
ICAgICAgcmV0dXJuIG5leHRCcmVha2FibGVQb3NpdGlvbkxvb3NlbHk8TENoYXIsIE5CU1BCZWhh
dmlvcjo6SWdub3JlTkJTUD4obGF6eUJyZWFrSXRlcmF0b3IsIHN0cmluZy5jaGFyYWN0ZXJzOCgp
LCBzdHJpbmcubGVuZ3RoKCksIHBvcyk7Ci0gICAgcmV0dXJuIG5leHRCcmVha2FibGVQb3NpdGlv
bkxvb3NlbHk8VUNoYXIsIE5CU1BCZWhhdmlvcjo6SWdub3JlTkJTUD4obGF6eUJyZWFrSXRlcmF0
b3IsIHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nLmxlbmd0aCgpLCBwb3MpOwotfQotCi1p
bmxpbmUgYm9vbCBpc0JyZWFrYWJsZShMYXp5TGluZUJyZWFrSXRlcmF0b3ImIGxhenlCcmVha0l0
ZXJhdG9yLCBpbnQgcG9zLCBpbnQmIG5leHRCcmVha2FibGUsIGJvb2wgYnJlYWtOQlNQLCBib29s
IGlzTG9vc2VNb2RlLCBib29sIGtlZXBBbGxXb3JkcykKLXsKLSAgICBpZiAocG9zIDw9IG5leHRC
cmVha2FibGUpCi0gICAgICAgIHJldHVybiBwb3MgPT0gbmV4dEJyZWFrYWJsZTsKLQotICAgIGlm
IChrZWVwQWxsV29yZHMpIHsKLSAgICAgICAgaWYgKGJyZWFrTkJTUCkKLSAgICAgICAgICAgIG5l
eHRCcmVha2FibGUgPSBzdGF0aWNfY2FzdDxpbnQ+KG5leHRCcmVha2FibGVQb3NpdGlvbktlZXBp
bmdBbGxXb3JkcyhsYXp5QnJlYWtJdGVyYXRvciwgcG9zKSk7Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIG5leHRCcmVha2FibGUgPSBzdGF0aWNfY2FzdDxpbnQ+KG5leHRCcmVha2FibGVQb3Np
dGlvbktlZXBpbmdBbGxXb3Jkc0lnbm9yaW5nTkJTUChsYXp5QnJlYWtJdGVyYXRvciwgcG9zKSk7
Ci0gICAgfSBlbHNlIGlmIChpc0xvb3NlTW9kZSkgewotICAgICAgICBpZiAoYnJlYWtOQlNQKQot
ICAgICAgICAgICAgbmV4dEJyZWFrYWJsZSA9IG5leHRCcmVha2FibGVQb3NpdGlvbkxvb3NlKGxh
enlCcmVha0l0ZXJhdG9yLCBwb3MpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBuZXh0QnJl
YWthYmxlID0gbmV4dEJyZWFrYWJsZVBvc2l0aW9uSWdub3JpbmdOQlNQTG9vc2UobGF6eUJyZWFr
SXRlcmF0b3IsIHBvcyk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKGJyZWFrTkJTUCkKLSAg
ICAgICAgICAgIG5leHRCcmVha2FibGUgPSBuZXh0QnJlYWthYmxlUG9zaXRpb24obGF6eUJyZWFr
SXRlcmF0b3IsIHBvcyk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG5leHRCcmVha2FibGUg
PSBuZXh0QnJlYWthYmxlUG9zaXRpb25JZ25vcmluZ05CU1AobGF6eUJyZWFrSXRlcmF0b3IsIHBv
cyk7Ci0gICAgfQotICAgIHJldHVybiBwb3MgPT0gbmV4dEJyZWFrYWJsZTsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gYnJlYWtfbGluZXNfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbGluZS9CcmVha2luZ0NvbnRleHQuaAppbmRleCA1YTdkZDc1YzA2
NDU0N2I0ZTc4MmY3MzM0NmQ5YjA3ZmM3OGFkNmNkLi5jZDE0YjRmOTgwMDNkYzIyY2YyODZjMzUw
ODc5NjdiYWM1YjVlZmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGlu
ZS9CcmVha2luZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9C
cmVha2luZ0NvbnRleHQuaApAQCAtMjUsNiArMjUsNyBAQAogI2lmbmRlZiBCcmVha2luZ0NvbnRl
eHRfaAogI2RlZmluZSBCcmVha2luZ0NvbnRleHRfaAogCisjaW5jbHVkZSAiQnJlYWtMaW5lcy5o
IgogI2luY2x1ZGUgIkh5cGhlbmF0aW9uLmgiCiAjaW5jbHVkZSAiTGluZUJyZWFrZXIuaCIKICNp
bmNsdWRlICJMaW5lSW5mby5oIgpAQCAtMzgsNyArMzksNiBAQAogI2luY2x1ZGUgIlJlbmRlclJ1
YnlSdW4uaCIKICNpbmNsdWRlICJSZW5kZXJTVkdJbmxpbmVUZXh0LmgiCiAjaW5jbHVkZSAiVHJh
aWxpbmdPYmplY3RzLmgiCi0jaW5jbHVkZSAiYnJlYWtfbGluZXMuaCIKICNpbmNsdWRlIDx3dGYv
T3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CiAjaW5jbHVkZSA8
d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KQEAgLTE2Nyw3ICsxNjcsNyBAQCBwdWJsaWM6
CiAgICAgICAgIG1faGFuZ3NBdEVuZCA9IGZhbHNlOwogICAgIH0KIAotICAgIHZvaWQgY29tbWl0
TGluZUJyZWFrQXRDdXJyZW50V2lkdGgoUmVuZGVyT2JqZWN0JiBvYmplY3QsIHVuc2lnbmVkIG9m
ZnNldCA9IDAsIGludCBuZXh0QnJlYWsgPSAtMSkKKyAgICB2b2lkIGNvbW1pdExpbmVCcmVha0F0
Q3VycmVudFdpZHRoKFJlbmRlck9iamVjdCYgb2JqZWN0LCB1bnNpZ25lZCBvZmZzZXQgPSAwLCBP
cHRpb25hbDx1bnNpZ25lZD4gbmV4dEJyZWFrID0gTnVsbG9wdCkKICAgICB7CiAgICAgICAgIG1f
d2lkdGguY29tbWl0KCk7CiAgICAgICAgIG1fbGluZUJyZWFrSGlzdG9yeS5tb3ZlVG8oJm9iamVj
dCwgb2Zmc2V0LCBuZXh0QnJlYWspOwpAQCAtMjA0LDE0ICsyMDQsMTQgQEAgcHJpdmF0ZToKIAog
ICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gdGhpcy0+YXQo
MCkucmVuZGVyZXIoKTsgfQogICAgICAgICB1bnNpZ25lZCBvZmZzZXQoKSBjb25zdCB7IHJldHVy
biB0aGlzLT5hdCgwKS5vZmZzZXQoKTsgfQotICAgICAgICBpbnQgbmV4dEJyZWFrYWJsZVBvc2l0
aW9uKCkgY29uc3QgeyByZXR1cm4gdGhpcy0+YXQoMCkubmV4dEJyZWFrYWJsZVBvc2l0aW9uKCk7
IH0KKyAgICAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IG5leHRCcmVha2FibGVQb3NpdGlvbigpIGNv
bnN0IHsgcmV0dXJuIHRoaXMtPmF0KDApLm5leHRCcmVha2FibGVQb3NpdGlvbigpOyB9CiAgICAg
ICAgIGJvb2wgYXRUZXh0UGFyYWdyYXBoU2VwYXJhdG9yKCkgY29uc3QgeyByZXR1cm4gdGhpcy0+
YXQoMCkuYXRUZXh0UGFyYWdyYXBoU2VwYXJhdG9yKCk7IH0KICAgICAgICAgVUNoYXIgcHJldmlv
dXNJblNhbWVOb2RlKCkgY29uc3QgeyByZXR1cm4gdGhpcy0+YXQoMCkucHJldmlvdXNJblNhbWVO
b2RlKCk7IH0KICAgICAgICAgY29uc3QgSW5saW5lSXRlcmF0b3ImIGdldChzaXplX3QgaSkgY29u
c3QgeyByZXR1cm4gdGhpcy0+YXQoaSk7IH07CiAgICAgICAgIGNvbnN0IElubGluZUl0ZXJhdG9y
JiBjdXJyZW50KCkgY29uc3QgeyByZXR1cm4gZ2V0KDApOyB9CiAgICAgICAgIHNpemVfdCBoaXN0
b3J5TGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gdGhpcy0+c2l6ZSgpOyB9CiAKLSAgICAgICAgdm9p
ZCBtb3ZlVG8oUmVuZGVyT2JqZWN0KiBvYmplY3QsIHVuc2lnbmVkIG9mZnNldCwgaW50IG5leHRC
cmVhayA9IC0xKQorICAgICAgICB2b2lkIG1vdmVUbyhSZW5kZXJPYmplY3QqIG9iamVjdCwgdW5z
aWduZWQgb2Zmc2V0LCBPcHRpb25hbDx1bnNpZ25lZD4gbmV4dEJyZWFrID0gTnVsbG9wdCkKICAg
ICAgICAgewogICAgICAgICAgICAgcHVzaChbJl0oSW5saW5lSXRlcmF0b3ImIG1vZGlmeU1lKSB7
CiAgICAgICAgICAgICAgICAgbW9kaWZ5TWUubW92ZVRvKG9iamVjdCwgb2Zmc2V0LCBuZXh0QnJl
YWspOwpAQCAtNjUwLDcgKzY1MCw3IEBAIGlubGluZSB2b2lkIGVuc3VyZUNoYXJhY3RlckdldHNM
aW5lQm94KExpbmVXaGl0ZXNwYWNlQ29sbGFwc2luZ1N0YXRlJiBsaW5lV2hpdGVzCiAgICAgbGlu
ZVdoaXRlc3BhY2VDb2xsYXBzaW5nU3RhdGUuc3RvcElnbm9yaW5nU3BhY2VzKElubGluZUl0ZXJh
dG9yKDAsIHRleHRQYXJhZ3JhcGhTZXBhcmF0b3IucmVuZGVyZXIoKSwgdGV4dFBhcmFncmFwaFNl
cGFyYXRvci5vZmZzZXQoKSkpOwogfQogCi1pbmxpbmUgdm9pZCB0cnlIeXBoZW5hdGluZyhSZW5k
ZXJUZXh0JiB0ZXh0LCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgQXRvbWljU3RyaW5n
JiBsb2NhbGVJZGVudGlmaWVyLCB1bnNpZ25lZCBjb25zZWN1dGl2ZUh5cGhlbmF0ZWRMaW5lcywg
aW50IGNvbnNlY3V0aXZlSHlwaGVuYXRlZExpbmVzTGltaXQsIGludCBtaW5pbXVtUHJlZml4TGlt
aXQsIGludCBtaW5pbXVtU3VmZml4TGltaXQsIHVuc2lnbmVkIGxhc3RTcGFjZSwgdW5zaWduZWQg
cG9zLCBmbG9hdCB4UG9zLCBpbnQgYXZhaWxhYmxlV2lkdGgsIGJvb2wgaXNGaXhlZFBpdGNoLCBi
b29sIGNvbGxhcHNlV2hpdGVTcGFjZSwgaW50IGxhc3RTcGFjZVdvcmRTcGFjaW5nLCBJbmxpbmVJ
dGVyYXRvciYgbGluZUJyZWFrLCBpbnQgbmV4dEJyZWFrYWJsZSwgYm9vbCYgaHlwaGVuYXRlZCkK
K2lubGluZSB2b2lkIHRyeUh5cGhlbmF0aW5nKFJlbmRlclRleHQmIHRleHQsIGNvbnN0IEZvbnRD
YXNjYWRlJiBmb250LCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIsIHVuc2ln
bmVkIGNvbnNlY3V0aXZlSHlwaGVuYXRlZExpbmVzLCBpbnQgY29uc2VjdXRpdmVIeXBoZW5hdGVk
TGluZXNMaW1pdCwgaW50IG1pbmltdW1QcmVmaXhMaW1pdCwgaW50IG1pbmltdW1TdWZmaXhMaW1p
dCwgdW5zaWduZWQgbGFzdFNwYWNlLCB1bnNpZ25lZCBwb3MsIGZsb2F0IHhQb3MsIGludCBhdmFp
bGFibGVXaWR0aCwgYm9vbCBpc0ZpeGVkUGl0Y2gsIGJvb2wgY29sbGFwc2VXaGl0ZVNwYWNlLCBp
bnQgbGFzdFNwYWNlV29yZFNwYWNpbmcsIElubGluZUl0ZXJhdG9yJiBsaW5lQnJlYWssIE9wdGlv
bmFsPHVuc2lnbmVkPiBuZXh0QnJlYWthYmxlLCBib29sJiBoeXBoZW5hdGVkKQogewogICAgIC8v
IE1hcCAnaHlwaGVuYXRlLWxpbWl0LXtiZWZvcmUsYWZ0ZXJ9OiBhdXRvOycgdG8gMi4KICAgICB1
bnNpZ25lZCBtaW5pbXVtUHJlZml4TGVuZ3RoOwpAQCAtODU3LDcgKzg1Nyw3IEBAIGlubGluZSBi
b29sIEJyZWFraW5nQ29udGV4dDo6aGFuZGxlVGV4dChXb3JkTWVhc3VyZW1lbnRzJiB3b3JkTWVh
c3VyZW1lbnRzLCBib29sCiAgICAgICAgICAgICBtaWRXb3JkQnJlYWsgPSBtX3dpZHRoLmNvbW1p
dHRlZFdpZHRoKCkgKyB3cmFwVyArIGNoYXJXaWR0aCA+IG1fd2lkdGguYXZhaWxhYmxlV2lkdGgo
KTsKICAgICAgICAgfQogCi0gICAgICAgIGludCBuZXh0QnJlYWthYmxlUG9zaXRpb24gPSBtX2N1
cnJlbnQubmV4dEJyZWFrYWJsZVBvc2l0aW9uKCk7CisgICAgICAgIE9wdGlvbmFsPHVuc2lnbmVk
PiBuZXh0QnJlYWthYmxlUG9zaXRpb24gPSBtX2N1cnJlbnQubmV4dEJyZWFrYWJsZVBvc2l0aW9u
KCk7CiAgICAgICAgIGJvb2wgYmV0d2VlbldvcmRzID0gYyA9PSAnXG4nIHx8IChtX2N1cnJXUyAh
PSBQUkUgJiYgIW1fYXRTdGFydCAmJiBpc0JyZWFrYWJsZShtX3JlbmRlclRleHRJbmZvLmxpbmVC
cmVha0l0ZXJhdG9yLCBtX2N1cnJlbnQub2Zmc2V0KCksIG5leHRCcmVha2FibGVQb3NpdGlvbiwg
YnJlYWtOQlNQLCBpc0xvb3NlQ0pLTW9kZSwga2VlcEFsbFdvcmRzKQogICAgICAgICAgICAgJiYg
KHN0eWxlLmh5cGhlbnMoKSAhPSBIeXBoZW5zTm9uZSB8fCAobV9jdXJyZW50LnByZXZpb3VzSW5T
YW1lTm9kZSgpICE9IHNvZnRIeXBoZW4pKSk7CiAgICAgICAgIG1fY3VycmVudC5zZXROZXh0QnJl
YWthYmxlUG9zaXRpb24obmV4dEJyZWFrYWJsZVBvc2l0aW9uKTsKQEAgLTk1OSwxNCArOTU5LDE0
IEBAIGlubGluZSBib29sIEJyZWFraW5nQ29udGV4dDo6aGFuZGxlVGV4dChXb3JkTWVhc3VyZW1l
bnRzJiB3b3JkTWVhc3VyZW1lbnRzLCBib29sCiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGxhc3QgYnJlYWtpbmcgcG9zaXRpb24gaXMg
YSBzb2Z0LWh5cGhlbi4KICAgICAgICAgICAgICAgICAgICAgaWYgKCFoeXBoZW5hdGVkICYmIHN0
eWxlLmh5cGhlbnMoKSAhPSBIeXBoZW5zTm9uZSkgewotICAgICAgICAgICAgICAgICAgICAgICAg
T3B0aW9uYWw8aW50PiBsYXN0QnJlYWtpbmdQb3NpdG9uOworICAgICAgICAgICAgICAgICAgICAg
ICAgT3B0aW9uYWw8dW5zaWduZWQ+IGxhc3RCcmVha2luZ1Bvc2l0b247CiAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyQXRCcmVha2luZ1Bvc2l0aW9u
ID0gbnVsbHB0cjsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX2xpbmVCcmVha0hpc3Rv
cnkub2Zmc2V0KCkgfHwgbV9saW5lQnJlYWtIaXN0b3J5Lm5leHRCcmVha2FibGVQb3NpdGlvbigp
ID4gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX2xpbmVCcmVha0hpc3Rvcnku
b2Zmc2V0KCkgfHwgbV9saW5lQnJlYWtIaXN0b3J5Lm5leHRCcmVha2FibGVQb3NpdGlvbigpKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdEJyZWFraW5nUG9zaXRvbiA9IG1fbGlu
ZUJyZWFrSGlzdG9yeS5vZmZzZXQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5k
ZXJlckF0QnJlYWtpbmdQb3NpdGlvbiA9IG1fbGluZUJyZWFrSGlzdG9yeS5yZW5kZXJlcigpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtX2N1cnJlbnQubmV4dEJyZWFrYWJs
ZVBvc2l0aW9uKCkgPiAtMSAmJiAodW5zaWduZWQpbV9jdXJyZW50Lm5leHRCcmVha2FibGVQb3Np
dGlvbigpIDw9IG1fY3VycmVudC5vZmZzZXQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIGlmIChtX2N1cnJlbnQubmV4dEJyZWFrYWJsZVBvc2l0aW9uKCkgJiYgbV9jdXJyZW50
Lm5leHRCcmVha2FibGVQb3NpdGlvbigpLnZhbHVlKCkgPD0gbV9jdXJyZW50Lm9mZnNldCgpKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgbWlnaHQganVzdCBiZSByaWdodCBh
ZnRlciB0aGUgc29mdC1oeXBoZW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0QnJl
YWtpbmdQb3NpdG9uID0gbV9jdXJyZW50Lm5leHRCcmVha2FibGVQb3NpdGlvbigpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGxhc3RCcmVha2luZ1Bvc2l0b24gPSBtX2N1cnJlbnQubmV4
dEJyZWFrYWJsZVBvc2l0aW9uKCkudmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZW5kZXJlckF0QnJlYWtpbmdQb3NpdGlvbiA9IG1fY3VycmVudC5yZW5kZXJlcigpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxhc3RC
cmVha2luZ1Bvc2l0b24pIHsKQEAgLTk3Nyw3ICs5NzcsNyBAQCBpbmxpbmUgYm9vbCBCcmVha2lu
Z0NvbnRleHQ6OmhhbmRsZVRleHQoV29yZE1lYXN1cmVtZW50cyYgd29yZE1lYXN1cmVtZW50cywg
Ym9vbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJCZWZvcmVCcmVh
a2luZ1Bvc2l0aW9uID0gbGFzdENoYXJhY3RlckZyb21QcmV2aW91c1JlbmRlclRleHQ7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaXM8UmVuZGVyVGV4dD4ocmVuZGVyZXJB
dEJyZWFraW5nUG9zaXRpb24pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGF1dG8mIHRleHRSZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlclRleHQ+KCpyZW5kZXJlckF0
QnJlYWtpbmdQb3NpdGlvbik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VS
VCh0ZXh0UmVuZGVyZXIudGV4dExlbmd0aCgpID4gKHVuc2lnbmVkKShsYXN0QnJlYWtpbmdQb3Np
dG9uLnZhbHVlKCkgLSAxKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VS
VChsYXN0QnJlYWtpbmdQb3NpdG9uLnZhbHVlKCkgPj0gMSAmJiB0ZXh0UmVuZGVyZXIudGV4dExl
bmd0aCgpID4gKGxhc3RCcmVha2luZ1Bvc2l0b24udmFsdWUoKSAtIDEpKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyQmVmb3JlQnJlYWtpbmdQb3NpdGlvbiA9IHRl
eHRSZW5kZXJlci5jaGFyYWN0ZXJBdChsYXN0QnJlYWtpbmdQb3NpdG9uLnZhbHVlKCkgLSAxKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGNoYXJhY3RlckJlZm9yZUJyZWFraW5nUG9zaXRpb24pCkBAIC0xMzE1LDkgKzEzMTUs
OSBAQCBpbmxpbmUgSW5saW5lSXRlcmF0b3IgQnJlYWtpbmdDb250ZXh0OjpvcHRpbWFsTGluZUJy
ZWFrTG9jYXRpb25Gb3JUcmFpbGluZ1dvcmQoKQogICAgICAgICByZXR1cm4gbGluZUJyZWFrOwog
ICAgIGJvb2wgaXNMb29zZUNKS01vZGUgPSBtX3JlbmRlclRleHRJbmZvLnRleHQgIT0gJnJlbmRl
clRleHQgJiYgbV9yZW5kZXJUZXh0SW5mby5saW5lQnJlYWtJdGVyYXRvci5pc0xvb3NlQ0pLTW9k
ZSgpOwogICAgIGJvb2wgYnJlYWtOQlNQID0gbV9hdXRvV3JhcCAmJiBtX2N1cnJlbnRTdHlsZS0+
bmJzcE1vZGUoKSA9PSBTUEFDRTsKLSAgICBpbnQgbmV4dEJyZWFrYWJsZVBvc2l0aW9uID0gbGlu
ZUJyZWFrLm5leHRCcmVha2FibGVQb3NpdGlvbigpOworICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBu
ZXh0QnJlYWthYmxlUG9zaXRpb24gPSBsaW5lQnJlYWsubmV4dEJyZWFrYWJsZVBvc2l0aW9uKCk7
CiAgICAgaXNCcmVha2FibGUobV9yZW5kZXJUZXh0SW5mby5saW5lQnJlYWtJdGVyYXRvciwgbGlu
ZUJyZWFrLm9mZnNldCgpICsgMSwgbmV4dEJyZWFrYWJsZVBvc2l0aW9uLCBicmVha05CU1AsIGlz
TG9vc2VDSktNb2RlLCBtX2N1cnJlbnRTdHlsZS0+d29yZEJyZWFrKCkgPT0gS2VlcEFsbFdvcmRC
cmVhayk7Ci0gICAgaWYgKG5leHRCcmVha2FibGVQb3NpdGlvbiA8IDAgfHwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KG5leHRCcmVha2FibGVQb3NpdGlvbikgIT0gcmVuZGVyVGV4dC50ZXh0TGVuZ3Ro
KCkpCisgICAgaWYgKCFuZXh0QnJlYWthYmxlUG9zaXRpb24gfHwgbmV4dEJyZWFrYWJsZVBvc2l0
aW9uLnZhbHVlKCkgIT0gcmVuZGVyVGV4dC50ZXh0TGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBs
aW5lQnJlYWs7CiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlID0gbGluZVN0eWxlKHJlbmRl
clRleHQsIG1fbGluZUluZm8pOwogICAgIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250ID0gc3R5bGUu
Zm9udENhc2NhZGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaW9zL01pc2MvV2ViVUlL
aXRTdXBwb3J0Lm1tIGIvU291cmNlL1dlYktpdC9pb3MvTWlzYy9XZWJVSUtpdFN1cHBvcnQubW0K
aW5kZXggODk4YjA1NmFhMWI2YmQzNzliZmIyMzI4ZGUzYmY5ODZiNTQyOGNkYy4uN2E5YWM3MmIw
ZWU2NDNiNTA0NjczNTExMzM5ZTRiZDc1MTFjM2QzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9pb3MvTWlzYy9XZWJVSUtpdFN1cHBvcnQubW0KKysrIGIvU291cmNlL1dlYktpdC9pb3MvTWlz
Yy9XZWJVSUtpdFN1cHBvcnQubW0KQEAgLTMzLDEyICszMywxMiBAQAogI2ltcG9ydCAiV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmgiCiAjaW1wb3J0ICJXZWJTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbXBv
cnQgIldlYlZpZXdQcml2YXRlLmgiCisjaW1wb3J0IDxXZWJDb3JlL0JyZWFrTGluZXMuaD4KICNp
bXBvcnQgPFdlYkNvcmUvUGF0aFV0aWxpdGllcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJj
ZVJlcXVlc3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2V0dGluZ3MuaD4KICNpbXBvcnQgPFdlYkNv
cmUvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVGhy
ZWFkU3lzdGVtSW50ZXJmYWNlLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL2JyZWFrX2xpbmVzLmg+CiAj
aW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9keWxkU1BJLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9UZXh0
QnJlYWtJdGVyYXRvci5oPgogCkBAIC04OSwxMiArODksMTIgQEAgZmxvYXQgV2ViS2l0R2V0TWlu
aW11bVpvb21Gb250U2l6ZSh2b2lkKQogCiBpbnQgV2ViS2l0R2V0TGFzdExpbmVCcmVha0luQnVm
ZmVyKFVDaGFyICpjaGFyYWN0ZXJzLCBpbnQgcG9zaXRpb24sIGludCBsZW5ndGgpCiB7Ci0gICAg
aW50IGxhc3RCcmVha1BvcyA9IHBvc2l0aW9uOwotICAgIGludCBicmVha1BvcyA9IDA7CisgICAg
dW5zaWduZWQgbGFzdEJyZWFrUG9zID0gcG9zaXRpb247CisgICAgdW5zaWduZWQgYnJlYWtQb3Mg
PSAwOwogICAgIExhenlMaW5lQnJlYWtJdGVyYXRvciBicmVha0l0ZXJhdG9yKFN0cmluZyhjaGFy
YWN0ZXJzLCBsZW5ndGgpKTsKICAgICB3aGlsZSAoKGJyZWFrUG9zID0gbmV4dEJyZWFrYWJsZVBv
c2l0aW9uKGJyZWFrSXRlcmF0b3IsIGJyZWFrUG9zKSkgPCBwb3NpdGlvbikKICAgICAgICAgbGFz
dEJyZWFrUG9zID0gYnJlYWtQb3MrKzsKLSAgICByZXR1cm4gbGFzdEJyZWFrUG9zIDwgcG9zaXRp
b24gPyAoTlNVSW50ZWdlcilsYXN0QnJlYWtQb3MgOiBJTlRfTUFYOworICAgIHJldHVybiBsYXN0
QnJlYWtQb3MgPCBwb3NpdGlvbiA/IHN0YXRpY19jYXN0PGludD4obGFzdEJyZWFrUG9zKSA6IElO
VF9NQVg7CiB9CiAKIGNvbnN0IGNoYXIgKldlYktpdFBsYXRmb3JtU3lzdGVtUm9vdERpcmVjdG9y
eSh2b2lkKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286125</attachid>
            <date>2016-08-15 18:01:06 -0700</date>
            <delta_ts>2016-08-15 23:21:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160859-20160815175921.patch</filename>
            <type>text/plain</type>
            <size>72337</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0NDg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTk3MGVmOTUwOGZkNjZm
NTU1NmRkZTI3NzVkZmEyMTc2MWM4ZTczZC4uOWUzNDRjYzlkMzk0ZDUyN2E3NTQ1MDg0ZmJhNmRk
ZmYyMjFkNGMwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDE2LTA4LTE1ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgTWlncmF0ZSBs
aW5lIGJyZWFraW5nIGNvZGUgZnJvbSBpbnRzIHRvIE9wdGlvbmFsPHVuc2lnbmVkPnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDg1OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByZXZpb3VzbHksIHdl
IHdlcmUgdXNpbmcgLTEgdG8gbWVhbiAiYmVmb3JlIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0cmlu
ZyIuIE5vdywKKyAgICAgICAgTnVsbG9wdCBtZWFucyB0aGF0LgorCisgICAgICAgIFRoaXMgcGF0
Y2ggYWxzbyByZW5hbWVzIGJyZWFrX2xpbmVzLntoLGNwcH0gdG8gQnJlYWtMaW5lcy57aC5jcHB9
LiBUaGlzIGZpbGUgd2FzCisgICAgICAgIG9yaWdpbmFsbHkgbmFtZWQgZHVyaW5nIHRoZSBLSFRN
TCBkYXlzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2
aW9yIGNoYW5nZS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiByZW5kZXJpbmcvQnJlYWtM
aW5lcy5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvYnJlYWtfbGlu
ZXMuY3BwLgorICAgICAgICAqIHJlbmRlcmluZy9CcmVha0xpbmVzLmg6IFJlbmFtZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvYnJlYWtfbGluZXMuaC4KKyAgICAgICAgKFdlYkNvcmU6
OmlzQnJlYWthYmxlU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkQnJlYWtBZnRlcik6
CisgICAgICAgIChXZWJDb3JlOjpuZWVkc0xpbmVCcmVha0l0ZXJhdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6Om5leHRCcmVha2FibGVQb3NpdGlvbk5vbkxvb3NlbHkpOgorICAgICAgICAoV2ViQ29y
ZTo6bmV4dEJyZWFrYWJsZVBvc2l0aW9uTG9vc2VseSk6CisgICAgICAgIChXZWJDb3JlOjpuZXh0
QnJlYWthYmxlUG9zaXRpb25LZWVwaW5nQWxsV29yZHMpOgorICAgICAgICAoV2ViQ29yZTo6bmV4
dEJyZWFrYWJsZVBvc2l0aW9uS2VlcGluZ0FsbFdvcmRzSWdub3JpbmdOQlNQKToKKyAgICAgICAg
KFdlYkNvcmU6Om5leHRCcmVha2FibGVQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpuZXh0
QnJlYWthYmxlUG9zaXRpb25JZ25vcmluZ05CU1ApOgorICAgICAgICAoV2ViQ29yZTo6bmV4dEJy
ZWFrYWJsZVBvc2l0aW9uTG9vc2UpOgorICAgICAgICAoV2ViQ29yZTo6bmV4dEJyZWFrYWJsZVBv
c2l0aW9uSWdub3JpbmdOQlNQTG9vc2UpOgorICAgICAgICAoV2ViQ29yZTo6aXNCcmVha2FibGUp
OgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5oOgorICAgICAgICAoV2ViQ29y
ZTo6SW5saW5lSXRlcmF0b3I6Om1vdmVUbyk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVy
YXRvcjo6bmV4dEJyZWFrYWJsZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0
ZXJhdG9yOjpzZXROZXh0QnJlYWthYmxlUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5s
aW5lSXRlcmF0b3I6OklubGluZUl0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJp
bmcvSW5saW5lVGV4dEJveC5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxX
aWR0aHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJpbmdBbGxJbk9uZS5jcHA6CisgICAg
ICAgICogcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJdGVyYXRvci5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9icmVha19saW5lcy5oOgorICAgICAgICAoV2ViQ29yZTo6aXNC
cmVha2FibGVTcGFjZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpzaG91bGRCcmVha0Fm
dGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om5lZWRzTGluZUJyZWFrSXRlcmF0b3Ip
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6bmV4dEJyZWFrYWJsZVBvc2l0aW9uTm9uTG9v
c2VseSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpuZXh0QnJlYWthYmxlUG9zaXRpb25M
b29zZWx5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om5leHRCcmVha2FibGVQb3NpdGlv
bktlZXBpbmdBbGxXb3Jkcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpuZXh0QnJlYWth
YmxlUG9zaXRpb25LZWVwaW5nQWxsV29yZHNJZ25vcmluZ05CU1ApOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6bmV4dEJyZWFrYWJsZVBvc2l0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6Om5leHRCcmVha2FibGVQb3NpdGlvbklnbm9yaW5nTkJTUCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpuZXh0QnJlYWthYmxlUG9zaXRpb25Mb29zZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpuZXh0QnJlYWthYmxlUG9zaXRpb25JZ25vcmluZ05CU1BMb29zZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjppc0JyZWFrYWJsZSk6IERlbGV0ZWQuCisgICAgICAg
ICogcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpC
cmVha2luZ0NvbnRleHQ6OmNvbW1pdExpbmVCcmVha0F0Q3VycmVudFdpZHRoKToKKyAgICAgICAg
KFdlYkNvcmU6OkJyZWFraW5nQ29udGV4dDo6SW5saW5lSXRlcmF0b3JIaXN0b3J5OjpuZXh0QnJl
YWthYmxlUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QnJlYWtpbmdDb250ZXh0OjpJbmxp
bmVJdGVyYXRvckhpc3Rvcnk6Om1vdmVUbyk6CisgICAgICAgIChXZWJDb3JlOjp0cnlIeXBoZW5h
dGluZyk6CisgICAgICAgIChXZWJDb3JlOjpCcmVha2luZ0NvbnRleHQ6OmhhbmRsZVRleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6QnJlYWtpbmdDb250ZXh0OjpvcHRpbWFsTGluZUJyZWFrTG9jYXRp
b25Gb3JUcmFpbGluZ1dvcmQpOgorCiAyMDE2LTA4LTE1ICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVuYW1lIFNvY2tldFN0cmVhbUhhbmRs
ZUJhc2UgdG8gU29ja2V0U3RyZWFtSGFuZGxlIGFuZCBTb2NrZXRTdHJlYW1IYW5kbGUgdG8gU29j
a2V0U3RyZWFtSGFuZGxlSW1wbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCmluZGV4IDExMGFmMDk5MjBhYWZkMGY1
OTQyNTNkZmMwMDdiNjM0ZmQ5NjNmZDcuLjYyYmQyNTdjMjlkNzNhNGYwYmY4ZWMzMGE2ZGE5ODg1
MDYwMWNkNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNi0wOC0xNSAg
TXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIE1pZ3Jh
dGUgbGluZSBicmVha2luZyBjb2RlIGZyb20gaW50cyB0byBPcHRpb25hbDx1bnNpZ25lZD5zCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA4NTkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1pc2MvV2Vi
VUlLaXRTdXBwb3J0Lm1tOgorICAgICAgICAoV2ViS2l0R2V0TGFzdExpbmVCcmVha0luQnVmZmVy
KToKKwogMjAxNi0wOC0xNSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgog
CiAgICAgICAgIFJlbW92ZSB1bnVzZWQgaW5jbHVkZXMgb2Ygd3RmIGhlYWRlcnMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKaW5kZXggNjRmZWJlYzk0NTM2NDUwN2M2Y2IxNTRmOGI0Mjg0NDdlY2U2Nzg3OC4u
OTY1MDlmMTE1YzU0NjVjMjRkNmMxZmQwMDllNjk4ZDFjYmM2OTY1MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTI0MDksNiArMjQwOSw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICByZW5k
ZXJpbmcvQXV0b1RhYmxlTGF5b3V0LmNwcAogICAgIHJlbmRlcmluZy9CaWRpUnVuLmNwcAogICAg
IHJlbmRlcmluZy9Cb3JkZXJFZGdlLmNwcAorICAgIHJlbmRlcmluZy9CcmVha0xpbmVzLmNwcAog
ICAgIHJlbmRlcmluZy9DbGlwUmVjdC5jcHAKICAgICByZW5kZXJpbmcvQ291bnRlck5vZGUuY3Bw
CiAgICAgcmVuZGVyaW5nL0VsbGlwc2lzQm94LmNwcApAQCAtMjUyNyw3ICsyNTI4LDYgQEAgc2V0
KFdlYkNvcmVfU09VUkNFUwogICAgIHJlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuY3Bw
CiAgICAgcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmNwcAogICAgIHJlbmRlcmluZy9UZXh0UGFp
bnRlci5jcHAKLSAgICByZW5kZXJpbmcvYnJlYWtfbGluZXMuY3BwCiAKICAgICByZW5kZXJpbmcv
bGluZS9MaW5lQnJlYWtlci5jcHAKICAgICByZW5kZXJpbmcvbGluZS9MaW5lSW5mby5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCAzNDE0MWMxNTEzZjU3MWI4ZGZkOGRlOTBmZTM5ZTNiYTNmMDU4NWNmLi5kMDBjNDk0MzI5OTY0
NzI3MTI0ZGFiY2Q4NzNmM2QyODk4MGNmM2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01NjcxLDggKzU2NzEsNyBAQAogCQlC
Q0VBNDc4RjA5N0NBQUM4MDA5NEM5RTQgLyogQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUE0NzdD
MDk3Q0FBQzgwMDk0QzlFNCAvKiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwICovOyB9
OwogCQlCQ0VBNDc5MDA5N0NBQUM4MDA5NEM5RTQgLyogQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VB
NDc3RDA5N0NBQUM4MDA5NEM5RTQgLyogQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNFQTQ4NTIw
OTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckJsb2NrTGluZUxheW91dC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VBNDgxMzA5N0Q5MzAyMDA5NEM5
RTQgLyogUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcCAqLzsgfTsKLQkJQkNFQTQ4NTQwOTdEOTMw
MjAwOTRDOUU0IC8qIGJyZWFrX2xpbmVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUE0ODE1MDk3RDkzMDIwMDk0QzlFNCAvKiBicmVha19saW5l
cy5jcHAgKi87IH07Ci0JCUJDRUE0ODU1MDk3RDkzMDIwMDk0QzlFNCAvKiBicmVha19saW5lcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFQTQ4MTYw
OTdEOTMwMjAwOTRDOUU0IC8qIGJyZWFrX2xpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkNFQTQ4NTQwOTdEOTMwMjAwOTRDOUU0IC8qIEJy
ZWFrTGluZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkNFQTQ4MTUwOTdEOTMwMjAwOTRDOUU0IC8qIEJyZWFrTGluZXMuY3BwICovOyB9OwogCQlC
Q0VBNDg1OTA5N0Q5MzAyMDA5NEM5RTQgLyogSW5saW5lVGV4dEJveC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VBNDgxQTA5N0Q5MzAyMDA5NEM5
RTQgLyogSW5saW5lVGV4dEJveC5jcHAgKi87IH07CiAJCUJDRUE0ODVBMDk3RDkzMDIwMDk0QzlF
NCAvKiBJbmxpbmVUZXh0Qm94LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQ0VBNDgxQjA5N0Q5MzAyMDA5NEM5RTQgLyogSW5saW5lVGV4dEJveC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDRUE0ODVG
MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJCbG9jay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VBNDgyMDA5N0Q5MzAyMDA5NEM5RTQgLyogUmVu
ZGVyQmxvY2suY3BwICovOyB9OwpAQCAtNTc5MSw2ICs1NzkwLDcgQEAKIAkJQzI4MDgzM0YxQzZE
QzI2RjAwMTQ1MUI2IC8qIEpTRm9udEZhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEMyODA4MzNFMUM2REMyMkMwMDE0NTFCNiAvKiBKU0ZvbnRGYWNl
LmggKi87IH07CiAJCUMyODA4MzQwMUM2REMyNzUwMDE0NTFCNiAvKiBKU0ZvbnRGYWNlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyODA4MzNEMUM2
REMyMkMwMDE0NTFCNiAvKiBKU0ZvbnRGYWNlLmNwcCAqLzsgfTsKIAkJQzI4MDgzNDIxQzZEQzk2
QTAwMTQ1MUI2IC8qIEpTRm9udEZhY2VDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI4MDgzNDExQzZEQzk2QTAwMTQ1MUI2IC8qIEpTRm9u
dEZhY2VDdXN0b20uY3BwICovOyB9OworCQlDMkUxRjQzRjFENjI1NEUxMDA5NDYyNUMgLyogQnJl
YWtMaW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkNFQTQ4MTYwOTdEOTMwMjAwOTRDOUU0IC8qIEJyZWFrTGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMzMwQTIyMzEzRUMxOTZCMDAwMEI0
NUIgLyogQ29sb3JDaG9vc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDMzMwQTIyMTEzRUMxOTZCMDAwMEI0NUIgLyogQ29sb3JDaG9vc2VyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzMzRUU1QzQx
NEZCNDk2MTAwMDIwOTVBIC8qIEJhc2VDbGlja2FibGVXaXRoS2V5SW5wdXRUeXBlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMzM0VFNUMyMTRGQjQ5
NjEwMDAyMDk1QSAvKiBCYXNlQ2xpY2thYmxlV2l0aEtleUlucHV0VHlwZS5jcHAgKi87IH07CiAJ
CUMzM0VFNUM1MTRGQjQ5NjEwMDAyMDk1QSAvKiBCYXNlQ2xpY2thYmxlV2l0aEtleUlucHV0VHlw
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzMzRUU1
QzMxNEZCNDk2MTAwMDIwOTVBIC8qIEJhc2VDbGlja2FibGVXaXRoS2V5SW5wdXRUeXBlLmggKi87
IH07CkBAIC0xMzQ5MSw4ICsxMzQ5MSw4IEBACiAJCUJDRUE0Nzg5MDk3Q0FBQzgwMDk0QzlFNCAv
KiBDU1NQcm9wZXJ0eU5hbWVzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBDU1NQcm9wZXJ0
eU5hbWVzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0VBNDc4QzA5N0NBQUM4
MDA5NEM5RTQgLyogQ1NTVmFsdWVLZXl3b3Jkcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
Q1NTVmFsdWVLZXl3b3Jkcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNFQTQ4
MTMwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckJsb2NrTGluZUxheW91dC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkNFQTQ4MTUwOTdEOTMwMjAwOTRDOUU0IC8q
IGJyZWFrX2xpbmVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBi
cmVha19saW5lcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJDRUE0ODE2MDk3
RDkzMDIwMDk0QzlFNCAvKiBicmVha19saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gYnJlYWtfbGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNF
QTQ4MTUwOTdEOTMwMjAwOTRDOUU0IC8qIEJyZWFrTGluZXMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJyZWFrTGluZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlCQ0VBNDgxNjA5N0Q5MzAyMDA5NEM5RTQgLyogQnJlYWtMaW5lcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnJlYWtMaW5lcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCQ0VBNDgxQTA5N0Q5MzAyMDA5NEM5RTQgLyogSW5saW5lVGV4dEJv
eC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5saW5lVGV4dEJv
eC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRUE0ODFCMDk3RDkzMDIwMDk0
QzlFNCAvKiBJbmxpbmVUZXh0Qm94LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJbmxpbmVUZXh0Qm94Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRUE0ODIw
MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJCbG9jay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyQmxvY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMjM2MzYsOCArMjM2MzYsOCBAQAogCQkJCUJDRTc4OTg1MTEyMEU3QTYwMDYwRUNF
NSAvKiBCaWRpUnVuLmggKi8sCiAJCQkJNThBRUUyRjMxOEQ0QkNDRjAwMjJFN0ZFIC8qIEJvcmRl
ckVkZ2UuY3BwICovLAogCQkJCTU4OTU1NkVDMThENEE0NDAwMDc2NEIwMyAvKiBCb3JkZXJFZGdl
LmggKi8sCi0JCQkJQkNFQTQ4MTUwOTdEOTMwMjAwOTRDOUU0IC8qIGJyZWFrX2xpbmVzLmNwcCAq
LywKLQkJCQlCQ0VBNDgxNjA5N0Q5MzAyMDA5NEM5RTQgLyogYnJlYWtfbGluZXMuaCAqLywKKwkJ
CQlCQ0VBNDgxNTA5N0Q5MzAyMDA5NEM5RTQgLyogQnJlYWtMaW5lcy5jcHAgKi8sCisJCQkJQkNF
QTQ4MTYwOTdEOTMwMjAwOTRDOUU0IC8qIEJyZWFrTGluZXMuaCAqLywKIAkJCQlGQjkyREY0OTE1
RkVEMDg3MDA5OTQ0MzMgLyogQ2xpcFBhdGhPcGVyYXRpb24uaCAqLywKIAkJCQk1ODAzNzE1RjFB
NjZGMDBBMDBCQUY1MTkgLyogQ2xpcFJlY3QuY3BwICovLAogCQkJCTU4MDM3MTYwMUE2NkYwMEEw
MEJBRjUxOSAvKiBDbGlwUmVjdC5oICovLApAQCAtMjQ5MjAsNyArMjQ5MjAsNiBAQAogCQkJCTU4
OTU1NkVEMThENEE0NDAwMDc2NEIwMyAvKiBCb3JkZXJFZGdlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzVFQjVEQjBFODFCN0VBMDBCMjU5NjUgLyogQm9yZGVyVmFsdWUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTZFRDhDMzdBMTgzQkZGOEMwMDlFNTNCRCAvKiBCb3hTaGFwZS5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJQkNFQTQ4NTUwOTdEOTMwMjAwOTRDOUU0IC8qIGJyZWFrX2xpbmVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5MzMwOUREQjA5OUU2NDkyMDA1NkU1ODEgLyogQnJlYWtCbG9ja3F1b3Rl
Q29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTk5RTc1OTAxMTA1NUExRjAwRDkwNEZBIC8q
IEJyaWRnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTlCNTk3NzUxMTA4NjU3OTAwNzE1OUU4IC8q
IEJyaWRnZUpTQy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjEyMSw2ICsyNjEyMCw3IEBACiAJCQkJ
RkRGMDlEQzkxMzk5QjYyMjAwNjg4RTVCIC8qIEpTQmlxdWFkRmlsdGVyTm9kZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMkUyRDk5Q0UxMEUyQkJEQTAwNDk2MzM3IC8qIEpTQmxvYi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMTREQ0YzQjMxQjZCRTIwODAwNjJENEMzIC8qIEpTQnl0ZUxlbmd0aFF1ZXVp
bmdTdHJhdGVneS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzJFMUY0M0YxRDYyNTRFMTAwOTQ2MjVD
IC8qIEJyZWFrTGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0NDlFMjRDMTA3RDRBODQwMEI1
NzkzRiAvKiBKU0NhbGxiYWNrRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjVERjMyM0EwOUQx
REU2NTAwMEJFMzI1IC8qIEpTQ2FudmFzR3JhZGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1
REYzMjNDMDlEMURFNjUwMDBCRTMyNSAvKiBKU0NhbnZhc1BhdHRlcm4uaCBpbiBIZWFkZXJzICov
LApAQCAtMjg4MTIsNyArMjg4MTIsNyBAQAogCQkJCTk3NkQ2QzdFMTIyQjhBM0QwMDFGRDFGNyAv
KiBCbG9iVVJMLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU4QUVFMkY0MThENEJDQ0YwMDIyRTdG
RSAvKiBCb3JkZXJFZGdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTZFRDhDMzc5MTgzQkZGOEMw
MDlFNTNCRCAvKiBCb3hTaGFwZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlCQ0VBNDg1NDA5N0Q5
MzAyMDA5NEM5RTQgLyogYnJlYWtfbGluZXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQkNFQTQ4
NTQwOTdEOTMwMjAwOTRDOUU0IC8qIEJyZWFrTGluZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
OTMzMDlEREEwOTlFNjQ5MjAwNTZFNTgxIC8qIEJyZWFrQmxvY2txdW90ZUNvbW1hbmQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTlCNTk3NzMxMTA4NjU2QjAwNzE1OUU4IC8qIEJyaWRnZUpTQy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk3QTQ1MDMyRjE4REI3MTcyMDAzNzdCMzQgLyogQnVmZmVy
ZWRMaW5lUmVhZGVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0JyZWFrTGluZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Jy
ZWFrTGluZXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmYjUxZGIzODBlNTk3MTEyNjAzMzE1YjcyYTEwZjYz
OWIwYWIxYTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQnJl
YWtMaW5lcy5jcHAKQEAgLTAsMCArMSwxMDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUs
IDIwMDcsIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJCcmVha0xpbmVzLmgiCisKKyNpbmNsdWRlIDx3
dGYvQVNDSUlDVHlwZS5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRl
IDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
Ky8vIFBhY2sgOCBiaXRzIGludG8gb25lIGJ5dGUKKyNkZWZpbmUgQihhLCBiLCBjLCBkLCBlLCBm
LCBnLCBoKSBcCisgICAgKChhKSB8ICgoYikgPDwgMSkgfCAoKGMpIDw8IDIpIHwgKChkKSA8PCAz
KSB8ICgoZSkgPDwgNCkgfCAoKGYpIDw8IDUpIHwgKChnKSA8PCA2KSB8ICgoaCkgPDwgNykpCisK
Ky8vIExpbmUgYnJlYWtpbmcgdGFibGUgcm93IGZvciBlYWNoIGRpZ2l0ICgwLTkpCisjZGVmaW5l
IERJIHsgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCB9CisKKy8vIExpbmUgYnJl
YWtpbmcgdGFibGUgcm93IGZvciBhc2NpaSBsZXR0ZXJzIChhLXogQS1aKQorI2RlZmluZSBBTCB7
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAgfQorCisjZGVmaW5lIEYgMHhGRgor
CisvLyBMaW5lIGJyZWFraW5nIHRhYmxlIGZvciBwcmludGFibGUgQVNDSUkgY2hhcmFjdGVycy4g
TGluZSBicmVha2luZyBvcHBvcnR1bml0aWVzIGluIHRoaXMgdGFibGUgYXJlIGFzIGJlbG93Ogor
Ly8gLSBiZWZvcmUgb3BlbmluZyBwdW5jdHVhdGlvbnMgc3VjaCBhcyAnKCcsICc8JywgJ1snLCAn
eycgYWZ0ZXIgY2VydGFpbiBjaGFyYWN0ZXJzIChjb21wYXRpYmxlIHdpdGggRmlyZWZveCAzLjYp
OworLy8gLSBhZnRlciAnLScgYW5kICc/JyAoYmFja3dhcmQtY29tcGF0aWJsZSwgYW5kIGNvbXBh
dGlibGUgd2l0aCBJbnRlcm5ldCBFeHBsb3JlcikuCisvLyBQbGVhc2UgcmVmZXIgdG8gPGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzY5OD4gZm9yIGxpbmUgYnJlYWtp
bmcgbWF0cml4ZXMgb2YgZGlmZmVyZW50IGJyb3dzZXJzCisvLyBhbmQgdGhlIElDVSBzdGFuZGFy
ZC4KK1dFQkNPUkVfRVhQT1JUIGNvbnN0IHVuc2lnbmVkIGNoYXIgYXNjaWlMaW5lQnJlYWtUYWJs
ZVtdW2FzY2lpTGluZUJyZWFrVGFibGVDb2x1bW5Db3VudF0gPSB7CisgICAgLy8gICEgICIgICMg
ICQgICUgICYgICcgICggICAgICkgICogICsgICwgIC0gIC4gIC8gIDAgIDEtOCAgIDkgIDogIDsg
IDwgID0gID4gID8gIEAgICAgIEEtWCAgICAgIFkgIFogIFsgIFwgIF0gIF4gIF8gIGAgICAgIGEt
eCAgICAgIHkgIHogIHsgIHwgIH0gIH4gIERFTAorICAgIHsgQigwLCAwLCAwLCAwLCAwLCAwLCAw
LCAxKSwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgQigwLCAwLCAwLCAxLCAwLCAwLCAw
LCAwKSwgMCwgMCwgMCwgQigwLCAwLCAxLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAw
LCAxLCAwLCAwLCAwLCAwLCAwKSB9LCAvLyAhCisgICAgeyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDEpLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCBCKDAsIDAsIDAsIDEsIDAsIDAsIDAs
IDApLCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAs
IDEsIDAsIDAsIDAsIDAsIDApIH0sIC8vICIKKyAgICB7IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MSksIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIEIoMCwgMCwgMCwgMSwgMCwgMCwgMCwg
MCksIDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwg
MSwgMCwgMCwgMCwgMCwgMCkgfSwgLy8gIworICAgIHsgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
KSwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
KSwgMCwgMCwgMCwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwKSB9LCAvLyAkCisgICAgeyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEp
LCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCBCKDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAp
LCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEs
IDAsIDAsIDAsIDAsIDApIH0sIC8vICUKKyAgICB7IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSks
IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIEIoMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCks
IDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMSwg
MCwgMCwgMCwgMCwgMCkgfSwgLy8gJgorICAgIHsgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwg
QigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwg
MCwgMCwgMCwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwKSB9LCAvLyAnCisgICAgeyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCBC
KDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAw
LCAwLCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDApIH0sIC8vICgKKyAgICB7IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSksIEIo
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIEIoMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCksIDAs
IDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwg
MCwgMCwgMCwgMCkgfSwgLy8gKQorICAgIHsgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAxKSwgQigw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgQigwLCAwLCAwLCAxLCAwLCAwLCAwLCAwKSwgMCwg
MCwgMCwgQigwLCAwLCAxLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAxLCAwLCAw
LCAwLCAwLCAwKSB9LCAvLyAqCisgICAgeyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEpLCBCKDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCBCKDAsIDAsIDAsIDEsIDAsIDAsIDAsIDApLCAwLCAw
LCAwLCBCKDAsIDAsIDEsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAs
IDAsIDAsIDApIH0sIC8vICsKKyAgICB7IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSksIEIoMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIEIoMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCksIDAsIDAs
IDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwg
MCwgMCwgMCkgfSwgLy8gLAorICAgIHsgQigxLCAxLCAxLCAxLCAxLCAxLCAxLCAxKSwgQigxLCAx
LCAxLCAxLCAxLCAwLCAxLCAwKSwgMCwgQigwLCAxLCAxLCAxLCAxLCAxLCAxLCAxKSwgRiwgRiwg
RiwgQigxLCAxLCAxLCAxLCAxLCAxLCAxLCAxKSwgRiwgRiwgRiwgQigxLCAxLCAxLCAxLCAxLCAx
LCAxLCAxKSB9LCAvLyAtIE5vdGU6IGJyZWFraW5nIGJlZm9yZSAnMCctJzknIGlzIGhhbmRsZWQg
aGFyZC1jb2RlZCBpbiBzaG91bGRCcmVha0FmdGVyKCkuCisgICAgeyBCKDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDEpLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCBCKDAsIDAsIDAsIDEsIDAs
IDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBC
KDAsIDAsIDEsIDAsIDAsIDAsIDAsIDApIH0sIC8vIC4KKyAgICB7IEIoMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCksIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIEIoMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIo
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCkgfSwgLy8gLworICAgIERJLCAgREksICBESSwgIERJLCAg
REksICBESSwgIERJLCAgREksICBESSwgIERJLCAvLyAwLTkKKyAgICB7IEIoMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMSksIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIEIoMCwgMCwgMCwgMSwg
MCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAs
IEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCkgfSwgLy8gOgorICAgIHsgQigwLCAwLCAwLCAwLCAw
LCAwLCAwLCAxKSwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgQigwLCAwLCAwLCAxLCAw
LCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAxLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwg
QigwLCAwLCAxLCAwLCAwLCAwLCAwLCAwKSB9LCAvLyA7CisgICAgeyBCKDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDApLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCBCKDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBC
KDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApIH0sIC8vIDwKKyAgICB7IEIoMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMSksIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIEIoMCwgMCwgMCwgMSwgMCwg
MCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIo
MCwgMCwgMSwgMCwgMCwgMCwgMCwgMCkgfSwgLy8gPQorICAgIHsgQigwLCAwLCAwLCAwLCAwLCAw
LCAwLCAxKSwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgQigwLCAwLCAwLCAxLCAwLCAw
LCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAxLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigw
LCAwLCAxLCAwLCAwLCAwLCAwLCAwKSB9LCAvLyA+CisgICAgeyBCKDAsIDAsIDEsIDEsIDEsIDEs
IDAsIDEpLCBCKDAsIDEsIDEsIDAsIDEsIDAsIDAsIDEpLCBGLCBCKDEsIDAsIDAsIDEsIDEsIDEs
IDAsIDEpLCBGLCBGLCBGLCBCKDEsIDEsIDEsIDEsIDAsIDEsIDEsIDEpLCBGLCBGLCBGLCBCKDEs
IDEsIDEsIDEsIDAsIDEsIDEsIDApIH0sIC8vID8KKyAgICB7IEIoMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCksIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIEIoMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCkgfSwgLy8gQAorICAgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUws
ICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAg
QUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsIC8vIEEtWgor
ICAgIHsgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
KSwgMCwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSB9LCAvLyBbCisg
ICAgeyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEpLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAp
LCAwLCBCKDAsIDAsIDAsIDEsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAs
IDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAsIDAsIDAsIDApIH0sIC8vICdcJwor
ICAgIHsgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAxKSwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
KSwgMCwgQigwLCAwLCAwLCAxLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAxLCAwLCAw
LCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAxLCAwLCAwLCAwLCAwLCAwKSB9LCAvLyBdCisg
ICAgeyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAp
LCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApIH0sIC8vIF4KKyAg
ICB7IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCks
IDAsIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCkgfSwgLy8gXworICAg
IHsgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwg
MCwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSB9LCAvLyBgCisgICAg
QUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFM
LCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwg
IEFMLCAgQUwsICBBTCwgLy8gYS16CisgICAgeyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCBC
KDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAw
LCAwLCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDApIH0sIC8vIHsKKyAgICB7IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSksIEIo
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIEIoMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCksIDAs
IDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwg
MCwgMCwgMCwgMCkgfSwgLy8gfAorICAgIHsgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAxKSwgQigw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgQigwLCAwLCAwLCAxLCAwLCAwLCAwLCAwKSwgMCwg
MCwgMCwgQigwLCAwLCAxLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAxLCAwLCAw
LCAwLCAwLCAwKSB9LCAvLyB9CisgICAgeyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEpLCBCKDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCBCKDAsIDAsIDAsIDEsIDAsIDAsIDAsIDApLCAwLCAw
LCAwLCBCKDAsIDAsIDEsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAs
IDAsIDAsIDApIH0sIC8vIH4KKyAgICB7IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIEIoMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIDAs
IDAsIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCkgfSwgLy8gREVMCit9OworCisjdW5kZWYgQgorI3VuZGVmIEYKKyN1bmRlZiBESQor
I3VuZGVmIEFMCisKK0NPTVBJTEVfQVNTRVJUKFdURl9BUlJBWV9MRU5HVEgoYXNjaWlMaW5lQnJl
YWtUYWJsZSkgPT0gYXNjaWlMaW5lQnJlYWtUYWJsZUxhc3RDaGFyIC0gYXNjaWlMaW5lQnJlYWtU
YWJsZUZpcnN0Q2hhciArIDEsIFRlc3RMaW5lQnJlYWtUYWJsZUNvbnNpc3RlbmN5KTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0JyZWFrTGluZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9CcmVha0xpbmVzLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYWRlMGE0NWM4YWJmNTZjZjQ3YjZlN2MyZDA2MmUzZDdhOWY5MjFmNwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9CcmVha0xpbmVzLmgKQEAgLTAs
MCArMSwyNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDcsIDIwMTAsIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaWZuZGVmIEJyZWFrTGluZXNfaAor
I2RlZmluZSBCcmVha0xpbmVzX2gKKworI2luY2x1ZGUgPHVuaWNvZGUvdWJyay5oPgorI2luY2x1
ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CisjaW5jbHVkZSA8d3RmL3VuaWNv
ZGUvQ2hhcmFjdGVyTmFtZXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgY29u
c3QgVUNoYXIgYXNjaWlMaW5lQnJlYWtUYWJsZUZpcnN0Q2hhciA9ICchJzsKK3N0YXRpYyBjb25z
dCBVQ2hhciBhc2NpaUxpbmVCcmVha1RhYmxlTGFzdENoYXIgPSAxMjc7CitzdGF0aWMgY29uc3Qg
dW5zaWduZWQgYXNjaWlMaW5lQnJlYWtUYWJsZUNvbHVtbkNvdW50ID0gKGFzY2lpTGluZUJyZWFr
VGFibGVMYXN0Q2hhciAtIGFzY2lpTGluZUJyZWFrVGFibGVGaXJzdENoYXIpIC8gOCArIDE7CisK
K1dFQkNPUkVfRVhQT1JUIGV4dGVybiBjb25zdCB1bnNpZ25lZCBjaGFyIGFzY2lpTGluZUJyZWFr
VGFibGVbXVthc2NpaUxpbmVCcmVha1RhYmxlQ29sdW1uQ291bnRdOworCitlbnVtIGNsYXNzIE5C
U1BCZWhhdmlvciB7CisgICAgSWdub3JlTkJTUCwKKyAgICBUcmVhdE5CU1BBc0JyZWFrLAorfTsK
KwordGVtcGxhdGU8TkJTUEJlaGF2aW9yIG5ic3BCZWhhdmlvcj4KK3N0YXRpYyBpbmxpbmUgYm9v
bCBpc0JyZWFrYWJsZVNwYWNlKFVDaGFyIGNoYXJhY3RlcikKK3sKKyAgICBzd2l0Y2ggKGNoYXJh
Y3RlcikgeworICAgIGNhc2UgJyAnOgorICAgIGNhc2UgJ1xuJzoKKyAgICBjYXNlICdcdCc6Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIGNhc2Ugbm9CcmVha1NwYWNlOgorICAgICAgICByZXR1
cm4gbmJzcEJlaGF2aW9yID09IE5CU1BCZWhhdmlvcjo6VHJlYXROQlNQQXNCcmVhazsKKyAgICBk
ZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBz
aG91bGRCcmVha0FmdGVyKFVDaGFyIGxhc3RDaGFyYWN0ZXIsIFVDaGFyIGNoYXJhY3RlciwgVUNo
YXIgbmV4dENoYXJhY3RlcikKK3sKKyAgICAvLyBEb24ndCBhbGxvdyBsaW5lIGJyZWFraW5nIGJl
dHdlZW4gJy0nIGFuZCBhIGRpZ2l0IGlmIHRoZSAnLScgbWF5IG1lYW4gYSBtaW51cyBzaWduIGlu
IHRoZSBjb250ZXh0LAorICAgIC8vIHdoaWxlIGFsbG93IGJyZWFraW5nIGluICdBQkNELTEyMzQn
IGFuZCAnMTIzNC01Njc4JyB3aGljaCBtYXkgYmUgaW4gbG9uZyBVUkxzLgorICAgIGlmIChjaGFy
YWN0ZXIgPT0gJy0nICYmIGlzQVNDSUlEaWdpdChuZXh0Q2hhcmFjdGVyKSkKKyAgICAgICAgcmV0
dXJuIGlzQVNDSUlBbHBoYW51bWVyaWMobGFzdENoYXJhY3Rlcik7CisKKyAgICAvLyBJZiBib3Ro
IGNoIGFuZCBuZXh0Q2ggYXJlIEFTQ0lJIGNoYXJhY3RlcnMsIHVzZSBhIGxvb2t1cCB0YWJsZSBm
b3IgZW5oYW5jZWQgc3BlZWQgYW5kIGZvciBjb21wYXRpYmlsaXR5CisgICAgLy8gd2l0aCBvdGhl
ciBicm93c2VycyAoc2VlIGNvbW1lbnRzIGZvciBhc2NpaUxpbmVCcmVha1RhYmxlIGZvciBkZXRh
aWxzKS4KKyAgICBpZiAoY2hhcmFjdGVyID49IGFzY2lpTGluZUJyZWFrVGFibGVGaXJzdENoYXIg
JiYgY2hhcmFjdGVyIDw9IGFzY2lpTGluZUJyZWFrVGFibGVMYXN0Q2hhciAmJiBuZXh0Q2hhcmFj
dGVyID49IGFzY2lpTGluZUJyZWFrVGFibGVGaXJzdENoYXIgJiYgbmV4dENoYXJhY3RlciA8PSBh
c2NpaUxpbmVCcmVha1RhYmxlTGFzdENoYXIpIHsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgY2hh
ciogdGFibGVSb3cgPSBhc2NpaUxpbmVCcmVha1RhYmxlW2NoYXJhY3RlciAtIGFzY2lpTGluZUJy
ZWFrVGFibGVGaXJzdENoYXJdOworICAgICAgICB1bnNpZ25lZCBuZXh0Q2hhcmFjdGVySW5kZXgg
PSBuZXh0Q2hhcmFjdGVyIC0gYXNjaWlMaW5lQnJlYWtUYWJsZUZpcnN0Q2hhcjsKKyAgICAgICAg
cmV0dXJuIHRhYmxlUm93W25leHRDaGFyYWN0ZXJJbmRleCAvIDhdICYgKDEgPDwgKG5leHRDaGFy
YWN0ZXJJbmRleCAlIDgpKTsKKyAgICB9CisgICAgLy8gT3RoZXJ3aXNlIGRlZmVyIHRvIHRoZSBV
bmljb2RlIGFsZ29yaXRobSBieSByZXR1cm5pbmcgZmFsc2UuCisgICAgcmV0dXJuIGZhbHNlOwor
fQorCit0ZW1wbGF0ZTxOQlNQQmVoYXZpb3IgbmJzcEJlaGF2aW9yPgoraW5saW5lIGJvb2wgbmVl
ZHNMaW5lQnJlYWtJdGVyYXRvcihVQ2hhciBjaGFyYWN0ZXIpCit7CisgICAgaWYgKG5ic3BCZWhh
dmlvciA9PSBOQlNQQmVoYXZpb3I6OlRyZWF0TkJTUEFzQnJlYWspCisgICAgICAgIHJldHVybiBj
aGFyYWN0ZXIgPiBhc2NpaUxpbmVCcmVha1RhYmxlTGFzdENoYXI7CisgICAgcmV0dXJuIGNoYXJh
Y3RlciA+IGFzY2lpTGluZUJyZWFrVGFibGVMYXN0Q2hhciAmJiBjaGFyYWN0ZXIgIT0gbm9CcmVh
a1NwYWNlOworfQorCisvLyBXaGVuIGluIG5vbi1sb29zZSBtb2RlLCB3ZSBjYW4gdXNlIHRoZSBB
U0NJSSBzaG9ydGN1dCB0YWJsZS4KK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIE5C
U1BCZWhhdmlvciBuYnNwQmVoYXZpb3I+CitpbmxpbmUgdW5zaWduZWQgbmV4dEJyZWFrYWJsZVBv
c2l0aW9uTm9uTG9vc2VseShMYXp5TGluZUJyZWFrSXRlcmF0b3ImIGxhenlCcmVha0l0ZXJhdG9y
LCBjb25zdCBDaGFyYWN0ZXJUeXBlKiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQg
c3RhcnRQb3NpdGlvbikKK3sKKyAgICBPcHRpb25hbDx1bnNpZ25lZD4gbmV4dEJyZWFrOworCisg
ICAgQ2hhcmFjdGVyVHlwZSBsYXN0TGFzdENoYXJhY3RlciA9IHN0YXJ0UG9zaXRpb24gPiAxID8g
c3RyaW5nW3N0YXJ0UG9zaXRpb24gLSAyXSA6IHN0YXRpY19jYXN0PENoYXJhY3RlclR5cGU+KGxh
enlCcmVha0l0ZXJhdG9yLnNlY29uZFRvTGFzdENoYXJhY3RlcigpKTsKKyAgICBDaGFyYWN0ZXJU
eXBlIGxhc3RDaGFyYWN0ZXIgPSBzdGFydFBvc2l0aW9uID4gMCA/IHN0cmluZ1tzdGFydFBvc2l0
aW9uIC0gMV0gOiBzdGF0aWNfY2FzdDxDaGFyYWN0ZXJUeXBlPihsYXp5QnJlYWtJdGVyYXRvci5s
YXN0Q2hhcmFjdGVyKCkpOworICAgIHVuc2lnbmVkIHByaW9yQ29udGV4dExlbmd0aCA9IGxhenlC
cmVha0l0ZXJhdG9yLnByaW9yQ29udGV4dExlbmd0aCgpOworICAgIGZvciAodW5zaWduZWQgaSA9
IHN0YXJ0UG9zaXRpb247IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBDaGFyYWN0ZXJUeXBl
IGNoYXJhY3RlciA9IHN0cmluZ1tpXTsKKworICAgICAgICAvLyBOb24tbG9vc2UgbW9kZSwgc28g
dXNlIEFTQ0lJIHNob3J0Y3V0IChzaG91bGRCcmVha0FmdGVyKSBpZiBub3QgYnJlYWthYmxlIHNw
YWNlLgorICAgICAgICBpZiAoaXNCcmVha2FibGVTcGFjZTxuYnNwQmVoYXZpb3I+KGNoYXJhY3Rl
cikgfHwgc2hvdWxkQnJlYWtBZnRlcihsYXN0TGFzdENoYXJhY3RlciwgbGFzdENoYXJhY3Rlciwg
Y2hhcmFjdGVyKSkKKyAgICAgICAgICAgIHJldHVybiBpOworCisgICAgICAgIC8vIE5vbi1sb29z
ZSBtb2RlLCBzbyBjb25kaXRpb25hbGx5IHVzZSBicmVhayBpdGVyYXRvci4KKyAgICAgICAgaWYg
KG5lZWRzTGluZUJyZWFrSXRlcmF0b3I8bmJzcEJlaGF2aW9yPihjaGFyYWN0ZXIpIHx8IG5lZWRz
TGluZUJyZWFrSXRlcmF0b3I8bmJzcEJlaGF2aW9yPihsYXN0Q2hhcmFjdGVyKSkgeworICAgICAg
ICAgICAgaWYgKCFuZXh0QnJlYWsgfHwgbmV4dEJyZWFrLnZhbHVlKCkgPCBpKSB7CisgICAgICAg
ICAgICAgICAgLy8gRG9uJ3QgYnJlYWsgaWYgcG9zaXRpb25lZCBhdCBzdGFydCBvZiBwcmltYXJ5
IGNvbnRleHQgYW5kIHRoZXJlIGlzIG5vIHByaW9yIGNvbnRleHQuCisgICAgICAgICAgICAgICAg
aWYgKGkgfHwgcHJpb3JDb250ZXh0TGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgICAgIFRleHRC
cmVha0l0ZXJhdG9yKiBicmVha0l0ZXJhdG9yID0gbGF6eUJyZWFrSXRlcmF0b3IuZ2V0KHByaW9y
Q29udGV4dExlbmd0aCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChicmVha0l0ZXJhdG9yKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2FuZGlkYXRlID0gdGV4dEJyZWFrRm9sbG93
aW5nKGJyZWFrSXRlcmF0b3IsIGkgLSAxICsgcHJpb3JDb250ZXh0TGVuZ3RoKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChjYW5kaWRhdGUgPT0gVUJSS19ET05FKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG5leHRCcmVhayA9IE51bGxvcHQ7CisgICAgICAgICAgICAgICAgICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCByZXN1bHQg
PSBjYW5kaWRhdGU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCA+
PSBwcmlvckNvbnRleHRMZW5ndGgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRC
cmVhayA9IHJlc3VsdCAtIHByaW9yQ29udGV4dExlbmd0aDsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGlmIChpID09IG5leHRCcmVhayAmJiAhaXNCcmVha2FibGVTcGFj
ZTxuYnNwQmVoYXZpb3I+KGxhc3RDaGFyYWN0ZXIpKQorICAgICAgICAgICAgICAgIHJldHVybiBp
OworICAgICAgICB9CisKKyAgICAgICAgbGFzdExhc3RDaGFyYWN0ZXIgPSBsYXN0Q2hhcmFjdGVy
OworICAgICAgICBsYXN0Q2hhcmFjdGVyID0gY2hhcmFjdGVyOworICAgIH0KKworICAgIHJldHVy
biBsZW5ndGg7Cit9CisKKy8vIFdoZW4gaW4gbG9vc2UgbW9kZSwgd2UgY2FuJ3QgdXNlIHRoZSBB
U0NJSSBzaG9ydGN1dCB0YWJsZSBzaW5jZSBsb29zZSBtb2RlIGFsbG93cyAiJDEwMCIgdG8gYnJl
YWsgYWZ0ZXIgJyQnIGluIGNvbnRlbnQgbWFya2VkIGFzIENKSy4KKy8vIE4uQi4gSXQgc2hvdWxk
IGJlIHBvc3NpYmxlIHRvIGNvbWJpbmUgdGhlIGZvbGxvd2luZyB3aXRoIHRoZSBub24tbG9vc2Ug
dmVyc2lvbiBhYm92ZSBieSBhZGRpbmcgYSBMb29zZUJlaGF2aW9yIHRlbXBsYXRlIHBhcmFtZXRl
cjsKKy8vIGhvd2V2ZXIsIHdoZW4gZG9pbmcgdGhpcywgYSAxMCUgcGVyZm9ybWFuY2UgcmVncmVz
c2lvbiBhcHBlYXJlZCBvbiBjaHJvbWl1bS13aW4gKGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04OTIzNSNjMTEyKS4KK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGUsIE5CU1BCZWhhdmlvciBuYnNwQmVoYXZpb3I+CitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIG5l
eHRCcmVha2FibGVQb3NpdGlvbkxvb3NlbHkoTGF6eUxpbmVCcmVha0l0ZXJhdG9yJiBsYXp5QnJl
YWtJdGVyYXRvciwgY29uc3QgQ2hhcmFjdGVyVHlwZSogc3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgs
IHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24pCit7CisgICAgT3B0aW9uYWw8dW5zaWduZWQ+IG5leHRC
cmVhazsKKworICAgIENoYXJhY3RlclR5cGUgbGFzdENoYXJhY3RlciA9IHN0YXJ0UG9zaXRpb24g
PiAwID8gc3RyaW5nW3N0YXJ0UG9zaXRpb24gLSAxXSA6IHN0YXRpY19jYXN0PENoYXJhY3RlclR5
cGU+KGxhenlCcmVha0l0ZXJhdG9yLmxhc3RDaGFyYWN0ZXIoKSk7CisgICAgdW5zaWduZWQgcHJp
b3JDb250ZXh0TGVuZ3RoID0gbGF6eUJyZWFrSXRlcmF0b3IucHJpb3JDb250ZXh0TGVuZ3RoKCk7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gc3RhcnRQb3NpdGlvbjsgaSA8IGxlbmd0aDsgaSsrKSB7
CisgICAgICAgIENoYXJhY3RlclR5cGUgY2hhcmFjdGVyID0gc3RyaW5nW2ldOworCisgICAgICAg
IC8vIEFsd2F5cyBsb29zZSBtb2RlLCBzbyBkb24ndCB1c2UgQVNDSUkgc2hvcnRjdXQgKHNob3Vs
ZEJyZWFrQWZ0ZXIpLgorICAgICAgICBpZiAoaXNCcmVha2FibGVTcGFjZTxuYnNwQmVoYXZpb3I+
KGNoYXJhY3RlcikpCisgICAgICAgICAgICByZXR1cm4gaTsKKworICAgICAgICAvLyBBbHdheXMg
dXNlIGxpbmUgYnJlYWsgaXRlcmF0b3IgaW4gbG9vc2UgbW9kZS4KKyAgICAgICAgaWYgKCFuZXh0
QnJlYWsgfHwgbmV4dEJyZWFrLnZhbHVlKCkgPCBpKSB7CisgICAgICAgICAgICAvLyBEb24ndCBi
cmVhayBpZiBwb3NpdGlvbmVkIGF0IHN0YXJ0IG9mIHByaW1hcnkgY29udGV4dCBhbmQgdGhlcmUg
aXMgbm8gcHJpb3IgY29udGV4dC4KKyAgICAgICAgICAgIGlmIChpIHx8IHByaW9yQ29udGV4dExl
bmd0aCkgeworICAgICAgICAgICAgICAgIFRleHRCcmVha0l0ZXJhdG9yKiBicmVha0l0ZXJhdG9y
ID0gbGF6eUJyZWFrSXRlcmF0b3IuZ2V0KHByaW9yQ29udGV4dExlbmd0aCk7CisgICAgICAgICAg
ICAgICAgaWYgKGJyZWFrSXRlcmF0b3IpIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGkg
KyBwcmlvckNvbnRleHRMZW5ndGggPj0gMSk7CisgICAgICAgICAgICAgICAgICAgIGludCBjYW5k
aWRhdGUgPSB0ZXh0QnJlYWtGb2xsb3dpbmcoYnJlYWtJdGVyYXRvciwgaSArIHByaW9yQ29udGV4
dExlbmd0aCAtIDEpOworICAgICAgICAgICAgICAgICAgICBpZiAoY2FuZGlkYXRlID09IFVCUktf
RE9ORSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG5leHRCcmVhayA9IE51bGxvcHQ7CisgICAg
ICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
cmVzdWx0ID0gY2FuZGlkYXRlOworICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlc3Vs
dCA+IHByaW9yQ29udGV4dExlbmd0aCk7CisgICAgICAgICAgICAgICAgICAgICAgICBuZXh0QnJl
YWsgPSByZXN1bHQgLSBwcmlvckNvbnRleHRMZW5ndGg7CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYg
KGkgPT0gbmV4dEJyZWFrICYmICFpc0JyZWFrYWJsZVNwYWNlPG5ic3BCZWhhdmlvcj4obGFzdENo
YXJhY3RlcikpCisgICAgICAgICAgICByZXR1cm4gaTsKKworICAgICAgICBsYXN0Q2hhcmFjdGVy
ID0gY2hhcmFjdGVyOworICAgIH0KKworICAgIHJldHVybiBsZW5ndGg7Cit9CisKK3RlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIE5CU1BCZWhhdmlvciBuYnNwQmVoYXZpb3I+Citpbmxp
bmUgdW5zaWduZWQgbmV4dEJyZWFrYWJsZVBvc2l0aW9uS2VlcGluZ0FsbFdvcmRzKGNvbnN0IENo
YXJhY3RlclR5cGUqIHN0cmluZywgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBzdGFydFBvc2l0
aW9uKQoreworICAgIGZvciAodW5zaWduZWQgaSA9IHN0YXJ0UG9zaXRpb247IGkgPCBsZW5ndGg7
IGkrKykgeworICAgICAgICBpZiAoaXNCcmVha2FibGVTcGFjZTxuYnNwQmVoYXZpb3I+KHN0cmlu
Z1tpXSkpCisgICAgICAgICAgICByZXR1cm4gaTsKKyAgICB9CisgICAgcmV0dXJuIGxlbmd0aDsK
K30KKworaW5saW5lIHVuc2lnbmVkIG5leHRCcmVha2FibGVQb3NpdGlvbktlZXBpbmdBbGxXb3Jk
cyhMYXp5TGluZUJyZWFrSXRlcmF0b3ImIGxhenlCcmVha0l0ZXJhdG9yLCB1bnNpZ25lZCBzdGFy
dFBvc2l0aW9uKQoreworICAgIFN0cmluZyBzdHJpbmcgPSBsYXp5QnJlYWtJdGVyYXRvci5zdHJp
bmcoKTsKKyAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKQorICAgICAgICByZXR1cm4gbmV4dEJyZWFr
YWJsZVBvc2l0aW9uS2VlcGluZ0FsbFdvcmRzPExDaGFyLCBOQlNQQmVoYXZpb3I6OlRyZWF0TkJT
UEFzQnJlYWs+KHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCksIHN0YXJ0UG9z
aXRpb24pOworICAgIHJldHVybiBuZXh0QnJlYWthYmxlUG9zaXRpb25LZWVwaW5nQWxsV29yZHM8
VUNoYXIsIE5CU1BCZWhhdmlvcjo6VHJlYXROQlNQQXNCcmVhaz4oc3RyaW5nLmNoYXJhY3RlcnMx
NigpLCBzdHJpbmcubGVuZ3RoKCksIHN0YXJ0UG9zaXRpb24pOworfQorCitpbmxpbmUgdW5zaWdu
ZWQgbmV4dEJyZWFrYWJsZVBvc2l0aW9uS2VlcGluZ0FsbFdvcmRzSWdub3JpbmdOQlNQKExhenlM
aW5lQnJlYWtJdGVyYXRvciYgaXRlcmF0b3IsIHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24pCit7Cisg
ICAgU3RyaW5nIHN0cmluZyA9IGl0ZXJhdG9yLnN0cmluZygpOworICAgIGlmIChzdHJpbmcuaXM4
Qml0KCkpCisgICAgICAgIHJldHVybiBuZXh0QnJlYWthYmxlUG9zaXRpb25LZWVwaW5nQWxsV29y
ZHM8TENoYXIsIE5CU1BCZWhhdmlvcjo6SWdub3JlTkJTUD4oc3RyaW5nLmNoYXJhY3RlcnM4KCks
IHN0cmluZy5sZW5ndGgoKSwgc3RhcnRQb3NpdGlvbik7CisgICAgcmV0dXJuIG5leHRCcmVha2Fi
bGVQb3NpdGlvbktlZXBpbmdBbGxXb3JkczxVQ2hhciwgTkJTUEJlaGF2aW9yOjpJZ25vcmVOQlNQ
PihzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0cmluZy5sZW5ndGgoKSwgc3RhcnRQb3NpdGlvbik7
Cit9CisKK2lubGluZSB1bnNpZ25lZCBuZXh0QnJlYWthYmxlUG9zaXRpb24oTGF6eUxpbmVCcmVh
a0l0ZXJhdG9yJiBpdGVyYXRvciwgdW5zaWduZWQgc3RhcnRQb3NpdGlvbikKK3sKKyAgICBTdHJp
bmcgc3RyaW5nID0gaXRlcmF0b3Iuc3RyaW5nKCk7CisgICAgaWYgKHN0cmluZy5pczhCaXQoKSkK
KyAgICAgICAgcmV0dXJuIG5leHRCcmVha2FibGVQb3NpdGlvbk5vbkxvb3NlbHk8TENoYXIsIE5C
U1BCZWhhdmlvcjo6VHJlYXROQlNQQXNCcmVhaz4oaXRlcmF0b3IsIHN0cmluZy5jaGFyYWN0ZXJz
OCgpLCBzdHJpbmcubGVuZ3RoKCksIHN0YXJ0UG9zaXRpb24pOworICAgIHJldHVybiBuZXh0QnJl
YWthYmxlUG9zaXRpb25Ob25Mb29zZWx5PFVDaGFyLCBOQlNQQmVoYXZpb3I6OlRyZWF0TkJTUEFz
QnJlYWs+KGl0ZXJhdG9yLCBzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0cmluZy5sZW5ndGgoKSwg
c3RhcnRQb3NpdGlvbik7Cit9CisKK2lubGluZSB1bnNpZ25lZCBuZXh0QnJlYWthYmxlUG9zaXRp
b25JZ25vcmluZ05CU1AoTGF6eUxpbmVCcmVha0l0ZXJhdG9yJiBsYXp5QnJlYWtJdGVyYXRvciwg
dW5zaWduZWQgc3RhcnRQb3NpdGlvbikKK3sKKyAgICBTdHJpbmcgc3RyaW5nID0gbGF6eUJyZWFr
SXRlcmF0b3Iuc3RyaW5nKCk7CisgICAgaWYgKHN0cmluZy5pczhCaXQoKSkKKyAgICAgICAgcmV0
dXJuIG5leHRCcmVha2FibGVQb3NpdGlvbk5vbkxvb3NlbHk8TENoYXIsIE5CU1BCZWhhdmlvcjo6
SWdub3JlTkJTUD4obGF6eUJyZWFrSXRlcmF0b3IsIHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJp
bmcubGVuZ3RoKCksIHN0YXJ0UG9zaXRpb24pOworICAgIHJldHVybiBuZXh0QnJlYWthYmxlUG9z
aXRpb25Ob25Mb29zZWx5PFVDaGFyLCBOQlNQQmVoYXZpb3I6Oklnbm9yZU5CU1A+KGxhenlCcmVh
a0l0ZXJhdG9yLCBzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0cmluZy5sZW5ndGgoKSwgc3RhcnRQ
b3NpdGlvbik7Cit9CisKK2lubGluZSB1bnNpZ25lZCBuZXh0QnJlYWthYmxlUG9zaXRpb25Mb29z
ZShMYXp5TGluZUJyZWFrSXRlcmF0b3ImIGxhenlCcmVha0l0ZXJhdG9yLCB1bnNpZ25lZCBzdGFy
dFBvc2l0aW9uKQoreworICAgIFN0cmluZyBzdHJpbmcgPSBsYXp5QnJlYWtJdGVyYXRvci5zdHJp
bmcoKTsKKyAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKQorICAgICAgICByZXR1cm4gbmV4dEJyZWFr
YWJsZVBvc2l0aW9uTG9vc2VseTxMQ2hhciwgTkJTUEJlaGF2aW9yOjpUcmVhdE5CU1BBc0JyZWFr
PihsYXp5QnJlYWtJdGVyYXRvciwgc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgo
KSwgc3RhcnRQb3NpdGlvbik7CisgICAgcmV0dXJuIG5leHRCcmVha2FibGVQb3NpdGlvbkxvb3Nl
bHk8VUNoYXIsIE5CU1BCZWhhdmlvcjo6VHJlYXROQlNQQXNCcmVhaz4obGF6eUJyZWFrSXRlcmF0
b3IsIHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nLmxlbmd0aCgpLCBzdGFydFBvc2l0aW9u
KTsKK30KKworaW5saW5lIHVuc2lnbmVkIG5leHRCcmVha2FibGVQb3NpdGlvbklnbm9yaW5nTkJT
UExvb3NlKExhenlMaW5lQnJlYWtJdGVyYXRvciYgbGF6eUJyZWFrSXRlcmF0b3IsIHVuc2lnbmVk
IHN0YXJ0UG9zaXRpb24pCit7CisgICAgU3RyaW5nIHN0cmluZyA9IGxhenlCcmVha0l0ZXJhdG9y
LnN0cmluZygpOworICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBuZXh0
QnJlYWthYmxlUG9zaXRpb25Mb29zZWx5PExDaGFyLCBOQlNQQmVoYXZpb3I6Oklnbm9yZU5CU1A+
KGxhenlCcmVha0l0ZXJhdG9yLCBzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgp
LCBzdGFydFBvc2l0aW9uKTsKKyAgICByZXR1cm4gbmV4dEJyZWFrYWJsZVBvc2l0aW9uTG9vc2Vs
eTxVQ2hhciwgTkJTUEJlaGF2aW9yOjpJZ25vcmVOQlNQPihsYXp5QnJlYWtJdGVyYXRvciwgc3Ry
aW5nLmNoYXJhY3RlcnMxNigpLCBzdHJpbmcubGVuZ3RoKCksIHN0YXJ0UG9zaXRpb24pOworfQor
CitpbmxpbmUgYm9vbCBpc0JyZWFrYWJsZShMYXp5TGluZUJyZWFrSXRlcmF0b3ImIGxhenlCcmVh
a0l0ZXJhdG9yLCB1bnNpZ25lZCBzdGFydFBvc2l0aW9uLCBPcHRpb25hbDx1bnNpZ25lZD4mIG5l
eHRCcmVha2FibGUsIGJvb2wgYnJlYWtOQlNQLCBib29sIGlzTG9vc2VNb2RlLCBib29sIGtlZXBB
bGxXb3JkcykKK3sKKyAgICBpZiAobmV4dEJyZWFrYWJsZSAmJiBuZXh0QnJlYWthYmxlLnZhbHVl
KCkgPj0gc3RhcnRQb3NpdGlvbikKKyAgICAgICAgcmV0dXJuIHN0YXJ0UG9zaXRpb24gPT0gbmV4
dEJyZWFrYWJsZTsKKworICAgIGlmIChrZWVwQWxsV29yZHMpIHsKKyAgICAgICAgaWYgKGJyZWFr
TkJTUCkKKyAgICAgICAgICAgIG5leHRCcmVha2FibGUgPSBuZXh0QnJlYWthYmxlUG9zaXRpb25L
ZWVwaW5nQWxsV29yZHMobGF6eUJyZWFrSXRlcmF0b3IsIHN0YXJ0UG9zaXRpb24pOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBuZXh0QnJlYWthYmxlID0gbmV4dEJyZWFrYWJsZVBvc2l0aW9u
S2VlcGluZ0FsbFdvcmRzSWdub3JpbmdOQlNQKGxhenlCcmVha0l0ZXJhdG9yLCBzdGFydFBvc2l0
aW9uKTsKKyAgICB9IGVsc2UgaWYgKGlzTG9vc2VNb2RlKSB7CisgICAgICAgIGlmIChicmVha05C
U1ApCisgICAgICAgICAgICBuZXh0QnJlYWthYmxlID0gbmV4dEJyZWFrYWJsZVBvc2l0aW9uTG9v
c2UobGF6eUJyZWFrSXRlcmF0b3IsIHN0YXJ0UG9zaXRpb24pOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBuZXh0QnJlYWthYmxlID0gbmV4dEJyZWFrYWJsZVBvc2l0aW9uSWdub3JpbmdOQlNQ
TG9vc2UobGF6eUJyZWFrSXRlcmF0b3IsIHN0YXJ0UG9zaXRpb24pOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIGlmIChicmVha05CU1ApCisgICAgICAgICAgICBuZXh0QnJlYWthYmxlID0gbmV4dEJy
ZWFrYWJsZVBvc2l0aW9uKGxhenlCcmVha0l0ZXJhdG9yLCBzdGFydFBvc2l0aW9uKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgbmV4dEJyZWFrYWJsZSA9IG5leHRCcmVha2FibGVQb3NpdGlv
bklnbm9yaW5nTkJTUChsYXp5QnJlYWtJdGVyYXRvciwgc3RhcnRQb3NpdGlvbik7CisgICAgfQor
ICAgIHJldHVybiBzdGFydFBvc2l0aW9uID09IG5leHRCcmVha2FibGU7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEJyZWFrTGluZXNfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaAppbmRleCAyZTUyOTFhZGVmZDZkMTYzYTAyMWFjYWRl
MDBkYTQwMDcxZjBhNDUxLi4zYWE1NDVjODNkYWM3OThlYjI5MmU1YmY3NTI5YWY2ZDgxMDVmNjFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaApAQCAtNTMsMTgg
KzUzLDEyIEBAIHN0cnVjdCBCaWRpSXNvbGF0ZWRSdW4gewogY2xhc3MgSW5saW5lSXRlcmF0b3Ig
ewogcHVibGljOgogICAgIElubGluZUl0ZXJhdG9yKCkKLSAgICAgICAgOiBtX3Jvb3QobnVsbHB0
cikKLSAgICAgICAgLCBtX3JlbmRlcmVyKG51bGxwdHIpCi0gICAgICAgICwgbV9uZXh0QnJlYWth
YmxlUG9zaXRpb24oLTEpCi0gICAgICAgICwgbV9wb3MoMCkKLSAgICAgICAgLCBtX3JlZmVyc1Rv
RW5kT2ZQcmV2aW91c05vZGUoZmFsc2UpCiAgICAgewogICAgIH0KIAogICAgIElubGluZUl0ZXJh
dG9yKFJlbmRlckVsZW1lbnQqIHJvb3QsIFJlbmRlck9iamVjdCogbywgdW5zaWduZWQgcCkKICAg
ICAgICAgOiBtX3Jvb3Qocm9vdCkKICAgICAgICAgLCBtX3JlbmRlcmVyKG8pCi0gICAgICAgICwg
bV9uZXh0QnJlYWthYmxlUG9zaXRpb24oLTEpCiAgICAgICAgICwgbV9wb3MocCkKICAgICAgICAg
LCBtX3JlZmVyc1RvRW5kT2ZQcmV2aW91c05vZGUoZmFsc2UpCiAgICAgewpAQCAtNzcsNyArNzEs
NyBAQCBwdWJsaWM6CiAgICAgICAgIG1vdmVUbyhvYmplY3QsIDApOwogICAgIH0KIAotICAgIHZv
aWQgbW92ZVRvKFJlbmRlck9iamVjdCogb2JqZWN0LCB1bnNpZ25lZCBvZmZzZXQsIGludCBuZXh0
QnJlYWsgPSAtMSkKKyAgICB2b2lkIG1vdmVUbyhSZW5kZXJPYmplY3QqIG9iamVjdCwgdW5zaWdu
ZWQgb2Zmc2V0LCBPcHRpb25hbDx1bnNpZ25lZD4gbmV4dEJyZWFrID0gTnVsbG9wdCkKICAgICB7
CiAgICAgICAgIHNldFJlbmRlcmVyKG9iamVjdCk7CiAgICAgICAgIHNldE9mZnNldChvZmZzZXQp
OwpAQCAtODksOCArODMsOCBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgb2Zmc2V0KCkgY29uc3Qg
eyByZXR1cm4gbV9wb3M7IH0KICAgICB2b2lkIHNldE9mZnNldCh1bnNpZ25lZCBwb3NpdGlvbik7
CiAgICAgUmVuZGVyRWxlbWVudCogcm9vdCgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdDsgfQotICAg
IGludCBuZXh0QnJlYWthYmxlUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX25leHRCcmVha2Fi
bGVQb3NpdGlvbjsgfQotICAgIHZvaWQgc2V0TmV4dEJyZWFrYWJsZVBvc2l0aW9uKGludCBwb3Np
dGlvbikgeyBtX25leHRCcmVha2FibGVQb3NpdGlvbiA9IHBvc2l0aW9uOyB9CisgICAgT3B0aW9u
YWw8dW5zaWduZWQ+IG5leHRCcmVha2FibGVQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbmV4
dEJyZWFrYWJsZVBvc2l0aW9uOyB9CisgICAgdm9pZCBzZXROZXh0QnJlYWthYmxlUG9zaXRpb24o
T3B0aW9uYWw8dW5zaWduZWQ+IHBvc2l0aW9uKSB7IG1fbmV4dEJyZWFrYWJsZVBvc2l0aW9uID0g
cG9zaXRpb247IH0KICAgICBib29sIHJlZmVyc1RvRW5kT2ZQcmV2aW91c05vZGUoKSBjb25zdCB7
IHJldHVybiBtX3JlZmVyc1RvRW5kT2ZQcmV2aW91c05vZGU7IH0KICAgICB2b2lkIHNldFJlZmVy
c1RvRW5kT2ZQcmV2aW91c05vZGUoKTsKIApAQCAtMTE4LDE4ICsxMTIsMTggQEAgcHJpdmF0ZToK
IAogICAgIFVDaGFyRGlyZWN0aW9uIHN1cnJvZ2F0ZVRleHREaXJlY3Rpb24oVUNoYXIgY3VycmVu
dENvZGVVbml0KSBjb25zdDsKIAotICAgIFJlbmRlckVsZW1lbnQqIG1fcm9vdDsKLSAgICBSZW5k
ZXJPYmplY3QqIG1fcmVuZGVyZXI7CisgICAgUmVuZGVyRWxlbWVudCogbV9yb290IHsgbnVsbHB0
ciB9OworICAgIFJlbmRlck9iamVjdCogbV9yZW5kZXJlciB7IG51bGxwdHIgfTsKIAotICAgIGlu
dCBtX25leHRCcmVha2FibGVQb3NpdGlvbjsKLSAgICB1bnNpZ25lZCBtX3BvczsKKyAgICBPcHRp
b25hbDx1bnNpZ25lZD4gbV9uZXh0QnJlYWthYmxlUG9zaXRpb247CisgICAgdW5zaWduZWQgbV9w
b3MgeyAwIH07CiAKICAgICAvLyBUaGVyZSBhcmUgYSBjb3VwbGUgcGxhY2VzIHdoZXJlIHdlIHdh
bnQgdG8gZGVjcmVtZW50IGFuIElubGluZUl0ZXJhdG9yLgogICAgIC8vIFVzdWFsbHkgdGhpcyB0
YWtlIHRoZSBmb3JtIG9mIGRlY3JlbWVudGluZyBtX3BvczsgaG93ZXZlciwgbV9wb3MgbWlnaHQg
YmUgMC4KICAgICAvLyBIb3dldmVyLCB3ZSBzaG91bGRuJ3QgZXZlciBuZWVkIHRvIGRlY3JlbWVu
dCBhbiBJbmxpbmVJdGVyYXRvciBtb3JlIHRoYW4KICAgICAvLyBvbmNlLCBzbyByYXRoZXIgdGhh
biBpbXBsZW1lbnRpbmcgYSBkZWNyZW1lbnQoKSBmdW5jdGlvbiB3aGljaCB0cmF2ZXJzZXMKICAg
ICAvLyBub2Rlcywgd2UgY2FuIHNpbXBseSBrZWVwIHRyYWNrIG9mIHRoaXMgc3RhdGUgYW5kIGhh
bmRsZSBpdC4KLSAgICBib29sIG1fcmVmZXJzVG9FbmRPZlByZXZpb3VzTm9kZTsKKyAgICBib29s
IG1fcmVmZXJzVG9FbmRPZlByZXZpb3VzTm9kZSB7IGZhbHNlIH07CiB9OwogCiBpbmxpbmUgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IElubGluZUl0ZXJhdG9yJiBpdDEsIGNvbnN0IElubGluZUl0ZXJh
dG9yJiBpdDIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4
dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKaW5k
ZXggYjhhNWE1MmZlZDRmNDNmZTJhNTgwYjg3NmRmN2ZiOWQwOGVmMmZmMi4uZTYzMmJkYTE4NDkz
NTZlMjNjOGE3MGJiMTVjZjhhODA3MTFkMWY0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9JbmxpbmVUZXh0Qm94LmNwcApAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIklubGluZVRleHRCb3guaCIKIAorI2luY2x1ZGUgIkJyZWFrTGluZXMuaCIK
ICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRl
ICJEYXNoQXJyYXkuaCIKQEAgLTUwLDcgKzUxLDYgQEAKICNpbmNsdWRlICJUZXh0RGVjb3JhdGlv
blBhaW50ZXIuaCIKICNpbmNsdWRlICJUZXh0UGFpbnRTdHlsZS5oIgogI2luY2x1ZGUgIlRleHRQ
YWludGVyLmgiCi0jaW5jbHVkZSAiYnJlYWtfbGluZXMuaCIKICNpbmNsdWRlIDxzdGRpby5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRleHQuY3BwCmluZGV4IGQzZmJlN2M4NTkzMTc5YTk5NTA0ZGI1MDFkZmYxNjI3MDVjNzc5
M2EuLmFiZWJmZjBiZGM5NTk5OTFhMDBjMGFkYjIwZjNlMGRhMTk4ZGU1NWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRl
ICJSZW5kZXJUZXh0LmgiCiAKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCisjaW5jbHVkZSAi
QnJlYWtMaW5lcy5oIgogI2luY2x1ZGUgIkJyZWFraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIkNo
YXJhY3RlclByb3BlcnRpZXMuaCIKICNpbmNsdWRlICJFbGxpcHNpc0JveC5oIgpAQCAtNDYsNyAr
NDcsNiBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAjaW5jbHVk
ZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgIlZpc2libGVQb3NpdGlvbi5oIgot
I2luY2x1ZGUgImJyZWFrX2xpbmVzLmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oPgpAQCAtNzkxLDE1ICs3OTEsMTUgQEAgdm9pZCBSZW5kZXJUZXh0Ojpj
b21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyhmbG9hdCBsZWFkV2lkdGgsIEhhc2hTZXQ8Y29u
c3QgRm8KICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUgPSB0aGlzLT5zdHlsZSgpOwogICAg
IGNvbnN0IEZvbnRDYXNjYWRlJiBmb250ID0gc3R5bGUuZm9udENhc2NhZGUoKTsgLy8gRklYTUU6
IFRoaXMgaWdub3JlcyBmaXJzdC1saW5lLgogICAgIGZsb2F0IHdvcmRTcGFjaW5nID0gZm9udC53
b3JkU3BhY2luZygpOwotICAgIGludCBsZW4gPSB0ZXh0TGVuZ3RoKCk7CisgICAgdW5zaWduZWQg
bGVuID0gdGV4dExlbmd0aCgpOwogICAgIExhenlMaW5lQnJlYWtJdGVyYXRvciBicmVha0l0ZXJh
dG9yKG1fdGV4dCwgc3R5bGUubG9jYWxlKCksIG1hcExpbmVCcmVha1RvSXRlcmF0b3JNb2RlKHN0
eWxlLmxpbmVCcmVhaygpKSk7CiAgICAgYm9vbCBuZWVkc1dvcmRTcGFjaW5nID0gZmFsc2U7CiAg
ICAgYm9vbCBpZ25vcmluZ1NwYWNlcyA9IGZhbHNlOwogICAgIGJvb2wgaXNTcGFjZSA9IGZhbHNl
OwogICAgIGJvb2wgZmlyc3RXb3JkID0gdHJ1ZTsKICAgICBib29sIGZpcnN0TGluZSA9IHRydWU7
Ci0gICAgaW50IG5leHRCcmVha2FibGUgPSAtMTsKLSAgICBpbnQgbGFzdFdvcmRCb3VuZGFyeSA9
IDA7CisgICAgT3B0aW9uYWw8dW5zaWduZWQ+IG5leHRCcmVha2FibGU7CisgICAgdW5zaWduZWQg
bGFzdFdvcmRCb3VuZGFyeSA9IDA7CiAKICAgICAvLyBOb24temVybyBvbmx5IHdoZW4ga2Vybmlu
ZyBpcyBlbmFibGVkLCBpbiB3aGljaCBjYXNlIHdlIG1lYXN1cmUgd29yZHMgd2l0aCB0aGVpciB0
cmFpbGluZwogICAgIC8vIHNwYWNlLCB0aGVuIHN1YnRyYWN0IGl0cyB3aWR0aC4KQEAgLTgzMyw3
ICs4MzMsNyBAQCB2b2lkIFJlbmRlclRleHQ6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhz
KGZsb2F0IGxlYWRXaWR0aCwgSGFzaFNldDxjb25zdCBGbwogICAgIGJvb2wga2VlcEFsbFdvcmRz
ID0gc3R5bGUud29yZEJyZWFrKCkgPT0gS2VlcEFsbFdvcmRCcmVhazsKICAgICBib29sIGlzTG9v
c2VDSktNb2RlID0gYnJlYWtJdGVyYXRvci5pc0xvb3NlQ0pLTW9kZSgpOwogCi0gICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBs
ZW47IGkrKykgewogICAgICAgICBVQ2hhciBjID0gdW5jaGVja2VkQ2hhcmFjdGVyQXQoaSk7CiAK
ICAgICAgICAgYm9vbCBwcmV2aW91c0NoYXJhY3RlcklzU3BhY2UgPSBpc1NwYWNlOwpAQCAtODY5
LDYgKzg2OSw3IEBAIHZvaWQgUmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0
aHMoZmxvYXQgbGVhZFdpZHRoLCBIYXNoU2V0PGNvbnN0IEZvCiAgICAgICAgICAgICBsYXN0V29y
ZEJvdW5kYXJ5Kys7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfSBlbHNlIGlmIChj
ID09IHNvZnRIeXBoZW4gJiYgc3R5bGUuaHlwaGVucygpICE9IEh5cGhlbnNOb25lKSB7CisgICAg
ICAgICAgICBBU1NFUlQoaSA+PSBsYXN0V29yZEJvdW5kYXJ5KTsKICAgICAgICAgICAgIGN1cnJN
YXhXaWR0aCArPSB3aWR0aEZyb21DYWNoZShmb250LCBsYXN0V29yZEJvdW5kYXJ5LCBpIC0gbGFz
dFdvcmRCb3VuZGFyeSwgbGVhZFdpZHRoICsgY3Vyck1heFdpZHRoLCAmZmFsbGJhY2tGb250cywg
JmdseXBoT3ZlcmZsb3csIHN0eWxlKTsKICAgICAgICAgICAgIGlmICghZmlyc3RHbHlwaExlZnRP
dmVyZmxvdykKICAgICAgICAgICAgICAgICBmaXJzdEdseXBoTGVmdE92ZXJmbG93ID0gZ2x5cGhP
dmVyZmxvdy5sZWZ0OwpAQCAtODc4LDcgKzg3OSw3IEBAIHZvaWQgUmVuZGVyVGV4dDo6Y29tcHV0
ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoZmxvYXQgbGVhZFdpZHRoLCBIYXNoU2V0PGNvbnN0IEZv
CiAKICAgICAgICAgYm9vbCBoYXNCcmVhayA9IGJyZWFrQWxsIHx8IGlzQnJlYWthYmxlKGJyZWFr
SXRlcmF0b3IsIGksIG5leHRCcmVha2FibGUsIGJyZWFrTkJTUCwgaXNMb29zZUNKS01vZGUsIGtl
ZXBBbGxXb3Jkcyk7CiAgICAgICAgIGJvb2wgYmV0d2VlbldvcmRzID0gdHJ1ZTsKLSAgICAgICAg
aW50IGogPSBpOworICAgICAgICB1bnNpZ25lZCBqID0gaTsKICAgICAgICAgd2hpbGUgKGMgIT0g
J1xuJyAmJiAhaXNTcGFjZUFjY29yZGluZ1RvU3R5bGUoYywgc3R5bGUpICYmIGMgIT0gJ1x0JyAm
JiAoYyAhPSBzb2Z0SHlwaGVuIHx8IHN0eWxlLmh5cGhlbnMoKSA9PSBIeXBoZW5zTm9uZSkpIHsK
ICAgICAgICAgICAgIGorKzsKICAgICAgICAgICAgIGlmIChqID09IGxlbikKQEAgLTg5Miw3ICs4
OTMsNyBAQCB2b2lkIFJlbmRlclRleHQ6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKGZs
b2F0IGxlYWRXaWR0aCwgSGFzaFNldDxjb25zdCBGbwogICAgICAgICAgICAgfQogICAgICAgICB9
CiAKLSAgICAgICAgaW50IHdvcmRMZW4gPSBqIC0gaTsKKyAgICAgICAgdW5zaWduZWQgd29yZExl
biA9IGogLSBpOwogICAgICAgICBpZiAod29yZExlbikgewogICAgICAgICAgICAgZmxvYXQgY3Vy
ck1pbldpZHRoID0gMDsKICAgICAgICAgICAgIGJvb2wgaXNTcGFjZSA9IChqIDwgbGVuKSAmJiBp
c1NwYWNlQWNjb3JkaW5nVG9TdHlsZShjLCBzdHlsZSk7CkBAIC05MzYsOCArOTM3LDEwIEBAIHZv
aWQgUmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoZmxvYXQgbGVhZFdp
ZHRoLCBIYXNoU2V0PGNvbnN0IEZvCiAgICAgICAgICAgICBpZiAoYmV0d2VlbldvcmRzKSB7CiAg
ICAgICAgICAgICAgICAgaWYgKGxhc3RXb3JkQm91bmRhcnkgPT0gaSkKICAgICAgICAgICAgICAg
ICAgICAgY3Vyck1heFdpZHRoICs9IHc7Ci0gICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoaiA+PSBsYXN0V29yZEJv
dW5kYXJ5KTsKICAgICAgICAgICAgICAgICAgICAgY3Vyck1heFdpZHRoICs9IHdpZHRoRnJvbUNh
Y2hlKGZvbnQsIGxhc3RXb3JkQm91bmRhcnksIGogLSBsYXN0V29yZEJvdW5kYXJ5LCBsZWFkV2lk
dGggKyBjdXJyTWF4V2lkdGgsICZmYWxsYmFja0ZvbnRzLCAmZ2x5cGhPdmVyZmxvdywgc3R5bGUp
OworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBsYXN0V29yZEJvdW5kYXJ5ID0g
ajsKICAgICAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcmluZ0FsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJp
bmdBbGxJbk9uZS5jcHAKaW5kZXggOGYzYmFlODJiNjdmMmM0NGE0ZGMwYmY2MzMyODA1OTI4ZDU0
MDI4NC4uMmU5NjQ0NmVmMjY3MDQ2NmRiYWRmMGU0ZDkzMjE0ZmIyMmU2MGZjMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcmluZ0FsbEluT25lLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyaW5nQWxsSW5PbmUuY3BwCkBAIC0yOCw2ICsy
OCw3IEBACiAjaW5jbHVkZSAiQXV0b1RhYmxlTGF5b3V0LmNwcCIKICNpbmNsdWRlICJCaWRpUnVu
LmNwcCIKICNpbmNsdWRlICJCb3JkZXJFZGdlLmNwcCIKKyNpbmNsdWRlICJCcmVha0xpbmVzLmNw
cCIKICNpbmNsdWRlICJDbGlwUmVjdC5jcHAiCiAjaW5jbHVkZSAiQ291bnRlck5vZGUuY3BwIgog
I2luY2x1ZGUgIkVsbGlwc2lzQm94LmNwcCIKQEAgLTE0OSw0ICsxNTAsMyBAQAogI2luY2x1ZGUg
IlRleHREZWNvcmF0aW9uUGFpbnRlci5jcHAiCiAjaW5jbHVkZSAiVGV4dFBhaW50U3R5bGUuY3Bw
IgogI2luY2x1ZGUgIlRleHRQYWludGVyLmNwcCIKLSNpbmNsdWRlICJicmVha19saW5lcy5jcHAi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFRl
eHRGcmFnbWVudEl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGlu
ZUxheW91dFRleHRGcmFnbWVudEl0ZXJhdG9yLmgKaW5kZXggMTA3N2JjYmJmMTYwOTU1NGJjZWJi
Nzc0NThmMjgwODVmZjYyNmFjZS4uYmFmY2ViMWUxZTAxMmVjMzRlMTNmMWUyMmY4YjIxZjJlODQy
Mjc5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlv
dXRUZXh0RnJhZ21lbnRJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9T
aW1wbGVMaW5lTGF5b3V0VGV4dEZyYWdtZW50SXRlcmF0b3IuaApAQCAtMjYsMTAgKzI2LDEwIEBA
CiAjaWZuZGVmIFNpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJdGVyYXRvcl9oCiAjZGVmaW5l
IFNpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJdGVyYXRvcl9oCiAKKyNpbmNsdWRlICJCcmVh
a0xpbmVzLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGluZUJyZWFrLmgiCiAjaW5jbHVkZSAiU2ltcGxl
TGluZUxheW91dEZsb3dDb250ZW50cy5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0
ZXJhdG9yLmg+Ci0jaW5jbHVkZSAiYnJlYWtfbGluZXMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvYnJlYWtfbGluZXMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2JyZWFrX2xpbmVzLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZTRiOTUzNmZkMWJlZGYxY2UzNjNkNjYwMTFkNTEyMzU5MGVmODEw
OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvYnJlYWtfbGluZXMuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTAw
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDcsIDIwMTAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJicmVha19saW5lcy5oIgotCi0jaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KLSNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hhcmFj
dGVyTmFtZXMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0vLyBQYWNrIDggYml0cyBpbnRv
IG9uZSBieXRlCi0jZGVmaW5lIEIoYSwgYiwgYywgZCwgZSwgZiwgZywgaCkgXAotICAgICgoYSkg
fCAoKGIpIDw8IDEpIHwgKChjKSA8PCAyKSB8ICgoZCkgPDwgMykgfCAoKGUpIDw8IDQpIHwgKChm
KSA8PCA1KSB8ICgoZykgPDwgNikgfCAoKGgpIDw8IDcpKQotCi0vLyBMaW5lIGJyZWFraW5nIHRh
YmxlIHJvdyBmb3IgZWFjaCBkaWdpdCAoMC05KQotI2RlZmluZSBESSB7IDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAgfQotCi0vLyBMaW5lIGJyZWFraW5nIHRhYmxlIHJvdyBmb3Ig
YXNjaWkgbGV0dGVycyAoYS16IEEtWikKLSNkZWZpbmUgQUwgeyAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwIH0KLQotI2RlZmluZSBGIDB4RkYKLQotLy8gTGluZSBicmVha2luZyB0
YWJsZSBmb3IgcHJpbnRhYmxlIEFTQ0lJIGNoYXJhY3RlcnMuIExpbmUgYnJlYWtpbmcgb3Bwb3J0
dW5pdGllcyBpbiB0aGlzIHRhYmxlIGFyZSBhcyBiZWxvdzoKLS8vIC0gYmVmb3JlIG9wZW5pbmcg
cHVuY3R1YXRpb25zIHN1Y2ggYXMgJygnLCAnPCcsICdbJywgJ3snIGFmdGVyIGNlcnRhaW4gY2hh
cmFjdGVycyAoY29tcGF0aWJsZSB3aXRoIEZpcmVmb3ggMy42KTsKLS8vIC0gYWZ0ZXIgJy0nIGFu
ZCAnPycgKGJhY2t3YXJkLWNvbXBhdGlibGUsIGFuZCBjb21wYXRpYmxlIHdpdGggSW50ZXJuZXQg
RXhwbG9yZXIpLgotLy8gUGxlYXNlIHJlZmVyIHRvIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Mzc2OTg+IGZvciBsaW5lIGJyZWFraW5nIG1hdHJpeGVzIG9mIGRpZmZl
cmVudCBicm93c2VycwotLy8gYW5kIHRoZSBJQ1Ugc3RhbmRhcmQuCi1XRUJDT1JFX0VYUE9SVCBj
b25zdCB1bnNpZ25lZCBjaGFyIGFzY2lpTGluZUJyZWFrVGFibGVbXVthc2NpaUxpbmVCcmVha1Rh
YmxlQ29sdW1uQ291bnRdID0gewotICAgIC8vICAhICAiICAjICAkICAlICAmICAnICAoICAgICAp
ICAqICArICAsICAtICAuICAvICAwICAxLTggICA5ICA6ICA7ICA8ICA9ICA+ICA/ICBAICAgICBB
LVggICAgICBZICBaICBbICBcICBdICBeICBfICBgICAgICBhLXggICAgICB5ICB6ICB7ICB8ICB9
ICB+ICBERUwKLSAgICB7IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSksIEIoMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCksIDAsIEIoMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwg
MCwgMSwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCkg
fSwgLy8gIQotICAgIHsgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAxKSwgQigwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwKSwgMCwgQigwLCAwLCAwLCAxLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAw
LCAxLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAxLCAwLCAwLCAwLCAwLCAwKSB9
LCAvLyAiCi0gICAgeyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEpLCBCKDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDApLCAwLCBCKDAsIDAsIDAsIDEsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAs
IDEsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAsIDAsIDAsIDApIH0s
IC8vICMKLSAgICB7IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIEIoMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCksIDAsIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCkgfSwg
Ly8gJAotICAgIHsgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAxKSwgQigwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwKSwgMCwgQigwLCAwLCAwLCAxLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAx
LCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAxLCAwLCAwLCAwLCAwLCAwKSB9LCAv
LyAlCi0gICAgeyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEpLCBCKDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDApLCAwLCBCKDAsIDAsIDAsIDEsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEs
IDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAsIDAsIDAsIDApIH0sIC8v
ICYKLSAgICB7IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIEIoMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCksIDAsIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCkgfSwgLy8g
JwotICAgIHsgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgQigwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwKSwgMCwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSB9LCAvLyAo
Ci0gICAgeyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEpLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDApLCAwLCBCKDAsIDAsIDAsIDEsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAs
IDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAsIDAsIDAsIDApIH0sIC8vICkK
LSAgICB7IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSksIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCksIDAsIEIoMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwg
MCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCkgfSwgLy8gKgot
ICAgIHsgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAxKSwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
KSwgMCwgQigwLCAwLCAwLCAxLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAxLCAwLCAw
LCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAxLCAwLCAwLCAwLCAwLCAwKSB9LCAvLyArCi0g
ICAgeyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEpLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAp
LCAwLCBCKDAsIDAsIDAsIDEsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAs
IDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAsIDAsIDAsIDApIH0sIC8vICwKLSAg
ICB7IEIoMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSksIEIoMSwgMSwgMSwgMSwgMSwgMCwgMSwgMCks
IDAsIEIoMCwgMSwgMSwgMSwgMSwgMSwgMSwgMSksIEYsIEYsIEYsIEIoMSwgMSwgMSwgMSwgMSwg
MSwgMSwgMSksIEYsIEYsIEYsIEIoMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSkgfSwgLy8gLSBOb3Rl
OiBicmVha2luZyBiZWZvcmUgJzAnLSc5JyBpcyBoYW5kbGVkIGhhcmQtY29kZWQgaW4gc2hvdWxk
QnJlYWtBZnRlcigpLgotICAgIHsgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAxKSwgQigwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwKSwgMCwgQigwLCAwLCAwLCAxLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwg
QigwLCAwLCAxLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAxLCAwLCAwLCAwLCAw
LCAwKSB9LCAvLyAuCi0gICAgeyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCBCKDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDApLCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBC
KDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDApIH0sIC8vIC8KLSAgICBESSwgIERJLCAgREksICBESSwgIERJLCAgREksICBESSwgIERJLCAg
REksICBESSwgLy8gMC05Ci0gICAgeyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEpLCBCKDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDApLCAwLCBCKDAsIDAsIDAsIDEsIDAsIDAsIDAsIDApLCAwLCAwLCAw
LCBCKDAsIDAsIDEsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAsIDAs
IDAsIDApIH0sIC8vIDoKLSAgICB7IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSksIEIoMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCksIDAsIEIoMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCksIDAsIDAsIDAs
IEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwg
MCwgMCkgfSwgLy8gOwotICAgIHsgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgQigwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwKSwgMCwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwg
QigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwKSB9LCAvLyA8Ci0gICAgeyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEpLCBCKDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDApLCAwLCBCKDAsIDAsIDAsIDEsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBC
KDAsIDAsIDEsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAsIDAsIDAs
IDApIH0sIC8vID0KLSAgICB7IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSksIEIoMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCksIDAsIEIoMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIo
MCwgMCwgMSwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwg
MCkgfSwgLy8gPgotICAgIHsgQigwLCAwLCAxLCAxLCAxLCAxLCAwLCAxKSwgQigwLCAxLCAxLCAw
LCAxLCAwLCAwLCAxKSwgRiwgQigxLCAwLCAwLCAxLCAxLCAxLCAwLCAxKSwgRiwgRiwgRiwgQigx
LCAxLCAxLCAxLCAwLCAxLCAxLCAxKSwgRiwgRiwgRiwgQigxLCAxLCAxLCAxLCAwLCAxLCAxLCAw
KSB9LCAvLyA/Ci0gICAgeyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCBCKDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDApLCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAp
IH0sIC8vIEAKLSAgICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUws
ICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAg
QUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAvLyBBLVoKLSAgICB7IEIoMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCksIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIEIoMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAs
IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCkgfSwgLy8gWwotICAgIHsgQigwLCAwLCAwLCAwLCAw
LCAwLCAwLCAxKSwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgQigwLCAwLCAwLCAxLCAw
LCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAxLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwg
QigwLCAwLCAxLCAwLCAwLCAwLCAwLCAwKSB9LCAvLyAnXCcKLSAgICB7IEIoMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMSksIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIEIoMCwgMCwgMCwgMSwg
MCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAs
IEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCkgfSwgLy8gXQotICAgIHsgQigwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwKSwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgQigwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwg
QigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSB9LCAvLyBeCi0gICAgeyBCKDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDApLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCBCKDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBC
KDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApIH0sIC8vIF8KLSAgICB7IEIoMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCksIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIEIoMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIo
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCkgfSwgLy8gYAotICAgIEFMLCAgQUwsICBBTCwgIEFMLCAg
QUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFM
LCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsIC8vIGEt
egotICAgIHsgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgQigwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwKSwgMCwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSB9LCAvLyB7
Ci0gICAgeyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEpLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDApLCAwLCBCKDAsIDAsIDAsIDEsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAs
IDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAsIDAsIDAsIDApIH0sIC8vIHwK
LSAgICB7IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSksIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCksIDAsIEIoMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwg
MCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCkgfSwgLy8gfQot
ICAgIHsgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAxKSwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
KSwgMCwgQigwLCAwLCAwLCAxLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAxLCAwLCAw
LCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAxLCAwLCAwLCAwLCAwLCAwKSB9LCAvLyB+Ci0g
ICAgeyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAp
LCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApIH0sIC8vIERFTAot
fTsKLQotI3VuZGVmIEIKLSN1bmRlZiBGCi0jdW5kZWYgREkKLSN1bmRlZiBBTAotCi1DT01QSUxF
X0FTU0VSVChXVEZfQVJSQVlfTEVOR1RIKGFzY2lpTGluZUJyZWFrVGFibGUpID09IGFzY2lpTGlu
ZUJyZWFrVGFibGVMYXN0Q2hhciAtIGFzY2lpTGluZUJyZWFrVGFibGVGaXJzdENoYXIgKyAxLCBU
ZXN0TGluZUJyZWFrVGFibGVDb25zaXN0ZW5jeSk7Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9icmVha19saW5lcy5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2JyZWFrX2xpbmVzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGEyOTQ2MTI5Y2JhNmViOTE2ZGFiOWU1MWE4MGVjYmU5ZTE3ZmIyZGMuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL2JyZWFrX2xpbmVzLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyNDggKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNywgMjAxMCwgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCi0gKgotICovCi0KLSNpZm5kZWYgYnJlYWtfbGluZXNfaAotI2RlZmluZSBicmVh
a19saW5lc19oCi0KLSNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgotI2luY2x1ZGUgPHd0Zi9T
dGRMaWJFeHRyYXMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgot
I2luY2x1ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotc3RhdGljIGNvbnN0IFVDaGFyIGFzY2lpTGluZUJyZWFrVGFibGVGaXJzdENoYXIg
PSAnISc7Ci1zdGF0aWMgY29uc3QgVUNoYXIgYXNjaWlMaW5lQnJlYWtUYWJsZUxhc3RDaGFyID0g
MTI3Owotc3RhdGljIGNvbnN0IHVuc2lnbmVkIGFzY2lpTGluZUJyZWFrVGFibGVDb2x1bW5Db3Vu
dCA9IChhc2NpaUxpbmVCcmVha1RhYmxlTGFzdENoYXIgLSBhc2NpaUxpbmVCcmVha1RhYmxlRmly
c3RDaGFyKSAvIDggKyAxOwotCi1XRUJDT1JFX0VYUE9SVCBleHRlcm4gY29uc3QgdW5zaWduZWQg
Y2hhciBhc2NpaUxpbmVCcmVha1RhYmxlW11bYXNjaWlMaW5lQnJlYWtUYWJsZUNvbHVtbkNvdW50
XTsKLQotZW51bSBjbGFzcyBOQlNQQmVoYXZpb3IgewotICAgIElnbm9yZU5CU1AsCi0gICAgVHJl
YXROQlNQQXNCcmVhaywKLX07Ci0KLXRlbXBsYXRlPE5CU1BCZWhhdmlvciBuYnNwQmVoYXZpb3I+
Ci1zdGF0aWMgaW5saW5lIGJvb2wgaXNCcmVha2FibGVTcGFjZShVQ2hhciBjaCkKLXsKLSAgICBz
d2l0Y2ggKGNoKSB7Ci0gICAgY2FzZSAnICc6Ci0gICAgY2FzZSAnXG4nOgotICAgIGNhc2UgJ1x0
JzoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgY2FzZSBub0JyZWFrU3BhY2U6Ci0gICAgICAg
IHJldHVybiBuYnNwQmVoYXZpb3IgPT0gTkJTUEJlaGF2aW9yOjpUcmVhdE5CU1BBc0JyZWFrOwot
ICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19Ci0KLWlubGluZSBi
b29sIHNob3VsZEJyZWFrQWZ0ZXIoVUNoYXIgbGFzdENoLCBVQ2hhciBjaCwgVUNoYXIgbmV4dENo
KQotewotICAgIC8vIERvbid0IGFsbG93IGxpbmUgYnJlYWtpbmcgYmV0d2VlbiAnLScgYW5kIGEg
ZGlnaXQgaWYgdGhlICctJyBtYXkgbWVhbiBhIG1pbnVzIHNpZ24gaW4gdGhlIGNvbnRleHQsCi0g
ICAgLy8gd2hpbGUgYWxsb3cgYnJlYWtpbmcgaW4gJ0FCQ0QtMTIzNCcgYW5kICcxMjM0LTU2Nzgn
IHdoaWNoIG1heSBiZSBpbiBsb25nIFVSTHMuCi0gICAgaWYgKGNoID09ICctJyAmJiBpc0FTQ0lJ
RGlnaXQobmV4dENoKSkKLSAgICAgICAgcmV0dXJuIGlzQVNDSUlBbHBoYW51bWVyaWMobGFzdENo
KTsKLQotICAgIC8vIElmIGJvdGggY2ggYW5kIG5leHRDaCBhcmUgQVNDSUkgY2hhcmFjdGVycywg
dXNlIGEgbG9va3VwIHRhYmxlIGZvciBlbmhhbmNlZCBzcGVlZCBhbmQgZm9yIGNvbXBhdGliaWxp
dHkKLSAgICAvLyB3aXRoIG90aGVyIGJyb3dzZXJzIChzZWUgY29tbWVudHMgZm9yIGFzY2lpTGlu
ZUJyZWFrVGFibGUgZm9yIGRldGFpbHMpLgotICAgIGlmIChjaCA+PSBhc2NpaUxpbmVCcmVha1Rh
YmxlRmlyc3RDaGFyICYmIGNoIDw9IGFzY2lpTGluZUJyZWFrVGFibGVMYXN0Q2hhciAmJiBuZXh0
Q2ggPj0gYXNjaWlMaW5lQnJlYWtUYWJsZUZpcnN0Q2hhciAmJiBuZXh0Q2ggPD0gYXNjaWlMaW5l
QnJlYWtUYWJsZUxhc3RDaGFyKSB7Ci0gICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIHRhYmxl
Um93ID0gYXNjaWlMaW5lQnJlYWtUYWJsZVtjaCAtIGFzY2lpTGluZUJyZWFrVGFibGVGaXJzdENo
YXJdOwotICAgICAgICBpbnQgbmV4dENoSW5kZXggPSBuZXh0Q2ggLSBhc2NpaUxpbmVCcmVha1Rh
YmxlRmlyc3RDaGFyOwotICAgICAgICByZXR1cm4gdGFibGVSb3dbbmV4dENoSW5kZXggLyA4XSAm
ICgxIDw8IChuZXh0Q2hJbmRleCAlIDgpKTsKLSAgICB9Ci0gICAgLy8gT3RoZXJ3aXNlIGRlZmVy
IHRvIHRoZSBVbmljb2RlIGFsZ29yaXRobSBieSByZXR1cm5pbmcgZmFsc2UuCi0gICAgcmV0dXJu
IGZhbHNlOwotfQotCi10ZW1wbGF0ZTxOQlNQQmVoYXZpb3IgbmJzcEJlaGF2aW9yPgotaW5saW5l
IGJvb2wgbmVlZHNMaW5lQnJlYWtJdGVyYXRvcihVQ2hhciBjaCkKLXsKLSAgICBpZiAobmJzcEJl
aGF2aW9yID09IE5CU1BCZWhhdmlvcjo6VHJlYXROQlNQQXNCcmVhaykKLSAgICAgICAgcmV0dXJu
IGNoID4gYXNjaWlMaW5lQnJlYWtUYWJsZUxhc3RDaGFyOwotICAgIHJldHVybiBjaCA+IGFzY2lp
TGluZUJyZWFrVGFibGVMYXN0Q2hhciAmJiBjaCAhPSBub0JyZWFrU3BhY2U7Ci19Ci0KLS8vIFdo
ZW4gaW4gbm9uLWxvb3NlIG1vZGUsIHdlIGNhbiB1c2UgdGhlIEFTQ0lJIHNob3J0Y3V0IHRhYmxl
LgotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwgTkJTUEJlaGF2aW9yIG5ic3BCZWhh
dmlvcj4KLWlubGluZSBpbnQgbmV4dEJyZWFrYWJsZVBvc2l0aW9uTm9uTG9vc2VseShMYXp5TGlu
ZUJyZWFrSXRlcmF0b3ImIGxhenlCcmVha0l0ZXJhdG9yLCBjb25zdCBDaGFyYWN0ZXJUeXBlKiBz
dHIsIHVuc2lnbmVkIGxlbmd0aCwgaW50IHBvcykKLXsKLSAgICBpbnQgbGVuID0gc3RhdGljX2Nh
c3Q8aW50PihsZW5ndGgpOwotICAgIGludCBuZXh0QnJlYWsgPSAtMTsKLQotICAgIENoYXJhY3Rl
clR5cGUgbGFzdExhc3RDaCA9IHBvcyA+IDEgPyBzdHJbcG9zIC0gMl0gOiBzdGF0aWNfY2FzdDxD
aGFyYWN0ZXJUeXBlPihsYXp5QnJlYWtJdGVyYXRvci5zZWNvbmRUb0xhc3RDaGFyYWN0ZXIoKSk7
Ci0gICAgQ2hhcmFjdGVyVHlwZSBsYXN0Q2ggPSBwb3MgPiAwID8gc3RyW3BvcyAtIDFdIDogc3Rh
dGljX2Nhc3Q8Q2hhcmFjdGVyVHlwZT4obGF6eUJyZWFrSXRlcmF0b3IubGFzdENoYXJhY3Rlcigp
KTsKLSAgICB1bnNpZ25lZCBwcmlvckNvbnRleHRMZW5ndGggPSBsYXp5QnJlYWtJdGVyYXRvci5w
cmlvckNvbnRleHRMZW5ndGgoKTsKLSAgICBmb3IgKGludCBpID0gcG9zOyBpIDwgbGVuOyBpKysp
IHsKLSAgICAgICAgQ2hhcmFjdGVyVHlwZSBjaCA9IHN0cltpXTsKLQotICAgICAgICAvLyBOb24t
bG9vc2UgbW9kZSwgc28gdXNlIEFTQ0lJIHNob3J0Y3V0IChzaG91bGRCcmVha0FmdGVyKSBpZiBu
b3QgYnJlYWthYmxlIHNwYWNlLgotICAgICAgICBpZiAoaXNCcmVha2FibGVTcGFjZTxuYnNwQmVo
YXZpb3I+KGNoKSB8fCBzaG91bGRCcmVha0FmdGVyKGxhc3RMYXN0Q2gsIGxhc3RDaCwgY2gpKQot
ICAgICAgICAgICAgcmV0dXJuIGk7Ci0KLSAgICAgICAgLy8gTm9uLWxvb3NlIG1vZGUsIHNvIGNv
bmRpdGlvbmFsbHkgdXNlIGJyZWFrIGl0ZXJhdG9yLgotICAgICAgICBpZiAobmVlZHNMaW5lQnJl
YWtJdGVyYXRvcjxuYnNwQmVoYXZpb3I+KGNoKSB8fCBuZWVkc0xpbmVCcmVha0l0ZXJhdG9yPG5i
c3BCZWhhdmlvcj4obGFzdENoKSkgewotICAgICAgICAgICAgaWYgKG5leHRCcmVhayA8IGkpIHsK
LSAgICAgICAgICAgICAgICAvLyBEb24ndCBicmVhayBpZiBwb3NpdGlvbmVkIGF0IHN0YXJ0IG9m
IHByaW1hcnkgY29udGV4dCBhbmQgdGhlcmUgaXMgbm8gcHJpb3IgY29udGV4dC4KLSAgICAgICAg
ICAgICAgICBpZiAoaSB8fCBwcmlvckNvbnRleHRMZW5ndGgpIHsKLSAgICAgICAgICAgICAgICAg
ICAgVGV4dEJyZWFrSXRlcmF0b3IqIGJyZWFrSXRlcmF0b3IgPSBsYXp5QnJlYWtJdGVyYXRvci5n
ZXQocHJpb3JDb250ZXh0TGVuZ3RoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGJyZWFrSXRl
cmF0b3IpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5leHRCcmVhayA9IHRleHRCcmVha0Zv
bGxvd2luZyhicmVha0l0ZXJhdG9yLCBpIC0gMSArIHByaW9yQ29udGV4dExlbmd0aCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBpZiAobmV4dEJyZWFrID49IDApCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbmV4dEJyZWFrIC09IHByaW9yQ29udGV4dExlbmd0aDsKLSAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGlmIChpID09IG5leHRCcmVhayAmJiAhaXNCcmVha2FibGVTcGFjZTxuYnNwQmVoYXZpb3I+KGxh
c3RDaCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGk7Ci0gICAgICAgIH0KLQotICAgICAgICBs
YXN0TGFzdENoID0gbGFzdENoOwotICAgICAgICBsYXN0Q2ggPSBjaDsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gbGVuOwotfQotCi0vLyBXaGVuIGluIGxvb3NlIG1vZGUsIHdlIGNhbid0IHVzZSB0aGUg
QVNDSUkgc2hvcnRjdXQgdGFibGUgc2luY2UgbG9vc2UgbW9kZSBhbGxvd3MgIiQxMDAiIHRvIGJy
ZWFrIGFmdGVyICckJyBpbiBjb250ZW50IG1hcmtlZCBhcyBDSksuCi0vLyBOLkIuIEl0IHNob3Vs
ZCBiZSBwb3NzaWJsZSB0byBjb21iaW5lIHRoZSBmb2xsb3dpbmcgd2l0aCB0aGUgbm9uLWxvb3Nl
IHZlcnNpb24gYWJvdmUgYnkgYWRkaW5nIGEgTG9vc2VCZWhhdmlvciB0ZW1wbGF0ZSBwYXJhbWV0
ZXI7Ci0vLyBob3dldmVyLCB3aGVuIGRvaW5nIHRoaXMsIGEgMTAlIHBlcmZvcm1hbmNlIHJlZ3Jl
c3Npb24gYXBwZWFyZWQgb24gY2hyb21pdW0td2luIChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODkyMzUjYzExMikuCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlLCBOQlNQQmVoYXZpb3IgbmJzcEJlaGF2aW9yPgotc3RhdGljIGlubGluZSBpbnQgbmV4dEJy
ZWFrYWJsZVBvc2l0aW9uTG9vc2VseShMYXp5TGluZUJyZWFrSXRlcmF0b3ImIGxhenlCcmVha0l0
ZXJhdG9yLCBjb25zdCBDaGFyYWN0ZXJUeXBlKiBzdHIsIHVuc2lnbmVkIGxlbmd0aCwgaW50IHBv
cykKLXsKLSAgICBpbnQgbGVuID0gc3RhdGljX2Nhc3Q8aW50PihsZW5ndGgpOwotICAgIGludCBu
ZXh0QnJlYWsgPSAtMTsKLQotICAgIENoYXJhY3RlclR5cGUgbGFzdENoID0gcG9zID4gMCA/IHN0
cltwb3MgLSAxXSA6IHN0YXRpY19jYXN0PENoYXJhY3RlclR5cGU+KGxhenlCcmVha0l0ZXJhdG9y
Lmxhc3RDaGFyYWN0ZXIoKSk7Ci0gICAgdW5zaWduZWQgcHJpb3JDb250ZXh0TGVuZ3RoID0gbGF6
eUJyZWFrSXRlcmF0b3IucHJpb3JDb250ZXh0TGVuZ3RoKCk7Ci0gICAgZm9yIChpbnQgaSA9IHBv
czsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICAgIENoYXJhY3RlclR5cGUgY2ggPSBzdHJbaV07Ci0K
LSAgICAgICAgLy8gQWx3YXlzIGxvb3NlIG1vZGUsIHNvIGRvbid0IHVzZSBBU0NJSSBzaG9ydGN1
dCAoc2hvdWxkQnJlYWtBZnRlcikuCi0gICAgICAgIGlmIChpc0JyZWFrYWJsZVNwYWNlPG5ic3BC
ZWhhdmlvcj4oY2gpKQotICAgICAgICAgICAgcmV0dXJuIGk7Ci0KLSAgICAgICAgLy8gQWx3YXlz
IHVzZSBsaW5lIGJyZWFrIGl0ZXJhdG9yIGluIGxvb3NlIG1vZGUuCi0gICAgICAgIGlmIChuZXh0
QnJlYWsgPCBpKSB7Ci0gICAgICAgICAgICAvLyBEb24ndCBicmVhayBpZiBwb3NpdGlvbmVkIGF0
IHN0YXJ0IG9mIHByaW1hcnkgY29udGV4dCBhbmQgdGhlcmUgaXMgbm8gcHJpb3IgY29udGV4dC4K
LSAgICAgICAgICAgIGlmIChpIHx8IHByaW9yQ29udGV4dExlbmd0aCkgewotICAgICAgICAgICAg
ICAgIFRleHRCcmVha0l0ZXJhdG9yKiBicmVha0l0ZXJhdG9yID0gbGF6eUJyZWFrSXRlcmF0b3Iu
Z2V0KHByaW9yQ29udGV4dExlbmd0aCk7Ci0gICAgICAgICAgICAgICAgaWYgKGJyZWFrSXRlcmF0
b3IpIHsKLSAgICAgICAgICAgICAgICAgICAgbmV4dEJyZWFrID0gdGV4dEJyZWFrRm9sbG93aW5n
KGJyZWFrSXRlcmF0b3IsIGkgLSAxICsgcHJpb3JDb250ZXh0TGVuZ3RoKTsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKG5leHRCcmVhayA+PSAwKQotICAgICAgICAgICAgICAgICAgICAgICAgbmV4
dEJyZWFrIC09IHByaW9yQ29udGV4dExlbmd0aDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGkgPT0gbmV4dEJyZWFrICYmICFpc0JyZWFr
YWJsZVNwYWNlPG5ic3BCZWhhdmlvcj4obGFzdENoKSkKLSAgICAgICAgICAgIHJldHVybiBpOwot
Ci0gICAgICAgIGxhc3RDaCA9IGNoOwotICAgIH0KLQotICAgIHJldHVybiBsZW47Ci19Ci0KLXRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIE5CU1BCZWhhdmlvciBuYnNwQmVoYXZpb3I+
Ci1pbmxpbmUgdW5zaWduZWQgbmV4dEJyZWFrYWJsZVBvc2l0aW9uS2VlcGluZ0FsbFdvcmRzKGNv
bnN0IENoYXJhY3RlclR5cGUqIHN0cmluZywgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBzdGFy
dFBvc2l0aW9uKQotewotICAgIGZvciAodW5zaWduZWQgaSA9IHN0YXJ0UG9zaXRpb247IGkgPCBs
ZW5ndGg7IGkrKykgewotICAgICAgICBpZiAoaXNCcmVha2FibGVTcGFjZTxuYnNwQmVoYXZpb3I+
KHN0cmluZ1tpXSkpCi0gICAgICAgICAgICByZXR1cm4gaTsKLSAgICB9Ci0gICAgcmV0dXJuIGxl
bmd0aDsKLX0KLQotaW5saW5lIHVuc2lnbmVkIG5leHRCcmVha2FibGVQb3NpdGlvbktlZXBpbmdB
bGxXb3JkcyhMYXp5TGluZUJyZWFrSXRlcmF0b3ImIGxhenlCcmVha0l0ZXJhdG9yLCBpbnQgc3Rh
cnRQb3NpdGlvbikKLXsKLSAgICBTdHJpbmcgc3RyaW5nID0gbGF6eUJyZWFrSXRlcmF0b3Iuc3Ry
aW5nKCk7Ci0gICAgaWYgKHN0cmluZy5pczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIG5leHRCcmVh
a2FibGVQb3NpdGlvbktlZXBpbmdBbGxXb3JkczxMQ2hhciwgTkJTUEJlaGF2aW9yOjpUcmVhdE5C
U1BBc0JyZWFrPihzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpLCBzdGFydFBv
c2l0aW9uKTsKLSAgICByZXR1cm4gbmV4dEJyZWFrYWJsZVBvc2l0aW9uS2VlcGluZ0FsbFdvcmRz
PFVDaGFyLCBOQlNQQmVoYXZpb3I6OlRyZWF0TkJTUEFzQnJlYWs+KHN0cmluZy5jaGFyYWN0ZXJz
MTYoKSwgc3RyaW5nLmxlbmd0aCgpLCBzdGFydFBvc2l0aW9uKTsKLX0KLQotaW5saW5lIHVuc2ln
bmVkIG5leHRCcmVha2FibGVQb3NpdGlvbktlZXBpbmdBbGxXb3Jkc0lnbm9yaW5nTkJTUChMYXp5
TGluZUJyZWFrSXRlcmF0b3ImIGl0ZXJhdG9yLCBpbnQgc3RhcnRQb3NpdGlvbikKLXsKLSAgICBT
dHJpbmcgc3RyaW5nID0gaXRlcmF0b3Iuc3RyaW5nKCk7Ci0gICAgaWYgKHN0cmluZy5pczhCaXQo
KSkKLSAgICAgICAgcmV0dXJuIG5leHRCcmVha2FibGVQb3NpdGlvbktlZXBpbmdBbGxXb3JkczxM
Q2hhciwgTkJTUEJlaGF2aW9yOjpJZ25vcmVOQlNQPihzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3Ry
aW5nLmxlbmd0aCgpLCBzdGFydFBvc2l0aW9uKTsKLSAgICByZXR1cm4gbmV4dEJyZWFrYWJsZVBv
c2l0aW9uS2VlcGluZ0FsbFdvcmRzPFVDaGFyLCBOQlNQQmVoYXZpb3I6Oklnbm9yZU5CU1A+KHN0
cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nLmxlbmd0aCgpLCBzdGFydFBvc2l0aW9uKTsKLX0K
LQotaW5saW5lIGludCBuZXh0QnJlYWthYmxlUG9zaXRpb24oTGF6eUxpbmVCcmVha0l0ZXJhdG9y
JiBpdGVyYXRvciwgaW50IHBvcykKLXsKLSAgICBTdHJpbmcgc3RyaW5nID0gaXRlcmF0b3Iuc3Ry
aW5nKCk7Ci0gICAgaWYgKHN0cmluZy5pczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIG5leHRCcmVh
a2FibGVQb3NpdGlvbk5vbkxvb3NlbHk8TENoYXIsIE5CU1BCZWhhdmlvcjo6VHJlYXROQlNQQXNC
cmVhaz4oaXRlcmF0b3IsIHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCksIHBv
cyk7Ci0gICAgcmV0dXJuIG5leHRCcmVha2FibGVQb3NpdGlvbk5vbkxvb3NlbHk8VUNoYXIsIE5C
U1BCZWhhdmlvcjo6VHJlYXROQlNQQXNCcmVhaz4oaXRlcmF0b3IsIHN0cmluZy5jaGFyYWN0ZXJz
MTYoKSwgc3RyaW5nLmxlbmd0aCgpLCBwb3MpOwotfQotCi1pbmxpbmUgaW50IG5leHRCcmVha2Fi
bGVQb3NpdGlvbklnbm9yaW5nTkJTUChMYXp5TGluZUJyZWFrSXRlcmF0b3ImIGxhenlCcmVha0l0
ZXJhdG9yLCBpbnQgcG9zKQotewotICAgIFN0cmluZyBzdHJpbmcgPSBsYXp5QnJlYWtJdGVyYXRv
ci5zdHJpbmcoKTsKLSAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKQotICAgICAgICByZXR1cm4gbmV4
dEJyZWFrYWJsZVBvc2l0aW9uTm9uTG9vc2VseTxMQ2hhciwgTkJTUEJlaGF2aW9yOjpJZ25vcmVO
QlNQPihsYXp5QnJlYWtJdGVyYXRvciwgc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5n
dGgoKSwgcG9zKTsKLSAgICByZXR1cm4gbmV4dEJyZWFrYWJsZVBvc2l0aW9uTm9uTG9vc2VseTxV
Q2hhciwgTkJTUEJlaGF2aW9yOjpJZ25vcmVOQlNQPihsYXp5QnJlYWtJdGVyYXRvciwgc3RyaW5n
LmNoYXJhY3RlcnMxNigpLCBzdHJpbmcubGVuZ3RoKCksIHBvcyk7Ci19Ci0KLWlubGluZSBpbnQg
bmV4dEJyZWFrYWJsZVBvc2l0aW9uTG9vc2UoTGF6eUxpbmVCcmVha0l0ZXJhdG9yJiBsYXp5QnJl
YWtJdGVyYXRvciwgaW50IHBvcykKLXsKLSAgICBTdHJpbmcgc3RyaW5nID0gbGF6eUJyZWFrSXRl
cmF0b3Iuc3RyaW5nKCk7Ci0gICAgaWYgKHN0cmluZy5pczhCaXQoKSkKLSAgICAgICAgcmV0dXJu
IG5leHRCcmVha2FibGVQb3NpdGlvbkxvb3NlbHk8TENoYXIsIE5CU1BCZWhhdmlvcjo6VHJlYXRO
QlNQQXNCcmVhaz4obGF6eUJyZWFrSXRlcmF0b3IsIHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJp
bmcubGVuZ3RoKCksIHBvcyk7Ci0gICAgcmV0dXJuIG5leHRCcmVha2FibGVQb3NpdGlvbkxvb3Nl
bHk8VUNoYXIsIE5CU1BCZWhhdmlvcjo6VHJlYXROQlNQQXNCcmVhaz4obGF6eUJyZWFrSXRlcmF0
b3IsIHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nLmxlbmd0aCgpLCBwb3MpOwotfQotCi1p
bmxpbmUgaW50IG5leHRCcmVha2FibGVQb3NpdGlvbklnbm9yaW5nTkJTUExvb3NlKExhenlMaW5l
QnJlYWtJdGVyYXRvciYgbGF6eUJyZWFrSXRlcmF0b3IsIGludCBwb3MpCi17Ci0gICAgU3RyaW5n
IHN0cmluZyA9IGxhenlCcmVha0l0ZXJhdG9yLnN0cmluZygpOwotICAgIGlmIChzdHJpbmcuaXM4
Qml0KCkpCi0gICAgICAgIHJldHVybiBuZXh0QnJlYWthYmxlUG9zaXRpb25Mb29zZWx5PExDaGFy
LCBOQlNQQmVoYXZpb3I6Oklnbm9yZU5CU1A+KGxhenlCcmVha0l0ZXJhdG9yLCBzdHJpbmcuY2hh
cmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpLCBwb3MpOwotICAgIHJldHVybiBuZXh0QnJlYWth
YmxlUG9zaXRpb25Mb29zZWx5PFVDaGFyLCBOQlNQQmVoYXZpb3I6Oklnbm9yZU5CU1A+KGxhenlC
cmVha0l0ZXJhdG9yLCBzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0cmluZy5sZW5ndGgoKSwgcG9z
KTsKLX0KLQotaW5saW5lIGJvb2wgaXNCcmVha2FibGUoTGF6eUxpbmVCcmVha0l0ZXJhdG9yJiBs
YXp5QnJlYWtJdGVyYXRvciwgaW50IHBvcywgaW50JiBuZXh0QnJlYWthYmxlLCBib29sIGJyZWFr
TkJTUCwgYm9vbCBpc0xvb3NlTW9kZSwgYm9vbCBrZWVwQWxsV29yZHMpCi17Ci0gICAgaWYgKHBv
cyA8PSBuZXh0QnJlYWthYmxlKQotICAgICAgICByZXR1cm4gcG9zID09IG5leHRCcmVha2FibGU7
Ci0KLSAgICBpZiAoa2VlcEFsbFdvcmRzKSB7Ci0gICAgICAgIGlmIChicmVha05CU1ApCi0gICAg
ICAgICAgICBuZXh0QnJlYWthYmxlID0gc3RhdGljX2Nhc3Q8aW50PihuZXh0QnJlYWthYmxlUG9z
aXRpb25LZWVwaW5nQWxsV29yZHMobGF6eUJyZWFrSXRlcmF0b3IsIHBvcykpOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICBuZXh0QnJlYWthYmxlID0gc3RhdGljX2Nhc3Q8aW50PihuZXh0QnJl
YWthYmxlUG9zaXRpb25LZWVwaW5nQWxsV29yZHNJZ25vcmluZ05CU1AobGF6eUJyZWFrSXRlcmF0
b3IsIHBvcykpOwotICAgIH0gZWxzZSBpZiAoaXNMb29zZU1vZGUpIHsKLSAgICAgICAgaWYgKGJy
ZWFrTkJTUCkKLSAgICAgICAgICAgIG5leHRCcmVha2FibGUgPSBuZXh0QnJlYWthYmxlUG9zaXRp
b25Mb29zZShsYXp5QnJlYWtJdGVyYXRvciwgcG9zKTsKLSAgICAgICAgZWxzZQotICAgICAgICAg
ICAgbmV4dEJyZWFrYWJsZSA9IG5leHRCcmVha2FibGVQb3NpdGlvbklnbm9yaW5nTkJTUExvb3Nl
KGxhenlCcmVha0l0ZXJhdG9yLCBwb3MpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChicmVh
a05CU1ApCi0gICAgICAgICAgICBuZXh0QnJlYWthYmxlID0gbmV4dEJyZWFrYWJsZVBvc2l0aW9u
KGxhenlCcmVha0l0ZXJhdG9yLCBwb3MpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBuZXh0
QnJlYWthYmxlID0gbmV4dEJyZWFrYWJsZVBvc2l0aW9uSWdub3JpbmdOQlNQKGxhenlCcmVha0l0
ZXJhdG9yLCBwb3MpOwotICAgIH0KLSAgICByZXR1cm4gcG9zID09IG5leHRCcmVha2FibGU7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIGJyZWFrX2xpbmVzX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0JyZWFraW5nQ29udGV4dC5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0LmgKaW5kZXgg
NWE3ZGQ3NWMwNjQ1NDdiNGU3ODJmNzMzNDZkOWIwN2ZjNzhhZDZjZC4uY2QxNGI0Zjk4MDAzZGMy
MmNmMjg2YzM1MDg3OTY3YmFjNWI1ZWZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0LmgKQEAgLTI1LDYgKzI1LDcgQEAKICNpZm5kZWYgQnJl
YWtpbmdDb250ZXh0X2gKICNkZWZpbmUgQnJlYWtpbmdDb250ZXh0X2gKIAorI2luY2x1ZGUgIkJy
ZWFrTGluZXMuaCIKICNpbmNsdWRlICJIeXBoZW5hdGlvbi5oIgogI2luY2x1ZGUgIkxpbmVCcmVh
a2VyLmgiCiAjaW5jbHVkZSAiTGluZUluZm8uaCIKQEAgLTM4LDcgKzM5LDYgQEAKICNpbmNsdWRl
ICJSZW5kZXJSdWJ5UnVuLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHSW5saW5lVGV4dC5oIgogI2lu
Y2x1ZGUgIlRyYWlsaW5nT2JqZWN0cy5oIgotI2luY2x1ZGUgImJyZWFrX2xpbmVzLmgiCiAjaW5j
bHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgog
I2luY2x1ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CkBAIC0xNjcsNyArMTY3LDcg
QEAgcHVibGljOgogICAgICAgICBtX2hhbmdzQXRFbmQgPSBmYWxzZTsKICAgICB9CiAKLSAgICB2
b2lkIGNvbW1pdExpbmVCcmVha0F0Q3VycmVudFdpZHRoKFJlbmRlck9iamVjdCYgb2JqZWN0LCB1
bnNpZ25lZCBvZmZzZXQgPSAwLCBpbnQgbmV4dEJyZWFrID0gLTEpCisgICAgdm9pZCBjb21taXRM
aW5lQnJlYWtBdEN1cnJlbnRXaWR0aChSZW5kZXJPYmplY3QmIG9iamVjdCwgdW5zaWduZWQgb2Zm
c2V0ID0gMCwgT3B0aW9uYWw8dW5zaWduZWQ+IG5leHRCcmVhayA9IE51bGxvcHQpCiAgICAgewog
ICAgICAgICBtX3dpZHRoLmNvbW1pdCgpOwogICAgICAgICBtX2xpbmVCcmVha0hpc3RvcnkubW92
ZVRvKCZvYmplY3QsIG9mZnNldCwgbmV4dEJyZWFrKTsKQEAgLTIwNCwxNCArMjA0LDE0IEBAIHBy
aXZhdGU6CiAKICAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJu
IHRoaXMtPmF0KDApLnJlbmRlcmVyKCk7IH0KICAgICAgICAgdW5zaWduZWQgb2Zmc2V0KCkgY29u
c3QgeyByZXR1cm4gdGhpcy0+YXQoMCkub2Zmc2V0KCk7IH0KLSAgICAgICAgaW50IG5leHRCcmVh
a2FibGVQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIHRoaXMtPmF0KDApLm5leHRCcmVha2FibGVQ
b3NpdGlvbigpOyB9CisgICAgICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBuZXh0QnJlYWthYmxlUG9z
aXRpb24oKSBjb25zdCB7IHJldHVybiB0aGlzLT5hdCgwKS5uZXh0QnJlYWthYmxlUG9zaXRpb24o
KTsgfQogICAgICAgICBib29sIGF0VGV4dFBhcmFncmFwaFNlcGFyYXRvcigpIGNvbnN0IHsgcmV0
dXJuIHRoaXMtPmF0KDApLmF0VGV4dFBhcmFncmFwaFNlcGFyYXRvcigpOyB9CiAgICAgICAgIFVD
aGFyIHByZXZpb3VzSW5TYW1lTm9kZSgpIGNvbnN0IHsgcmV0dXJuIHRoaXMtPmF0KDApLnByZXZp
b3VzSW5TYW1lTm9kZSgpOyB9CiAgICAgICAgIGNvbnN0IElubGluZUl0ZXJhdG9yJiBnZXQoc2l6
ZV90IGkpIGNvbnN0IHsgcmV0dXJuIHRoaXMtPmF0KGkpOyB9OwogICAgICAgICBjb25zdCBJbmxp
bmVJdGVyYXRvciYgY3VycmVudCgpIGNvbnN0IHsgcmV0dXJuIGdldCgwKTsgfQogICAgICAgICBz
aXplX3QgaGlzdG9yeUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIHRoaXMtPnNpemUoKTsgfQogCi0g
ICAgICAgIHZvaWQgbW92ZVRvKFJlbmRlck9iamVjdCogb2JqZWN0LCB1bnNpZ25lZCBvZmZzZXQs
IGludCBuZXh0QnJlYWsgPSAtMSkKKyAgICAgICAgdm9pZCBtb3ZlVG8oUmVuZGVyT2JqZWN0KiBv
YmplY3QsIHVuc2lnbmVkIG9mZnNldCwgT3B0aW9uYWw8dW5zaWduZWQ+IG5leHRCcmVhayA9IE51
bGxvcHQpCiAgICAgICAgIHsKICAgICAgICAgICAgIHB1c2goWyZdKElubGluZUl0ZXJhdG9yJiBt
b2RpZnlNZSkgewogICAgICAgICAgICAgICAgIG1vZGlmeU1lLm1vdmVUbyhvYmplY3QsIG9mZnNl
dCwgbmV4dEJyZWFrKTsKQEAgLTY1MCw3ICs2NTAsNyBAQCBpbmxpbmUgdm9pZCBlbnN1cmVDaGFy
YWN0ZXJHZXRzTGluZUJveChMaW5lV2hpdGVzcGFjZUNvbGxhcHNpbmdTdGF0ZSYgbGluZVdoaXRl
cwogICAgIGxpbmVXaGl0ZXNwYWNlQ29sbGFwc2luZ1N0YXRlLnN0b3BJZ25vcmluZ1NwYWNlcyhJ
bmxpbmVJdGVyYXRvcigwLCB0ZXh0UGFyYWdyYXBoU2VwYXJhdG9yLnJlbmRlcmVyKCksIHRleHRQ
YXJhZ3JhcGhTZXBhcmF0b3Iub2Zmc2V0KCkpKTsKIH0KIAotaW5saW5lIHZvaWQgdHJ5SHlwaGVu
YXRpbmcoUmVuZGVyVGV4dCYgdGV4dCwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IEF0
b21pY1N0cmluZyYgbG9jYWxlSWRlbnRpZmllciwgdW5zaWduZWQgY29uc2VjdXRpdmVIeXBoZW5h
dGVkTGluZXMsIGludCBjb25zZWN1dGl2ZUh5cGhlbmF0ZWRMaW5lc0xpbWl0LCBpbnQgbWluaW11
bVByZWZpeExpbWl0LCBpbnQgbWluaW11bVN1ZmZpeExpbWl0LCB1bnNpZ25lZCBsYXN0U3BhY2Us
IHVuc2lnbmVkIHBvcywgZmxvYXQgeFBvcywgaW50IGF2YWlsYWJsZVdpZHRoLCBib29sIGlzRml4
ZWRQaXRjaCwgYm9vbCBjb2xsYXBzZVdoaXRlU3BhY2UsIGludCBsYXN0U3BhY2VXb3JkU3BhY2lu
ZywgSW5saW5lSXRlcmF0b3ImIGxpbmVCcmVhaywgaW50IG5leHRCcmVha2FibGUsIGJvb2wmIGh5
cGhlbmF0ZWQpCitpbmxpbmUgdm9pZCB0cnlIeXBoZW5hdGluZyhSZW5kZXJUZXh0JiB0ZXh0LCBj
b25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGVJZGVudGlm
aWVyLCB1bnNpZ25lZCBjb25zZWN1dGl2ZUh5cGhlbmF0ZWRMaW5lcywgaW50IGNvbnNlY3V0aXZl
SHlwaGVuYXRlZExpbmVzTGltaXQsIGludCBtaW5pbXVtUHJlZml4TGltaXQsIGludCBtaW5pbXVt
U3VmZml4TGltaXQsIHVuc2lnbmVkIGxhc3RTcGFjZSwgdW5zaWduZWQgcG9zLCBmbG9hdCB4UG9z
LCBpbnQgYXZhaWxhYmxlV2lkdGgsIGJvb2wgaXNGaXhlZFBpdGNoLCBib29sIGNvbGxhcHNlV2hp
dGVTcGFjZSwgaW50IGxhc3RTcGFjZVdvcmRTcGFjaW5nLCBJbmxpbmVJdGVyYXRvciYgbGluZUJy
ZWFrLCBPcHRpb25hbDx1bnNpZ25lZD4gbmV4dEJyZWFrYWJsZSwgYm9vbCYgaHlwaGVuYXRlZCkK
IHsKICAgICAvLyBNYXAgJ2h5cGhlbmF0ZS1saW1pdC17YmVmb3JlLGFmdGVyfTogYXV0bzsnIHRv
IDIuCiAgICAgdW5zaWduZWQgbWluaW11bVByZWZpeExlbmd0aDsKQEAgLTg1Nyw3ICs4NTcsNyBA
QCBpbmxpbmUgYm9vbCBCcmVha2luZ0NvbnRleHQ6OmhhbmRsZVRleHQoV29yZE1lYXN1cmVtZW50
cyYgd29yZE1lYXN1cmVtZW50cywgYm9vbAogICAgICAgICAgICAgbWlkV29yZEJyZWFrID0gbV93
aWR0aC5jb21taXR0ZWRXaWR0aCgpICsgd3JhcFcgKyBjaGFyV2lkdGggPiBtX3dpZHRoLmF2YWls
YWJsZVdpZHRoKCk7CiAgICAgICAgIH0KIAotICAgICAgICBpbnQgbmV4dEJyZWFrYWJsZVBvc2l0
aW9uID0gbV9jdXJyZW50Lm5leHRCcmVha2FibGVQb3NpdGlvbigpOworICAgICAgICBPcHRpb25h
bDx1bnNpZ25lZD4gbmV4dEJyZWFrYWJsZVBvc2l0aW9uID0gbV9jdXJyZW50Lm5leHRCcmVha2Fi
bGVQb3NpdGlvbigpOwogICAgICAgICBib29sIGJldHdlZW5Xb3JkcyA9IGMgPT0gJ1xuJyB8fCAo
bV9jdXJyV1MgIT0gUFJFICYmICFtX2F0U3RhcnQgJiYgaXNCcmVha2FibGUobV9yZW5kZXJUZXh0
SW5mby5saW5lQnJlYWtJdGVyYXRvciwgbV9jdXJyZW50Lm9mZnNldCgpLCBuZXh0QnJlYWthYmxl
UG9zaXRpb24sIGJyZWFrTkJTUCwgaXNMb29zZUNKS01vZGUsIGtlZXBBbGxXb3JkcykKICAgICAg
ICAgICAgICYmIChzdHlsZS5oeXBoZW5zKCkgIT0gSHlwaGVuc05vbmUgfHwgKG1fY3VycmVudC5w
cmV2aW91c0luU2FtZU5vZGUoKSAhPSBzb2Z0SHlwaGVuKSkpOwogICAgICAgICBtX2N1cnJlbnQu
c2V0TmV4dEJyZWFrYWJsZVBvc2l0aW9uKG5leHRCcmVha2FibGVQb3NpdGlvbik7CkBAIC05NTks
MTQgKzk1OSwxNCBAQCBpbmxpbmUgYm9vbCBCcmVha2luZ0NvbnRleHQ6OmhhbmRsZVRleHQoV29y
ZE1lYXN1cmVtZW50cyYgd29yZE1lYXN1cmVtZW50cywgYm9vbAogICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBsYXN0IGJyZWFraW5nIHBv
c2l0aW9uIGlzIGEgc29mdC1oeXBoZW4uCiAgICAgICAgICAgICAgICAgICAgIGlmICghaHlwaGVu
YXRlZCAmJiBzdHlsZS5oeXBoZW5zKCkgIT0gSHlwaGVuc05vbmUpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIE9wdGlvbmFsPGludD4gbGFzdEJyZWFraW5nUG9zaXRvbjsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBsYXN0QnJlYWtpbmdQb3NpdG9uOwogICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlckF0QnJlYWtp
bmdQb3NpdGlvbiA9IG51bGxwdHI7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9saW5l
QnJlYWtIaXN0b3J5Lm9mZnNldCgpIHx8IG1fbGluZUJyZWFrSGlzdG9yeS5uZXh0QnJlYWthYmxl
UG9zaXRpb24oKSA+IC0xKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9saW5lQnJl
YWtIaXN0b3J5Lm9mZnNldCgpIHx8IG1fbGluZUJyZWFrSGlzdG9yeS5uZXh0QnJlYWthYmxlUG9z
aXRpb24oKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RCcmVha2luZ1Bvc2l0
b24gPSBtX2xpbmVCcmVha0hpc3Rvcnkub2Zmc2V0KCk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVuZGVyZXJBdEJyZWFraW5nUG9zaXRpb24gPSBtX2xpbmVCcmVha0hpc3RvcnkucmVu
ZGVyZXIoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobV9jdXJyZW50Lm5l
eHRCcmVha2FibGVQb3NpdGlvbigpID4gLTEgJiYgKHVuc2lnbmVkKW1fY3VycmVudC5uZXh0QnJl
YWthYmxlUG9zaXRpb24oKSA8PSBtX2N1cnJlbnQub2Zmc2V0KCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIH0gZWxzZSBpZiAobV9jdXJyZW50Lm5leHRCcmVha2FibGVQb3NpdGlvbigpICYm
IG1fY3VycmVudC5uZXh0QnJlYWthYmxlUG9zaXRpb24oKS52YWx1ZSgpIDw9IG1fY3VycmVudC5v
ZmZzZXQoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIG1pZ2h0IGp1c3Qg
YmUgcmlnaHQgYWZ0ZXIgdGhlIHNvZnQtaHlwaGVuCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbGFzdEJyZWFraW5nUG9zaXRvbiA9IG1fY3VycmVudC5uZXh0QnJlYWthYmxlUG9zaXRpb24o
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0QnJlYWtpbmdQb3NpdG9uID0gbV9j
dXJyZW50Lm5leHRCcmVha2FibGVQb3NpdGlvbigpLnZhbHVlKCk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVuZGVyZXJBdEJyZWFraW5nUG9zaXRpb24gPSBtX2N1cnJlbnQucmVuZGVy
ZXIoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChsYXN0QnJlYWtpbmdQb3NpdG9uKSB7CkBAIC05NzcsNyArOTc3LDcgQEAgaW5saW5lIGJv
b2wgQnJlYWtpbmdDb250ZXh0OjpoYW5kbGVUZXh0KFdvcmRNZWFzdXJlbWVudHMmIHdvcmRNZWFz
dXJlbWVudHMsIGJvb2wKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVy
QmVmb3JlQnJlYWtpbmdQb3NpdGlvbiA9IGxhc3RDaGFyYWN0ZXJGcm9tUHJldmlvdXNSZW5kZXJU
ZXh0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzPFJlbmRlclRleHQ+
KHJlbmRlcmVyQXRCcmVha2luZ1Bvc2l0aW9uKSkgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBhdXRvJiB0ZXh0UmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJUZXh0Pigq
cmVuZGVyZXJBdEJyZWFraW5nUG9zaXRpb24pOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBBU1NFUlQodGV4dFJlbmRlcmVyLnRleHRMZW5ndGgoKSA+ICh1bnNpZ25lZCkobGFzdEJy
ZWFraW5nUG9zaXRvbi52YWx1ZSgpIC0gMSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBBU1NFUlQobGFzdEJyZWFraW5nUG9zaXRvbi52YWx1ZSgpID49IDEgJiYgdGV4dFJlbmRl
cmVyLnRleHRMZW5ndGgoKSA+IChsYXN0QnJlYWtpbmdQb3NpdG9uLnZhbHVlKCkgLSAxKSk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlckJlZm9yZUJyZWFraW5nUG9z
aXRpb24gPSB0ZXh0UmVuZGVyZXIuY2hhcmFjdGVyQXQobGFzdEJyZWFraW5nUG9zaXRvbi52YWx1
ZSgpIC0gMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChjaGFyYWN0ZXJCZWZvcmVCcmVha2luZ1Bvc2l0aW9uKQpAQCAtMTMx
NSw5ICsxMzE1LDkgQEAgaW5saW5lIElubGluZUl0ZXJhdG9yIEJyZWFraW5nQ29udGV4dDo6b3B0
aW1hbExpbmVCcmVha0xvY2F0aW9uRm9yVHJhaWxpbmdXb3JkKCkKICAgICAgICAgcmV0dXJuIGxp
bmVCcmVhazsKICAgICBib29sIGlzTG9vc2VDSktNb2RlID0gbV9yZW5kZXJUZXh0SW5mby50ZXh0
ICE9ICZyZW5kZXJUZXh0ICYmIG1fcmVuZGVyVGV4dEluZm8ubGluZUJyZWFrSXRlcmF0b3IuaXNM
b29zZUNKS01vZGUoKTsKICAgICBib29sIGJyZWFrTkJTUCA9IG1fYXV0b1dyYXAgJiYgbV9jdXJy
ZW50U3R5bGUtPm5ic3BNb2RlKCkgPT0gU1BBQ0U7Ci0gICAgaW50IG5leHRCcmVha2FibGVQb3Np
dGlvbiA9IGxpbmVCcmVhay5uZXh0QnJlYWthYmxlUG9zaXRpb24oKTsKKyAgICBPcHRpb25hbDx1
bnNpZ25lZD4gbmV4dEJyZWFrYWJsZVBvc2l0aW9uID0gbGluZUJyZWFrLm5leHRCcmVha2FibGVQ
b3NpdGlvbigpOwogICAgIGlzQnJlYWthYmxlKG1fcmVuZGVyVGV4dEluZm8ubGluZUJyZWFrSXRl
cmF0b3IsIGxpbmVCcmVhay5vZmZzZXQoKSArIDEsIG5leHRCcmVha2FibGVQb3NpdGlvbiwgYnJl
YWtOQlNQLCBpc0xvb3NlQ0pLTW9kZSwgbV9jdXJyZW50U3R5bGUtPndvcmRCcmVhaygpID09IEtl
ZXBBbGxXb3JkQnJlYWspOwotICAgIGlmIChuZXh0QnJlYWthYmxlUG9zaXRpb24gPCAwIHx8IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihuZXh0QnJlYWthYmxlUG9zaXRpb24pICE9IHJlbmRlclRleHQu
dGV4dExlbmd0aCgpKQorICAgIGlmICghbmV4dEJyZWFrYWJsZVBvc2l0aW9uIHx8IG5leHRCcmVh
a2FibGVQb3NpdGlvbi52YWx1ZSgpICE9IHJlbmRlclRleHQudGV4dExlbmd0aCgpKQogICAgICAg
ICByZXR1cm4gbGluZUJyZWFrOwogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IGxpbmVT
dHlsZShyZW5kZXJUZXh0LCBtX2xpbmVJbmZvKTsKICAgICBjb25zdCBGb250Q2FzY2FkZSYgZm9u
dCA9IHN0eWxlLmZvbnRDYXNjYWRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2lvcy9N
aXNjL1dlYlVJS2l0U3VwcG9ydC5tbSBiL1NvdXJjZS9XZWJLaXQvaW9zL01pc2MvV2ViVUlLaXRT
dXBwb3J0Lm1tCmluZGV4IDg5OGIwNTZhYTFiNmJkMzc5YmZiMjMyOGRlM2JmOTg2YjU0MjhjZGMu
LjQwOTFiMTQ3NDBlOGYwNDgwNzVjZDYyOGFjYjJmYjZhYTI5OTI5YzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvaW9zL01pc2MvV2ViVUlLaXRTdXBwb3J0Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvaW9zL01pc2MvV2ViVUlLaXRTdXBwb3J0Lm1tCkBAIC0zMywxMiArMzMsMTIgQEAKICNpbXBv
cnQgIldlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIgogI2ltcG9ydCAiV2ViU3lzdGVtSW50ZXJmYWNl
LmgiCiAjaW1wb3J0ICJXZWJWaWV3UHJpdmF0ZS5oIgorI2ltcG9ydCA8V2ViQ29yZS9CcmVha0xp
bmVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhdGhVdGlsaXRpZXMuaD4KICNpbXBvcnQgPFdlYkNv
cmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NldHRpbmdzLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUv
V2ViQ29yZVRocmVhZFN5c3RlbUludGVyZmFjZS5oPgotI2ltcG9ydCA8V2ViQ29yZS9icmVha19s
aW5lcy5oPgogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vZHlsZFNQSS5oPgogI2ltcG9ydCA8d3Rm
L3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KIApAQCAtODksMTIgKzg5LDEyIEBAIGZsb2F0IFdl
YktpdEdldE1pbmltdW1ab29tRm9udFNpemUodm9pZCkKIAogaW50IFdlYktpdEdldExhc3RMaW5l
QnJlYWtJbkJ1ZmZlcihVQ2hhciAqY2hhcmFjdGVycywgaW50IHBvc2l0aW9uLCBpbnQgbGVuZ3Ro
KQogewotICAgIGludCBsYXN0QnJlYWtQb3MgPSBwb3NpdGlvbjsKLSAgICBpbnQgYnJlYWtQb3Mg
PSAwOworICAgIHVuc2lnbmVkIGxhc3RCcmVha1BvcyA9IHBvc2l0aW9uOworICAgIHVuc2lnbmVk
IGJyZWFrUG9zID0gMDsKICAgICBMYXp5TGluZUJyZWFrSXRlcmF0b3IgYnJlYWtJdGVyYXRvcihT
dHJpbmcoY2hhcmFjdGVycywgbGVuZ3RoKSk7Ci0gICAgd2hpbGUgKChicmVha1BvcyA9IG5leHRC
cmVha2FibGVQb3NpdGlvbihicmVha0l0ZXJhdG9yLCBicmVha1BvcykpIDwgcG9zaXRpb24pCisg
ICAgd2hpbGUgKHN0YXRpY19jYXN0PGludD4oYnJlYWtQb3MgPSBuZXh0QnJlYWthYmxlUG9zaXRp
b24oYnJlYWtJdGVyYXRvciwgYnJlYWtQb3MpKSA8IHBvc2l0aW9uKQogICAgICAgICBsYXN0QnJl
YWtQb3MgPSBicmVha1BvcysrOwotICAgIHJldHVybiBsYXN0QnJlYWtQb3MgPCBwb3NpdGlvbiA/
IChOU1VJbnRlZ2VyKWxhc3RCcmVha1BvcyA6IElOVF9NQVg7CisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGludD4obGFzdEJyZWFrUG9zKSA8IHBvc2l0aW9uID8gbGFzdEJyZWFrUG9zIDogSU5UX01B
WDsKIH0KIAogY29uc3QgY2hhciAqV2ViS2l0UGxhdGZvcm1TeXN0ZW1Sb290RGlyZWN0b3J5KHZv
aWQpCg==
</data>
<flag name="review"
          id="309694"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286162</attachid>
            <date>2016-08-16 00:43:44 -0700</date>
            <delta_ts>2016-08-16 15:40:46 -0700</delta_ts>
            <desc>Patch for committing</desc>
            <filename>bug-160859-20160816004158.patch</filename>
            <type>text/plain</type>
            <size>78302</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0NDk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTVkN2RjM2UxYmY5MGVj
OTIzNTE2NWVjZDFlODAwMjk4MDAwYWQwZS4uYTg0ZTAxZTNiNTBiMmY1ZTg4MjhkMzViZDc3ZDUx
NDZjZmZiZTUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDE2LTA4LTE1ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgTWlncmF0ZSBs
aW5lIGJyZWFraW5nIGNvZGUgZnJvbSBpbnRzIHRvIE9wdGlvbmFsPHVuc2lnbmVkPnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDg1OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFByZXZpb3VzbHksIHdlIHdl
cmUgdXNpbmcgLTEgdG8gbWVhbiAiYmVmb3JlIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0cmluZyIu
IE5vdywKKyAgICAgICAgTnVsbG9wdCBtZWFucyB0aGF0LgorCisgICAgICAgIFRoaXMgcGF0Y2gg
YWxzbyByZW5hbWVzIGJyZWFrX2xpbmVzLntoLGNwcH0gdG8gQnJlYWtMaW5lcy57aC5jcHB9LiBU
aGlzIGZpbGUgd2FzCisgICAgICAgIG9yaWdpbmFsbHkgbmFtZWQgZHVyaW5nIHRoZSBLSFRNTCBk
YXlzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2aW9y
IGNoYW5nZS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiByZW5kZXJpbmcvQnJlYWtMaW5l
cy5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvYnJlYWtfbGluZXMu
Y3BwLgorICAgICAgICAqIHJlbmRlcmluZy9CcmVha0xpbmVzLmg6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvYnJlYWtfbGluZXMuaC4KKyAgICAgICAgKFdlYkNvcmU6Omlz
QnJlYWthYmxlU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkQnJlYWtBZnRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpuZWVkc0xpbmVCcmVha0l0ZXJhdG9yKToKKyAgICAgICAgKFdlYkNv
cmU6Om5leHRCcmVha2FibGVQb3NpdGlvbk5vbkxvb3NlbHkpOgorICAgICAgICAoV2ViQ29yZTo6
bmV4dEJyZWFrYWJsZVBvc2l0aW9uTG9vc2VseSk6CisgICAgICAgIChXZWJDb3JlOjpuZXh0QnJl
YWthYmxlUG9zaXRpb25LZWVwaW5nQWxsV29yZHMpOgorICAgICAgICAoV2ViQ29yZTo6bmV4dEJy
ZWFrYWJsZVBvc2l0aW9uS2VlcGluZ0FsbFdvcmRzSWdub3JpbmdOQlNQKToKKyAgICAgICAgKFdl
YkNvcmU6Om5leHRCcmVha2FibGVQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpuZXh0QnJl
YWthYmxlUG9zaXRpb25JZ25vcmluZ05CU1ApOgorICAgICAgICAoV2ViQ29yZTo6bmV4dEJyZWFr
YWJsZVBvc2l0aW9uTG9vc2UpOgorICAgICAgICAoV2ViQ29yZTo6bmV4dEJyZWFrYWJsZVBvc2l0
aW9uSWdub3JpbmdOQlNQTG9vc2UpOgorICAgICAgICAoV2ViQ29yZTo6aXNCcmVha2FibGUpOgor
ICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6
SW5saW5lSXRlcmF0b3I6Om1vdmVUbyk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRv
cjo6bmV4dEJyZWFrYWJsZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJh
dG9yOjpzZXROZXh0QnJlYWthYmxlUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5l
SXRlcmF0b3I6OklubGluZUl0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcv
SW5saW5lVGV4dEJveC5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0
aHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJpbmdBbGxJbk9uZS5jcHA6CisgICAgICAg
ICogcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJdGVyYXRvci5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9icmVha19saW5lcy5oOgorICAgICAgICAoV2ViQ29yZTo6aXNCcmVh
a2FibGVTcGFjZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpzaG91bGRCcmVha0FmdGVy
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om5lZWRzTGluZUJyZWFrSXRlcmF0b3IpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6bmV4dEJyZWFrYWJsZVBvc2l0aW9uTm9uTG9vc2Vs
eSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpuZXh0QnJlYWthYmxlUG9zaXRpb25Mb29z
ZWx5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om5leHRCcmVha2FibGVQb3NpdGlvbktl
ZXBpbmdBbGxXb3Jkcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpuZXh0QnJlYWthYmxl
UG9zaXRpb25LZWVwaW5nQWxsV29yZHNJZ25vcmluZ05CU1ApOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6bmV4dEJyZWFrYWJsZVBvc2l0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Om5leHRCcmVha2FibGVQb3NpdGlvbklnbm9yaW5nTkJTUCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpuZXh0QnJlYWthYmxlUG9zaXRpb25Mb29zZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpuZXh0QnJlYWthYmxlUG9zaXRpb25JZ25vcmluZ05CU1BMb29zZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjppc0JyZWFrYWJsZSk6IERlbGV0ZWQuCisgICAgICAgICog
cmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpCcmVh
a2luZ0NvbnRleHQ6OmNvbW1pdExpbmVCcmVha0F0Q3VycmVudFdpZHRoKToKKyAgICAgICAgKFdl
YkNvcmU6OkJyZWFraW5nQ29udGV4dDo6SW5saW5lSXRlcmF0b3JIaXN0b3J5OjpuZXh0QnJlYWth
YmxlUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QnJlYWtpbmdDb250ZXh0OjpJbmxpbmVJ
dGVyYXRvckhpc3Rvcnk6Om1vdmVUbyk6CisgICAgICAgIChXZWJDb3JlOjp0cnlIeXBoZW5hdGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpCcmVha2luZ0NvbnRleHQ6OmhhbmRsZVRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6QnJlYWtpbmdDb250ZXh0OjpvcHRpbWFsTGluZUJyZWFrTG9jYXRpb25G
b3JUcmFpbGluZ1dvcmQpOgorCiAyMDE2LTA4LTE1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGRpY3Rpb25hcnkgbWVtYmVycyBvZiBu
b24gbnVsbGFibGUgd3JhcHBlciB0eXBlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9pb3Mv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCmluZGV4IDExMGFmMDk5MjBh
YWZkMGY1OTQyNTNkZmMwMDdiNjM0ZmQ5NjNmZDcuLmZjN2JjNmVlNWMzNjRkNmFjZTIwYzM3OTE5
OTJlNzg2OTBiNjRkNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNi0w
OC0xNSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAg
IE1pZ3JhdGUgbGluZSBicmVha2luZyBjb2RlIGZyb20gaW50cyB0byBPcHRpb25hbDx1bnNpZ25l
ZD5zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA4
NTkKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIE1pc2Mv
V2ViVUlLaXRTdXBwb3J0Lm1tOgorICAgICAgICAoV2ViS2l0R2V0TGFzdExpbmVCcmVha0luQnVm
ZmVyKToKKwogMjAxNi0wOC0xNSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29t
PgogCiAgICAgICAgIFJlbW92ZSB1bnVzZWQgaW5jbHVkZXMgb2Ygd3RmIGhlYWRlcnMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaCBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaAppbmRleCBkOTAzMjE1YWU0MTM3ZTRjM2E5
ZWEzNWIzZDAyNWJmNTJlNDUxOGVjLi5lNTgwZWExMDc4NGNjMGI0YTE3ODc0MmEwM2MzODFjNGRl
ZTJiYTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9y
LmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oCkBAIC03OCw4
ICs3OCw4IEBAIHB1YmxpYzoKICAgICAgICAgcmVzZXRQcmlvckNvbnRleHQoKTsKICAgICB9CiAK
LSAgICBMYXp5TGluZUJyZWFrSXRlcmF0b3IoU3RyaW5nIHN0cmluZywgY29uc3QgQXRvbWljU3Ry
aW5nJiBsb2NhbGUgPSBBdG9taWNTdHJpbmcoKSwgTGluZUJyZWFrSXRlcmF0b3JNb2RlIG1vZGUg
PSBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNCkKLSAgICAgICAgOiBtX3N0cmluZyhzdHJpbmcp
CisgICAgTGF6eUxpbmVCcmVha0l0ZXJhdG9yKFN0cmluZ1ZpZXcgc3RyaW5nVmlldywgY29uc3Qg
QXRvbWljU3RyaW5nJiBsb2NhbGUgPSBBdG9taWNTdHJpbmcoKSwgTGluZUJyZWFrSXRlcmF0b3JN
b2RlIG1vZGUgPSBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNCkKKyAgICAgICAgOiBtX3N0cmlu
Z1ZpZXcoc3RyaW5nVmlldykKICAgICAgICAgLCBtX2xvY2FsZShsb2NhbGUpCiAgICAgICAgICwg
bV9pdGVyYXRvcihudWxscHRyKQogICAgICAgICAsIG1fY2FjaGVkUHJpb3JDb250ZXh0KG51bGxw
dHIpCkBAIC05Niw3ICs5Niw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJlbGVhc2VMaW5lQnJl
YWtJdGVyYXRvcihtX2l0ZXJhdG9yKTsKICAgICB9CiAKLSAgICBTdHJpbmcgc3RyaW5nKCkgY29u
c3QgeyByZXR1cm4gbV9zdHJpbmc7IH0KKyAgICBTdHJpbmdWaWV3IHN0cmluZ1ZpZXcoKSBjb25z
dCB7IHJldHVybiBtX3N0cmluZ1ZpZXc7IH0KICAgICBib29sIGlzTG9vc2VDSktNb2RlKCkgY29u
c3QgeyByZXR1cm4gbV9pc0NKSyAmJiBtX21vZGUgPT0gTGluZUJyZWFrSXRlcmF0b3JNb2RlVUFY
MTRMb29zZTsgfQogCiAgICAgVUNoYXIgbGFzdENoYXJhY3RlcigpIGNvbnN0CkBAIC0xNTIsMjEg
KzE1MiwyMSBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChwcmlvckNvbnRleHRMZW5ndGggPD0g
cHJpb3JDb250ZXh0Q2FwYWNpdHkpOwogICAgICAgICBjb25zdCBVQ2hhciogcHJpb3JDb250ZXh0
ID0gcHJpb3JDb250ZXh0TGVuZ3RoID8gJm1fcHJpb3JDb250ZXh0W3ByaW9yQ29udGV4dENhcGFj
aXR5IC0gcHJpb3JDb250ZXh0TGVuZ3RoXSA6IDA7CiAgICAgICAgIGlmICghbV9pdGVyYXRvcikg
ewotICAgICAgICAgICAgbV9pdGVyYXRvciA9IGFjcXVpcmVMaW5lQnJlYWtJdGVyYXRvcihtX3N0
cmluZywgbV9sb2NhbGUsIHByaW9yQ29udGV4dCwgcHJpb3JDb250ZXh0TGVuZ3RoLCBtX21vZGUs
IG1faXNDSkspOworICAgICAgICAgICAgbV9pdGVyYXRvciA9IGFjcXVpcmVMaW5lQnJlYWtJdGVy
YXRvcihtX3N0cmluZ1ZpZXcsIG1fbG9jYWxlLCBwcmlvckNvbnRleHQsIHByaW9yQ29udGV4dExl
bmd0aCwgbV9tb2RlLCBtX2lzQ0pLKTsKICAgICAgICAgICAgIG1fY2FjaGVkUHJpb3JDb250ZXh0
ID0gcHJpb3JDb250ZXh0OwogICAgICAgICAgICAgbV9jYWNoZWRQcmlvckNvbnRleHRMZW5ndGgg
PSBwcmlvckNvbnRleHRMZW5ndGg7CiAgICAgICAgIH0gZWxzZSBpZiAocHJpb3JDb250ZXh0ICE9
IG1fY2FjaGVkUHJpb3JDb250ZXh0IHx8IHByaW9yQ29udGV4dExlbmd0aCAhPSBtX2NhY2hlZFBy
aW9yQ29udGV4dExlbmd0aCkgewotICAgICAgICAgICAgcmVzZXRTdHJpbmdBbmRSZWxlYXNlSXRl
cmF0b3IobV9zdHJpbmcsIG1fbG9jYWxlLCBtX21vZGUpOworICAgICAgICAgICAgcmVzZXRTdHJp
bmdBbmRSZWxlYXNlSXRlcmF0b3IobV9zdHJpbmdWaWV3LCBtX2xvY2FsZSwgbV9tb2RlKTsKICAg
ICAgICAgICAgIHJldHVybiB0aGlzLT5nZXQocHJpb3JDb250ZXh0TGVuZ3RoKTsKICAgICAgICAg
fQogICAgICAgICByZXR1cm4gbV9pdGVyYXRvcjsKICAgICB9CiAKLSAgICB2b2lkIHJlc2V0U3Ry
aW5nQW5kUmVsZWFzZUl0ZXJhdG9yKFN0cmluZyBzdHJpbmcsIGNvbnN0IEF0b21pY1N0cmluZyYg
bG9jYWxlLCBMaW5lQnJlYWtJdGVyYXRvck1vZGUgbW9kZSkKKyAgICB2b2lkIHJlc2V0U3RyaW5n
QW5kUmVsZWFzZUl0ZXJhdG9yKFN0cmluZ1ZpZXcgc3RyaW5nVmlldywgY29uc3QgQXRvbWljU3Ry
aW5nJiBsb2NhbGUsIExpbmVCcmVha0l0ZXJhdG9yTW9kZSBtb2RlKQogICAgIHsKICAgICAgICAg
aWYgKG1faXRlcmF0b3IpCiAgICAgICAgICAgICByZWxlYXNlTGluZUJyZWFrSXRlcmF0b3IobV9p
dGVyYXRvcik7Ci0gICAgICAgIG1fc3RyaW5nID0gc3RyaW5nOworICAgICAgICBtX3N0cmluZ1Zp
ZXcgPSBzdHJpbmdWaWV3OwogICAgICAgICBtX2xvY2FsZSA9IGxvY2FsZTsKICAgICAgICAgbV9p
dGVyYXRvciA9IG51bGxwdHI7CiAgICAgICAgIG1fY2FjaGVkUHJpb3JDb250ZXh0ID0gbnVsbHB0
cjsKQEAgLTE3Nyw3ICsxNzcsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIHByaW9yQ29udGV4dENhcGFjaXR5ID0gMjsKLSAgICBTdHJpbmcgbV9zdHJp
bmc7CisgICAgU3RyaW5nVmlldyBtX3N0cmluZ1ZpZXc7CiAgICAgQXRvbWljU3RyaW5nIG1fbG9j
YWxlOwogICAgIFRleHRCcmVha0l0ZXJhdG9yKiBtX2l0ZXJhdG9yOwogICAgIGNvbnN0IFVDaGFy
KiBtX2NhY2hlZFByaW9yQ29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNjRmZWJlYzk0
NTM2NDUwN2M2Y2IxNTRmOGI0Mjg0NDdlY2U2Nzg3OC4uOTY1MDlmMTE1YzU0NjVjMjRkNmMxZmQw
MDllNjk4ZDFjYmM2OTY1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTI0MDksNiArMjQwOSw3
IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICByZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0LmNw
cAogICAgIHJlbmRlcmluZy9CaWRpUnVuLmNwcAogICAgIHJlbmRlcmluZy9Cb3JkZXJFZGdlLmNw
cAorICAgIHJlbmRlcmluZy9CcmVha0xpbmVzLmNwcAogICAgIHJlbmRlcmluZy9DbGlwUmVjdC5j
cHAKICAgICByZW5kZXJpbmcvQ291bnRlck5vZGUuY3BwCiAgICAgcmVuZGVyaW5nL0VsbGlwc2lz
Qm94LmNwcApAQCAtMjUyNyw3ICsyNTI4LDYgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHJl
bmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuY3BwCiAgICAgcmVuZGVyaW5nL1RleHRQYWlu
dFN0eWxlLmNwcAogICAgIHJlbmRlcmluZy9UZXh0UGFpbnRlci5jcHAKLSAgICByZW5kZXJpbmcv
YnJlYWtfbGluZXMuY3BwCiAKICAgICByZW5kZXJpbmcvbGluZS9MaW5lQnJlYWtlci5jcHAKICAg
ICByZW5kZXJpbmcvbGluZS9MaW5lSW5mby5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzNDE0MWMxNTEzZjU3MWI4ZGZkOGRl
OTBmZTM5ZTNiYTNmMDU4NWNmLi5kMDBjNDk0MzI5OTY0NzI3MTI0ZGFiY2Q4NzNmM2QyODk4MGNm
M2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC01NjcxLDggKzU2NzEsNyBAQAogCQlCQ0VBNDc4RjA5N0NBQUM4MDA5NEM5RTQg
LyogQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUE0NzdDMDk3Q0FBQzgwMDk0QzlFNCAvKiBDU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwICovOyB9OwogCQlCQ0VBNDc5MDA5N0NBQUM4MDA5
NEM5RTQgLyogQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VBNDc3RDA5N0NBQUM4MDA5NEM5RTQgLyog
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNFQTQ4NTIwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRl
ckJsb2NrTGluZUxheW91dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQ0VBNDgxMzA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyQmxvY2tMaW5lTGF5
b3V0LmNwcCAqLzsgfTsKLQkJQkNFQTQ4NTQwOTdEOTMwMjAwOTRDOUU0IC8qIGJyZWFrX2xpbmVz
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUE0
ODE1MDk3RDkzMDIwMDk0QzlFNCAvKiBicmVha19saW5lcy5jcHAgKi87IH07Ci0JCUJDRUE0ODU1
MDk3RDkzMDIwMDk0QzlFNCAvKiBicmVha19saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFQTQ4MTYwOTdEOTMwMjAwOTRDOUU0IC8qIGJyZWFr
X2xpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJQkNFQTQ4NTQwOTdEOTMwMjAwOTRDOUU0IC8qIEJyZWFrTGluZXMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFQTQ4MTUwOTdEOTMwMjAwOTRD
OUU0IC8qIEJyZWFrTGluZXMuY3BwICovOyB9OwogCQlCQ0VBNDg1OTA5N0Q5MzAyMDA5NEM5RTQg
LyogSW5saW5lVGV4dEJveC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQ0VBNDgxQTA5N0Q5MzAyMDA5NEM5RTQgLyogSW5saW5lVGV4dEJveC5jcHAg
Ki87IH07CiAJCUJDRUE0ODVBMDk3RDkzMDIwMDk0QzlFNCAvKiBJbmxpbmVUZXh0Qm94LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VBNDgxQjA5N0Q5
MzAyMDA5NEM5RTQgLyogSW5saW5lVGV4dEJveC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDRUE0ODVGMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5k
ZXJCbG9jay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQ0VBNDgyMDA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyQmxvY2suY3BwICovOyB9OwpAQCAt
NTc5MSw2ICs1NzkwLDcgQEAKIAkJQzI4MDgzM0YxQzZEQzI2RjAwMTQ1MUI2IC8qIEpTRm9udEZh
Y2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyODA4
MzNFMUM2REMyMkMwMDE0NTFCNiAvKiBKU0ZvbnRGYWNlLmggKi87IH07CiAJCUMyODA4MzQwMUM2
REMyNzUwMDE0NTFCNiAvKiBKU0ZvbnRGYWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyODA4MzNEMUM2REMyMkMwMDE0NTFCNiAvKiBKU0ZvbnRG
YWNlLmNwcCAqLzsgfTsKIAkJQzI4MDgzNDIxQzZEQzk2QTAwMTQ1MUI2IC8qIEpTRm9udEZhY2VD
dXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzI4MDgzNDExQzZEQzk2QTAwMTQ1MUI2IC8qIEpTRm9udEZhY2VDdXN0b20uY3BwICovOyB9Owor
CQlDMkUxRjQzRjFENjI1NEUxMDA5NDYyNUMgLyogQnJlYWtMaW5lcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFQTQ4MTYwOTdEOTMwMjAwOTRDOUU0
IC8qIEJyZWFrTGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlDMzMwQTIyMzEzRUMxOTZCMDAwMEI0NUIgLyogQ29sb3JDaG9vc2VyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMzMwQTIyMTEzRUMx
OTZCMDAwMEI0NUIgLyogQ29sb3JDaG9vc2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzMzRUU1QzQxNEZCNDk2MTAwMDIwOTVBIC8qIEJhc2VD
bGlja2FibGVXaXRoS2V5SW5wdXRUeXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEMzM0VFNUMyMTRGQjQ5NjEwMDAyMDk1QSAvKiBCYXNlQ2xpY2th
YmxlV2l0aEtleUlucHV0VHlwZS5jcHAgKi87IH07CiAJCUMzM0VFNUM1MTRGQjQ5NjEwMDAyMDk1
QSAvKiBCYXNlQ2xpY2thYmxlV2l0aEtleUlucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzMzRUU1QzMxNEZCNDk2MTAwMDIwOTVBIC8qIEJh
c2VDbGlja2FibGVXaXRoS2V5SW5wdXRUeXBlLmggKi87IH07CkBAIC0xMzQ5MSw4ICsxMzQ5MSw4
IEBACiAJCUJDRUE0Nzg5MDk3Q0FBQzgwMDk0QzlFNCAvKiBDU1NQcm9wZXJ0eU5hbWVzLmluICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBDU1NQcm9wZXJ0eU5hbWVzLmluOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCQ0VBNDc4QzA5N0NBQUM4MDA5NEM5RTQgLyogQ1NTVmFsdWVLZXl3
b3Jkcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ1NTVmFsdWVLZXl3b3Jkcy5pbjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNFQTQ4MTMwOTdEOTMwMjAwOTRDOUU0IC8qIFJl
bmRlckJsb2NrTGluZUxheW91dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJQkNFQTQ4MTUwOTdEOTMwMjAwOTRDOUU0IC8qIGJyZWFrX2xpbmVzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBicmVha19saW5lcy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJDRUE0ODE2MDk3RDkzMDIwMDk0QzlFNCAvKiBicmVha19s
aW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gYnJlYWtfbGluZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNFQTQ4MTUwOTdEOTMwMjAwOTRDOUU0IC8q
IEJyZWFrTGluZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJy
ZWFrTGluZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0VBNDgxNjA5N0Q5
MzAyMDA5NEM5RTQgLyogQnJlYWtMaW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQnJlYWtMaW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0VBNDgx
QTA5N0Q5MzAyMDA5NEM5RTQgLyogSW5saW5lVGV4dEJveC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSW5saW5lVGV4dEJveC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUJDRUE0ODFCMDk3RDkzMDIwMDk0QzlFNCAvKiBJbmxpbmVUZXh0Qm94Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmxpbmVUZXh0Qm94Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRUE0ODIwMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5k
ZXJCbG9jay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVy
QmxvY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjM2MzYsOCArMjM2MzYs
OCBAQAogCQkJCUJDRTc4OTg1MTEyMEU3QTYwMDYwRUNFNSAvKiBCaWRpUnVuLmggKi8sCiAJCQkJ
NThBRUUyRjMxOEQ0QkNDRjAwMjJFN0ZFIC8qIEJvcmRlckVkZ2UuY3BwICovLAogCQkJCTU4OTU1
NkVDMThENEE0NDAwMDc2NEIwMyAvKiBCb3JkZXJFZGdlLmggKi8sCi0JCQkJQkNFQTQ4MTUwOTdE
OTMwMjAwOTRDOUU0IC8qIGJyZWFrX2xpbmVzLmNwcCAqLywKLQkJCQlCQ0VBNDgxNjA5N0Q5MzAy
MDA5NEM5RTQgLyogYnJlYWtfbGluZXMuaCAqLywKKwkJCQlCQ0VBNDgxNTA5N0Q5MzAyMDA5NEM5
RTQgLyogQnJlYWtMaW5lcy5jcHAgKi8sCisJCQkJQkNFQTQ4MTYwOTdEOTMwMjAwOTRDOUU0IC8q
IEJyZWFrTGluZXMuaCAqLywKIAkJCQlGQjkyREY0OTE1RkVEMDg3MDA5OTQ0MzMgLyogQ2xpcFBh
dGhPcGVyYXRpb24uaCAqLywKIAkJCQk1ODAzNzE1RjFBNjZGMDBBMDBCQUY1MTkgLyogQ2xpcFJl
Y3QuY3BwICovLAogCQkJCTU4MDM3MTYwMUE2NkYwMEEwMEJBRjUxOSAvKiBDbGlwUmVjdC5oICov
LApAQCAtMjQ5MjAsNyArMjQ5MjAsNiBAQAogCQkJCTU4OTU1NkVEMThENEE0NDAwMDc2NEIwMyAv
KiBCb3JkZXJFZGdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzVFQjVEQjBFODFCN0VBMDBCMjU5
NjUgLyogQm9yZGVyVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTZFRDhDMzdBMTgzQkZGOEMw
MDlFNTNCRCAvKiBCb3hTaGFwZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQkNFQTQ4NTUwOTdEOTMw
MjAwOTRDOUU0IC8qIGJyZWFrX2xpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUREQjA5
OUU2NDkyMDA1NkU1ODEgLyogQnJlYWtCbG9ja3F1b3RlQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTk5RTc1OTAxMTA1NUExRjAwRDkwNEZBIC8qIEJyaWRnZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTlCNTk3NzUxMTA4NjU3OTAwNzE1OUU4IC8qIEJyaWRnZUpTQy5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0yNjEyMSw2ICsyNjEyMCw3IEBACiAJCQkJRkRGMDlEQzkxMzk5QjYyMjAwNjg4RTVC
IC8qIEpTQmlxdWFkRmlsdGVyTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkUyRDk5Q0UxMEUy
QkJEQTAwNDk2MzM3IC8qIEpTQmxvYi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTREQ0YzQjMxQjZC
RTIwODAwNjJENEMzIC8qIEpTQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQzJFMUY0M0YxRDYyNTRFMTAwOTQ2MjVDIC8qIEJyZWFrTGluZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTE0NDlFMjRDMTA3RDRBODQwMEI1NzkzRiAvKiBKU0NhbGxiYWNrRGF0YS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNjVERjMyM0EwOUQxREU2NTAwMEJFMzI1IC8qIEpTQ2FudmFz
R3JhZGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1REYzMjNDMDlEMURFNjUwMDBCRTMyNSAv
KiBKU0NhbnZhc1BhdHRlcm4uaCBpbiBIZWFkZXJzICovLApAQCAtMjg4MTIsNyArMjg4MTIsNyBA
QAogCQkJCTk3NkQ2QzdFMTIyQjhBM0QwMDFGRDFGNyAvKiBCbG9iVVJMLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTU4QUVFMkY0MThENEJDQ0YwMDIyRTdGRSAvKiBCb3JkZXJFZGdlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTZFRDhDMzc5MTgzQkZGOEMwMDlFNTNCRCAvKiBCb3hTaGFwZS5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQlCQ0VBNDg1NDA5N0Q5MzAyMDA5NEM5RTQgLyogYnJlYWtfbGlu
ZXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQkNFQTQ4NTQwOTdEOTMwMjAwOTRDOUU0IC8qIEJy
ZWFrTGluZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlEREEwOTlFNjQ5MjAwNTZFNTgx
IC8qIEJyZWFrQmxvY2txdW90ZUNvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTlCNTk3
NzMxMTA4NjU2QjAwNzE1OUU4IC8qIEJyaWRnZUpTQy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3
QTQ1MDMyRjE4REI3MTcyMDAzNzdCMzQgLyogQnVmZmVyZWRMaW5lUmVhZGVyLmNwcCBpbiBTb3Vy
Y2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0JyZWFrTGluZXMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0JyZWFrTGluZXMuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjdlMTU5OTBjN2VkMmE4YjZhMTA5MGZmMWE5OGJjOWUwNTMzODMyNjgKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQnJlYWtMaW5lcy5jcHAKQEAgLTAsMCArMSwx
MDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDcsIDIwMTAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJCcmVha0xpbmVzLmgiCisKKyNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgorI2luY2x1
ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJO
YW1lcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIFBhY2sgOCBiaXRzIGludG8gb25l
IGJ5dGUKKyNkZWZpbmUgQihhLCBiLCBjLCBkLCBlLCBmLCBnLCBoKSBcCisgICAgKChhKSB8ICgo
YikgPDwgMSkgfCAoKGMpIDw8IDIpIHwgKChkKSA8PCAzKSB8ICgoZSkgPDwgNCkgfCAoKGYpIDw8
IDUpIHwgKChnKSA8PCA2KSB8ICgoaCkgPDwgNykpCisKKy8vIExpbmUgYnJlYWtpbmcgdGFibGUg
cm93IGZvciBlYWNoIGRpZ2l0ICgwLTkpCisjZGVmaW5lIERJIHsgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCB9CisKKy8vIExpbmUgYnJlYWtpbmcgdGFibGUgcm93IGZvciBhc2Np
aSBsZXR0ZXJzIChhLXogQS1aKQorI2RlZmluZSBBTCB7IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAgfQorCisjZGVmaW5lIEYgMHhGRgorCisvLyBMaW5lIGJyZWFraW5nIHRhYmxl
IGZvciBwcmludGFibGUgQVNDSUkgY2hhcmFjdGVycy4gTGluZSBicmVha2luZyBvcHBvcnR1bml0
aWVzIGluIHRoaXMgdGFibGUgYXJlIGFzIGJlbG93OgorLy8gLSBiZWZvcmUgb3BlbmluZyBwdW5j
dHVhdGlvbnMgc3VjaCBhcyAnKCcsICc8JywgJ1snLCAneycgYWZ0ZXIgY2VydGFpbiBjaGFyYWN0
ZXJzIChjb21wYXRpYmxlIHdpdGggRmlyZWZveCAzLjYpOworLy8gLSBhZnRlciAnLScgYW5kICc/
JyAoYmFja3dhcmQtY29tcGF0aWJsZSwgYW5kIGNvbXBhdGlibGUgd2l0aCBJbnRlcm5ldCBFeHBs
b3JlcikuCisvLyBQbGVhc2UgcmVmZXIgdG8gPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zNzY5OD4gZm9yIGxpbmUgYnJlYWtpbmcgbWF0cml4ZXMgb2YgZGlmZmVyZW50
IGJyb3dzZXJzCisvLyBhbmQgdGhlIElDVSBzdGFuZGFyZC4KK1dFQkNPUkVfRVhQT1JUIGNvbnN0
IHVuc2lnbmVkIGNoYXIgbGluZUJyZWFrVGFibGVbXVtsaW5lQnJlYWtUYWJsZUNvbHVtbkNvdW50
XSA9IHsKKyAgICAvLyAgISAgIiAgIyAgJCAgJSAgJiAgJyAgKCAgICAgKSAgKiAgKyAgLCAgLSAg
LiAgLyAgMCAgMS04ICAgOSAgOiAgOyAgPCAgPSAgPiAgPyAgQCAgICAgQS1YICAgICAgWSAgWiAg
WyAgXCAgXSAgXiAgXyAgYCAgICAgYS14ICAgICAgeSAgeiAgeyAgfCAgfSAgfiAgREVMCisgICAg
eyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEpLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAw
LCBCKDAsIDAsIDAsIDEsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAsIDAs
IDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAsIDAsIDAsIDApIH0sIC8vICEKKyAgICB7
IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSksIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAs
IEIoMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwg
MCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCkgfSwgLy8gIgorICAgIHsg
QigwLCAwLCAwLCAwLCAwLCAwLCAwLCAxKSwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwg
QigwLCAwLCAwLCAxLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAxLCAwLCAwLCAwLCAw
LCAwKSwgMCwgMCwgMCwgQigwLCAwLCAxLCAwLCAwLCAwLCAwLCAwKSB9LCAvLyAjCisgICAgeyBC
KDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCBC
KDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDApLCAwLCAwLCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApIH0sIC8vICQKKyAgICB7IEIo
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMSksIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIEIo
MCwgMCwgMCwgMSwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwg
MCksIDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCkgfSwgLy8gJQorICAgIHsgQigw
LCAwLCAwLCAwLCAwLCAwLCAwLCAxKSwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgQigw
LCAwLCAwLCAxLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAxLCAwLCAwLCAwLCAwLCAw
KSwgMCwgMCwgMCwgQigwLCAwLCAxLCAwLCAwLCAwLCAwLCAwKSB9LCAvLyAmCisgICAgeyBCKDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDApLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCBCKDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAp
LCAwLCAwLCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApIH0sIC8vICcKKyAgICB7IEIoMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCksIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIEIoMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCks
IDAsIDAsIDAsIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCkgfSwgLy8gKAorICAgIHsgQigwLCAw
LCAwLCAwLCAwLCAwLCAwLCAxKSwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgQigwLCAw
LCAwLCAxLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAxLCAwLCAwLCAwLCAwLCAwKSwg
MCwgMCwgMCwgQigwLCAwLCAxLCAwLCAwLCAwLCAwLCAwKSB9LCAvLyApCisgICAgeyBCKDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDEpLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCBCKDAsIDAs
IDAsIDEsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAsIDAsIDAsIDApLCAw
LCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAsIDAsIDAsIDApIH0sIC8vICoKKyAgICB7IEIoMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMSksIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIEIoMCwgMCwg
MCwgMSwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCksIDAs
IDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCkgfSwgLy8gKworICAgIHsgQigwLCAwLCAw
LCAwLCAwLCAwLCAwLCAxKSwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgQigwLCAwLCAw
LCAxLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAxLCAwLCAwLCAwLCAwLCAwKSwgMCwg
MCwgMCwgQigwLCAwLCAxLCAwLCAwLCAwLCAwLCAwKSB9LCAvLyAsCisgICAgeyBCKDEsIDEsIDEs
IDEsIDEsIDEsIDEsIDEpLCBCKDEsIDEsIDEsIDEsIDEsIDAsIDEsIDApLCAwLCBCKDAsIDEsIDEs
IDEsIDEsIDEsIDEsIDEpLCBGLCBGLCBGLCBCKDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEpLCBGLCBG
LCBGLCBCKDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEpIH0sIC8vIC0gTm90ZTogYnJlYWtpbmcgYmVm
b3JlICcwJy0nOScgaXMgaGFuZGxlZCBoYXJkLWNvZGVkIGluIHNob3VsZEJyZWFrQWZ0ZXIoKS4K
KyAgICB7IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSksIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCksIDAsIEIoMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwg
MCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCkgfSwgLy8gLgor
ICAgIHsgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
KSwgMCwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSB9LCAvLyAvCisg
ICAgREksICBESSwgIERJLCAgREksICBESSwgIERJLCAgREksICBESSwgIERJLCAgREksIC8vIDAt
OQorICAgIHsgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAxKSwgQigwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwKSwgMCwgQigwLCAwLCAwLCAxLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAxLCAw
LCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAxLCAwLCAwLCAwLCAwLCAwKSB9LCAvLyA6
CisgICAgeyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEpLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDApLCAwLCBCKDAsIDAsIDAsIDEsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAs
IDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAsIDAsIDAsIDApIH0sIC8vIDsK
KyAgICB7IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCksIDAsIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCkgfSwgLy8gPAor
ICAgIHsgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAxKSwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
KSwgMCwgQigwLCAwLCAwLCAxLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAxLCAwLCAw
LCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAxLCAwLCAwLCAwLCAwLCAwKSB9LCAvLyA9Cisg
ICAgeyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEpLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAp
LCAwLCBCKDAsIDAsIDAsIDEsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAs
IDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAsIDAsIDAsIDApIH0sIC8vID4KKyAg
ICB7IEIoMCwgMCwgMSwgMSwgMSwgMSwgMCwgMSksIEIoMCwgMSwgMSwgMCwgMSwgMCwgMCwgMSks
IEYsIEIoMSwgMCwgMCwgMSwgMSwgMSwgMCwgMSksIEYsIEYsIEYsIEIoMSwgMSwgMSwgMSwgMCwg
MSwgMSwgMSksIEYsIEYsIEYsIEIoMSwgMSwgMSwgMSwgMCwgMSwgMSwgMCkgfSwgLy8gPworICAg
IHsgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwg
MCwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSB9LCAvLyBACisgICAg
QUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFM
LCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwg
IEFMLCAgQUwsICBBTCwgLy8gQS1aCisgICAgeyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCBC
KDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAw
LCAwLCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDApIH0sIC8vIFsKKyAgICB7IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSksIEIo
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIEIoMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCksIDAs
IDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwg
MCwgMCwgMCwgMCkgfSwgLy8gJ1wnCisgICAgeyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEpLCBC
KDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCBCKDAsIDAsIDAsIDEsIDAsIDAsIDAsIDApLCAw
LCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAs
IDAsIDAsIDAsIDApIH0sIC8vIF0KKyAgICB7IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIEIo
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAs
IDAsIDAsIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCkgfSwgLy8gXgorICAgIHsgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgQigw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwg
MCwgMCwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwKSB9LCAvLyBfCisgICAgeyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCBCKDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCAw
LCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDApIH0sIC8vIGAKKyAgICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwg
IEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBB
TCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAvLyBhLXoKKyAgICB7IEIoMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCksIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIEIoMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCks
IDAsIDAsIDAsIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCkgfSwgLy8geworICAgIHsgQigwLCAw
LCAwLCAwLCAwLCAwLCAwLCAxKSwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgQigwLCAw
LCAwLCAxLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAxLCAwLCAwLCAwLCAwLCAwKSwg
MCwgMCwgMCwgQigwLCAwLCAxLCAwLCAwLCAwLCAwLCAwKSB9LCAvLyB8CisgICAgeyBCKDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDEpLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCBCKDAsIDAs
IDAsIDEsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAsIDAsIDAsIDApLCAw
LCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAsIDAsIDAsIDApIH0sIC8vIH0KKyAgICB7IEIoMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMSksIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIEIoMCwgMCwg
MCwgMSwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCksIDAs
IDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCkgfSwgLy8gfgorICAgIHsgQigwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwKSwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgQigwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwg
MCwgMCwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSB9LCAvLyBERUwKK307CisKKyN1bmRlZiBC
CisjdW5kZWYgRgorI3VuZGVmIERJCisjdW5kZWYgQUwKKworQ09NUElMRV9BU1NFUlQoV1RGX0FS
UkFZX0xFTkdUSChsaW5lQnJlYWtUYWJsZSkgPT0gbGluZUJyZWFrVGFibGVMYXN0Q2hhcmFjdGVy
IC0gbGluZUJyZWFrVGFibGVGaXJzdENoYXJhY3RlciArIDEsIFRlc3RMaW5lQnJlYWtUYWJsZUNv
bnNpc3RlbmN5KTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0JyZWFrTGluZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9CcmVha0xpbmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjI2MTc5NTY4M2FmMjU5NTU4YzgxYzIxNjg0MzQ2
OTlkMjc3NDgyZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9C
cmVha0xpbmVzLmgKQEAgLTAsMCArMSwyNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUs
IDIwMDcsIDIwMTAsIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHVuaWNvZGUvdWJyay5oPgorI2luY2x1ZGUgPHd0
Zi9BU0NJSUNUeXBlLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CisjaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hh
cmFjdGVyTmFtZXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgY29uc3QgVUNo
YXIgbGluZUJyZWFrVGFibGVGaXJzdENoYXJhY3RlciA9ICchJzsKK3N0YXRpYyBjb25zdCBVQ2hh
ciBsaW5lQnJlYWtUYWJsZUxhc3RDaGFyYWN0ZXIgPSAxMjc7CitzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgbGluZUJyZWFrVGFibGVDb2x1bW5Db3VudCA9IChsaW5lQnJlYWtUYWJsZUxhc3RDaGFyYWN0
ZXIgLSBsaW5lQnJlYWtUYWJsZUZpcnN0Q2hhcmFjdGVyKSAvIDggKyAxOworCitXRUJDT1JFX0VY
UE9SVCBleHRlcm4gY29uc3QgdW5zaWduZWQgY2hhciBsaW5lQnJlYWtUYWJsZVtdW2xpbmVCcmVh
a1RhYmxlQ29sdW1uQ291bnRdOworCitlbnVtIGNsYXNzIE5vbkJyZWFraW5nU3BhY2VCZWhhdmlv
ciB7CisgICAgSWdub3JlTm9uQnJlYWtpbmdTcGFjZSwKKyAgICBUcmVhdE5vbkJyZWFraW5nU3Bh
Y2VBc0JyZWFrLAorfTsKKwordGVtcGxhdGU8Tm9uQnJlYWtpbmdTcGFjZUJlaGF2aW9yIG5vbkJy
ZWFraW5nU3BhY2VCZWhhdmlvcj4KK3N0YXRpYyBpbmxpbmUgYm9vbCBpc0JyZWFrYWJsZVNwYWNl
KFVDaGFyIGNoYXJhY3RlcikKK3sKKyAgICBzd2l0Y2ggKGNoYXJhY3RlcikgeworICAgIGNhc2Ug
JyAnOgorICAgIGNhc2UgJ1xuJzoKKyAgICBjYXNlICdcdCc6CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIGNhc2Ugbm9CcmVha1NwYWNlOgorICAgICAgICByZXR1cm4gbm9uQnJlYWtpbmdTcGFj
ZUJlaGF2aW9yID09IE5vbkJyZWFraW5nU3BhY2VCZWhhdmlvcjo6VHJlYXROb25CcmVha2luZ1Nw
YWNlQXNCcmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
fQorCitpbmxpbmUgYm9vbCBzaG91bGRCcmVha0FmdGVyKFVDaGFyIGxhc3RDaGFyYWN0ZXIsIFVD
aGFyIGNoYXJhY3RlciwgVUNoYXIgbmV4dENoYXJhY3RlcikKK3sKKyAgICAvLyBEb24ndCBhbGxv
dyBsaW5lIGJyZWFraW5nIGJldHdlZW4gJy0nIGFuZCBhIGRpZ2l0IGlmIHRoZSAnLScgbWF5IG1l
YW4gYSBtaW51cyBzaWduIGluIHRoZSBjb250ZXh0LAorICAgIC8vIHdoaWxlIGFsbG93IGJyZWFr
aW5nIGluICdBQkNELTEyMzQnIGFuZCAnMTIzNC01Njc4JyB3aGljaCBtYXkgYmUgaW4gbG9uZyBV
UkxzLgorICAgIGlmIChjaGFyYWN0ZXIgPT0gJy0nICYmIGlzQVNDSUlEaWdpdChuZXh0Q2hhcmFj
dGVyKSkKKyAgICAgICAgcmV0dXJuIGlzQVNDSUlBbHBoYW51bWVyaWMobGFzdENoYXJhY3Rlcik7
CisKKyAgICAvLyBJZiBib3RoIGNoIGFuZCBuZXh0Q2ggYXJlIEFTQ0lJIGNoYXJhY3RlcnMsIHVz
ZSBhIGxvb2t1cCB0YWJsZSBmb3IgZW5oYW5jZWQgc3BlZWQgYW5kIGZvciBjb21wYXRpYmlsaXR5
CisgICAgLy8gd2l0aCBvdGhlciBicm93c2VycyAoc2VlIGNvbW1lbnRzIGZvciBhc2NpaUxpbmVC
cmVha1RhYmxlIGZvciBkZXRhaWxzKS4KKyAgICBpZiAoY2hhcmFjdGVyID49IGxpbmVCcmVha1Rh
YmxlRmlyc3RDaGFyYWN0ZXIgJiYgY2hhcmFjdGVyIDw9IGxpbmVCcmVha1RhYmxlTGFzdENoYXJh
Y3RlciAmJiBuZXh0Q2hhcmFjdGVyID49IGxpbmVCcmVha1RhYmxlRmlyc3RDaGFyYWN0ZXIgJiYg
bmV4dENoYXJhY3RlciA8PSBsaW5lQnJlYWtUYWJsZUxhc3RDaGFyYWN0ZXIpIHsKKyAgICAgICAg
Y29uc3QgdW5zaWduZWQgY2hhciogdGFibGVSb3cgPSBsaW5lQnJlYWtUYWJsZVtjaGFyYWN0ZXIg
LSBsaW5lQnJlYWtUYWJsZUZpcnN0Q2hhcmFjdGVyXTsKKyAgICAgICAgdW5zaWduZWQgbmV4dENo
YXJhY3RlckluZGV4ID0gbmV4dENoYXJhY3RlciAtIGxpbmVCcmVha1RhYmxlRmlyc3RDaGFyYWN0
ZXI7CisgICAgICAgIHJldHVybiB0YWJsZVJvd1tuZXh0Q2hhcmFjdGVySW5kZXggLyA4XSAmICgx
IDw8IChuZXh0Q2hhcmFjdGVySW5kZXggJSA4KSk7CisgICAgfQorICAgIC8vIE90aGVyd2lzZSBk
ZWZlciB0byB0aGUgVW5pY29kZSBhbGdvcml0aG0gYnkgcmV0dXJuaW5nIGZhbHNlLgorICAgIHJl
dHVybiBmYWxzZTsKK30KKwordGVtcGxhdGU8Tm9uQnJlYWtpbmdTcGFjZUJlaGF2aW9yIG5vbkJy
ZWFraW5nU3BhY2VCZWhhdmlvcj4KK2lubGluZSBib29sIG5lZWRzTGluZUJyZWFrSXRlcmF0b3Io
VUNoYXIgY2hhcmFjdGVyKQoreworICAgIGlmIChub25CcmVha2luZ1NwYWNlQmVoYXZpb3IgPT0g
Tm9uQnJlYWtpbmdTcGFjZUJlaGF2aW9yOjpUcmVhdE5vbkJyZWFraW5nU3BhY2VBc0JyZWFrKQor
ICAgICAgICByZXR1cm4gY2hhcmFjdGVyID4gbGluZUJyZWFrVGFibGVMYXN0Q2hhcmFjdGVyOwor
ICAgIHJldHVybiBjaGFyYWN0ZXIgPiBsaW5lQnJlYWtUYWJsZUxhc3RDaGFyYWN0ZXIgJiYgY2hh
cmFjdGVyICE9IG5vQnJlYWtTcGFjZTsKK30KKworLy8gV2hlbiBpbiBub24tbG9vc2UgbW9kZSwg
d2UgY2FuIHVzZSB0aGUgQVNDSUkgc2hvcnRjdXQgdGFibGUuCit0ZW1wbGF0ZTx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlLCBOb25CcmVha2luZ1NwYWNlQmVoYXZpb3Igbm9uQnJlYWtpbmdTcGFjZUJl
aGF2aW9yPgoraW5saW5lIHVuc2lnbmVkIG5leHRCcmVha2FibGVQb3NpdGlvbk5vbkxvb3NlbHko
TGF6eUxpbmVCcmVha0l0ZXJhdG9yJiBsYXp5QnJlYWtJdGVyYXRvciwgY29uc3QgQ2hhcmFjdGVy
VHlwZSogc3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24pCit7
CisgICAgT3B0aW9uYWw8dW5zaWduZWQ+IG5leHRCcmVhazsKKworICAgIENoYXJhY3RlclR5cGUg
bGFzdExhc3RDaGFyYWN0ZXIgPSBzdGFydFBvc2l0aW9uID4gMSA/IHN0cmluZ1tzdGFydFBvc2l0
aW9uIC0gMl0gOiBzdGF0aWNfY2FzdDxDaGFyYWN0ZXJUeXBlPihsYXp5QnJlYWtJdGVyYXRvci5z
ZWNvbmRUb0xhc3RDaGFyYWN0ZXIoKSk7CisgICAgQ2hhcmFjdGVyVHlwZSBsYXN0Q2hhcmFjdGVy
ID0gc3RhcnRQb3NpdGlvbiA+IDAgPyBzdHJpbmdbc3RhcnRQb3NpdGlvbiAtIDFdIDogc3RhdGlj
X2Nhc3Q8Q2hhcmFjdGVyVHlwZT4obGF6eUJyZWFrSXRlcmF0b3IubGFzdENoYXJhY3RlcigpKTsK
KyAgICB1bnNpZ25lZCBwcmlvckNvbnRleHRMZW5ndGggPSBsYXp5QnJlYWtJdGVyYXRvci5wcmlv
ckNvbnRleHRMZW5ndGgoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBzdGFydFBvc2l0aW9uOyBp
IDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIgPSBzdHJp
bmdbaV07CisKKyAgICAgICAgLy8gTm9uLWxvb3NlIG1vZGUsIHNvIHVzZSBBU0NJSSBzaG9ydGN1
dCAoc2hvdWxkQnJlYWtBZnRlcikgaWYgbm90IGJyZWFrYWJsZSBzcGFjZS4KKyAgICAgICAgaWYg
KGlzQnJlYWthYmxlU3BhY2U8bm9uQnJlYWtpbmdTcGFjZUJlaGF2aW9yPihjaGFyYWN0ZXIpIHx8
IHNob3VsZEJyZWFrQWZ0ZXIobGFzdExhc3RDaGFyYWN0ZXIsIGxhc3RDaGFyYWN0ZXIsIGNoYXJh
Y3RlcikpCisgICAgICAgICAgICByZXR1cm4gaTsKKworICAgICAgICAvLyBOb24tbG9vc2UgbW9k
ZSwgc28gY29uZGl0aW9uYWxseSB1c2UgYnJlYWsgaXRlcmF0b3IuCisgICAgICAgIGlmIChuZWVk
c0xpbmVCcmVha0l0ZXJhdG9yPG5vbkJyZWFraW5nU3BhY2VCZWhhdmlvcj4oY2hhcmFjdGVyKSB8
fCBuZWVkc0xpbmVCcmVha0l0ZXJhdG9yPG5vbkJyZWFraW5nU3BhY2VCZWhhdmlvcj4obGFzdENo
YXJhY3RlcikpIHsKKyAgICAgICAgICAgIGlmICghbmV4dEJyZWFrIHx8IG5leHRCcmVhay52YWx1
ZSgpIDwgaSkgeworICAgICAgICAgICAgICAgIC8vIERvbid0IGJyZWFrIGlmIHBvc2l0aW9uZWQg
YXQgc3RhcnQgb2YgcHJpbWFyeSBjb250ZXh0IGFuZCB0aGVyZSBpcyBubyBwcmlvciBjb250ZXh0
LgorICAgICAgICAgICAgICAgIGlmIChpIHx8IHByaW9yQ29udGV4dExlbmd0aCkgeworICAgICAg
ICAgICAgICAgICAgICBUZXh0QnJlYWtJdGVyYXRvciogYnJlYWtJdGVyYXRvciA9IGxhenlCcmVh
a0l0ZXJhdG9yLmdldChwcmlvckNvbnRleHRMZW5ndGgpOworICAgICAgICAgICAgICAgICAgICBp
ZiAoYnJlYWtJdGVyYXRvcikgeworICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNhbmRpZGF0
ZSA9IHRleHRCcmVha0ZvbGxvd2luZyhicmVha0l0ZXJhdG9yLCBpIC0gMSArIHByaW9yQ29udGV4
dExlbmd0aCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2FuZGlkYXRlID09IFRleHRC
cmVha0RvbmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dEJyZWFrID0gTnVsbG9w
dDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IGNhbmRpZGF0ZTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBBU1NFUlQocmVzdWx0ID49IHByaW9yQ29udGV4dExlbmd0aCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbmV4dEJyZWFrID0gcmVzdWx0IC0gcHJpb3JDb250ZXh0TGVuZ3Ro
OworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGkgPT0gbmV4dEJy
ZWFrICYmICFpc0JyZWFrYWJsZVNwYWNlPG5vbkJyZWFraW5nU3BhY2VCZWhhdmlvcj4obGFzdENo
YXJhY3RlcikpCisgICAgICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgICAgIH0KKworICAgICAg
ICBsYXN0TGFzdENoYXJhY3RlciA9IGxhc3RDaGFyYWN0ZXI7CisgICAgICAgIGxhc3RDaGFyYWN0
ZXIgPSBjaGFyYWN0ZXI7CisgICAgfQorCisgICAgcmV0dXJuIGxlbmd0aDsKK30KKworLy8gV2hl
biBpbiBsb29zZSBtb2RlLCB3ZSBjYW4ndCB1c2UgdGhlIEFTQ0lJIHNob3J0Y3V0IHRhYmxlIHNp
bmNlIGxvb3NlIG1vZGUgYWxsb3dzICIkMTAwIiB0byBicmVhayBhZnRlciAnJCcgaW4gY29udGVu
dCBtYXJrZWQgYXMgQ0pLLgorLy8gTi5CLiBJdCBzaG91bGQgYmUgcG9zc2libGUgdG8gY29tYmlu
ZSB0aGUgZm9sbG93aW5nIHdpdGggdGhlIG5vbi1sb29zZSB2ZXJzaW9uIGFib3ZlIGJ5IGFkZGlu
ZyBhIExvb3NlQmVoYXZpb3IgdGVtcGxhdGUgcGFyYW1ldGVyOworLy8gaG93ZXZlciwgd2hlbiBk
b2luZyB0aGlzLCBhIDEwJSBwZXJmb3JtYW5jZSByZWdyZXNzaW9uIGFwcGVhcmVkIG9uIGNocm9t
aXVtLXdpbiAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5MjM1I2Mx
MTIpLgordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwgTm9uQnJlYWtpbmdTcGFjZUJl
aGF2aW9yIG5vbkJyZWFraW5nU3BhY2VCZWhhdmlvcj4KK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQg
bmV4dEJyZWFrYWJsZVBvc2l0aW9uTG9vc2VseShMYXp5TGluZUJyZWFrSXRlcmF0b3ImIGxhenlC
cmVha0l0ZXJhdG9yLCBjb25zdCBDaGFyYWN0ZXJUeXBlKiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0
aCwgdW5zaWduZWQgc3RhcnRQb3NpdGlvbikKK3sKKyAgICBPcHRpb25hbDx1bnNpZ25lZD4gbmV4
dEJyZWFrOworCisgICAgQ2hhcmFjdGVyVHlwZSBsYXN0Q2hhcmFjdGVyID0gc3RhcnRQb3NpdGlv
biA+IDAgPyBzdHJpbmdbc3RhcnRQb3NpdGlvbiAtIDFdIDogc3RhdGljX2Nhc3Q8Q2hhcmFjdGVy
VHlwZT4obGF6eUJyZWFrSXRlcmF0b3IubGFzdENoYXJhY3RlcigpKTsKKyAgICB1bnNpZ25lZCBw
cmlvckNvbnRleHRMZW5ndGggPSBsYXp5QnJlYWtJdGVyYXRvci5wcmlvckNvbnRleHRMZW5ndGgo
KTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBzdGFydFBvc2l0aW9uOyBpIDwgbGVuZ3RoOyBpKysp
IHsKKyAgICAgICAgQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIgPSBzdHJpbmdbaV07CisKKyAgICAg
ICAgLy8gQWx3YXlzIGxvb3NlIG1vZGUsIHNvIGRvbid0IHVzZSBBU0NJSSBzaG9ydGN1dCAoc2hv
dWxkQnJlYWtBZnRlcikuCisgICAgICAgIGlmIChpc0JyZWFrYWJsZVNwYWNlPG5vbkJyZWFraW5n
U3BhY2VCZWhhdmlvcj4oY2hhcmFjdGVyKSkKKyAgICAgICAgICAgIHJldHVybiBpOworCisgICAg
ICAgIC8vIEFsd2F5cyB1c2UgbGluZSBicmVhayBpdGVyYXRvciBpbiBsb29zZSBtb2RlLgorICAg
ICAgICBpZiAoIW5leHRCcmVhayB8fCBuZXh0QnJlYWsudmFsdWUoKSA8IGkpIHsKKyAgICAgICAg
ICAgIC8vIERvbid0IGJyZWFrIGlmIHBvc2l0aW9uZWQgYXQgc3RhcnQgb2YgcHJpbWFyeSBjb250
ZXh0IGFuZCB0aGVyZSBpcyBubyBwcmlvciBjb250ZXh0LgorICAgICAgICAgICAgaWYgKGkgfHwg
cHJpb3JDb250ZXh0TGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgVGV4dEJyZWFrSXRlcmF0b3Iq
IGJyZWFrSXRlcmF0b3IgPSBsYXp5QnJlYWtJdGVyYXRvci5nZXQocHJpb3JDb250ZXh0TGVuZ3Ro
KTsKKyAgICAgICAgICAgICAgICBpZiAoYnJlYWtJdGVyYXRvcikgeworICAgICAgICAgICAgICAg
ICAgICBBU1NFUlQoaSArIHByaW9yQ29udGV4dExlbmd0aCA+PSAxKTsKKyAgICAgICAgICAgICAg
ICAgICAgaW50IGNhbmRpZGF0ZSA9IHRleHRCcmVha0ZvbGxvd2luZyhicmVha0l0ZXJhdG9yLCBp
ICsgcHJpb3JDb250ZXh0TGVuZ3RoIC0gMSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjYW5k
aWRhdGUgPT0gVGV4dEJyZWFrRG9uZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG5leHRCcmVh
ayA9IE51bGxvcHQ7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gY2FuZGlkYXRlOworICAgICAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKHJlc3VsdCA+IHByaW9yQ29udGV4dExlbmd0aCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBuZXh0QnJlYWsgPSByZXN1bHQgLSBwcmlvckNvbnRleHRMZW5ndGg7CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKGkgPT0gbmV4dEJyZWFrICYmICFpc0JyZWFrYWJsZVNwYWNlPG5v
bkJyZWFraW5nU3BhY2VCZWhhdmlvcj4obGFzdENoYXJhY3RlcikpCisgICAgICAgICAgICByZXR1
cm4gaTsKKworICAgICAgICBsYXN0Q2hhcmFjdGVyID0gY2hhcmFjdGVyOworICAgIH0KKworICAg
IHJldHVybiBsZW5ndGg7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIE5v
bkJyZWFraW5nU3BhY2VCZWhhdmlvciBub25CcmVha2luZ1NwYWNlQmVoYXZpb3I+CitpbmxpbmUg
dW5zaWduZWQgbmV4dEJyZWFrYWJsZVBvc2l0aW9uS2VlcGluZ0FsbFdvcmRzKGNvbnN0IENoYXJh
Y3RlclR5cGUqIHN0cmluZywgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBzdGFydFBvc2l0aW9u
KQoreworICAgIGZvciAodW5zaWduZWQgaSA9IHN0YXJ0UG9zaXRpb247IGkgPCBsZW5ndGg7IGkr
KykgeworICAgICAgICBpZiAoaXNCcmVha2FibGVTcGFjZTxub25CcmVha2luZ1NwYWNlQmVoYXZp
b3I+KHN0cmluZ1tpXSkpCisgICAgICAgICAgICByZXR1cm4gaTsKKyAgICB9CisgICAgcmV0dXJu
IGxlbmd0aDsKK30KKworaW5saW5lIHVuc2lnbmVkIG5leHRCcmVha2FibGVQb3NpdGlvbktlZXBp
bmdBbGxXb3JkcyhMYXp5TGluZUJyZWFrSXRlcmF0b3ImIGxhenlCcmVha0l0ZXJhdG9yLCB1bnNp
Z25lZCBzdGFydFBvc2l0aW9uKQoreworICAgIGF1dG8gc3RyaW5nVmlldyA9IGxhenlCcmVha0l0
ZXJhdG9yLnN0cmluZ1ZpZXcoKTsKKyAgICBpZiAoc3RyaW5nVmlldy5pczhCaXQoKSkKKyAgICAg
ICAgcmV0dXJuIG5leHRCcmVha2FibGVQb3NpdGlvbktlZXBpbmdBbGxXb3JkczxMQ2hhciwgTm9u
QnJlYWtpbmdTcGFjZUJlaGF2aW9yOjpUcmVhdE5vbkJyZWFraW5nU3BhY2VBc0JyZWFrPihzdHJp
bmdWaWV3LmNoYXJhY3RlcnM4KCksIHN0cmluZ1ZpZXcubGVuZ3RoKCksIHN0YXJ0UG9zaXRpb24p
OworICAgIHJldHVybiBuZXh0QnJlYWthYmxlUG9zaXRpb25LZWVwaW5nQWxsV29yZHM8VUNoYXIs
IE5vbkJyZWFraW5nU3BhY2VCZWhhdmlvcjo6VHJlYXROb25CcmVha2luZ1NwYWNlQXNCcmVhaz4o
c3RyaW5nVmlldy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nVmlldy5sZW5ndGgoKSwgc3RhcnRQb3Np
dGlvbik7Cit9CisKK2lubGluZSB1bnNpZ25lZCBuZXh0QnJlYWthYmxlUG9zaXRpb25LZWVwaW5n
QWxsV29yZHNJZ25vcmluZ05CU1AoTGF6eUxpbmVCcmVha0l0ZXJhdG9yJiBpdGVyYXRvciwgdW5z
aWduZWQgc3RhcnRQb3NpdGlvbikKK3sKKyAgICBhdXRvIHN0cmluZ1ZpZXcgPSBpdGVyYXRvci5z
dHJpbmdWaWV3KCk7CisgICAgaWYgKHN0cmluZ1ZpZXcuaXM4Qml0KCkpCisgICAgICAgIHJldHVy
biBuZXh0QnJlYWthYmxlUG9zaXRpb25LZWVwaW5nQWxsV29yZHM8TENoYXIsIE5vbkJyZWFraW5n
U3BhY2VCZWhhdmlvcjo6SWdub3JlTm9uQnJlYWtpbmdTcGFjZT4oc3RyaW5nVmlldy5jaGFyYWN0
ZXJzOCgpLCBzdHJpbmdWaWV3Lmxlbmd0aCgpLCBzdGFydFBvc2l0aW9uKTsKKyAgICByZXR1cm4g
bmV4dEJyZWFrYWJsZVBvc2l0aW9uS2VlcGluZ0FsbFdvcmRzPFVDaGFyLCBOb25CcmVha2luZ1Nw
YWNlQmVoYXZpb3I6Oklnbm9yZU5vbkJyZWFraW5nU3BhY2U+KHN0cmluZ1ZpZXcuY2hhcmFjdGVy
czE2KCksIHN0cmluZ1ZpZXcubGVuZ3RoKCksIHN0YXJ0UG9zaXRpb24pOworfQorCitpbmxpbmUg
dW5zaWduZWQgbmV4dEJyZWFrYWJsZVBvc2l0aW9uKExhenlMaW5lQnJlYWtJdGVyYXRvciYgaXRl
cmF0b3IsIHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24pCit7CisgICAgYXV0byBzdHJpbmdWaWV3ID0g
aXRlcmF0b3Iuc3RyaW5nVmlldygpOworICAgIGlmIChzdHJpbmdWaWV3LmlzOEJpdCgpKQorICAg
ICAgICByZXR1cm4gbmV4dEJyZWFrYWJsZVBvc2l0aW9uTm9uTG9vc2VseTxMQ2hhciwgTm9uQnJl
YWtpbmdTcGFjZUJlaGF2aW9yOjpUcmVhdE5vbkJyZWFraW5nU3BhY2VBc0JyZWFrPihpdGVyYXRv
ciwgc3RyaW5nVmlldy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmdWaWV3Lmxlbmd0aCgpLCBzdGFydFBv
c2l0aW9uKTsKKyAgICByZXR1cm4gbmV4dEJyZWFrYWJsZVBvc2l0aW9uTm9uTG9vc2VseTxVQ2hh
ciwgTm9uQnJlYWtpbmdTcGFjZUJlaGF2aW9yOjpUcmVhdE5vbkJyZWFraW5nU3BhY2VBc0JyZWFr
PihpdGVyYXRvciwgc3RyaW5nVmlldy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nVmlldy5sZW5ndGgo
KSwgc3RhcnRQb3NpdGlvbik7Cit9CisKK2lubGluZSB1bnNpZ25lZCBuZXh0QnJlYWthYmxlUG9z
aXRpb25JZ25vcmluZ05CU1AoTGF6eUxpbmVCcmVha0l0ZXJhdG9yJiBsYXp5QnJlYWtJdGVyYXRv
ciwgdW5zaWduZWQgc3RhcnRQb3NpdGlvbikKK3sKKyAgICBhdXRvIHN0cmluZ1ZpZXcgPSBsYXp5
QnJlYWtJdGVyYXRvci5zdHJpbmdWaWV3KCk7CisgICAgaWYgKHN0cmluZ1ZpZXcuaXM4Qml0KCkp
CisgICAgICAgIHJldHVybiBuZXh0QnJlYWthYmxlUG9zaXRpb25Ob25Mb29zZWx5PExDaGFyLCBO
b25CcmVha2luZ1NwYWNlQmVoYXZpb3I6Oklnbm9yZU5vbkJyZWFraW5nU3BhY2U+KGxhenlCcmVh
a0l0ZXJhdG9yLCBzdHJpbmdWaWV3LmNoYXJhY3RlcnM4KCksIHN0cmluZ1ZpZXcubGVuZ3RoKCks
IHN0YXJ0UG9zaXRpb24pOworICAgIHJldHVybiBuZXh0QnJlYWthYmxlUG9zaXRpb25Ob25Mb29z
ZWx5PFVDaGFyLCBOb25CcmVha2luZ1NwYWNlQmVoYXZpb3I6Oklnbm9yZU5vbkJyZWFraW5nU3Bh
Y2U+KGxhenlCcmVha0l0ZXJhdG9yLCBzdHJpbmdWaWV3LmNoYXJhY3RlcnMxNigpLCBzdHJpbmdW
aWV3Lmxlbmd0aCgpLCBzdGFydFBvc2l0aW9uKTsKK30KKworaW5saW5lIHVuc2lnbmVkIG5leHRC
cmVha2FibGVQb3NpdGlvbkxvb3NlKExhenlMaW5lQnJlYWtJdGVyYXRvciYgbGF6eUJyZWFrSXRl
cmF0b3IsIHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24pCit7CisgICAgYXV0byBzdHJpbmdWaWV3ID0g
bGF6eUJyZWFrSXRlcmF0b3Iuc3RyaW5nVmlldygpOworICAgIGlmIChzdHJpbmdWaWV3LmlzOEJp
dCgpKQorICAgICAgICByZXR1cm4gbmV4dEJyZWFrYWJsZVBvc2l0aW9uTG9vc2VseTxMQ2hhciwg
Tm9uQnJlYWtpbmdTcGFjZUJlaGF2aW9yOjpUcmVhdE5vbkJyZWFraW5nU3BhY2VBc0JyZWFrPihs
YXp5QnJlYWtJdGVyYXRvciwgc3RyaW5nVmlldy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmdWaWV3Lmxl
bmd0aCgpLCBzdGFydFBvc2l0aW9uKTsKKyAgICByZXR1cm4gbmV4dEJyZWFrYWJsZVBvc2l0aW9u
TG9vc2VseTxVQ2hhciwgTm9uQnJlYWtpbmdTcGFjZUJlaGF2aW9yOjpUcmVhdE5vbkJyZWFraW5n
U3BhY2VBc0JyZWFrPihsYXp5QnJlYWtJdGVyYXRvciwgc3RyaW5nVmlldy5jaGFyYWN0ZXJzMTYo
KSwgc3RyaW5nVmlldy5sZW5ndGgoKSwgc3RhcnRQb3NpdGlvbik7Cit9CisKK2lubGluZSB1bnNp
Z25lZCBuZXh0QnJlYWthYmxlUG9zaXRpb25JZ25vcmluZ05CU1BMb29zZShMYXp5TGluZUJyZWFr
SXRlcmF0b3ImIGxhenlCcmVha0l0ZXJhdG9yLCB1bnNpZ25lZCBzdGFydFBvc2l0aW9uKQorewor
ICAgIGF1dG8gc3RyaW5nVmlldyA9IGxhenlCcmVha0l0ZXJhdG9yLnN0cmluZ1ZpZXcoKTsKKyAg
ICBpZiAoc3RyaW5nVmlldy5pczhCaXQoKSkKKyAgICAgICAgcmV0dXJuIG5leHRCcmVha2FibGVQ
b3NpdGlvbkxvb3NlbHk8TENoYXIsIE5vbkJyZWFraW5nU3BhY2VCZWhhdmlvcjo6SWdub3JlTm9u
QnJlYWtpbmdTcGFjZT4obGF6eUJyZWFrSXRlcmF0b3IsIHN0cmluZ1ZpZXcuY2hhcmFjdGVyczgo
KSwgc3RyaW5nVmlldy5sZW5ndGgoKSwgc3RhcnRQb3NpdGlvbik7CisgICAgcmV0dXJuIG5leHRC
cmVha2FibGVQb3NpdGlvbkxvb3NlbHk8VUNoYXIsIE5vbkJyZWFraW5nU3BhY2VCZWhhdmlvcjo6
SWdub3JlTm9uQnJlYWtpbmdTcGFjZT4obGF6eUJyZWFrSXRlcmF0b3IsIHN0cmluZ1ZpZXcuY2hh
cmFjdGVyczE2KCksIHN0cmluZ1ZpZXcubGVuZ3RoKCksIHN0YXJ0UG9zaXRpb24pOworfQorCitp
bmxpbmUgYm9vbCBpc0JyZWFrYWJsZShMYXp5TGluZUJyZWFrSXRlcmF0b3ImIGxhenlCcmVha0l0
ZXJhdG9yLCB1bnNpZ25lZCBzdGFydFBvc2l0aW9uLCBPcHRpb25hbDx1bnNpZ25lZD4mIG5leHRC
cmVha2FibGUsIGJvb2wgYnJlYWtOQlNQLCBib29sIGlzTG9vc2VNb2RlLCBib29sIGtlZXBBbGxX
b3JkcykKK3sKKyAgICBpZiAobmV4dEJyZWFrYWJsZSAmJiBuZXh0QnJlYWthYmxlLnZhbHVlKCkg
Pj0gc3RhcnRQb3NpdGlvbikKKyAgICAgICAgcmV0dXJuIHN0YXJ0UG9zaXRpb24gPT0gbmV4dEJy
ZWFrYWJsZTsKKworICAgIGlmIChrZWVwQWxsV29yZHMpIHsKKyAgICAgICAgaWYgKGJyZWFrTkJT
UCkKKyAgICAgICAgICAgIG5leHRCcmVha2FibGUgPSBuZXh0QnJlYWthYmxlUG9zaXRpb25LZWVw
aW5nQWxsV29yZHMobGF6eUJyZWFrSXRlcmF0b3IsIHN0YXJ0UG9zaXRpb24pOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBuZXh0QnJlYWthYmxlID0gbmV4dEJyZWFrYWJsZVBvc2l0aW9uS2Vl
cGluZ0FsbFdvcmRzSWdub3JpbmdOQlNQKGxhenlCcmVha0l0ZXJhdG9yLCBzdGFydFBvc2l0aW9u
KTsKKyAgICB9IGVsc2UgaWYgKGlzTG9vc2VNb2RlKSB7CisgICAgICAgIGlmIChicmVha05CU1Ap
CisgICAgICAgICAgICBuZXh0QnJlYWthYmxlID0gbmV4dEJyZWFrYWJsZVBvc2l0aW9uTG9vc2Uo
bGF6eUJyZWFrSXRlcmF0b3IsIHN0YXJ0UG9zaXRpb24pOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBuZXh0QnJlYWthYmxlID0gbmV4dEJyZWFrYWJsZVBvc2l0aW9uSWdub3JpbmdOQlNQTG9v
c2UobGF6eUJyZWFrSXRlcmF0b3IsIHN0YXJ0UG9zaXRpb24pOworICAgIH0gZWxzZSB7CisgICAg
ICAgIGlmIChicmVha05CU1ApCisgICAgICAgICAgICBuZXh0QnJlYWthYmxlID0gbmV4dEJyZWFr
YWJsZVBvc2l0aW9uKGxhenlCcmVha0l0ZXJhdG9yLCBzdGFydFBvc2l0aW9uKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgbmV4dEJyZWFrYWJsZSA9IG5leHRCcmVha2FibGVQb3NpdGlvbkln
bm9yaW5nTkJTUChsYXp5QnJlYWtJdGVyYXRvciwgc3RhcnRQb3NpdGlvbik7CisgICAgfQorICAg
IHJldHVybiBzdGFydFBvc2l0aW9uID09IG5leHRCcmVha2FibGU7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVJ
dGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmgKaW5k
ZXggMmU1MjkxYWRlZmQ2ZDE2M2EwMjFhY2FkZTAwZGE0MDA3MWYwYTQ1MS4uM2FhNTQ1YzgzZGFj
Nzk4ZWIyOTJlNWJmNzUyOWFmNmQ4MTA1ZjYxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0lubGluZUl0ZXJhdG9yLmgKQEAgLTUzLDE4ICs1MywxMiBAQCBzdHJ1Y3QgQmlkaUlzb2xhdGVk
UnVuIHsKIGNsYXNzIElubGluZUl0ZXJhdG9yIHsKIHB1YmxpYzoKICAgICBJbmxpbmVJdGVyYXRv
cigpCi0gICAgICAgIDogbV9yb290KG51bGxwdHIpCi0gICAgICAgICwgbV9yZW5kZXJlcihudWxs
cHRyKQotICAgICAgICAsIG1fbmV4dEJyZWFrYWJsZVBvc2l0aW9uKC0xKQotICAgICAgICAsIG1f
cG9zKDApCi0gICAgICAgICwgbV9yZWZlcnNUb0VuZE9mUHJldmlvdXNOb2RlKGZhbHNlKQogICAg
IHsKICAgICB9CiAKICAgICBJbmxpbmVJdGVyYXRvcihSZW5kZXJFbGVtZW50KiByb290LCBSZW5k
ZXJPYmplY3QqIG8sIHVuc2lnbmVkIHApCiAgICAgICAgIDogbV9yb290KHJvb3QpCiAgICAgICAg
ICwgbV9yZW5kZXJlcihvKQotICAgICAgICAsIG1fbmV4dEJyZWFrYWJsZVBvc2l0aW9uKC0xKQog
ICAgICAgICAsIG1fcG9zKHApCiAgICAgICAgICwgbV9yZWZlcnNUb0VuZE9mUHJldmlvdXNOb2Rl
KGZhbHNlKQogICAgIHsKQEAgLTc3LDcgKzcxLDcgQEAgcHVibGljOgogICAgICAgICBtb3ZlVG8o
b2JqZWN0LCAwKTsKICAgICB9CiAKLSAgICB2b2lkIG1vdmVUbyhSZW5kZXJPYmplY3QqIG9iamVj
dCwgdW5zaWduZWQgb2Zmc2V0LCBpbnQgbmV4dEJyZWFrID0gLTEpCisgICAgdm9pZCBtb3ZlVG8o
UmVuZGVyT2JqZWN0KiBvYmplY3QsIHVuc2lnbmVkIG9mZnNldCwgT3B0aW9uYWw8dW5zaWduZWQ+
IG5leHRCcmVhayA9IE51bGxvcHQpCiAgICAgewogICAgICAgICBzZXRSZW5kZXJlcihvYmplY3Qp
OwogICAgICAgICBzZXRPZmZzZXQob2Zmc2V0KTsKQEAgLTg5LDggKzgzLDggQEAgcHVibGljOgog
ICAgIHVuc2lnbmVkIG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9zOyB9CiAgICAgdm9pZCBz
ZXRPZmZzZXQodW5zaWduZWQgcG9zaXRpb24pOwogICAgIFJlbmRlckVsZW1lbnQqIHJvb3QoKSBj
b25zdCB7IHJldHVybiBtX3Jvb3Q7IH0KLSAgICBpbnQgbmV4dEJyZWFrYWJsZVBvc2l0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9uZXh0QnJlYWthYmxlUG9zaXRpb247IH0KLSAgICB2b2lkIHNldE5l
eHRCcmVha2FibGVQb3NpdGlvbihpbnQgcG9zaXRpb24pIHsgbV9uZXh0QnJlYWthYmxlUG9zaXRp
b24gPSBwb3NpdGlvbjsgfQorICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBuZXh0QnJlYWthYmxlUG9z
aXRpb24oKSBjb25zdCB7IHJldHVybiBtX25leHRCcmVha2FibGVQb3NpdGlvbjsgfQorICAgIHZv
aWQgc2V0TmV4dEJyZWFrYWJsZVBvc2l0aW9uKE9wdGlvbmFsPHVuc2lnbmVkPiBwb3NpdGlvbikg
eyBtX25leHRCcmVha2FibGVQb3NpdGlvbiA9IHBvc2l0aW9uOyB9CiAgICAgYm9vbCByZWZlcnNU
b0VuZE9mUHJldmlvdXNOb2RlKCkgY29uc3QgeyByZXR1cm4gbV9yZWZlcnNUb0VuZE9mUHJldmlv
dXNOb2RlOyB9CiAgICAgdm9pZCBzZXRSZWZlcnNUb0VuZE9mUHJldmlvdXNOb2RlKCk7CiAKQEAg
LTExOCwxOCArMTEyLDE4IEBAIHByaXZhdGU6CiAKICAgICBVQ2hhckRpcmVjdGlvbiBzdXJyb2dh
dGVUZXh0RGlyZWN0aW9uKFVDaGFyIGN1cnJlbnRDb2RlVW5pdCkgY29uc3Q7CiAKLSAgICBSZW5k
ZXJFbGVtZW50KiBtX3Jvb3Q7Ci0gICAgUmVuZGVyT2JqZWN0KiBtX3JlbmRlcmVyOworICAgIFJl
bmRlckVsZW1lbnQqIG1fcm9vdCB7IG51bGxwdHIgfTsKKyAgICBSZW5kZXJPYmplY3QqIG1fcmVu
ZGVyZXIgeyBudWxscHRyIH07CiAKLSAgICBpbnQgbV9uZXh0QnJlYWthYmxlUG9zaXRpb247Ci0g
ICAgdW5zaWduZWQgbV9wb3M7CisgICAgT3B0aW9uYWw8dW5zaWduZWQ+IG1fbmV4dEJyZWFrYWJs
ZVBvc2l0aW9uOworICAgIHVuc2lnbmVkIG1fcG9zIHsgMCB9OwogCiAgICAgLy8gVGhlcmUgYXJl
IGEgY291cGxlIHBsYWNlcyB3aGVyZSB3ZSB3YW50IHRvIGRlY3JlbWVudCBhbiBJbmxpbmVJdGVy
YXRvci4KICAgICAvLyBVc3VhbGx5IHRoaXMgdGFrZSB0aGUgZm9ybSBvZiBkZWNyZW1lbnRpbmcg
bV9wb3M7IGhvd2V2ZXIsIG1fcG9zIG1pZ2h0IGJlIDAuCiAgICAgLy8gSG93ZXZlciwgd2Ugc2hv
dWxkbid0IGV2ZXIgbmVlZCB0byBkZWNyZW1lbnQgYW4gSW5saW5lSXRlcmF0b3IgbW9yZSB0aGFu
CiAgICAgLy8gb25jZSwgc28gcmF0aGVyIHRoYW4gaW1wbGVtZW50aW5nIGEgZGVjcmVtZW50KCkg
ZnVuY3Rpb24gd2hpY2ggdHJhdmVyc2VzCiAgICAgLy8gbm9kZXMsIHdlIGNhbiBzaW1wbHkga2Vl
cCB0cmFjayBvZiB0aGlzIHN0YXRlIGFuZCBoYW5kbGUgaXQuCi0gICAgYm9vbCBtX3JlZmVyc1Rv
RW5kT2ZQcmV2aW91c05vZGU7CisgICAgYm9vbCBtX3JlZmVyc1RvRW5kT2ZQcmV2aW91c05vZGUg
eyBmYWxzZSB9OwogfTsKIAogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJbmxpbmVJdGVy
YXRvciYgaXQxLCBjb25zdCBJbmxpbmVJdGVyYXRvciYgaXQyKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0lubGluZVRleHRCb3guY3BwCmluZGV4IGI4YTVhNTJmZWQ0ZjQzZmUyYTU4MGI4NzZk
ZjdmYjlkMDhlZjJmZjIuLmU2MzJiZGExODQ5MzU2ZTIzYzhhNzBiYjE1Y2Y4YTgwNzExZDFmNGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKQEAgLTIzLDYg
KzIzLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbmxpbmVUZXh0Qm94Lmgi
CiAKKyNpbmNsdWRlICJCcmVha0xpbmVzLmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVk
ZSAiQ2hyb21lQ2xpZW50LmgiCiAjaW5jbHVkZSAiRGFzaEFycmF5LmgiCkBAIC01MCw3ICs1MSw2
IEBACiAjaW5jbHVkZSAiVGV4dERlY29yYXRpb25QYWludGVyLmgiCiAjaW5jbHVkZSAiVGV4dFBh
aW50U3R5bGUuaCIKICNpbmNsdWRlICJUZXh0UGFpbnRlci5oIgotI2luY2x1ZGUgImJyZWFrX2xp
bmVzLmgiCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAppbmRleCBkM2ZiZTdjODU5
MzE3OWE5OTUwNGRiNTAxZGZmMTYyNzA1Yzc3OTNhLi5hYmViZmYwYmRjOTU5OTkxYTAwYzBhZGIy
MGYzZTBkYTE5OGRlNTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3Bw
CkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgogCiAjaW5jbHVkZSAi
QVhPYmplY3RDYWNoZS5oIgorI2luY2x1ZGUgIkJyZWFrTGluZXMuaCIKICNpbmNsdWRlICJCcmVh
a2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJDaGFyYWN0ZXJQcm9wZXJ0aWVzLmgiCiAjaW5jbHVk
ZSAiRWxsaXBzaXNCb3guaCIKQEAgLTQ2LDcgKzQ3LDYgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9U
ZXh0QnJlYWtJdGVyYXRvci5oPgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNp
bmNsdWRlICJWaXNpYmxlUG9zaXRpb24uaCIKLSNpbmNsdWRlICJicmVha19saW5lcy5oIgogI2lu
Y2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KQEAgLTc5MSwxNSAr
NzkxLDE1IEBAIHZvaWQgUmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMo
ZmxvYXQgbGVhZFdpZHRoLCBIYXNoU2V0PGNvbnN0IEZvCiAgICAgY29uc3QgUmVuZGVyU3R5bGUm
IHN0eWxlID0gdGhpcy0+c3R5bGUoKTsKICAgICBjb25zdCBGb250Q2FzY2FkZSYgZm9udCA9IHN0
eWxlLmZvbnRDYXNjYWRlKCk7IC8vIEZJWE1FOiBUaGlzIGlnbm9yZXMgZmlyc3QtbGluZS4KICAg
ICBmbG9hdCB3b3JkU3BhY2luZyA9IGZvbnQud29yZFNwYWNpbmcoKTsKLSAgICBpbnQgbGVuID0g
dGV4dExlbmd0aCgpOworICAgIHVuc2lnbmVkIGxlbiA9IHRleHRMZW5ndGgoKTsKICAgICBMYXp5
TGluZUJyZWFrSXRlcmF0b3IgYnJlYWtJdGVyYXRvcihtX3RleHQsIHN0eWxlLmxvY2FsZSgpLCBt
YXBMaW5lQnJlYWtUb0l0ZXJhdG9yTW9kZShzdHlsZS5saW5lQnJlYWsoKSkpOwogICAgIGJvb2wg
bmVlZHNXb3JkU3BhY2luZyA9IGZhbHNlOwogICAgIGJvb2wgaWdub3JpbmdTcGFjZXMgPSBmYWxz
ZTsKICAgICBib29sIGlzU3BhY2UgPSBmYWxzZTsKICAgICBib29sIGZpcnN0V29yZCA9IHRydWU7
CiAgICAgYm9vbCBmaXJzdExpbmUgPSB0cnVlOwotICAgIGludCBuZXh0QnJlYWthYmxlID0gLTE7
Ci0gICAgaW50IGxhc3RXb3JkQm91bmRhcnkgPSAwOworICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBu
ZXh0QnJlYWthYmxlOworICAgIHVuc2lnbmVkIGxhc3RXb3JkQm91bmRhcnkgPSAwOwogCiAgICAg
Ly8gTm9uLXplcm8gb25seSB3aGVuIGtlcm5pbmcgaXMgZW5hYmxlZCwgaW4gd2hpY2ggY2FzZSB3
ZSBtZWFzdXJlIHdvcmRzIHdpdGggdGhlaXIgdHJhaWxpbmcKICAgICAvLyBzcGFjZSwgdGhlbiBz
dWJ0cmFjdCBpdHMgd2lkdGguCkBAIC04MzMsNyArODMzLDcgQEAgdm9pZCBSZW5kZXJUZXh0Ojpj
b21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyhmbG9hdCBsZWFkV2lkdGgsIEhhc2hTZXQ8Y29u
c3QgRm8KICAgICBib29sIGtlZXBBbGxXb3JkcyA9IHN0eWxlLndvcmRCcmVhaygpID09IEtlZXBB
bGxXb3JkQnJlYWs7CiAgICAgYm9vbCBpc0xvb3NlQ0pLTW9kZSA9IGJyZWFrSXRlcmF0b3IuaXNM
b29zZUNKS01vZGUoKTsKIAotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKICAgICAgICAgVUNoYXIgYyA9
IHVuY2hlY2tlZENoYXJhY3RlckF0KGkpOwogCiAgICAgICAgIGJvb2wgcHJldmlvdXNDaGFyYWN0
ZXJJc1NwYWNlID0gaXNTcGFjZTsKQEAgLTg2OSw2ICs4NjksNyBAQCB2b2lkIFJlbmRlclRleHQ6
OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKGZsb2F0IGxlYWRXaWR0aCwgSGFzaFNldDxj
b25zdCBGbwogICAgICAgICAgICAgbGFzdFdvcmRCb3VuZGFyeSsrOwogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIH0gZWxzZSBpZiAoYyA9PSBzb2Z0SHlwaGVuICYmIHN0eWxlLmh5cGhl
bnMoKSAhPSBIeXBoZW5zTm9uZSkgeworICAgICAgICAgICAgQVNTRVJUKGkgPj0gbGFzdFdvcmRC
b3VuZGFyeSk7CiAgICAgICAgICAgICBjdXJyTWF4V2lkdGggKz0gd2lkdGhGcm9tQ2FjaGUoZm9u
dCwgbGFzdFdvcmRCb3VuZGFyeSwgaSAtIGxhc3RXb3JkQm91bmRhcnksIGxlYWRXaWR0aCArIGN1
cnJNYXhXaWR0aCwgJmZhbGxiYWNrRm9udHMsICZnbHlwaE92ZXJmbG93LCBzdHlsZSk7CiAgICAg
ICAgICAgICBpZiAoIWZpcnN0R2x5cGhMZWZ0T3ZlcmZsb3cpCiAgICAgICAgICAgICAgICAgZmly
c3RHbHlwaExlZnRPdmVyZmxvdyA9IGdseXBoT3ZlcmZsb3cubGVmdDsKQEAgLTg3OCw3ICs4Nzks
NyBAQCB2b2lkIFJlbmRlclRleHQ6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKGZsb2F0
IGxlYWRXaWR0aCwgSGFzaFNldDxjb25zdCBGbwogCiAgICAgICAgIGJvb2wgaGFzQnJlYWsgPSBi
cmVha0FsbCB8fCBpc0JyZWFrYWJsZShicmVha0l0ZXJhdG9yLCBpLCBuZXh0QnJlYWthYmxlLCBi
cmVha05CU1AsIGlzTG9vc2VDSktNb2RlLCBrZWVwQWxsV29yZHMpOwogICAgICAgICBib29sIGJl
dHdlZW5Xb3JkcyA9IHRydWU7Ci0gICAgICAgIGludCBqID0gaTsKKyAgICAgICAgdW5zaWduZWQg
aiA9IGk7CiAgICAgICAgIHdoaWxlIChjICE9ICdcbicgJiYgIWlzU3BhY2VBY2NvcmRpbmdUb1N0
eWxlKGMsIHN0eWxlKSAmJiBjICE9ICdcdCcgJiYgKGMgIT0gc29mdEh5cGhlbiB8fCBzdHlsZS5o
eXBoZW5zKCkgPT0gSHlwaGVuc05vbmUpKSB7CiAgICAgICAgICAgICBqKys7CiAgICAgICAgICAg
ICBpZiAoaiA9PSBsZW4pCkBAIC04OTIsNyArODkzLDcgQEAgdm9pZCBSZW5kZXJUZXh0Ojpjb21w
dXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyhmbG9hdCBsZWFkV2lkdGgsIEhhc2hTZXQ8Y29uc3Qg
Rm8KICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGludCB3b3JkTGVuID0gaiAt
IGk7CisgICAgICAgIHVuc2lnbmVkIHdvcmRMZW4gPSBqIC0gaTsKICAgICAgICAgaWYgKHdvcmRM
ZW4pIHsKICAgICAgICAgICAgIGZsb2F0IGN1cnJNaW5XaWR0aCA9IDA7CiAgICAgICAgICAgICBi
b29sIGlzU3BhY2UgPSAoaiA8IGxlbikgJiYgaXNTcGFjZUFjY29yZGluZ1RvU3R5bGUoYywgc3R5
bGUpOwpAQCAtOTM2LDggKzkzNywxMCBAQCB2b2lkIFJlbmRlclRleHQ6OmNvbXB1dGVQcmVmZXJy
ZWRMb2dpY2FsV2lkdGhzKGZsb2F0IGxlYWRXaWR0aCwgSGFzaFNldDxjb25zdCBGbwogICAgICAg
ICAgICAgaWYgKGJldHdlZW5Xb3JkcykgewogICAgICAgICAgICAgICAgIGlmIChsYXN0V29yZEJv
dW5kYXJ5ID09IGkpCiAgICAgICAgICAgICAgICAgICAgIGN1cnJNYXhXaWR0aCArPSB3OwotICAg
ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKGogPj0gbGFzdFdvcmRCb3VuZGFyeSk7CiAgICAgICAgICAgICAgICAgICAg
IGN1cnJNYXhXaWR0aCArPSB3aWR0aEZyb21DYWNoZShmb250LCBsYXN0V29yZEJvdW5kYXJ5LCBq
IC0gbGFzdFdvcmRCb3VuZGFyeSwgbGVhZFdpZHRoICsgY3Vyck1heFdpZHRoLCAmZmFsbGJhY2tG
b250cywgJmdseXBoT3ZlcmZsb3csIHN0eWxlKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgbGFzdFdvcmRCb3VuZGFyeSA9IGo7CiAgICAgICAgICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJpbmdBbGxJbk9uZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyaW5nQWxsSW5PbmUuY3BwCmluZGV4IDhmM2JhZTgy
YjY3ZjJjNDRhNGRjMGJmNjMzMjgwNTkyOGQ1NDAyODQuLjJlOTY0NDZlZjI2NzA0NjZkYmFkZjBl
NGQ5MzIxNGZiMjJlNjBmYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJpbmdBbGxJbk9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
cmluZ0FsbEluT25lLmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkF1dG9UYWJsZUxh
eW91dC5jcHAiCiAjaW5jbHVkZSAiQmlkaVJ1bi5jcHAiCiAjaW5jbHVkZSAiQm9yZGVyRWRnZS5j
cHAiCisjaW5jbHVkZSAiQnJlYWtMaW5lcy5jcHAiCiAjaW5jbHVkZSAiQ2xpcFJlY3QuY3BwIgog
I2luY2x1ZGUgIkNvdW50ZXJOb2RlLmNwcCIKICNpbmNsdWRlICJFbGxpcHNpc0JveC5jcHAiCkBA
IC0xNDksNCArMTUwLDMgQEAKICNpbmNsdWRlICJUZXh0RGVjb3JhdGlvblBhaW50ZXIuY3BwIgog
I2luY2x1ZGUgIlRleHRQYWludFN0eWxlLmNwcCIKICNpbmNsdWRlICJUZXh0UGFpbnRlci5jcHAi
Ci0jaW5jbHVkZSAiYnJlYWtfbGluZXMuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJdGVyYXRvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFRleHRGcmFnbWVudEl0ZXJhdG9y
LmNwcAppbmRleCAyYzcwZjFhNThmMDRhOTVjOGFjNGJjYjczMTA0NTBiZGQ0ZjkyNDg3Li4yNTFk
ZmUzNWQwOTZhOGQzMjY3NzdhMDAyZmRkMjk5Y2Q4MDRhNzljIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFRleHRGcmFnbWVudEl0ZXJhdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFRleHRGcmFn
bWVudEl0ZXJhdG9yLmNwcApAQCAtMTE0LDggKzExNCw5IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPgogdW5zaWduZWQgVGV4dEZyYWdtZW50SXRlcmF0b3I6Om5leHRCcmVha2Fi
bGVQb3NpdGlvbihjb25zdCBGbG93Q29udGVudHM6OlNlZ21lbnQmIHNlZ21lbnQsIHVuc2lnbmVk
IHN0YXJ0UG9zaXRpb24pCiB7CiAgICAgQVNTRVJUKHN0YXJ0UG9zaXRpb24gPCBzZWdtZW50LmVu
ZCk7Ci0gICAgaWYgKHNlZ21lbnQudGV4dC5pbXBsKCkgIT0gbV9saW5lQnJlYWtJdGVyYXRvci5z
dHJpbmcoKS5pbXBsKCkpIHsKLSAgICAgICAgY29uc3QgU3RyaW5nJiBjdXJyZW50VGV4dCA9IG1f
bGluZUJyZWFrSXRlcmF0b3Iuc3RyaW5nKCk7CisgICAgU3RyaW5nVmlldyBjdXJyZW50VGV4dCA9
IG1fbGluZUJyZWFrSXRlcmF0b3Iuc3RyaW5nVmlldygpOworICAgIFN0cmluZ1ZpZXcgc2VnbWVu
dFRleHQgPSBTdHJpbmdWaWV3KHNlZ21lbnQudGV4dCk7CisgICAgaWYgKHNlZ21lbnRUZXh0ICE9
IGN1cnJlbnRUZXh0KSB7CiAgICAgICAgIHVuc2lnbmVkIHRleHRMZW5ndGggPSBjdXJyZW50VGV4
dC5sZW5ndGgoKTsKICAgICAgICAgVUNoYXIgbGFzdENoYXJhY3RlciA9IHRleHRMZW5ndGggPiAw
ID8gY3VycmVudFRleHRbdGV4dExlbmd0aCAtIDFdIDogMDsKICAgICAgICAgVUNoYXIgc2Vjb25k
VG9MYXN0Q2hhcmFjdGVyID0gdGV4dExlbmd0aCA+IDEgPyBjdXJyZW50VGV4dFt0ZXh0TGVuZ3Ro
IC0gMl0gOiAwOwpAQCAtMTI1LDcgKzEyNiw3IEBAIHVuc2lnbmVkIFRleHRGcmFnbWVudEl0ZXJh
dG9yOjpuZXh0QnJlYWthYmxlUG9zaXRpb24oY29uc3QgRmxvd0NvbnRlbnRzOjpTZWdtZW50CiAg
ICAgY29uc3QgYXV0byogY2hhcmFjdGVycyA9IHNlZ21lbnQudGV4dC5jaGFyYWN0ZXJzPENoYXJh
Y3RlclR5cGU+KCk7CiAgICAgdW5zaWduZWQgc2VnbWVudExlbmd0aCA9IHNlZ21lbnQuZW5kIC0g
c2VnbWVudC5zdGFydDsKICAgICB1bnNpZ25lZCBzZWdtZW50UG9zaXRpb24gPSBzdGFydFBvc2l0
aW9uIC0gc2VnbWVudC5zdGFydDsKLSAgICByZXR1cm4gc2VnbWVudC5zdGFydCArIG5leHRCcmVh
a2FibGVQb3NpdGlvbk5vbkxvb3NlbHk8Q2hhcmFjdGVyVHlwZSwgTkJTUEJlaGF2aW9yOjpJZ25v
cmVOQlNQPihtX2xpbmVCcmVha0l0ZXJhdG9yLCBjaGFyYWN0ZXJzLCBzZWdtZW50TGVuZ3RoLCBz
ZWdtZW50UG9zaXRpb24pOworICAgIHJldHVybiBzZWdtZW50LnN0YXJ0ICsgbmV4dEJyZWFrYWJs
ZVBvc2l0aW9uTm9uTG9vc2VseTxDaGFyYWN0ZXJUeXBlLCBOb25CcmVha2luZ1NwYWNlQmVoYXZp
b3I6Oklnbm9yZU5vbkJyZWFraW5nU3BhY2U+KG1fbGluZUJyZWFrSXRlcmF0b3IsIGNoYXJhY3Rl
cnMsIHNlZ21lbnRMZW5ndGgsIHNlZ21lbnRQb3NpdGlvbik7CiB9CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1NpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJdGVyYXRvci5oCmluZGV4IDEw
NzdiY2JiZjE2MDk1NTRiY2ViYjc3NDU4ZjI4MDg1ZmY2MjZhY2UuLmFlZTc1YTQ2ZmFmMDQxMDIz
MzQxMGZiYzM5YTEwZjRkYzJjYjU5NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9TaW1wbGVMaW5lTGF5b3V0VGV4dEZyYWdtZW50SXRlcmF0b3IuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFRleHRGcmFnbWVudEl0ZXJhdG9yLmgK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjMsMTMgKzIzLDEyIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotI2lmbmRlZiBTaW1wbGVMaW5lTGF5b3V0VGV4dEZyYWdtZW50SXRlcmF0b3JfaAotI2RlZmlu
ZSBTaW1wbGVMaW5lTGF5b3V0VGV4dEZyYWdtZW50SXRlcmF0b3JfaAorI3ByYWdtYSBvbmNlCiAK
KyNpbmNsdWRlICJCcmVha0xpbmVzLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGluZUJyZWFrLmgiCiAj
aW5jbHVkZSAiU2ltcGxlTGluZUxheW91dEZsb3dDb250ZW50cy5oIgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+Ci0jaW5jbHVkZSAiYnJlYWtfbGluZXMuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xNjYsNSArMTY1LDMgQEAgaW5saW5lIGJvb2wgVGV4dEZy
YWdtZW50SXRlcmF0b3I6OmlzSGFyZExpbmVCcmVhayhjb25zdCBGbG93Q29udGVudHM6Okl0ZXJh
dG9yJgogCiB9CiB9Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL2JyZWFrX2xpbmVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9icmVha19saW5l
cy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0Yjk1MzZmZDFiZWRmMWNlMzYz
ZDY2MDExZDUxMjM1OTBlZjgxMDguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2JyZWFrX2xpbmVzLmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDEwMCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA1LCAy
MDA3LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiYnJlYWtfbGluZXMuaCIKLQotI2luY2x1ZGUgPHd0
Zi9BU0NJSUNUeXBlLmg+Ci0jaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgotI2luY2x1ZGUg
PHd0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
Ly8gUGFjayA4IGJpdHMgaW50byBvbmUgYnl0ZQotI2RlZmluZSBCKGEsIGIsIGMsIGQsIGUsIGYs
IGcsIGgpIFwKLSAgICAoKGEpIHwgKChiKSA8PCAxKSB8ICgoYykgPDwgMikgfCAoKGQpIDw8IDMp
IHwgKChlKSA8PCA0KSB8ICgoZikgPDwgNSkgfCAoKGcpIDw8IDYpIHwgKChoKSA8PCA3KSkKLQot
Ly8gTGluZSBicmVha2luZyB0YWJsZSByb3cgZm9yIGVhY2ggZGlnaXQgKDAtOSkKLSNkZWZpbmUg
REkgeyAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwIH0KLQotLy8gTGluZSBicmVh
a2luZyB0YWJsZSByb3cgZm9yIGFzY2lpIGxldHRlcnMgKGEteiBBLVopCi0jZGVmaW5lIEFMIHsg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCB9Ci0KLSNkZWZpbmUgRiAweEZGCi0K
LS8vIExpbmUgYnJlYWtpbmcgdGFibGUgZm9yIHByaW50YWJsZSBBU0NJSSBjaGFyYWN0ZXJzLiBM
aW5lIGJyZWFraW5nIG9wcG9ydHVuaXRpZXMgaW4gdGhpcyB0YWJsZSBhcmUgYXMgYmVsb3c6Ci0v
LyAtIGJlZm9yZSBvcGVuaW5nIHB1bmN0dWF0aW9ucyBzdWNoIGFzICcoJywgJzwnLCAnWycsICd7
JyBhZnRlciBjZXJ0YWluIGNoYXJhY3RlcnMgKGNvbXBhdGlibGUgd2l0aCBGaXJlZm94IDMuNik7
Ci0vLyAtIGFmdGVyICctJyBhbmQgJz8nIChiYWNrd2FyZC1jb21wYXRpYmxlLCBhbmQgY29tcGF0
aWJsZSB3aXRoIEludGVybmV0IEV4cGxvcmVyKS4KLS8vIFBsZWFzZSByZWZlciB0byA8aHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3Njk4PiBmb3IgbGluZSBicmVha2lu
ZyBtYXRyaXhlcyBvZiBkaWZmZXJlbnQgYnJvd3NlcnMKLS8vIGFuZCB0aGUgSUNVIHN0YW5kYXJk
LgotV0VCQ09SRV9FWFBPUlQgY29uc3QgdW5zaWduZWQgY2hhciBhc2NpaUxpbmVCcmVha1RhYmxl
W11bYXNjaWlMaW5lQnJlYWtUYWJsZUNvbHVtbkNvdW50XSA9IHsKLSAgICAvLyAgISAgIiAgIyAg
JCAgJSAgJiAgJyAgKCAgICAgKSAgKiAgKyAgLCAgLSAgLiAgLyAgMCAgMS04ICAgOSAgOiAgOyAg
PCAgPSAgPiAgPyAgQCAgICAgQS1YICAgICAgWSAgWiAgWyAgXCAgXSAgXiAgXyAgYCAgICAgYS14
ICAgICAgeSAgeiAgeyAgfCAgfSAgfiAgREVMCi0gICAgeyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDEpLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCBCKDAsIDAsIDAsIDEsIDAsIDAsIDAs
IDApLCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAs
IDEsIDAsIDAsIDAsIDAsIDApIH0sIC8vICEKLSAgICB7IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MSksIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIEIoMCwgMCwgMCwgMSwgMCwgMCwgMCwg
MCksIDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwg
MSwgMCwgMCwgMCwgMCwgMCkgfSwgLy8gIgotICAgIHsgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAx
KSwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgQigwLCAwLCAwLCAxLCAwLCAwLCAwLCAw
KSwgMCwgMCwgMCwgQigwLCAwLCAxLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAx
LCAwLCAwLCAwLCAwLCAwKSB9LCAvLyAjCi0gICAgeyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAp
LCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAp
LCAwLCAwLCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDApIH0sIC8vICQKLSAgICB7IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSks
IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIEIoMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCks
IDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMSwg
MCwgMCwgMCwgMCwgMCkgfSwgLy8gJQotICAgIHsgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAxKSwg
QigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgQigwLCAwLCAwLCAxLCAwLCAwLCAwLCAwKSwg
MCwgMCwgMCwgQigwLCAwLCAxLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAxLCAw
LCAwLCAwLCAwLCAwKSB9LCAvLyAmCi0gICAgeyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCBC
KDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAw
LCAwLCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDApIH0sIC8vICcKLSAgICB7IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIEIo
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAs
IDAsIDAsIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCkgfSwgLy8gKAotICAgIHsgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAxKSwgQigw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgQigwLCAwLCAwLCAxLCAwLCAwLCAwLCAwKSwgMCwg
MCwgMCwgQigwLCAwLCAxLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAxLCAwLCAw
LCAwLCAwLCAwKSB9LCAvLyApCi0gICAgeyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEpLCBCKDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCBCKDAsIDAsIDAsIDEsIDAsIDAsIDAsIDApLCAwLCAw
LCAwLCBCKDAsIDAsIDEsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAs
IDAsIDAsIDApIH0sIC8vICoKLSAgICB7IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSksIEIoMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIEIoMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCksIDAsIDAs
IDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwg
MCwgMCwgMCkgfSwgLy8gKwotICAgIHsgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAxKSwgQigwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgQigwLCAwLCAwLCAxLCAwLCAwLCAwLCAwKSwgMCwgMCwg
MCwgQigwLCAwLCAxLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAxLCAwLCAwLCAw
LCAwLCAwKSB9LCAvLyAsCi0gICAgeyBCKDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEpLCBCKDEsIDEs
IDEsIDEsIDEsIDAsIDEsIDApLCAwLCBCKDAsIDEsIDEsIDEsIDEsIDEsIDEsIDEpLCBGLCBGLCBG
LCBCKDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEpLCBGLCBGLCBGLCBCKDEsIDEsIDEsIDEsIDEsIDEs
IDEsIDEpIH0sIC8vIC0gTm90ZTogYnJlYWtpbmcgYmVmb3JlICcwJy0nOScgaXMgaGFuZGxlZCBo
YXJkLWNvZGVkIGluIHNob3VsZEJyZWFrQWZ0ZXIoKS4KLSAgICB7IEIoMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMSksIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIEIoMCwgMCwgMCwgMSwgMCwg
MCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIo
MCwgMCwgMSwgMCwgMCwgMCwgMCwgMCkgfSwgLy8gLgotICAgIHsgQigwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwKSwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgQigwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwKSB9LCAvLyAvCi0gICAgREksICBESSwgIERJLCAgREksICBE
SSwgIERJLCAgREksICBESSwgIERJLCAgREksIC8vIDAtOQotICAgIHsgQigwLCAwLCAwLCAwLCAw
LCAwLCAwLCAxKSwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgQigwLCAwLCAwLCAxLCAw
LCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAxLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwg
QigwLCAwLCAxLCAwLCAwLCAwLCAwLCAwKSB9LCAvLyA6Ci0gICAgeyBCKDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDEpLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCBCKDAsIDAsIDAsIDEsIDAs
IDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBC
KDAsIDAsIDEsIDAsIDAsIDAsIDAsIDApIH0sIC8vIDsKLSAgICB7IEIoMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCksIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIEIoMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIo
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCkgfSwgLy8gPAotICAgIHsgQigwLCAwLCAwLCAwLCAwLCAw
LCAwLCAxKSwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgQigwLCAwLCAwLCAxLCAwLCAw
LCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAxLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigw
LCAwLCAxLCAwLCAwLCAwLCAwLCAwKSB9LCAvLyA9Ci0gICAgeyBCKDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDEpLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCBCKDAsIDAsIDAsIDEsIDAsIDAs
IDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAs
IDAsIDEsIDAsIDAsIDAsIDAsIDApIH0sIC8vID4KLSAgICB7IEIoMCwgMCwgMSwgMSwgMSwgMSwg
MCwgMSksIEIoMCwgMSwgMSwgMCwgMSwgMCwgMCwgMSksIEYsIEIoMSwgMCwgMCwgMSwgMSwgMSwg
MCwgMSksIEYsIEYsIEYsIEIoMSwgMSwgMSwgMSwgMCwgMSwgMSwgMSksIEYsIEYsIEYsIEIoMSwg
MSwgMSwgMSwgMCwgMSwgMSwgMCkgfSwgLy8gPwotICAgIHsgQigwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwKSwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgQigwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwKSwgMCwgMCwgMCwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwKSB9LCAvLyBACi0gICAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwg
IEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBB
TCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgLy8gQS1aCi0g
ICAgeyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAp
LCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApIH0sIC8vIFsKLSAg
ICB7IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSksIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCks
IDAsIEIoMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwg
MCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCkgfSwgLy8gJ1wnCi0g
ICAgeyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEpLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAp
LCAwLCBCKDAsIDAsIDAsIDEsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAs
IDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAsIDAsIDAsIDApIH0sIC8vIF0KLSAg
ICB7IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCks
IDAsIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCkgfSwgLy8gXgotICAg
IHsgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwg
MCwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSB9LCAvLyBfCi0gICAg
eyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAw
LCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApIH0sIC8vIGAKLSAgICBB
TCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUws
ICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAgQUwsICBBTCwgIEFMLCAg
QUwsICBBTCwgIEFMLCAvLyBhLXoKLSAgICB7IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIEIo
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAs
IDAsIDAsIEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCkgfSwgLy8gewotICAgIHsgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAxKSwgQigw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgQigwLCAwLCAwLCAxLCAwLCAwLCAwLCAwKSwgMCwg
MCwgMCwgQigwLCAwLCAxLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAxLCAwLCAw
LCAwLCAwLCAwKSB9LCAvLyB8Ci0gICAgeyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEpLCBCKDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCBCKDAsIDAsIDAsIDEsIDAsIDAsIDAsIDApLCAwLCAw
LCAwLCBCKDAsIDAsIDEsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAs
IDAsIDAsIDApIH0sIC8vIH0KLSAgICB7IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSksIEIoMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIEIoMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCksIDAsIDAs
IDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwg
MCwgMCwgMCkgfSwgLy8gfgotICAgIHsgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgQigwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwg
MCwgQigwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSwgMCwgMCwgMCwgQigwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwKSB9LCAvLyBERUwKLX07Ci0KLSN1bmRlZiBCCi0jdW5kZWYgRgotI3VuZGVmIERJCi0j
dW5kZWYgQUwKLQotQ09NUElMRV9BU1NFUlQoV1RGX0FSUkFZX0xFTkdUSChhc2NpaUxpbmVCcmVh
a1RhYmxlKSA9PSBhc2NpaUxpbmVCcmVha1RhYmxlTGFzdENoYXIgLSBhc2NpaUxpbmVCcmVha1Rh
YmxlRmlyc3RDaGFyICsgMSwgVGVzdExpbmVCcmVha1RhYmxlQ29uc2lzdGVuY3kpOwotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
YnJlYWtfbGluZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9icmVha19saW5lcy5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMjk0NjEyOWNiYTZlYjkxNmRhYjllNTFhODBl
Y2JlOWUxN2ZiMmRjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9icmVha19saW5lcy5oCisrKyAvZGV2L251bGwK
QEAgLTEsMjQ4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDcsIDIwMTAs
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAy
MDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
LSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
Ci0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAq
Ci0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAq
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICoKLSAqLwotCi0jaWZuZGVmIGJyZWFrX2xp
bmVzX2gKLSNkZWZpbmUgYnJlYWtfbGluZXNfaAotCi0jaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUu
aD4KLSNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvVGV4
dEJyZWFrSXRlcmF0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBjb25zdCBVQ2hhciBhc2NpaUxpbmVC
cmVha1RhYmxlRmlyc3RDaGFyID0gJyEnOwotc3RhdGljIGNvbnN0IFVDaGFyIGFzY2lpTGluZUJy
ZWFrVGFibGVMYXN0Q2hhciA9IDEyNzsKLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBhc2NpaUxpbmVC
cmVha1RhYmxlQ29sdW1uQ291bnQgPSAoYXNjaWlMaW5lQnJlYWtUYWJsZUxhc3RDaGFyIC0gYXNj
aWlMaW5lQnJlYWtUYWJsZUZpcnN0Q2hhcikgLyA4ICsgMTsKLQotV0VCQ09SRV9FWFBPUlQgZXh0
ZXJuIGNvbnN0IHVuc2lnbmVkIGNoYXIgYXNjaWlMaW5lQnJlYWtUYWJsZVtdW2FzY2lpTGluZUJy
ZWFrVGFibGVDb2x1bW5Db3VudF07Ci0KLWVudW0gY2xhc3MgTkJTUEJlaGF2aW9yIHsKLSAgICBJ
Z25vcmVOQlNQLAotICAgIFRyZWF0TkJTUEFzQnJlYWssCi19OwotCi10ZW1wbGF0ZTxOQlNQQmVo
YXZpb3IgbmJzcEJlaGF2aW9yPgotc3RhdGljIGlubGluZSBib29sIGlzQnJlYWthYmxlU3BhY2Uo
VUNoYXIgY2gpCi17Ci0gICAgc3dpdGNoIChjaCkgewotICAgIGNhc2UgJyAnOgotICAgIGNhc2Ug
J1xuJzoKLSAgICBjYXNlICdcdCc6Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGNhc2Ugbm9C
cmVha1NwYWNlOgotICAgICAgICByZXR1cm4gbmJzcEJlaGF2aW9yID09IE5CU1BCZWhhdmlvcjo6
VHJlYXROQlNQQXNCcmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotfQotCi1pbmxpbmUgYm9vbCBzaG91bGRCcmVha0FmdGVyKFVDaGFyIGxhc3RDaCwgVUNo
YXIgY2gsIFVDaGFyIG5leHRDaCkKLXsKLSAgICAvLyBEb24ndCBhbGxvdyBsaW5lIGJyZWFraW5n
IGJldHdlZW4gJy0nIGFuZCBhIGRpZ2l0IGlmIHRoZSAnLScgbWF5IG1lYW4gYSBtaW51cyBzaWdu
IGluIHRoZSBjb250ZXh0LAotICAgIC8vIHdoaWxlIGFsbG93IGJyZWFraW5nIGluICdBQkNELTEy
MzQnIGFuZCAnMTIzNC01Njc4JyB3aGljaCBtYXkgYmUgaW4gbG9uZyBVUkxzLgotICAgIGlmIChj
aCA9PSAnLScgJiYgaXNBU0NJSURpZ2l0KG5leHRDaCkpCi0gICAgICAgIHJldHVybiBpc0FTQ0lJ
QWxwaGFudW1lcmljKGxhc3RDaCk7Ci0KLSAgICAvLyBJZiBib3RoIGNoIGFuZCBuZXh0Q2ggYXJl
IEFTQ0lJIGNoYXJhY3RlcnMsIHVzZSBhIGxvb2t1cCB0YWJsZSBmb3IgZW5oYW5jZWQgc3BlZWQg
YW5kIGZvciBjb21wYXRpYmlsaXR5Ci0gICAgLy8gd2l0aCBvdGhlciBicm93c2VycyAoc2VlIGNv
bW1lbnRzIGZvciBhc2NpaUxpbmVCcmVha1RhYmxlIGZvciBkZXRhaWxzKS4KLSAgICBpZiAoY2gg
Pj0gYXNjaWlMaW5lQnJlYWtUYWJsZUZpcnN0Q2hhciAmJiBjaCA8PSBhc2NpaUxpbmVCcmVha1Rh
YmxlTGFzdENoYXIgJiYgbmV4dENoID49IGFzY2lpTGluZUJyZWFrVGFibGVGaXJzdENoYXIgJiYg
bmV4dENoIDw9IGFzY2lpTGluZUJyZWFrVGFibGVMYXN0Q2hhcikgewotICAgICAgICBjb25zdCB1
bnNpZ25lZCBjaGFyKiB0YWJsZVJvdyA9IGFzY2lpTGluZUJyZWFrVGFibGVbY2ggLSBhc2NpaUxp
bmVCcmVha1RhYmxlRmlyc3RDaGFyXTsKLSAgICAgICAgaW50IG5leHRDaEluZGV4ID0gbmV4dENo
IC0gYXNjaWlMaW5lQnJlYWtUYWJsZUZpcnN0Q2hhcjsKLSAgICAgICAgcmV0dXJuIHRhYmxlUm93
W25leHRDaEluZGV4IC8gOF0gJiAoMSA8PCAobmV4dENoSW5kZXggJSA4KSk7Ci0gICAgfQotICAg
IC8vIE90aGVyd2lzZSBkZWZlciB0byB0aGUgVW5pY29kZSBhbGdvcml0aG0gYnkgcmV0dXJuaW5n
IGZhbHNlLgotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdGVtcGxhdGU8TkJTUEJlaGF2aW9yIG5i
c3BCZWhhdmlvcj4KLWlubGluZSBib29sIG5lZWRzTGluZUJyZWFrSXRlcmF0b3IoVUNoYXIgY2gp
Ci17Ci0gICAgaWYgKG5ic3BCZWhhdmlvciA9PSBOQlNQQmVoYXZpb3I6OlRyZWF0TkJTUEFzQnJl
YWspCi0gICAgICAgIHJldHVybiBjaCA+IGFzY2lpTGluZUJyZWFrVGFibGVMYXN0Q2hhcjsKLSAg
ICByZXR1cm4gY2ggPiBhc2NpaUxpbmVCcmVha1RhYmxlTGFzdENoYXIgJiYgY2ggIT0gbm9CcmVh
a1NwYWNlOwotfQotCi0vLyBXaGVuIGluIG5vbi1sb29zZSBtb2RlLCB3ZSBjYW4gdXNlIHRoZSBB
U0NJSSBzaG9ydGN1dCB0YWJsZS4KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIE5C
U1BCZWhhdmlvciBuYnNwQmVoYXZpb3I+Ci1pbmxpbmUgaW50IG5leHRCcmVha2FibGVQb3NpdGlv
bk5vbkxvb3NlbHkoTGF6eUxpbmVCcmVha0l0ZXJhdG9yJiBsYXp5QnJlYWtJdGVyYXRvciwgY29u
c3QgQ2hhcmFjdGVyVHlwZSogc3RyLCB1bnNpZ25lZCBsZW5ndGgsIGludCBwb3MpCi17Ci0gICAg
aW50IGxlbiA9IHN0YXRpY19jYXN0PGludD4obGVuZ3RoKTsKLSAgICBpbnQgbmV4dEJyZWFrID0g
LTE7Ci0KLSAgICBDaGFyYWN0ZXJUeXBlIGxhc3RMYXN0Q2ggPSBwb3MgPiAxID8gc3RyW3BvcyAt
IDJdIDogc3RhdGljX2Nhc3Q8Q2hhcmFjdGVyVHlwZT4obGF6eUJyZWFrSXRlcmF0b3Iuc2Vjb25k
VG9MYXN0Q2hhcmFjdGVyKCkpOwotICAgIENoYXJhY3RlclR5cGUgbGFzdENoID0gcG9zID4gMCA/
IHN0cltwb3MgLSAxXSA6IHN0YXRpY19jYXN0PENoYXJhY3RlclR5cGU+KGxhenlCcmVha0l0ZXJh
dG9yLmxhc3RDaGFyYWN0ZXIoKSk7Ci0gICAgdW5zaWduZWQgcHJpb3JDb250ZXh0TGVuZ3RoID0g
bGF6eUJyZWFrSXRlcmF0b3IucHJpb3JDb250ZXh0TGVuZ3RoKCk7Ci0gICAgZm9yIChpbnQgaSA9
IHBvczsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICAgIENoYXJhY3RlclR5cGUgY2ggPSBzdHJbaV07
Ci0KLSAgICAgICAgLy8gTm9uLWxvb3NlIG1vZGUsIHNvIHVzZSBBU0NJSSBzaG9ydGN1dCAoc2hv
dWxkQnJlYWtBZnRlcikgaWYgbm90IGJyZWFrYWJsZSBzcGFjZS4KLSAgICAgICAgaWYgKGlzQnJl
YWthYmxlU3BhY2U8bmJzcEJlaGF2aW9yPihjaCkgfHwgc2hvdWxkQnJlYWtBZnRlcihsYXN0TGFz
dENoLCBsYXN0Q2gsIGNoKSkKLSAgICAgICAgICAgIHJldHVybiBpOwotCi0gICAgICAgIC8vIE5v
bi1sb29zZSBtb2RlLCBzbyBjb25kaXRpb25hbGx5IHVzZSBicmVhayBpdGVyYXRvci4KLSAgICAg
ICAgaWYgKG5lZWRzTGluZUJyZWFrSXRlcmF0b3I8bmJzcEJlaGF2aW9yPihjaCkgfHwgbmVlZHNM
aW5lQnJlYWtJdGVyYXRvcjxuYnNwQmVoYXZpb3I+KGxhc3RDaCkpIHsKLSAgICAgICAgICAgIGlm
IChuZXh0QnJlYWsgPCBpKSB7Ci0gICAgICAgICAgICAgICAgLy8gRG9uJ3QgYnJlYWsgaWYgcG9z
aXRpb25lZCBhdCBzdGFydCBvZiBwcmltYXJ5IGNvbnRleHQgYW5kIHRoZXJlIGlzIG5vIHByaW9y
IGNvbnRleHQuCi0gICAgICAgICAgICAgICAgaWYgKGkgfHwgcHJpb3JDb250ZXh0TGVuZ3RoKSB7
Ci0gICAgICAgICAgICAgICAgICAgIFRleHRCcmVha0l0ZXJhdG9yKiBicmVha0l0ZXJhdG9yID0g
bGF6eUJyZWFrSXRlcmF0b3IuZ2V0KHByaW9yQ29udGV4dExlbmd0aCk7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmIChicmVha0l0ZXJhdG9yKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZXh0
QnJlYWsgPSB0ZXh0QnJlYWtGb2xsb3dpbmcoYnJlYWtJdGVyYXRvciwgaSAtIDEgKyBwcmlvckNv
bnRleHRMZW5ndGgpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRCcmVhayA+PSAw
KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRCcmVhayAtPSBwcmlvckNvbnRleHRM
ZW5ndGg7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBpZiAoaSA9PSBuZXh0QnJlYWsgJiYgIWlzQnJlYWthYmxlU3Bh
Y2U8bmJzcEJlaGF2aW9yPihsYXN0Q2gpKQotICAgICAgICAgICAgICAgIHJldHVybiBpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgbGFzdExhc3RDaCA9IGxhc3RDaDsKLSAgICAgICAgbGFzdENoID0g
Y2g7Ci0gICAgfQotCi0gICAgcmV0dXJuIGxlbjsKLX0KLQotLy8gV2hlbiBpbiBsb29zZSBtb2Rl
LCB3ZSBjYW4ndCB1c2UgdGhlIEFTQ0lJIHNob3J0Y3V0IHRhYmxlIHNpbmNlIGxvb3NlIG1vZGUg
YWxsb3dzICIkMTAwIiB0byBicmVhayBhZnRlciAnJCcgaW4gY29udGVudCBtYXJrZWQgYXMgQ0pL
LgotLy8gTi5CLiBJdCBzaG91bGQgYmUgcG9zc2libGUgdG8gY29tYmluZSB0aGUgZm9sbG93aW5n
IHdpdGggdGhlIG5vbi1sb29zZSB2ZXJzaW9uIGFib3ZlIGJ5IGFkZGluZyBhIExvb3NlQmVoYXZp
b3IgdGVtcGxhdGUgcGFyYW1ldGVyOwotLy8gaG93ZXZlciwgd2hlbiBkb2luZyB0aGlzLCBhIDEw
JSBwZXJmb3JtYW5jZSByZWdyZXNzaW9uIGFwcGVhcmVkIG9uIGNocm9taXVtLXdpbiAoaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5MjM1I2MxMTIpLgotdGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwgTkJTUEJlaGF2aW9yIG5ic3BCZWhhdmlvcj4KLXN0YXRp
YyBpbmxpbmUgaW50IG5leHRCcmVha2FibGVQb3NpdGlvbkxvb3NlbHkoTGF6eUxpbmVCcmVha0l0
ZXJhdG9yJiBsYXp5QnJlYWtJdGVyYXRvciwgY29uc3QgQ2hhcmFjdGVyVHlwZSogc3RyLCB1bnNp
Z25lZCBsZW5ndGgsIGludCBwb3MpCi17Ci0gICAgaW50IGxlbiA9IHN0YXRpY19jYXN0PGludD4o
bGVuZ3RoKTsKLSAgICBpbnQgbmV4dEJyZWFrID0gLTE7Ci0KLSAgICBDaGFyYWN0ZXJUeXBlIGxh
c3RDaCA9IHBvcyA+IDAgPyBzdHJbcG9zIC0gMV0gOiBzdGF0aWNfY2FzdDxDaGFyYWN0ZXJUeXBl
PihsYXp5QnJlYWtJdGVyYXRvci5sYXN0Q2hhcmFjdGVyKCkpOwotICAgIHVuc2lnbmVkIHByaW9y
Q29udGV4dExlbmd0aCA9IGxhenlCcmVha0l0ZXJhdG9yLnByaW9yQ29udGV4dExlbmd0aCgpOwot
ICAgIGZvciAoaW50IGkgPSBwb3M7IGkgPCBsZW47IGkrKykgewotICAgICAgICBDaGFyYWN0ZXJU
eXBlIGNoID0gc3RyW2ldOwotCi0gICAgICAgIC8vIEFsd2F5cyBsb29zZSBtb2RlLCBzbyBkb24n
dCB1c2UgQVNDSUkgc2hvcnRjdXQgKHNob3VsZEJyZWFrQWZ0ZXIpLgotICAgICAgICBpZiAoaXNC
cmVha2FibGVTcGFjZTxuYnNwQmVoYXZpb3I+KGNoKSkKLSAgICAgICAgICAgIHJldHVybiBpOwot
Ci0gICAgICAgIC8vIEFsd2F5cyB1c2UgbGluZSBicmVhayBpdGVyYXRvciBpbiBsb29zZSBtb2Rl
LgotICAgICAgICBpZiAobmV4dEJyZWFrIDwgaSkgewotICAgICAgICAgICAgLy8gRG9uJ3QgYnJl
YWsgaWYgcG9zaXRpb25lZCBhdCBzdGFydCBvZiBwcmltYXJ5IGNvbnRleHQgYW5kIHRoZXJlIGlz
IG5vIHByaW9yIGNvbnRleHQuCi0gICAgICAgICAgICBpZiAoaSB8fCBwcmlvckNvbnRleHRMZW5n
dGgpIHsKLSAgICAgICAgICAgICAgICBUZXh0QnJlYWtJdGVyYXRvciogYnJlYWtJdGVyYXRvciA9
IGxhenlCcmVha0l0ZXJhdG9yLmdldChwcmlvckNvbnRleHRMZW5ndGgpOwotICAgICAgICAgICAg
ICAgIGlmIChicmVha0l0ZXJhdG9yKSB7Ci0gICAgICAgICAgICAgICAgICAgIG5leHRCcmVhayA9
IHRleHRCcmVha0ZvbGxvd2luZyhicmVha0l0ZXJhdG9yLCBpIC0gMSArIHByaW9yQ29udGV4dExl
bmd0aCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChuZXh0QnJlYWsgPj0gMCkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG5leHRCcmVhayAtPSBwcmlvckNvbnRleHRMZW5ndGg7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGlmIChpID09IG5l
eHRCcmVhayAmJiAhaXNCcmVha2FibGVTcGFjZTxuYnNwQmVoYXZpb3I+KGxhc3RDaCkpCi0gICAg
ICAgICAgICByZXR1cm4gaTsKLQotICAgICAgICBsYXN0Q2ggPSBjaDsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gbGVuOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCBOQlNQQmVo
YXZpb3IgbmJzcEJlaGF2aW9yPgotaW5saW5lIHVuc2lnbmVkIG5leHRCcmVha2FibGVQb3NpdGlv
bktlZXBpbmdBbGxXb3Jkcyhjb25zdCBDaGFyYWN0ZXJUeXBlKiBzdHJpbmcsIHVuc2lnbmVkIGxl
bmd0aCwgdW5zaWduZWQgc3RhcnRQb3NpdGlvbikKLXsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBz
dGFydFBvc2l0aW9uOyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICAgICAgaWYgKGlzQnJlYWthYmxl
U3BhY2U8bmJzcEJlaGF2aW9yPihzdHJpbmdbaV0pKQotICAgICAgICAgICAgcmV0dXJuIGk7Ci0g
ICAgfQotICAgIHJldHVybiBsZW5ndGg7Ci19Ci0KLWlubGluZSB1bnNpZ25lZCBuZXh0QnJlYWth
YmxlUG9zaXRpb25LZWVwaW5nQWxsV29yZHMoTGF6eUxpbmVCcmVha0l0ZXJhdG9yJiBsYXp5QnJl
YWtJdGVyYXRvciwgaW50IHN0YXJ0UG9zaXRpb24pCi17Ci0gICAgU3RyaW5nIHN0cmluZyA9IGxh
enlCcmVha0l0ZXJhdG9yLnN0cmluZygpOwotICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCi0gICAg
ICAgIHJldHVybiBuZXh0QnJlYWthYmxlUG9zaXRpb25LZWVwaW5nQWxsV29yZHM8TENoYXIsIE5C
U1BCZWhhdmlvcjo6VHJlYXROQlNQQXNCcmVhaz4oc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmlu
Zy5sZW5ndGgoKSwgc3RhcnRQb3NpdGlvbik7Ci0gICAgcmV0dXJuIG5leHRCcmVha2FibGVQb3Np
dGlvbktlZXBpbmdBbGxXb3JkczxVQ2hhciwgTkJTUEJlaGF2aW9yOjpUcmVhdE5CU1BBc0JyZWFr
PihzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0cmluZy5sZW5ndGgoKSwgc3RhcnRQb3NpdGlvbik7
Ci19Ci0KLWlubGluZSB1bnNpZ25lZCBuZXh0QnJlYWthYmxlUG9zaXRpb25LZWVwaW5nQWxsV29y
ZHNJZ25vcmluZ05CU1AoTGF6eUxpbmVCcmVha0l0ZXJhdG9yJiBpdGVyYXRvciwgaW50IHN0YXJ0
UG9zaXRpb24pCi17Ci0gICAgU3RyaW5nIHN0cmluZyA9IGl0ZXJhdG9yLnN0cmluZygpOwotICAg
IGlmIChzdHJpbmcuaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBuZXh0QnJlYWthYmxlUG9zaXRp
b25LZWVwaW5nQWxsV29yZHM8TENoYXIsIE5CU1BCZWhhdmlvcjo6SWdub3JlTkJTUD4oc3RyaW5n
LmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSwgc3RhcnRQb3NpdGlvbik7Ci0gICAgcmV0
dXJuIG5leHRCcmVha2FibGVQb3NpdGlvbktlZXBpbmdBbGxXb3JkczxVQ2hhciwgTkJTUEJlaGF2
aW9yOjpJZ25vcmVOQlNQPihzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0cmluZy5sZW5ndGgoKSwg
c3RhcnRQb3NpdGlvbik7Ci19Ci0KLWlubGluZSBpbnQgbmV4dEJyZWFrYWJsZVBvc2l0aW9uKExh
enlMaW5lQnJlYWtJdGVyYXRvciYgaXRlcmF0b3IsIGludCBwb3MpCi17Ci0gICAgU3RyaW5nIHN0
cmluZyA9IGl0ZXJhdG9yLnN0cmluZygpOwotICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCi0gICAg
ICAgIHJldHVybiBuZXh0QnJlYWthYmxlUG9zaXRpb25Ob25Mb29zZWx5PExDaGFyLCBOQlNQQmVo
YXZpb3I6OlRyZWF0TkJTUEFzQnJlYWs+KGl0ZXJhdG9yLCBzdHJpbmcuY2hhcmFjdGVyczgoKSwg
c3RyaW5nLmxlbmd0aCgpLCBwb3MpOwotICAgIHJldHVybiBuZXh0QnJlYWthYmxlUG9zaXRpb25O
b25Mb29zZWx5PFVDaGFyLCBOQlNQQmVoYXZpb3I6OlRyZWF0TkJTUEFzQnJlYWs+KGl0ZXJhdG9y
LCBzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0cmluZy5sZW5ndGgoKSwgcG9zKTsKLX0KLQotaW5s
aW5lIGludCBuZXh0QnJlYWthYmxlUG9zaXRpb25JZ25vcmluZ05CU1AoTGF6eUxpbmVCcmVha0l0
ZXJhdG9yJiBsYXp5QnJlYWtJdGVyYXRvciwgaW50IHBvcykKLXsKLSAgICBTdHJpbmcgc3RyaW5n
ID0gbGF6eUJyZWFrSXRlcmF0b3Iuc3RyaW5nKCk7Ci0gICAgaWYgKHN0cmluZy5pczhCaXQoKSkK
LSAgICAgICAgcmV0dXJuIG5leHRCcmVha2FibGVQb3NpdGlvbk5vbkxvb3NlbHk8TENoYXIsIE5C
U1BCZWhhdmlvcjo6SWdub3JlTkJTUD4obGF6eUJyZWFrSXRlcmF0b3IsIHN0cmluZy5jaGFyYWN0
ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCksIHBvcyk7Ci0gICAgcmV0dXJuIG5leHRCcmVha2FibGVQ
b3NpdGlvbk5vbkxvb3NlbHk8VUNoYXIsIE5CU1BCZWhhdmlvcjo6SWdub3JlTkJTUD4obGF6eUJy
ZWFrSXRlcmF0b3IsIHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nLmxlbmd0aCgpLCBwb3Mp
OwotfQotCi1pbmxpbmUgaW50IG5leHRCcmVha2FibGVQb3NpdGlvbkxvb3NlKExhenlMaW5lQnJl
YWtJdGVyYXRvciYgbGF6eUJyZWFrSXRlcmF0b3IsIGludCBwb3MpCi17Ci0gICAgU3RyaW5nIHN0
cmluZyA9IGxhenlCcmVha0l0ZXJhdG9yLnN0cmluZygpOwotICAgIGlmIChzdHJpbmcuaXM4Qml0
KCkpCi0gICAgICAgIHJldHVybiBuZXh0QnJlYWthYmxlUG9zaXRpb25Mb29zZWx5PExDaGFyLCBO
QlNQQmVoYXZpb3I6OlRyZWF0TkJTUEFzQnJlYWs+KGxhenlCcmVha0l0ZXJhdG9yLCBzdHJpbmcu
Y2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpLCBwb3MpOwotICAgIHJldHVybiBuZXh0QnJl
YWthYmxlUG9zaXRpb25Mb29zZWx5PFVDaGFyLCBOQlNQQmVoYXZpb3I6OlRyZWF0TkJTUEFzQnJl
YWs+KGxhenlCcmVha0l0ZXJhdG9yLCBzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0cmluZy5sZW5n
dGgoKSwgcG9zKTsKLX0KLQotaW5saW5lIGludCBuZXh0QnJlYWthYmxlUG9zaXRpb25JZ25vcmlu
Z05CU1BMb29zZShMYXp5TGluZUJyZWFrSXRlcmF0b3ImIGxhenlCcmVha0l0ZXJhdG9yLCBpbnQg
cG9zKQotewotICAgIFN0cmluZyBzdHJpbmcgPSBsYXp5QnJlYWtJdGVyYXRvci5zdHJpbmcoKTsK
LSAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKQotICAgICAgICByZXR1cm4gbmV4dEJyZWFrYWJsZVBv
c2l0aW9uTG9vc2VseTxMQ2hhciwgTkJTUEJlaGF2aW9yOjpJZ25vcmVOQlNQPihsYXp5QnJlYWtJ
dGVyYXRvciwgc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSwgcG9zKTsKLSAg
ICByZXR1cm4gbmV4dEJyZWFrYWJsZVBvc2l0aW9uTG9vc2VseTxVQ2hhciwgTkJTUEJlaGF2aW9y
OjpJZ25vcmVOQlNQPihsYXp5QnJlYWtJdGVyYXRvciwgc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBz
dHJpbmcubGVuZ3RoKCksIHBvcyk7Ci19Ci0KLWlubGluZSBib29sIGlzQnJlYWthYmxlKExhenlM
aW5lQnJlYWtJdGVyYXRvciYgbGF6eUJyZWFrSXRlcmF0b3IsIGludCBwb3MsIGludCYgbmV4dEJy
ZWFrYWJsZSwgYm9vbCBicmVha05CU1AsIGJvb2wgaXNMb29zZU1vZGUsIGJvb2wga2VlcEFsbFdv
cmRzKQotewotICAgIGlmIChwb3MgPD0gbmV4dEJyZWFrYWJsZSkKLSAgICAgICAgcmV0dXJuIHBv
cyA9PSBuZXh0QnJlYWthYmxlOwotCi0gICAgaWYgKGtlZXBBbGxXb3JkcykgewotICAgICAgICBp
ZiAoYnJlYWtOQlNQKQotICAgICAgICAgICAgbmV4dEJyZWFrYWJsZSA9IHN0YXRpY19jYXN0PGlu
dD4obmV4dEJyZWFrYWJsZVBvc2l0aW9uS2VlcGluZ0FsbFdvcmRzKGxhenlCcmVha0l0ZXJhdG9y
LCBwb3MpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbmV4dEJyZWFrYWJsZSA9IHN0YXRp
Y19jYXN0PGludD4obmV4dEJyZWFrYWJsZVBvc2l0aW9uS2VlcGluZ0FsbFdvcmRzSWdub3JpbmdO
QlNQKGxhenlCcmVha0l0ZXJhdG9yLCBwb3MpKTsKLSAgICB9IGVsc2UgaWYgKGlzTG9vc2VNb2Rl
KSB7Ci0gICAgICAgIGlmIChicmVha05CU1ApCi0gICAgICAgICAgICBuZXh0QnJlYWthYmxlID0g
bmV4dEJyZWFrYWJsZVBvc2l0aW9uTG9vc2UobGF6eUJyZWFrSXRlcmF0b3IsIHBvcyk7Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIG5leHRCcmVha2FibGUgPSBuZXh0QnJlYWthYmxlUG9zaXRp
b25JZ25vcmluZ05CU1BMb29zZShsYXp5QnJlYWtJdGVyYXRvciwgcG9zKTsKLSAgICB9IGVsc2Ug
ewotICAgICAgICBpZiAoYnJlYWtOQlNQKQotICAgICAgICAgICAgbmV4dEJyZWFrYWJsZSA9IG5l
eHRCcmVha2FibGVQb3NpdGlvbihsYXp5QnJlYWtJdGVyYXRvciwgcG9zKTsKLSAgICAgICAgZWxz
ZQotICAgICAgICAgICAgbmV4dEJyZWFrYWJsZSA9IG5leHRCcmVha2FibGVQb3NpdGlvbklnbm9y
aW5nTkJTUChsYXp5QnJlYWtJdGVyYXRvciwgcG9zKTsKLSAgICB9Ci0gICAgcmV0dXJuIHBvcyA9
PSBuZXh0QnJlYWthYmxlOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBicmVha19saW5lc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGlu
ZS9CcmVha2luZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0JyZWFr
aW5nQ29udGV4dC5oCmluZGV4IDVhN2RkNzVjMDY0NTQ3YjRlNzgyZjczMzQ2ZDliMDdmYzc4YWQ2
Y2QuLjBjNGE2OWY2ZjA1Y2U0Njc2ZTBkYmVmMjM5YTQ4NDRlMTJhOTE4MGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0JyZWFraW5nQ29udGV4dC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0JyZWFraW5nQ29udGV4dC5oCkBAIC0yMiw5ICsy
Miw5IEBACiAgKgogICovCiAKLSNpZm5kZWYgQnJlYWtpbmdDb250ZXh0X2gKLSNkZWZpbmUgQnJl
YWtpbmdDb250ZXh0X2gKKyNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQnJlYWtMaW5lcy5oIgog
I2luY2x1ZGUgIkh5cGhlbmF0aW9uLmgiCiAjaW5jbHVkZSAiTGluZUJyZWFrZXIuaCIKICNpbmNs
dWRlICJMaW5lSW5mby5oIgpAQCAtMzgsNyArMzgsNiBAQAogI2luY2x1ZGUgIlJlbmRlclJ1YnlS
dW4uaCIKICNpbmNsdWRlICJSZW5kZXJTVkdJbmxpbmVUZXh0LmgiCiAjaW5jbHVkZSAiVHJhaWxp
bmdPYmplY3RzLmgiCi0jaW5jbHVkZSAiYnJlYWtfbGluZXMuaCIKICNpbmNsdWRlIDx3dGYvT3B0
aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CiAjaW5jbHVkZSA8d3Rm
L3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KQEAgLTE2Nyw3ICsxNjYsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIG1faGFuZ3NBdEVuZCA9IGZhbHNlOwogICAgIH0KIAotICAgIHZvaWQgY29tbWl0TGlu
ZUJyZWFrQXRDdXJyZW50V2lkdGgoUmVuZGVyT2JqZWN0JiBvYmplY3QsIHVuc2lnbmVkIG9mZnNl
dCA9IDAsIGludCBuZXh0QnJlYWsgPSAtMSkKKyAgICB2b2lkIGNvbW1pdExpbmVCcmVha0F0Q3Vy
cmVudFdpZHRoKFJlbmRlck9iamVjdCYgb2JqZWN0LCB1bnNpZ25lZCBvZmZzZXQgPSAwLCBPcHRp
b25hbDx1bnNpZ25lZD4gbmV4dEJyZWFrID0gTnVsbG9wdCkKICAgICB7CiAgICAgICAgIG1fd2lk
dGguY29tbWl0KCk7CiAgICAgICAgIG1fbGluZUJyZWFrSGlzdG9yeS5tb3ZlVG8oJm9iamVjdCwg
b2Zmc2V0LCBuZXh0QnJlYWspOwpAQCAtMjA0LDE0ICsyMDMsMTQgQEAgcHJpdmF0ZToKIAogICAg
ICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gdGhpcy0+YXQoMCku
cmVuZGVyZXIoKTsgfQogICAgICAgICB1bnNpZ25lZCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiB0
aGlzLT5hdCgwKS5vZmZzZXQoKTsgfQotICAgICAgICBpbnQgbmV4dEJyZWFrYWJsZVBvc2l0aW9u
KCkgY29uc3QgeyByZXR1cm4gdGhpcy0+YXQoMCkubmV4dEJyZWFrYWJsZVBvc2l0aW9uKCk7IH0K
KyAgICAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IG5leHRCcmVha2FibGVQb3NpdGlvbigpIGNvbnN0
IHsgcmV0dXJuIHRoaXMtPmF0KDApLm5leHRCcmVha2FibGVQb3NpdGlvbigpOyB9CiAgICAgICAg
IGJvb2wgYXRUZXh0UGFyYWdyYXBoU2VwYXJhdG9yKCkgY29uc3QgeyByZXR1cm4gdGhpcy0+YXQo
MCkuYXRUZXh0UGFyYWdyYXBoU2VwYXJhdG9yKCk7IH0KICAgICAgICAgVUNoYXIgcHJldmlvdXNJ
blNhbWVOb2RlKCkgY29uc3QgeyByZXR1cm4gdGhpcy0+YXQoMCkucHJldmlvdXNJblNhbWVOb2Rl
KCk7IH0KICAgICAgICAgY29uc3QgSW5saW5lSXRlcmF0b3ImIGdldChzaXplX3QgaSkgY29uc3Qg
eyByZXR1cm4gdGhpcy0+YXQoaSk7IH07CiAgICAgICAgIGNvbnN0IElubGluZUl0ZXJhdG9yJiBj
dXJyZW50KCkgY29uc3QgeyByZXR1cm4gZ2V0KDApOyB9CiAgICAgICAgIHNpemVfdCBoaXN0b3J5
TGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gdGhpcy0+c2l6ZSgpOyB9CiAKLSAgICAgICAgdm9pZCBt
b3ZlVG8oUmVuZGVyT2JqZWN0KiBvYmplY3QsIHVuc2lnbmVkIG9mZnNldCwgaW50IG5leHRCcmVh
ayA9IC0xKQorICAgICAgICB2b2lkIG1vdmVUbyhSZW5kZXJPYmplY3QqIG9iamVjdCwgdW5zaWdu
ZWQgb2Zmc2V0LCBPcHRpb25hbDx1bnNpZ25lZD4gbmV4dEJyZWFrID0gTnVsbG9wdCkKICAgICAg
ICAgewogICAgICAgICAgICAgcHVzaChbJl0oSW5saW5lSXRlcmF0b3ImIG1vZGlmeU1lKSB7CiAg
ICAgICAgICAgICAgICAgbW9kaWZ5TWUubW92ZVRvKG9iamVjdCwgb2Zmc2V0LCBuZXh0QnJlYWsp
OwpAQCAtNjUwLDcgKzY0OSw3IEBAIGlubGluZSB2b2lkIGVuc3VyZUNoYXJhY3RlckdldHNMaW5l
Qm94KExpbmVXaGl0ZXNwYWNlQ29sbGFwc2luZ1N0YXRlJiBsaW5lV2hpdGVzCiAgICAgbGluZVdo
aXRlc3BhY2VDb2xsYXBzaW5nU3RhdGUuc3RvcElnbm9yaW5nU3BhY2VzKElubGluZUl0ZXJhdG9y
KDAsIHRleHRQYXJhZ3JhcGhTZXBhcmF0b3IucmVuZGVyZXIoKSwgdGV4dFBhcmFncmFwaFNlcGFy
YXRvci5vZmZzZXQoKSkpOwogfQogCi1pbmxpbmUgdm9pZCB0cnlIeXBoZW5hdGluZyhSZW5kZXJU
ZXh0JiB0ZXh0LCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgQXRvbWljU3RyaW5nJiBs
b2NhbGVJZGVudGlmaWVyLCB1bnNpZ25lZCBjb25zZWN1dGl2ZUh5cGhlbmF0ZWRMaW5lcywgaW50
IGNvbnNlY3V0aXZlSHlwaGVuYXRlZExpbmVzTGltaXQsIGludCBtaW5pbXVtUHJlZml4TGltaXQs
IGludCBtaW5pbXVtU3VmZml4TGltaXQsIHVuc2lnbmVkIGxhc3RTcGFjZSwgdW5zaWduZWQgcG9z
LCBmbG9hdCB4UG9zLCBpbnQgYXZhaWxhYmxlV2lkdGgsIGJvb2wgaXNGaXhlZFBpdGNoLCBib29s
IGNvbGxhcHNlV2hpdGVTcGFjZSwgaW50IGxhc3RTcGFjZVdvcmRTcGFjaW5nLCBJbmxpbmVJdGVy
YXRvciYgbGluZUJyZWFrLCBpbnQgbmV4dEJyZWFrYWJsZSwgYm9vbCYgaHlwaGVuYXRlZCkKK2lu
bGluZSB2b2lkIHRyeUh5cGhlbmF0aW5nKFJlbmRlclRleHQmIHRleHQsIGNvbnN0IEZvbnRDYXNj
YWRlJiBmb250LCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIsIHVuc2lnbmVk
IGNvbnNlY3V0aXZlSHlwaGVuYXRlZExpbmVzLCBpbnQgY29uc2VjdXRpdmVIeXBoZW5hdGVkTGlu
ZXNMaW1pdCwgaW50IG1pbmltdW1QcmVmaXhMaW1pdCwgaW50IG1pbmltdW1TdWZmaXhMaW1pdCwg
dW5zaWduZWQgbGFzdFNwYWNlLCB1bnNpZ25lZCBwb3MsIGZsb2F0IHhQb3MsIGludCBhdmFpbGFi
bGVXaWR0aCwgYm9vbCBpc0ZpeGVkUGl0Y2gsIGJvb2wgY29sbGFwc2VXaGl0ZVNwYWNlLCBpbnQg
bGFzdFNwYWNlV29yZFNwYWNpbmcsIElubGluZUl0ZXJhdG9yJiBsaW5lQnJlYWssIE9wdGlvbmFs
PHVuc2lnbmVkPiBuZXh0QnJlYWthYmxlLCBib29sJiBoeXBoZW5hdGVkKQogewogICAgIC8vIE1h
cCAnaHlwaGVuYXRlLWxpbWl0LXtiZWZvcmUsYWZ0ZXJ9OiBhdXRvOycgdG8gMi4KICAgICB1bnNp
Z25lZCBtaW5pbXVtUHJlZml4TGVuZ3RoOwpAQCAtODU3LDcgKzg1Niw3IEBAIGlubGluZSBib29s
IEJyZWFraW5nQ29udGV4dDo6aGFuZGxlVGV4dChXb3JkTWVhc3VyZW1lbnRzJiB3b3JkTWVhc3Vy
ZW1lbnRzLCBib29sCiAgICAgICAgICAgICBtaWRXb3JkQnJlYWsgPSBtX3dpZHRoLmNvbW1pdHRl
ZFdpZHRoKCkgKyB3cmFwVyArIGNoYXJXaWR0aCA+IG1fd2lkdGguYXZhaWxhYmxlV2lkdGgoKTsK
ICAgICAgICAgfQogCi0gICAgICAgIGludCBuZXh0QnJlYWthYmxlUG9zaXRpb24gPSBtX2N1cnJl
bnQubmV4dEJyZWFrYWJsZVBvc2l0aW9uKCk7CisgICAgICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBu
ZXh0QnJlYWthYmxlUG9zaXRpb24gPSBtX2N1cnJlbnQubmV4dEJyZWFrYWJsZVBvc2l0aW9uKCk7
CiAgICAgICAgIGJvb2wgYmV0d2VlbldvcmRzID0gYyA9PSAnXG4nIHx8IChtX2N1cnJXUyAhPSBQ
UkUgJiYgIW1fYXRTdGFydCAmJiBpc0JyZWFrYWJsZShtX3JlbmRlclRleHRJbmZvLmxpbmVCcmVh
a0l0ZXJhdG9yLCBtX2N1cnJlbnQub2Zmc2V0KCksIG5leHRCcmVha2FibGVQb3NpdGlvbiwgYnJl
YWtOQlNQLCBpc0xvb3NlQ0pLTW9kZSwga2VlcEFsbFdvcmRzKQogICAgICAgICAgICAgJiYgKHN0
eWxlLmh5cGhlbnMoKSAhPSBIeXBoZW5zTm9uZSB8fCAobV9jdXJyZW50LnByZXZpb3VzSW5TYW1l
Tm9kZSgpICE9IHNvZnRIeXBoZW4pKSk7CiAgICAgICAgIG1fY3VycmVudC5zZXROZXh0QnJlYWth
YmxlUG9zaXRpb24obmV4dEJyZWFrYWJsZVBvc2l0aW9uKTsKQEAgLTk1OSwxNCArOTU4LDE0IEBA
IGlubGluZSBib29sIEJyZWFraW5nQ29udGV4dDo6aGFuZGxlVGV4dChXb3JkTWVhc3VyZW1lbnRz
JiB3b3JkTWVhc3VyZW1lbnRzLCBib29sCiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGxhc3QgYnJlYWtpbmcgcG9zaXRpb24gaXMgYSBz
b2Z0LWh5cGhlbi4KICAgICAgICAgICAgICAgICAgICAgaWYgKCFoeXBoZW5hdGVkICYmIHN0eWxl
Lmh5cGhlbnMoKSAhPSBIeXBoZW5zTm9uZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgT3B0
aW9uYWw8aW50PiBsYXN0QnJlYWtpbmdQb3NpdG9uOworICAgICAgICAgICAgICAgICAgICAgICAg
T3B0aW9uYWw8dW5zaWduZWQ+IGxhc3RCcmVha2luZ1Bvc2l0b247CiAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyQXRCcmVha2luZ1Bvc2l0aW9uID0g
bnVsbHB0cjsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX2xpbmVCcmVha0hpc3Rvcnku
b2Zmc2V0KCkgfHwgbV9saW5lQnJlYWtIaXN0b3J5Lm5leHRCcmVha2FibGVQb3NpdGlvbigpID4g
LTEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX2xpbmVCcmVha0hpc3Rvcnkub2Zm
c2V0KCkgfHwgbV9saW5lQnJlYWtIaXN0b3J5Lm5leHRCcmVha2FibGVQb3NpdGlvbigpKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdEJyZWFraW5nUG9zaXRvbiA9IG1fbGluZUJy
ZWFrSGlzdG9yeS5vZmZzZXQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJl
ckF0QnJlYWtpbmdQb3NpdGlvbiA9IG1fbGluZUJyZWFrSGlzdG9yeS5yZW5kZXJlcigpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtX2N1cnJlbnQubmV4dEJyZWFrYWJsZVBv
c2l0aW9uKCkgPiAtMSAmJiAodW5zaWduZWQpbV9jdXJyZW50Lm5leHRCcmVha2FibGVQb3NpdGlv
bigpIDw9IG1fY3VycmVudC5vZmZzZXQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgfSBl
bHNlIGlmIChtX2N1cnJlbnQubmV4dEJyZWFrYWJsZVBvc2l0aW9uKCkgJiYgbV9jdXJyZW50Lm5l
eHRCcmVha2FibGVQb3NpdGlvbigpLnZhbHVlKCkgPD0gbV9jdXJyZW50Lm9mZnNldCgpKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgbWlnaHQganVzdCBiZSByaWdodCBhZnRl
ciB0aGUgc29mdC1oeXBoZW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0QnJlYWtp
bmdQb3NpdG9uID0gbV9jdXJyZW50Lm5leHRCcmVha2FibGVQb3NpdGlvbigpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxhc3RCcmVha2luZ1Bvc2l0b24gPSBtX2N1cnJlbnQubmV4dEJy
ZWFrYWJsZVBvc2l0aW9uKCkudmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZW5kZXJlckF0QnJlYWtpbmdQb3NpdGlvbiA9IG1fY3VycmVudC5yZW5kZXJlcigpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxhc3RCcmVh
a2luZ1Bvc2l0b24pIHsKQEAgLTk3Nyw3ICs5NzYsNyBAQCBpbmxpbmUgYm9vbCBCcmVha2luZ0Nv
bnRleHQ6OmhhbmRsZVRleHQoV29yZE1lYXN1cmVtZW50cyYgd29yZE1lYXN1cmVtZW50cywgYm9v
bAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJCZWZvcmVCcmVha2lu
Z1Bvc2l0aW9uID0gbGFzdENoYXJhY3RlckZyb21QcmV2aW91c1JlbmRlclRleHQ7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaXM8UmVuZGVyVGV4dD4ocmVuZGVyZXJBdEJy
ZWFraW5nUG9zaXRpb24pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGF1dG8mIHRleHRSZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlclRleHQ+KCpyZW5kZXJlckF0QnJl
YWtpbmdQb3NpdGlvbik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVCh0
ZXh0UmVuZGVyZXIudGV4dExlbmd0aCgpID4gKHVuc2lnbmVkKShsYXN0QnJlYWtpbmdQb3NpdG9u
LnZhbHVlKCkgLSAxKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChs
YXN0QnJlYWtpbmdQb3NpdG9uLnZhbHVlKCkgPj0gMSAmJiB0ZXh0UmVuZGVyZXIudGV4dExlbmd0
aCgpID4gKGxhc3RCcmVha2luZ1Bvc2l0b24udmFsdWUoKSAtIDEpKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyQmVmb3JlQnJlYWtpbmdQb3NpdGlvbiA9IHRleHRS
ZW5kZXJlci5jaGFyYWN0ZXJBdChsYXN0QnJlYWtpbmdQb3NpdG9uLnZhbHVlKCkgLSAxKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGNoYXJhY3RlckJlZm9yZUJyZWFraW5nUG9zaXRpb24pCkBAIC0xMzE1LDkgKzEzMTQsOSBA
QCBpbmxpbmUgSW5saW5lSXRlcmF0b3IgQnJlYWtpbmdDb250ZXh0OjpvcHRpbWFsTGluZUJyZWFr
TG9jYXRpb25Gb3JUcmFpbGluZ1dvcmQoKQogICAgICAgICByZXR1cm4gbGluZUJyZWFrOwogICAg
IGJvb2wgaXNMb29zZUNKS01vZGUgPSBtX3JlbmRlclRleHRJbmZvLnRleHQgIT0gJnJlbmRlclRl
eHQgJiYgbV9yZW5kZXJUZXh0SW5mby5saW5lQnJlYWtJdGVyYXRvci5pc0xvb3NlQ0pLTW9kZSgp
OwogICAgIGJvb2wgYnJlYWtOQlNQID0gbV9hdXRvV3JhcCAmJiBtX2N1cnJlbnRTdHlsZS0+bmJz
cE1vZGUoKSA9PSBTUEFDRTsKLSAgICBpbnQgbmV4dEJyZWFrYWJsZVBvc2l0aW9uID0gbGluZUJy
ZWFrLm5leHRCcmVha2FibGVQb3NpdGlvbigpOworICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBuZXh0
QnJlYWthYmxlUG9zaXRpb24gPSBsaW5lQnJlYWsubmV4dEJyZWFrYWJsZVBvc2l0aW9uKCk7CiAg
ICAgaXNCcmVha2FibGUobV9yZW5kZXJUZXh0SW5mby5saW5lQnJlYWtJdGVyYXRvciwgbGluZUJy
ZWFrLm9mZnNldCgpICsgMSwgbmV4dEJyZWFrYWJsZVBvc2l0aW9uLCBicmVha05CU1AsIGlzTG9v
c2VDSktNb2RlLCBtX2N1cnJlbnRTdHlsZS0+d29yZEJyZWFrKCkgPT0gS2VlcEFsbFdvcmRCcmVh
ayk7Ci0gICAgaWYgKG5leHRCcmVha2FibGVQb3NpdGlvbiA8IDAgfHwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KG5leHRCcmVha2FibGVQb3NpdGlvbikgIT0gcmVuZGVyVGV4dC50ZXh0TGVuZ3RoKCkp
CisgICAgaWYgKCFuZXh0QnJlYWthYmxlUG9zaXRpb24gfHwgbmV4dEJyZWFrYWJsZVBvc2l0aW9u
LnZhbHVlKCkgIT0gcmVuZGVyVGV4dC50ZXh0TGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBsaW5l
QnJlYWs7CiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlID0gbGluZVN0eWxlKHJlbmRlclRl
eHQsIG1fbGluZUluZm8pOwogICAgIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250ID0gc3R5bGUuZm9u
dENhc2NhZGUoKTsKQEAgLTEzMzksNSArMTMzOCwzIEBAIGlubGluZSBJbmxpbmVJdGVyYXRvciBC
cmVha2luZ0NvbnRleHQ6Om9wdGltYWxMaW5lQnJlYWtMb2NhdGlvbkZvclRyYWlsaW5nV29yZCgp
CiAjZW5kaWYKIAogfQotCi0jZW5kaWYgLy8gQnJlYWtpbmdDb250ZXh0X2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvaW9zL01pc2MvV2ViVUlLaXRTdXBwb3J0Lm1tIGIvU291cmNlL1dlYktp
dC9pb3MvTWlzYy9XZWJVSUtpdFN1cHBvcnQubW0KaW5kZXggODk4YjA1NmFhMWI2YmQzNzliZmIy
MzI4ZGUzYmY5ODZiNTQyOGNkYy4uODllYjJhMzI5ZmJjYWUwNTUyZTJiMWM2NTIyY2IzYjdiYTY1
ODQ5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9pb3MvTWlzYy9XZWJVSUtpdFN1cHBvcnQu
bW0KKysrIGIvU291cmNlL1dlYktpdC9pb3MvTWlzYy9XZWJVSUtpdFN1cHBvcnQubW0KQEAgLTMz
LDEyICszMywxMiBAQAogI2ltcG9ydCAiV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAjaW1wb3J0
ICJXZWJTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbXBvcnQgIldlYlZpZXdQcml2YXRlLmgiCisjaW1w
b3J0IDxXZWJDb3JlL0JyZWFrTGluZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGF0aFV0aWxpdGll
cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbXBvcnQgPFdlYkNv
cmUvU2V0dGluZ3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVGhyZWFkU3lzdGVtSW50ZXJmYWNlLmg+Ci0jaW1w
b3J0IDxXZWJDb3JlL2JyZWFrX2xpbmVzLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9keWxk
U1BJLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogCkBAIC04OSwx
MiArODksMTIgQEAgZmxvYXQgV2ViS2l0R2V0TWluaW11bVpvb21Gb250U2l6ZSh2b2lkKQogCiBp
bnQgV2ViS2l0R2V0TGFzdExpbmVCcmVha0luQnVmZmVyKFVDaGFyICpjaGFyYWN0ZXJzLCBpbnQg
cG9zaXRpb24sIGludCBsZW5ndGgpCiB7Ci0gICAgaW50IGxhc3RCcmVha1BvcyA9IHBvc2l0aW9u
OwotICAgIGludCBicmVha1BvcyA9IDA7Ci0gICAgTGF6eUxpbmVCcmVha0l0ZXJhdG9yIGJyZWFr
SXRlcmF0b3IoU3RyaW5nKGNoYXJhY3RlcnMsIGxlbmd0aCkpOwotICAgIHdoaWxlICgoYnJlYWtQ
b3MgPSBuZXh0QnJlYWthYmxlUG9zaXRpb24oYnJlYWtJdGVyYXRvciwgYnJlYWtQb3MpKSA8IHBv
c2l0aW9uKQorICAgIHVuc2lnbmVkIGxhc3RCcmVha1BvcyA9IHBvc2l0aW9uOworICAgIHVuc2ln
bmVkIGJyZWFrUG9zID0gMDsKKyAgICBMYXp5TGluZUJyZWFrSXRlcmF0b3IgYnJlYWtJdGVyYXRv
cihTdHJpbmdWaWV3KGNoYXJhY3RlcnMsIGxlbmd0aCkpOworICAgIHdoaWxlIChzdGF0aWNfY2Fz
dDxpbnQ+KGJyZWFrUG9zID0gbmV4dEJyZWFrYWJsZVBvc2l0aW9uKGJyZWFrSXRlcmF0b3IsIGJy
ZWFrUG9zKSkgPCBwb3NpdGlvbikKICAgICAgICAgbGFzdEJyZWFrUG9zID0gYnJlYWtQb3MrKzsK
LSAgICByZXR1cm4gbGFzdEJyZWFrUG9zIDwgcG9zaXRpb24gPyAoTlNVSW50ZWdlcilsYXN0QnJl
YWtQb3MgOiBJTlRfTUFYOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KGxhc3RCcmVha1Bv
cykgPCBwb3NpdGlvbiA/IGxhc3RCcmVha1BvcyA6IElOVF9NQVg7CiB9CiAKIGNvbnN0IGNoYXIg
KldlYktpdFBsYXRmb3JtU3lzdGVtUm9vdERpcmVjdG9yeSh2b2lkKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>