<?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>154628</bug_id>
          
          <creation_ts>2016-02-23 19:03:28 -0800</creation_ts>
          <short_desc>Use IndentTextOrNot instead of passing isFirstLine/shouldIndentText as bool.</short_desc>
          <delta_ts>2016-03-02 13:45:14 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</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="alan">zalan</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>hyatt</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1167634</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2016-02-23 19:03:28 -0800</bug_when>
    <thetext>In RenderBlock (availableLogicalWidthForLine etc) and through the dependencies.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1167657</commentid>
    <comment_count>1</comment_count>
      <attachid>272082</attachid>
    <who name="alan">zalan</who>
    <bug_when>2016-02-23 20:24:22 -0800</bug_when>
    <thetext>Created attachment 272082
Patch

This patch has a source dependency on bug 154019.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1167662</commentid>
    <comment_count>2</comment_count>
      <attachid>272083</attachid>
    <who name="alan">zalan</who>
    <bug_when>2016-02-23 20:46:24 -0800</bug_when>
    <thetext>Created attachment 272083
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1167802</commentid>
    <comment_count>3</comment_count>
      <attachid>272083</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-02-24 09:20:14 -0800</bug_when>
    <thetext>Comment on attachment 272083
Patch

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

&gt; Source/WebCore/rendering/RootInlineBox.cpp:724
&gt; +        LayoutUnit nextLeft = blockFlow().logicalLeftOffsetForLine(nextTop, DoNotIndentText);
&gt; +        LayoutUnit nextRight = blockFlow().logicalRightOffsetForLine(nextTop, DoNotIndentText);
&gt; +        LayoutUnit newLeft = blockFlow().logicalLeftOffsetForLine(selectionBottom, DoNotIndentText);
&gt; +        LayoutUnit newRight = blockFlow().logicalRightOffsetForLine(selectionBottom, DoNotIndentText);

Seems like DoNot is much more common; maybe make it a default parameter?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1167815</commentid>
    <comment_count>4</comment_count>
      <attachid>272083</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-02-24 09:55:30 -0800</bug_when>
    <thetext>Comment on attachment 272083
Patch

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

&gt; Source/WebCore/rendering/RenderBlock.h:125
&gt; +    LayoutUnit availableLogicalWidthForLineInRegion(LayoutUnit position, IndentTextOrNot shouldIndentText, RenderRegion* region, LayoutUnit logicalHeight = 0) const

I dislike names with &quot;OrNot.&quot; How about ShouldIndentText? ShouldIndent? IndentionRequired?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169918</commentid>
    <comment_count>5</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2016-03-02 13:42:13 -0800</bug_when>
    <thetext>Committed r197462: &lt;http://trac.webkit.org/changeset/197462&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169919</commentid>
    <comment_count>6</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2016-03-02 13:45:14 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 272083 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=272083&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderBlock.h:125
&gt; &gt; +    LayoutUnit availableLogicalWidthForLineInRegion(LayoutUnit position, IndentTextOrNot shouldIndentText, RenderRegion* region, LayoutUnit logicalHeight = 0) const
&gt; 
&gt; I dislike names with &quot;OrNot.&quot; How about ShouldIndentText? ShouldIndent?
&gt; IndentionRequired?

I dislike it very much too, but i&apos;d rather have it in a follow-up patch.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272082</attachid>
            <date>2016-02-23 20:24:22 -0800</date>
            <delta_ts>2016-02-23 20:25:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.txt</filename>
            <type>text/plain</type>
            <size>33185</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2MTg2NGY3Li44OTIwZDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNTgg
QEAKIDIwMTYtMDItMjMgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAorICAgICAg
ICBVc2UgSW5kZW50VGV4dE9yTm90IGluc3RlYWQgb2YgcGFzc2luZyBpc0ZpcnN0TGluZS9zaG91
bGRJbmRlbnRUZXh0IGFzIGJvb2wuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTQ2MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBObyBjaGFuZ2UgaW4gYmVoYXZpb3VyLgorCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpjb21w
dXRlU3RhcnRQb3NpdGlvbkRlbHRhRm9yQ2hpbGRBdm9pZGluZ0Zsb2F0cyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCbG9jazo6bG9naWNhbExlZnRTZWxlY3Rpb25PZmZzZXQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxvZ2ljYWxSaWdodFNlbGVjdGlvbk9mZnNldCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCbG9jazo6YXZhaWxhYmxlTG9naWNhbFdpZHRoRm9yTGluZUluUmVnaW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJsb2NrOjpsb2dpY2FsUmlnaHRPZmZzZXRGb3JMaW5lSW5SZWdpb24p
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxvZ2ljYWxMZWZ0T2Zmc2V0Rm9yTGlu
ZUluUmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpzdGFydE9mZnNldEZv
ckxpbmVJblJlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6ZW5kT2Zmc2V0
Rm9yTGluZUluUmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjphdmFpbGFi
bGVMb2dpY2FsV2lkdGhGb3JMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjps
b2dpY2FsUmlnaHRPZmZzZXRGb3JMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2Nr
Ojpsb2dpY2FsTGVmdE9mZnNldEZvckxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxv
Y2s6OnN0YXJ0T2Zmc2V0Rm9yTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6
ZW5kT2Zmc2V0Rm9yTGluZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmdldENsZWFyRGVsdGEpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6dXBkYXRlTG9naWNhbElubGluZVBvc2l0aW9ucyk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCbG9ja0Zsb3c6OmxheW91dFJ1bnNBbmRGbG9hdHNJblJhbmdlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6ZGVsZXRlRWxsaXBzaXNMaW5lQm94ZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpjaGVja0xpbmVzRm9yVGV4dE92ZXJmbG93
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6c3RhcnRBbGlnbmVkT2Zmc2V0
Rm9yTGluZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCb3g6OnNocmlua0xvZ2ljYWxXaWR0aFRvQXZvaWRGbG9hdHMpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb250YWluaW5nQmxvY2tBdmFpbGFibGVMaW5lV2lk
dGhJblJlZ2lvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJs
ZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6
OmFwcGx5TGluZUNsYW1wKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEl0ZW06OnBvc2l0aW9uTGlzdE1hcmtlcik6
CisgICAgICAgICogcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Um9vdElubGluZUJveDo6c2VsZWN0aW9uVG9wKToKKyAgICAgICAgKFdlYkNvcmU6OlJvb3RJ
bmxpbmVCb3g6OnNlbGVjdGlvbkJvdHRvbSk6CisgICAgICAgICogcmVuZGVyaW5nL1NpbXBsZUxp
bmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6Y2FuVXNl
Rm9yV2l0aFJlYXNvbik6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0Ojp1cGRh
dGVMaW5lQ29uc3RyYWlucyk6CisgICAgICAgICogcmVuZGVyaW5nL2xpbmUvTGluZUJyZWFrZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TGluZUJyZWFrZXI6OnNraXBMZWFkaW5nV2hpdGVzcGFj
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL2xpbmUvTGluZVdpZHRoLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkxpbmVXaWR0aDo6c2hyaW5rQXZhaWxhYmxlV2lkdGhGb3JOZXdGbG9hdElmTmVlZGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OmF2YWlsYWJsZVdpZHRoQXRPZmZzZXQpOgorICAgICAgICAq
IHJlbmRlcmluZy9saW5lL0xpbmVXaWR0aC5oOgorICAgICAgICAoV2ViQ29yZTo6TGluZVdpZHRo
OjpzaG91bGRJbmRlbnRUZXh0KToKKworMjAxNi0wMi0yMyAgWmFsYW4gQnVqdGFzICA8emFsYW5A
YXBwbGUuY29tPgorCiAgICAgICAgIEJhY2tncm91bmQgb2YgYW4gYWJzb2x1dGVseSBwb3NpdGlv
bmVkIGlubGluZSBlbGVtZW50IGluc2lkZSB0ZXh0LWluZGVudGVkIHBhcmVudCBpcyBwb3NpdGlv
bmVkIHN0YXRpY2FsbHkuCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTQwMTkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAK
aW5kZXggZDc0NjVmZC4uMTNjMGJmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2suY3BwCkBAIC0xMDk3LDcgKzEwOTcsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJsb2NrOjpj
b21wdXRlU3RhcnRQb3NpdGlvbkRlbHRhRm9yQ2hpbGRBdm9pZGluZ0Zsb2F0cyhjb25zdCBSZQog
ICAgIGlmIChyZWdpb24pCiAgICAgICAgIGJsb2NrT2Zmc2V0ID0gc3RkOjptYXgoYmxvY2tPZmZz
ZXQsIGJsb2NrT2Zmc2V0ICsgKHJlZ2lvbi0+bG9naWNhbFRvcEZvckZsb3dUaHJlYWRDb250ZW50
KCkgLSBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKCkpKTsKIAotICAgIExheW91dFVu
aXQgc3RhcnRPZmYgPSBzdGFydE9mZnNldEZvckxpbmVJblJlZ2lvbihibG9ja09mZnNldCwgZmFs
c2UsIHJlZ2lvbiwgbG9naWNhbEhlaWdodEZvckNoaWxkKGNoaWxkKSk7CisgICAgTGF5b3V0VW5p
dCBzdGFydE9mZiA9IHN0YXJ0T2Zmc2V0Rm9yTGluZUluUmVnaW9uKGJsb2NrT2Zmc2V0LCBEb05v
dEluZGVudFRleHQsIHJlZ2lvbiwgbG9naWNhbEhlaWdodEZvckNoaWxkKGNoaWxkKSk7CiAKICAg
ICBpZiAoc3R5bGUoKS50ZXh0QWxpZ24oKSAhPSBXRUJLSVRfQ0VOVEVSICYmICFjaGlsZC5zdHls
ZSgpLm1hcmdpblN0YXJ0VXNpbmcoJnN0eWxlKCkpLmlzQXV0bygpKSB7CiAgICAgICAgIGlmIChj
aGlsZE1hcmdpblN0YXJ0IDwgMCkKQEAgLTIwMjYsNyArMjAyNiw3IEBAIHZvaWQgUmVuZGVyQmxv
Y2s6OmdldFNlbGVjdGlvbkdhcEluZm8oU2VsZWN0aW9uU3RhdGUgc3RhdGUsIGJvb2wmIGxlZnRH
YXAsIGJvb2wmCiAKIExheW91dFVuaXQgUmVuZGVyQmxvY2s6OmxvZ2ljYWxMZWZ0U2VsZWN0aW9u
T2Zmc2V0KFJlbmRlckJsb2NrJiByb290QmxvY2ssIExheW91dFVuaXQgcG9zaXRpb24sIGNvbnN0
IExvZ2ljYWxTZWxlY3Rpb25PZmZzZXRDYWNoZXMmIGNhY2hlKQogewotICAgIExheW91dFVuaXQg
bG9naWNhbExlZnQgPSBsb2dpY2FsTGVmdE9mZnNldEZvckxpbmUocG9zaXRpb24sIGZhbHNlKTsK
KyAgICBMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0ID0gbG9naWNhbExlZnRPZmZzZXRGb3JMaW5lKHBv
c2l0aW9uLCBEb05vdEluZGVudFRleHQpOwogICAgIGlmIChsb2dpY2FsTGVmdCA9PSBsb2dpY2Fs
TGVmdE9mZnNldEZvckNvbnRlbnQoKSkgewogICAgICAgICBpZiAoJnJvb3RCbG9jayAhPSB0aGlz
KSAvLyBUaGUgYm9yZGVyIGNhbiBwb3RlbnRpYWxseSBiZSBmdXJ0aGVyIGV4dGVuZGVkIGJ5IG91
ciBjb250YWluaW5nQmxvY2soKS4KICAgICAgICAgICAgIHJldHVybiBjYWNoZS5jb250YWluaW5n
QmxvY2tJbmZvKCp0aGlzKS5sb2dpY2FsTGVmdFNlbGVjdGlvbk9mZnNldChyb290QmxvY2ssIHBv
c2l0aW9uICsgbG9naWNhbFRvcCgpKTsKQEAgLTIwNDgsNyArMjA0OCw3IEBAIExheW91dFVuaXQg
UmVuZGVyQmxvY2s6OmxvZ2ljYWxMZWZ0U2VsZWN0aW9uT2Zmc2V0KFJlbmRlckJsb2NrJiByb290
QmxvY2ssIExheW91CiAKIExheW91dFVuaXQgUmVuZGVyQmxvY2s6OmxvZ2ljYWxSaWdodFNlbGVj
dGlvbk9mZnNldChSZW5kZXJCbG9jayYgcm9vdEJsb2NrLCBMYXlvdXRVbml0IHBvc2l0aW9uLCBj
b25zdCBMb2dpY2FsU2VsZWN0aW9uT2Zmc2V0Q2FjaGVzJiBjYWNoZSkKIHsKLSAgICBMYXlvdXRV
bml0IGxvZ2ljYWxSaWdodCA9IGxvZ2ljYWxSaWdodE9mZnNldEZvckxpbmUocG9zaXRpb24sIGZh
bHNlKTsKKyAgICBMYXlvdXRVbml0IGxvZ2ljYWxSaWdodCA9IGxvZ2ljYWxSaWdodE9mZnNldEZv
ckxpbmUocG9zaXRpb24sIERvTm90SW5kZW50VGV4dCk7CiAgICAgaWYgKGxvZ2ljYWxSaWdodCA9
PSBsb2dpY2FsUmlnaHRPZmZzZXRGb3JDb250ZW50KCkpIHsKICAgICAgICAgaWYgKCZyb290Qmxv
Y2sgIT0gdGhpcykgLy8gVGhlIGJvcmRlciBjYW4gcG90ZW50aWFsbHkgYmUgZnVydGhlciBleHRl
bmRlZCBieSBvdXIgY29udGFpbmluZ0Jsb2NrKCkuCiAgICAgICAgICAgICByZXR1cm4gY2FjaGUu
Y29udGFpbmluZ0Jsb2NrSW5mbygqdGhpcykubG9naWNhbFJpZ2h0U2VsZWN0aW9uT2Zmc2V0KHJv
b3RCbG9jaywgcG9zaXRpb24gKyBsb2dpY2FsVG9wKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2suaAppbmRleCA2YzA2OGZiLi4zZDBiZDNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2suaApAQCAtMjQsNiArMjQsNyBAQAogI2RlZmluZSBSZW5kZXJCbG9j
a19oCiAKICNpbmNsdWRlICJHYXBSZWN0cy5oIgorI2luY2x1ZGUgIkxpbmVXaWR0aC5oIgogI2lu
Y2x1ZGUgIlJlbmRlckJveC5oIgogI2luY2x1ZGUgIlRleHRSdW4uaCIKICNpbmNsdWRlIDxtZW1v
cnk+CkBAIC0xMjEsNDggKzEyMiw0OCBAQCBwdWJsaWM6CiAKICAgICAvLyBWZXJzaW9ucyB0aGF0
IGNhbiBjb21wdXRlIGxpbmUgb2Zmc2V0cyB3aXRoIHRoZSByZWdpb24gYW5kIHBhZ2Ugb2Zmc2V0
IHBhc3NlZCBpbi4gVXNlZCBmb3Igc3BlZWQgdG8gYXZvaWQgaGF2aW5nIHRvCiAgICAgLy8gY29t
cHV0ZSB0aGUgcmVnaW9uIGFsbCBvdmVyIGFnYWluIHdoZW4geW91IGFscmVhZHkga25vdyBpdC4K
LSAgICBMYXlvdXRVbml0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aEZvckxpbmVJblJlZ2lvbihMYXlv
dXRVbml0IHBvc2l0aW9uLCBib29sIHNob3VsZEluZGVudFRleHQsIFJlbmRlclJlZ2lvbiogcmVn
aW9uLCBMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQgPSAwKSBjb25zdAorICAgIExheW91dFVuaXQg
YXZhaWxhYmxlTG9naWNhbFdpZHRoRm9yTGluZUluUmVnaW9uKExheW91dFVuaXQgcG9zaXRpb24s
IEluZGVudFRleHRPck5vdCBzaG91bGRJbmRlbnRUZXh0LCBSZW5kZXJSZWdpb24qIHJlZ2lvbiwg
TGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0ID0gMCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVy
biBzdGQ6Om1heDxMYXlvdXRVbml0PigwLCBsb2dpY2FsUmlnaHRPZmZzZXRGb3JMaW5lSW5SZWdp
b24ocG9zaXRpb24sIHNob3VsZEluZGVudFRleHQsIHJlZ2lvbiwgbG9naWNhbEhlaWdodCkKICAg
ICAgICAgICAgIC0gbG9naWNhbExlZnRPZmZzZXRGb3JMaW5lSW5SZWdpb24ocG9zaXRpb24sIHNo
b3VsZEluZGVudFRleHQsIHJlZ2lvbiwgbG9naWNhbEhlaWdodCkpOwogICAgIH0KLSAgICBMYXlv
dXRVbml0IGxvZ2ljYWxSaWdodE9mZnNldEZvckxpbmVJblJlZ2lvbihMYXlvdXRVbml0IHBvc2l0
aW9uLCBib29sIHNob3VsZEluZGVudFRleHQsIFJlbmRlclJlZ2lvbiogcmVnaW9uLCBMYXlvdXRV
bml0IGxvZ2ljYWxIZWlnaHQgPSAwKSBjb25zdCAKKyAgICBMYXlvdXRVbml0IGxvZ2ljYWxSaWdo
dE9mZnNldEZvckxpbmVJblJlZ2lvbihMYXlvdXRVbml0IHBvc2l0aW9uLCBJbmRlbnRUZXh0T3JO
b3Qgc2hvdWxkSW5kZW50VGV4dCwgUmVuZGVyUmVnaW9uKiByZWdpb24sIExheW91dFVuaXQgbG9n
aWNhbEhlaWdodCA9IDApIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbG9naWNhbFJpZ2h0
T2Zmc2V0Rm9yTGluZShwb3NpdGlvbiwgbG9naWNhbFJpZ2h0T2Zmc2V0Rm9yQ29udGVudChyZWdp
b24pLCBzaG91bGRJbmRlbnRUZXh0LCBsb2dpY2FsSGVpZ2h0KTsKICAgICB9Ci0gICAgTGF5b3V0
VW5pdCBsb2dpY2FsTGVmdE9mZnNldEZvckxpbmVJblJlZ2lvbihMYXlvdXRVbml0IHBvc2l0aW9u
LCBib29sIHNob3VsZEluZGVudFRleHQsIFJlbmRlclJlZ2lvbiogcmVnaW9uLCBMYXlvdXRVbml0
IGxvZ2ljYWxIZWlnaHQgPSAwKSBjb25zdCAKKyAgICBMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0T2Zm
c2V0Rm9yTGluZUluUmVnaW9uKExheW91dFVuaXQgcG9zaXRpb24sIEluZGVudFRleHRPck5vdCBz
aG91bGRJbmRlbnRUZXh0LCBSZW5kZXJSZWdpb24qIHJlZ2lvbiwgTGF5b3V0VW5pdCBsb2dpY2Fs
SGVpZ2h0ID0gMCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBsb2dpY2FsTGVmdE9mZnNl
dEZvckxpbmUocG9zaXRpb24sIGxvZ2ljYWxMZWZ0T2Zmc2V0Rm9yQ29udGVudChyZWdpb24pLCBz
aG91bGRJbmRlbnRUZXh0LCBsb2dpY2FsSGVpZ2h0KTsKICAgICB9Ci0gICAgTGF5b3V0VW5pdCBz
dGFydE9mZnNldEZvckxpbmVJblJlZ2lvbihMYXlvdXRVbml0IHBvc2l0aW9uLCBib29sIHNob3Vs
ZEluZGVudFRleHQsIFJlbmRlclJlZ2lvbiogcmVnaW9uLCBMYXlvdXRVbml0IGxvZ2ljYWxIZWln
aHQgPSAwKSBjb25zdAorICAgIExheW91dFVuaXQgc3RhcnRPZmZzZXRGb3JMaW5lSW5SZWdpb24o
TGF5b3V0VW5pdCBwb3NpdGlvbiwgSW5kZW50VGV4dE9yTm90IHNob3VsZEluZGVudFRleHQsIFJl
bmRlclJlZ2lvbiogcmVnaW9uLCBMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQgPSAwKSBjb25zdAog
ICAgIHsKICAgICAgICAgcmV0dXJuIHN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8g
bG9naWNhbExlZnRPZmZzZXRGb3JMaW5lSW5SZWdpb24ocG9zaXRpb24sIHNob3VsZEluZGVudFRl
eHQsIHJlZ2lvbiwgbG9naWNhbEhlaWdodCkKICAgICAgICAgICAgIDogbG9naWNhbFdpZHRoKCkg
LSBsb2dpY2FsUmlnaHRPZmZzZXRGb3JMaW5lSW5SZWdpb24ocG9zaXRpb24sIHNob3VsZEluZGVu
dFRleHQsIHJlZ2lvbiwgbG9naWNhbEhlaWdodCk7CiAgICAgfQotICAgIExheW91dFVuaXQgZW5k
T2Zmc2V0Rm9yTGluZUluUmVnaW9uKExheW91dFVuaXQgcG9zaXRpb24sIGJvb2wgc2hvdWxkSW5k
ZW50VGV4dCwgUmVuZGVyUmVnaW9uKiByZWdpb24sIExheW91dFVuaXQgbG9naWNhbEhlaWdodCA9
IDApIGNvbnN0CisgICAgTGF5b3V0VW5pdCBlbmRPZmZzZXRGb3JMaW5lSW5SZWdpb24oTGF5b3V0
VW5pdCBwb3NpdGlvbiwgSW5kZW50VGV4dE9yTm90IHNob3VsZEluZGVudFRleHQsIFJlbmRlclJl
Z2lvbiogcmVnaW9uLCBMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQgPSAwKSBjb25zdAogICAgIHsK
ICAgICAgICAgcmV0dXJuICFzdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IGxvZ2lj
YWxMZWZ0T2Zmc2V0Rm9yTGluZUluUmVnaW9uKHBvc2l0aW9uLCBzaG91bGRJbmRlbnRUZXh0LCBy
ZWdpb24sIGxvZ2ljYWxIZWlnaHQpCiAgICAgICAgICAgICA6IGxvZ2ljYWxXaWR0aCgpIC0gbG9n
aWNhbFJpZ2h0T2Zmc2V0Rm9yTGluZUluUmVnaW9uKHBvc2l0aW9uLCBzaG91bGRJbmRlbnRUZXh0
LCByZWdpb24sIGxvZ2ljYWxIZWlnaHQpOwogICAgIH0KIAotICAgIExheW91dFVuaXQgYXZhaWxh
YmxlTG9naWNhbFdpZHRoRm9yTGluZShMYXlvdXRVbml0IHBvc2l0aW9uLCBib29sIHNob3VsZElu
ZGVudFRleHQsIExheW91dFVuaXQgbG9naWNhbEhlaWdodCA9IDApIGNvbnN0CisgICAgTGF5b3V0
VW5pdCBhdmFpbGFibGVMb2dpY2FsV2lkdGhGb3JMaW5lKExheW91dFVuaXQgcG9zaXRpb24sIElu
ZGVudFRleHRPck5vdCBzaG91bGRJbmRlbnRUZXh0LCBMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQg
PSAwKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aEZv
ckxpbmVJblJlZ2lvbihwb3NpdGlvbiwgc2hvdWxkSW5kZW50VGV4dCwgcmVnaW9uQXRCbG9ja09m
ZnNldChwb3NpdGlvbiksIGxvZ2ljYWxIZWlnaHQpOwogICAgIH0KLSAgICBMYXlvdXRVbml0IGxv
Z2ljYWxSaWdodE9mZnNldEZvckxpbmUoTGF5b3V0VW5pdCBwb3NpdGlvbiwgYm9vbCBzaG91bGRJ
bmRlbnRUZXh0LCBMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQgPSAwKSBjb25zdCAKKyAgICBMYXlv
dXRVbml0IGxvZ2ljYWxSaWdodE9mZnNldEZvckxpbmUoTGF5b3V0VW5pdCBwb3NpdGlvbiwgSW5k
ZW50VGV4dE9yTm90IHNob3VsZEluZGVudFRleHQsIExheW91dFVuaXQgbG9naWNhbEhlaWdodCA9
IDApIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbG9naWNhbFJpZ2h0T2Zmc2V0Rm9yTGlu
ZShwb3NpdGlvbiwgbG9naWNhbFJpZ2h0T2Zmc2V0Rm9yQ29udGVudChwb3NpdGlvbiksIHNob3Vs
ZEluZGVudFRleHQsIGxvZ2ljYWxIZWlnaHQpOwogICAgIH0KLSAgICBMYXlvdXRVbml0IGxvZ2lj
YWxMZWZ0T2Zmc2V0Rm9yTGluZShMYXlvdXRVbml0IHBvc2l0aW9uLCBib29sIHNob3VsZEluZGVu
dFRleHQsIExheW91dFVuaXQgbG9naWNhbEhlaWdodCA9IDApIGNvbnN0IAorICAgIExheW91dFVu
aXQgbG9naWNhbExlZnRPZmZzZXRGb3JMaW5lKExheW91dFVuaXQgcG9zaXRpb24sIEluZGVudFRl
eHRPck5vdCBzaG91bGRJbmRlbnRUZXh0LCBMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQgPSAwKSBj
b25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIGxvZ2ljYWxMZWZ0T2Zmc2V0Rm9yTGluZShwb3Np
dGlvbiwgbG9naWNhbExlZnRPZmZzZXRGb3JDb250ZW50KHBvc2l0aW9uKSwgc2hvdWxkSW5kZW50
VGV4dCwgbG9naWNhbEhlaWdodCk7CiAgICAgfQotICAgIExheW91dFVuaXQgc3RhcnRPZmZzZXRG
b3JMaW5lKExheW91dFVuaXQgcG9zaXRpb24sIGJvb2wgc2hvdWxkSW5kZW50VGV4dCwgTGF5b3V0
VW5pdCBsb2dpY2FsSGVpZ2h0ID0gMCkgY29uc3QKKyAgICBMYXlvdXRVbml0IHN0YXJ0T2Zmc2V0
Rm9yTGluZShMYXlvdXRVbml0IHBvc2l0aW9uLCBJbmRlbnRUZXh0T3JOb3Qgc2hvdWxkSW5kZW50
VGV4dCwgTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0ID0gMCkgY29uc3QKICAgICB7CiAgICAgICAg
IHJldHVybiBzdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IGxvZ2ljYWxMZWZ0T2Zm
c2V0Rm9yTGluZShwb3NpdGlvbiwgc2hvdWxkSW5kZW50VGV4dCwgbG9naWNhbEhlaWdodCkKICAg
ICAgICAgICAgIDogbG9naWNhbFdpZHRoKCkgLSBsb2dpY2FsUmlnaHRPZmZzZXRGb3JMaW5lKHBv
c2l0aW9uLCBzaG91bGRJbmRlbnRUZXh0LCBsb2dpY2FsSGVpZ2h0KTsKICAgICB9Ci0gICAgTGF5
b3V0VW5pdCBlbmRPZmZzZXRGb3JMaW5lKExheW91dFVuaXQgcG9zaXRpb24sIGJvb2wgc2hvdWxk
SW5kZW50VGV4dCwgTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0ID0gMCkgY29uc3QKKyAgICBMYXlv
dXRVbml0IGVuZE9mZnNldEZvckxpbmUoTGF5b3V0VW5pdCBwb3NpdGlvbiwgSW5kZW50VGV4dE9y
Tm90IHNob3VsZEluZGVudFRleHQsIExheW91dFVuaXQgbG9naWNhbEhlaWdodCA9IDApIGNvbnN0
CiAgICAgewogICAgICAgICByZXR1cm4gIXN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigp
ID8gbG9naWNhbExlZnRPZmZzZXRGb3JMaW5lKHBvc2l0aW9uLCBzaG91bGRJbmRlbnRUZXh0LCBs
b2dpY2FsSGVpZ2h0KQogICAgICAgICAgICAgOiBsb2dpY2FsV2lkdGgoKSAtIGxvZ2ljYWxSaWdo
dE9mZnNldEZvckxpbmUocG9zaXRpb24sIHNob3VsZEluZGVudFRleHQsIGxvZ2ljYWxIZWlnaHQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAppbmRleCA0
MDBlYmMyLi4zM2JjZTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2tGbG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2tGbG93LmNwcApAQCAtMjg0NCw3ICsyODQ0LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCbG9ja0Zs
b3c6OmdldENsZWFyRGVsdGEoUmVuZGVyQm94JiBjaGlsZCwgTGF5b3V0VW5pdCBsb2dpY2FsVG8K
ICAgICBpZiAoIXJlc3VsdCAmJiBjaGlsZC5hdm9pZHNGbG9hdHMoKSkgewogICAgICAgICBMYXlv
dXRVbml0IG5ld0xvZ2ljYWxUb3AgPSBsb2dpY2FsVG9wOwogICAgICAgICB3aGlsZSAodHJ1ZSkg
ewotICAgICAgICAgICAgTGF5b3V0VW5pdCBhdmFpbGFibGVMb2dpY2FsV2lkdGhBdE5ld0xvZ2lj
YWxUb3BPZmZzZXQgPSBhdmFpbGFibGVMb2dpY2FsV2lkdGhGb3JMaW5lKG5ld0xvZ2ljYWxUb3As
IGZhbHNlLCBsb2dpY2FsSGVpZ2h0Rm9yQ2hpbGQoY2hpbGQpKTsKKyAgICAgICAgICAgIExheW91
dFVuaXQgYXZhaWxhYmxlTG9naWNhbFdpZHRoQXROZXdMb2dpY2FsVG9wT2Zmc2V0ID0gYXZhaWxh
YmxlTG9naWNhbFdpZHRoRm9yTGluZShuZXdMb2dpY2FsVG9wLCBEb05vdEluZGVudFRleHQsIGxv
Z2ljYWxIZWlnaHRGb3JDaGlsZChjaGlsZCkpOwogICAgICAgICAgICAgaWYgKGF2YWlsYWJsZUxv
Z2ljYWxXaWR0aEF0TmV3TG9naWNhbFRvcE9mZnNldCA9PSBhdmFpbGFibGVMb2dpY2FsV2lkdGhG
b3JDb250ZW50KG5ld0xvZ2ljYWxUb3ApKQogICAgICAgICAgICAgICAgIHJldHVybiBuZXdMb2dp
Y2FsVG9wIC0gbG9naWNhbFRvcDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAppbmRleCAxNjk5OTIyLi44NDIwN2E4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcApA
QCAtNjcyLDE2ICs2NzIsMTYgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OnVwZGF0ZUxvZ2ljYWxX
aWR0aEZvckFsaWdubWVudChjb25zdCBFVGV4dEFsaWduJiB0ZXh0QWxpZ24KICAgICB9CiB9CiAK
LXN0YXRpYyB2b2lkIHVwZGF0ZUxvZ2ljYWxJbmxpbmVQb3NpdGlvbnMoUmVuZGVyQmxvY2tGbG93
JiBibG9jaywgZmxvYXQmIGxpbmVMb2dpY2FsTGVmdCwgZmxvYXQmIGxpbmVMb2dpY2FsUmlnaHQs
IGZsb2F0JiBhdmFpbGFibGVMb2dpY2FsV2lkdGgsIGJvb2wgZmlyc3RMaW5lLCBJbmRlbnRUZXh0
T3JOb3Qgc2hvdWxkSW5kZW50VGV4dCwgTGF5b3V0VW5pdCBib3hMb2dpY2FsSGVpZ2h0LAotICAg
IFJvb3RJbmxpbmVCb3gqIHJvb3RCb3gpCitzdGF0aWMgdm9pZCB1cGRhdGVMb2dpY2FsSW5saW5l
UG9zaXRpb25zKFJlbmRlckJsb2NrRmxvdyYgYmxvY2ssIGZsb2F0JiBsaW5lTG9naWNhbExlZnQs
IGZsb2F0JiBsaW5lTG9naWNhbFJpZ2h0LCBmbG9hdCYgYXZhaWxhYmxlTG9naWNhbFdpZHRoLCBi
b29sIGZpcnN0TGluZSwKKyAgICBJbmRlbnRUZXh0T3JOb3Qgc2hvdWxkSW5kZW50VGV4dCwgTGF5
b3V0VW5pdCBib3hMb2dpY2FsSGVpZ2h0LCBSb290SW5saW5lQm94KiByb290Qm94KQogewogICAg
IExheW91dFVuaXQgbGluZUxvZ2ljYWxIZWlnaHQgPSBibG9jay5taW5MaW5lSGVpZ2h0Rm9yUmVw
bGFjZWRSZW5kZXJlcihmaXJzdExpbmUsIGJveExvZ2ljYWxIZWlnaHQpOwogICAgIGlmIChyb290
Qm94LT5oYXNBbm9ueW1vdXNJbmxpbmVCbG9jaygpKSB7CiAgICAgICAgIGxpbmVMb2dpY2FsTGVm
dCA9IGJsb2NrLmxvZ2ljYWxMZWZ0T2Zmc2V0Rm9yQ29udGVudChibG9jay5sb2dpY2FsSGVpZ2h0
KCkpOwogICAgICAgICBsaW5lTG9naWNhbFJpZ2h0ID0gYmxvY2subG9naWNhbFJpZ2h0T2Zmc2V0
Rm9yQ29udGVudChibG9jay5sb2dpY2FsSGVpZ2h0KCkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAg
IGxpbmVMb2dpY2FsTGVmdCA9IGJsb2NrLmxvZ2ljYWxMZWZ0T2Zmc2V0Rm9yTGluZShibG9jay5s
b2dpY2FsSGVpZ2h0KCksIHNob3VsZEluZGVudFRleHQgPT0gSW5kZW50VGV4dCwgbGluZUxvZ2lj
YWxIZWlnaHQpOwotICAgICAgICBsaW5lTG9naWNhbFJpZ2h0ID0gYmxvY2subG9naWNhbFJpZ2h0
T2Zmc2V0Rm9yTGluZShibG9jay5sb2dpY2FsSGVpZ2h0KCksIHNob3VsZEluZGVudFRleHQgPT0g
SW5kZW50VGV4dCwgbGluZUxvZ2ljYWxIZWlnaHQpOworICAgICAgICBsaW5lTG9naWNhbExlZnQg
PSBibG9jay5sb2dpY2FsTGVmdE9mZnNldEZvckxpbmUoYmxvY2subG9naWNhbEhlaWdodCgpLCBz
aG91bGRJbmRlbnRUZXh0LCBsaW5lTG9naWNhbEhlaWdodCk7CisgICAgICAgIGxpbmVMb2dpY2Fs
UmlnaHQgPSBibG9jay5sb2dpY2FsUmlnaHRPZmZzZXRGb3JMaW5lKGJsb2NrLmxvZ2ljYWxIZWln
aHQoKSwgc2hvdWxkSW5kZW50VGV4dCwgbGluZUxvZ2ljYWxIZWlnaHQpOwogICAgIH0KICAgICBh
dmFpbGFibGVMb2dpY2FsV2lkdGggPSBsaW5lTG9naWNhbFJpZ2h0IC0gbGluZUxvZ2ljYWxMZWZ0
OwogfQpAQCAtMTMzOSwxMiArMTMzOSwxMiBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6bGF5b3V0
UnVuc0FuZEZsb2F0c0luUmFuZ2UoTGluZUxheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgSQogICAg
ICAgICAgICAgICAgICAgICBhZGp1c3RMaW5lUG9zaXRpb25Gb3JQYWdpbmF0aW9uKGxpbmVCb3gs
IGFkanVzdG1lbnQsIG92ZXJmbG93c1JlZ2lvbiwgbGF5b3V0U3RhdGUuZmxvd1RocmVhZCgpKTsK
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAoYWRqdXN0bWVudCkgewotICAg
ICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IG9sZExpbmVXaWR0aCA9IGF2YWlsYWJsZUxvZ2lj
YWxXaWR0aEZvckxpbmUob2xkTG9naWNhbEhlaWdodCwgbGF5b3V0U3RhdGUubGluZUluZm8oKS5p
c0ZpcnN0TGluZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBvbGRMaW5lV2lk
dGggPSBhdmFpbGFibGVMb2dpY2FsV2lkdGhGb3JMaW5lKG9sZExvZ2ljYWxIZWlnaHQsIGxheW91
dFN0YXRlLmxpbmVJbmZvKCkuaXNGaXJzdExpbmUoKSA/IEluZGVudFRleHQgOiBEb05vdEluZGVu
dFRleHQpOwogICAgICAgICAgICAgICAgICAgICBsaW5lQm94LT5hZGp1c3RCbG9ja0RpcmVjdGlv
blBvc2l0aW9uKGFkanVzdG1lbnQpOwogICAgICAgICAgICAgICAgICAgICBpZiAobGF5b3V0U3Rh
dGUudXNlc1JlcGFpbnRCb3VuZHMoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGxheW91dFN0
YXRlLnVwZGF0ZVJlcGFpbnRSYW5nZUZyb21Cb3gobGluZUJveCk7CiAKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKGF2YWlsYWJsZUxvZ2ljYWxXaWR0aEZvckxpbmUob2xkTG9naWNhbEhlaWdodCAr
IGFkanVzdG1lbnQsIGxheW91dFN0YXRlLmxpbmVJbmZvKCkuaXNGaXJzdExpbmUoKSkgIT0gb2xk
TGluZVdpZHRoKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChhdmFpbGFibGVMb2dpY2FsV2lk
dGhGb3JMaW5lKG9sZExvZ2ljYWxIZWlnaHQgKyBhZGp1c3RtZW50LCBsYXlvdXRTdGF0ZS5saW5l
SW5mbygpLmlzRmlyc3RMaW5lKCkgPyBJbmRlbnRUZXh0IDogRG9Ob3RJbmRlbnRUZXh0KSAhPSBv
bGRMaW5lV2lkdGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGhhdmUgdG8gZGVs
ZXRlIHRoaXMgbGluZSwgcmVtb3ZlIGFsbCBmbG9hdHMgdGhhdCBnb3QgYWRkZWQsIGFuZCBsZXQg
bGluZSBsYXlvdXQgcmUtcnVuLgogICAgICAgICAgICAgICAgICAgICAgICAgbGluZUJveC0+ZGVs
ZXRlTGluZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgZW5kID0gcmVzdGFydExheW91dFJ1
bnNBbmRGbG9hdHNJblJhbmdlKG9sZExvZ2ljYWxIZWlnaHQsIG9sZExvZ2ljYWxIZWlnaHQgKyBh
ZGp1c3RtZW50LCBsYXN0RmxvYXRGcm9tUHJldmlvdXNMaW5lLCByZXNvbHZlciwgb2xkRW5kKTsK
QEAgLTIwMDQsOCArMjAwNCw4IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpkZWxldGVFbGxpcHNp
c0xpbmVCb3hlcygpCiAgICAgICAgICAgICBjdXJyLT5jbGVhclRydW5jYXRpb24oKTsKIAogICAg
ICAgICAgICAgLy8gU2hpZnQgdGhlIGxpbmUgYmFjayB3aGVyZSBpdCBiZWxvbmdzIGlmIHdlIGNh
bm5vdCBhY2NvbW9kYXRlIGFuIGVsbGlwc2lzLgotICAgICAgICAgICAgZmxvYXQgbG9naWNhbExl
ZnQgPSBsb2dpY2FsTGVmdE9mZnNldEZvckxpbmUoY3Vyci0+bGluZVRvcCgpLCBmaXJzdExpbmUp
OwotICAgICAgICAgICAgZmxvYXQgYXZhaWxhYmxlTG9naWNhbFdpZHRoID0gbG9naWNhbFJpZ2h0
T2Zmc2V0Rm9yTGluZShjdXJyLT5saW5lVG9wKCksIGZhbHNlKSAtIGxvZ2ljYWxMZWZ0OworICAg
ICAgICAgICAgZmxvYXQgbG9naWNhbExlZnQgPSBsb2dpY2FsTGVmdE9mZnNldEZvckxpbmUoY3Vy
ci0+bGluZVRvcCgpLCBmaXJzdExpbmUgPyBJbmRlbnRUZXh0IDogRG9Ob3RJbmRlbnRUZXh0KTsK
KyAgICAgICAgICAgIGZsb2F0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCA9IGxvZ2ljYWxSaWdodE9m
ZnNldEZvckxpbmUoY3Vyci0+bGluZVRvcCgpLCBEb05vdEluZGVudFRleHQpIC0gbG9naWNhbExl
ZnQ7CiAgICAgICAgICAgICBmbG9hdCB0b3RhbExvZ2ljYWxXaWR0aCA9IGN1cnItPmxvZ2ljYWxX
aWR0aCgpOwogICAgICAgICAgICAgdXBkYXRlTG9naWNhbFdpZHRoRm9yQWxpZ25tZW50KHRleHRB
bGlnbiwgY3VyciwgMCwgbG9naWNhbExlZnQsIHRvdGFsTG9naWNhbFdpZHRoLCBhdmFpbGFibGVM
b2dpY2FsV2lkdGgsIDApOwogCkBAIC0yMDM2LDggKzIwMzYsOCBAQCB2b2lkIFJlbmRlckJsb2Nr
Rmxvdzo6Y2hlY2tMaW5lc0ZvclRleHRPdmVyZmxvdygpCiAgICAgRVRleHRBbGlnbiB0ZXh0QWxp
Z24gPSBzdHlsZSgpLnRleHRBbGlnbigpOwogICAgIGJvb2wgZmlyc3RMaW5lID0gdHJ1ZTsKICAg
ICBmb3IgKFJvb3RJbmxpbmVCb3gqIGN1cnIgPSBmaXJzdFJvb3RCb3goKTsgY3VycjsgY3VyciA9
IGN1cnItPm5leHRSb290Qm94KCkpIHsKLSAgICAgICAgTGF5b3V0VW5pdCBibG9ja1JpZ2h0RWRn
ZSA9IGxvZ2ljYWxSaWdodE9mZnNldEZvckxpbmUoY3Vyci0+bGluZVRvcCgpLCBmaXJzdExpbmUp
OwotICAgICAgICBMYXlvdXRVbml0IGJsb2NrTGVmdEVkZ2UgPSBsb2dpY2FsTGVmdE9mZnNldEZv
ckxpbmUoY3Vyci0+bGluZVRvcCgpLCBmaXJzdExpbmUpOworICAgICAgICBMYXlvdXRVbml0IGJs
b2NrUmlnaHRFZGdlID0gbG9naWNhbFJpZ2h0T2Zmc2V0Rm9yTGluZShjdXJyLT5saW5lVG9wKCks
IGZpcnN0TGluZSA/IEluZGVudFRleHQgOiBEb05vdEluZGVudFRleHQpOworICAgICAgICBMYXlv
dXRVbml0IGJsb2NrTGVmdEVkZ2UgPSBsb2dpY2FsTGVmdE9mZnNldEZvckxpbmUoY3Vyci0+bGlu
ZVRvcCgpLCBmaXJzdExpbmUgPyBJbmRlbnRUZXh0IDogRG9Ob3RJbmRlbnRUZXh0KTsKICAgICAg
ICAgTGF5b3V0VW5pdCBsaW5lQm94RWRnZSA9IGx0ciA/IGN1cnItPngoKSArIGN1cnItPmxvZ2lj
YWxXaWR0aCgpIDogY3Vyci0+eCgpOwogICAgICAgICBpZiAoKGx0ciAmJiBsaW5lQm94RWRnZSA+
IGJsb2NrUmlnaHRFZGdlKSB8fCAoIWx0ciAmJiBsaW5lQm94RWRnZSA8IGJsb2NrTGVmdEVkZ2Up
KSB7CiAgICAgICAgICAgICAvLyBUaGlzIGxpbmUgc3BpbGxzIG91dCBvZiBvdXIgYm94IGluIHRo
ZSBhcHByb3ByaWF0ZSBkaXJlY3Rpb24uICBOb3cgd2UgbmVlZCB0byBzZWUgaWYgdGhlIGxpbmUK
QEAgLTIwNTEsNyArMjA1MSw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpjaGVja0xpbmVzRm9y
VGV4dE92ZXJmbG93KCkKICAgICAgICAgICAgICAgICBmbG9hdCB0b3RhbExvZ2ljYWxXaWR0aCA9
IGN1cnItPnBsYWNlRWxsaXBzaXMoZWxsaXBzaXNTdHIsIGx0ciwgYmxvY2tMZWZ0RWRnZSwgYmxv
Y2tSaWdodEVkZ2UsIHdpZHRoKTsKIAogICAgICAgICAgICAgICAgIGZsb2F0IGxvZ2ljYWxMZWZ0
ID0gMDsgLy8gV2UgYXJlIG9ubHkgaW50ZXJlc3RlZCBpbiB0aGUgZGVsdGEgZnJvbSB0aGUgYmFz
ZSBwb3NpdGlvbi4KLSAgICAgICAgICAgICAgICBmbG9hdCB0cnVuY2F0ZWRXaWR0aCA9IGF2YWls
YWJsZUxvZ2ljYWxXaWR0aEZvckxpbmUoY3Vyci0+bGluZVRvcCgpLCBmaXJzdExpbmUpOworICAg
ICAgICAgICAgICAgIGZsb2F0IHRydW5jYXRlZFdpZHRoID0gYXZhaWxhYmxlTG9naWNhbFdpZHRo
Rm9yTGluZShjdXJyLT5saW5lVG9wKCksIGZpcnN0TGluZSA/IEluZGVudFRleHQgOiBEb05vdElu
ZGVudFRleHQpOwogICAgICAgICAgICAgICAgIHVwZGF0ZUxvZ2ljYWxXaWR0aEZvckFsaWdubWVu
dCh0ZXh0QWxpZ24sIGN1cnIsIG51bGxwdHIsIGxvZ2ljYWxMZWZ0LCB0b3RhbExvZ2ljYWxXaWR0
aCwgdHJ1bmNhdGVkV2lkdGgsIDApOwogICAgICAgICAgICAgICAgIGlmIChsdHIpCiAgICAgICAg
ICAgICAgICAgICAgIGN1cnItPmFkanVzdExvZ2ljYWxQb3NpdGlvbihsb2dpY2FsTGVmdCwgMCk7
CkBAIC0yMTQzLDEyICsyMTQzLDEyIEBAIExheW91dFVuaXQgUmVuZGVyQmxvY2tGbG93OjpzdGFy
dEFsaWduZWRPZmZzZXRGb3JMaW5lKExheW91dFVuaXQgcG9zaXRpb24sIEluZGVuCiAgICAgLy8g
VGhpcyBxdWlyayBpcyBmb3IgbGVnYWN5IGNvbnRlbnQgdGhhdCBkb2Vzbid0IHdvcmsgcHJvcGVy
bHkgd2l0aCB0aGUgY2VudGVyIHBvc2l0aW9uaW5nIHNjaGVtZQogICAgIC8vIGJlaW5nIGhvbm9y
ZWQgKGUuZy4sIGVwdWJzKS4KICAgICBpZiAoc2hvdWxkQXBwbHlJbmRlbnRUZXh0IHx8IGRvY3Vt
ZW50KCkuc2V0dGluZ3MoKS0+dXNlTGVnYWN5VGV4dEFsaWduUG9zaXRpb25lZEVsZW1lbnRCZWhh
dmlvcigpKSAvLyBGSVhNRTogSGFuZGxlIFRBRU5EIGhlcmUKLSAgICAgICAgcmV0dXJuIHN0YXJ0
T2Zmc2V0Rm9yTGluZShwb3NpdGlvbiwgc2hvdWxkSW5kZW50VGV4dCA9PSBJbmRlbnRUZXh0KTsK
KyAgICAgICAgcmV0dXJuIHN0YXJ0T2Zmc2V0Rm9yTGluZShwb3NpdGlvbiwgc2hvdWxkSW5kZW50
VGV4dCk7CiAKICAgICAvLyB1cGRhdGVMb2dpY2FsV2lkdGhGb3JBbGlnbm1lbnQoKSBoYW5kbGVz
IHRoZSBkaXJlY3Rpb24gb2YgdGhlIGJsb2NrIHNvIG5vIG5lZWQgdG8gY29uc2lkZXIgaXQgaGVy
ZQogICAgIGZsb2F0IHRvdGFsTG9naWNhbFdpZHRoID0gMDsKLSAgICBmbG9hdCBsb2dpY2FsTGVm
dCA9IGxvZ2ljYWxMZWZ0T2Zmc2V0Rm9yTGluZShsb2dpY2FsSGVpZ2h0KCksIGZhbHNlKTsKLSAg
ICBmbG9hdCBhdmFpbGFibGVMb2dpY2FsV2lkdGggPSBsb2dpY2FsUmlnaHRPZmZzZXRGb3JMaW5l
KGxvZ2ljYWxIZWlnaHQoKSwgZmFsc2UpIC0gbG9naWNhbExlZnQ7CisgICAgZmxvYXQgbG9naWNh
bExlZnQgPSBsb2dpY2FsTGVmdE9mZnNldEZvckxpbmUobG9naWNhbEhlaWdodCgpLCBEb05vdElu
ZGVudFRleHQpOworICAgIGZsb2F0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCA9IGxvZ2ljYWxSaWdo
dE9mZnNldEZvckxpbmUobG9naWNhbEhlaWdodCgpLCBEb05vdEluZGVudFRleHQpIC0gbG9naWNh
bExlZnQ7CiAKICAgICAvLyBGSVhNRTogQnVnIDEyOTMxMTogV2UgbmVlZCB0byBwYXNzIGEgdmFs
aWQgUm9vdElubGluZUJveCBoZXJlLCBjb25zaWRlcmluZyB0aGUgYmlkaSBsZXZlbCB1c2VkIHRv
IGNvbnN0cnVjdCB0aGUgbGluZS4KICAgICB1cGRhdGVMb2dpY2FsV2lkdGhGb3JBbGlnbm1lbnQo
dGV4dEFsaWduLCAwLCAwLCBsb2dpY2FsTGVmdCwgdG90YWxMb2dpY2FsV2lkdGgsIGF2YWlsYWJs
ZUxvZ2ljYWxXaWR0aCwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmlu
ZGV4IDI2YTA1YTAuLmE2YzliN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
Y3BwCkBAIC0xODY4LDcgKzE4NjgsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6c2hyaW5rTG9n
aWNhbFdpZHRoVG9Bdm9pZEZsb2F0cyhMYXlvdXRVbml0IGNoaWxkTWFyZ2luU3RhcgogICAgIH0K
IAogICAgIExheW91dFVuaXQgbG9naWNhbEhlaWdodCA9IGNiLT5sb2dpY2FsSGVpZ2h0Rm9yQ2hp
bGQoKnRoaXMpOwotICAgIExheW91dFVuaXQgcmVzdWx0ID0gY2ItPmF2YWlsYWJsZUxvZ2ljYWxX
aWR0aEZvckxpbmVJblJlZ2lvbihsb2dpY2FsVG9wUG9zaXRpb24sIGZhbHNlLCBjb250YWluaW5n
QmxvY2tSZWdpb24sIGxvZ2ljYWxIZWlnaHQpIC0gY2hpbGRNYXJnaW5TdGFydCAtIGNoaWxkTWFy
Z2luRW5kOworICAgIExheW91dFVuaXQgcmVzdWx0ID0gY2ItPmF2YWlsYWJsZUxvZ2ljYWxXaWR0
aEZvckxpbmVJblJlZ2lvbihsb2dpY2FsVG9wUG9zaXRpb24sIERvTm90SW5kZW50VGV4dCwgY29u
dGFpbmluZ0Jsb2NrUmVnaW9uLCBsb2dpY2FsSGVpZ2h0KSAtIGNoaWxkTWFyZ2luU3RhcnQgLSBj
aGlsZE1hcmdpbkVuZDsKIAogICAgIC8vIFdlIG5lZWQgdG8gc2VlIGlmIG1hcmdpbnMgb24gZWl0
aGVyIHRoZSBzdGFydCBzaWRlIG9yIHRoZSBlbmQgc2lkZSBjYW4gY29udGFpbiB0aGUgZmxvYXRz
IGluIHF1ZXN0aW9uLiBJZiB0aGV5IGNhbiwKICAgICAvLyB0aGVuIGp1c3QgdXNpbmcgdGhlIGxp
bmUgd2lkdGggaXMgaW5hY2N1cmF0ZS4gSW4gdGhlIGNhc2Ugd2hlcmUgYSBmbG9hdCBjb21wbGV0
ZWx5IGZpdHMsIHdlIGRvbid0IG5lZWQgdG8gdXNlIHRoZSBsaW5lCkBAIC0xODc4LDcgKzE4Nzgs
NyBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6c2hyaW5rTG9naWNhbFdpZHRoVG9Bdm9pZEZsb2F0
cyhMYXlvdXRVbml0IGNoaWxkTWFyZ2luU3RhcgogICAgIGlmIChjaGlsZE1hcmdpblN0YXJ0ID4g
MCkgewogICAgICAgICBMYXlvdXRVbml0IHN0YXJ0Q29udGVudFNpZGUgPSBjYi0+c3RhcnRPZmZz
ZXRGb3JDb250ZW50KGNvbnRhaW5pbmdCbG9ja1JlZ2lvbik7CiAgICAgICAgIExheW91dFVuaXQg
c3RhcnRDb250ZW50U2lkZVdpdGhNYXJnaW4gPSBzdGFydENvbnRlbnRTaWRlICsgY2hpbGRNYXJn
aW5TdGFydDsKLSAgICAgICAgTGF5b3V0VW5pdCBzdGFydE9mZnNldCA9IGNiLT5zdGFydE9mZnNl
dEZvckxpbmVJblJlZ2lvbihsb2dpY2FsVG9wUG9zaXRpb24sIGZhbHNlLCBjb250YWluaW5nQmxv
Y2tSZWdpb24sIGxvZ2ljYWxIZWlnaHQpOworICAgICAgICBMYXlvdXRVbml0IHN0YXJ0T2Zmc2V0
ID0gY2ItPnN0YXJ0T2Zmc2V0Rm9yTGluZUluUmVnaW9uKGxvZ2ljYWxUb3BQb3NpdGlvbiwgRG9O
b3RJbmRlbnRUZXh0LCBjb250YWluaW5nQmxvY2tSZWdpb24sIGxvZ2ljYWxIZWlnaHQpOwogICAg
ICAgICBpZiAoc3RhcnRPZmZzZXQgPiBzdGFydENvbnRlbnRTaWRlV2l0aE1hcmdpbikKICAgICAg
ICAgICAgIHJlc3VsdCArPSBjaGlsZE1hcmdpblN0YXJ0OwogICAgICAgICBlbHNlCkBAIC0xODg4
LDcgKzE4ODgsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6c2hyaW5rTG9naWNhbFdpZHRoVG9B
dm9pZEZsb2F0cyhMYXlvdXRVbml0IGNoaWxkTWFyZ2luU3RhcgogICAgIGlmIChjaGlsZE1hcmdp
bkVuZCA+IDApIHsKICAgICAgICAgTGF5b3V0VW5pdCBlbmRDb250ZW50U2lkZSA9IGNiLT5lbmRP
ZmZzZXRGb3JDb250ZW50KGNvbnRhaW5pbmdCbG9ja1JlZ2lvbik7CiAgICAgICAgIExheW91dFVu
aXQgZW5kQ29udGVudFNpZGVXaXRoTWFyZ2luID0gZW5kQ29udGVudFNpZGUgKyBjaGlsZE1hcmdp
bkVuZDsKLSAgICAgICAgTGF5b3V0VW5pdCBlbmRPZmZzZXQgPSBjYi0+ZW5kT2Zmc2V0Rm9yTGlu
ZUluUmVnaW9uKGxvZ2ljYWxUb3BQb3NpdGlvbiwgZmFsc2UsIGNvbnRhaW5pbmdCbG9ja1JlZ2lv
biwgbG9naWNhbEhlaWdodCk7CisgICAgICAgIExheW91dFVuaXQgZW5kT2Zmc2V0ID0gY2ItPmVu
ZE9mZnNldEZvckxpbmVJblJlZ2lvbihsb2dpY2FsVG9wUG9zaXRpb24sIERvTm90SW5kZW50VGV4
dCwgY29udGFpbmluZ0Jsb2NrUmVnaW9uLCBsb2dpY2FsSGVpZ2h0KTsKICAgICAgICAgaWYgKGVu
ZE9mZnNldCA+IGVuZENvbnRlbnRTaWRlV2l0aE1hcmdpbikKICAgICAgICAgICAgIHJlc3VsdCAr
PSBjaGlsZE1hcmdpbkVuZDsKICAgICAgICAgZWxzZQpAQCAtMTk1Miw3ICsxOTUyLDcgQEAgTGF5
b3V0VW5pdCBSZW5kZXJCb3g6OmNvbnRhaW5pbmdCbG9ja0F2YWlsYWJsZUxpbmVXaWR0aEluUmVn
aW9uKFJlbmRlclJlZ2lvbiogcmUKICAgICAgICAgbG9naWNhbFRvcFBvc2l0aW9uID0gc3RkOjpt
YXgobG9naWNhbFRvcFBvc2l0aW9uLCBsb2dpY2FsVG9wUG9zaXRpb24gKyBvZmZzZXRGcm9tTG9n
aWNhbFRvcE9mUmVnaW9uKTsKICAgICAgICAgY29udGFpbmluZ0Jsb2NrUmVnaW9uID0gY2ItPmNs
YW1wVG9TdGFydEFuZEVuZFJlZ2lvbnMocmVnaW9uKTsKICAgICB9Ci0gICAgcmV0dXJuIGNiLT5h
dmFpbGFibGVMb2dpY2FsV2lkdGhGb3JMaW5lSW5SZWdpb24obG9naWNhbFRvcFBvc2l0aW9uLCBm
YWxzZSwgY29udGFpbmluZ0Jsb2NrUmVnaW9uLCBhdmFpbGFibGVMb2dpY2FsSGVpZ2h0KEluY2x1
ZGVNYXJnaW5Cb3JkZXJQYWRkaW5nKSk7CisgICAgcmV0dXJuIGNiLT5hdmFpbGFibGVMb2dpY2Fs
V2lkdGhGb3JMaW5lSW5SZWdpb24obG9naWNhbFRvcFBvc2l0aW9uLCBEb05vdEluZGVudFRleHQs
IGNvbnRhaW5pbmdCbG9ja1JlZ2lvbiwgYXZhaWxhYmxlTG9naWNhbEhlaWdodChJbmNsdWRlTWFy
Z2luQm9yZGVyUGFkZGluZykpOwogfQogCiBMYXlvdXRVbml0IFJlbmRlckJveDo6cGVycGVuZGlj
dWxhckNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxIZWlnaHQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcApp
bmRleCBhZmNkYjc3Li5iYjFlYjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcApAQCAtMTAxNCwxMyArMTAx
NCwxMyBAQCB2b2lkIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6YXBwbHlMaW5lQ2xhbXAo
RmxleEJveEl0ZXJhdG9yJiBpdGVyYXRvciwgYm9vbAogICAgICAgICBpZiAoIWxlZnRUb1JpZ2h0
KQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgTGF5b3V0VW5pdCBibG9ja1JpZ2h0
RWRnZSA9IGRlc3RCbG9jay5sb2dpY2FsUmlnaHRPZmZzZXRGb3JMaW5lKGxhc3RWaXNpYmxlTGlu
ZS0+eSgpLCBmYWxzZSk7CisgICAgICAgIExheW91dFVuaXQgYmxvY2tSaWdodEVkZ2UgPSBkZXN0
QmxvY2subG9naWNhbFJpZ2h0T2Zmc2V0Rm9yTGluZShsYXN0VmlzaWJsZUxpbmUtPnkoKSwgRG9O
b3RJbmRlbnRUZXh0KTsKICAgICAgICAgaWYgKCFsYXN0VmlzaWJsZUxpbmUtPmxpbmVDYW5BY2Nv
bW1vZGF0ZUVsbGlwc2lzKGxlZnRUb1JpZ2h0LCBibG9ja1JpZ2h0RWRnZSwgbGFzdFZpc2libGVM
aW5lLT54KCkgKyBsYXN0VmlzaWJsZUxpbmUtPmxvZ2ljYWxXaWR0aCgpLCB0b3RhbFdpZHRoKSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIC8vIExldCB0aGUgdHJ1bmNhdGlvbiBj
b2RlIGtpY2sgaW4uCiAgICAgICAgIC8vIEZJWE1FOiB0aGUgdGV4dCBhbGlnbm1lbnQgc2hvdWxk
IGJlIHJlY29tcHV0ZWQgYWZ0ZXIgdGhlIHdpZHRoIGNoYW5nZXMgZHVlIHRvIHRydW5jYXRpb24u
Ci0gICAgICAgIExheW91dFVuaXQgYmxvY2tMZWZ0RWRnZSA9IGRlc3RCbG9jay5sb2dpY2FsTGVm
dE9mZnNldEZvckxpbmUobGFzdFZpc2libGVMaW5lLT55KCksIGZhbHNlKTsKKyAgICAgICAgTGF5
b3V0VW5pdCBibG9ja0xlZnRFZGdlID0gZGVzdEJsb2NrLmxvZ2ljYWxMZWZ0T2Zmc2V0Rm9yTGlu
ZShsYXN0VmlzaWJsZUxpbmUtPnkoKSwgRG9Ob3RJbmRlbnRUZXh0KTsKICAgICAgICAgbGFzdFZp
c2libGVMaW5lLT5wbGFjZUVsbGlwc2lzKGFuY2hvckJveCA/IGVsbGlwc2lzQW5kU3BhY2VTdHIg
OiBlbGxpcHNpc1N0ciwgbGVmdFRvUmlnaHQsIGJsb2NrTGVmdEVkZ2UsIGJsb2NrUmlnaHRFZGdl
LCB0b3RhbFdpZHRoLCBhbmNob3JCb3gpOwogICAgICAgICBkZXN0QmxvY2suc2V0SGFzTWFya3Vw
VHJ1bmNhdGlvbih0cnVlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGlzdEl0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxpc3RJdGVtLmNwcAppbmRleCAxNmM4MmExLi5mOWM4ZmYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5jcHAKQEAgLTM1MSw3ICszNTEsNyBAQCB2b2lkIFJl
bmRlckxpc3RJdGVtOjpwb3NpdGlvbkxpc3RNYXJrZXIoKQogCiAgICAgICAgIC8vIEZJWE1FOiBO
ZWVkIHRvIGFjY291bnQgZm9yIHJlbGF0aXZlIHBvc2l0aW9uaW5nIGluIHRoZSBsYXlvdXQgb3Zl
cmZsb3cuCiAgICAgICAgIGlmIChzdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkgewot
ICAgICAgICAgICAgTGF5b3V0VW5pdCBsZWZ0TGluZU9mZnNldCA9IGxvZ2ljYWxMZWZ0T2Zmc2V0
Rm9yTGluZShibG9ja09mZnNldCwgbG9naWNhbExlZnRPZmZzZXRGb3JMaW5lKGJsb2NrT2Zmc2V0
LCBmYWxzZSksIGZhbHNlKTsKKyAgICAgICAgICAgIExheW91dFVuaXQgbGVmdExpbmVPZmZzZXQg
PSBsb2dpY2FsTGVmdE9mZnNldEZvckxpbmUoYmxvY2tPZmZzZXQsIGxvZ2ljYWxMZWZ0T2Zmc2V0
Rm9yTGluZShibG9ja09mZnNldCwgRG9Ob3RJbmRlbnRUZXh0KSwgZmFsc2UpOwogICAgICAgICAg
ICAgbWFya2VyTG9naWNhbExlZnQgPSBsZWZ0TGluZU9mZnNldCAtIGxpbmVPZmZzZXQgLSBwYWRk
aW5nU3RhcnQoKSAtIGJvcmRlclN0YXJ0KCkgKyBtX21hcmtlci0+bWFyZ2luU3RhcnQoKTsKICAg
ICAgICAgICAgIG1fbWFya2VyLT5pbmxpbmVCb3hXcmFwcGVyKCktPmFkanVzdExpbmVEaXJlY3Rp
b25Qb3NpdGlvbihtYXJrZXJMb2dpY2FsTGVmdCAtIG1hcmtlck9sZExvZ2ljYWxMZWZ0KTsKICAg
ICAgICAgICAgIGZvciAoSW5saW5lRmxvd0JveCogYm94ID0gbV9tYXJrZXItPmlubGluZUJveFdy
YXBwZXIoKS0+cGFyZW50KCk7IGJveDsgYm94ID0gYm94LT5wYXJlbnQoKSkgewpAQCAtMzc0LDcg
KzM3NCw3IEBAIHZvaWQgUmVuZGVyTGlzdEl0ZW06OnBvc2l0aW9uTGlzdE1hcmtlcigpCiAgICAg
ICAgICAgICAgICAgICAgIGhpdFNlbGZQYWludGluZ0xheWVyID0gdHJ1ZTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIExheW91dFVuaXQgcmlnaHRMaW5lT2Zm
c2V0ID0gbG9naWNhbFJpZ2h0T2Zmc2V0Rm9yTGluZShibG9ja09mZnNldCwgbG9naWNhbFJpZ2h0
T2Zmc2V0Rm9yTGluZShibG9ja09mZnNldCwgZmFsc2UpLCBmYWxzZSk7CisgICAgICAgICAgICBM
YXlvdXRVbml0IHJpZ2h0TGluZU9mZnNldCA9IGxvZ2ljYWxSaWdodE9mZnNldEZvckxpbmUoYmxv
Y2tPZmZzZXQsIGxvZ2ljYWxSaWdodE9mZnNldEZvckxpbmUoYmxvY2tPZmZzZXQsIERvTm90SW5k
ZW50VGV4dCksIGZhbHNlKTsKICAgICAgICAgICAgIG1hcmtlckxvZ2ljYWxMZWZ0ID0gcmlnaHRM
aW5lT2Zmc2V0IC0gbGluZU9mZnNldCArIHBhZGRpbmdTdGFydCgpICsgYm9yZGVyU3RhcnQoKSAr
IG1fbWFya2VyLT5tYXJnaW5FbmQoKTsKICAgICAgICAgICAgIG1fbWFya2VyLT5pbmxpbmVCb3hX
cmFwcGVyKCktPmFkanVzdExpbmVEaXJlY3Rpb25Qb3NpdGlvbihtYXJrZXJMb2dpY2FsTGVmdCAt
IG1hcmtlck9sZExvZ2ljYWxMZWZ0KTsKICAgICAgICAgICAgIGZvciAoSW5saW5lRmxvd0JveCog
Ym94ID0gbV9tYXJrZXItPmlubGluZUJveFdyYXBwZXIoKS0+cGFyZW50KCk7IGJveDsgYm94ID0g
Ym94LT5wYXJlbnQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jv
b3RJbmxpbmVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3gu
Y3BwCmluZGV4IDM0Njc3ZDkuLjhkOTc4OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9Sb290SW5saW5lQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
Um9vdElubGluZUJveC5jcHAKQEAgLTYzNSwxMCArNjM1LDEwIEBAIExheW91dFVuaXQgUm9vdElu
bGluZUJveDo6c2VsZWN0aW9uVG9wKCkgY29uc3QKICAgICAgICAgLy8gVGhpcyBsaW5lIGhhcyBh
Y3R1YWxseSBiZWVuIG1vdmVkIGZ1cnRoZXIgZG93biwgcHJvYmFibHkgZnJvbSBhIGxhcmdlIGxp
bmUtaGVpZ2h0LCBidXQgcG9zc2libHkgYmVjYXVzZSB0aGUKICAgICAgICAgLy8gbGluZSB3YXMg
Zm9yY2VkIHRvIGNsZWFyIGZsb2F0cy4gIElmIHNvLCBsZXQncyBjaGVjayB0aGUgb2Zmc2V0cywg
YW5kIG9ubHkgYmUgd2lsbGluZyB0byB1c2UgdGhlIHByZXZpb3VzCiAgICAgICAgIC8vIGxpbmUn
cyBib3R0b20gaWYgdGhlIG9mZnNldHMgYXJlIGdyZWF0ZXIgb24gYm90aCBzaWRlcy4KLSAgICAg
ICAgTGF5b3V0VW5pdCBwcmV2TGVmdCA9IGJsb2NrRmxvdygpLmxvZ2ljYWxMZWZ0T2Zmc2V0Rm9y
TGluZShwcmV2Qm90dG9tLCBmYWxzZSk7Ci0gICAgICAgIExheW91dFVuaXQgcHJldlJpZ2h0ID0g
YmxvY2tGbG93KCkubG9naWNhbFJpZ2h0T2Zmc2V0Rm9yTGluZShwcmV2Qm90dG9tLCBmYWxzZSk7
Ci0gICAgICAgIExheW91dFVuaXQgbmV3TGVmdCA9IGJsb2NrRmxvdygpLmxvZ2ljYWxMZWZ0T2Zm
c2V0Rm9yTGluZShzZWxlY3Rpb25Ub3AsIGZhbHNlKTsKLSAgICAgICAgTGF5b3V0VW5pdCBuZXdS
aWdodCA9IGJsb2NrRmxvdygpLmxvZ2ljYWxSaWdodE9mZnNldEZvckxpbmUoc2VsZWN0aW9uVG9w
LCBmYWxzZSk7CisgICAgICAgIExheW91dFVuaXQgcHJldkxlZnQgPSBibG9ja0Zsb3coKS5sb2dp
Y2FsTGVmdE9mZnNldEZvckxpbmUocHJldkJvdHRvbSwgRG9Ob3RJbmRlbnRUZXh0KTsKKyAgICAg
ICAgTGF5b3V0VW5pdCBwcmV2UmlnaHQgPSBibG9ja0Zsb3coKS5sb2dpY2FsUmlnaHRPZmZzZXRG
b3JMaW5lKHByZXZCb3R0b20sIERvTm90SW5kZW50VGV4dCk7CisgICAgICAgIExheW91dFVuaXQg
bmV3TGVmdCA9IGJsb2NrRmxvdygpLmxvZ2ljYWxMZWZ0T2Zmc2V0Rm9yTGluZShzZWxlY3Rpb25U
b3AsIERvTm90SW5kZW50VGV4dCk7CisgICAgICAgIExheW91dFVuaXQgbmV3UmlnaHQgPSBibG9j
a0Zsb3coKS5sb2dpY2FsUmlnaHRPZmZzZXRGb3JMaW5lKHNlbGVjdGlvblRvcCwgRG9Ob3RJbmRl
bnRUZXh0KTsKICAgICAgICAgaWYgKHByZXZMZWZ0ID4gbmV3TGVmdCB8fCBwcmV2UmlnaHQgPCBu
ZXdSaWdodCkKICAgICAgICAgICAgIHJldHVybiBzZWxlY3Rpb25Ub3A7CiAgICAgfQpAQCAtNzE4
LDEwICs3MTgsMTAgQEAgTGF5b3V0VW5pdCBSb290SW5saW5lQm94OjpzZWxlY3Rpb25Cb3R0b20o
KSBjb25zdAogICAgICAgICAvLyBUaGUgbmV4dCBsaW5lIGhhcyBhY3R1YWxseSBiZWVuIG1vdmVk
IGZ1cnRoZXIgb3ZlciwgcHJvYmFibHkgZnJvbSBhIGxhcmdlIGxpbmUtaGVpZ2h0LCBidXQgcG9z
c2libHkgYmVjYXVzZSB0aGUKICAgICAgICAgLy8gbGluZSB3YXMgZm9yY2VkIHRvIGNsZWFyIGZs
b2F0cy4gIElmIHNvLCBsZXQncyBjaGVjayB0aGUgb2Zmc2V0cywgYW5kIG9ubHkgYmUgd2lsbGlu
ZyB0byB1c2UgdGhlIG5leHQKICAgICAgICAgLy8gbGluZSdzIHRvcCBpZiB0aGUgb2Zmc2V0cyBh
cmUgZ3JlYXRlciBvbiBib3RoIHNpZGVzLgotICAgICAgICBMYXlvdXRVbml0IG5leHRMZWZ0ID0g
YmxvY2tGbG93KCkubG9naWNhbExlZnRPZmZzZXRGb3JMaW5lKG5leHRUb3AsIGZhbHNlKTsKLSAg
ICAgICAgTGF5b3V0VW5pdCBuZXh0UmlnaHQgPSBibG9ja0Zsb3coKS5sb2dpY2FsUmlnaHRPZmZz
ZXRGb3JMaW5lKG5leHRUb3AsIGZhbHNlKTsKLSAgICAgICAgTGF5b3V0VW5pdCBuZXdMZWZ0ID0g
YmxvY2tGbG93KCkubG9naWNhbExlZnRPZmZzZXRGb3JMaW5lKHNlbGVjdGlvbkJvdHRvbSwgZmFs
c2UpOwotICAgICAgICBMYXlvdXRVbml0IG5ld1JpZ2h0ID0gYmxvY2tGbG93KCkubG9naWNhbFJp
Z2h0T2Zmc2V0Rm9yTGluZShzZWxlY3Rpb25Cb3R0b20sIGZhbHNlKTsKKyAgICAgICAgTGF5b3V0
VW5pdCBuZXh0TGVmdCA9IGJsb2NrRmxvdygpLmxvZ2ljYWxMZWZ0T2Zmc2V0Rm9yTGluZShuZXh0
VG9wLCBEb05vdEluZGVudFRleHQpOworICAgICAgICBMYXlvdXRVbml0IG5leHRSaWdodCA9IGJs
b2NrRmxvdygpLmxvZ2ljYWxSaWdodE9mZnNldEZvckxpbmUobmV4dFRvcCwgRG9Ob3RJbmRlbnRU
ZXh0KTsKKyAgICAgICAgTGF5b3V0VW5pdCBuZXdMZWZ0ID0gYmxvY2tGbG93KCkubG9naWNhbExl
ZnRPZmZzZXRGb3JMaW5lKHNlbGVjdGlvbkJvdHRvbSwgRG9Ob3RJbmRlbnRUZXh0KTsKKyAgICAg
ICAgTGF5b3V0VW5pdCBuZXdSaWdodCA9IGJsb2NrRmxvdygpLmxvZ2ljYWxSaWdodE9mZnNldEZv
ckxpbmUoc2VsZWN0aW9uQm90dG9tLCBEb05vdEluZGVudFRleHQpOwogICAgICAgICBpZiAobmV4
dExlZnQgPiBuZXdMZWZ0IHx8IG5leHRSaWdodCA8IG5ld1JpZ2h0KQogICAgICAgICAgICAgcmV0
dXJuIHNlbGVjdGlvbkJvdHRvbTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
U2ltcGxlTGluZUxheW91dC5jcHAKaW5kZXggNmY5NzY3Yy4uZjM1ZjYxNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcApAQCAtMzMxLDcgKzMzMSw3
IEBAIHN0YXRpYyBBdm9pZGFuY2VSZWFzb25GbGFncyBjYW5Vc2VGb3JXaXRoUmVhc29uKGNvbnN0
IFJlbmRlckJsb2NrRmxvdyYgZmxvdywgSW5jCiAgICAgICAgICAgICAgICAgaWYgKGZsb2F0aW5n
T2JqZWN0LT5yZW5kZXJlcigpLnNoYXBlT3V0c2lkZUluZm8oKSkKICAgICAgICAgICAgICAgICAg
ICAgU0VUX1JFQVNPTl9BTkRfUkVUVVJOX0lGX05FRURFRChGbG93SGFzVW5zdXBwb3J0ZWRGbG9h
dCwgcmVhc29ucywgaW5jbHVkZVJlYXNvbnMpOwogI2VuZGlmCi0gICAgICAgICAgICAgICAgZmxv
YXQgYXZhaWxhYmxlV2lkdGggPSBmbG93LmF2YWlsYWJsZUxvZ2ljYWxXaWR0aEZvckxpbmUoZmxv
YXRpbmdPYmplY3QtPnkoKSwgZmFsc2UpOworICAgICAgICAgICAgICAgIGZsb2F0IGF2YWlsYWJs
ZVdpZHRoID0gZmxvdy5hdmFpbGFibGVMb2dpY2FsV2lkdGhGb3JMaW5lKGZsb2F0aW5nT2JqZWN0
LT55KCksIERvTm90SW5kZW50VGV4dCk7CiAgICAgICAgICAgICAgICAgaWYgKGF2YWlsYWJsZVdp
ZHRoIDwgbWluaW11bVdpZHRoTmVlZGVkKQogICAgICAgICAgICAgICAgICAgICBTRVRfUkVBU09O
X0FORF9SRVRVUk5fSUZfTkVFREVEKEZsb3dIYXNVbnN1cHBvcnRlZEZsb2F0LCByZWFzb25zLCBp
bmNsdWRlUmVhc29ucyk7CiAgICAgICAgICAgICB9CkBAIC01NjgsOCArNTY4LDkgQEAgc3RhdGlj
IHZvaWQgdXBkYXRlTGluZUNvbnN0cmFpbnMoY29uc3QgUmVuZGVyQmxvY2tGbG93JiBmbG93LCBM
aW5lU3RhdGUmIGxpbmUsIGIKICAgICBib29sIHNob3VsZEFwcGx5VGV4dEluZGVudCA9ICFmbG93
LmlzQW5vbnltb3VzKCkgfHwgZmxvdy5wYXJlbnQoKS0+Zmlyc3RDaGlsZCgpID09ICZmbG93Owog
ICAgIExheW91dFVuaXQgaGVpZ2h0ID0gZmxvdy5sb2dpY2FsSGVpZ2h0KCk7CiAgICAgTGF5b3V0
VW5pdCBsb2dpY2FsSGVpZ2h0ID0gZmxvdy5taW5MaW5lSGVpZ2h0Rm9yUmVwbGFjZWRSZW5kZXJl
cihmYWxzZSwgMCk7Ci0gICAgZmxvYXQgbG9naWNhbFJpZ2h0T2Zmc2V0ID0gZmxvdy5sb2dpY2Fs
UmlnaHRPZmZzZXRGb3JMaW5lKGhlaWdodCwgZmFsc2UsIGxvZ2ljYWxIZWlnaHQpOwotICAgIGxp
bmUuc2V0TG9naWNhbExlZnRPZmZzZXQoZmxvdy5sb2dpY2FsTGVmdE9mZnNldEZvckxpbmUoaGVp
Z2h0LCBmYWxzZSwgbG9naWNhbEhlaWdodCkgKyAoc2hvdWxkQXBwbHlUZXh0SW5kZW50ICYmIGlz
Rmlyc3RMaW5lID8gZmxvdy50ZXh0SW5kZW50T2Zmc2V0KCkgOiBMYXlvdXRVbml0KDApKSk7Cisg
ICAgZmxvYXQgbG9naWNhbFJpZ2h0T2Zmc2V0ID0gZmxvdy5sb2dpY2FsUmlnaHRPZmZzZXRGb3JM
aW5lKGhlaWdodCwgRG9Ob3RJbmRlbnRUZXh0LCBsb2dpY2FsSGVpZ2h0KTsKKyAgICBsaW5lLnNl
dExvZ2ljYWxMZWZ0T2Zmc2V0KGZsb3cubG9naWNhbExlZnRPZmZzZXRGb3JMaW5lKGhlaWdodCwg
RG9Ob3RJbmRlbnRUZXh0LCBsb2dpY2FsSGVpZ2h0KSArCisgICAgICAgIChzaG91bGRBcHBseVRl
eHRJbmRlbnQgJiYgaXNGaXJzdExpbmUgPyBmbG93LnRleHRJbmRlbnRPZmZzZXQoKSA6IExheW91
dFVuaXQoMCkpKTsKICAgICBsaW5lLnNldEF2YWlsYWJsZVdpZHRoKHN0ZDo6bWF4PGZsb2F0Pigw
LCBsb2dpY2FsUmlnaHRPZmZzZXQgLSBsaW5lLmxvZ2ljYWxMZWZ0T2Zmc2V0KCkpKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUJyZWFrZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUJyZWFrZXIuY3BwCmluZGV4IDU1
ZWE2NjUuLjZlYWZhMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5l
L0xpbmVCcmVha2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5l
QnJlYWtlci5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgdm9pZCBMaW5lQnJlYWtlcjo6c2tpcExlYWRp
bmdXaGl0ZXNwYWNlKElubGluZUJpZGlSZXNvbHZlciYgcmVzb2x2ZXIsIExpbmVJbmZvJgogICAg
IHdoaWxlICghcmVzb2x2ZXIucG9zaXRpb24oKS5hdEVuZCgpICYmICFyZXF1aXJlc0xpbmVCb3go
cmVzb2x2ZXIucG9zaXRpb24oKSwgbGluZUluZm8sIExlYWRpbmdXaGl0ZXNwYWNlKSkgewogICAg
ICAgICBSZW5kZXJPYmplY3QmIG9iamVjdCA9ICpyZXNvbHZlci5wb3NpdGlvbigpLnJlbmRlcmVy
KCk7CiAgICAgICAgIGlmIChvYmplY3QuaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpIHsKLSAgICAg
ICAgICAgIHNldFN0YXRpY1Bvc2l0aW9ucyhtX2Jsb2NrLCBkb3duY2FzdDxSZW5kZXJCb3g+KG9i
amVjdCksIHdpZHRoLnNob3VsZEluZGVudFRleHQoKSA/IEluZGVudFRleHQgOiBEb05vdEluZGVu
dFRleHQpOworICAgICAgICAgICAgc2V0U3RhdGljUG9zaXRpb25zKG1fYmxvY2ssIGRvd25jYXN0
PFJlbmRlckJveD4ob2JqZWN0KSwgd2lkdGguc2hvdWxkSW5kZW50VGV4dCgpKTsKICAgICAgICAg
ICAgIGlmIChvYmplY3Quc3R5bGUoKS5pc09yaWdpbmFsRGlzcGxheUlubGluZVR5cGUoKSkgewog
ICAgICAgICAgICAgICAgIHJlc29sdmVyLnJ1bnMoKS5hZGRSdW4obmV3IEJpZGlSdW4oMCwgMSwg
b2JqZWN0LCByZXNvbHZlci5jb250ZXh0KCksIHJlc29sdmVyLmRpcigpKSk7CiAgICAgICAgICAg
ICAgICAgbGluZUluZm8uaW5jcmVtZW50UnVuc0Zyb21MZWFkaW5nV2hpdGVzcGFjZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZVdpZHRoLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVXaWR0aC5jcHAKaW5kZXggZmNmYjA0OC4u
ZjNiMTJiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZVdp
ZHRoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lV2lkdGguY3Bw
CkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBMaW5lV2lkdGg6OnNocmlua0F2YWlsYWJsZVdpZHRo
Rm9yTmV3RmxvYXRJZk5lZWRlZChjb25zdCBGbG9hdGluZ09iamVjdCYgbmUKIAogICAgIGlmIChu
ZXdGbG9hdC50eXBlKCkgPT0gRmxvYXRpbmdPYmplY3Q6OkZsb2F0TGVmdCkgewogICAgICAgICBm
bG9hdCBuZXdMZWZ0ID0gbV9ibG9jay5sb2dpY2FsUmlnaHRGb3JGbG9hdChuZXdGbG9hdCk7Ci0g
ICAgICAgIGlmIChzaG91bGRJbmRlbnRUZXh0KCkgJiYgbV9ibG9jay5zdHlsZSgpLmlzTGVmdFRv
UmlnaHREaXJlY3Rpb24oKSkKKyAgICAgICAgaWYgKHNob3VsZEluZGVudFRleHQoKSA9PSBJbmRl
bnRUZXh0ICYmIG1fYmxvY2suc3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpCiAgICAg
ICAgICAgICBuZXdMZWZ0ICs9IGZsb29yVG9JbnQobV9ibG9jay50ZXh0SW5kZW50T2Zmc2V0KCkp
OwogI2lmIEVOQUJMRShDU1NfU0hBUEVTKQogICAgICAgICBpZiAoc2hhcGVEZWx0YXMuaXNWYWxp
ZCgpKSB7CkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBMaW5lV2lkdGg6OnNocmlua0F2YWlsYWJs
ZVdpZHRoRm9yTmV3RmxvYXRJZk5lZWRlZChjb25zdCBGbG9hdGluZ09iamVjdCYgbmUKICAgICAg
ICAgbV9sZWZ0ID0gc3RkOjptYXg8ZmxvYXQ+KG1fbGVmdCwgbmV3TGVmdCk7CiAgICAgfSBlbHNl
IHsKICAgICAgICAgZmxvYXQgbmV3UmlnaHQgPSBtX2Jsb2NrLmxvZ2ljYWxMZWZ0Rm9yRmxvYXQo
bmV3RmxvYXQpOwotICAgICAgICBpZiAoc2hvdWxkSW5kZW50VGV4dCgpICYmICFtX2Jsb2NrLnN0
eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKQorICAgICAgICBpZiAoc2hvdWxkSW5kZW50
VGV4dCgpID09IEluZGVudFRleHQgJiYgIW1fYmxvY2suc3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGly
ZWN0aW9uKCkpCiAgICAgICAgICAgICBuZXdSaWdodCAtPSBmbG9vclRvSW50KG1fYmxvY2sudGV4
dEluZGVudE9mZnNldCgpKTsKICNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKICAgICAgICAgaWYgKHNo
YXBlRGVsdGFzLmlzVmFsaWQoKSkgewpAQCAtMTU2LDcgKzE1Niw4IEBAIHZvaWQgTGluZVdpZHRo
OjphcHBseU92ZXJoYW5nKFJlbmRlclJ1YnlSdW4qIHJ1YnlSdW4sIFJlbmRlck9iamVjdCogc3Rh
cnRSZW5kZXJlCiAgICAgbV9vdmVyaGFuZ1dpZHRoICs9IHN0YXJ0T3ZlcmhhbmcgKyBlbmRPdmVy
aGFuZzsKIH0KIAotaW5saW5lIHN0YXRpYyBmbG9hdCBhdmFpbGFibGVXaWR0aEF0T2Zmc2V0KGNv
bnN0IFJlbmRlckJsb2NrRmxvdyYgYmxvY2ssIGNvbnN0IExheW91dFVuaXQmIG9mZnNldCwgYm9v
bCBzaG91bGRJbmRlbnRUZXh0LCBmbG9hdCYgbmV3TGluZUxlZnQsIGZsb2F0JiBuZXdMaW5lUmln
aHQsIGNvbnN0IExheW91dFVuaXQmIGxpbmVIZWlnaHQgPSAwKQoraW5saW5lIHN0YXRpYyBmbG9h
dCBhdmFpbGFibGVXaWR0aEF0T2Zmc2V0KGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgYmxvY2ssIGNv
bnN0IExheW91dFVuaXQmIG9mZnNldCwgSW5kZW50VGV4dE9yTm90IHNob3VsZEluZGVudFRleHQs
CisgICAgZmxvYXQmIG5ld0xpbmVMZWZ0LCBmbG9hdCYgbmV3TGluZVJpZ2h0LCBjb25zdCBMYXlv
dXRVbml0JiBsaW5lSGVpZ2h0ID0gMCkKIHsKICAgICBuZXdMaW5lTGVmdCA9IGJsb2NrLmxvZ2lj
YWxMZWZ0T2Zmc2V0Rm9yTGluZShvZmZzZXQsIHNob3VsZEluZGVudFRleHQsIGxpbmVIZWlnaHQp
OwogICAgIG5ld0xpbmVSaWdodCA9IGJsb2NrLmxvZ2ljYWxSaWdodE9mZnNldEZvckxpbmUob2Zm
c2V0LCBzaG91bGRJbmRlbnRUZXh0LCBsaW5lSGVpZ2h0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVXaWR0aC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL2xpbmUvTGluZVdpZHRoLmgKaW5kZXggOTlhNTA1My4uOTQ5ZDJjMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZVdpZHRoLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZVdpZHRoLmgKQEAgLTc2LDcgKzc2LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgYXBwbHlPdmVyaGFuZyhSZW5kZXJSdWJ5UnVuKiwgUmVuZGVyT2JqZWN0KiBz
dGFydFJlbmRlcmVyLCBSZW5kZXJPYmplY3QqIGVuZFJlbmRlcmVyKTsKICAgICB2b2lkIGZpdEJl
bG93RmxvYXRzKGJvb2wgaXNGaXJzdExpbmUgPSBmYWxzZSk7CiAgICAgdm9pZCBzZXRUcmFpbGlu
Z1doaXRlc3BhY2VXaWR0aChmbG9hdCBjb2xsYXBzZWRXaGl0ZXNwYWNlLCBmbG9hdCBib3JkZXJQ
YWRkaW5nTWFyZ2luID0gMCk7Ci0gICAgYm9vbCBzaG91bGRJbmRlbnRUZXh0KCkgY29uc3QgeyBy
ZXR1cm4gbV9zaG91bGRJbmRlbnRUZXh0ID09IEluZGVudFRleHQ7IH0KKyAgICBJbmRlbnRUZXh0
T3JOb3Qgc2hvdWxkSW5kZW50VGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkSW5kZW50VGV4
dDsgfQogCiBwcml2YXRlOgogICAgIHZvaWQgY29tcHV0ZUF2YWlsYWJsZVdpZHRoRnJvbUxlZnRB
bmRSaWdodCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272083</attachid>
            <date>2016-02-23 20:46:24 -0800</date>
            <delta_ts>2016-02-24 09:20:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.txt</filename>
            <type>text/plain</type>
            <size>34244</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2MTg2NGY3Li44OTIwZDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNTgg
QEAKIDIwMTYtMDItMjMgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAorICAgICAg
ICBVc2UgSW5kZW50VGV4dE9yTm90IGluc3RlYWQgb2YgcGFzc2luZyBpc0ZpcnN0TGluZS9zaG91
bGRJbmRlbnRUZXh0IGFzIGJvb2wuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTQ2MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBObyBjaGFuZ2UgaW4gYmVoYXZpb3VyLgorCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpjb21w
dXRlU3RhcnRQb3NpdGlvbkRlbHRhRm9yQ2hpbGRBdm9pZGluZ0Zsb2F0cyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCbG9jazo6bG9naWNhbExlZnRTZWxlY3Rpb25PZmZzZXQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxvZ2ljYWxSaWdodFNlbGVjdGlvbk9mZnNldCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCbG9jazo6YXZhaWxhYmxlTG9naWNhbFdpZHRoRm9yTGluZUluUmVnaW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJsb2NrOjpsb2dpY2FsUmlnaHRPZmZzZXRGb3JMaW5lSW5SZWdpb24p
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxvZ2ljYWxMZWZ0T2Zmc2V0Rm9yTGlu
ZUluUmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpzdGFydE9mZnNldEZv
ckxpbmVJblJlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6ZW5kT2Zmc2V0
Rm9yTGluZUluUmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjphdmFpbGFi
bGVMb2dpY2FsV2lkdGhGb3JMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjps
b2dpY2FsUmlnaHRPZmZzZXRGb3JMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2Nr
Ojpsb2dpY2FsTGVmdE9mZnNldEZvckxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxv
Y2s6OnN0YXJ0T2Zmc2V0Rm9yTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6
ZW5kT2Zmc2V0Rm9yTGluZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmdldENsZWFyRGVsdGEpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6dXBkYXRlTG9naWNhbElubGluZVBvc2l0aW9ucyk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCbG9ja0Zsb3c6OmxheW91dFJ1bnNBbmRGbG9hdHNJblJhbmdlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6ZGVsZXRlRWxsaXBzaXNMaW5lQm94ZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpjaGVja0xpbmVzRm9yVGV4dE92ZXJmbG93
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6c3RhcnRBbGlnbmVkT2Zmc2V0
Rm9yTGluZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCb3g6OnNocmlua0xvZ2ljYWxXaWR0aFRvQXZvaWRGbG9hdHMpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb250YWluaW5nQmxvY2tBdmFpbGFibGVMaW5lV2lk
dGhJblJlZ2lvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJs
ZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6
OmFwcGx5TGluZUNsYW1wKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEl0ZW06OnBvc2l0aW9uTGlzdE1hcmtlcik6
CisgICAgICAgICogcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Um9vdElubGluZUJveDo6c2VsZWN0aW9uVG9wKToKKyAgICAgICAgKFdlYkNvcmU6OlJvb3RJ
bmxpbmVCb3g6OnNlbGVjdGlvbkJvdHRvbSk6CisgICAgICAgICogcmVuZGVyaW5nL1NpbXBsZUxp
bmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6Y2FuVXNl
Rm9yV2l0aFJlYXNvbik6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0Ojp1cGRh
dGVMaW5lQ29uc3RyYWlucyk6CisgICAgICAgICogcmVuZGVyaW5nL2xpbmUvTGluZUJyZWFrZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TGluZUJyZWFrZXI6OnNraXBMZWFkaW5nV2hpdGVzcGFj
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL2xpbmUvTGluZVdpZHRoLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkxpbmVXaWR0aDo6c2hyaW5rQXZhaWxhYmxlV2lkdGhGb3JOZXdGbG9hdElmTmVlZGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OmF2YWlsYWJsZVdpZHRoQXRPZmZzZXQpOgorICAgICAgICAq
IHJlbmRlcmluZy9saW5lL0xpbmVXaWR0aC5oOgorICAgICAgICAoV2ViQ29yZTo6TGluZVdpZHRo
OjpzaG91bGRJbmRlbnRUZXh0KToKKworMjAxNi0wMi0yMyAgWmFsYW4gQnVqdGFzICA8emFsYW5A
YXBwbGUuY29tPgorCiAgICAgICAgIEJhY2tncm91bmQgb2YgYW4gYWJzb2x1dGVseSBwb3NpdGlv
bmVkIGlubGluZSBlbGVtZW50IGluc2lkZSB0ZXh0LWluZGVudGVkIHBhcmVudCBpcyBwb3NpdGlv
bmVkIHN0YXRpY2FsbHkuCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTQwMTkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAK
aW5kZXggZDc0NjVmZC4uMTNjMGJmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2suY3BwCkBAIC0xMDk3LDcgKzEwOTcsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJsb2NrOjpj
b21wdXRlU3RhcnRQb3NpdGlvbkRlbHRhRm9yQ2hpbGRBdm9pZGluZ0Zsb2F0cyhjb25zdCBSZQog
ICAgIGlmIChyZWdpb24pCiAgICAgICAgIGJsb2NrT2Zmc2V0ID0gc3RkOjptYXgoYmxvY2tPZmZz
ZXQsIGJsb2NrT2Zmc2V0ICsgKHJlZ2lvbi0+bG9naWNhbFRvcEZvckZsb3dUaHJlYWRDb250ZW50
KCkgLSBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKCkpKTsKIAotICAgIExheW91dFVu
aXQgc3RhcnRPZmYgPSBzdGFydE9mZnNldEZvckxpbmVJblJlZ2lvbihibG9ja09mZnNldCwgZmFs
c2UsIHJlZ2lvbiwgbG9naWNhbEhlaWdodEZvckNoaWxkKGNoaWxkKSk7CisgICAgTGF5b3V0VW5p
dCBzdGFydE9mZiA9IHN0YXJ0T2Zmc2V0Rm9yTGluZUluUmVnaW9uKGJsb2NrT2Zmc2V0LCBEb05v
dEluZGVudFRleHQsIHJlZ2lvbiwgbG9naWNhbEhlaWdodEZvckNoaWxkKGNoaWxkKSk7CiAKICAg
ICBpZiAoc3R5bGUoKS50ZXh0QWxpZ24oKSAhPSBXRUJLSVRfQ0VOVEVSICYmICFjaGlsZC5zdHls
ZSgpLm1hcmdpblN0YXJ0VXNpbmcoJnN0eWxlKCkpLmlzQXV0bygpKSB7CiAgICAgICAgIGlmIChj
aGlsZE1hcmdpblN0YXJ0IDwgMCkKQEAgLTIwMjYsNyArMjAyNiw3IEBAIHZvaWQgUmVuZGVyQmxv
Y2s6OmdldFNlbGVjdGlvbkdhcEluZm8oU2VsZWN0aW9uU3RhdGUgc3RhdGUsIGJvb2wmIGxlZnRH
YXAsIGJvb2wmCiAKIExheW91dFVuaXQgUmVuZGVyQmxvY2s6OmxvZ2ljYWxMZWZ0U2VsZWN0aW9u
T2Zmc2V0KFJlbmRlckJsb2NrJiByb290QmxvY2ssIExheW91dFVuaXQgcG9zaXRpb24sIGNvbnN0
IExvZ2ljYWxTZWxlY3Rpb25PZmZzZXRDYWNoZXMmIGNhY2hlKQogewotICAgIExheW91dFVuaXQg
bG9naWNhbExlZnQgPSBsb2dpY2FsTGVmdE9mZnNldEZvckxpbmUocG9zaXRpb24sIGZhbHNlKTsK
KyAgICBMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0ID0gbG9naWNhbExlZnRPZmZzZXRGb3JMaW5lKHBv
c2l0aW9uLCBEb05vdEluZGVudFRleHQpOwogICAgIGlmIChsb2dpY2FsTGVmdCA9PSBsb2dpY2Fs
TGVmdE9mZnNldEZvckNvbnRlbnQoKSkgewogICAgICAgICBpZiAoJnJvb3RCbG9jayAhPSB0aGlz
KSAvLyBUaGUgYm9yZGVyIGNhbiBwb3RlbnRpYWxseSBiZSBmdXJ0aGVyIGV4dGVuZGVkIGJ5IG91
ciBjb250YWluaW5nQmxvY2soKS4KICAgICAgICAgICAgIHJldHVybiBjYWNoZS5jb250YWluaW5n
QmxvY2tJbmZvKCp0aGlzKS5sb2dpY2FsTGVmdFNlbGVjdGlvbk9mZnNldChyb290QmxvY2ssIHBv
c2l0aW9uICsgbG9naWNhbFRvcCgpKTsKQEAgLTIwNDgsNyArMjA0OCw3IEBAIExheW91dFVuaXQg
UmVuZGVyQmxvY2s6OmxvZ2ljYWxMZWZ0U2VsZWN0aW9uT2Zmc2V0KFJlbmRlckJsb2NrJiByb290
QmxvY2ssIExheW91CiAKIExheW91dFVuaXQgUmVuZGVyQmxvY2s6OmxvZ2ljYWxSaWdodFNlbGVj
dGlvbk9mZnNldChSZW5kZXJCbG9jayYgcm9vdEJsb2NrLCBMYXlvdXRVbml0IHBvc2l0aW9uLCBj
b25zdCBMb2dpY2FsU2VsZWN0aW9uT2Zmc2V0Q2FjaGVzJiBjYWNoZSkKIHsKLSAgICBMYXlvdXRV
bml0IGxvZ2ljYWxSaWdodCA9IGxvZ2ljYWxSaWdodE9mZnNldEZvckxpbmUocG9zaXRpb24sIGZh
bHNlKTsKKyAgICBMYXlvdXRVbml0IGxvZ2ljYWxSaWdodCA9IGxvZ2ljYWxSaWdodE9mZnNldEZv
ckxpbmUocG9zaXRpb24sIERvTm90SW5kZW50VGV4dCk7CiAgICAgaWYgKGxvZ2ljYWxSaWdodCA9
PSBsb2dpY2FsUmlnaHRPZmZzZXRGb3JDb250ZW50KCkpIHsKICAgICAgICAgaWYgKCZyb290Qmxv
Y2sgIT0gdGhpcykgLy8gVGhlIGJvcmRlciBjYW4gcG90ZW50aWFsbHkgYmUgZnVydGhlciBleHRl
bmRlZCBieSBvdXIgY29udGFpbmluZ0Jsb2NrKCkuCiAgICAgICAgICAgICByZXR1cm4gY2FjaGUu
Y29udGFpbmluZ0Jsb2NrSW5mbygqdGhpcykubG9naWNhbFJpZ2h0U2VsZWN0aW9uT2Zmc2V0KHJv
b3RCbG9jaywgcG9zaXRpb24gKyBsb2dpY2FsVG9wKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2suaAppbmRleCA2YzA2OGZiLi4zZDBiZDNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2suaApAQCAtMjQsNiArMjQsNyBAQAogI2RlZmluZSBSZW5kZXJCbG9j
a19oCiAKICNpbmNsdWRlICJHYXBSZWN0cy5oIgorI2luY2x1ZGUgIkxpbmVXaWR0aC5oIgogI2lu
Y2x1ZGUgIlJlbmRlckJveC5oIgogI2luY2x1ZGUgIlRleHRSdW4uaCIKICNpbmNsdWRlIDxtZW1v
cnk+CkBAIC0xMjEsNDggKzEyMiw0OCBAQCBwdWJsaWM6CiAKICAgICAvLyBWZXJzaW9ucyB0aGF0
IGNhbiBjb21wdXRlIGxpbmUgb2Zmc2V0cyB3aXRoIHRoZSByZWdpb24gYW5kIHBhZ2Ugb2Zmc2V0
IHBhc3NlZCBpbi4gVXNlZCBmb3Igc3BlZWQgdG8gYXZvaWQgaGF2aW5nIHRvCiAgICAgLy8gY29t
cHV0ZSB0aGUgcmVnaW9uIGFsbCBvdmVyIGFnYWluIHdoZW4geW91IGFscmVhZHkga25vdyBpdC4K
LSAgICBMYXlvdXRVbml0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aEZvckxpbmVJblJlZ2lvbihMYXlv
dXRVbml0IHBvc2l0aW9uLCBib29sIHNob3VsZEluZGVudFRleHQsIFJlbmRlclJlZ2lvbiogcmVn
aW9uLCBMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQgPSAwKSBjb25zdAorICAgIExheW91dFVuaXQg
YXZhaWxhYmxlTG9naWNhbFdpZHRoRm9yTGluZUluUmVnaW9uKExheW91dFVuaXQgcG9zaXRpb24s
IEluZGVudFRleHRPck5vdCBzaG91bGRJbmRlbnRUZXh0LCBSZW5kZXJSZWdpb24qIHJlZ2lvbiwg
TGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0ID0gMCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVy
biBzdGQ6Om1heDxMYXlvdXRVbml0PigwLCBsb2dpY2FsUmlnaHRPZmZzZXRGb3JMaW5lSW5SZWdp
b24ocG9zaXRpb24sIHNob3VsZEluZGVudFRleHQsIHJlZ2lvbiwgbG9naWNhbEhlaWdodCkKICAg
ICAgICAgICAgIC0gbG9naWNhbExlZnRPZmZzZXRGb3JMaW5lSW5SZWdpb24ocG9zaXRpb24sIHNo
b3VsZEluZGVudFRleHQsIHJlZ2lvbiwgbG9naWNhbEhlaWdodCkpOwogICAgIH0KLSAgICBMYXlv
dXRVbml0IGxvZ2ljYWxSaWdodE9mZnNldEZvckxpbmVJblJlZ2lvbihMYXlvdXRVbml0IHBvc2l0
aW9uLCBib29sIHNob3VsZEluZGVudFRleHQsIFJlbmRlclJlZ2lvbiogcmVnaW9uLCBMYXlvdXRV
bml0IGxvZ2ljYWxIZWlnaHQgPSAwKSBjb25zdCAKKyAgICBMYXlvdXRVbml0IGxvZ2ljYWxSaWdo
dE9mZnNldEZvckxpbmVJblJlZ2lvbihMYXlvdXRVbml0IHBvc2l0aW9uLCBJbmRlbnRUZXh0T3JO
b3Qgc2hvdWxkSW5kZW50VGV4dCwgUmVuZGVyUmVnaW9uKiByZWdpb24sIExheW91dFVuaXQgbG9n
aWNhbEhlaWdodCA9IDApIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbG9naWNhbFJpZ2h0
T2Zmc2V0Rm9yTGluZShwb3NpdGlvbiwgbG9naWNhbFJpZ2h0T2Zmc2V0Rm9yQ29udGVudChyZWdp
b24pLCBzaG91bGRJbmRlbnRUZXh0LCBsb2dpY2FsSGVpZ2h0KTsKICAgICB9Ci0gICAgTGF5b3V0
VW5pdCBsb2dpY2FsTGVmdE9mZnNldEZvckxpbmVJblJlZ2lvbihMYXlvdXRVbml0IHBvc2l0aW9u
LCBib29sIHNob3VsZEluZGVudFRleHQsIFJlbmRlclJlZ2lvbiogcmVnaW9uLCBMYXlvdXRVbml0
IGxvZ2ljYWxIZWlnaHQgPSAwKSBjb25zdCAKKyAgICBMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0T2Zm
c2V0Rm9yTGluZUluUmVnaW9uKExheW91dFVuaXQgcG9zaXRpb24sIEluZGVudFRleHRPck5vdCBz
aG91bGRJbmRlbnRUZXh0LCBSZW5kZXJSZWdpb24qIHJlZ2lvbiwgTGF5b3V0VW5pdCBsb2dpY2Fs
SGVpZ2h0ID0gMCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBsb2dpY2FsTGVmdE9mZnNl
dEZvckxpbmUocG9zaXRpb24sIGxvZ2ljYWxMZWZ0T2Zmc2V0Rm9yQ29udGVudChyZWdpb24pLCBz
aG91bGRJbmRlbnRUZXh0LCBsb2dpY2FsSGVpZ2h0KTsKICAgICB9Ci0gICAgTGF5b3V0VW5pdCBz
dGFydE9mZnNldEZvckxpbmVJblJlZ2lvbihMYXlvdXRVbml0IHBvc2l0aW9uLCBib29sIHNob3Vs
ZEluZGVudFRleHQsIFJlbmRlclJlZ2lvbiogcmVnaW9uLCBMYXlvdXRVbml0IGxvZ2ljYWxIZWln
aHQgPSAwKSBjb25zdAorICAgIExheW91dFVuaXQgc3RhcnRPZmZzZXRGb3JMaW5lSW5SZWdpb24o
TGF5b3V0VW5pdCBwb3NpdGlvbiwgSW5kZW50VGV4dE9yTm90IHNob3VsZEluZGVudFRleHQsIFJl
bmRlclJlZ2lvbiogcmVnaW9uLCBMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQgPSAwKSBjb25zdAog
ICAgIHsKICAgICAgICAgcmV0dXJuIHN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8g
bG9naWNhbExlZnRPZmZzZXRGb3JMaW5lSW5SZWdpb24ocG9zaXRpb24sIHNob3VsZEluZGVudFRl
eHQsIHJlZ2lvbiwgbG9naWNhbEhlaWdodCkKICAgICAgICAgICAgIDogbG9naWNhbFdpZHRoKCkg
LSBsb2dpY2FsUmlnaHRPZmZzZXRGb3JMaW5lSW5SZWdpb24ocG9zaXRpb24sIHNob3VsZEluZGVu
dFRleHQsIHJlZ2lvbiwgbG9naWNhbEhlaWdodCk7CiAgICAgfQotICAgIExheW91dFVuaXQgZW5k
T2Zmc2V0Rm9yTGluZUluUmVnaW9uKExheW91dFVuaXQgcG9zaXRpb24sIGJvb2wgc2hvdWxkSW5k
ZW50VGV4dCwgUmVuZGVyUmVnaW9uKiByZWdpb24sIExheW91dFVuaXQgbG9naWNhbEhlaWdodCA9
IDApIGNvbnN0CisgICAgTGF5b3V0VW5pdCBlbmRPZmZzZXRGb3JMaW5lSW5SZWdpb24oTGF5b3V0
VW5pdCBwb3NpdGlvbiwgSW5kZW50VGV4dE9yTm90IHNob3VsZEluZGVudFRleHQsIFJlbmRlclJl
Z2lvbiogcmVnaW9uLCBMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQgPSAwKSBjb25zdAogICAgIHsK
ICAgICAgICAgcmV0dXJuICFzdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IGxvZ2lj
YWxMZWZ0T2Zmc2V0Rm9yTGluZUluUmVnaW9uKHBvc2l0aW9uLCBzaG91bGRJbmRlbnRUZXh0LCBy
ZWdpb24sIGxvZ2ljYWxIZWlnaHQpCiAgICAgICAgICAgICA6IGxvZ2ljYWxXaWR0aCgpIC0gbG9n
aWNhbFJpZ2h0T2Zmc2V0Rm9yTGluZUluUmVnaW9uKHBvc2l0aW9uLCBzaG91bGRJbmRlbnRUZXh0
LCByZWdpb24sIGxvZ2ljYWxIZWlnaHQpOwogICAgIH0KIAotICAgIExheW91dFVuaXQgYXZhaWxh
YmxlTG9naWNhbFdpZHRoRm9yTGluZShMYXlvdXRVbml0IHBvc2l0aW9uLCBib29sIHNob3VsZElu
ZGVudFRleHQsIExheW91dFVuaXQgbG9naWNhbEhlaWdodCA9IDApIGNvbnN0CisgICAgTGF5b3V0
VW5pdCBhdmFpbGFibGVMb2dpY2FsV2lkdGhGb3JMaW5lKExheW91dFVuaXQgcG9zaXRpb24sIElu
ZGVudFRleHRPck5vdCBzaG91bGRJbmRlbnRUZXh0LCBMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQg
PSAwKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aEZv
ckxpbmVJblJlZ2lvbihwb3NpdGlvbiwgc2hvdWxkSW5kZW50VGV4dCwgcmVnaW9uQXRCbG9ja09m
ZnNldChwb3NpdGlvbiksIGxvZ2ljYWxIZWlnaHQpOwogICAgIH0KLSAgICBMYXlvdXRVbml0IGxv
Z2ljYWxSaWdodE9mZnNldEZvckxpbmUoTGF5b3V0VW5pdCBwb3NpdGlvbiwgYm9vbCBzaG91bGRJ
bmRlbnRUZXh0LCBMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQgPSAwKSBjb25zdCAKKyAgICBMYXlv
dXRVbml0IGxvZ2ljYWxSaWdodE9mZnNldEZvckxpbmUoTGF5b3V0VW5pdCBwb3NpdGlvbiwgSW5k
ZW50VGV4dE9yTm90IHNob3VsZEluZGVudFRleHQsIExheW91dFVuaXQgbG9naWNhbEhlaWdodCA9
IDApIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbG9naWNhbFJpZ2h0T2Zmc2V0Rm9yTGlu
ZShwb3NpdGlvbiwgbG9naWNhbFJpZ2h0T2Zmc2V0Rm9yQ29udGVudChwb3NpdGlvbiksIHNob3Vs
ZEluZGVudFRleHQsIGxvZ2ljYWxIZWlnaHQpOwogICAgIH0KLSAgICBMYXlvdXRVbml0IGxvZ2lj
YWxMZWZ0T2Zmc2V0Rm9yTGluZShMYXlvdXRVbml0IHBvc2l0aW9uLCBib29sIHNob3VsZEluZGVu
dFRleHQsIExheW91dFVuaXQgbG9naWNhbEhlaWdodCA9IDApIGNvbnN0IAorICAgIExheW91dFVu
aXQgbG9naWNhbExlZnRPZmZzZXRGb3JMaW5lKExheW91dFVuaXQgcG9zaXRpb24sIEluZGVudFRl
eHRPck5vdCBzaG91bGRJbmRlbnRUZXh0LCBMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQgPSAwKSBj
b25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIGxvZ2ljYWxMZWZ0T2Zmc2V0Rm9yTGluZShwb3Np
dGlvbiwgbG9naWNhbExlZnRPZmZzZXRGb3JDb250ZW50KHBvc2l0aW9uKSwgc2hvdWxkSW5kZW50
VGV4dCwgbG9naWNhbEhlaWdodCk7CiAgICAgfQotICAgIExheW91dFVuaXQgc3RhcnRPZmZzZXRG
b3JMaW5lKExheW91dFVuaXQgcG9zaXRpb24sIGJvb2wgc2hvdWxkSW5kZW50VGV4dCwgTGF5b3V0
VW5pdCBsb2dpY2FsSGVpZ2h0ID0gMCkgY29uc3QKKyAgICBMYXlvdXRVbml0IHN0YXJ0T2Zmc2V0
Rm9yTGluZShMYXlvdXRVbml0IHBvc2l0aW9uLCBJbmRlbnRUZXh0T3JOb3Qgc2hvdWxkSW5kZW50
VGV4dCwgTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0ID0gMCkgY29uc3QKICAgICB7CiAgICAgICAg
IHJldHVybiBzdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IGxvZ2ljYWxMZWZ0T2Zm
c2V0Rm9yTGluZShwb3NpdGlvbiwgc2hvdWxkSW5kZW50VGV4dCwgbG9naWNhbEhlaWdodCkKICAg
ICAgICAgICAgIDogbG9naWNhbFdpZHRoKCkgLSBsb2dpY2FsUmlnaHRPZmZzZXRGb3JMaW5lKHBv
c2l0aW9uLCBzaG91bGRJbmRlbnRUZXh0LCBsb2dpY2FsSGVpZ2h0KTsKICAgICB9Ci0gICAgTGF5
b3V0VW5pdCBlbmRPZmZzZXRGb3JMaW5lKExheW91dFVuaXQgcG9zaXRpb24sIGJvb2wgc2hvdWxk
SW5kZW50VGV4dCwgTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0ID0gMCkgY29uc3QKKyAgICBMYXlv
dXRVbml0IGVuZE9mZnNldEZvckxpbmUoTGF5b3V0VW5pdCBwb3NpdGlvbiwgSW5kZW50VGV4dE9y
Tm90IHNob3VsZEluZGVudFRleHQsIExheW91dFVuaXQgbG9naWNhbEhlaWdodCA9IDApIGNvbnN0
CiAgICAgewogICAgICAgICByZXR1cm4gIXN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigp
ID8gbG9naWNhbExlZnRPZmZzZXRGb3JMaW5lKHBvc2l0aW9uLCBzaG91bGRJbmRlbnRUZXh0LCBs
b2dpY2FsSGVpZ2h0KQogICAgICAgICAgICAgOiBsb2dpY2FsV2lkdGgoKSAtIGxvZ2ljYWxSaWdo
dE9mZnNldEZvckxpbmUocG9zaXRpb24sIHNob3VsZEluZGVudFRleHQsIGxvZ2ljYWxIZWlnaHQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAppbmRleCA0
MDBlYmMyLi4zM2JjZTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2tGbG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2tGbG93LmNwcApAQCAtMjg0NCw3ICsyODQ0LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCbG9ja0Zs
b3c6OmdldENsZWFyRGVsdGEoUmVuZGVyQm94JiBjaGlsZCwgTGF5b3V0VW5pdCBsb2dpY2FsVG8K
ICAgICBpZiAoIXJlc3VsdCAmJiBjaGlsZC5hdm9pZHNGbG9hdHMoKSkgewogICAgICAgICBMYXlv
dXRVbml0IG5ld0xvZ2ljYWxUb3AgPSBsb2dpY2FsVG9wOwogICAgICAgICB3aGlsZSAodHJ1ZSkg
ewotICAgICAgICAgICAgTGF5b3V0VW5pdCBhdmFpbGFibGVMb2dpY2FsV2lkdGhBdE5ld0xvZ2lj
YWxUb3BPZmZzZXQgPSBhdmFpbGFibGVMb2dpY2FsV2lkdGhGb3JMaW5lKG5ld0xvZ2ljYWxUb3As
IGZhbHNlLCBsb2dpY2FsSGVpZ2h0Rm9yQ2hpbGQoY2hpbGQpKTsKKyAgICAgICAgICAgIExheW91
dFVuaXQgYXZhaWxhYmxlTG9naWNhbFdpZHRoQXROZXdMb2dpY2FsVG9wT2Zmc2V0ID0gYXZhaWxh
YmxlTG9naWNhbFdpZHRoRm9yTGluZShuZXdMb2dpY2FsVG9wLCBEb05vdEluZGVudFRleHQsIGxv
Z2ljYWxIZWlnaHRGb3JDaGlsZChjaGlsZCkpOwogICAgICAgICAgICAgaWYgKGF2YWlsYWJsZUxv
Z2ljYWxXaWR0aEF0TmV3TG9naWNhbFRvcE9mZnNldCA9PSBhdmFpbGFibGVMb2dpY2FsV2lkdGhG
b3JDb250ZW50KG5ld0xvZ2ljYWxUb3ApKQogICAgICAgICAgICAgICAgIHJldHVybiBuZXdMb2dp
Y2FsVG9wIC0gbG9naWNhbFRvcDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAppbmRleCAxNjk5OTIyLi42ZDNlMzcyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcApA
QCAtNjcyLDE2ICs2NzIsMTYgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OnVwZGF0ZUxvZ2ljYWxX
aWR0aEZvckFsaWdubWVudChjb25zdCBFVGV4dEFsaWduJiB0ZXh0QWxpZ24KICAgICB9CiB9CiAK
LXN0YXRpYyB2b2lkIHVwZGF0ZUxvZ2ljYWxJbmxpbmVQb3NpdGlvbnMoUmVuZGVyQmxvY2tGbG93
JiBibG9jaywgZmxvYXQmIGxpbmVMb2dpY2FsTGVmdCwgZmxvYXQmIGxpbmVMb2dpY2FsUmlnaHQs
IGZsb2F0JiBhdmFpbGFibGVMb2dpY2FsV2lkdGgsIGJvb2wgZmlyc3RMaW5lLCBJbmRlbnRUZXh0
T3JOb3Qgc2hvdWxkSW5kZW50VGV4dCwgTGF5b3V0VW5pdCBib3hMb2dpY2FsSGVpZ2h0LAotICAg
IFJvb3RJbmxpbmVCb3gqIHJvb3RCb3gpCitzdGF0aWMgdm9pZCB1cGRhdGVMb2dpY2FsSW5saW5l
UG9zaXRpb25zKFJlbmRlckJsb2NrRmxvdyYgYmxvY2ssIGZsb2F0JiBsaW5lTG9naWNhbExlZnQs
IGZsb2F0JiBsaW5lTG9naWNhbFJpZ2h0LCBmbG9hdCYgYXZhaWxhYmxlTG9naWNhbFdpZHRoLCBi
b29sIGZpcnN0TGluZSwKKyAgICBJbmRlbnRUZXh0T3JOb3Qgc2hvdWxkSW5kZW50VGV4dCwgTGF5
b3V0VW5pdCBib3hMb2dpY2FsSGVpZ2h0LCBSb290SW5saW5lQm94KiByb290Qm94KQogewogICAg
IExheW91dFVuaXQgbGluZUxvZ2ljYWxIZWlnaHQgPSBibG9jay5taW5MaW5lSGVpZ2h0Rm9yUmVw
bGFjZWRSZW5kZXJlcihmaXJzdExpbmUsIGJveExvZ2ljYWxIZWlnaHQpOwogICAgIGlmIChyb290
Qm94LT5oYXNBbm9ueW1vdXNJbmxpbmVCbG9jaygpKSB7CiAgICAgICAgIGxpbmVMb2dpY2FsTGVm
dCA9IGJsb2NrLmxvZ2ljYWxMZWZ0T2Zmc2V0Rm9yQ29udGVudChibG9jay5sb2dpY2FsSGVpZ2h0
KCkpOwogICAgICAgICBsaW5lTG9naWNhbFJpZ2h0ID0gYmxvY2subG9naWNhbFJpZ2h0T2Zmc2V0
Rm9yQ29udGVudChibG9jay5sb2dpY2FsSGVpZ2h0KCkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAg
IGxpbmVMb2dpY2FsTGVmdCA9IGJsb2NrLmxvZ2ljYWxMZWZ0T2Zmc2V0Rm9yTGluZShibG9jay5s
b2dpY2FsSGVpZ2h0KCksIHNob3VsZEluZGVudFRleHQgPT0gSW5kZW50VGV4dCwgbGluZUxvZ2lj
YWxIZWlnaHQpOwotICAgICAgICBsaW5lTG9naWNhbFJpZ2h0ID0gYmxvY2subG9naWNhbFJpZ2h0
T2Zmc2V0Rm9yTGluZShibG9jay5sb2dpY2FsSGVpZ2h0KCksIHNob3VsZEluZGVudFRleHQgPT0g
SW5kZW50VGV4dCwgbGluZUxvZ2ljYWxIZWlnaHQpOworICAgICAgICBsaW5lTG9naWNhbExlZnQg
PSBibG9jay5sb2dpY2FsTGVmdE9mZnNldEZvckxpbmUoYmxvY2subG9naWNhbEhlaWdodCgpLCBz
aG91bGRJbmRlbnRUZXh0LCBsaW5lTG9naWNhbEhlaWdodCk7CisgICAgICAgIGxpbmVMb2dpY2Fs
UmlnaHQgPSBibG9jay5sb2dpY2FsUmlnaHRPZmZzZXRGb3JMaW5lKGJsb2NrLmxvZ2ljYWxIZWln
aHQoKSwgc2hvdWxkSW5kZW50VGV4dCwgbGluZUxvZ2ljYWxIZWlnaHQpOwogICAgIH0KICAgICBh
dmFpbGFibGVMb2dpY2FsV2lkdGggPSBsaW5lTG9naWNhbFJpZ2h0IC0gbGluZUxvZ2ljYWxMZWZ0
OwogfQpAQCAtMTMzNywxNCArMTMzNywxNCBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6bGF5b3V0
UnVuc0FuZEZsb2F0c0luUmFuZ2UoTGluZUxheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgSQogCiAg
ICAgICAgICAgICAgICAgaWYgKHBhZ2luYXRlZCkKICAgICAgICAgICAgICAgICAgICAgYWRqdXN0
TGluZVBvc2l0aW9uRm9yUGFnaW5hdGlvbihsaW5lQm94LCBhZGp1c3RtZW50LCBvdmVyZmxvd3NS
ZWdpb24sIGxheW91dFN0YXRlLmZsb3dUaHJlYWQoKSk7Ci0gICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICAgICAgaWYgKGFkanVzdG1lbnQpIHsKLSAgICAgICAgICAgICAgICAgICAgTGF5b3V0
VW5pdCBvbGRMaW5lV2lkdGggPSBhdmFpbGFibGVMb2dpY2FsV2lkdGhGb3JMaW5lKG9sZExvZ2lj
YWxIZWlnaHQsIGxheW91dFN0YXRlLmxpbmVJbmZvKCkuaXNGaXJzdExpbmUoKSk7CisgICAgICAg
ICAgICAgICAgICAgIEluZGVudFRleHRPck5vdCBzaG91bGRJbmRlbnRUZXh0ID0gbGF5b3V0U3Rh
dGUubGluZUluZm8oKS5pc0ZpcnN0TGluZSgpID8gSW5kZW50VGV4dCA6IERvTm90SW5kZW50VGV4
dDsKKyAgICAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBvbGRMaW5lV2lkdGggPSBhdmFpbGFi
bGVMb2dpY2FsV2lkdGhGb3JMaW5lKG9sZExvZ2ljYWxIZWlnaHQsIHNob3VsZEluZGVudFRleHQp
OwogICAgICAgICAgICAgICAgICAgICBsaW5lQm94LT5hZGp1c3RCbG9ja0RpcmVjdGlvblBvc2l0
aW9uKGFkanVzdG1lbnQpOwogICAgICAgICAgICAgICAgICAgICBpZiAobGF5b3V0U3RhdGUudXNl
c1JlcGFpbnRCb3VuZHMoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGxheW91dFN0YXRlLnVw
ZGF0ZVJlcGFpbnRSYW5nZUZyb21Cb3gobGluZUJveCk7CiAKLSAgICAgICAgICAgICAgICAgICAg
aWYgKGF2YWlsYWJsZUxvZ2ljYWxXaWR0aEZvckxpbmUob2xkTG9naWNhbEhlaWdodCArIGFkanVz
dG1lbnQsIGxheW91dFN0YXRlLmxpbmVJbmZvKCkuaXNGaXJzdExpbmUoKSkgIT0gb2xkTGluZVdp
ZHRoKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChhdmFpbGFibGVMb2dpY2FsV2lkdGhGb3JM
aW5lKG9sZExvZ2ljYWxIZWlnaHQgKyBhZGp1c3RtZW50LCBzaG91bGRJbmRlbnRUZXh0KSAhPSBv
bGRMaW5lV2lkdGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGhhdmUgdG8gZGVs
ZXRlIHRoaXMgbGluZSwgcmVtb3ZlIGFsbCBmbG9hdHMgdGhhdCBnb3QgYWRkZWQsIGFuZCBsZXQg
bGluZSBsYXlvdXQgcmUtcnVuLgogICAgICAgICAgICAgICAgICAgICAgICAgbGluZUJveC0+ZGVs
ZXRlTGluZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgZW5kID0gcmVzdGFydExheW91dFJ1
bnNBbmRGbG9hdHNJblJhbmdlKG9sZExvZ2ljYWxIZWlnaHQsIG9sZExvZ2ljYWxIZWlnaHQgKyBh
ZGp1c3RtZW50LCBsYXN0RmxvYXRGcm9tUHJldmlvdXNMaW5lLCByZXNvbHZlciwgb2xkRW5kKTsK
QEAgLTE5OTgsMTQgKzE5OTgsMTQgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmRlbGV0ZUVsbGlw
c2lzTGluZUJveGVzKCkKIHsKICAgICBFVGV4dEFsaWduIHRleHRBbGlnbiA9IHN0eWxlKCkudGV4
dEFsaWduKCk7CiAgICAgYm9vbCBsdHIgPSBzdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24o
KTsKLSAgICBib29sIGZpcnN0TGluZSA9IHRydWU7CisgICAgSW5kZW50VGV4dE9yTm90IHNob3Vs
ZEluZGVudFRleHQgPSBJbmRlbnRUZXh0OwogICAgIGZvciAoUm9vdElubGluZUJveCogY3VyciA9
IGZpcnN0Um9vdEJveCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+bmV4dFJvb3RCb3goKSkgewogICAg
ICAgICBpZiAoY3Vyci0+aGFzRWxsaXBzaXNCb3goKSkgewogICAgICAgICAgICAgY3Vyci0+Y2xl
YXJUcnVuY2F0aW9uKCk7CiAKICAgICAgICAgICAgIC8vIFNoaWZ0IHRoZSBsaW5lIGJhY2sgd2hl
cmUgaXQgYmVsb25ncyBpZiB3ZSBjYW5ub3QgYWNjb21vZGF0ZSBhbiBlbGxpcHNpcy4KLSAgICAg
ICAgICAgIGZsb2F0IGxvZ2ljYWxMZWZ0ID0gbG9naWNhbExlZnRPZmZzZXRGb3JMaW5lKGN1cnIt
PmxpbmVUb3AoKSwgZmlyc3RMaW5lKTsKLSAgICAgICAgICAgIGZsb2F0IGF2YWlsYWJsZUxvZ2lj
YWxXaWR0aCA9IGxvZ2ljYWxSaWdodE9mZnNldEZvckxpbmUoY3Vyci0+bGluZVRvcCgpLCBmYWxz
ZSkgLSBsb2dpY2FsTGVmdDsKKyAgICAgICAgICAgIGZsb2F0IGxvZ2ljYWxMZWZ0ID0gbG9naWNh
bExlZnRPZmZzZXRGb3JMaW5lKGN1cnItPmxpbmVUb3AoKSwgc2hvdWxkSW5kZW50VGV4dCk7Cisg
ICAgICAgICAgICBmbG9hdCBhdmFpbGFibGVMb2dpY2FsV2lkdGggPSBsb2dpY2FsUmlnaHRPZmZz
ZXRGb3JMaW5lKGN1cnItPmxpbmVUb3AoKSwgRG9Ob3RJbmRlbnRUZXh0KSAtIGxvZ2ljYWxMZWZ0
OwogICAgICAgICAgICAgZmxvYXQgdG90YWxMb2dpY2FsV2lkdGggPSBjdXJyLT5sb2dpY2FsV2lk
dGgoKTsKICAgICAgICAgICAgIHVwZGF0ZUxvZ2ljYWxXaWR0aEZvckFsaWdubWVudCh0ZXh0QWxp
Z24sIGN1cnIsIDAsIGxvZ2ljYWxMZWZ0LCB0b3RhbExvZ2ljYWxXaWR0aCwgYXZhaWxhYmxlTG9n
aWNhbFdpZHRoLCAwKTsKIApAQCAtMjAxNCw3ICsyMDE0LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zs
b3c6OmRlbGV0ZUVsbGlwc2lzTGluZUJveGVzKCkKICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgICBjdXJyLT5hZGp1c3RMb2dpY2FsUG9zaXRpb24oLShjdXJyLT5sb2dpY2FsTGVmdCgp
IC0gbG9naWNhbExlZnQpLCAwKTsKICAgICAgICAgfQotICAgICAgICBmaXJzdExpbmUgPSBmYWxz
ZTsKKyAgICAgICAgc2hvdWxkSW5kZW50VGV4dCA9IERvTm90SW5kZW50VGV4dDsKICAgICB9CiB9
CiAKQEAgLTIwMzYsMjIgKzIwMzYsMjIgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmNoZWNrTGlu
ZXNGb3JUZXh0T3ZlcmZsb3coKQogICAgIEVUZXh0QWxpZ24gdGV4dEFsaWduID0gc3R5bGUoKS50
ZXh0QWxpZ24oKTsKICAgICBib29sIGZpcnN0TGluZSA9IHRydWU7CiAgICAgZm9yIChSb290SW5s
aW5lQm94KiBjdXJyID0gZmlyc3RSb290Qm94KCk7IGN1cnI7IGN1cnIgPSBjdXJyLT5uZXh0Um9v
dEJveCgpKSB7Ci0gICAgICAgIExheW91dFVuaXQgYmxvY2tSaWdodEVkZ2UgPSBsb2dpY2FsUmln
aHRPZmZzZXRGb3JMaW5lKGN1cnItPmxpbmVUb3AoKSwgZmlyc3RMaW5lKTsKLSAgICAgICAgTGF5
b3V0VW5pdCBibG9ja0xlZnRFZGdlID0gbG9naWNhbExlZnRPZmZzZXRGb3JMaW5lKGN1cnItPmxp
bmVUb3AoKSwgZmlyc3RMaW5lKTsKKyAgICAgICAgSW5kZW50VGV4dE9yTm90IHNob3VsZEluZGVu
dFRleHQgPSBmaXJzdExpbmUgPyBJbmRlbnRUZXh0IDogRG9Ob3RJbmRlbnRUZXh0OworICAgICAg
ICBMYXlvdXRVbml0IGJsb2NrUmlnaHRFZGdlID0gbG9naWNhbFJpZ2h0T2Zmc2V0Rm9yTGluZShj
dXJyLT5saW5lVG9wKCksIHNob3VsZEluZGVudFRleHQpOworICAgICAgICBMYXlvdXRVbml0IGJs
b2NrTGVmdEVkZ2UgPSBsb2dpY2FsTGVmdE9mZnNldEZvckxpbmUoY3Vyci0+bGluZVRvcCgpLCBz
aG91bGRJbmRlbnRUZXh0KTsKICAgICAgICAgTGF5b3V0VW5pdCBsaW5lQm94RWRnZSA9IGx0ciA/
IGN1cnItPngoKSArIGN1cnItPmxvZ2ljYWxXaWR0aCgpIDogY3Vyci0+eCgpOwogICAgICAgICBp
ZiAoKGx0ciAmJiBsaW5lQm94RWRnZSA+IGJsb2NrUmlnaHRFZGdlKSB8fCAoIWx0ciAmJiBsaW5l
Qm94RWRnZSA8IGJsb2NrTGVmdEVkZ2UpKSB7CiAgICAgICAgICAgICAvLyBUaGlzIGxpbmUgc3Bp
bGxzIG91dCBvZiBvdXIgYm94IGluIHRoZSBhcHByb3ByaWF0ZSBkaXJlY3Rpb24uICBOb3cgd2Ug
bmVlZCB0byBzZWUgaWYgdGhlIGxpbmUKICAgICAgICAgICAgIC8vIGNhbiBiZSB0cnVuY2F0ZWQu
ICBJbiBvcmRlciBmb3IgdHJ1bmNhdGlvbiB0byBiZSBwb3NzaWJsZSwgdGhlIGxpbmUgbXVzdCBo
YXZlIHN1ZmZpY2llbnQgc3BhY2UgdG8KICAgICAgICAgICAgIC8vIGFjY29tbW9kYXRlIG91ciB0
cnVuY2F0aW9uIHN0cmluZywgYW5kIG5vIHJlcGxhY2VkIGVsZW1lbnRzIChpbWFnZXMsIHRhYmxl
cykgY2FuIG92ZXJsYXAgdGhlIGVsbGlwc2lzCiAgICAgICAgICAgICAvLyBzcGFjZS4KLQogICAg
ICAgICAgICAgTGF5b3V0VW5pdCB3aWR0aCA9IGZpcnN0TGluZSA/IGZpcnN0TGluZUVsbGlwc2lz
V2lkdGggOiBlbGxpcHNpc1dpZHRoOwogICAgICAgICAgICAgTGF5b3V0VW5pdCBibG9ja0VkZ2Ug
PSBsdHIgPyBibG9ja1JpZ2h0RWRnZSA6IGJsb2NrTGVmdEVkZ2U7CiAgICAgICAgICAgICBpZiAo
Y3Vyci0+bGluZUNhbkFjY29tbW9kYXRlRWxsaXBzaXMobHRyLCBibG9ja0VkZ2UsIGxpbmVCb3hF
ZGdlLCB3aWR0aCkpIHsKICAgICAgICAgICAgICAgICBmbG9hdCB0b3RhbExvZ2ljYWxXaWR0aCA9
IGN1cnItPnBsYWNlRWxsaXBzaXMoZWxsaXBzaXNTdHIsIGx0ciwgYmxvY2tMZWZ0RWRnZSwgYmxv
Y2tSaWdodEVkZ2UsIHdpZHRoKTsKIAogICAgICAgICAgICAgICAgIGZsb2F0IGxvZ2ljYWxMZWZ0
ID0gMDsgLy8gV2UgYXJlIG9ubHkgaW50ZXJlc3RlZCBpbiB0aGUgZGVsdGEgZnJvbSB0aGUgYmFz
ZSBwb3NpdGlvbi4KLSAgICAgICAgICAgICAgICBmbG9hdCB0cnVuY2F0ZWRXaWR0aCA9IGF2YWls
YWJsZUxvZ2ljYWxXaWR0aEZvckxpbmUoY3Vyci0+bGluZVRvcCgpLCBmaXJzdExpbmUpOworICAg
ICAgICAgICAgICAgIGZsb2F0IHRydW5jYXRlZFdpZHRoID0gYXZhaWxhYmxlTG9naWNhbFdpZHRo
Rm9yTGluZShjdXJyLT5saW5lVG9wKCksIHNob3VsZEluZGVudFRleHQpOwogICAgICAgICAgICAg
ICAgIHVwZGF0ZUxvZ2ljYWxXaWR0aEZvckFsaWdubWVudCh0ZXh0QWxpZ24sIGN1cnIsIG51bGxw
dHIsIGxvZ2ljYWxMZWZ0LCB0b3RhbExvZ2ljYWxXaWR0aCwgdHJ1bmNhdGVkV2lkdGgsIDApOwog
ICAgICAgICAgICAgICAgIGlmIChsdHIpCiAgICAgICAgICAgICAgICAgICAgIGN1cnItPmFkanVz
dExvZ2ljYWxQb3NpdGlvbihsb2dpY2FsTGVmdCwgMCk7CkBAIC0yMTQzLDEyICsyMTQzLDEyIEBA
IExheW91dFVuaXQgUmVuZGVyQmxvY2tGbG93OjpzdGFydEFsaWduZWRPZmZzZXRGb3JMaW5lKExh
eW91dFVuaXQgcG9zaXRpb24sIEluZGVuCiAgICAgLy8gVGhpcyBxdWlyayBpcyBmb3IgbGVnYWN5
IGNvbnRlbnQgdGhhdCBkb2Vzbid0IHdvcmsgcHJvcGVybHkgd2l0aCB0aGUgY2VudGVyIHBvc2l0
aW9uaW5nIHNjaGVtZQogICAgIC8vIGJlaW5nIGhvbm9yZWQgKGUuZy4sIGVwdWJzKS4KICAgICBp
ZiAoc2hvdWxkQXBwbHlJbmRlbnRUZXh0IHx8IGRvY3VtZW50KCkuc2V0dGluZ3MoKS0+dXNlTGVn
YWN5VGV4dEFsaWduUG9zaXRpb25lZEVsZW1lbnRCZWhhdmlvcigpKSAvLyBGSVhNRTogSGFuZGxl
IFRBRU5EIGhlcmUKLSAgICAgICAgcmV0dXJuIHN0YXJ0T2Zmc2V0Rm9yTGluZShwb3NpdGlvbiwg
c2hvdWxkSW5kZW50VGV4dCA9PSBJbmRlbnRUZXh0KTsKKyAgICAgICAgcmV0dXJuIHN0YXJ0T2Zm
c2V0Rm9yTGluZShwb3NpdGlvbiwgc2hvdWxkSW5kZW50VGV4dCk7CiAKICAgICAvLyB1cGRhdGVM
b2dpY2FsV2lkdGhGb3JBbGlnbm1lbnQoKSBoYW5kbGVzIHRoZSBkaXJlY3Rpb24gb2YgdGhlIGJs
b2NrIHNvIG5vIG5lZWQgdG8gY29uc2lkZXIgaXQgaGVyZQogICAgIGZsb2F0IHRvdGFsTG9naWNh
bFdpZHRoID0gMDsKLSAgICBmbG9hdCBsb2dpY2FsTGVmdCA9IGxvZ2ljYWxMZWZ0T2Zmc2V0Rm9y
TGluZShsb2dpY2FsSGVpZ2h0KCksIGZhbHNlKTsKLSAgICBmbG9hdCBhdmFpbGFibGVMb2dpY2Fs
V2lkdGggPSBsb2dpY2FsUmlnaHRPZmZzZXRGb3JMaW5lKGxvZ2ljYWxIZWlnaHQoKSwgZmFsc2Up
IC0gbG9naWNhbExlZnQ7CisgICAgZmxvYXQgbG9naWNhbExlZnQgPSBsb2dpY2FsTGVmdE9mZnNl
dEZvckxpbmUobG9naWNhbEhlaWdodCgpLCBEb05vdEluZGVudFRleHQpOworICAgIGZsb2F0IGF2
YWlsYWJsZUxvZ2ljYWxXaWR0aCA9IGxvZ2ljYWxSaWdodE9mZnNldEZvckxpbmUobG9naWNhbEhl
aWdodCgpLCBEb05vdEluZGVudFRleHQpIC0gbG9naWNhbExlZnQ7CiAKICAgICAvLyBGSVhNRTog
QnVnIDEyOTMxMTogV2UgbmVlZCB0byBwYXNzIGEgdmFsaWQgUm9vdElubGluZUJveCBoZXJlLCBj
b25zaWRlcmluZyB0aGUgYmlkaSBsZXZlbCB1c2VkIHRvIGNvbnN0cnVjdCB0aGUgbGluZS4KICAg
ICB1cGRhdGVMb2dpY2FsV2lkdGhGb3JBbGlnbm1lbnQodGV4dEFsaWduLCAwLCAwLCBsb2dpY2Fs
TGVmdCwgdG90YWxMb2dpY2FsV2lkdGgsIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCwgMCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDI2YTA1YTAuLmE2YzliN2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC0xODY4LDcgKzE4NjgsNyBA
QCBMYXlvdXRVbml0IFJlbmRlckJveDo6c2hyaW5rTG9naWNhbFdpZHRoVG9Bdm9pZEZsb2F0cyhM
YXlvdXRVbml0IGNoaWxkTWFyZ2luU3RhcgogICAgIH0KIAogICAgIExheW91dFVuaXQgbG9naWNh
bEhlaWdodCA9IGNiLT5sb2dpY2FsSGVpZ2h0Rm9yQ2hpbGQoKnRoaXMpOwotICAgIExheW91dFVu
aXQgcmVzdWx0ID0gY2ItPmF2YWlsYWJsZUxvZ2ljYWxXaWR0aEZvckxpbmVJblJlZ2lvbihsb2dp
Y2FsVG9wUG9zaXRpb24sIGZhbHNlLCBjb250YWluaW5nQmxvY2tSZWdpb24sIGxvZ2ljYWxIZWln
aHQpIC0gY2hpbGRNYXJnaW5TdGFydCAtIGNoaWxkTWFyZ2luRW5kOworICAgIExheW91dFVuaXQg
cmVzdWx0ID0gY2ItPmF2YWlsYWJsZUxvZ2ljYWxXaWR0aEZvckxpbmVJblJlZ2lvbihsb2dpY2Fs
VG9wUG9zaXRpb24sIERvTm90SW5kZW50VGV4dCwgY29udGFpbmluZ0Jsb2NrUmVnaW9uLCBsb2dp
Y2FsSGVpZ2h0KSAtIGNoaWxkTWFyZ2luU3RhcnQgLSBjaGlsZE1hcmdpbkVuZDsKIAogICAgIC8v
IFdlIG5lZWQgdG8gc2VlIGlmIG1hcmdpbnMgb24gZWl0aGVyIHRoZSBzdGFydCBzaWRlIG9yIHRo
ZSBlbmQgc2lkZSBjYW4gY29udGFpbiB0aGUgZmxvYXRzIGluIHF1ZXN0aW9uLiBJZiB0aGV5IGNh
biwKICAgICAvLyB0aGVuIGp1c3QgdXNpbmcgdGhlIGxpbmUgd2lkdGggaXMgaW5hY2N1cmF0ZS4g
SW4gdGhlIGNhc2Ugd2hlcmUgYSBmbG9hdCBjb21wbGV0ZWx5IGZpdHMsIHdlIGRvbid0IG5lZWQg
dG8gdXNlIHRoZSBsaW5lCkBAIC0xODc4LDcgKzE4NzgsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJv
eDo6c2hyaW5rTG9naWNhbFdpZHRoVG9Bdm9pZEZsb2F0cyhMYXlvdXRVbml0IGNoaWxkTWFyZ2lu
U3RhcgogICAgIGlmIChjaGlsZE1hcmdpblN0YXJ0ID4gMCkgewogICAgICAgICBMYXlvdXRVbml0
IHN0YXJ0Q29udGVudFNpZGUgPSBjYi0+c3RhcnRPZmZzZXRGb3JDb250ZW50KGNvbnRhaW5pbmdC
bG9ja1JlZ2lvbik7CiAgICAgICAgIExheW91dFVuaXQgc3RhcnRDb250ZW50U2lkZVdpdGhNYXJn
aW4gPSBzdGFydENvbnRlbnRTaWRlICsgY2hpbGRNYXJnaW5TdGFydDsKLSAgICAgICAgTGF5b3V0
VW5pdCBzdGFydE9mZnNldCA9IGNiLT5zdGFydE9mZnNldEZvckxpbmVJblJlZ2lvbihsb2dpY2Fs
VG9wUG9zaXRpb24sIGZhbHNlLCBjb250YWluaW5nQmxvY2tSZWdpb24sIGxvZ2ljYWxIZWlnaHQp
OworICAgICAgICBMYXlvdXRVbml0IHN0YXJ0T2Zmc2V0ID0gY2ItPnN0YXJ0T2Zmc2V0Rm9yTGlu
ZUluUmVnaW9uKGxvZ2ljYWxUb3BQb3NpdGlvbiwgRG9Ob3RJbmRlbnRUZXh0LCBjb250YWluaW5n
QmxvY2tSZWdpb24sIGxvZ2ljYWxIZWlnaHQpOwogICAgICAgICBpZiAoc3RhcnRPZmZzZXQgPiBz
dGFydENvbnRlbnRTaWRlV2l0aE1hcmdpbikKICAgICAgICAgICAgIHJlc3VsdCArPSBjaGlsZE1h
cmdpblN0YXJ0OwogICAgICAgICBlbHNlCkBAIC0xODg4LDcgKzE4ODgsNyBAQCBMYXlvdXRVbml0
IFJlbmRlckJveDo6c2hyaW5rTG9naWNhbFdpZHRoVG9Bdm9pZEZsb2F0cyhMYXlvdXRVbml0IGNo
aWxkTWFyZ2luU3RhcgogICAgIGlmIChjaGlsZE1hcmdpbkVuZCA+IDApIHsKICAgICAgICAgTGF5
b3V0VW5pdCBlbmRDb250ZW50U2lkZSA9IGNiLT5lbmRPZmZzZXRGb3JDb250ZW50KGNvbnRhaW5p
bmdCbG9ja1JlZ2lvbik7CiAgICAgICAgIExheW91dFVuaXQgZW5kQ29udGVudFNpZGVXaXRoTWFy
Z2luID0gZW5kQ29udGVudFNpZGUgKyBjaGlsZE1hcmdpbkVuZDsKLSAgICAgICAgTGF5b3V0VW5p
dCBlbmRPZmZzZXQgPSBjYi0+ZW5kT2Zmc2V0Rm9yTGluZUluUmVnaW9uKGxvZ2ljYWxUb3BQb3Np
dGlvbiwgZmFsc2UsIGNvbnRhaW5pbmdCbG9ja1JlZ2lvbiwgbG9naWNhbEhlaWdodCk7CisgICAg
ICAgIExheW91dFVuaXQgZW5kT2Zmc2V0ID0gY2ItPmVuZE9mZnNldEZvckxpbmVJblJlZ2lvbihs
b2dpY2FsVG9wUG9zaXRpb24sIERvTm90SW5kZW50VGV4dCwgY29udGFpbmluZ0Jsb2NrUmVnaW9u
LCBsb2dpY2FsSGVpZ2h0KTsKICAgICAgICAgaWYgKGVuZE9mZnNldCA+IGVuZENvbnRlbnRTaWRl
V2l0aE1hcmdpbikKICAgICAgICAgICAgIHJlc3VsdCArPSBjaGlsZE1hcmdpbkVuZDsKICAgICAg
ICAgZWxzZQpAQCAtMTk1Miw3ICsxOTUyLDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbnRh
aW5pbmdCbG9ja0F2YWlsYWJsZUxpbmVXaWR0aEluUmVnaW9uKFJlbmRlclJlZ2lvbiogcmUKICAg
ICAgICAgbG9naWNhbFRvcFBvc2l0aW9uID0gc3RkOjptYXgobG9naWNhbFRvcFBvc2l0aW9uLCBs
b2dpY2FsVG9wUG9zaXRpb24gKyBvZmZzZXRGcm9tTG9naWNhbFRvcE9mUmVnaW9uKTsKICAgICAg
ICAgY29udGFpbmluZ0Jsb2NrUmVnaW9uID0gY2ItPmNsYW1wVG9TdGFydEFuZEVuZFJlZ2lvbnMo
cmVnaW9uKTsKICAgICB9Ci0gICAgcmV0dXJuIGNiLT5hdmFpbGFibGVMb2dpY2FsV2lkdGhGb3JM
aW5lSW5SZWdpb24obG9naWNhbFRvcFBvc2l0aW9uLCBmYWxzZSwgY29udGFpbmluZ0Jsb2NrUmVn
aW9uLCBhdmFpbGFibGVMb2dpY2FsSGVpZ2h0KEluY2x1ZGVNYXJnaW5Cb3JkZXJQYWRkaW5nKSk7
CisgICAgcmV0dXJuIGNiLT5hdmFpbGFibGVMb2dpY2FsV2lkdGhGb3JMaW5lSW5SZWdpb24obG9n
aWNhbFRvcFBvc2l0aW9uLCBEb05vdEluZGVudFRleHQsIGNvbnRhaW5pbmdCbG9ja1JlZ2lvbiwg
YXZhaWxhYmxlTG9naWNhbEhlaWdodChJbmNsdWRlTWFyZ2luQm9yZGVyUGFkZGluZykpOwogfQog
CiBMYXlvdXRVbml0IFJlbmRlckJveDo6cGVycGVuZGljdWxhckNvbnRhaW5pbmdCbG9ja0xvZ2lj
YWxIZWlnaHQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcAppbmRleCBhZmNkYjc3Li5iYjFlYjFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhp
YmxlQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRl
ZEZsZXhpYmxlQm94LmNwcApAQCAtMTAxNCwxMyArMTAxNCwxMyBAQCB2b2lkIFJlbmRlckRlcHJl
Y2F0ZWRGbGV4aWJsZUJveDo6YXBwbHlMaW5lQ2xhbXAoRmxleEJveEl0ZXJhdG9yJiBpdGVyYXRv
ciwgYm9vbAogICAgICAgICBpZiAoIWxlZnRUb1JpZ2h0KQogICAgICAgICAgICAgY29udGludWU7
CiAKLSAgICAgICAgTGF5b3V0VW5pdCBibG9ja1JpZ2h0RWRnZSA9IGRlc3RCbG9jay5sb2dpY2Fs
UmlnaHRPZmZzZXRGb3JMaW5lKGxhc3RWaXNpYmxlTGluZS0+eSgpLCBmYWxzZSk7CisgICAgICAg
IExheW91dFVuaXQgYmxvY2tSaWdodEVkZ2UgPSBkZXN0QmxvY2subG9naWNhbFJpZ2h0T2Zmc2V0
Rm9yTGluZShsYXN0VmlzaWJsZUxpbmUtPnkoKSwgRG9Ob3RJbmRlbnRUZXh0KTsKICAgICAgICAg
aWYgKCFsYXN0VmlzaWJsZUxpbmUtPmxpbmVDYW5BY2NvbW1vZGF0ZUVsbGlwc2lzKGxlZnRUb1Jp
Z2h0LCBibG9ja1JpZ2h0RWRnZSwgbGFzdFZpc2libGVMaW5lLT54KCkgKyBsYXN0VmlzaWJsZUxp
bmUtPmxvZ2ljYWxXaWR0aCgpLCB0b3RhbFdpZHRoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
CiAgICAgICAgIC8vIExldCB0aGUgdHJ1bmNhdGlvbiBjb2RlIGtpY2sgaW4uCiAgICAgICAgIC8v
IEZJWE1FOiB0aGUgdGV4dCBhbGlnbm1lbnQgc2hvdWxkIGJlIHJlY29tcHV0ZWQgYWZ0ZXIgdGhl
IHdpZHRoIGNoYW5nZXMgZHVlIHRvIHRydW5jYXRpb24uCi0gICAgICAgIExheW91dFVuaXQgYmxv
Y2tMZWZ0RWRnZSA9IGRlc3RCbG9jay5sb2dpY2FsTGVmdE9mZnNldEZvckxpbmUobGFzdFZpc2li
bGVMaW5lLT55KCksIGZhbHNlKTsKKyAgICAgICAgTGF5b3V0VW5pdCBibG9ja0xlZnRFZGdlID0g
ZGVzdEJsb2NrLmxvZ2ljYWxMZWZ0T2Zmc2V0Rm9yTGluZShsYXN0VmlzaWJsZUxpbmUtPnkoKSwg
RG9Ob3RJbmRlbnRUZXh0KTsKICAgICAgICAgbGFzdFZpc2libGVMaW5lLT5wbGFjZUVsbGlwc2lz
KGFuY2hvckJveCA/IGVsbGlwc2lzQW5kU3BhY2VTdHIgOiBlbGxpcHNpc1N0ciwgbGVmdFRvUmln
aHQsIGJsb2NrTGVmdEVkZ2UsIGJsb2NrUmlnaHRFZGdlLCB0b3RhbFdpZHRoLCBhbmNob3JCb3gp
OwogICAgICAgICBkZXN0QmxvY2suc2V0SGFzTWFya3VwVHJ1bmNhdGlvbih0cnVlKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmNwcAppbmRleCAxNmM4
MmExLi5mOWM4ZmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGlzdEl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRl
bS5jcHAKQEAgLTM1MSw3ICszNTEsNyBAQCB2b2lkIFJlbmRlckxpc3RJdGVtOjpwb3NpdGlvbkxp
c3RNYXJrZXIoKQogCiAgICAgICAgIC8vIEZJWE1FOiBOZWVkIHRvIGFjY291bnQgZm9yIHJlbGF0
aXZlIHBvc2l0aW9uaW5nIGluIHRoZSBsYXlvdXQgb3ZlcmZsb3cuCiAgICAgICAgIGlmIChzdHls
ZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkgewotICAgICAgICAgICAgTGF5b3V0VW5pdCBs
ZWZ0TGluZU9mZnNldCA9IGxvZ2ljYWxMZWZ0T2Zmc2V0Rm9yTGluZShibG9ja09mZnNldCwgbG9n
aWNhbExlZnRPZmZzZXRGb3JMaW5lKGJsb2NrT2Zmc2V0LCBmYWxzZSksIGZhbHNlKTsKKyAgICAg
ICAgICAgIExheW91dFVuaXQgbGVmdExpbmVPZmZzZXQgPSBsb2dpY2FsTGVmdE9mZnNldEZvckxp
bmUoYmxvY2tPZmZzZXQsIGxvZ2ljYWxMZWZ0T2Zmc2V0Rm9yTGluZShibG9ja09mZnNldCwgRG9O
b3RJbmRlbnRUZXh0KSwgZmFsc2UpOwogICAgICAgICAgICAgbWFya2VyTG9naWNhbExlZnQgPSBs
ZWZ0TGluZU9mZnNldCAtIGxpbmVPZmZzZXQgLSBwYWRkaW5nU3RhcnQoKSAtIGJvcmRlclN0YXJ0
KCkgKyBtX21hcmtlci0+bWFyZ2luU3RhcnQoKTsKICAgICAgICAgICAgIG1fbWFya2VyLT5pbmxp
bmVCb3hXcmFwcGVyKCktPmFkanVzdExpbmVEaXJlY3Rpb25Qb3NpdGlvbihtYXJrZXJMb2dpY2Fs
TGVmdCAtIG1hcmtlck9sZExvZ2ljYWxMZWZ0KTsKICAgICAgICAgICAgIGZvciAoSW5saW5lRmxv
d0JveCogYm94ID0gbV9tYXJrZXItPmlubGluZUJveFdyYXBwZXIoKS0+cGFyZW50KCk7IGJveDsg
Ym94ID0gYm94LT5wYXJlbnQoKSkgewpAQCAtMzc0LDcgKzM3NCw3IEBAIHZvaWQgUmVuZGVyTGlz
dEl0ZW06OnBvc2l0aW9uTGlzdE1hcmtlcigpCiAgICAgICAgICAgICAgICAgICAgIGhpdFNlbGZQ
YWludGluZ0xheWVyID0gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIExheW91dFVuaXQgcmlnaHRMaW5lT2Zmc2V0ID0gbG9naWNhbFJpZ2h0T2Zmc2V0
Rm9yTGluZShibG9ja09mZnNldCwgbG9naWNhbFJpZ2h0T2Zmc2V0Rm9yTGluZShibG9ja09mZnNl
dCwgZmFsc2UpLCBmYWxzZSk7CisgICAgICAgICAgICBMYXlvdXRVbml0IHJpZ2h0TGluZU9mZnNl
dCA9IGxvZ2ljYWxSaWdodE9mZnNldEZvckxpbmUoYmxvY2tPZmZzZXQsIGxvZ2ljYWxSaWdodE9m
ZnNldEZvckxpbmUoYmxvY2tPZmZzZXQsIERvTm90SW5kZW50VGV4dCksIGZhbHNlKTsKICAgICAg
ICAgICAgIG1hcmtlckxvZ2ljYWxMZWZ0ID0gcmlnaHRMaW5lT2Zmc2V0IC0gbGluZU9mZnNldCAr
IHBhZGRpbmdTdGFydCgpICsgYm9yZGVyU3RhcnQoKSArIG1fbWFya2VyLT5tYXJnaW5FbmQoKTsK
ICAgICAgICAgICAgIG1fbWFya2VyLT5pbmxpbmVCb3hXcmFwcGVyKCktPmFkanVzdExpbmVEaXJl
Y3Rpb25Qb3NpdGlvbihtYXJrZXJMb2dpY2FsTGVmdCAtIG1hcmtlck9sZExvZ2ljYWxMZWZ0KTsK
ICAgICAgICAgICAgIGZvciAoSW5saW5lRmxvd0JveCogYm94ID0gbV9tYXJrZXItPmlubGluZUJv
eFdyYXBwZXIoKS0+cGFyZW50KCk7IGJveDsgYm94ID0gYm94LT5wYXJlbnQoKSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCmluZGV4IDM0Njc3ZDkuLjhkOTc4
OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAKQEAgLTYz
NSwxMCArNjM1LDEwIEBAIExheW91dFVuaXQgUm9vdElubGluZUJveDo6c2VsZWN0aW9uVG9wKCkg
Y29uc3QKICAgICAgICAgLy8gVGhpcyBsaW5lIGhhcyBhY3R1YWxseSBiZWVuIG1vdmVkIGZ1cnRo
ZXIgZG93biwgcHJvYmFibHkgZnJvbSBhIGxhcmdlIGxpbmUtaGVpZ2h0LCBidXQgcG9zc2libHkg
YmVjYXVzZSB0aGUKICAgICAgICAgLy8gbGluZSB3YXMgZm9yY2VkIHRvIGNsZWFyIGZsb2F0cy4g
IElmIHNvLCBsZXQncyBjaGVjayB0aGUgb2Zmc2V0cywgYW5kIG9ubHkgYmUgd2lsbGluZyB0byB1
c2UgdGhlIHByZXZpb3VzCiAgICAgICAgIC8vIGxpbmUncyBib3R0b20gaWYgdGhlIG9mZnNldHMg
YXJlIGdyZWF0ZXIgb24gYm90aCBzaWRlcy4KLSAgICAgICAgTGF5b3V0VW5pdCBwcmV2TGVmdCA9
IGJsb2NrRmxvdygpLmxvZ2ljYWxMZWZ0T2Zmc2V0Rm9yTGluZShwcmV2Qm90dG9tLCBmYWxzZSk7
Ci0gICAgICAgIExheW91dFVuaXQgcHJldlJpZ2h0ID0gYmxvY2tGbG93KCkubG9naWNhbFJpZ2h0
T2Zmc2V0Rm9yTGluZShwcmV2Qm90dG9tLCBmYWxzZSk7Ci0gICAgICAgIExheW91dFVuaXQgbmV3
TGVmdCA9IGJsb2NrRmxvdygpLmxvZ2ljYWxMZWZ0T2Zmc2V0Rm9yTGluZShzZWxlY3Rpb25Ub3As
IGZhbHNlKTsKLSAgICAgICAgTGF5b3V0VW5pdCBuZXdSaWdodCA9IGJsb2NrRmxvdygpLmxvZ2lj
YWxSaWdodE9mZnNldEZvckxpbmUoc2VsZWN0aW9uVG9wLCBmYWxzZSk7CisgICAgICAgIExheW91
dFVuaXQgcHJldkxlZnQgPSBibG9ja0Zsb3coKS5sb2dpY2FsTGVmdE9mZnNldEZvckxpbmUocHJl
dkJvdHRvbSwgRG9Ob3RJbmRlbnRUZXh0KTsKKyAgICAgICAgTGF5b3V0VW5pdCBwcmV2UmlnaHQg
PSBibG9ja0Zsb3coKS5sb2dpY2FsUmlnaHRPZmZzZXRGb3JMaW5lKHByZXZCb3R0b20sIERvTm90
SW5kZW50VGV4dCk7CisgICAgICAgIExheW91dFVuaXQgbmV3TGVmdCA9IGJsb2NrRmxvdygpLmxv
Z2ljYWxMZWZ0T2Zmc2V0Rm9yTGluZShzZWxlY3Rpb25Ub3AsIERvTm90SW5kZW50VGV4dCk7Cisg
ICAgICAgIExheW91dFVuaXQgbmV3UmlnaHQgPSBibG9ja0Zsb3coKS5sb2dpY2FsUmlnaHRPZmZz
ZXRGb3JMaW5lKHNlbGVjdGlvblRvcCwgRG9Ob3RJbmRlbnRUZXh0KTsKICAgICAgICAgaWYgKHBy
ZXZMZWZ0ID4gbmV3TGVmdCB8fCBwcmV2UmlnaHQgPCBuZXdSaWdodCkKICAgICAgICAgICAgIHJl
dHVybiBzZWxlY3Rpb25Ub3A7CiAgICAgfQpAQCAtNzE4LDEwICs3MTgsMTAgQEAgTGF5b3V0VW5p
dCBSb290SW5saW5lQm94OjpzZWxlY3Rpb25Cb3R0b20oKSBjb25zdAogICAgICAgICAvLyBUaGUg
bmV4dCBsaW5lIGhhcyBhY3R1YWxseSBiZWVuIG1vdmVkIGZ1cnRoZXIgb3ZlciwgcHJvYmFibHkg
ZnJvbSBhIGxhcmdlIGxpbmUtaGVpZ2h0LCBidXQgcG9zc2libHkgYmVjYXVzZSB0aGUKICAgICAg
ICAgLy8gbGluZSB3YXMgZm9yY2VkIHRvIGNsZWFyIGZsb2F0cy4gIElmIHNvLCBsZXQncyBjaGVj
ayB0aGUgb2Zmc2V0cywgYW5kIG9ubHkgYmUgd2lsbGluZyB0byB1c2UgdGhlIG5leHQKICAgICAg
ICAgLy8gbGluZSdzIHRvcCBpZiB0aGUgb2Zmc2V0cyBhcmUgZ3JlYXRlciBvbiBib3RoIHNpZGVz
LgotICAgICAgICBMYXlvdXRVbml0IG5leHRMZWZ0ID0gYmxvY2tGbG93KCkubG9naWNhbExlZnRP
ZmZzZXRGb3JMaW5lKG5leHRUb3AsIGZhbHNlKTsKLSAgICAgICAgTGF5b3V0VW5pdCBuZXh0Umln
aHQgPSBibG9ja0Zsb3coKS5sb2dpY2FsUmlnaHRPZmZzZXRGb3JMaW5lKG5leHRUb3AsIGZhbHNl
KTsKLSAgICAgICAgTGF5b3V0VW5pdCBuZXdMZWZ0ID0gYmxvY2tGbG93KCkubG9naWNhbExlZnRP
ZmZzZXRGb3JMaW5lKHNlbGVjdGlvbkJvdHRvbSwgZmFsc2UpOwotICAgICAgICBMYXlvdXRVbml0
IG5ld1JpZ2h0ID0gYmxvY2tGbG93KCkubG9naWNhbFJpZ2h0T2Zmc2V0Rm9yTGluZShzZWxlY3Rp
b25Cb3R0b20sIGZhbHNlKTsKKyAgICAgICAgTGF5b3V0VW5pdCBuZXh0TGVmdCA9IGJsb2NrRmxv
dygpLmxvZ2ljYWxMZWZ0T2Zmc2V0Rm9yTGluZShuZXh0VG9wLCBEb05vdEluZGVudFRleHQpOwor
ICAgICAgICBMYXlvdXRVbml0IG5leHRSaWdodCA9IGJsb2NrRmxvdygpLmxvZ2ljYWxSaWdodE9m
ZnNldEZvckxpbmUobmV4dFRvcCwgRG9Ob3RJbmRlbnRUZXh0KTsKKyAgICAgICAgTGF5b3V0VW5p
dCBuZXdMZWZ0ID0gYmxvY2tGbG93KCkubG9naWNhbExlZnRPZmZzZXRGb3JMaW5lKHNlbGVjdGlv
bkJvdHRvbSwgRG9Ob3RJbmRlbnRUZXh0KTsKKyAgICAgICAgTGF5b3V0VW5pdCBuZXdSaWdodCA9
IGJsb2NrRmxvdygpLmxvZ2ljYWxSaWdodE9mZnNldEZvckxpbmUoc2VsZWN0aW9uQm90dG9tLCBE
b05vdEluZGVudFRleHQpOwogICAgICAgICBpZiAobmV4dExlZnQgPiBuZXdMZWZ0IHx8IG5leHRS
aWdodCA8IG5ld1JpZ2h0KQogICAgICAgICAgICAgcmV0dXJuIHNlbGVjdGlvbkJvdHRvbTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAKaW5k
ZXggNmY5NzY3Yy4uZjM1ZjYxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1NpbXBsZUxpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1w
bGVMaW5lTGF5b3V0LmNwcApAQCAtMzMxLDcgKzMzMSw3IEBAIHN0YXRpYyBBdm9pZGFuY2VSZWFz
b25GbGFncyBjYW5Vc2VGb3JXaXRoUmVhc29uKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgZmxvdywg
SW5jCiAgICAgICAgICAgICAgICAgaWYgKGZsb2F0aW5nT2JqZWN0LT5yZW5kZXJlcigpLnNoYXBl
T3V0c2lkZUluZm8oKSkKICAgICAgICAgICAgICAgICAgICAgU0VUX1JFQVNPTl9BTkRfUkVUVVJO
X0lGX05FRURFRChGbG93SGFzVW5zdXBwb3J0ZWRGbG9hdCwgcmVhc29ucywgaW5jbHVkZVJlYXNv
bnMpOwogI2VuZGlmCi0gICAgICAgICAgICAgICAgZmxvYXQgYXZhaWxhYmxlV2lkdGggPSBmbG93
LmF2YWlsYWJsZUxvZ2ljYWxXaWR0aEZvckxpbmUoZmxvYXRpbmdPYmplY3QtPnkoKSwgZmFsc2Up
OworICAgICAgICAgICAgICAgIGZsb2F0IGF2YWlsYWJsZVdpZHRoID0gZmxvdy5hdmFpbGFibGVM
b2dpY2FsV2lkdGhGb3JMaW5lKGZsb2F0aW5nT2JqZWN0LT55KCksIERvTm90SW5kZW50VGV4dCk7
CiAgICAgICAgICAgICAgICAgaWYgKGF2YWlsYWJsZVdpZHRoIDwgbWluaW11bVdpZHRoTmVlZGVk
KQogICAgICAgICAgICAgICAgICAgICBTRVRfUkVBU09OX0FORF9SRVRVUk5fSUZfTkVFREVEKEZs
b3dIYXNVbnN1cHBvcnRlZEZsb2F0LCByZWFzb25zLCBpbmNsdWRlUmVhc29ucyk7CiAgICAgICAg
ICAgICB9CkBAIC01NjgsOCArNTY4LDkgQEAgc3RhdGljIHZvaWQgdXBkYXRlTGluZUNvbnN0cmFp
bnMoY29uc3QgUmVuZGVyQmxvY2tGbG93JiBmbG93LCBMaW5lU3RhdGUmIGxpbmUsIGIKICAgICBi
b29sIHNob3VsZEFwcGx5VGV4dEluZGVudCA9ICFmbG93LmlzQW5vbnltb3VzKCkgfHwgZmxvdy5w
YXJlbnQoKS0+Zmlyc3RDaGlsZCgpID09ICZmbG93OwogICAgIExheW91dFVuaXQgaGVpZ2h0ID0g
Zmxvdy5sb2dpY2FsSGVpZ2h0KCk7CiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0ID0gZmxv
dy5taW5MaW5lSGVpZ2h0Rm9yUmVwbGFjZWRSZW5kZXJlcihmYWxzZSwgMCk7Ci0gICAgZmxvYXQg
bG9naWNhbFJpZ2h0T2Zmc2V0ID0gZmxvdy5sb2dpY2FsUmlnaHRPZmZzZXRGb3JMaW5lKGhlaWdo
dCwgZmFsc2UsIGxvZ2ljYWxIZWlnaHQpOwotICAgIGxpbmUuc2V0TG9naWNhbExlZnRPZmZzZXQo
Zmxvdy5sb2dpY2FsTGVmdE9mZnNldEZvckxpbmUoaGVpZ2h0LCBmYWxzZSwgbG9naWNhbEhlaWdo
dCkgKyAoc2hvdWxkQXBwbHlUZXh0SW5kZW50ICYmIGlzRmlyc3RMaW5lID8gZmxvdy50ZXh0SW5k
ZW50T2Zmc2V0KCkgOiBMYXlvdXRVbml0KDApKSk7CisgICAgZmxvYXQgbG9naWNhbFJpZ2h0T2Zm
c2V0ID0gZmxvdy5sb2dpY2FsUmlnaHRPZmZzZXRGb3JMaW5lKGhlaWdodCwgRG9Ob3RJbmRlbnRU
ZXh0LCBsb2dpY2FsSGVpZ2h0KTsKKyAgICBsaW5lLnNldExvZ2ljYWxMZWZ0T2Zmc2V0KGZsb3cu
bG9naWNhbExlZnRPZmZzZXRGb3JMaW5lKGhlaWdodCwgRG9Ob3RJbmRlbnRUZXh0LCBsb2dpY2Fs
SGVpZ2h0KSArCisgICAgICAgIChzaG91bGRBcHBseVRleHRJbmRlbnQgJiYgaXNGaXJzdExpbmUg
PyBmbG93LnRleHRJbmRlbnRPZmZzZXQoKSA6IExheW91dFVuaXQoMCkpKTsKICAgICBsaW5lLnNl
dEF2YWlsYWJsZVdpZHRoKHN0ZDo6bWF4PGZsb2F0PigwLCBsb2dpY2FsUmlnaHRPZmZzZXQgLSBs
aW5lLmxvZ2ljYWxMZWZ0T2Zmc2V0KCkpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL2xpbmUvTGluZUJyZWFrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL2xpbmUvTGluZUJyZWFrZXIuY3BwCmluZGV4IDU1ZWE2NjUuLjZlYWZhMjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVCcmVha2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lQnJlYWtlci5jcHAKQEAgLTYwLDcgKzYw
LDcgQEAgdm9pZCBMaW5lQnJlYWtlcjo6c2tpcExlYWRpbmdXaGl0ZXNwYWNlKElubGluZUJpZGlS
ZXNvbHZlciYgcmVzb2x2ZXIsIExpbmVJbmZvJgogICAgIHdoaWxlICghcmVzb2x2ZXIucG9zaXRp
b24oKS5hdEVuZCgpICYmICFyZXF1aXJlc0xpbmVCb3gocmVzb2x2ZXIucG9zaXRpb24oKSwgbGlu
ZUluZm8sIExlYWRpbmdXaGl0ZXNwYWNlKSkgewogICAgICAgICBSZW5kZXJPYmplY3QmIG9iamVj
dCA9ICpyZXNvbHZlci5wb3NpdGlvbigpLnJlbmRlcmVyKCk7CiAgICAgICAgIGlmIChvYmplY3Qu
aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpIHsKLSAgICAgICAgICAgIHNldFN0YXRpY1Bvc2l0aW9u
cyhtX2Jsb2NrLCBkb3duY2FzdDxSZW5kZXJCb3g+KG9iamVjdCksIHdpZHRoLnNob3VsZEluZGVu
dFRleHQoKSA/IEluZGVudFRleHQgOiBEb05vdEluZGVudFRleHQpOworICAgICAgICAgICAgc2V0
U3RhdGljUG9zaXRpb25zKG1fYmxvY2ssIGRvd25jYXN0PFJlbmRlckJveD4ob2JqZWN0KSwgd2lk
dGguc2hvdWxkSW5kZW50VGV4dCgpKTsKICAgICAgICAgICAgIGlmIChvYmplY3Quc3R5bGUoKS5p
c09yaWdpbmFsRGlzcGxheUlubGluZVR5cGUoKSkgewogICAgICAgICAgICAgICAgIHJlc29sdmVy
LnJ1bnMoKS5hZGRSdW4obmV3IEJpZGlSdW4oMCwgMSwgb2JqZWN0LCByZXNvbHZlci5jb250ZXh0
KCksIHJlc29sdmVyLmRpcigpKSk7CiAgICAgICAgICAgICAgICAgbGluZUluZm8uaW5jcmVtZW50
UnVuc0Zyb21MZWFkaW5nV2hpdGVzcGFjZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL2xpbmUvTGluZVdpZHRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9s
aW5lL0xpbmVXaWR0aC5jcHAKaW5kZXggZmNmYjA0OC4uZjNiMTJiMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZVdpZHRoLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbGluZS9MaW5lV2lkdGguY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9p
ZCBMaW5lV2lkdGg6OnNocmlua0F2YWlsYWJsZVdpZHRoRm9yTmV3RmxvYXRJZk5lZWRlZChjb25z
dCBGbG9hdGluZ09iamVjdCYgbmUKIAogICAgIGlmIChuZXdGbG9hdC50eXBlKCkgPT0gRmxvYXRp
bmdPYmplY3Q6OkZsb2F0TGVmdCkgewogICAgICAgICBmbG9hdCBuZXdMZWZ0ID0gbV9ibG9jay5s
b2dpY2FsUmlnaHRGb3JGbG9hdChuZXdGbG9hdCk7Ci0gICAgICAgIGlmIChzaG91bGRJbmRlbnRU
ZXh0KCkgJiYgbV9ibG9jay5zdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkKKyAgICAg
ICAgaWYgKHNob3VsZEluZGVudFRleHQoKSA9PSBJbmRlbnRUZXh0ICYmIG1fYmxvY2suc3R5bGUo
KS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpCiAgICAgICAgICAgICBuZXdMZWZ0ICs9IGZsb29y
VG9JbnQobV9ibG9jay50ZXh0SW5kZW50T2Zmc2V0KCkpOwogI2lmIEVOQUJMRShDU1NfU0hBUEVT
KQogICAgICAgICBpZiAoc2hhcGVEZWx0YXMuaXNWYWxpZCgpKSB7CkBAIC0xMTYsNyArMTE2LDcg
QEAgdm9pZCBMaW5lV2lkdGg6OnNocmlua0F2YWlsYWJsZVdpZHRoRm9yTmV3RmxvYXRJZk5lZWRl
ZChjb25zdCBGbG9hdGluZ09iamVjdCYgbmUKICAgICAgICAgbV9sZWZ0ID0gc3RkOjptYXg8Zmxv
YXQ+KG1fbGVmdCwgbmV3TGVmdCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgZmxvYXQgbmV3Umln
aHQgPSBtX2Jsb2NrLmxvZ2ljYWxMZWZ0Rm9yRmxvYXQobmV3RmxvYXQpOwotICAgICAgICBpZiAo
c2hvdWxkSW5kZW50VGV4dCgpICYmICFtX2Jsb2NrLnN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVj
dGlvbigpKQorICAgICAgICBpZiAoc2hvdWxkSW5kZW50VGV4dCgpID09IEluZGVudFRleHQgJiYg
IW1fYmxvY2suc3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpCiAgICAgICAgICAgICBu
ZXdSaWdodCAtPSBmbG9vclRvSW50KG1fYmxvY2sudGV4dEluZGVudE9mZnNldCgpKTsKICNpZiBF
TkFCTEUoQ1NTX1NIQVBFUykKICAgICAgICAgaWYgKHNoYXBlRGVsdGFzLmlzVmFsaWQoKSkgewpA
QCAtMTU2LDcgKzE1Niw4IEBAIHZvaWQgTGluZVdpZHRoOjphcHBseU92ZXJoYW5nKFJlbmRlclJ1
YnlSdW4qIHJ1YnlSdW4sIFJlbmRlck9iamVjdCogc3RhcnRSZW5kZXJlCiAgICAgbV9vdmVyaGFu
Z1dpZHRoICs9IHN0YXJ0T3ZlcmhhbmcgKyBlbmRPdmVyaGFuZzsKIH0KIAotaW5saW5lIHN0YXRp
YyBmbG9hdCBhdmFpbGFibGVXaWR0aEF0T2Zmc2V0KGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgYmxv
Y2ssIGNvbnN0IExheW91dFVuaXQmIG9mZnNldCwgYm9vbCBzaG91bGRJbmRlbnRUZXh0LCBmbG9h
dCYgbmV3TGluZUxlZnQsIGZsb2F0JiBuZXdMaW5lUmlnaHQsIGNvbnN0IExheW91dFVuaXQmIGxp
bmVIZWlnaHQgPSAwKQoraW5saW5lIHN0YXRpYyBmbG9hdCBhdmFpbGFibGVXaWR0aEF0T2Zmc2V0
KGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgYmxvY2ssIGNvbnN0IExheW91dFVuaXQmIG9mZnNldCwg
SW5kZW50VGV4dE9yTm90IHNob3VsZEluZGVudFRleHQsCisgICAgZmxvYXQmIG5ld0xpbmVMZWZ0
LCBmbG9hdCYgbmV3TGluZVJpZ2h0LCBjb25zdCBMYXlvdXRVbml0JiBsaW5lSGVpZ2h0ID0gMCkK
IHsKICAgICBuZXdMaW5lTGVmdCA9IGJsb2NrLmxvZ2ljYWxMZWZ0T2Zmc2V0Rm9yTGluZShvZmZz
ZXQsIHNob3VsZEluZGVudFRleHQsIGxpbmVIZWlnaHQpOwogICAgIG5ld0xpbmVSaWdodCA9IGJs
b2NrLmxvZ2ljYWxSaWdodE9mZnNldEZvckxpbmUob2Zmc2V0LCBzaG91bGRJbmRlbnRUZXh0LCBs
aW5lSGVpZ2h0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xp
bmVXaWR0aC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZVdpZHRoLmgKaW5k
ZXggOTlhNTA1My4uOTQ5ZDJjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L2xpbmUvTGluZVdpZHRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGlu
ZVdpZHRoLmgKQEAgLTc2LDcgKzc2LDcgQEAgcHVibGljOgogICAgIHZvaWQgYXBwbHlPdmVyaGFu
ZyhSZW5kZXJSdWJ5UnVuKiwgUmVuZGVyT2JqZWN0KiBzdGFydFJlbmRlcmVyLCBSZW5kZXJPYmpl
Y3QqIGVuZFJlbmRlcmVyKTsKICAgICB2b2lkIGZpdEJlbG93RmxvYXRzKGJvb2wgaXNGaXJzdExp
bmUgPSBmYWxzZSk7CiAgICAgdm9pZCBzZXRUcmFpbGluZ1doaXRlc3BhY2VXaWR0aChmbG9hdCBj
b2xsYXBzZWRXaGl0ZXNwYWNlLCBmbG9hdCBib3JkZXJQYWRkaW5nTWFyZ2luID0gMCk7Ci0gICAg
Ym9vbCBzaG91bGRJbmRlbnRUZXh0KCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRJbmRlbnRUZXh0
ID09IEluZGVudFRleHQ7IH0KKyAgICBJbmRlbnRUZXh0T3JOb3Qgc2hvdWxkSW5kZW50VGV4dCgp
IGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkSW5kZW50VGV4dDsgfQogCiBwcml2YXRlOgogICAgIHZv
aWQgY29tcHV0ZUF2YWlsYWJsZVdpZHRoRnJvbUxlZnRBbmRSaWdodCgpOwo=
</data>
<flag name="review"
          id="296918"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>