<?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>261967</bug_id>
          
          <creation_ts>2023-09-22 13:19:21 -0700</creation_ts>
          <short_desc>[IFC][Ruby] Add support for soft wrap opportunities between ruby bases</short_desc>
          <delta_ts>2023-09-24 20:38:15 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1979424</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2023-09-22 13:19:21 -0700</bug_when>
    <thetext>ssia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1979428</commentid>
    <comment_count>1</comment_count>
      <attachid>467827</attachid>
    <who name="alan">zalan</who>
    <bug_when>2023-09-22 13:32:53 -0700</bug_when>
    <thetext>Created attachment 467827
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1979629</commentid>
    <comment_count>2</comment_count>
      <attachid>467839</attachid>
    <who name="alan">zalan</who>
    <bug_when>2023-09-24 05:33:04 -0700</bug_when>
    <thetext>Created attachment 467839
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1979646</commentid>
    <comment_count>3</comment_count>
      <attachid>467842</attachid>
    <who name="alan">zalan</who>
    <bug_when>2023-09-24 10:24:43 -0700</bug_when>
    <thetext>Created attachment 467842
[fast-cq]Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1979718</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2023-09-24 20:37:00 -0700</bug_when>
    <thetext>Committed 268384@main (b4ea8abad3e2): &lt;https://commits.webkit.org/268384@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 467842.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1979719</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2023-09-24 20:38:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/115972354&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>467827</attachid>
            <date>2023-09-22 13:32:53 -0700</date>
            <delta_ts>2023-09-24 05:33:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-261967-20230922133252.patch</filename>
            <type>text/plain</type>
            <size>20458</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSAyYzUxMjM4NzMzNTFhNGY2MDljNTIyYTYwMGZmYTZiYjk4YzAyNzFmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IEZyaSwgMjIgU2VwIDIwMjMgMTM6MTk6MjggLTA3MDAKU3ViamVjdDogW1BBVENIXSBbSUZDXVtS
dWJ5XSBBZGQgc3VwcG9ydCBmb3Igc29mdCB3cmFwIG9wcG9ydHVuaXRpZXMgYmV0d2VlbgogcnVi
eSBiYXNlcyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjYxOTY3CgpS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KClRoaXMgcGF0Y2ggZW5hYmxlcyBsaW5lIGJyZWFr
aW5nIGluc2lkZXIgcnVieSBjb250YWluZXJzLCBiZXR3ZWVuIHJ1YnkgYmFzZXMuCgoxLiBNb3Zl
IG5leHRXcmFwT3Bwb3J0dW5pdHkgbG9naWMgdG8gUnVieUZvcm1hdHRpbmdDb250ZXh0IChJRkMg
Y29uc3VsdHMgUnVieUZvcm1hdHRpbmdDb250ZXh0IGZvciBuZXh0IHdyYXAgb3Bwb3J0dW5pdHkg
bm93KQoyLiBNZWFzdXJlIHJ1YnkgdG8gZGVjaWRlIHdoZXRoZXIgd2UgY2FuIG9ubHkgZml0IHBh
cnRpYWwgKHJ1YnkgYmFzZSkgY29udGVudC4KCiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmNwcDoKKFdlYkNv
cmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5OjpuZXh0V3JhcE9wcG9ydHVuaXR5
KToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVMaW5lQnVpbGRlci5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjpjYW5kaWRh
dGVDb250ZW50Rm9yTGluZSk6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjpoYW5kbGVS
dWJ5Q29udGVudCk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwOgooV2ViQ29yZTo6
TGF5b3V0OjpJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmhhbmRsZUlubGluZUJveEVuZCk6
CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvcnVieS9S
dWJ5Rm9ybWF0dGluZ0NvbnRleHQuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpuZXh0V3JhcE9wcG9y
dHVuaXR5V2l0aGluUnVieUNvbnRhaW5lcik6CihXZWJDb3JlOjpMYXlvdXQ6OlJ1YnlGb3JtYXR0
aW5nQ29udGV4dDo6bGF5b3V0SW5saW5lQXhpcyk6CihXZWJDb3JlOjpMYXlvdXQ6OlJ1YnlGb3Jt
YXR0aW5nQ29udGV4dDo6cGxhY2VSdWJ5Q29udGVudCk6CihXZWJDb3JlOjpMYXlvdXQ6OlJ1YnlG
b3JtYXR0aW5nQ29udGV4dDo6bmV4dFdyYXBPcHBvcnR1bml0eSk6CihXZWJDb3JlOjpMYXlvdXQ6
OlJ1YnlGb3JtYXR0aW5nQ29udGV4dDo6bG9naWNhV2lkdGhGb3JSdWJ5UmFuZ2UgY29uc3QpOgoq
IFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL3J1YnkvUnVi
eUZvcm1hdHRpbmdDb250ZXh0Lmg6Ci0tLQogLi4uL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2Vv
bWV0cnkuY3BwICAgICAgIHwgICA3ICstCiAuLi4vaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNw
cCAgICAgICAgICAgICAgfCAgMzEgKy0tLQogLi4uL2Rpc3BsYXkvSW5saW5lRGlzcGxheUNvbnRl
bnRCdWlsZGVyLmNwcCAgIHwgICAyICstCiAuLi4vaW5saW5lL3J1YnkvUnVieUZvcm1hdHRpbmdD
b250ZXh0LmNwcCAgICAgfCAxNjUgKysrKysrKysrKysrKysrLS0tCiAuLi4vaW5saW5lL3J1Ynkv
UnVieUZvcm1hdHRpbmdDb250ZXh0LmggICAgICAgfCAgMTAgKy0KIDUgZmlsZXMgY2hhbmdlZCwg
MTYxIGluc2VydGlvbnMoKyksIDU0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdH
ZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuY3BwCmluZGV4IDIwYjQ0MDI1NGI5OS4uZDQx
MGY4ZDljYWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdH
ZW9tZXRyeS5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJMYXlvdXRFbGVtZW50Qm94
LmgiCiAjaW5jbHVkZSAiTGVuZ3RoRnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGVJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiUnVieUZvcm1hdHRpbmdDb250ZXh0LmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBMYXlvdXQgewpAQCAtNDYxLDEwICs0NjIsOCBAQCBzaXpl
X3QgSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5OjpuZXh0V3JhcE9wcG9ydHVuaXR5KHNpemVfdCBz
dGFydEluZGV4LCBjb25zdCBJbgogICAgICAgICAgICAgcmV0dXJuIGluZGV4OwogICAgICAgICB9
CiAgICAgICAgIGlmIChjdXJyZW50SXRlbS5pc0lubGluZUJveFN0YXJ0KCkgfHwgY3VycmVudEl0
ZW0uaXNJbmxpbmVCb3hFbmQoKSkgewotICAgICAgICAgICAgaWYgKGN1cnJlbnRJdGVtLmxheW91
dEJveCgpLmlzUnVieSgpKSB7Ci0gICAgICAgICAgICAgICAgLy8gU2hvdWxkIGJlIGFibGUgdG8g
YnJlYWsgX2JlZm9yZV8gPHJ1Ynk+LgotICAgICAgICAgICAgICAgIHJldHVybiBpbmRleDsKLSAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChhdXRvIG5leHRXcmFwT3Bwb3J0dW5pdHlGb3JS
dWJ5ID0gUnVieUZvcm1hdHRpbmdDb250ZXh0OjpuZXh0V3JhcE9wcG9ydHVuaXR5KGluZGV4LCBw
cmV2aW91c0lubGluZUl0ZW1JbmRleCwgbGF5b3V0UmFuZ2UsIGlubGluZUl0ZW1zKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gKm5leHRXcmFwT3Bwb3J0dW5pdHlGb3JSdWJ5OwogICAgICAgICAg
ICAgLy8gTmVlZCB0byBzZWUgd2hhdCBjb21lcyBuZXh0IHRvIGRlY2lkZS4KICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRl
ci5jcHAKaW5kZXggYTZkYjQ4YTc0Yzk5Li4xNjBmZTliNzQ0ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWls
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9JbmxpbmVMaW5lQnVpbGRlci5jcHAKQEAgLTYxNCwyOSArNjE0LDE1IEBAIHZvaWQgTGlu
ZUJ1aWxkZXI6OmNhbmRpZGF0ZUNvbnRlbnRGb3JMaW5lKExpbmVDYW5kaWRhdGUmIGxpbmVDYW5k
aWRhdGUsIHNpemVfdCBjCiAgICAgfQogCiAgICAgYXV0byBhcHBlbmRSdWJ5Q29udGFpbmVySWZB
cHBsaWNhYmxlID0gWyZdIHsKLSAgICAgICAgaWYgKHNvZnRXcmFwT3Bwb3J0dW5pdHlJbmRleCA+
IGN1cnJlbnRJbmxpbmVJdGVtSW5kZXggfHwgaXNMZWFkaW5nUGFydGlhQ29udGVudCkKKyAgICAg
ICAgYXV0byBpc1J1YnlDb250ZW50ID0gbV9pbmxpbmVJdGVtc1tjdXJyZW50SW5saW5lSXRlbUlu
ZGV4XS5sYXlvdXRCb3goKS5pc1J1YnkoKSB8fCBtX2lubGluZUl0ZW1zW2N1cnJlbnRJbmxpbmVJ
dGVtSW5kZXhdLmxheW91dEJveCgpLmlzUnVieUJhc2UoKTsKKyAgICAgICAgaWYgKCFpc1J1YnlD
b250ZW50KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAvLyBXZSBtdXN0IGJl
IGF0IGEgcnVieSBjb250YWluZXIgYW5kIHdlIHNob3VsZCBsZXQgdGhlIHJ1YnkgZm9ybWF0dGlu
ZyBjb250ZXh0IGhhbmRsZSB0aGUgcmVzdCBvZiB0aGUgcnVieSBjb250ZW50LgotICAgICAgICBB
U1NFUlQobV9pbmxpbmVJdGVtc1tjdXJyZW50SW5saW5lSXRlbUluZGV4XS5sYXlvdXRCb3goKS5p
c1J1YnkoKSk7CisgICAgICAgIC8vIFdlIG11c3QgYmUgYXQgYSBydWJ5IGNvbnRhaW5lci9iYXNl
IGFuZCB3ZSBzaG91bGQgbGV0IHRoZSBydWJ5IGZvcm1hdHRpbmcgY29udGV4dCBoYW5kbGUgdGhl
IHJlc3Qgb2YgdGhlIHJ1YnkgY29udGVudC4KKyAgICAgICAgQVNTRVJUKG1faW5saW5lSXRlbXNb
c29mdFdyYXBPcHBvcnR1bml0eUluZGV4IC0gMV0uaXNJbmxpbmVCb3hFbmQoKSAmJiBtX2lubGlu
ZUl0ZW1zW3NvZnRXcmFwT3Bwb3J0dW5pdHlJbmRleCAtIDFdLmxheW91dEJveCgpLmlzUnVieSgp
KTsKICAgICAgICAgLy8gUnVieSBiYXNlIGNvbnRlbnQgaXMgaGFuZGxlZCBhcyBvbmUgYXRvbWlj
IGxpbmUgY2FuZGlkYXRlIHdoZXJlIHJ1YnkgZm9ybWF0dGluZyBjb250ZXh0IHRha2VzIGNhcmUg
b2YgdGhlIGludGVybmFsIGRldGFpbHMuCiAgICAgICAgIC8vIE5vdGUgdGhhdCBydWJ5IGNvbnRl
bnQgaXMgcGxhY2VkIG9uIHRoZSBsaW5lIGFzIHJlZ3VhbGFyIGlubGluZSBjb250ZW50IGJ5IHRo
ZSBydWJ5IGZvcm1hdHRpbmcgY29udGV4dC4KLSAgICAgICAgc2l6ZV90IG5lc3RpbmdMZXZlbCA9
IDE7Ci0gICAgICAgIGZvciAoc2l6ZV90IGluZGV4ID0gc29mdFdyYXBPcHBvcnR1bml0eUluZGV4
ICsgMTsgaW5kZXggPCBsYXlvdXRSYW5nZS5lbmRJbmRleCgpOyArK2luZGV4KSB7Ci0gICAgICAg
ICAgICBhdXRvJiBpbmxpbmVJdGVtID0gbV9pbmxpbmVJdGVtc1tpbmRleF07Ci0gICAgICAgICAg
ICBpZiAoIWlubGluZUl0ZW0ubGF5b3V0Qm94KCkuaXNSdWJ5KCkpCi0gICAgICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgICAgICBBU1NFUlQoaW5saW5lSXRlbS5pc0lubGluZUJveFN0YXJ0
KCkgfHwgaW5saW5lSXRlbS5pc0lubGluZUJveEVuZCgpKTsKLSAgICAgICAgICAgIG5lc3RpbmdM
ZXZlbCArPSBpbmxpbmVJdGVtLmlzSW5saW5lQm94RW5kKCkgPyAgLTEgOiAxOwotICAgICAgICAg
ICAgaWYgKCFuZXN0aW5nTGV2ZWwpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQoJm1faW5saW5l
SXRlbXNbc29mdFdyYXBPcHBvcnR1bml0eUluZGV4XS5sYXlvdXRCb3goKSA9PSAmbV9pbmxpbmVJ
dGVtc1tpbmRleF0ubGF5b3V0Qm94KCkpOwotICAgICAgICAgICAgICAgIGxpbmVDYW5kaWRhdGUu
aW5saW5lQ29udGVudC5hcHBlbmRSdWJ5Q29udGFpbmVyUmFuZ2UoeyB7IHNvZnRXcmFwT3Bwb3J0
dW5pdHlJbmRleCwgeyB9IH0sIHsgaW5kZXggKyAxLCB7IH0gfSB9KTsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICAgICAgLy8gTGV0J3MganVzdCBza2lwIHRoaXMgY29ycnVwdCBy
dWJ5IGNvbnRhaW5lciBhbmQgdHJlYXQgaXQgYXMgcmVndWxhciBpbmxpbmUgY29udGVudC4KLSAg
ICAgICAgKytzb2Z0V3JhcE9wcG9ydHVuaXR5SW5kZXg7Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgbGluZUNhbmRpZGF0ZS5pbmxpbmVDb250ZW50LmFwcGVuZFJ1YnlDb250YWluZXJS
YW5nZSh7IHsgY3VycmVudElubGluZUl0ZW1JbmRleCwgeyB9IH0sIHsgc29mdFdyYXBPcHBvcnR1
bml0eUluZGV4LCB7IH0gfSB9KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfTsKICAgICBp
ZiAoYXBwZW5kUnVieUNvbnRhaW5lcklmQXBwbGljYWJsZSgpKQogICAgICAgICByZXR1cm47CkBA
IC0xMTE0LDkgKzExMDAsOCBAQCBMaW5lQnVpbGRlcjo6UmVzdWx0IExpbmVCdWlsZGVyOjpwcm9j
ZXNzTGluZUJyZWFraW5nUmVzdWx0KGNvbnN0IExpbmVDYW5kaWRhdGUmCiAKIExpbmVCdWlsZGVy
OjpSZXN1bHQgTGluZUJ1aWxkZXI6OmhhbmRsZVJ1YnlDb250ZW50KGNvbnN0IElubGluZUl0ZW1S
YW5nZSYgcnVieUNvbnRhaW5lclJhbmdlLCBJbmxpbmVMYXlvdXRVbml0IGF2YWlsYWJsZVdpZHRo
Rm9yQ2FuZGlkYXRlQ29udGVudCkKIHsKLSAgICBBU1NFUlQobV9pbmxpbmVJdGVtc1tydWJ5Q29u
dGFpbmVyUmFuZ2Uuc3RhcnRJbmRleCgpXS5sYXlvdXRCb3goKS5pc1J1YnkoKSk7Ci0gICAgUnVi
eUZvcm1hdHRpbmdDb250ZXh0IHsgZm9ybWF0dGluZ0NvbnRleHQoKSB9LmxheW91dElubGluZUF4
aXMocnVieUNvbnRhaW5lclJhbmdlLCBtX2lubGluZUl0ZW1zLCBtX2xpbmUsIGF2YWlsYWJsZVdp
ZHRoRm9yQ2FuZGlkYXRlQ29udGVudCk7Ci0gICAgcmV0dXJuIHsgSW5saW5lQ29udGVudEJyZWFr
ZXI6OklzRW5kT2ZMaW5lOjpObywgeyBydWJ5Q29udGFpbmVyUmFuZ2UuZW5kSW5kZXgoKSAtIHJ1
YnlDb250YWluZXJSYW5nZS5zdGFydEluZGV4KCksIGZhbHNlIH0gfTsKKyAgICBhdXRvIHJlc3Vs
dCA9IFJ1YnlGb3JtYXR0aW5nQ29udGV4dCB7IGZvcm1hdHRpbmdDb250ZXh0KCkgfS5sYXlvdXRJ
bmxpbmVBeGlzKHJ1YnlDb250YWluZXJSYW5nZSwgbV9pbmxpbmVJdGVtcywgbV9saW5lLCBhdmFp
bGFibGVXaWR0aEZvckNhbmRpZGF0ZUNvbnRlbnQpOworICAgIHJldHVybiB7IHJlc3VsdC5pc0Vu
ZE9mTGluZSwgeyByZXN1bHQuY29tbWl0dGVkQ291bnQsIGZhbHNlIH0gfTsKIH0KIAogdm9pZCBM
aW5lQnVpbGRlcjo6Y29tbWl0UGFydGlhbENvbnRlbnQoY29uc3QgSW5saW5lQ29udGVudEJyZWFr
ZXI6OkNvbnRpbnVvdXNDb250ZW50OjpSdW5MaXN0JiBydW5zLCBjb25zdCBJbmxpbmVDb250ZW50
QnJlYWtlcjo6UmVzdWx0OjpQYXJ0aWFsVHJhaWxpbmdDb250ZW50JiBwYXJ0aWFsVHJhaWxpbmdD
b250ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9Jbmxp
bmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwCmluZGV4IGZmMGY1YzdkMDFiYS4uY2UwYTNhZGVh
OWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9Jbmxp
bmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwCkBAIC00MzksNyArNDM5LDcgQEAgdm9pZCBJbmxp
bmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmhhbmRsZUlubGluZUJveEVuZChjb25zdCBMaW5lOjpS
dW4mIGxpbmVSdW4sIGMKIHsKICAgICBpZiAobGluZVJ1bi5sYXlvdXRCb3goKS5pc1J1YnlCYXNl
KCkpIHsKICAgICAgICAgaWYgKG1fcnVieUNvbHVtblJhbmdlTGlzdC5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgQVNTRVJUKCFsaW5l
UnVuLmxheW91dEJveCgpLmFzc29jaWF0ZWRSdWJ5QW5ub3RhdGlvbkJveCgpKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAobGluZVJ1bi5sYXlvdXRCb3goKS5h
c3NvY2lhdGVkUnVieUFubm90YXRpb25Cb3goKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL3J1YnkvUnVieUZvcm1hdHRpbmdDb250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L3J1YnkvUnVieUZvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCA2OWFmYWU5ZGYzZWEuLjc0NDAw
NTk0YTRkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvcnVieS9SdWJ5Rm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL3J1YnkvUnVieUZvcm1hdHRp
bmdDb250ZXh0LmNwcApAQCAtMzEsNDUgKzMxLDg3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBu
YW1lc3BhY2UgTGF5b3V0IHsKIAorc3RhdGljIGlubGluZSBzaXplX3QgbmV4dFdyYXBPcHBvcnR1
bml0eVdpdGhpblJ1YnlDb250YWluZXIoc2l6ZV90IHN0YXJ0SW5kZXgsIGNvbnN0IElubGluZUl0
ZW1SYW5nZSYgcnVieVJhbmdlLCBjb25zdCBJbmxpbmVJdGVtcyYgaW5saW5lSXRlbXMpCit7Cisg
ICAgLy8gV2Ugb25seSBhbGxvdyB3cmFwIG9wcG9ydHVuaXR5IGJldHdlZW4gcnVieSBiYXNlcy4K
KyAgICBmb3IgKHNpemVfdCBpbmRleCA9IHN0YXJ0SW5kZXg7IGluZGV4IDwgcnVieVJhbmdlLmVu
ZEluZGV4KCk7ICsraW5kZXgpIHsKKyAgICAgICAgYXV0byYgcnVieUl0ZW0gPSBpbmxpbmVJdGVt
c1tpbmRleF07CisgICAgICAgIGlmIChydWJ5SXRlbS5pc0lubGluZUJveEVuZCgpICYmIHJ1YnlJ
dGVtLmxheW91dEJveCgpLmlzUnVieUJhc2UoKSkgeworICAgICAgICAgICAgLy8gV2UgYXJlIGF0
IHRoZSBlbmQgb2YgYSBydWJ5IGJhc2UsIG5lZWQgdG8gY2hlY2sgaWYgd2UgYXJlIGJldHdlZW4g
YmFzZXMuCisgICAgICAgICAgICBpZiAoaW5kZXggKyAxID09IHJ1YnlSYW5nZS5lbmRJbmRleCgp
KSB7CisgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBhdXRvJiBuZXh0UnVieUl0
ZW0gPSBpbmxpbmVJdGVtc1tpbmRleCArIDFdOworICAgICAgICAgICAgaWYgKG5leHRSdWJ5SXRl
bS5pc0lubGluZUJveFN0YXJ0KCkpIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQobmV4dFJ1YnlJ
dGVtLmxheW91dEJveCgpLmlzUnVieUJhc2UoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGlu
ZGV4ICsgMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gcnVi
eVJhbmdlLmVuZEluZGV4KCk7Cit9CisKIFJ1YnlGb3JtYXR0aW5nQ29udGV4dDo6UnVieUZvcm1h
dHRpbmdDb250ZXh0KGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiBwYXJlbnRGb3JtYXR0
aW5nQ29udGV4dCkKICAgICA6IG1fcGFyZW50Rm9ybWF0dGluZ0NvbnRleHQocGFyZW50Rm9ybWF0
dGluZ0NvbnRleHQpCiB7CiB9CiAKLXZvaWQgUnVieUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRJ
bmxpbmVBeGlzKGNvbnN0IElubGluZUl0ZW1SYW5nZSYgcnVieVJhbmdlLCBjb25zdCBJbmxpbmVJ
dGVtcyYgaW5saW5lSXRlbXMsIExpbmUmIGxpbmUsIElubGluZUxheW91dFVuaXQgYXZhaWxhYmxl
V2lkdGgpCitSdWJ5Rm9ybWF0dGluZ0NvbnRleHQ6OklubGluZUxheW91dFJlc3VsdCBSdWJ5Rm9y
bWF0dGluZ0NvbnRleHQ6OmxheW91dElubGluZUF4aXMoY29uc3QgSW5saW5lSXRlbVJhbmdlJiBy
dWJ5UmFuZ2UsIGNvbnN0IElubGluZUl0ZW1zJiBpbmxpbmVJdGVtcywgTGluZSYgbGluZSwgSW5s
aW5lTGF5b3V0VW5pdCBhdmFpbGFibGVXaWR0aCkKIHsKLSAgICBVTlVTRURfUEFSQU0oYXZhaWxh
YmxlV2lkdGgpOwotCiAgICAgQVNTRVJUKCFydWJ5UmFuZ2UuaXNFbXB0eSgpKTsKICAgICAvLyBS
dWJ5IGNvbnRhaW5lciBpbmxpbmUgaXRlbSBsaXN0IGlzIGFzIGZvbGxvd3M6CiAgICAgLy8gW3J1
YnkgY29udGFpbmVyIHN0YXJ0XVtydWJ5IGJhc2Ugc3RhcnRdW3J1YnkgYmFzZSBjb250ZW50XVty
dWJ5IGJhc2UgZW5kXVsuLi5dW3J1YnkgY29udGFpbmVyIGVuZF0KKyAgICBhdXRvIGN1cnJlbnRJ
bmRleCA9IHJ1YnlSYW5nZS5zdGFydEluZGV4KCk7CisgICAgd2hpbGUgKGN1cnJlbnRJbmRleCA8
IHJ1YnlSYW5nZS5lbmRJbmRleCgpKSB7CisgICAgICAgIGF1dG8gY2FuZGlkYXRlQ29udGVudEVu
ZCA9IG5leHRXcmFwT3Bwb3J0dW5pdHlXaXRoaW5SdWJ5Q29udGFpbmVyKGN1cnJlbnRJbmRleCwg
cnVieVJhbmdlLCBpbmxpbmVJdGVtcyk7CisgICAgICAgIGF1dG8gY29udGVudExvZ2ljYWxXaWR0
aCA9IGxvZ2ljYVdpZHRoRm9yUnVieVJhbmdlKHsgY3VycmVudEluZGV4LCBjYW5kaWRhdGVDb250
ZW50RW5kIH0sIGlubGluZUl0ZW1zLCBsaW5lLmNvbnRlbnRMb2dpY2FsUmlnaHQoKSk7CisgICAg
ICAgIGF1dG8gc2hvdWxkUGxhY2VSdWJ5UmFuZ2UgPSBjb250ZW50TG9naWNhbFdpZHRoIDw9IGF2
YWlsYWJsZVdpZHRoIHx8ICFsaW5lLmhhc0NvbnRlbnQoKTsKKyAgICAgICAgaWYgKCFzaG91bGRQ
bGFjZVJ1YnlSYW5nZSkKKyAgICAgICAgICAgIHJldHVybiB7IElubGluZUNvbnRlbnRCcmVha2Vy
OjpJc0VuZE9mTGluZTo6WWVzLCBjdXJyZW50SW5kZXggLSBydWJ5UmFuZ2Uuc3RhcnRJbmRleCgp
IH07CisgICAgICAgIHBsYWNlUnVieUNvbnRlbnQoeyBjdXJyZW50SW5kZXgsIGNhbmRpZGF0ZUNv
bnRlbnRFbmQgfSwgaW5saW5lSXRlbXMsIGxpbmUpOworICAgICAgICBhdmFpbGFibGVXaWR0aCAt
PSBjb250ZW50TG9naWNhbFdpZHRoOworICAgICAgICBjdXJyZW50SW5kZXggPSBjYW5kaWRhdGVD
b250ZW50RW5kOworICAgIH0KKyAgICByZXR1cm4geyBhdmFpbGFibGVXaWR0aCA+PSAwID8gSW5s
aW5lQ29udGVudEJyZWFrZXI6OklzRW5kT2ZMaW5lOjpObyA6IElubGluZUNvbnRlbnRCcmVha2Vy
OjpJc0VuZE9mTGluZTo6WWVzLCBjdXJyZW50SW5kZXggLSBydWJ5UmFuZ2Uuc3RhcnRJbmRleCgp
IH07Cit9CiAKLSAgICBhdXRvJiBydWJ5Q29udGFpbmVyU3RhcnQgPSBpbmxpbmVJdGVtc1tydWJ5
UmFuZ2Uuc3RhcnRJbmRleCgpXTsKLSAgICBhdXRvIHJ1YnlDb250YWluZXJFbmRJbmRleCA9IHJ1
YnlSYW5nZS5lbmRJbmRleCgpIC0gMTsKLSAgICBBU1NFUlQocnVieUNvbnRhaW5lclN0YXJ0Lmxh
eW91dEJveCgpLmlzUnVieSgpKTsKLSAgICBsaW5lLmFwcGVuZChydWJ5Q29udGFpbmVyU3RhcnQs
IHJ1YnlDb250YWluZXJTdGFydC5zdHlsZSgpLCB7IH0pOwotCi0gICAgYXV0byBiYXNlQ29udGVu
dEluZGV4ID0gcnVieVJhbmdlLnN0YXJ0SW5kZXgoKSArIDE7Ci0gICAgd2hpbGUgKGJhc2VDb250
ZW50SW5kZXggPCBydWJ5Q29udGFpbmVyRW5kSW5kZXgpIHsKLSAgICAgICAgYXV0byBoYW5kbGVS
dWJ5Q29sdW1uID0gWyZdIHsKLSAgICAgICAgICAgIC8vIHJ1YnkgY29sdW1uOiByZXByZXNlbnRl
ZCBieSBhIHNpbmdsZSBydWJ5IGJhc2UgYW5kIG9uZSBydWJ5IGFubm90YXRpb24KLSAgICAgICAg
ICAgIC8vIGZyb20gZWFjaCBpbnRlcmxpbmVhciBhbm5vdGF0aW9uIGxldmVsIGluIGl0cyBydWJ5
IHNlZ21lbnQuCi0gICAgICAgICAgICBhdXRvJiBydWJ5QmFzZVN0YXJ0ID0gaW5saW5lSXRlbXNb
YmFzZUNvbnRlbnRJbmRleCsrXTsKLSAgICAgICAgICAgIEFTU0VSVChydWJ5QmFzZVN0YXJ0Lmxh
eW91dEJveCgpLmlzUnVieUJhc2UoKSk7Ci0gICAgICAgICAgICBsaW5lLmFwcGVuZChydWJ5QmFz
ZVN0YXJ0LCBydWJ5QmFzZVN0YXJ0LnN0eWxlKCksIHsgfSk7Cit2b2lkIFJ1YnlGb3JtYXR0aW5n
Q29udGV4dDo6cGxhY2VSdWJ5Q29udGVudChXVEY6OlJhbmdlPHNpemVfdD4gY2FuZGlkYXRlUmFu
Z2UsIGNvbnN0IElubGluZUl0ZW1zJiBpbmxpbmVJdGVtcywgTGluZSYgbGluZSkKK3sKKyAgICBB
U1NFUlQoY2FuZGlkYXRlUmFuZ2UuZW5kKCkgPD0gaW5saW5lSXRlbXMuc2l6ZSgpKTsKKyAgICBB
U1NFUlQoaW5saW5lSXRlbXNbY2FuZGlkYXRlUmFuZ2UuYmVnaW4oKV0ubGF5b3V0Qm94KCkuaXNS
dWJ5KCkgfHwgaW5saW5lSXRlbXNbY2FuZGlkYXRlUmFuZ2UuYmVnaW4oKV0ubGF5b3V0Qm94KCku
aXNSdWJ5QmFzZSgpKTsKKyAgICBhdXRvJiBmb3JtYXR0aW5nR2VvbWV0cnkgPSBwYXJlbnRGb3Jt
YXR0aW5nQ29udGV4dCgpLmZvcm1hdHRpbmdHZW9tZXRyeSgpOwogCi0gICAgICAgICAgICBiYXNl
Q29udGVudEluZGV4ICs9IGxheW91dFJ1YnlCYXNlSW5saW5lQXhpcyhsaW5lLCBydWJ5QmFzZVN0
YXJ0LmxheW91dEJveCgpLCBiYXNlQ29udGVudEluZGV4LCBpbmxpbmVJdGVtcyk7CisgICAgYXV0
byBpbmRleCA9IGNhbmRpZGF0ZVJhbmdlLmJlZ2luKCk7CisgICAgd2hpbGUgKGluZGV4IDwgY2Fu
ZGlkYXRlUmFuZ2UuZW5kKCkpIHsKKyAgICAgICAgYXV0byBhcHBlbmRJbmxpbmVCb3hJdGVtID0g
WyZdKGF1dG8mIGlubGluZUJveEl0ZW0pIHsKKyAgICAgICAgICAgIEFTU0VSVChpbmxpbmVCb3hJ
dGVtLmlzSW5saW5lQm94U3RhcnQoKSB8fCBpbmxpbmVCb3hJdGVtLmlzSW5saW5lQm94RW5kKCkp
OworICAgICAgICAgICAgQVNTRVJUKGlubGluZUJveEl0ZW0ubGF5b3V0Qm94KCkuaXNSdWJ5KCkg
fHwgaW5saW5lQm94SXRlbS5sYXlvdXRCb3goKS5pc1J1YnlCYXNlKCkpOwogCi0gICAgICAgICAg
ICBhdXRvJiBydWJ5QmFzZUVuZCA9IGlubGluZUl0ZW1zW2Jhc2VDb250ZW50SW5kZXgrK107Ci0g
ICAgICAgICAgICBBU1NFUlQocnVieUJhc2VFbmQubGF5b3V0Qm94KCkuaXNSdWJ5QmFzZSgpKTsK
LSAgICAgICAgICAgIGxpbmUuYXBwZW5kKHJ1YnlCYXNlRW5kLCBydWJ5QmFzZUVuZC5sYXlvdXRC
b3goKS5zdHlsZSgpLCB7IH0pOworICAgICAgICAgICAgYXV0byBsb2dpY2FsV2lkdGggPSBmb3Jt
YXR0aW5nR2VvbWV0cnkuaW5saW5lSXRlbVdpZHRoKGlubGluZUJveEl0ZW0sIGxpbmUuY29udGVu
dExvZ2ljYWxSaWdodCgpLCB7IH0pOworICAgICAgICAgICAgbGluZS5hcHBlbmQoaW5saW5lQm94
SXRlbSwgaW5saW5lQm94SXRlbS5zdHlsZSgpLCBsb2dpY2FsV2lkdGgpOworICAgICAgICAgICAg
KytpbmRleDsKICAgICAgICAgfTsKLSAgICAgICAgaGFuZGxlUnVieUNvbHVtbigpOwotICAgIH0K
IAotICAgIGF1dG8mIHJ1YnlDb250YWluZXJFbmQgPSBpbmxpbmVJdGVtc1tydWJ5Q29udGFpbmVy
RW5kSW5kZXhdOwotICAgIEFTU0VSVChydWJ5Q29udGFpbmVyRW5kLmxheW91dEJveCgpLmlzUnVi
eSgpKTsKLSAgICBsaW5lLmFwcGVuZChydWJ5Q29udGFpbmVyRW5kLCBydWJ5Q29udGFpbmVyRW5k
LnN0eWxlKCksIHsgfSk7CisgICAgICAgIGF1dG8mIHJ1YnlJdGVtID0gaW5saW5lSXRlbXNbaW5k
ZXhdOworICAgICAgICBhdXRvJiBydWJ5TGF5b3V0Qm94ID0gcnVieUl0ZW0ubGF5b3V0Qm94KCk7
CisgICAgICAgIEFTU0VSVChydWJ5SXRlbS5pc0lubGluZUJveFN0YXJ0KCkgfHwgcnVieUl0ZW0u
aXNJbmxpbmVCb3hFbmQoKSk7CisKKyAgICAgICAgaWYgKHJ1YnlMYXlvdXRCb3guaXNSdWJ5KCkp
IHsKKyAgICAgICAgICAgIGFwcGVuZElubGluZUJveEl0ZW0ocnVieUl0ZW0pOworICAgICAgICAg
ICAgQVNTRVJUKHJ1YnlJdGVtLmlzSW5saW5lQm94U3RhcnQoKSB8fCAocnVieUl0ZW0uaXNJbmxp
bmVCb3hFbmQoKSAmJiBpbmRleCA9PSBjYW5kaWRhdGVSYW5nZS5lbmQoKSkpOworICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJ1YnlMYXlvdXRCb3guaXNSdWJ5
QmFzZSgpKSB7CisgICAgICAgICAgICAvLyBydWJ5IGNvbHVtbjogcmVwcmVzZW50ZWQgYnkgYSBz
aW5nbGUgcnVieSBiYXNlIGFuZCBvbmUgcnVieSBhbm5vdGF0aW9uCisgICAgICAgICAgICAvLyBm
cm9tIGVhY2ggaW50ZXJsaW5lYXIgYW5ub3RhdGlvbiBsZXZlbCBpbiBpdHMgcnVieSBzZWdtZW50
LgorICAgICAgICAgICAgYXBwZW5kSW5saW5lQm94SXRlbShydWJ5SXRlbSk7CisgICAgICAgICAg
ICBpZiAocnVieUl0ZW0uaXNJbmxpbmVCb3hTdGFydCgpKQorICAgICAgICAgICAgICAgIGluZGV4
ICs9IGxheW91dFJ1YnlCYXNlSW5saW5lQXhpcyhsaW5lLCBydWJ5TGF5b3V0Qm94LCBpbmRleCwg
aW5saW5lSXRlbXMpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQogfQogCiBzaXplX3QgUnVieUZvcm1hdHRpbmdD
b250ZXh0OjpsYXlvdXRSdWJ5QmFzZUlubGluZUF4aXMoTGluZSYgbGluZSwgY29uc3QgQm94JiBy
dWJ5QmFzZUxheW91dEJveCwgc2l6ZV90IHJ1YnlCYXNlQ29udGVudFN0YXJ0SW5kZXgsIGNvbnN0
IElubGluZUl0ZW1zJiBpbmxpbmVJdGVtcykKQEAgLTE3MSw2ICsyMTMsMjcgQEAgSW5saW5lTGF5
b3V0VW5pdCBSdWJ5Rm9ybWF0dGluZ0NvbnRleHQ6Om92ZXJoYW5nRm9yQW5ub3RhdGlvbkFmdGVy
KGNvbnN0IEJveCYgcnUKICAgICByZXR1cm4gd291bGRBbm5vdGF0aW9uT3ZlcmxhcCgpID8gMC5m
IDogb3ZlcmhhbmdWYWx1ZTsKIH0KIAorc3RkOjpvcHRpb25hbDxzaXplX3Q+IFJ1YnlGb3JtYXR0
aW5nQ29udGV4dDo6bmV4dFdyYXBPcHBvcnR1bml0eShzaXplX3QgaW5saW5lSXRlbUluZGV4LCBz
dGQ6Om9wdGlvbmFsPHNpemVfdD4gcHJldmlvdXNJbmxpbmVJdGVtSW5kZXgsIGNvbnN0IElubGlu
ZUl0ZW1SYW5nZSYgbGF5b3V0UmFuZ2UsIGNvbnN0IElubGluZUl0ZW1zJiBpbmxpbmVJdGVtcykK
K3sKKyAgICBhdXRvJiBpbmxpbmVJdGVtID0gaW5saW5lSXRlbXNbaW5saW5lSXRlbUluZGV4XTsK
KyAgICBBU1NFUlQoaW5saW5lSXRlbS5pc0lubGluZUJveFN0YXJ0KCkgfHwgaW5saW5lSXRlbS5p
c0lubGluZUJveEVuZCgpKTsKKworICAgIGF1dG8mIGxheW91dEJveCA9IGlubGluZUl0ZW0ubGF5
b3V0Qm94KCk7CisgICAgYXV0byBzdGFydHNXaXRoUnVieUlubGluZUJveCA9IGxheW91dEJveC5p
c1J1YnkoKSB8fCBsYXlvdXRCb3guaXNSdWJ5QmFzZSgpOworICAgIGlmICghc3RhcnRzV2l0aFJ1
YnlJbmxpbmVCb3gpIHsKKyAgICAgICAgLy8gVGhpcyBpcyBub3QgcnVieSBjb250ZW50LgorICAg
ICAgICByZXR1cm4geyB9OworICAgIH0KKyAgICBpZiAocHJldmlvdXNJbmxpbmVJdGVtSW5kZXgg
JiYgc3RhcnRzV2l0aFJ1YnlJbmxpbmVCb3gpIHsKKyAgICAgICAgLy8gVGhlcmUncyBhbHdheXMg
YSBzb2Z0IHdyYXAgb3Bwb3J0dW5pdGl5IGJlZm9yZSA8cnVieT4vcnVieSBiYXNlLgorICAgICAg
ICByZXR1cm4gaW5saW5lSXRlbUluZGV4OworICAgIH0KKyAgICAvLyBTa2lwIHRvIHRoZSBlbmQg
b2YgdGhlIHJ1YnkgY29udGFpbmVyLgorICAgIGZvciAoOyBpbmxpbmVJdGVtSW5kZXggPCBsYXlv
dXRSYW5nZS5lbmRJbmRleCgpICYmICghaW5saW5lSXRlbXNbaW5saW5lSXRlbUluZGV4XS5pc0lu
bGluZUJveEVuZCgpIHx8ICFpbmxpbmVJdGVtc1tpbmxpbmVJdGVtSW5kZXhdLmxheW91dEJveCgp
LmlzUnVieSgpKTsgKytpbmxpbmVJdGVtSW5kZXgpIHsgfQorICAgIEFTU0VSVChpbmxpbmVJdGVt
SW5kZXggPCBsYXlvdXRSYW5nZS5lbmRJbmRleCgpKTsKKyAgICByZXR1cm4gaW5saW5lSXRlbUlu
ZGV4ICsgMTsKK30KKwogdm9pZCBSdWJ5Rm9ybWF0dGluZ0NvbnRleHQ6OmFwcGx5UnVieUFsaWdu
KExpbmUmIGxpbmUsIFdURjo6UmFuZ2U8c2l6ZV90PiBiYXNlUnVuUmFuZ2UsIGNvbnN0IEJveCYg
cnVieUJhc2VMYXlvdXRCb3gsIElubGluZUxheW91dFVuaXQgYmFzZUNvbnRlbnRMb2dpY2FsV2lk
dGgpCiB7CiAgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1ydWJ5LyNpbnRlcmxp
bmVhci1pbmxpbmUKQEAgLTIyMyw2ICsyODYsNTggQEAgc3RkOjpvcHRpb25hbDxib29sPiBSdWJ5
Rm9ybWF0dGluZ0NvbnRleHQ6OmFubm90YXRpb25PdmVybGFwQ2hlY2soY29uc3QgSW5saW5lRGkK
ICAgICByZXR1cm4geyB9OwogfQogCitJbmxpbmVMYXlvdXRVbml0IFJ1YnlGb3JtYXR0aW5nQ29u
dGV4dDo6bG9naWNhV2lkdGhGb3JSdWJ5UmFuZ2UoV1RGOjpSYW5nZTxzaXplX3Q+IGNhbmRpZGF0
ZVJhbmdlLCBjb25zdCBJbmxpbmVJdGVtcyYgaW5saW5lSXRlbXMsIElubGluZUxheW91dFVuaXQg
bGluZUNvbnRlbnRMb2dpY2FsUmlnaHQpIGNvbnN0Cit7CisgICAgQVNTRVJUKGNhbmRpZGF0ZVJh
bmdlLmVuZCgpIDw9IGlubGluZUl0ZW1zLnNpemUoKSk7CisgICAgQVNTRVJUKGlubGluZUl0ZW1z
W2NhbmRpZGF0ZVJhbmdlLmJlZ2luKCldLmxheW91dEJveCgpLmlzUnVieSgpIHx8IGlubGluZUl0
ZW1zW2NhbmRpZGF0ZVJhbmdlLmJlZ2luKCldLmxheW91dEJveCgpLmlzUnVieUJhc2UoKSk7CisK
KyAgICBhdXRvJiBmb3JtYXR0aW5nR2VvbWV0cnkgPSBwYXJlbnRGb3JtYXR0aW5nQ29udGV4dCgp
LmZvcm1hdHRpbmdHZW9tZXRyeSgpOworICAgIGF1dG8gY2FuZGlkYXRlQ29udGVudExvZ2ljYWxX
aWR0aCA9IElubGluZUxheW91dFVuaXQgeyB9OworICAgIGF1dG8gaW5kZXggPSBjYW5kaWRhdGVS
YW5nZS5iZWdpbigpOworCisgICAgd2hpbGUgKGluZGV4IDwgY2FuZGlkYXRlUmFuZ2UuZW5kKCkp
IHsKKyAgICAgICAgYXV0byYgcnVieUl0ZW0gPSBpbmxpbmVJdGVtc1tpbmRleF07CisgICAgICAg
IGF1dG8mIHJ1YnlMYXlvdXRCb3ggPSBydWJ5SXRlbS5sYXlvdXRCb3goKTsKKworICAgICAgICBp
ZiAocnVieUxheW91dEJveC5pc1J1YnkoKSkgeworICAgICAgICAgICAgQVNTRVJUKHJ1YnlJdGVt
LmlzSW5saW5lQm94U3RhcnQoKSB8fCBydWJ5SXRlbS5pc0lubGluZUJveEVuZCgpKTsKKyAgICAg
ICAgICAgIGNhbmRpZGF0ZUNvbnRlbnRMb2dpY2FsV2lkdGggKz0gZm9ybWF0dGluZ0dlb21ldHJ5
LmlubGluZUl0ZW1XaWR0aChydWJ5SXRlbSwgbGluZUNvbnRlbnRMb2dpY2FsUmlnaHQgKyBjYW5k
aWRhdGVDb250ZW50TG9naWNhbFdpZHRoLCB7IH0pOworICAgICAgICAgICAgKytpbmRleDsKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHJ1YnlMYXlvdXRC
b3guaXNSdWJ5QmFzZSgpKSB7CisgICAgICAgICAgICBBU1NFUlQocnVieUl0ZW0uaXNJbmxpbmVC
b3hTdGFydCgpKTsKKworICAgICAgICAgICAgYXV0byBhbm5vdGF0aW9uTWFyZ2luQm94V2lkdGgg
PSBbJl0oKSAtPiBJbmxpbmVMYXlvdXRVbml0IHsKKyAgICAgICAgICAgICAgICBpZiAoYXV0byog
YW5ub3RhdGlvbkJveCA9IHJ1YnlMYXlvdXRCb3guYXNzb2NpYXRlZFJ1YnlBbm5vdGF0aW9uQm94
KCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBJbmxpbmVMYXlvdXRVbml0IHsgcGFyZW50
Rm9ybWF0dGluZ0NvbnRleHQoKS5nZW9tZXRyeUZvckJveCgqYW5ub3RhdGlvbkJveCkubWFyZ2lu
Qm94V2lkdGgoKSB9OworICAgICAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgICAgICB9
OworCisgICAgICAgICAgICBhdXRvIGJhc2VMb2dpY2FsV2lkdGggPSBbJl0geworICAgICAgICAg
ICAgICAgIC8vIEJhc2UgY29udGVudCBuZWVkcyBzcGVjaWFsIGhhbmRsaW5nIHdpdGggdGFraW5n
IGFubm90YXRpb24gYm94IGludG8gYWNjb3VudC4KKyAgICAgICAgICAgICAgICBhdXRvIGxvZ2lj
YWxXaWR0aCA9IElubGluZUxheW91dFVuaXQgeyB9OworICAgICAgICAgICAgICAgIGZvciAoOyBp
bmRleCA8IGNhbmRpZGF0ZVJhbmdlLmVuZCgpOyArK2luZGV4KSB7CisgICAgICAgICAgICAgICAg
ICAgIGF1dG8mIGJhc2VJbmxpbmVJdGVtID0gaW5saW5lSXRlbXNbaW5kZXhdOworICAgICAgICAg
ICAgICAgICAgICBsb2dpY2FsV2lkdGggKz0gZm9ybWF0dGluZ0dlb21ldHJ5LmlubGluZUl0ZW1X
aWR0aChiYXNlSW5saW5lSXRlbSwgbGluZUNvbnRlbnRMb2dpY2FsUmlnaHQgKyBsb2dpY2FsV2lk
dGgsIHsgfSk7CisgICAgICAgICAgICAgICAgICAgIGlmICgmYmFzZUlubGluZUl0ZW0ubGF5b3V0
Qm94KCkgPT0gJnJ1YnlMYXlvdXRCb3ggJiYgYmFzZUlubGluZUl0ZW0uaXNJbmxpbmVCb3hFbmQo
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gRW5kIG9mIGJhc2UuCisgICAgICAgICAg
ICAgICAgICAgICAgICArK2luZGV4OworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxv
Z2ljYWxXaWR0aDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gSW5saW5lTGF5b3V0VW5pdCB7IH07CisgICAgICAgICAgICB9OworICAgICAgICAgICAgY2Fu
ZGlkYXRlQ29udGVudExvZ2ljYWxXaWR0aCArPSBzdGQ6Om1heChiYXNlTG9naWNhbFdpZHRoKCks
IGFubm90YXRpb25NYXJnaW5Cb3hXaWR0aCgpKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICB9CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICByZXR1cm4g
Y2FuZGlkYXRlQ29udGVudExvZ2ljYWxXaWR0aDsKK30KKwogfQogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9ydWJ5L1J1YnlG
b3JtYXR0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvcnVieS9SdWJ5Rm9ybWF0dGluZ0NvbnRleHQuaAppbmRleCAwZjhkYjFkMmE0
NTcuLjA4ZGM3MGZmMDY4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvcnVieS9SdWJ5Rm9ybWF0dGluZ0NvbnRleHQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9ydWJ5L1J1YnlG
b3JtYXR0aW5nQ29udGV4dC5oCkBAIC0zNSw3ICszNSwxMSBAQCBjbGFzcyBSdWJ5Rm9ybWF0dGlu
Z0NvbnRleHQgewogcHVibGljOgogICAgIFJ1YnlGb3JtYXR0aW5nQ29udGV4dChjb25zdCBJbmxp
bmVGb3JtYXR0aW5nQ29udGV4dCYgcGFyZW50Rm9ybWF0dGluZ0NvbnRleHQpOwogCi0gICAgdm9p
ZCBsYXlvdXRJbmxpbmVBeGlzKGNvbnN0IElubGluZUl0ZW1SYW5nZSYsIGNvbnN0IElubGluZUl0
ZW1zJiwgTGluZSYsIElubGluZUxheW91dFVuaXQgYXZhaWxhYmxlV2lkdGgpOworICAgIHN0cnVj
dCBJbmxpbmVMYXlvdXRSZXN1bHQgeworICAgICAgICBJbmxpbmVDb250ZW50QnJlYWtlcjo6SXNF
bmRPZkxpbmUgaXNFbmRPZkxpbmUgeyBJbmxpbmVDb250ZW50QnJlYWtlcjo6SXNFbmRPZkxpbmU6
Ok5vIH07CisgICAgICAgIHNpemVfdCBjb21taXR0ZWRDb3VudCB7IDAgfTsKKyAgICB9OworICAg
IElubGluZUxheW91dFJlc3VsdCBsYXlvdXRJbmxpbmVBeGlzKGNvbnN0IElubGluZUl0ZW1SYW5n
ZSYsIGNvbnN0IElubGluZUl0ZW1zJiwgTGluZSYsIElubGluZUxheW91dFVuaXQgYXZhaWxhYmxl
V2lkdGgpOwogCiAgICAgc3RydWN0IE92ZXJVbmRlciB7CiAgICAgICAgIElubGluZUxheW91dFVu
aXQgb3ZlciB7IDAuZiB9OwpAQCAtNDcsMTAgKzUxLDE0IEBAIHB1YmxpYzoKICAgICBJbmxpbmVM
YXlvdXRVbml0IG92ZXJoYW5nRm9yQW5ub3RhdGlvbkJlZm9yZShjb25zdCBCb3gmIHJ1YnlCYXNl
TGF5b3V0Qm94LCBzaXplX3QgcnVieUJhc2VDb250ZW50U3RhcnRJbmRleCwgY29uc3QgSW5saW5l
RGlzcGxheTo6Qm94ZXMmKTsKICAgICBJbmxpbmVMYXlvdXRVbml0IG92ZXJoYW5nRm9yQW5ub3Rh
dGlvbkFmdGVyKGNvbnN0IEJveCYgcnVieUJhc2VMYXlvdXRCb3gsIHNpemVfdCBydWJ5QmFzZUNv
bnRlbnRFbmRJbmRleCwgY29uc3QgSW5saW5lRGlzcGxheTo6Qm94ZXMmKTsKIAorICAgIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbmV4dFdyYXBPcHBvcnR1bml0eShzaXplX3QgaW5saW5l
SXRlbUluZGV4LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gcHJldmlvdXNJbmxpbmVJdGVtSW5kZXgs
IGNvbnN0IElubGluZUl0ZW1SYW5nZSYsIGNvbnN0IElubGluZUl0ZW1zJik7CisKIHByaXZhdGU6
CiAgICAgc2l6ZV90IGxheW91dFJ1YnlCYXNlSW5saW5lQXhpcyhMaW5lJiwgY29uc3QgQm94JiBy
dWJ5QmFzZUxheW91dEJveCwgc2l6ZV90IHJ1YnlCYXNlQ29udGVudFN0YXJ0LCBjb25zdCBJbmxp
bmVJdGVtcyYpOwogICAgIHZvaWQgYXBwbHlSdWJ5QWxpZ24oTGluZSYsIFdURjo6UmFuZ2U8c2l6
ZV90PiBiYXNlUnVuUmFuZ2UsIGNvbnN0IEJveCYgcnVieUJhc2VMYXlvdXRCb3gsIElubGluZUxh
eW91dFVuaXQgYmFzZUNvbnRlbnRMb2dpY2FsV2lkdGgpOwogICAgIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4gYW5ub3RhdGlvbk92ZXJsYXBDaGVjayhjb25zdCBJbmxpbmVEaXNwbGF5OjpCb3gmLCBjb25z
dCBJbmxpbmVMYXlvdXRSZWN0JiBvdmVyaGFuZ2luZ1JlY3QpIGNvbnN0OworICAgIHZvaWQgcGxh
Y2VSdWJ5Q29udGVudChXVEY6OlJhbmdlPHNpemVfdD4gY2FuZGlkYXRlUmFuZ2UsIGNvbnN0IElu
bGluZUl0ZW1zJiwgTGluZSYpOworICAgIElubGluZUxheW91dFVuaXQgbG9naWNhV2lkdGhGb3JS
dWJ5UmFuZ2UoV1RGOjpSYW5nZTxzaXplX3Q+IGNhbmRpZGF0ZVJhbmdlLCBjb25zdCBJbmxpbmVJ
dGVtcyYsIElubGluZUxheW91dFVuaXQgbGluZUNvbnRlbnRMb2dpY2FsUmlnaHQpIGNvbnN0Owog
CiAgICAgY29uc3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmIHBhcmVudEZvcm1hdHRpbmdDb250
ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnRGb3JtYXR0aW5nQ29udGV4dDsgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>467839</attachid>
            <date>2023-09-24 05:33:04 -0700</date>
            <delta_ts>2023-09-24 10:24:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-261967-20230924053303.patch</filename>
            <type>text/plain</type>
            <size>20458</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSAzYmUzZGEzOTg2ZGMzYmJlZjBkNDlkYTUyMDVlYjNjN2QxZTQ2ODJiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IEZyaSwgMjIgU2VwIDIwMjMgMTM6MTk6MjggLTA3MDAKU3ViamVjdDogW1BBVENIXSBbSUZDXVtS
dWJ5XSBBZGQgc3VwcG9ydCBmb3Igc29mdCB3cmFwIG9wcG9ydHVuaXRpZXMgYmV0d2VlbgogcnVi
eSBiYXNlcyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjYxOTY3CgpS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KClRoaXMgcGF0Y2ggZW5hYmxlcyBsaW5lIGJyZWFr
aW5nIGluc2lkZXIgcnVieSBjb250YWluZXJzLCBiZXR3ZWVuIHJ1YnkgYmFzZXMuCgoxLiBNb3Zl
IG5leHRXcmFwT3Bwb3J0dW5pdHkgbG9naWMgdG8gUnVieUZvcm1hdHRpbmdDb250ZXh0IChJRkMg
Y29uc3VsdHMgUnVieUZvcm1hdHRpbmdDb250ZXh0IGZvciBuZXh0IHdyYXAgb3Bwb3J0dW5pdHkg
bm93KQoyLiBNZWFzdXJlIHJ1YnkgdG8gZGVjaWRlIHdoZXRoZXIgd2UgY2FuIG9ubHkgZml0IHBh
cnRpYWwgKHJ1YnkgYmFzZSkgY29udGVudC4KCiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmNwcDoKKFdlYkNv
cmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5OjpuZXh0V3JhcE9wcG9ydHVuaXR5
KToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVMaW5lQnVpbGRlci5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjpjYW5kaWRh
dGVDb250ZW50Rm9yTGluZSk6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjpoYW5kbGVS
dWJ5Q29udGVudCk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwOgooV2ViQ29yZTo6
TGF5b3V0OjpJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmhhbmRsZUlubGluZUJveEVuZCk6
CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvcnVieS9S
dWJ5Rm9ybWF0dGluZ0NvbnRleHQuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpuZXh0V3JhcE9wcG9y
dHVuaXR5V2l0aGluUnVieUNvbnRhaW5lcik6CihXZWJDb3JlOjpMYXlvdXQ6OlJ1YnlGb3JtYXR0
aW5nQ29udGV4dDo6bGF5b3V0SW5saW5lQXhpcyk6CihXZWJDb3JlOjpMYXlvdXQ6OlJ1YnlGb3Jt
YXR0aW5nQ29udGV4dDo6cGxhY2VSdWJ5Q29udGVudCk6CihXZWJDb3JlOjpMYXlvdXQ6OlJ1YnlG
b3JtYXR0aW5nQ29udGV4dDo6bmV4dFdyYXBPcHBvcnR1bml0eSk6CihXZWJDb3JlOjpMYXlvdXQ6
OlJ1YnlGb3JtYXR0aW5nQ29udGV4dDo6bG9naWNhV2lkdGhGb3JSdWJ5UmFuZ2UgY29uc3QpOgoq
IFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL3J1YnkvUnVi
eUZvcm1hdHRpbmdDb250ZXh0Lmg6Ci0tLQogLi4uL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2Vv
bWV0cnkuY3BwICAgICAgIHwgICA3ICstCiAuLi4vaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNw
cCAgICAgICAgICAgICAgfCAgMzEgKy0tLQogLi4uL2Rpc3BsYXkvSW5saW5lRGlzcGxheUNvbnRl
bnRCdWlsZGVyLmNwcCAgIHwgICAyICstCiAuLi4vaW5saW5lL3J1YnkvUnVieUZvcm1hdHRpbmdD
b250ZXh0LmNwcCAgICAgfCAxNjUgKysrKysrKysrKysrKysrLS0tCiAuLi4vaW5saW5lL3J1Ynkv
UnVieUZvcm1hdHRpbmdDb250ZXh0LmggICAgICAgfCAgMTAgKy0KIDUgZmlsZXMgY2hhbmdlZCwg
MTYxIGluc2VydGlvbnMoKyksIDU0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdH
ZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuY3BwCmluZGV4IDIwYjQ0MDI1NGI5OS4uZDQx
MGY4ZDljYWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdH
ZW9tZXRyeS5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJMYXlvdXRFbGVtZW50Qm94
LmgiCiAjaW5jbHVkZSAiTGVuZ3RoRnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGVJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiUnVieUZvcm1hdHRpbmdDb250ZXh0LmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBMYXlvdXQgewpAQCAtNDYxLDEwICs0NjIsOCBAQCBzaXpl
X3QgSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5OjpuZXh0V3JhcE9wcG9ydHVuaXR5KHNpemVfdCBz
dGFydEluZGV4LCBjb25zdCBJbgogICAgICAgICAgICAgcmV0dXJuIGluZGV4OwogICAgICAgICB9
CiAgICAgICAgIGlmIChjdXJyZW50SXRlbS5pc0lubGluZUJveFN0YXJ0KCkgfHwgY3VycmVudEl0
ZW0uaXNJbmxpbmVCb3hFbmQoKSkgewotICAgICAgICAgICAgaWYgKGN1cnJlbnRJdGVtLmxheW91
dEJveCgpLmlzUnVieSgpKSB7Ci0gICAgICAgICAgICAgICAgLy8gU2hvdWxkIGJlIGFibGUgdG8g
YnJlYWsgX2JlZm9yZV8gPHJ1Ynk+LgotICAgICAgICAgICAgICAgIHJldHVybiBpbmRleDsKLSAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChhdXRvIG5leHRXcmFwT3Bwb3J0dW5pdHlGb3JS
dWJ5ID0gUnVieUZvcm1hdHRpbmdDb250ZXh0OjpuZXh0V3JhcE9wcG9ydHVuaXR5KGluZGV4LCBw
cmV2aW91c0lubGluZUl0ZW1JbmRleCwgbGF5b3V0UmFuZ2UsIGlubGluZUl0ZW1zKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gKm5leHRXcmFwT3Bwb3J0dW5pdHlGb3JSdWJ5OwogICAgICAgICAg
ICAgLy8gTmVlZCB0byBzZWUgd2hhdCBjb21lcyBuZXh0IHRvIGRlY2lkZS4KICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRl
ci5jcHAKaW5kZXggYTZkYjQ4YTc0Yzk5Li4xNjBmZTliNzQ0ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWls
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9JbmxpbmVMaW5lQnVpbGRlci5jcHAKQEAgLTYxNCwyOSArNjE0LDE1IEBAIHZvaWQgTGlu
ZUJ1aWxkZXI6OmNhbmRpZGF0ZUNvbnRlbnRGb3JMaW5lKExpbmVDYW5kaWRhdGUmIGxpbmVDYW5k
aWRhdGUsIHNpemVfdCBjCiAgICAgfQogCiAgICAgYXV0byBhcHBlbmRSdWJ5Q29udGFpbmVySWZB
cHBsaWNhYmxlID0gWyZdIHsKLSAgICAgICAgaWYgKHNvZnRXcmFwT3Bwb3J0dW5pdHlJbmRleCA+
IGN1cnJlbnRJbmxpbmVJdGVtSW5kZXggfHwgaXNMZWFkaW5nUGFydGlhQ29udGVudCkKKyAgICAg
ICAgYXV0byBpc1J1YnlDb250ZW50ID0gbV9pbmxpbmVJdGVtc1tjdXJyZW50SW5saW5lSXRlbUlu
ZGV4XS5sYXlvdXRCb3goKS5pc1J1YnkoKSB8fCBtX2lubGluZUl0ZW1zW2N1cnJlbnRJbmxpbmVJ
dGVtSW5kZXhdLmxheW91dEJveCgpLmlzUnVieUJhc2UoKTsKKyAgICAgICAgaWYgKCFpc1J1YnlD
b250ZW50KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAvLyBXZSBtdXN0IGJl
IGF0IGEgcnVieSBjb250YWluZXIgYW5kIHdlIHNob3VsZCBsZXQgdGhlIHJ1YnkgZm9ybWF0dGlu
ZyBjb250ZXh0IGhhbmRsZSB0aGUgcmVzdCBvZiB0aGUgcnVieSBjb250ZW50LgotICAgICAgICBB
U1NFUlQobV9pbmxpbmVJdGVtc1tjdXJyZW50SW5saW5lSXRlbUluZGV4XS5sYXlvdXRCb3goKS5p
c1J1YnkoKSk7CisgICAgICAgIC8vIFdlIG11c3QgYmUgYXQgYSBydWJ5IGNvbnRhaW5lci9iYXNl
IGFuZCB3ZSBzaG91bGQgbGV0IHRoZSBydWJ5IGZvcm1hdHRpbmcgY29udGV4dCBoYW5kbGUgdGhl
IHJlc3Qgb2YgdGhlIHJ1YnkgY29udGVudC4KKyAgICAgICAgQVNTRVJUKG1faW5saW5lSXRlbXNb
c29mdFdyYXBPcHBvcnR1bml0eUluZGV4IC0gMV0uaXNJbmxpbmVCb3hFbmQoKSAmJiBtX2lubGlu
ZUl0ZW1zW3NvZnRXcmFwT3Bwb3J0dW5pdHlJbmRleCAtIDFdLmxheW91dEJveCgpLmlzUnVieSgp
KTsKICAgICAgICAgLy8gUnVieSBiYXNlIGNvbnRlbnQgaXMgaGFuZGxlZCBhcyBvbmUgYXRvbWlj
IGxpbmUgY2FuZGlkYXRlIHdoZXJlIHJ1YnkgZm9ybWF0dGluZyBjb250ZXh0IHRha2VzIGNhcmUg
b2YgdGhlIGludGVybmFsIGRldGFpbHMuCiAgICAgICAgIC8vIE5vdGUgdGhhdCBydWJ5IGNvbnRl
bnQgaXMgcGxhY2VkIG9uIHRoZSBsaW5lIGFzIHJlZ3VhbGFyIGlubGluZSBjb250ZW50IGJ5IHRo
ZSBydWJ5IGZvcm1hdHRpbmcgY29udGV4dC4KLSAgICAgICAgc2l6ZV90IG5lc3RpbmdMZXZlbCA9
IDE7Ci0gICAgICAgIGZvciAoc2l6ZV90IGluZGV4ID0gc29mdFdyYXBPcHBvcnR1bml0eUluZGV4
ICsgMTsgaW5kZXggPCBsYXlvdXRSYW5nZS5lbmRJbmRleCgpOyArK2luZGV4KSB7Ci0gICAgICAg
ICAgICBhdXRvJiBpbmxpbmVJdGVtID0gbV9pbmxpbmVJdGVtc1tpbmRleF07Ci0gICAgICAgICAg
ICBpZiAoIWlubGluZUl0ZW0ubGF5b3V0Qm94KCkuaXNSdWJ5KCkpCi0gICAgICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgICAgICBBU1NFUlQoaW5saW5lSXRlbS5pc0lubGluZUJveFN0YXJ0
KCkgfHwgaW5saW5lSXRlbS5pc0lubGluZUJveEVuZCgpKTsKLSAgICAgICAgICAgIG5lc3RpbmdM
ZXZlbCArPSBpbmxpbmVJdGVtLmlzSW5saW5lQm94RW5kKCkgPyAgLTEgOiAxOwotICAgICAgICAg
ICAgaWYgKCFuZXN0aW5nTGV2ZWwpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQoJm1faW5saW5l
SXRlbXNbc29mdFdyYXBPcHBvcnR1bml0eUluZGV4XS5sYXlvdXRCb3goKSA9PSAmbV9pbmxpbmVJ
dGVtc1tpbmRleF0ubGF5b3V0Qm94KCkpOwotICAgICAgICAgICAgICAgIGxpbmVDYW5kaWRhdGUu
aW5saW5lQ29udGVudC5hcHBlbmRSdWJ5Q29udGFpbmVyUmFuZ2UoeyB7IHNvZnRXcmFwT3Bwb3J0
dW5pdHlJbmRleCwgeyB9IH0sIHsgaW5kZXggKyAxLCB7IH0gfSB9KTsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICAgICAgLy8gTGV0J3MganVzdCBza2lwIHRoaXMgY29ycnVwdCBy
dWJ5IGNvbnRhaW5lciBhbmQgdHJlYXQgaXQgYXMgcmVndWxhciBpbmxpbmUgY29udGVudC4KLSAg
ICAgICAgKytzb2Z0V3JhcE9wcG9ydHVuaXR5SW5kZXg7Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgbGluZUNhbmRpZGF0ZS5pbmxpbmVDb250ZW50LmFwcGVuZFJ1YnlDb250YWluZXJS
YW5nZSh7IHsgY3VycmVudElubGluZUl0ZW1JbmRleCwgeyB9IH0sIHsgc29mdFdyYXBPcHBvcnR1
bml0eUluZGV4LCB7IH0gfSB9KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfTsKICAgICBp
ZiAoYXBwZW5kUnVieUNvbnRhaW5lcklmQXBwbGljYWJsZSgpKQogICAgICAgICByZXR1cm47CkBA
IC0xMTE0LDkgKzExMDAsOCBAQCBMaW5lQnVpbGRlcjo6UmVzdWx0IExpbmVCdWlsZGVyOjpwcm9j
ZXNzTGluZUJyZWFraW5nUmVzdWx0KGNvbnN0IExpbmVDYW5kaWRhdGUmCiAKIExpbmVCdWlsZGVy
OjpSZXN1bHQgTGluZUJ1aWxkZXI6OmhhbmRsZVJ1YnlDb250ZW50KGNvbnN0IElubGluZUl0ZW1S
YW5nZSYgcnVieUNvbnRhaW5lclJhbmdlLCBJbmxpbmVMYXlvdXRVbml0IGF2YWlsYWJsZVdpZHRo
Rm9yQ2FuZGlkYXRlQ29udGVudCkKIHsKLSAgICBBU1NFUlQobV9pbmxpbmVJdGVtc1tydWJ5Q29u
dGFpbmVyUmFuZ2Uuc3RhcnRJbmRleCgpXS5sYXlvdXRCb3goKS5pc1J1YnkoKSk7Ci0gICAgUnVi
eUZvcm1hdHRpbmdDb250ZXh0IHsgZm9ybWF0dGluZ0NvbnRleHQoKSB9LmxheW91dElubGluZUF4
aXMocnVieUNvbnRhaW5lclJhbmdlLCBtX2lubGluZUl0ZW1zLCBtX2xpbmUsIGF2YWlsYWJsZVdp
ZHRoRm9yQ2FuZGlkYXRlQ29udGVudCk7Ci0gICAgcmV0dXJuIHsgSW5saW5lQ29udGVudEJyZWFr
ZXI6OklzRW5kT2ZMaW5lOjpObywgeyBydWJ5Q29udGFpbmVyUmFuZ2UuZW5kSW5kZXgoKSAtIHJ1
YnlDb250YWluZXJSYW5nZS5zdGFydEluZGV4KCksIGZhbHNlIH0gfTsKKyAgICBhdXRvIHJlc3Vs
dCA9IFJ1YnlGb3JtYXR0aW5nQ29udGV4dCB7IGZvcm1hdHRpbmdDb250ZXh0KCkgfS5sYXlvdXRJ
bmxpbmVBeGlzKHJ1YnlDb250YWluZXJSYW5nZSwgbV9pbmxpbmVJdGVtcywgbV9saW5lLCBhdmFp
bGFibGVXaWR0aEZvckNhbmRpZGF0ZUNvbnRlbnQpOworICAgIHJldHVybiB7IHJlc3VsdC5pc0Vu
ZE9mTGluZSwgeyByZXN1bHQuY29tbWl0dGVkQ291bnQsIGZhbHNlIH0gfTsKIH0KIAogdm9pZCBM
aW5lQnVpbGRlcjo6Y29tbWl0UGFydGlhbENvbnRlbnQoY29uc3QgSW5saW5lQ29udGVudEJyZWFr
ZXI6OkNvbnRpbnVvdXNDb250ZW50OjpSdW5MaXN0JiBydW5zLCBjb25zdCBJbmxpbmVDb250ZW50
QnJlYWtlcjo6UmVzdWx0OjpQYXJ0aWFsVHJhaWxpbmdDb250ZW50JiBwYXJ0aWFsVHJhaWxpbmdD
b250ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9Jbmxp
bmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwCmluZGV4IGZmMGY1YzdkMDFiYS4uY2UwYTNhZGVh
OWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9Jbmxp
bmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwCkBAIC00MzksNyArNDM5LDcgQEAgdm9pZCBJbmxp
bmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmhhbmRsZUlubGluZUJveEVuZChjb25zdCBMaW5lOjpS
dW4mIGxpbmVSdW4sIGMKIHsKICAgICBpZiAobGluZVJ1bi5sYXlvdXRCb3goKS5pc1J1YnlCYXNl
KCkpIHsKICAgICAgICAgaWYgKG1fcnVieUNvbHVtblJhbmdlTGlzdC5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgQVNTRVJUKCFsaW5l
UnVuLmxheW91dEJveCgpLmFzc29jaWF0ZWRSdWJ5QW5ub3RhdGlvbkJveCgpKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAobGluZVJ1bi5sYXlvdXRCb3goKS5h
c3NvY2lhdGVkUnVieUFubm90YXRpb25Cb3goKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL3J1YnkvUnVieUZvcm1hdHRpbmdDb250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L3J1YnkvUnVieUZvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCBhMDJiZGU3MTcxN2EuLjQ2OWZi
NDUwM2Y5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvcnVieS9SdWJ5Rm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL3J1YnkvUnVieUZvcm1hdHRp
bmdDb250ZXh0LmNwcApAQCAtMzEsNDUgKzMxLDg3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBu
YW1lc3BhY2UgTGF5b3V0IHsKIAorc3RhdGljIGlubGluZSBzaXplX3QgbmV4dFdyYXBPcHBvcnR1
bml0eVdpdGhpblJ1YnlDb250YWluZXIoc2l6ZV90IHN0YXJ0SW5kZXgsIGNvbnN0IElubGluZUl0
ZW1SYW5nZSYgcnVieVJhbmdlLCBjb25zdCBJbmxpbmVJdGVtcyYgaW5saW5lSXRlbXMpCit7Cisg
ICAgLy8gV2Ugb25seSBhbGxvdyB3cmFwIG9wcG9ydHVuaXR5IGJldHdlZW4gcnVieSBiYXNlcy4K
KyAgICBmb3IgKHNpemVfdCBpbmRleCA9IHN0YXJ0SW5kZXg7IGluZGV4IDwgcnVieVJhbmdlLmVu
ZEluZGV4KCk7ICsraW5kZXgpIHsKKyAgICAgICAgYXV0byYgcnVieUl0ZW0gPSBpbmxpbmVJdGVt
c1tpbmRleF07CisgICAgICAgIGlmIChydWJ5SXRlbS5pc0lubGluZUJveEVuZCgpICYmIHJ1YnlJ
dGVtLmxheW91dEJveCgpLmlzUnVieUJhc2UoKSkgeworICAgICAgICAgICAgLy8gV2UgYXJlIGF0
IHRoZSBlbmQgb2YgYSBydWJ5IGJhc2UsIG5lZWQgdG8gY2hlY2sgaWYgd2UgYXJlIGJldHdlZW4g
YmFzZXMuCisgICAgICAgICAgICBpZiAoaW5kZXggKyAxID09IHJ1YnlSYW5nZS5lbmRJbmRleCgp
KSB7CisgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBhdXRvJiBuZXh0UnVieUl0
ZW0gPSBpbmxpbmVJdGVtc1tpbmRleCArIDFdOworICAgICAgICAgICAgaWYgKG5leHRSdWJ5SXRl
bS5pc0lubGluZUJveFN0YXJ0KCkpIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQobmV4dFJ1YnlJ
dGVtLmxheW91dEJveCgpLmlzUnVieUJhc2UoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGlu
ZGV4ICsgMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gcnVi
eVJhbmdlLmVuZEluZGV4KCk7Cit9CisKIFJ1YnlGb3JtYXR0aW5nQ29udGV4dDo6UnVieUZvcm1h
dHRpbmdDb250ZXh0KGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiBwYXJlbnRGb3JtYXR0
aW5nQ29udGV4dCkKICAgICA6IG1fcGFyZW50Rm9ybWF0dGluZ0NvbnRleHQocGFyZW50Rm9ybWF0
dGluZ0NvbnRleHQpCiB7CiB9CiAKLXZvaWQgUnVieUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRJ
bmxpbmVBeGlzKGNvbnN0IElubGluZUl0ZW1SYW5nZSYgcnVieVJhbmdlLCBjb25zdCBJbmxpbmVJ
dGVtcyYgaW5saW5lSXRlbXMsIExpbmUmIGxpbmUsIElubGluZUxheW91dFVuaXQgYXZhaWxhYmxl
V2lkdGgpCitSdWJ5Rm9ybWF0dGluZ0NvbnRleHQ6OklubGluZUxheW91dFJlc3VsdCBSdWJ5Rm9y
bWF0dGluZ0NvbnRleHQ6OmxheW91dElubGluZUF4aXMoY29uc3QgSW5saW5lSXRlbVJhbmdlJiBy
dWJ5UmFuZ2UsIGNvbnN0IElubGluZUl0ZW1zJiBpbmxpbmVJdGVtcywgTGluZSYgbGluZSwgSW5s
aW5lTGF5b3V0VW5pdCBhdmFpbGFibGVXaWR0aCkKIHsKLSAgICBVTlVTRURfUEFSQU0oYXZhaWxh
YmxlV2lkdGgpOwotCiAgICAgQVNTRVJUKCFydWJ5UmFuZ2UuaXNFbXB0eSgpKTsKICAgICAvLyBS
dWJ5IGNvbnRhaW5lciBpbmxpbmUgaXRlbSBsaXN0IGlzIGFzIGZvbGxvd3M6CiAgICAgLy8gW3J1
YnkgY29udGFpbmVyIHN0YXJ0XVtydWJ5IGJhc2Ugc3RhcnRdW3J1YnkgYmFzZSBjb250ZW50XVty
dWJ5IGJhc2UgZW5kXVsuLi5dW3J1YnkgY29udGFpbmVyIGVuZF0KKyAgICBhdXRvIGN1cnJlbnRJ
bmRleCA9IHJ1YnlSYW5nZS5zdGFydEluZGV4KCk7CisgICAgd2hpbGUgKGN1cnJlbnRJbmRleCA8
IHJ1YnlSYW5nZS5lbmRJbmRleCgpKSB7CisgICAgICAgIGF1dG8gY2FuZGlkYXRlQ29udGVudEVu
ZCA9IG5leHRXcmFwT3Bwb3J0dW5pdHlXaXRoaW5SdWJ5Q29udGFpbmVyKGN1cnJlbnRJbmRleCwg
cnVieVJhbmdlLCBpbmxpbmVJdGVtcyk7CisgICAgICAgIGF1dG8gY29udGVudExvZ2ljYWxXaWR0
aCA9IGxvZ2ljYVdpZHRoRm9yUnVieVJhbmdlKHsgY3VycmVudEluZGV4LCBjYW5kaWRhdGVDb250
ZW50RW5kIH0sIGlubGluZUl0ZW1zLCBsaW5lLmNvbnRlbnRMb2dpY2FsUmlnaHQoKSk7CisgICAg
ICAgIGF1dG8gc2hvdWxkUGxhY2VSdWJ5UmFuZ2UgPSBjb250ZW50TG9naWNhbFdpZHRoIDw9IGF2
YWlsYWJsZVdpZHRoIHx8ICFsaW5lLmhhc0NvbnRlbnQoKTsKKyAgICAgICAgaWYgKCFzaG91bGRQ
bGFjZVJ1YnlSYW5nZSkKKyAgICAgICAgICAgIHJldHVybiB7IElubGluZUNvbnRlbnRCcmVha2Vy
OjpJc0VuZE9mTGluZTo6WWVzLCBjdXJyZW50SW5kZXggLSBydWJ5UmFuZ2Uuc3RhcnRJbmRleCgp
IH07CisgICAgICAgIHBsYWNlUnVieUNvbnRlbnQoeyBjdXJyZW50SW5kZXgsIGNhbmRpZGF0ZUNv
bnRlbnRFbmQgfSwgaW5saW5lSXRlbXMsIGxpbmUpOworICAgICAgICBhdmFpbGFibGVXaWR0aCAt
PSBjb250ZW50TG9naWNhbFdpZHRoOworICAgICAgICBjdXJyZW50SW5kZXggPSBjYW5kaWRhdGVD
b250ZW50RW5kOworICAgIH0KKyAgICByZXR1cm4geyBhdmFpbGFibGVXaWR0aCA+PSAwID8gSW5s
aW5lQ29udGVudEJyZWFrZXI6OklzRW5kT2ZMaW5lOjpObyA6IElubGluZUNvbnRlbnRCcmVha2Vy
OjpJc0VuZE9mTGluZTo6WWVzLCBjdXJyZW50SW5kZXggLSBydWJ5UmFuZ2Uuc3RhcnRJbmRleCgp
IH07Cit9CiAKLSAgICBhdXRvJiBydWJ5Q29udGFpbmVyU3RhcnQgPSBpbmxpbmVJdGVtc1tydWJ5
UmFuZ2Uuc3RhcnRJbmRleCgpXTsKLSAgICBhdXRvIHJ1YnlDb250YWluZXJFbmRJbmRleCA9IHJ1
YnlSYW5nZS5lbmRJbmRleCgpIC0gMTsKLSAgICBBU1NFUlQocnVieUNvbnRhaW5lclN0YXJ0Lmxh
eW91dEJveCgpLmlzUnVieSgpKTsKLSAgICBsaW5lLmFwcGVuZChydWJ5Q29udGFpbmVyU3RhcnQs
IHJ1YnlDb250YWluZXJTdGFydC5zdHlsZSgpLCB7IH0pOwotCi0gICAgYXV0byBiYXNlQ29udGVu
dEluZGV4ID0gcnVieVJhbmdlLnN0YXJ0SW5kZXgoKSArIDE7Ci0gICAgd2hpbGUgKGJhc2VDb250
ZW50SW5kZXggPCBydWJ5Q29udGFpbmVyRW5kSW5kZXgpIHsKLSAgICAgICAgYXV0byBoYW5kbGVS
dWJ5Q29sdW1uID0gWyZdIHsKLSAgICAgICAgICAgIC8vIHJ1YnkgY29sdW1uOiByZXByZXNlbnRl
ZCBieSBhIHNpbmdsZSBydWJ5IGJhc2UgYW5kIG9uZSBydWJ5IGFubm90YXRpb24KLSAgICAgICAg
ICAgIC8vIGZyb20gZWFjaCBpbnRlcmxpbmVhciBhbm5vdGF0aW9uIGxldmVsIGluIGl0cyBydWJ5
IHNlZ21lbnQuCi0gICAgICAgICAgICBhdXRvJiBydWJ5QmFzZVN0YXJ0ID0gaW5saW5lSXRlbXNb
YmFzZUNvbnRlbnRJbmRleCsrXTsKLSAgICAgICAgICAgIEFTU0VSVChydWJ5QmFzZVN0YXJ0Lmxh
eW91dEJveCgpLmlzUnVieUJhc2UoKSk7Ci0gICAgICAgICAgICBsaW5lLmFwcGVuZChydWJ5QmFz
ZVN0YXJ0LCBydWJ5QmFzZVN0YXJ0LnN0eWxlKCksIHsgfSk7Cit2b2lkIFJ1YnlGb3JtYXR0aW5n
Q29udGV4dDo6cGxhY2VSdWJ5Q29udGVudChXVEY6OlJhbmdlPHNpemVfdD4gY2FuZGlkYXRlUmFu
Z2UsIGNvbnN0IElubGluZUl0ZW1zJiBpbmxpbmVJdGVtcywgTGluZSYgbGluZSkKK3sKKyAgICBB
U1NFUlQoY2FuZGlkYXRlUmFuZ2UuZW5kKCkgPD0gaW5saW5lSXRlbXMuc2l6ZSgpKTsKKyAgICBB
U1NFUlQoaW5saW5lSXRlbXNbY2FuZGlkYXRlUmFuZ2UuYmVnaW4oKV0ubGF5b3V0Qm94KCkuaXNS
dWJ5KCkgfHwgaW5saW5lSXRlbXNbY2FuZGlkYXRlUmFuZ2UuYmVnaW4oKV0ubGF5b3V0Qm94KCku
aXNSdWJ5QmFzZSgpKTsKKyAgICBhdXRvJiBmb3JtYXR0aW5nR2VvbWV0cnkgPSBwYXJlbnRGb3Jt
YXR0aW5nQ29udGV4dCgpLmZvcm1hdHRpbmdHZW9tZXRyeSgpOwogCi0gICAgICAgICAgICBiYXNl
Q29udGVudEluZGV4ICs9IGxheW91dFJ1YnlCYXNlSW5saW5lQXhpcyhsaW5lLCBydWJ5QmFzZVN0
YXJ0LmxheW91dEJveCgpLCBiYXNlQ29udGVudEluZGV4LCBpbmxpbmVJdGVtcyk7CisgICAgYXV0
byBpbmRleCA9IGNhbmRpZGF0ZVJhbmdlLmJlZ2luKCk7CisgICAgd2hpbGUgKGluZGV4IDwgY2Fu
ZGlkYXRlUmFuZ2UuZW5kKCkpIHsKKyAgICAgICAgYXV0byBhcHBlbmRJbmxpbmVCb3hJdGVtID0g
WyZdKGF1dG8mIGlubGluZUJveEl0ZW0pIHsKKyAgICAgICAgICAgIEFTU0VSVChpbmxpbmVCb3hJ
dGVtLmlzSW5saW5lQm94U3RhcnQoKSB8fCBpbmxpbmVCb3hJdGVtLmlzSW5saW5lQm94RW5kKCkp
OworICAgICAgICAgICAgQVNTRVJUKGlubGluZUJveEl0ZW0ubGF5b3V0Qm94KCkuaXNSdWJ5KCkg
fHwgaW5saW5lQm94SXRlbS5sYXlvdXRCb3goKS5pc1J1YnlCYXNlKCkpOwogCi0gICAgICAgICAg
ICBhdXRvJiBydWJ5QmFzZUVuZCA9IGlubGluZUl0ZW1zW2Jhc2VDb250ZW50SW5kZXgrK107Ci0g
ICAgICAgICAgICBBU1NFUlQocnVieUJhc2VFbmQubGF5b3V0Qm94KCkuaXNSdWJ5QmFzZSgpKTsK
LSAgICAgICAgICAgIGxpbmUuYXBwZW5kKHJ1YnlCYXNlRW5kLCBydWJ5QmFzZUVuZC5sYXlvdXRC
b3goKS5zdHlsZSgpLCB7IH0pOworICAgICAgICAgICAgYXV0byBsb2dpY2FsV2lkdGggPSBmb3Jt
YXR0aW5nR2VvbWV0cnkuaW5saW5lSXRlbVdpZHRoKGlubGluZUJveEl0ZW0sIGxpbmUuY29udGVu
dExvZ2ljYWxSaWdodCgpLCB7IH0pOworICAgICAgICAgICAgbGluZS5hcHBlbmQoaW5saW5lQm94
SXRlbSwgaW5saW5lQm94SXRlbS5zdHlsZSgpLCBsb2dpY2FsV2lkdGgpOworICAgICAgICAgICAg
KytpbmRleDsKICAgICAgICAgfTsKLSAgICAgICAgaGFuZGxlUnVieUNvbHVtbigpOwotICAgIH0K
IAotICAgIGF1dG8mIHJ1YnlDb250YWluZXJFbmQgPSBpbmxpbmVJdGVtc1tydWJ5Q29udGFpbmVy
RW5kSW5kZXhdOwotICAgIEFTU0VSVChydWJ5Q29udGFpbmVyRW5kLmxheW91dEJveCgpLmlzUnVi
eSgpKTsKLSAgICBsaW5lLmFwcGVuZChydWJ5Q29udGFpbmVyRW5kLCBydWJ5Q29udGFpbmVyRW5k
LnN0eWxlKCksIHsgfSk7CisgICAgICAgIGF1dG8mIHJ1YnlJdGVtID0gaW5saW5lSXRlbXNbaW5k
ZXhdOworICAgICAgICBhdXRvJiBydWJ5TGF5b3V0Qm94ID0gcnVieUl0ZW0ubGF5b3V0Qm94KCk7
CisgICAgICAgIEFTU0VSVChydWJ5SXRlbS5pc0lubGluZUJveFN0YXJ0KCkgfHwgcnVieUl0ZW0u
aXNJbmxpbmVCb3hFbmQoKSk7CisKKyAgICAgICAgaWYgKHJ1YnlMYXlvdXRCb3guaXNSdWJ5KCkp
IHsKKyAgICAgICAgICAgIGFwcGVuZElubGluZUJveEl0ZW0ocnVieUl0ZW0pOworICAgICAgICAg
ICAgQVNTRVJUKHJ1YnlJdGVtLmlzSW5saW5lQm94U3RhcnQoKSB8fCAocnVieUl0ZW0uaXNJbmxp
bmVCb3hFbmQoKSAmJiBpbmRleCA9PSBjYW5kaWRhdGVSYW5nZS5lbmQoKSkpOworICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJ1YnlMYXlvdXRCb3guaXNSdWJ5
QmFzZSgpKSB7CisgICAgICAgICAgICAvLyBydWJ5IGNvbHVtbjogcmVwcmVzZW50ZWQgYnkgYSBz
aW5nbGUgcnVieSBiYXNlIGFuZCBvbmUgcnVieSBhbm5vdGF0aW9uCisgICAgICAgICAgICAvLyBm
cm9tIGVhY2ggaW50ZXJsaW5lYXIgYW5ub3RhdGlvbiBsZXZlbCBpbiBpdHMgcnVieSBzZWdtZW50
LgorICAgICAgICAgICAgYXBwZW5kSW5saW5lQm94SXRlbShydWJ5SXRlbSk7CisgICAgICAgICAg
ICBpZiAocnVieUl0ZW0uaXNJbmxpbmVCb3hTdGFydCgpKQorICAgICAgICAgICAgICAgIGluZGV4
ICs9IGxheW91dFJ1YnlCYXNlSW5saW5lQXhpcyhsaW5lLCBydWJ5TGF5b3V0Qm94LCBpbmRleCwg
aW5saW5lSXRlbXMpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQogfQogCiBzaXplX3QgUnVieUZvcm1hdHRpbmdD
b250ZXh0OjpsYXlvdXRSdWJ5QmFzZUlubGluZUF4aXMoTGluZSYgbGluZSwgY29uc3QgQm94JiBy
dWJ5QmFzZUxheW91dEJveCwgc2l6ZV90IHJ1YnlCYXNlQ29udGVudFN0YXJ0SW5kZXgsIGNvbnN0
IElubGluZUl0ZW1zJiBpbmxpbmVJdGVtcykKQEAgLTE3MSw2ICsyMTMsMjcgQEAgSW5saW5lTGF5
b3V0VW5pdCBSdWJ5Rm9ybWF0dGluZ0NvbnRleHQ6Om92ZXJoYW5nRm9yQW5ub3RhdGlvbkFmdGVy
KGNvbnN0IEJveCYgcnUKICAgICByZXR1cm4gd291bGRBbm5vdGF0aW9uT3ZlcmxhcCgpID8gMC5m
IDogb3ZlcmhhbmdWYWx1ZTsKIH0KIAorc3RkOjpvcHRpb25hbDxzaXplX3Q+IFJ1YnlGb3JtYXR0
aW5nQ29udGV4dDo6bmV4dFdyYXBPcHBvcnR1bml0eShzaXplX3QgaW5saW5lSXRlbUluZGV4LCBz
dGQ6Om9wdGlvbmFsPHNpemVfdD4gcHJldmlvdXNJbmxpbmVJdGVtSW5kZXgsIGNvbnN0IElubGlu
ZUl0ZW1SYW5nZSYgbGF5b3V0UmFuZ2UsIGNvbnN0IElubGluZUl0ZW1zJiBpbmxpbmVJdGVtcykK
K3sKKyAgICBhdXRvJiBpbmxpbmVJdGVtID0gaW5saW5lSXRlbXNbaW5saW5lSXRlbUluZGV4XTsK
KyAgICBBU1NFUlQoaW5saW5lSXRlbS5pc0lubGluZUJveFN0YXJ0KCkgfHwgaW5saW5lSXRlbS5p
c0lubGluZUJveEVuZCgpKTsKKworICAgIGF1dG8mIGxheW91dEJveCA9IGlubGluZUl0ZW0ubGF5
b3V0Qm94KCk7CisgICAgYXV0byBzdGFydHNXaXRoUnVieUlubGluZUJveCA9IGxheW91dEJveC5p
c1J1YnkoKSB8fCBsYXlvdXRCb3guaXNSdWJ5QmFzZSgpOworICAgIGlmICghc3RhcnRzV2l0aFJ1
YnlJbmxpbmVCb3gpIHsKKyAgICAgICAgLy8gVGhpcyBpcyBub3QgcnVieSBjb250ZW50LgorICAg
ICAgICByZXR1cm4geyB9OworICAgIH0KKyAgICBpZiAocHJldmlvdXNJbmxpbmVJdGVtSW5kZXgg
JiYgc3RhcnRzV2l0aFJ1YnlJbmxpbmVCb3gpIHsKKyAgICAgICAgLy8gVGhlcmUncyBhbHdheXMg
YSBzb2Z0IHdyYXAgb3Bwb3J0dW5pdGl5IGJlZm9yZSA8cnVieT4vcnVieSBiYXNlLgorICAgICAg
ICByZXR1cm4gaW5saW5lSXRlbUluZGV4OworICAgIH0KKyAgICAvLyBTa2lwIHRvIHRoZSBlbmQg
b2YgdGhlIHJ1YnkgY29udGFpbmVyLgorICAgIGZvciAoOyBpbmxpbmVJdGVtSW5kZXggPCBsYXlv
dXRSYW5nZS5lbmRJbmRleCgpICYmICghaW5saW5lSXRlbXNbaW5saW5lSXRlbUluZGV4XS5pc0lu
bGluZUJveEVuZCgpIHx8ICFpbmxpbmVJdGVtc1tpbmxpbmVJdGVtSW5kZXhdLmxheW91dEJveCgp
LmlzUnVieSgpKTsgKytpbmxpbmVJdGVtSW5kZXgpIHsgfQorICAgIEFTU0VSVChpbmxpbmVJdGVt
SW5kZXggPCBsYXlvdXRSYW5nZS5lbmRJbmRleCgpKTsKKyAgICByZXR1cm4gaW5saW5lSXRlbUlu
ZGV4ICsgMTsKK30KKwogdm9pZCBSdWJ5Rm9ybWF0dGluZ0NvbnRleHQ6OmFwcGx5UnVieUFsaWdu
KExpbmUmIGxpbmUsIFdURjo6UmFuZ2U8c2l6ZV90PiBiYXNlUnVuUmFuZ2UsIGNvbnN0IEJveCYg
cnVieUJhc2VMYXlvdXRCb3gsIElubGluZUxheW91dFVuaXQgYmFzZUNvbnRlbnRMb2dpY2FsV2lk
dGgpCiB7CiAgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1ydWJ5LyNpbnRlcmxp
bmVhci1pbmxpbmUKQEAgLTIxNSw2ICsyNzgsNTggQEAgc3RkOjpvcHRpb25hbDxib29sPiBSdWJ5
Rm9ybWF0dGluZ0NvbnRleHQ6OmFubm90YXRpb25PdmVybGFwQ2hlY2soY29uc3QgSW5saW5lRGkK
ICAgICByZXR1cm4geyB9OwogfQogCitJbmxpbmVMYXlvdXRVbml0IFJ1YnlGb3JtYXR0aW5nQ29u
dGV4dDo6bG9naWNhV2lkdGhGb3JSdWJ5UmFuZ2UoV1RGOjpSYW5nZTxzaXplX3Q+IGNhbmRpZGF0
ZVJhbmdlLCBjb25zdCBJbmxpbmVJdGVtcyYgaW5saW5lSXRlbXMsIElubGluZUxheW91dFVuaXQg
bGluZUNvbnRlbnRMb2dpY2FsUmlnaHQpIGNvbnN0Cit7CisgICAgQVNTRVJUKGNhbmRpZGF0ZVJh
bmdlLmVuZCgpIDw9IGlubGluZUl0ZW1zLnNpemUoKSk7CisgICAgQVNTRVJUKGlubGluZUl0ZW1z
W2NhbmRpZGF0ZVJhbmdlLmJlZ2luKCldLmxheW91dEJveCgpLmlzUnVieSgpIHx8IGlubGluZUl0
ZW1zW2NhbmRpZGF0ZVJhbmdlLmJlZ2luKCldLmxheW91dEJveCgpLmlzUnVieUJhc2UoKSk7CisK
KyAgICBhdXRvJiBmb3JtYXR0aW5nR2VvbWV0cnkgPSBwYXJlbnRGb3JtYXR0aW5nQ29udGV4dCgp
LmZvcm1hdHRpbmdHZW9tZXRyeSgpOworICAgIGF1dG8gY2FuZGlkYXRlQ29udGVudExvZ2ljYWxX
aWR0aCA9IElubGluZUxheW91dFVuaXQgeyB9OworICAgIGF1dG8gaW5kZXggPSBjYW5kaWRhdGVS
YW5nZS5iZWdpbigpOworCisgICAgd2hpbGUgKGluZGV4IDwgY2FuZGlkYXRlUmFuZ2UuZW5kKCkp
IHsKKyAgICAgICAgYXV0byYgcnVieUl0ZW0gPSBpbmxpbmVJdGVtc1tpbmRleF07CisgICAgICAg
IGF1dG8mIHJ1YnlMYXlvdXRCb3ggPSBydWJ5SXRlbS5sYXlvdXRCb3goKTsKKworICAgICAgICBp
ZiAocnVieUxheW91dEJveC5pc1J1YnkoKSkgeworICAgICAgICAgICAgQVNTRVJUKHJ1YnlJdGVt
LmlzSW5saW5lQm94U3RhcnQoKSB8fCBydWJ5SXRlbS5pc0lubGluZUJveEVuZCgpKTsKKyAgICAg
ICAgICAgIGNhbmRpZGF0ZUNvbnRlbnRMb2dpY2FsV2lkdGggKz0gZm9ybWF0dGluZ0dlb21ldHJ5
LmlubGluZUl0ZW1XaWR0aChydWJ5SXRlbSwgbGluZUNvbnRlbnRMb2dpY2FsUmlnaHQgKyBjYW5k
aWRhdGVDb250ZW50TG9naWNhbFdpZHRoLCB7IH0pOworICAgICAgICAgICAgKytpbmRleDsKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHJ1YnlMYXlvdXRC
b3guaXNSdWJ5QmFzZSgpKSB7CisgICAgICAgICAgICBBU1NFUlQocnVieUl0ZW0uaXNJbmxpbmVC
b3hTdGFydCgpKTsKKworICAgICAgICAgICAgYXV0byBhbm5vdGF0aW9uTWFyZ2luQm94V2lkdGgg
PSBbJl0oKSAtPiBJbmxpbmVMYXlvdXRVbml0IHsKKyAgICAgICAgICAgICAgICBpZiAoYXV0byog
YW5ub3RhdGlvbkJveCA9IHJ1YnlMYXlvdXRCb3guYXNzb2NpYXRlZFJ1YnlBbm5vdGF0aW9uQm94
KCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBJbmxpbmVMYXlvdXRVbml0IHsgcGFyZW50
Rm9ybWF0dGluZ0NvbnRleHQoKS5nZW9tZXRyeUZvckJveCgqYW5ub3RhdGlvbkJveCkubWFyZ2lu
Qm94V2lkdGgoKSB9OworICAgICAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgICAgICB9
OworCisgICAgICAgICAgICBhdXRvIGJhc2VMb2dpY2FsV2lkdGggPSBbJl0geworICAgICAgICAg
ICAgICAgIC8vIEJhc2UgY29udGVudCBuZWVkcyBzcGVjaWFsIGhhbmRsaW5nIHdpdGggdGFraW5n
IGFubm90YXRpb24gYm94IGludG8gYWNjb3VudC4KKyAgICAgICAgICAgICAgICBhdXRvIGxvZ2lj
YWxXaWR0aCA9IElubGluZUxheW91dFVuaXQgeyB9OworICAgICAgICAgICAgICAgIGZvciAoOyBp
bmRleCA8IGNhbmRpZGF0ZVJhbmdlLmVuZCgpOyArK2luZGV4KSB7CisgICAgICAgICAgICAgICAg
ICAgIGF1dG8mIGJhc2VJbmxpbmVJdGVtID0gaW5saW5lSXRlbXNbaW5kZXhdOworICAgICAgICAg
ICAgICAgICAgICBsb2dpY2FsV2lkdGggKz0gZm9ybWF0dGluZ0dlb21ldHJ5LmlubGluZUl0ZW1X
aWR0aChiYXNlSW5saW5lSXRlbSwgbGluZUNvbnRlbnRMb2dpY2FsUmlnaHQgKyBsb2dpY2FsV2lk
dGgsIHsgfSk7CisgICAgICAgICAgICAgICAgICAgIGlmICgmYmFzZUlubGluZUl0ZW0ubGF5b3V0
Qm94KCkgPT0gJnJ1YnlMYXlvdXRCb3ggJiYgYmFzZUlubGluZUl0ZW0uaXNJbmxpbmVCb3hFbmQo
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gRW5kIG9mIGJhc2UuCisgICAgICAgICAg
ICAgICAgICAgICAgICArK2luZGV4OworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxv
Z2ljYWxXaWR0aDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gSW5saW5lTGF5b3V0VW5pdCB7IH07CisgICAgICAgICAgICB9OworICAgICAgICAgICAgY2Fu
ZGlkYXRlQ29udGVudExvZ2ljYWxXaWR0aCArPSBzdGQ6Om1heChiYXNlTG9naWNhbFdpZHRoKCks
IGFubm90YXRpb25NYXJnaW5Cb3hXaWR0aCgpKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICB9CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICByZXR1cm4g
Y2FuZGlkYXRlQ29udGVudExvZ2ljYWxXaWR0aDsKK30KKwogfQogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9ydWJ5L1J1YnlG
b3JtYXR0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvcnVieS9SdWJ5Rm9ybWF0dGluZ0NvbnRleHQuaAppbmRleCAwZjhkYjFkMmE0
NTcuLjA4ZGM3MGZmMDY4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvcnVieS9SdWJ5Rm9ybWF0dGluZ0NvbnRleHQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9ydWJ5L1J1YnlG
b3JtYXR0aW5nQ29udGV4dC5oCkBAIC0zNSw3ICszNSwxMSBAQCBjbGFzcyBSdWJ5Rm9ybWF0dGlu
Z0NvbnRleHQgewogcHVibGljOgogICAgIFJ1YnlGb3JtYXR0aW5nQ29udGV4dChjb25zdCBJbmxp
bmVGb3JtYXR0aW5nQ29udGV4dCYgcGFyZW50Rm9ybWF0dGluZ0NvbnRleHQpOwogCi0gICAgdm9p
ZCBsYXlvdXRJbmxpbmVBeGlzKGNvbnN0IElubGluZUl0ZW1SYW5nZSYsIGNvbnN0IElubGluZUl0
ZW1zJiwgTGluZSYsIElubGluZUxheW91dFVuaXQgYXZhaWxhYmxlV2lkdGgpOworICAgIHN0cnVj
dCBJbmxpbmVMYXlvdXRSZXN1bHQgeworICAgICAgICBJbmxpbmVDb250ZW50QnJlYWtlcjo6SXNF
bmRPZkxpbmUgaXNFbmRPZkxpbmUgeyBJbmxpbmVDb250ZW50QnJlYWtlcjo6SXNFbmRPZkxpbmU6
Ok5vIH07CisgICAgICAgIHNpemVfdCBjb21taXR0ZWRDb3VudCB7IDAgfTsKKyAgICB9OworICAg
IElubGluZUxheW91dFJlc3VsdCBsYXlvdXRJbmxpbmVBeGlzKGNvbnN0IElubGluZUl0ZW1SYW5n
ZSYsIGNvbnN0IElubGluZUl0ZW1zJiwgTGluZSYsIElubGluZUxheW91dFVuaXQgYXZhaWxhYmxl
V2lkdGgpOwogCiAgICAgc3RydWN0IE92ZXJVbmRlciB7CiAgICAgICAgIElubGluZUxheW91dFVu
aXQgb3ZlciB7IDAuZiB9OwpAQCAtNDcsMTAgKzUxLDE0IEBAIHB1YmxpYzoKICAgICBJbmxpbmVM
YXlvdXRVbml0IG92ZXJoYW5nRm9yQW5ub3RhdGlvbkJlZm9yZShjb25zdCBCb3gmIHJ1YnlCYXNl
TGF5b3V0Qm94LCBzaXplX3QgcnVieUJhc2VDb250ZW50U3RhcnRJbmRleCwgY29uc3QgSW5saW5l
RGlzcGxheTo6Qm94ZXMmKTsKICAgICBJbmxpbmVMYXlvdXRVbml0IG92ZXJoYW5nRm9yQW5ub3Rh
dGlvbkFmdGVyKGNvbnN0IEJveCYgcnVieUJhc2VMYXlvdXRCb3gsIHNpemVfdCBydWJ5QmFzZUNv
bnRlbnRFbmRJbmRleCwgY29uc3QgSW5saW5lRGlzcGxheTo6Qm94ZXMmKTsKIAorICAgIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbmV4dFdyYXBPcHBvcnR1bml0eShzaXplX3QgaW5saW5l
SXRlbUluZGV4LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gcHJldmlvdXNJbmxpbmVJdGVtSW5kZXgs
IGNvbnN0IElubGluZUl0ZW1SYW5nZSYsIGNvbnN0IElubGluZUl0ZW1zJik7CisKIHByaXZhdGU6
CiAgICAgc2l6ZV90IGxheW91dFJ1YnlCYXNlSW5saW5lQXhpcyhMaW5lJiwgY29uc3QgQm94JiBy
dWJ5QmFzZUxheW91dEJveCwgc2l6ZV90IHJ1YnlCYXNlQ29udGVudFN0YXJ0LCBjb25zdCBJbmxp
bmVJdGVtcyYpOwogICAgIHZvaWQgYXBwbHlSdWJ5QWxpZ24oTGluZSYsIFdURjo6UmFuZ2U8c2l6
ZV90PiBiYXNlUnVuUmFuZ2UsIGNvbnN0IEJveCYgcnVieUJhc2VMYXlvdXRCb3gsIElubGluZUxh
eW91dFVuaXQgYmFzZUNvbnRlbnRMb2dpY2FsV2lkdGgpOwogICAgIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4gYW5ub3RhdGlvbk92ZXJsYXBDaGVjayhjb25zdCBJbmxpbmVEaXNwbGF5OjpCb3gmLCBjb25z
dCBJbmxpbmVMYXlvdXRSZWN0JiBvdmVyaGFuZ2luZ1JlY3QpIGNvbnN0OworICAgIHZvaWQgcGxh
Y2VSdWJ5Q29udGVudChXVEY6OlJhbmdlPHNpemVfdD4gY2FuZGlkYXRlUmFuZ2UsIGNvbnN0IElu
bGluZUl0ZW1zJiwgTGluZSYpOworICAgIElubGluZUxheW91dFVuaXQgbG9naWNhV2lkdGhGb3JS
dWJ5UmFuZ2UoV1RGOjpSYW5nZTxzaXplX3Q+IGNhbmRpZGF0ZVJhbmdlLCBjb25zdCBJbmxpbmVJ
dGVtcyYsIElubGluZUxheW91dFVuaXQgbGluZUNvbnRlbnRMb2dpY2FsUmlnaHQpIGNvbnN0Owog
CiAgICAgY29uc3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmIHBhcmVudEZvcm1hdHRpbmdDb250
ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnRGb3JtYXR0aW5nQ29udGV4dDsgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>467842</attachid>
            <date>2023-09-24 10:24:43 -0700</date>
            <delta_ts>2023-09-24 20:37:02 -0700</delta_ts>
            <desc>[fast-cq]Patch</desc>
            <filename>bug-261967-20230924102442.patch</filename>
            <type>text/plain</type>
            <size>20511</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSBlMjY1YjZlMmYyMGRiZjM0ZmE5ODZkMWFlNWI2MWJiMGYyMjY3MDFiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IEZyaSwgMjIgU2VwIDIwMjMgMTM6MTk6MjggLTA3MDAKU3ViamVjdDogW1BBVENIXSBbSUZDXVtS
dWJ5XSBBZGQgc3VwcG9ydCBmb3Igc29mdCB3cmFwIG9wcG9ydHVuaXRpZXMgYmV0d2VlbgogcnVi
eSBiYXNlcyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjYxOTY3CgpS
ZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KClRoaXMgcGF0Y2ggZW5hYmxlcyBsaW5lIGJyZWFr
aW5nIGluc2lkZXIgcnVieSBjb250YWluZXJzLCBiZXR3ZWVuIHJ1YnkgYmFzZXMuCgoxLiBNb3Zl
IG5leHRXcmFwT3Bwb3J0dW5pdHkgbG9naWMgdG8gUnVieUZvcm1hdHRpbmdDb250ZXh0IChJRkMg
Y29uc3VsdHMgUnVieUZvcm1hdHRpbmdDb250ZXh0IGZvciBuZXh0IHdyYXAgb3Bwb3J0dW5pdHkg
bm93KQoyLiBNZWFzdXJlIHJ1YnkgdG8gZGVjaWRlIHdoZXRoZXIgd2UgY2FuIG9ubHkgZml0IHBh
cnRpYWwgKHJ1YnkgYmFzZSkgY29udGVudC4KCiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmNwcDoKKFdlYkNv
cmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5OjpuZXh0V3JhcE9wcG9ydHVuaXR5
KToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVMaW5lQnVpbGRlci5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjpjYW5kaWRh
dGVDb250ZW50Rm9yTGluZSk6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjpoYW5kbGVS
dWJ5Q29udGVudCk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwOgooV2ViQ29yZTo6
TGF5b3V0OjpJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmhhbmRsZUlubGluZUJveEVuZCk6
CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvcnVieS9S
dWJ5Rm9ybWF0dGluZ0NvbnRleHQuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpuZXh0V3JhcE9wcG9y
dHVuaXR5V2l0aGluUnVieUNvbnRhaW5lcik6CihXZWJDb3JlOjpMYXlvdXQ6OlJ1YnlGb3JtYXR0
aW5nQ29udGV4dDo6bGF5b3V0SW5saW5lQXhpcyk6CihXZWJDb3JlOjpMYXlvdXQ6OlJ1YnlGb3Jt
YXR0aW5nQ29udGV4dDo6cGxhY2VSdWJ5Q29udGVudCk6CihXZWJDb3JlOjpMYXlvdXQ6OlJ1YnlG
b3JtYXR0aW5nQ29udGV4dDo6bmV4dFdyYXBPcHBvcnR1bml0eSk6CihXZWJDb3JlOjpMYXlvdXQ6
OlJ1YnlGb3JtYXR0aW5nQ29udGV4dDo6bG9naWNhV2lkdGhGb3JSdWJ5UmFuZ2UgY29uc3QpOgoq
IFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL3J1YnkvUnVi
eUZvcm1hdHRpbmdDb250ZXh0Lmg6Ci0tLQogLi4uL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2Vv
bWV0cnkuY3BwICAgICAgIHwgICA3ICstCiAuLi4vaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNw
cCAgICAgICAgICAgICAgfCAgMzEgKy0tLQogLi4uL2Rpc3BsYXkvSW5saW5lRGlzcGxheUNvbnRl
bnRCdWlsZGVyLmNwcCAgIHwgICAyICstCiAuLi4vaW5saW5lL3J1YnkvUnVieUZvcm1hdHRpbmdD
b250ZXh0LmNwcCAgICAgfCAxNjUgKysrKysrKysrKysrKysrLS0tCiAuLi4vaW5saW5lL3J1Ynkv
UnVieUZvcm1hdHRpbmdDb250ZXh0LmggICAgICAgfCAgMTAgKy0KIDUgZmlsZXMgY2hhbmdlZCwg
MTYxIGluc2VydGlvbnMoKyksIDU0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdH
ZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuY3BwCmluZGV4IDIwYjQ0MDI1NGI5OS4uZDQx
MGY4ZDljYWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdH
ZW9tZXRyeS5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJMYXlvdXRFbGVtZW50Qm94
LmgiCiAjaW5jbHVkZSAiTGVuZ3RoRnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGVJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiUnVieUZvcm1hdHRpbmdDb250ZXh0LmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBMYXlvdXQgewpAQCAtNDYxLDEwICs0NjIsOCBAQCBzaXpl
X3QgSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5OjpuZXh0V3JhcE9wcG9ydHVuaXR5KHNpemVfdCBz
dGFydEluZGV4LCBjb25zdCBJbgogICAgICAgICAgICAgcmV0dXJuIGluZGV4OwogICAgICAgICB9
CiAgICAgICAgIGlmIChjdXJyZW50SXRlbS5pc0lubGluZUJveFN0YXJ0KCkgfHwgY3VycmVudEl0
ZW0uaXNJbmxpbmVCb3hFbmQoKSkgewotICAgICAgICAgICAgaWYgKGN1cnJlbnRJdGVtLmxheW91
dEJveCgpLmlzUnVieSgpKSB7Ci0gICAgICAgICAgICAgICAgLy8gU2hvdWxkIGJlIGFibGUgdG8g
YnJlYWsgX2JlZm9yZV8gPHJ1Ynk+LgotICAgICAgICAgICAgICAgIHJldHVybiBpbmRleDsKLSAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChhdXRvIG5leHRXcmFwT3Bwb3J0dW5pdHlGb3JS
dWJ5ID0gUnVieUZvcm1hdHRpbmdDb250ZXh0OjpuZXh0V3JhcE9wcG9ydHVuaXR5KGluZGV4LCBw
cmV2aW91c0lubGluZUl0ZW1JbmRleCwgbGF5b3V0UmFuZ2UsIGlubGluZUl0ZW1zKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gKm5leHRXcmFwT3Bwb3J0dW5pdHlGb3JSdWJ5OwogICAgICAgICAg
ICAgLy8gTmVlZCB0byBzZWUgd2hhdCBjb21lcyBuZXh0IHRvIGRlY2lkZS4KICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRl
ci5jcHAKaW5kZXggYTZkYjQ4YTc0Yzk5Li4wZmE5ZDc3ZGNhNDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWls
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9JbmxpbmVMaW5lQnVpbGRlci5jcHAKQEAgLTYxNCwyOSArNjE0LDE1IEBAIHZvaWQgTGlu
ZUJ1aWxkZXI6OmNhbmRpZGF0ZUNvbnRlbnRGb3JMaW5lKExpbmVDYW5kaWRhdGUmIGxpbmVDYW5k
aWRhdGUsIHNpemVfdCBjCiAgICAgfQogCiAgICAgYXV0byBhcHBlbmRSdWJ5Q29udGFpbmVySWZB
cHBsaWNhYmxlID0gWyZdIHsKLSAgICAgICAgaWYgKHNvZnRXcmFwT3Bwb3J0dW5pdHlJbmRleCA+
IGN1cnJlbnRJbmxpbmVJdGVtSW5kZXggfHwgaXNMZWFkaW5nUGFydGlhQ29udGVudCkKKyAgICAg
ICAgYXV0byBpc1J1YnlDb250ZW50ID0gY3VycmVudElubGluZUl0ZW1JbmRleCA8IGxheW91dFJh
bmdlLmVuZEluZGV4KCkgJiYgKG1faW5saW5lSXRlbXNbY3VycmVudElubGluZUl0ZW1JbmRleF0u
bGF5b3V0Qm94KCkuaXNSdWJ5KCkgfHwgbV9pbmxpbmVJdGVtc1tjdXJyZW50SW5saW5lSXRlbUlu
ZGV4XS5sYXlvdXRCb3goKS5pc1J1YnlCYXNlKCkpOworICAgICAgICBpZiAoIWlzUnVieUNvbnRl
bnQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIC8vIFdlIG11c3QgYmUgYXQg
YSBydWJ5IGNvbnRhaW5lciBhbmQgd2Ugc2hvdWxkIGxldCB0aGUgcnVieSBmb3JtYXR0aW5nIGNv
bnRleHQgaGFuZGxlIHRoZSByZXN0IG9mIHRoZSBydWJ5IGNvbnRlbnQuCi0gICAgICAgIEFTU0VS
VChtX2lubGluZUl0ZW1zW2N1cnJlbnRJbmxpbmVJdGVtSW5kZXhdLmxheW91dEJveCgpLmlzUnVi
eSgpKTsKKyAgICAgICAgLy8gV2UgbXVzdCBiZSBhdCBhIHJ1YnkgY29udGFpbmVyL2Jhc2UgYW5k
IHdlIHNob3VsZCBsZXQgdGhlIHJ1YnkgZm9ybWF0dGluZyBjb250ZXh0IGhhbmRsZSB0aGUgcmVz
dCBvZiB0aGUgcnVieSBjb250ZW50LgorICAgICAgICBBU1NFUlQobV9pbmxpbmVJdGVtc1tzb2Z0
V3JhcE9wcG9ydHVuaXR5SW5kZXggLSAxXS5pc0lubGluZUJveEVuZCgpICYmIG1faW5saW5lSXRl
bXNbc29mdFdyYXBPcHBvcnR1bml0eUluZGV4IC0gMV0ubGF5b3V0Qm94KCkuaXNSdWJ5KCkpOwog
ICAgICAgICAvLyBSdWJ5IGJhc2UgY29udGVudCBpcyBoYW5kbGVkIGFzIG9uZSBhdG9taWMgbGlu
ZSBjYW5kaWRhdGUgd2hlcmUgcnVieSBmb3JtYXR0aW5nIGNvbnRleHQgdGFrZXMgY2FyZSBvZiB0
aGUgaW50ZXJuYWwgZGV0YWlscy4KICAgICAgICAgLy8gTm90ZSB0aGF0IHJ1YnkgY29udGVudCBp
cyBwbGFjZWQgb24gdGhlIGxpbmUgYXMgcmVndWFsYXIgaW5saW5lIGNvbnRlbnQgYnkgdGhlIHJ1
YnkgZm9ybWF0dGluZyBjb250ZXh0LgotICAgICAgICBzaXplX3QgbmVzdGluZ0xldmVsID0gMTsK
LSAgICAgICAgZm9yIChzaXplX3QgaW5kZXggPSBzb2Z0V3JhcE9wcG9ydHVuaXR5SW5kZXggKyAx
OyBpbmRleCA8IGxheW91dFJhbmdlLmVuZEluZGV4KCk7ICsraW5kZXgpIHsKLSAgICAgICAgICAg
IGF1dG8mIGlubGluZUl0ZW0gPSBtX2lubGluZUl0ZW1zW2luZGV4XTsKLSAgICAgICAgICAgIGlm
ICghaW5saW5lSXRlbS5sYXlvdXRCb3goKS5pc1J1YnkoKSkKLSAgICAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgICAgIEFTU0VSVChpbmxpbmVJdGVtLmlzSW5saW5lQm94U3RhcnQoKSB8
fCBpbmxpbmVJdGVtLmlzSW5saW5lQm94RW5kKCkpOwotICAgICAgICAgICAgbmVzdGluZ0xldmVs
ICs9IGlubGluZUl0ZW0uaXNJbmxpbmVCb3hFbmQoKSA/ICAtMSA6IDE7Ci0gICAgICAgICAgICBp
ZiAoIW5lc3RpbmdMZXZlbCkgewotICAgICAgICAgICAgICAgIEFTU0VSVCgmbV9pbmxpbmVJdGVt
c1tzb2Z0V3JhcE9wcG9ydHVuaXR5SW5kZXhdLmxheW91dEJveCgpID09ICZtX2lubGluZUl0ZW1z
W2luZGV4XS5sYXlvdXRCb3goKSk7Ci0gICAgICAgICAgICAgICAgbGluZUNhbmRpZGF0ZS5pbmxp
bmVDb250ZW50LmFwcGVuZFJ1YnlDb250YWluZXJSYW5nZSh7IHsgc29mdFdyYXBPcHBvcnR1bml0
eUluZGV4LCB7IH0gfSwgeyBpbmRleCArIDEsIHsgfSB9IH0pOwotICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICAvLyBMZXQncyBqdXN0IHNraXAgdGhpcyBjb3JydXB0IHJ1Ynkg
Y29udGFpbmVyIGFuZCB0cmVhdCBpdCBhcyByZWd1bGFyIGlubGluZSBjb250ZW50LgotICAgICAg
ICArK3NvZnRXcmFwT3Bwb3J0dW5pdHlJbmRleDsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICBsaW5lQ2FuZGlkYXRlLmlubGluZUNvbnRlbnQuYXBwZW5kUnVieUNvbnRhaW5lclJhbmdl
KHsgeyBjdXJyZW50SW5saW5lSXRlbUluZGV4LCB7IH0gfSwgeyBzb2Z0V3JhcE9wcG9ydHVuaXR5
SW5kZXgsIHsgfSB9IH0pOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9OwogICAgIGlmIChh
cHBlbmRSdWJ5Q29udGFpbmVySWZBcHBsaWNhYmxlKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTEx
MTQsOSArMTEwMCw4IEBAIExpbmVCdWlsZGVyOjpSZXN1bHQgTGluZUJ1aWxkZXI6OnByb2Nlc3NM
aW5lQnJlYWtpbmdSZXN1bHQoY29uc3QgTGluZUNhbmRpZGF0ZSYKIAogTGluZUJ1aWxkZXI6OlJl
c3VsdCBMaW5lQnVpbGRlcjo6aGFuZGxlUnVieUNvbnRlbnQoY29uc3QgSW5saW5lSXRlbVJhbmdl
JiBydWJ5Q29udGFpbmVyUmFuZ2UsIElubGluZUxheW91dFVuaXQgYXZhaWxhYmxlV2lkdGhGb3JD
YW5kaWRhdGVDb250ZW50KQogewotICAgIEFTU0VSVChtX2lubGluZUl0ZW1zW3J1YnlDb250YWlu
ZXJSYW5nZS5zdGFydEluZGV4KCldLmxheW91dEJveCgpLmlzUnVieSgpKTsKLSAgICBSdWJ5Rm9y
bWF0dGluZ0NvbnRleHQgeyBmb3JtYXR0aW5nQ29udGV4dCgpIH0ubGF5b3V0SW5saW5lQXhpcyhy
dWJ5Q29udGFpbmVyUmFuZ2UsIG1faW5saW5lSXRlbXMsIG1fbGluZSwgYXZhaWxhYmxlV2lkdGhG
b3JDYW5kaWRhdGVDb250ZW50KTsKLSAgICByZXR1cm4geyBJbmxpbmVDb250ZW50QnJlYWtlcjo6
SXNFbmRPZkxpbmU6Ok5vLCB7IHJ1YnlDb250YWluZXJSYW5nZS5lbmRJbmRleCgpIC0gcnVieUNv
bnRhaW5lclJhbmdlLnN0YXJ0SW5kZXgoKSwgZmFsc2UgfSB9OworICAgIGF1dG8gcmVzdWx0ID0g
UnVieUZvcm1hdHRpbmdDb250ZXh0IHsgZm9ybWF0dGluZ0NvbnRleHQoKSB9LmxheW91dElubGlu
ZUF4aXMocnVieUNvbnRhaW5lclJhbmdlLCBtX2lubGluZUl0ZW1zLCBtX2xpbmUsIGF2YWlsYWJs
ZVdpZHRoRm9yQ2FuZGlkYXRlQ29udGVudCk7CisgICAgcmV0dXJuIHsgcmVzdWx0LmlzRW5kT2ZM
aW5lLCB7IHJlc3VsdC5jb21taXR0ZWRDb3VudCwgZmFsc2UgfSB9OwogfQogCiB2b2lkIExpbmVC
dWlsZGVyOjpjb21taXRQYXJ0aWFsQ29udGVudChjb25zdCBJbmxpbmVDb250ZW50QnJlYWtlcjo6
Q29udGludW91c0NvbnRlbnQ6OlJ1bkxpc3QmIHJ1bnMsIGNvbnN0IElubGluZUNvbnRlbnRCcmVh
a2VyOjpSZXN1bHQ6OlBhcnRpYWxUcmFpbGluZ0NvbnRlbnQmIHBhcnRpYWxUcmFpbGluZ0NvbnRl
bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURp
c3BsYXlDb250ZW50QnVpbGRlci5jcHAKaW5kZXggZmYwZjVjN2QwMWJhLi5jZTBhM2FkZWE5Zjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURp
c3BsYXlDb250ZW50QnVpbGRlci5jcHAKQEAgLTQzOSw3ICs0MzksNyBAQCB2b2lkIElubGluZURp
c3BsYXlDb250ZW50QnVpbGRlcjo6aGFuZGxlSW5saW5lQm94RW5kKGNvbnN0IExpbmU6OlJ1biYg
bGluZVJ1biwgYwogewogICAgIGlmIChsaW5lUnVuLmxheW91dEJveCgpLmlzUnVieUJhc2UoKSkg
ewogICAgICAgICBpZiAobV9ydWJ5Q29sdW1uUmFuZ2VMaXN0LmlzRW1wdHkoKSkgewotICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBBU1NFUlQoIWxpbmVSdW4u
bGF5b3V0Qm94KCkuYXNzb2NpYXRlZFJ1YnlBbm5vdGF0aW9uQm94KCkpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmIChsaW5lUnVuLmxheW91dEJveCgpLmFzc29j
aWF0ZWRSdWJ5QW5ub3RhdGlvbkJveCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvcnVieS9SdWJ5Rm9ybWF0dGluZ0NvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvcnVi
eS9SdWJ5Rm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IDIxNmY4ZjY1YmIwNC4uN2FkYjBmN2Yy
Zjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9ydWJ5L1J1YnlGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvcnVieS9SdWJ5Rm9ybWF0dGluZ0Nv
bnRleHQuY3BwCkBAIC0zMSw0NSArMzEsODcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVz
cGFjZSBMYXlvdXQgewogCitzdGF0aWMgaW5saW5lIHNpemVfdCBuZXh0V3JhcE9wcG9ydHVuaXR5
V2l0aGluUnVieUNvbnRhaW5lcihzaXplX3Qgc3RhcnRJbmRleCwgY29uc3QgSW5saW5lSXRlbVJh
bmdlJiBydWJ5UmFuZ2UsIGNvbnN0IElubGluZUl0ZW1zJiBpbmxpbmVJdGVtcykKK3sKKyAgICAv
LyBXZSBvbmx5IGFsbG93IHdyYXAgb3Bwb3J0dW5pdHkgYmV0d2VlbiBydWJ5IGJhc2VzLgorICAg
IGZvciAoc2l6ZV90IGluZGV4ID0gc3RhcnRJbmRleDsgaW5kZXggPCBydWJ5UmFuZ2UuZW5kSW5k
ZXgoKTsgKytpbmRleCkgeworICAgICAgICBhdXRvJiBydWJ5SXRlbSA9IGlubGluZUl0ZW1zW2lu
ZGV4XTsKKyAgICAgICAgaWYgKHJ1YnlJdGVtLmlzSW5saW5lQm94RW5kKCkgJiYgcnVieUl0ZW0u
bGF5b3V0Qm94KCkuaXNSdWJ5QmFzZSgpKSB7CisgICAgICAgICAgICAvLyBXZSBhcmUgYXQgdGhl
IGVuZCBvZiBhIHJ1YnkgYmFzZSwgbmVlZCB0byBjaGVjayBpZiB3ZSBhcmUgYmV0d2VlbiBiYXNl
cy4KKyAgICAgICAgICAgIGlmIChpbmRleCArIDEgPT0gcnVieVJhbmdlLmVuZEluZGV4KCkpIHsK
KyAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGF1dG8mIG5leHRSdWJ5SXRlbSA9
IGlubGluZUl0ZW1zW2luZGV4ICsgMV07CisgICAgICAgICAgICBpZiAobmV4dFJ1YnlJdGVtLmlz
SW5saW5lQm94U3RhcnQoKSkgeworICAgICAgICAgICAgICAgIEFTU0VSVChuZXh0UnVieUl0ZW0u
bGF5b3V0Qm94KCkuaXNSdWJ5QmFzZSgpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gaW5kZXgg
KyAxOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBydWJ5UmFu
Z2UuZW5kSW5kZXgoKTsKK30KKwogUnVieUZvcm1hdHRpbmdDb250ZXh0OjpSdWJ5Rm9ybWF0dGlu
Z0NvbnRleHQoY29uc3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmIHBhcmVudEZvcm1hdHRpbmdD
b250ZXh0KQogICAgIDogbV9wYXJlbnRGb3JtYXR0aW5nQ29udGV4dChwYXJlbnRGb3JtYXR0aW5n
Q29udGV4dCkKIHsKIH0KIAotdm9pZCBSdWJ5Rm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dElubGlu
ZUF4aXMoY29uc3QgSW5saW5lSXRlbVJhbmdlJiBydWJ5UmFuZ2UsIGNvbnN0IElubGluZUl0ZW1z
JiBpbmxpbmVJdGVtcywgTGluZSYgbGluZSwgSW5saW5lTGF5b3V0VW5pdCBhdmFpbGFibGVXaWR0
aCkKK1J1YnlGb3JtYXR0aW5nQ29udGV4dDo6SW5saW5lTGF5b3V0UmVzdWx0IFJ1YnlGb3JtYXR0
aW5nQ29udGV4dDo6bGF5b3V0SW5saW5lQXhpcyhjb25zdCBJbmxpbmVJdGVtUmFuZ2UmIHJ1YnlS
YW5nZSwgY29uc3QgSW5saW5lSXRlbXMmIGlubGluZUl0ZW1zLCBMaW5lJiBsaW5lLCBJbmxpbmVM
YXlvdXRVbml0IGF2YWlsYWJsZVdpZHRoKQogewotICAgIFVOVVNFRF9QQVJBTShhdmFpbGFibGVX
aWR0aCk7Ci0KICAgICBBU1NFUlQoIXJ1YnlSYW5nZS5pc0VtcHR5KCkpOwogICAgIC8vIFJ1Ynkg
Y29udGFpbmVyIGlubGluZSBpdGVtIGxpc3QgaXMgYXMgZm9sbG93czoKICAgICAvLyBbcnVieSBj
b250YWluZXIgc3RhcnRdW3J1YnkgYmFzZSBzdGFydF1bcnVieSBiYXNlIGNvbnRlbnRdW3J1Ynkg
YmFzZSBlbmRdWy4uLl1bcnVieSBjb250YWluZXIgZW5kXQorICAgIGF1dG8gY3VycmVudEluZGV4
ID0gcnVieVJhbmdlLnN0YXJ0SW5kZXgoKTsKKyAgICB3aGlsZSAoY3VycmVudEluZGV4IDwgcnVi
eVJhbmdlLmVuZEluZGV4KCkpIHsKKyAgICAgICAgYXV0byBjYW5kaWRhdGVDb250ZW50RW5kID0g
bmV4dFdyYXBPcHBvcnR1bml0eVdpdGhpblJ1YnlDb250YWluZXIoY3VycmVudEluZGV4LCBydWJ5
UmFuZ2UsIGlubGluZUl0ZW1zKTsKKyAgICAgICAgYXV0byBjb250ZW50TG9naWNhbFdpZHRoID0g
bG9naWNhV2lkdGhGb3JSdWJ5UmFuZ2UoeyBjdXJyZW50SW5kZXgsIGNhbmRpZGF0ZUNvbnRlbnRF
bmQgfSwgaW5saW5lSXRlbXMsIGxpbmUuY29udGVudExvZ2ljYWxSaWdodCgpKTsKKyAgICAgICAg
YXV0byBzaG91bGRQbGFjZVJ1YnlSYW5nZSA9IGNvbnRlbnRMb2dpY2FsV2lkdGggPD0gYXZhaWxh
YmxlV2lkdGggfHwgIWxpbmUuaGFzQ29udGVudCgpOworICAgICAgICBpZiAoIXNob3VsZFBsYWNl
UnVieVJhbmdlKQorICAgICAgICAgICAgcmV0dXJuIHsgSW5saW5lQ29udGVudEJyZWFrZXI6Oklz
RW5kT2ZMaW5lOjpZZXMsIGN1cnJlbnRJbmRleCAtIHJ1YnlSYW5nZS5zdGFydEluZGV4KCkgfTsK
KyAgICAgICAgcGxhY2VSdWJ5Q29udGVudCh7IGN1cnJlbnRJbmRleCwgY2FuZGlkYXRlQ29udGVu
dEVuZCB9LCBpbmxpbmVJdGVtcywgbGluZSk7CisgICAgICAgIGF2YWlsYWJsZVdpZHRoIC09IGNv
bnRlbnRMb2dpY2FsV2lkdGg7CisgICAgICAgIGN1cnJlbnRJbmRleCA9IGNhbmRpZGF0ZUNvbnRl
bnRFbmQ7CisgICAgfQorICAgIHJldHVybiB7IGF2YWlsYWJsZVdpZHRoID49IDAgPyBJbmxpbmVD
b250ZW50QnJlYWtlcjo6SXNFbmRPZkxpbmU6Ok5vIDogSW5saW5lQ29udGVudEJyZWFrZXI6Oklz
RW5kT2ZMaW5lOjpZZXMsIGN1cnJlbnRJbmRleCAtIHJ1YnlSYW5nZS5zdGFydEluZGV4KCkgfTsK
K30KIAotICAgIGF1dG8mIHJ1YnlDb250YWluZXJTdGFydCA9IGlubGluZUl0ZW1zW3J1YnlSYW5n
ZS5zdGFydEluZGV4KCldOwotICAgIGF1dG8gcnVieUNvbnRhaW5lckVuZEluZGV4ID0gcnVieVJh
bmdlLmVuZEluZGV4KCkgLSAxOwotICAgIEFTU0VSVChydWJ5Q29udGFpbmVyU3RhcnQubGF5b3V0
Qm94KCkuaXNSdWJ5KCkpOwotICAgIGxpbmUuYXBwZW5kKHJ1YnlDb250YWluZXJTdGFydCwgcnVi
eUNvbnRhaW5lclN0YXJ0LnN0eWxlKCksIHsgfSk7Ci0KLSAgICBhdXRvIGJhc2VDb250ZW50SW5k
ZXggPSBydWJ5UmFuZ2Uuc3RhcnRJbmRleCgpICsgMTsKLSAgICB3aGlsZSAoYmFzZUNvbnRlbnRJ
bmRleCA8IHJ1YnlDb250YWluZXJFbmRJbmRleCkgewotICAgICAgICBhdXRvIGhhbmRsZVJ1YnlD
b2x1bW4gPSBbJl0gewotICAgICAgICAgICAgLy8gcnVieSBjb2x1bW46IHJlcHJlc2VudGVkIGJ5
IGEgc2luZ2xlIHJ1YnkgYmFzZSBhbmQgb25lIHJ1YnkgYW5ub3RhdGlvbgotICAgICAgICAgICAg
Ly8gZnJvbSBlYWNoIGludGVybGluZWFyIGFubm90YXRpb24gbGV2ZWwgaW4gaXRzIHJ1Ynkgc2Vn
bWVudC4KLSAgICAgICAgICAgIGF1dG8mIHJ1YnlCYXNlU3RhcnQgPSBpbmxpbmVJdGVtc1tiYXNl
Q29udGVudEluZGV4KytdOwotICAgICAgICAgICAgQVNTRVJUKHJ1YnlCYXNlU3RhcnQubGF5b3V0
Qm94KCkuaXNSdWJ5QmFzZSgpKTsKLSAgICAgICAgICAgIGxpbmUuYXBwZW5kKHJ1YnlCYXNlU3Rh
cnQsIHJ1YnlCYXNlU3RhcnQuc3R5bGUoKSwgeyB9KTsKK3ZvaWQgUnVieUZvcm1hdHRpbmdDb250
ZXh0OjpwbGFjZVJ1YnlDb250ZW50KFdURjo6UmFuZ2U8c2l6ZV90PiBjYW5kaWRhdGVSYW5nZSwg
Y29uc3QgSW5saW5lSXRlbXMmIGlubGluZUl0ZW1zLCBMaW5lJiBsaW5lKQoreworICAgIEFTU0VS
VChjYW5kaWRhdGVSYW5nZS5lbmQoKSA8PSBpbmxpbmVJdGVtcy5zaXplKCkpOworICAgIEFTU0VS
VChpbmxpbmVJdGVtc1tjYW5kaWRhdGVSYW5nZS5iZWdpbigpXS5sYXlvdXRCb3goKS5pc1J1Ynko
KSB8fCBpbmxpbmVJdGVtc1tjYW5kaWRhdGVSYW5nZS5iZWdpbigpXS5sYXlvdXRCb3goKS5pc1J1
YnlCYXNlKCkpOworICAgIGF1dG8mIGZvcm1hdHRpbmdHZW9tZXRyeSA9IHBhcmVudEZvcm1hdHRp
bmdDb250ZXh0KCkuZm9ybWF0dGluZ0dlb21ldHJ5KCk7CiAKLSAgICAgICAgICAgIGJhc2VDb250
ZW50SW5kZXggKz0gbGF5b3V0UnVieUJhc2VJbmxpbmVBeGlzKGxpbmUsIHJ1YnlCYXNlU3RhcnQu
bGF5b3V0Qm94KCksIGJhc2VDb250ZW50SW5kZXgsIGlubGluZUl0ZW1zKTsKKyAgICBhdXRvIGlu
ZGV4ID0gY2FuZGlkYXRlUmFuZ2UuYmVnaW4oKTsKKyAgICB3aGlsZSAoaW5kZXggPCBjYW5kaWRh
dGVSYW5nZS5lbmQoKSkgeworICAgICAgICBhdXRvIGFwcGVuZElubGluZUJveEl0ZW0gPSBbJl0o
YXV0byYgaW5saW5lQm94SXRlbSkgeworICAgICAgICAgICAgQVNTRVJUKGlubGluZUJveEl0ZW0u
aXNJbmxpbmVCb3hTdGFydCgpIHx8IGlubGluZUJveEl0ZW0uaXNJbmxpbmVCb3hFbmQoKSk7Cisg
ICAgICAgICAgICBBU1NFUlQoaW5saW5lQm94SXRlbS5sYXlvdXRCb3goKS5pc1J1YnkoKSB8fCBp
bmxpbmVCb3hJdGVtLmxheW91dEJveCgpLmlzUnVieUJhc2UoKSk7CiAKLSAgICAgICAgICAgIGF1
dG8mIHJ1YnlCYXNlRW5kID0gaW5saW5lSXRlbXNbYmFzZUNvbnRlbnRJbmRleCsrXTsKLSAgICAg
ICAgICAgIEFTU0VSVChydWJ5QmFzZUVuZC5sYXlvdXRCb3goKS5pc1J1YnlCYXNlKCkpOwotICAg
ICAgICAgICAgbGluZS5hcHBlbmQocnVieUJhc2VFbmQsIHJ1YnlCYXNlRW5kLmxheW91dEJveCgp
LnN0eWxlKCksIHsgfSk7CisgICAgICAgICAgICBhdXRvIGxvZ2ljYWxXaWR0aCA9IGZvcm1hdHRp
bmdHZW9tZXRyeS5pbmxpbmVJdGVtV2lkdGgoaW5saW5lQm94SXRlbSwgbGluZS5jb250ZW50TG9n
aWNhbFJpZ2h0KCksIHsgfSk7CisgICAgICAgICAgICBsaW5lLmFwcGVuZChpbmxpbmVCb3hJdGVt
LCBpbmxpbmVCb3hJdGVtLnN0eWxlKCksIGxvZ2ljYWxXaWR0aCk7CisgICAgICAgICAgICArK2lu
ZGV4OwogICAgICAgICB9OwotICAgICAgICBoYW5kbGVSdWJ5Q29sdW1uKCk7Ci0gICAgfQogCi0g
ICAgYXV0byYgcnVieUNvbnRhaW5lckVuZCA9IGlubGluZUl0ZW1zW3J1YnlDb250YWluZXJFbmRJ
bmRleF07Ci0gICAgQVNTRVJUKHJ1YnlDb250YWluZXJFbmQubGF5b3V0Qm94KCkuaXNSdWJ5KCkp
OwotICAgIGxpbmUuYXBwZW5kKHJ1YnlDb250YWluZXJFbmQsIHJ1YnlDb250YWluZXJFbmQuc3R5
bGUoKSwgeyB9KTsKKyAgICAgICAgYXV0byYgcnVieUl0ZW0gPSBpbmxpbmVJdGVtc1tpbmRleF07
CisgICAgICAgIGF1dG8mIHJ1YnlMYXlvdXRCb3ggPSBydWJ5SXRlbS5sYXlvdXRCb3goKTsKKyAg
ICAgICAgQVNTRVJUKHJ1YnlJdGVtLmlzSW5saW5lQm94U3RhcnQoKSB8fCBydWJ5SXRlbS5pc0lu
bGluZUJveEVuZCgpKTsKKworICAgICAgICBpZiAocnVieUxheW91dEJveC5pc1J1YnkoKSkgewor
ICAgICAgICAgICAgYXBwZW5kSW5saW5lQm94SXRlbShydWJ5SXRlbSk7CisgICAgICAgICAgICBB
U1NFUlQocnVieUl0ZW0uaXNJbmxpbmVCb3hTdGFydCgpIHx8IChydWJ5SXRlbS5pc0lubGluZUJv
eEVuZCgpICYmIGluZGV4ID09IGNhbmRpZGF0ZVJhbmdlLmVuZCgpKSk7CisgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAocnVieUxheW91dEJveC5pc1J1YnlCYXNl
KCkpIHsKKyAgICAgICAgICAgIC8vIHJ1YnkgY29sdW1uOiByZXByZXNlbnRlZCBieSBhIHNpbmds
ZSBydWJ5IGJhc2UgYW5kIG9uZSBydWJ5IGFubm90YXRpb24KKyAgICAgICAgICAgIC8vIGZyb20g
ZWFjaCBpbnRlcmxpbmVhciBhbm5vdGF0aW9uIGxldmVsIGluIGl0cyBydWJ5IHNlZ21lbnQuCisg
ICAgICAgICAgICBhcHBlbmRJbmxpbmVCb3hJdGVtKHJ1YnlJdGVtKTsKKyAgICAgICAgICAgIGlm
IChydWJ5SXRlbS5pc0lubGluZUJveFN0YXJ0KCkpCisgICAgICAgICAgICAgICAgaW5kZXggKz0g
bGF5b3V0UnVieUJhc2VJbmxpbmVBeGlzKGxpbmUsIHJ1YnlMYXlvdXRCb3gsIGluZGV4LCBpbmxp
bmVJdGVtcyk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CiB9CiAKIHNpemVfdCBSdWJ5Rm9ybWF0dGluZ0NvbnRl
eHQ6OmxheW91dFJ1YnlCYXNlSW5saW5lQXhpcyhMaW5lJiBsaW5lLCBjb25zdCBCb3gmIHJ1YnlC
YXNlTGF5b3V0Qm94LCBzaXplX3QgcnVieUJhc2VDb250ZW50U3RhcnRJbmRleCwgY29uc3QgSW5s
aW5lSXRlbXMmIGlubGluZUl0ZW1zKQpAQCAtMTc2LDYgKzIxOCwyNyBAQCBJbmxpbmVMYXlvdXRV
bml0IFJ1YnlGb3JtYXR0aW5nQ29udGV4dDo6b3ZlcmhhbmdGb3JBbm5vdGF0aW9uQWZ0ZXIoY29u
c3QgQm94JiBydQogICAgIHJldHVybiB3b3VsZEFubm90YXRpb25PdmVybGFwKCkgPyAwLmYgOiBv
dmVyaGFuZ1ZhbHVlOwogfQogCitzdGQ6Om9wdGlvbmFsPHNpemVfdD4gUnVieUZvcm1hdHRpbmdD
b250ZXh0OjpuZXh0V3JhcE9wcG9ydHVuaXR5KHNpemVfdCBpbmxpbmVJdGVtSW5kZXgsIHN0ZDo6
b3B0aW9uYWw8c2l6ZV90PiBwcmV2aW91c0lubGluZUl0ZW1JbmRleCwgY29uc3QgSW5saW5lSXRl
bVJhbmdlJiBsYXlvdXRSYW5nZSwgY29uc3QgSW5saW5lSXRlbXMmIGlubGluZUl0ZW1zKQorewor
ICAgIGF1dG8mIGlubGluZUl0ZW0gPSBpbmxpbmVJdGVtc1tpbmxpbmVJdGVtSW5kZXhdOworICAg
IEFTU0VSVChpbmxpbmVJdGVtLmlzSW5saW5lQm94U3RhcnQoKSB8fCBpbmxpbmVJdGVtLmlzSW5s
aW5lQm94RW5kKCkpOworCisgICAgYXV0byYgbGF5b3V0Qm94ID0gaW5saW5lSXRlbS5sYXlvdXRC
b3goKTsKKyAgICBhdXRvIHN0YXJ0c1dpdGhSdWJ5SW5saW5lQm94ID0gbGF5b3V0Qm94LmlzUnVi
eSgpIHx8IGxheW91dEJveC5pc1J1YnlCYXNlKCk7CisgICAgaWYgKCFzdGFydHNXaXRoUnVieUlu
bGluZUJveCkgeworICAgICAgICAvLyBUaGlzIGlzIG5vdCBydWJ5IGNvbnRlbnQuCisgICAgICAg
IHJldHVybiB7IH07CisgICAgfQorICAgIGlmIChwcmV2aW91c0lubGluZUl0ZW1JbmRleCAmJiBz
dGFydHNXaXRoUnVieUlubGluZUJveCkgeworICAgICAgICAvLyBUaGVyZSdzIGFsd2F5cyBhIHNv
ZnQgd3JhcCBvcHBvcnR1bml0aXkgYmVmb3JlIDxydWJ5Pi9ydWJ5IGJhc2UuCisgICAgICAgIHJl
dHVybiBpbmxpbmVJdGVtSW5kZXg7CisgICAgfQorICAgIC8vIFNraXAgdG8gdGhlIGVuZCBvZiB0
aGUgcnVieSBjb250YWluZXIuCisgICAgZm9yICg7IGlubGluZUl0ZW1JbmRleCA8IGxheW91dFJh
bmdlLmVuZEluZGV4KCkgJiYgKCFpbmxpbmVJdGVtc1tpbmxpbmVJdGVtSW5kZXhdLmlzSW5saW5l
Qm94RW5kKCkgfHwgIWlubGluZUl0ZW1zW2lubGluZUl0ZW1JbmRleF0ubGF5b3V0Qm94KCkuaXNS
dWJ5KCkpOyArK2lubGluZUl0ZW1JbmRleCkgeyB9CisgICAgQVNTRVJUKGlubGluZUl0ZW1JbmRl
eCA8IGxheW91dFJhbmdlLmVuZEluZGV4KCkpOworICAgIHJldHVybiBpbmxpbmVJdGVtSW5kZXgg
KyAxOworfQorCiB2b2lkIFJ1YnlGb3JtYXR0aW5nQ29udGV4dDo6YXBwbHlSdWJ5QWxpZ24oTGlu
ZSYgbGluZSwgV1RGOjpSYW5nZTxzaXplX3Q+IGJhc2VSdW5SYW5nZSwgY29uc3QgQm94JiBydWJ5
QmFzZUxheW91dEJveCwgSW5saW5lTGF5b3V0VW5pdCBiYXNlQ29udGVudExvZ2ljYWxXaWR0aCkK
IHsKICAgICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXJ1YnkvI2ludGVybGluZWFy
LWlubGluZQpAQCAtMjI4LDYgKzI5MSw1OCBAQCBzdGQ6Om9wdGlvbmFsPGJvb2w+IFJ1YnlGb3Jt
YXR0aW5nQ29udGV4dDo6YW5ub3RhdGlvbk92ZXJsYXBDaGVjayhjb25zdCBJbmxpbmVEaQogICAg
IHJldHVybiB7IH07CiB9CiAKK0lubGluZUxheW91dFVuaXQgUnVieUZvcm1hdHRpbmdDb250ZXh0
Ojpsb2dpY2FXaWR0aEZvclJ1YnlSYW5nZShXVEY6OlJhbmdlPHNpemVfdD4gY2FuZGlkYXRlUmFu
Z2UsIGNvbnN0IElubGluZUl0ZW1zJiBpbmxpbmVJdGVtcywgSW5saW5lTGF5b3V0VW5pdCBsaW5l
Q29udGVudExvZ2ljYWxSaWdodCkgY29uc3QKK3sKKyAgICBBU1NFUlQoY2FuZGlkYXRlUmFuZ2Uu
ZW5kKCkgPD0gaW5saW5lSXRlbXMuc2l6ZSgpKTsKKyAgICBBU1NFUlQoaW5saW5lSXRlbXNbY2Fu
ZGlkYXRlUmFuZ2UuYmVnaW4oKV0ubGF5b3V0Qm94KCkuaXNSdWJ5KCkgfHwgaW5saW5lSXRlbXNb
Y2FuZGlkYXRlUmFuZ2UuYmVnaW4oKV0ubGF5b3V0Qm94KCkuaXNSdWJ5QmFzZSgpKTsKKworICAg
IGF1dG8mIGZvcm1hdHRpbmdHZW9tZXRyeSA9IHBhcmVudEZvcm1hdHRpbmdDb250ZXh0KCkuZm9y
bWF0dGluZ0dlb21ldHJ5KCk7CisgICAgYXV0byBjYW5kaWRhdGVDb250ZW50TG9naWNhbFdpZHRo
ID0gSW5saW5lTGF5b3V0VW5pdCB7IH07CisgICAgYXV0byBpbmRleCA9IGNhbmRpZGF0ZVJhbmdl
LmJlZ2luKCk7CisKKyAgICB3aGlsZSAoaW5kZXggPCBjYW5kaWRhdGVSYW5nZS5lbmQoKSkgewor
ICAgICAgICBhdXRvJiBydWJ5SXRlbSA9IGlubGluZUl0ZW1zW2luZGV4XTsKKyAgICAgICAgYXV0
byYgcnVieUxheW91dEJveCA9IHJ1YnlJdGVtLmxheW91dEJveCgpOworCisgICAgICAgIGlmIChy
dWJ5TGF5b3V0Qm94LmlzUnVieSgpKSB7CisgICAgICAgICAgICBBU1NFUlQocnVieUl0ZW0uaXNJ
bmxpbmVCb3hTdGFydCgpIHx8IHJ1YnlJdGVtLmlzSW5saW5lQm94RW5kKCkpOworICAgICAgICAg
ICAgY2FuZGlkYXRlQ29udGVudExvZ2ljYWxXaWR0aCArPSBmb3JtYXR0aW5nR2VvbWV0cnkuaW5s
aW5lSXRlbVdpZHRoKHJ1YnlJdGVtLCBsaW5lQ29udGVudExvZ2ljYWxSaWdodCArIGNhbmRpZGF0
ZUNvbnRlbnRMb2dpY2FsV2lkdGgsIHsgfSk7CisgICAgICAgICAgICArK2luZGV4OworICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAocnVieUxheW91dEJveC5p
c1J1YnlCYXNlKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVChydWJ5SXRlbS5pc0lubGluZUJveFN0
YXJ0KCkpOworCisgICAgICAgICAgICBhdXRvIGFubm90YXRpb25NYXJnaW5Cb3hXaWR0aCA9IFsm
XSgpIC0+IElubGluZUxheW91dFVuaXQgeworICAgICAgICAgICAgICAgIGlmIChhdXRvKiBhbm5v
dGF0aW9uQm94ID0gcnVieUxheW91dEJveC5hc3NvY2lhdGVkUnVieUFubm90YXRpb25Cb3goKSkK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIElubGluZUxheW91dFVuaXQgeyBwYXJlbnRGb3Jt
YXR0aW5nQ29udGV4dCgpLmdlb21ldHJ5Rm9yQm94KCphbm5vdGF0aW9uQm94KS5tYXJnaW5Cb3hX
aWR0aCgpIH07CisgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgICAgIH07CisK
KyAgICAgICAgICAgIGF1dG8gYmFzZUxvZ2ljYWxXaWR0aCA9IFsmXSB7CisgICAgICAgICAgICAg
ICAgLy8gQmFzZSBjb250ZW50IG5lZWRzIHNwZWNpYWwgaGFuZGxpbmcgd2l0aCB0YWtpbmcgYW5u
b3RhdGlvbiBib3ggaW50byBhY2NvdW50LgorICAgICAgICAgICAgICAgIGF1dG8gbG9naWNhbFdp
ZHRoID0gSW5saW5lTGF5b3V0VW5pdCB7IH07CisgICAgICAgICAgICAgICAgZm9yICg7IGluZGV4
IDwgY2FuZGlkYXRlUmFuZ2UuZW5kKCk7ICsraW5kZXgpIHsKKyAgICAgICAgICAgICAgICAgICAg
YXV0byYgYmFzZUlubGluZUl0ZW0gPSBpbmxpbmVJdGVtc1tpbmRleF07CisgICAgICAgICAgICAg
ICAgICAgIGxvZ2ljYWxXaWR0aCArPSBmb3JtYXR0aW5nR2VvbWV0cnkuaW5saW5lSXRlbVdpZHRo
KGJhc2VJbmxpbmVJdGVtLCBsaW5lQ29udGVudExvZ2ljYWxSaWdodCArIGxvZ2ljYWxXaWR0aCwg
eyB9KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCZiYXNlSW5saW5lSXRlbS5sYXlvdXRCb3go
KSA9PSAmcnVieUxheW91dEJveCAmJiBiYXNlSW5saW5lSXRlbS5pc0lubGluZUJveEVuZCgpKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBFbmQgb2YgYmFzZS4KKyAgICAgICAgICAgICAg
ICAgICAgICAgICsraW5kZXg7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9naWNh
bFdpZHRoOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgIHJldHVybiBJ
bmxpbmVMYXlvdXRVbml0IHsgfTsKKyAgICAgICAgICAgIH07CisgICAgICAgICAgICBjYW5kaWRh
dGVDb250ZW50TG9naWNhbFdpZHRoICs9IHN0ZDo6bWF4KGJhc2VMb2dpY2FsV2lkdGgoKSwgYW5u
b3RhdGlvbk1hcmdpbkJveFdpZHRoKCkpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
IH0KKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIHJldHVybiBjYW5k
aWRhdGVDb250ZW50TG9naWNhbFdpZHRoOworfQorCiB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL3J1YnkvUnVieUZvcm1h
dHRpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9ydWJ5L1J1YnlGb3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IGFhNGUwMTMyNjUzMC4u
NzEzOTljNDhmYTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9ydWJ5L1J1YnlGb3JtYXR0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL3J1YnkvUnVieUZvcm1h
dHRpbmdDb250ZXh0LmgKQEAgLTM1LDcgKzM1LDExIEBAIGNsYXNzIFJ1YnlGb3JtYXR0aW5nQ29u
dGV4dCB7CiBwdWJsaWM6CiAgICAgUnVieUZvcm1hdHRpbmdDb250ZXh0KGNvbnN0IElubGluZUZv
cm1hdHRpbmdDb250ZXh0JiBwYXJlbnRGb3JtYXR0aW5nQ29udGV4dCk7CiAKLSAgICB2b2lkIGxh
eW91dElubGluZUF4aXMoY29uc3QgSW5saW5lSXRlbVJhbmdlJiwgY29uc3QgSW5saW5lSXRlbXMm
LCBMaW5lJiwgSW5saW5lTGF5b3V0VW5pdCBhdmFpbGFibGVXaWR0aCk7CisgICAgc3RydWN0IElu
bGluZUxheW91dFJlc3VsdCB7CisgICAgICAgIElubGluZUNvbnRlbnRCcmVha2VyOjpJc0VuZE9m
TGluZSBpc0VuZE9mTGluZSB7IElubGluZUNvbnRlbnRCcmVha2VyOjpJc0VuZE9mTGluZTo6Tm8g
fTsKKyAgICAgICAgc2l6ZV90IGNvbW1pdHRlZENvdW50IHsgMCB9OworICAgIH07CisgICAgSW5s
aW5lTGF5b3V0UmVzdWx0IGxheW91dElubGluZUF4aXMoY29uc3QgSW5saW5lSXRlbVJhbmdlJiwg
Y29uc3QgSW5saW5lSXRlbXMmLCBMaW5lJiwgSW5saW5lTGF5b3V0VW5pdCBhdmFpbGFibGVXaWR0
aCk7CiAKICAgICBzdHJ1Y3QgT3ZlclVuZGVyIHsKICAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBv
dmVyIHsgMC5mIH07CkBAIC00NywxMCArNTEsMTQgQEAgcHVibGljOgogICAgIElubGluZUxheW91
dFVuaXQgb3ZlcmhhbmdGb3JBbm5vdGF0aW9uQmVmb3JlKGNvbnN0IEJveCYgcnVieUJhc2VMYXlv
dXRCb3gsIHNpemVfdCBydWJ5QmFzZUNvbnRlbnRTdGFydEluZGV4LCBjb25zdCBJbmxpbmVEaXNw
bGF5OjpCb3hlcyYpOwogICAgIElubGluZUxheW91dFVuaXQgb3ZlcmhhbmdGb3JBbm5vdGF0aW9u
QWZ0ZXIoY29uc3QgQm94JiBydWJ5QmFzZUxheW91dEJveCwgc2l6ZV90IHJ1YnlCYXNlQ29udGVu
dEVuZEluZGV4LCBjb25zdCBJbmxpbmVEaXNwbGF5OjpCb3hlcyYpOwogCisgICAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8c2l6ZV90PiBuZXh0V3JhcE9wcG9ydHVuaXR5KHNpemVfdCBpbmxpbmVJdGVt
SW5kZXgsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBwcmV2aW91c0lubGluZUl0ZW1JbmRleCwgY29u
c3QgSW5saW5lSXRlbVJhbmdlJiwgY29uc3QgSW5saW5lSXRlbXMmKTsKKwogcHJpdmF0ZToKICAg
ICBzaXplX3QgbGF5b3V0UnVieUJhc2VJbmxpbmVBeGlzKExpbmUmLCBjb25zdCBCb3gmIHJ1YnlC
YXNlTGF5b3V0Qm94LCBzaXplX3QgcnVieUJhc2VDb250ZW50U3RhcnQsIGNvbnN0IElubGluZUl0
ZW1zJik7CiAgICAgdm9pZCBhcHBseVJ1YnlBbGlnbihMaW5lJiwgV1RGOjpSYW5nZTxzaXplX3Q+
IGJhc2VSdW5SYW5nZSwgY29uc3QgQm94JiBydWJ5QmFzZUxheW91dEJveCwgSW5saW5lTGF5b3V0
VW5pdCBiYXNlQ29udGVudExvZ2ljYWxXaWR0aCk7CiAgICAgc3RkOjpvcHRpb25hbDxib29sPiBh
bm5vdGF0aW9uT3ZlcmxhcENoZWNrKGNvbnN0IElubGluZURpc3BsYXk6OkJveCYsIGNvbnN0IElu
bGluZUxheW91dFJlY3QmIG92ZXJoYW5naW5nUmVjdCkgY29uc3Q7CisgICAgdm9pZCBwbGFjZVJ1
YnlDb250ZW50KFdURjo6UmFuZ2U8c2l6ZV90PiBjYW5kaWRhdGVSYW5nZSwgY29uc3QgSW5saW5l
SXRlbXMmLCBMaW5lJik7CisgICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FXaWR0aEZvclJ1YnlS
YW5nZShXVEY6OlJhbmdlPHNpemVfdD4gY2FuZGlkYXRlUmFuZ2UsIGNvbnN0IElubGluZUl0ZW1z
JiwgSW5saW5lTGF5b3V0VW5pdCBsaW5lQ29udGVudExvZ2ljYWxSaWdodCkgY29uc3Q7CiAKICAg
ICBjb25zdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYgcGFyZW50Rm9ybWF0dGluZ0NvbnRleHQo
KSBjb25zdCB7IHJldHVybiBtX3BhcmVudEZvcm1hdHRpbmdDb250ZXh0OyB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>