<?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>218848</bug_id>
          
          <creation_ts>2020-11-12 06:50:03 -0800</creation_ts>
          <short_desc>[LFC][IFC] Use inline iterator in VisiblePosition::left/rightVisuallyDistinctCandidate</short_desc>
          <delta_ts>2020-11-12 08:41:21 -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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>mifenton</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>1706838</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-11-12 06:50:03 -0800</bug_when>
    <thetext>More iterator</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706839</commentid>
    <comment_count>1</comment_count>
      <attachid>413931</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-11-12 06:54:10 -0800</bug_when>
    <thetext>Created attachment 413931
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706853</commentid>
    <comment_count>2</comment_count>
      <attachid>413931</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-11-12 08:16:58 -0800</bug_when>
    <thetext>Comment on attachment 413931
patch

Nice cleanup!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706856</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-11-12 08:40:41 -0800</bug_when>
    <thetext>Committed r269732: &lt;https://trac.webkit.org/changeset/269732&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 413931.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706857</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-11-12 08:41:21 -0800</bug_when>
    <thetext>&lt;rdar://problem/71328147&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413931</attachid>
            <date>2020-11-12 06:54:10 -0800</date>
            <delta_ts>2020-11-12 08:40:42 -0800</delta_ts>
            <desc>patch</desc>
            <filename>lfc-visually-distinct.patch</filename>
            <type>text/plain</type>
            <size>33410</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlMTU5YmQxZGM1MzUuLmJmZWI4MjJlZWRiNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDQ5IEBACisyMDIwLTExLTEyICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNv
bT4KKworICAgICAgICBbTEZDXVtJRkNdIFVzZSBpbmxpbmUgaXRlcmF0b3IgaW4gVmlzaWJsZVBv
c2l0aW9uOjpsZWZ0L3JpZ2h0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4ODQ4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTGVzcyBkaXJlY3QgSW5saW5lQm94
IGFjY2Vzcy4KKworICAgICAgICBUaGUgcGF0Y2ggYWxzbyBzaW1wbGlmaWVzIHRoZSBpdGVyYXRv
ciBieSByZW1vdmluZyBzZXBhcmF0ZSBMaW5lUnVuSXRlcmF0b3IuIEJhc2UgUnVuSXRlcmF0b3IK
KyAgICAgICAgaXMgdXNlZCBpbnN0ZWFkIGFuZCB0aGUgaW5jb21wYXRpYmxlIHRyYXZlcnNhbCBm
dW5jdGlvbnMgYXJlIGV4cGxpY2l0bHkgaGlkZGVuIGluIFRleHRSdW5JdGVyYXRvci4KKworICAg
ICAgICAqIGVkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZp
c2libGVQb3NpdGlvbjo6bGVmdFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uOjpyaWdodFZpc3VhbGx5RGlzdGluY3RDYW5k
aWRhdGUgY29uc3QpOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnN0YXJ0UG9zaXRpb25Gb3JMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OmVu
ZFBvc2l0aW9uRm9yTGluZSk6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dElu
dGVncmF0aW9uTGluZUl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVn
cmF0aW9uOjpMaW5lSXRlcmF0b3I6OmZpcnN0UnVuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dEludGVncmF0aW9uOjpMaW5lSXRlcmF0b3I6Omxhc3RSdW4gY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmVJdGVyYXRvcjo6bG9naWNhbFN0YXJ0
UnVuV2l0aE5vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246
OkxpbmVJdGVyYXRvcjo6bG9naWNhbEVuZFJ1bldpdGhOb2RlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lSXRlcmF0b3I6OmNsb3Nlc3RSdW5Gb3JQb2lu
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUl0ZXJhdG9yOjpj
bG9zZXN0UnVuRm9yTG9naWNhbExlZnRQb3NpdGlvbik6CisgICAgICAgICogbGF5b3V0L2ludGVn
cmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9yLmg6CisgICAgICAgICogbGF5b3V0
L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlJ1bkl0ZXJhdG9yOjpuZXh0T25MaW5lIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRvcjo6cHJl
dmlvdXNPbkxpbmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246
OlJ1bkl0ZXJhdG9yOjpuZXh0T25MaW5lSWdub3JpbmdMaW5lQnJlYWsgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlJ1bkl0ZXJhdG9yOjpwcmV2aW91c09uTGlu
ZUlnbm9yaW5nTGluZUJyZWFrIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVn
cmF0aW9uOjpSdW5JdGVyYXRvcjo6dHJhdmVyc2VOZXh0T25MaW5lKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRvcjo6dHJhdmVyc2VQcmV2aW91c09uTGlu
ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6UnVuSXRlcmF0b3I6OnRy
YXZlcnNlTmV4dE9uTGluZUlnbm9yaW5nTGluZUJyZWFrKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRvcjo6dHJhdmVyc2VQcmV2aW91c09uTGluZUlnbm9y
aW5nTGluZUJyZWFrKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5l
UnVuSXRlcmF0b3I6OkxpbmVSdW5JdGVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZVJ1bkl0ZXJhdG9yOjp0cmF2ZXJzZU5leHRPbkxpbmUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmVSdW5J
dGVyYXRvcjo6dHJhdmVyc2VQcmV2aW91c09uTGluZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZVJ1bkl0ZXJhdG9yOjp0cmF2ZXJzZU5leHRPbkxp
bmVJZ25vcmluZ0xpbmVCcmVhayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJ
bnRlZ3JhdGlvbjo6TGluZVJ1bkl0ZXJhdG9yOjp0cmF2ZXJzZVByZXZpb3VzT25MaW5lSWdub3Jp
bmdMaW5lQnJlYWspOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRp
b246OmxpbmVSdW4pOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlv
dXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRl
Z3JhdGlvbjo6VGV4dFJ1bkl0ZXJhdG9yOjpnZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0SW50ZWdyYXRpb246OkxpbmVSdW5JdGVyYXRvcjo6TGluZVJ1bkl0ZXJhdG9yKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lUnVuSXRlcmF0
b3I6Om9wZXJhdG9yKyspOiBEZWxldGVkLgorCiAyMDIwLTExLTExICBLaW1tbyBLaW5udW5lbiAg
PGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHVzZXMgb2YgTWFrZUN1cnJl
bnQgZnJvbSBXZWJHTCBpbXBsZW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNp
YmxlUG9zaXRpb24uY3BwCmluZGV4IDk5OGIyMDBhMmQ1Mi4uYWVjYjdmMTFiZDBmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwCkBAIC0zNiw2ICszNiw4IEBA
CiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSW5saW5lUnVuQW5kT2Zmc2V0Lmgi
CiAjaW5jbHVkZSAiSW5saW5lVGV4dEJveC5oIgorI2luY2x1ZGUgIkxheW91dEludGVncmF0aW9u
TGluZUl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5o
IgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJSYW5nZS5oIgogI2luY2x1ZGUgIlJl
bmRlckJsb2NrLmgiCkBAIC0xMjIsMTI0ICsxMjQsMTIzIEBAIFBvc2l0aW9uIFZpc2libGVQb3Np
dGlvbjo6bGVmdFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUoKSBjb25zdAogICAgIFRleHREaXJl
Y3Rpb24gcHJpbWFyeURpcmVjdGlvbiA9IHAucHJpbWFyeURpcmVjdGlvbigpOwogCiAgICAgd2hp
bGUgKHRydWUpIHsKLSAgICAgICAgYXV0byBbYm94LCBvZmZzZXRdID0gcC5pbmxpbmVCb3hBbmRP
ZmZzZXQobV9hZmZpbml0eSwgcHJpbWFyeURpcmVjdGlvbik7Ci0gICAgICAgIGlmICghYm94KQor
ICAgICAgICBhdXRvIFtydW4sIG9mZnNldF0gPSBwLmlubGluZVJ1bkFuZE9mZnNldChtX2FmZmlu
aXR5LCBwcmltYXJ5RGlyZWN0aW9uKTsKKyAgICAgICAgaWYgKCFydW4pCiAgICAgICAgICAgICBy
ZXR1cm4gcHJpbWFyeURpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBwcmV2aW91c1Zp
c3VhbGx5RGlzdGluY3RDYW5kaWRhdGUobV9kZWVwUG9zaXRpb24pIDogbmV4dFZpc3VhbGx5RGlz
dGluY3RDYW5kaWRhdGUobV9kZWVwUG9zaXRpb24pOwogCi0gICAgICAgIFJlbmRlck9iamVjdCog
cmVuZGVyZXIgPSAmYm94LT5yZW5kZXJlcigpOworICAgICAgICBhdXRvKiByZW5kZXJlciA9ICZy
dW4tPnJlbmRlcmVyKCk7CiAKICAgICAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgICAgIGlm
ICgocmVuZGVyZXItPmlzUmVwbGFjZWQoKSB8fCByZW5kZXJlci0+aXNCUigpKSAmJiBvZmZzZXQg
PT0gYm94LT5jYXJldFJpZ2h0bW9zdE9mZnNldCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBi
b3gtPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IHByZXZpb3VzVmlzdWFsbHlEaXN0aW5jdENh
bmRpZGF0ZShtX2RlZXBQb3NpdGlvbikgOiBuZXh0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZSht
X2RlZXBQb3NpdGlvbik7CisgICAgICAgICAgICBpZiAoKHJlbmRlcmVyLT5pc1JlcGxhY2VkKCkg
fHwgcmVuZGVyZXItPmlzQlIoKSkgJiYgb2Zmc2V0ID09IHJ1bi0+cmlnaHRtb3N0Q2FyZXRPZmZz
ZXQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcnVuLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9u
KCkgPyBwcmV2aW91c1Zpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUobV9kZWVwUG9zaXRpb24pIDog
bmV4dFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUobV9kZWVwUG9zaXRpb24pOwogCiAgICAgICAg
ICAgICBpZiAoIXJlbmRlcmVyLT5ub2RlKCkpIHsKLSAgICAgICAgICAgICAgICBib3ggPSBib3gt
PnByZXZpb3VzTGVhZk9uTGluZSgpOwotICAgICAgICAgICAgICAgIGlmICghYm94KQorICAgICAg
ICAgICAgICAgIHJ1bi50cmF2ZXJzZVByZXZpb3VzT25MaW5lKCk7CisgICAgICAgICAgICAgICAg
aWYgKCFydW4pCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwcmltYXJ5RGlyZWN0aW9uID09
IFRleHREaXJlY3Rpb246OkxUUiA/IHByZXZpb3VzVmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZSht
X2RlZXBQb3NpdGlvbikgOiBuZXh0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZShtX2RlZXBQb3Np
dGlvbik7Ci0gICAgICAgICAgICAgICAgcmVuZGVyZXIgPSAmYm94LT5yZW5kZXJlcigpOwotICAg
ICAgICAgICAgICAgIG9mZnNldCA9IGJveC0+Y2FyZXRSaWdodG1vc3RPZmZzZXQoKTsKKyAgICAg
ICAgICAgICAgICByZW5kZXJlciA9ICZydW4tPnJlbmRlcmVyKCk7CisgICAgICAgICAgICAgICAg
b2Zmc2V0ID0gcnVuLT5yaWdodG1vc3RDYXJldE9mZnNldCgpOwogICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBvZmZzZXQgPSBib3gtPmlzTGVm
dFRvUmlnaHREaXJlY3Rpb24oKSA/IHJlbmRlcmVyLT5wcmV2aW91c09mZnNldChvZmZzZXQpIDog
cmVuZGVyZXItPm5leHRPZmZzZXQob2Zmc2V0KTsKKyAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB0
aGlzIG1heSB1bmRlcmZsb3cgdGhlICh1bnNpZ25lZCkgb2Zmc2V0LiBUaGlzIGlzIGZpbmUgYW5k
IGhhbmRsZWQgYmVsb3cuCisgICAgICAgICAgICBvZmZzZXQgPSBydW4tPmlzTGVmdFRvUmlnaHRE
aXJlY3Rpb24oKSA/IHJlbmRlcmVyLT5wcmV2aW91c09mZnNldChvZmZzZXQpIDogcmVuZGVyZXIt
Pm5leHRPZmZzZXQob2Zmc2V0KTsKIAotICAgICAgICAgICAgaW50IGNhcmV0TWluT2Zmc2V0ID0g
Ym94LT5jYXJldE1pbk9mZnNldCgpOwotICAgICAgICAgICAgaW50IGNhcmV0TWF4T2Zmc2V0ID0g
Ym94LT5jYXJldE1heE9mZnNldCgpOworICAgICAgICAgICAgYXV0byBjYXJldE1pbk9mZnNldCA9
IHJ1bi0+bWluaW11bUNhcmV0T2Zmc2V0KCk7CisgICAgICAgICAgICBhdXRvIGNhcmV0TWF4T2Zm
c2V0ID0gcnVuLT5tYXhpbXVtQ2FyZXRPZmZzZXQoKTsKIAogICAgICAgICAgICAgaWYgKG9mZnNl
dCA+IGNhcmV0TWluT2Zmc2V0ICYmIG9mZnNldCA8IGNhcmV0TWF4T2Zmc2V0KQogICAgICAgICAg
ICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICBpZiAoYm94LT5pc0xlZnRUb1JpZ2h0RGlyZWN0
aW9uKCkgPyBvZmZzZXQgPCBjYXJldE1pbk9mZnNldCA6IG9mZnNldCA+IGNhcmV0TWF4T2Zmc2V0
KSB7CisgICAgICAgICAgICBpZiAob2Zmc2V0ICE9IHJ1bi0+bGVmdG1vc3RDYXJldE9mZnNldCgp
KSB7CiAgICAgICAgICAgICAgICAgLy8gT3ZlcnNob3QgdG8gdGhlIGxlZnQuCi0gICAgICAgICAg
ICAgICAgSW5saW5lQm94KiBwcmV2Qm94ID0gYm94LT5wcmV2aW91c0xlYWZPbkxpbmVJZ25vcmlu
Z0xpbmVCcmVhaygpOwotICAgICAgICAgICAgICAgIGlmICghcHJldkJveCkgeworICAgICAgICAg
ICAgICAgIGF1dG8gcHJldmlvdXNSdW4gPSBydW4ucHJldmlvdXNPbkxpbmVJZ25vcmluZ0xpbmVC
cmVhaygpOworICAgICAgICAgICAgICAgIGlmICghcHJldmlvdXNSdW4pIHsKICAgICAgICAgICAg
ICAgICAgICAgUG9zaXRpb24gcG9zaXRpb25PbkxlZnQgPSBwcmltYXJ5RGlyZWN0aW9uID09IFRl
eHREaXJlY3Rpb246OkxUUiA/IHByZXZpb3VzVmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZShtX2Rl
ZXBQb3NpdGlvbikgOiBuZXh0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZShtX2RlZXBQb3NpdGlv
bik7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gYm94T25MZWZ0ID0gcG9zaXRpb25PbkxlZnQu
aW5saW5lQm94QW5kT2Zmc2V0KG1fYWZmaW5pdHksIHByaW1hcnlEaXJlY3Rpb24pLmJveDsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKGJveE9uTGVmdCAmJiAmYm94T25MZWZ0LT5yb290KCkgPT0g
JmJveC0+cm9vdCgpKQorICAgICAgICAgICAgICAgICAgICBhdXRvIHJ1bk9uTGVmdCA9IHBvc2l0
aW9uT25MZWZ0LmlubGluZVJ1bkFuZE9mZnNldChtX2FmZmluaXR5LCBwcmltYXJ5RGlyZWN0aW9u
KS5ydW47CisgICAgICAgICAgICAgICAgICAgIGlmIChydW5PbkxlZnQgJiYgcnVuT25MZWZ0Lmxp
bmUoKSA9PSBydW4ubGluZSgpKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFBvc2l0
aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbk9uTGVmdDsKICAgICAg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAvLyBSZXBvc2l0aW9uIGF0IHRoZSBvdGhl
ciBsb2dpY2FsIHBvc2l0aW9uIGNvcnJlc3BvbmRpbmcgdG8gb3VyIGVkZ2UncyB2aXN1YWwgcG9z
aXRpb24gYW5kIGdvIGZvciBhbm90aGVyIHJvdW5kLgotICAgICAgICAgICAgICAgIGJveCA9IHBy
ZXZCb3g7Ci0gICAgICAgICAgICAgICAgcmVuZGVyZXIgPSAmYm94LT5yZW5kZXJlcigpOwotICAg
ICAgICAgICAgICAgIG9mZnNldCA9IHByZXZCb3gtPmNhcmV0UmlnaHRtb3N0T2Zmc2V0KCk7Cisg
ICAgICAgICAgICAgICAgcnVuID0gcHJldmlvdXNSdW47CisgICAgICAgICAgICAgICAgcmVuZGVy
ZXIgPSAmcnVuLT5yZW5kZXJlcigpOworICAgICAgICAgICAgICAgIG9mZnNldCA9IHByZXZpb3Vz
UnVuLT5yaWdodG1vc3RDYXJldE9mZnNldCgpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBBU1NFUlQob2Zmc2V0ID09IGJveC0+Y2FyZXRM
ZWZ0bW9zdE9mZnNldCgpKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgbGV2ZWwgPSBydW4t
PmJpZGlMZXZlbCgpOworICAgICAgICAgICAgYXV0byBwcmV2aW91c1J1biA9IHJ1bi5wcmV2aW91
c09uTGluZSgpOwogCi0gICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGxldmVsID0gYm94LT5iaWRp
TGV2ZWwoKTsKLSAgICAgICAgICAgIElubGluZUJveCogcHJldkJveCA9IGJveC0+cHJldmlvdXNM
ZWFmT25MaW5lKCk7Ci0KLSAgICAgICAgICAgIGlmIChib3gtPmRpcmVjdGlvbigpID09IHByaW1h
cnlEaXJlY3Rpb24pIHsKLSAgICAgICAgICAgICAgICBpZiAoIXByZXZCb3gpIHsKLSAgICAgICAg
ICAgICAgICAgICAgSW5saW5lQm94KiBsb2dpY2FsU3RhcnQgPSBudWxscHRyOwotICAgICAgICAg
ICAgICAgICAgICBpZiAocHJpbWFyeURpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBi
b3gtPnJvb3QoKS5nZXRMb2dpY2FsU3RhcnRCb3hXaXRoTm9kZShsb2dpY2FsU3RhcnQpIDogYm94
LT5yb290KCkuZ2V0TG9naWNhbEVuZEJveFdpdGhOb2RlKGxvZ2ljYWxTdGFydCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGJveCA9IGxvZ2ljYWxTdGFydDsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJlbmRlcmVyID0gJmJveC0+cmVuZGVyZXIoKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG9mZnNldCA9IHByaW1hcnlEaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gYm94
LT5jYXJldE1pbk9mZnNldCgpIDogYm94LT5jYXJldE1heE9mZnNldCgpOworICAgICAgICAgICAg
aWYgKHJ1bi0+ZGlyZWN0aW9uKCkgPT0gcHJpbWFyeURpcmVjdGlvbikgeworICAgICAgICAgICAg
ICAgIGlmICghcHJldmlvdXNSdW4pIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBsb2dpY2Fs
U3RhcnQgPSAocHJpbWFyeURpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpID8gcnVuLmxp
bmUoKS5sb2dpY2FsU3RhcnRSdW5XaXRoTm9kZSgpIDogcnVuLmxpbmUoKS5sb2dpY2FsRW5kUnVu
V2l0aE5vZGUoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxvZ2ljYWxTdGFydCkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgcnVuID0gbG9naWNhbFN0YXJ0OworICAgICAgICAgICAgICAg
ICAgICAgICAgcmVuZGVyZXIgPSAmcnVuLT5yZW5kZXJlcigpOworICAgICAgICAgICAgICAgICAg
ICAgICAgb2Zmc2V0ID0gcHJpbWFyeURpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBy
dW4tPm1pbmltdW1DYXJldE9mZnNldCgpIDogcnVuLT5tYXhpbXVtQ2FyZXRPZmZzZXQoKTsKICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKHByZXZCb3gtPmJpZGlMZXZlbCgpID49IGxl
dmVsKQorICAgICAgICAgICAgICAgIGlmIChwcmV2aW91c1J1bi0+YmlkaUxldmVsKCkgPj0gbGV2
ZWwpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICAgICAgbGV2ZWwg
PSBwcmV2Qm94LT5iaWRpTGV2ZWwoKTsKKyAgICAgICAgICAgICAgICBsZXZlbCA9IHByZXZpb3Vz
UnVuLT5iaWRpTGV2ZWwoKTsKIAotICAgICAgICAgICAgICAgIElubGluZUJveCogbmV4dEJveCA9
IGJveDsKKyAgICAgICAgICAgICAgICBhdXRvIG5leHRSdW4gPSBydW47CiAgICAgICAgICAgICAg
ICAgZG8gewotICAgICAgICAgICAgICAgICAgICBuZXh0Qm94ID0gbmV4dEJveC0+bmV4dExlYWZP
bkxpbmUoKTsKLSAgICAgICAgICAgICAgICB9IHdoaWxlIChuZXh0Qm94ICYmIG5leHRCb3gtPmJp
ZGlMZXZlbCgpID4gbGV2ZWwpOworICAgICAgICAgICAgICAgICAgICBuZXh0UnVuLnRyYXZlcnNl
TmV4dE9uTGluZSgpOworICAgICAgICAgICAgICAgIH0gd2hpbGUgKG5leHRSdW4gJiYgbmV4dFJ1
bi0+YmlkaUxldmVsKCkgPiBsZXZlbCk7CiAKLSAgICAgICAgICAgICAgICBpZiAobmV4dEJveCAm
JiBuZXh0Qm94LT5iaWRpTGV2ZWwoKSA9PSBsZXZlbCkKKyAgICAgICAgICAgICAgICBpZiAobmV4
dFJ1biAmJiBuZXh0UnVuLT5iaWRpTGV2ZWwoKSA9PSBsZXZlbCkKICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAKLSAgICAgICAgICAgICAgICBib3ggPSBwcmV2Qm94OwotICAgICAgICAgICAg
ICAgIHJlbmRlcmVyID0gJmJveC0+cmVuZGVyZXIoKTsKLSAgICAgICAgICAgICAgICBvZmZzZXQg
PSBib3gtPmNhcmV0UmlnaHRtb3N0T2Zmc2V0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKGJveC0+
ZGlyZWN0aW9uKCkgPT0gcHJpbWFyeURpcmVjdGlvbikKKyAgICAgICAgICAgICAgICBydW4gPSBw
cmV2aW91c1J1bjsKKyAgICAgICAgICAgICAgICByZW5kZXJlciA9ICZydW4tPnJlbmRlcmVyKCk7
CisgICAgICAgICAgICAgICAgb2Zmc2V0ID0gcnVuLT5yaWdodG1vc3RDYXJldE9mZnNldCgpOwor
ICAgICAgICAgICAgICAgIGlmIChydW4tPmRpcmVjdGlvbigpID09IHByaW1hcnlEaXJlY3Rpb24p
CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAgICAgfQogCi0gICAgICAgICAgICB3aGlsZSAocHJldkJveCAmJiAhcHJldkJveC0+
cmVuZGVyZXIoKS5ub2RlKCkpCi0gICAgICAgICAgICAgICAgcHJldkJveCA9IHByZXZCb3gtPnBy
ZXZpb3VzTGVhZk9uTGluZSgpOworICAgICAgICAgICAgd2hpbGUgKHByZXZpb3VzUnVuICYmICFw
cmV2aW91c1J1bi0+cmVuZGVyZXIoKS5ub2RlKCkpCisgICAgICAgICAgICAgICAgcHJldmlvdXNS
dW4udHJhdmVyc2VQcmV2aW91c09uTGluZSgpOwogCi0gICAgICAgICAgICBpZiAocHJldkJveCkg
ewotICAgICAgICAgICAgICAgIGJveCA9IHByZXZCb3g7Ci0gICAgICAgICAgICAgICAgcmVuZGVy
ZXIgPSAmYm94LT5yZW5kZXJlcigpOwotICAgICAgICAgICAgICAgIG9mZnNldCA9IGJveC0+Y2Fy
ZXRSaWdodG1vc3RPZmZzZXQoKTsKLSAgICAgICAgICAgICAgICBpZiAoYm94LT5iaWRpTGV2ZWwo
KSA+IGxldmVsKSB7CisgICAgICAgICAgICBpZiAocHJldmlvdXNSdW4pIHsKKyAgICAgICAgICAg
ICAgICBydW4gPSBwcmV2aW91c1J1bjsKKyAgICAgICAgICAgICAgICByZW5kZXJlciA9ICZydW4t
PnJlbmRlcmVyKCk7CisgICAgICAgICAgICAgICAgb2Zmc2V0ID0gcnVuLT5yaWdodG1vc3RDYXJl
dE9mZnNldCgpOworICAgICAgICAgICAgICAgIGlmIChydW4tPmJpZGlMZXZlbCgpID4gbGV2ZWwp
IHsKICAgICAgICAgICAgICAgICAgICAgZG8gewotICAgICAgICAgICAgICAgICAgICAgICAgcHJl
dkJveCA9IHByZXZCb3gtPnByZXZpb3VzTGVhZk9uTGluZSgpOwotICAgICAgICAgICAgICAgICAg
ICB9IHdoaWxlIChwcmV2Qm94ICYmIHByZXZCb3gtPmJpZGlMZXZlbCgpID4gbGV2ZWwpOworICAg
ICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNSdW4gPSBwcmV2aW91c1J1bi50cmF2ZXJzZVBy
ZXZpb3VzT25MaW5lKCk7CisgICAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKHByZXZpb3VzUnVu
ICYmIHByZXZpb3VzUnVuLT5iaWRpTGV2ZWwoKSA+IGxldmVsKTsKIAotICAgICAgICAgICAgICAg
ICAgICBpZiAoIXByZXZCb3ggfHwgcHJldkJveC0+YmlkaUxldmVsKCkgPCBsZXZlbCkKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKCFwcmV2aW91c1J1biB8fCBwcmV2aW91c1J1bi0+YmlkaUxldmVs
KCkgPCBsZXZlbCkKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8gVHJhaWxp
bmcgZWRnZSBvZiBhIHNlY29uZGFyeSBydW4uIFNldCB0byB0aGUgbGVhZGluZyBlZGdlIG9mIHRo
ZSBlbnRpcmUgcnVuLgogICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHdoaWxlIChJbmxpbmVCb3gqIG5leHRCb3ggPSBib3gtPm5leHRMZWFmT25MaW5l
KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXh0Qm94LT5iaWRpTGV2ZWwoKSA8
IGxldmVsKQorICAgICAgICAgICAgICAgICAgICB3aGlsZSAoYXV0byBuZXh0UnVuID0gcnVuLm5l
eHRPbkxpbmUoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRSdW4tPmJpZGlM
ZXZlbCgpIDwgbGV2ZWwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBib3ggPSBuZXh0Qm94OworICAgICAgICAgICAgICAgICAgICAg
ICAgcnVuID0gbmV4dFJ1bjsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
ICAgICBpZiAoYm94LT5iaWRpTGV2ZWwoKSA9PSBsZXZlbCkKKyAgICAgICAgICAgICAgICAgICAg
aWYgKHJ1bi0+YmlkaUxldmVsKCkgPT0gbGV2ZWwpCiAgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICAgICAgbGV2ZWwgPSBib3gtPmJpZGlMZXZlbCgpOwotICAg
ICAgICAgICAgICAgICAgICB3aGlsZSAoSW5saW5lQm94KiBwcmV2Qm94ID0gYm94LT5wcmV2aW91
c0xlYWZPbkxpbmUoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByZXZCb3gtPmJp
ZGlMZXZlbCgpIDwgbGV2ZWwpCisgICAgICAgICAgICAgICAgICAgIGxldmVsID0gcnVuLT5iaWRp
TGV2ZWwoKTsKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGF1dG8gcHJldmlvdXNSdW4gPSBy
dW4ucHJldmlvdXNPbkxpbmUoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByZXZp
b3VzUnVuLT5iaWRpTGV2ZWwoKSA8IGxldmVsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgYm94ID0gcHJldkJveDsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJ1biA9IHByZXZpb3VzUnVuOwogICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICAgIGlmIChib3gtPmJpZGlMZXZlbCgpID09IGxldmVsKQorICAg
ICAgICAgICAgICAgICAgICBpZiAocnVuLT5iaWRpTGV2ZWwoKSA9PSBsZXZlbCkKICAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBsZXZlbCA9IGJveC0+
YmlkaUxldmVsKCk7CisgICAgICAgICAgICAgICAgICAgIGxldmVsID0gcnVuLT5iaWRpTGV2ZWwo
KTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmVuZGVyZXIgPSAmYm94LT5y
ZW5kZXJlcigpOwotICAgICAgICAgICAgICAgIG9mZnNldCA9IHByaW1hcnlEaXJlY3Rpb24gPT0g
VGV4dERpcmVjdGlvbjo6TFRSID8gYm94LT5jYXJldE1pbk9mZnNldCgpIDogYm94LT5jYXJldE1h
eE9mZnNldCgpOworICAgICAgICAgICAgICAgIHJlbmRlcmVyID0gJnJ1bi0+cmVuZGVyZXIoKTsK
KyAgICAgICAgICAgICAgICBvZmZzZXQgPSBwcmltYXJ5RGlyZWN0aW9uID09IFRleHREaXJlY3Rp
b246OkxUUiA/IHJ1bi0+bWluaW11bUNhcmV0T2Zmc2V0KCkgOiBydW4tPm1heGltdW1DYXJldE9m
ZnNldCgpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAg
LTI4NSwxMjcgKzI4NiwxMjYgQEAgUG9zaXRpb24gVmlzaWJsZVBvc2l0aW9uOjpyaWdodFZpc3Vh
bGx5RGlzdGluY3RDYW5kaWRhdGUoKSBjb25zdAogICAgIFRleHREaXJlY3Rpb24gcHJpbWFyeURp
cmVjdGlvbiA9IHAucHJpbWFyeURpcmVjdGlvbigpOwogCiAgICAgd2hpbGUgKHRydWUpIHsKLSAg
ICAgICAgYXV0byBbYm94LCBvZmZzZXRdID0gcC5pbmxpbmVCb3hBbmRPZmZzZXQobV9hZmZpbml0
eSwgcHJpbWFyeURpcmVjdGlvbik7Ci0gICAgICAgIGlmICghYm94KQorICAgICAgICBhdXRvIFty
dW4sIG9mZnNldF0gPSBwLmlubGluZVJ1bkFuZE9mZnNldChtX2FmZmluaXR5LCBwcmltYXJ5RGly
ZWN0aW9uKTsKKyAgICAgICAgaWYgKCFydW4pCiAgICAgICAgICAgICByZXR1cm4gcHJpbWFyeURp
cmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBuZXh0VmlzdWFsbHlEaXN0aW5jdENhbmRp
ZGF0ZShtX2RlZXBQb3NpdGlvbikgOiBwcmV2aW91c1Zpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUo
bV9kZWVwUG9zaXRpb24pOwogCi0gICAgICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSAmYm94
LT5yZW5kZXJlcigpOworICAgICAgICBhdXRvKiByZW5kZXJlciA9ICZydW4tPnJlbmRlcmVyKCk7
CiAKICAgICAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgICAgIGlmICgocmVuZGVyZXItPmlz
UmVwbGFjZWQoKSB8fCByZW5kZXJlci0+aXNCUigpKSAmJiBvZmZzZXQgPT0gYm94LT5jYXJldExl
ZnRtb3N0T2Zmc2V0KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGJveC0+aXNMZWZ0VG9SaWdo
dERpcmVjdGlvbigpID8gbmV4dFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUobV9kZWVwUG9zaXRp
b24pIDogcHJldmlvdXNWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9uKTsK
KyAgICAgICAgICAgIGlmICgocmVuZGVyZXItPmlzUmVwbGFjZWQoKSB8fCByZW5kZXJlci0+aXNC
UigpKSAmJiBvZmZzZXQgPT0gcnVuLT5sZWZ0bW9zdENhcmV0T2Zmc2V0KCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIHJ1bi0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gbmV4dFZpc3VhbGx5
RGlzdGluY3RDYW5kaWRhdGUobV9kZWVwUG9zaXRpb24pIDogcHJldmlvdXNWaXN1YWxseURpc3Rp
bmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9uKTsKIAogICAgICAgICAgICAgaWYgKCFyZW5kZXJl
ci0+bm9kZSgpKSB7Ci0gICAgICAgICAgICAgICAgYm94ID0gYm94LT5uZXh0TGVhZk9uTGluZSgp
OwotICAgICAgICAgICAgICAgIGlmICghYm94KQorICAgICAgICAgICAgICAgIHJ1bi50cmF2ZXJz
ZU5leHRPbkxpbmUoKTsKKyAgICAgICAgICAgICAgICBpZiAoIXJ1bikKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHByaW1hcnlEaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gbmV4
dFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUobV9kZWVwUG9zaXRpb24pIDogcHJldmlvdXNWaXN1
YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9uKTsKLSAgICAgICAgICAgICAgICBy
ZW5kZXJlciA9ICZib3gtPnJlbmRlcmVyKCk7Ci0gICAgICAgICAgICAgICAgb2Zmc2V0ID0gYm94
LT5jYXJldExlZnRtb3N0T2Zmc2V0KCk7CisgICAgICAgICAgICAgICAgcmVuZGVyZXIgPSAmcnVu
LT5yZW5kZXJlcigpOworICAgICAgICAgICAgICAgIG9mZnNldCA9IHJ1bi0+bGVmdG1vc3RDYXJl
dE9mZnNldCgpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogCi0g
ICAgICAgICAgICBvZmZzZXQgPSBib3gtPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IHJlbmRl
cmVyLT5uZXh0T2Zmc2V0KG9mZnNldCkgOiByZW5kZXJlci0+cHJldmlvdXNPZmZzZXQob2Zmc2V0
KTsKKyAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB0aGlzIG1heSB1bmRlcmZsb3cgdGhlICh1bnNp
Z25lZCkgb2Zmc2V0LiBUaGlzIGlzIGZpbmUgYW5kIGhhbmRsZWQgYmVsb3cuCisgICAgICAgICAg
ICBvZmZzZXQgPSBydW4tPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IHJlbmRlcmVyLT5uZXh0
T2Zmc2V0KG9mZnNldCkgOiByZW5kZXJlci0+cHJldmlvdXNPZmZzZXQob2Zmc2V0KTsKIAotICAg
ICAgICAgICAgaW50IGNhcmV0TWluT2Zmc2V0ID0gYm94LT5jYXJldE1pbk9mZnNldCgpOwotICAg
ICAgICAgICAgaW50IGNhcmV0TWF4T2Zmc2V0ID0gYm94LT5jYXJldE1heE9mZnNldCgpOworICAg
ICAgICAgICAgYXV0byBjYXJldE1pbk9mZnNldCA9IHJ1bi0+bWluaW11bUNhcmV0T2Zmc2V0KCk7
CisgICAgICAgICAgICBhdXRvIGNhcmV0TWF4T2Zmc2V0ID0gcnVuLT5tYXhpbXVtQ2FyZXRPZmZz
ZXQoKTsKIAogICAgICAgICAgICAgaWYgKG9mZnNldCA+IGNhcmV0TWluT2Zmc2V0ICYmIG9mZnNl
dCA8IGNhcmV0TWF4T2Zmc2V0KQogICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAg
ICBpZiAoYm94LT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBvZmZzZXQgPiBjYXJldE1heE9m
ZnNldCA6IG9mZnNldCA8IGNhcmV0TWluT2Zmc2V0KSB7CisgICAgICAgICAgICBpZiAob2Zmc2V0
ICE9IHJ1bi0+cmlnaHRtb3N0Q2FyZXRPZmZzZXQoKSkgewogICAgICAgICAgICAgICAgIC8vIE92
ZXJzaG90IHRvIHRoZSByaWdodC4KLSAgICAgICAgICAgICAgICBJbmxpbmVCb3gqIG5leHRCb3gg
PSBib3gtPm5leHRMZWFmT25MaW5lSWdub3JpbmdMaW5lQnJlYWsoKTsKLSAgICAgICAgICAgICAg
ICBpZiAoIW5leHRCb3gpIHsKKyAgICAgICAgICAgICAgICBhdXRvIG5leHRSdW4gPSBydW4ubmV4
dE9uTGluZUlnbm9yaW5nTGluZUJyZWFrKCk7CisgICAgICAgICAgICAgICAgaWYgKCFuZXh0UnVu
KSB7CiAgICAgICAgICAgICAgICAgICAgIFBvc2l0aW9uIHBvc2l0aW9uT25SaWdodCA9IHByaW1h
cnlEaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gbmV4dFZpc3VhbGx5RGlzdGluY3RD
YW5kaWRhdGUobV9kZWVwUG9zaXRpb24pIDogcHJldmlvdXNWaXN1YWxseURpc3RpbmN0Q2FuZGlk
YXRlKG1fZGVlcFBvc2l0aW9uKTsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBib3hPblJpZ2h0
ID0gcG9zaXRpb25PblJpZ2h0LmlubGluZUJveEFuZE9mZnNldChtX2FmZmluaXR5LCBwcmltYXJ5
RGlyZWN0aW9uKS5ib3g7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChib3hPblJpZ2h0ICYmICZi
b3hPblJpZ2h0LT5yb290KCkgPT0gJmJveC0+cm9vdCgpKQorICAgICAgICAgICAgICAgICAgICBh
dXRvIHJ1bk9uUmlnaHQgPSBwb3NpdGlvbk9uUmlnaHQuaW5saW5lUnVuQW5kT2Zmc2V0KG1fYWZm
aW5pdHksIHByaW1hcnlEaXJlY3Rpb24pLnJ1bjsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJ1
bk9uUmlnaHQgJiYgcnVuT25SaWdodC5saW5lKCkgPT0gcnVuLmxpbmUoKSkKICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBQb3NpdGlvbigpOwogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gcG9zaXRpb25PblJpZ2h0OwogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAg
IC8vIFJlcG9zaXRpb24gYXQgdGhlIG90aGVyIGxvZ2ljYWwgcG9zaXRpb24gY29ycmVzcG9uZGlu
ZyB0byBvdXIgZWRnZSdzIHZpc3VhbCBwb3NpdGlvbiBhbmQgZ28gZm9yIGFub3RoZXIgcm91bmQu
Ci0gICAgICAgICAgICAgICAgYm94ID0gbmV4dEJveDsKLSAgICAgICAgICAgICAgICByZW5kZXJl
ciA9ICZib3gtPnJlbmRlcmVyKCk7Ci0gICAgICAgICAgICAgICAgb2Zmc2V0ID0gbmV4dEJveC0+
Y2FyZXRMZWZ0bW9zdE9mZnNldCgpOworICAgICAgICAgICAgICAgIHJ1biA9IG5leHRSdW47Cisg
ICAgICAgICAgICAgICAgcmVuZGVyZXIgPSAmcnVuLT5yZW5kZXJlcigpOworICAgICAgICAgICAg
ICAgIG9mZnNldCA9IG5leHRSdW4tPmxlZnRtb3N0Q2FyZXRPZmZzZXQoKTsKICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgQVNTRVJUKG9mZnNl
dCA9PSBib3gtPmNhcmV0UmlnaHRtb3N0T2Zmc2V0KCkpOwotCi0gICAgICAgICAgICB1bnNpZ25l
ZCBjaGFyIGxldmVsID0gYm94LT5iaWRpTGV2ZWwoKTsKLSAgICAgICAgICAgIElubGluZUJveCog
bmV4dEJveCA9IGJveC0+bmV4dExlYWZPbkxpbmUoKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNo
YXIgbGV2ZWwgPSBydW4tPmJpZGlMZXZlbCgpOworICAgICAgICAgICAgYXV0byBuZXh0UnVuID0g
cnVuLm5leHRPbkxpbmUoKTsKIAotICAgICAgICAgICAgaWYgKGJveC0+ZGlyZWN0aW9uKCkgPT0g
cHJpbWFyeURpcmVjdGlvbikgewotICAgICAgICAgICAgICAgIGlmICghbmV4dEJveCkgewotICAg
ICAgICAgICAgICAgICAgICBJbmxpbmVCb3gqIGxvZ2ljYWxFbmQgPSBudWxscHRyOwotICAgICAg
ICAgICAgICAgICAgICBpZiAocHJpbWFyeURpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIg
PyBib3gtPnJvb3QoKS5nZXRMb2dpY2FsRW5kQm94V2l0aE5vZGUobG9naWNhbEVuZCkgOiBib3gt
PnJvb3QoKS5nZXRMb2dpY2FsU3RhcnRCb3hXaXRoTm9kZShsb2dpY2FsRW5kKSkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgYm94ID0gbG9naWNhbEVuZDsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHJlbmRlcmVyID0gJmJveC0+cmVuZGVyZXIoKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IG9mZnNldCA9IHByaW1hcnlEaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gYm94LT5j
YXJldE1heE9mZnNldCgpIDogYm94LT5jYXJldE1pbk9mZnNldCgpOworICAgICAgICAgICAgaWYg
KHJ1bi0+ZGlyZWN0aW9uKCkgPT0gcHJpbWFyeURpcmVjdGlvbikgeworICAgICAgICAgICAgICAg
IGlmICghbmV4dFJ1bikgeworICAgICAgICAgICAgICAgICAgICBhdXRvIGxvZ2ljYWxFbmQgPSBw
cmltYXJ5RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUiA/IHJ1bi5saW5lKCkubG9naWNh
bEVuZFJ1bldpdGhOb2RlKCkgOiBydW4ubGluZSgpLmxvZ2ljYWxTdGFydFJ1bldpdGhOb2RlKCk7
CisgICAgICAgICAgICAgICAgICAgIGlmIChsb2dpY2FsRW5kKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBydW4gPSBsb2dpY2FsRW5kOworICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVy
ZXIgPSAmcnVuLT5yZW5kZXJlcigpOworICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ID0g
cHJpbWFyeURpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBydW4tPm1heGltdW1DYXJl
dE9mZnNldCgpIDogcnVuLT5taW5pbXVtQ2FyZXRPZmZzZXQoKTsKICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAKLSAg
ICAgICAgICAgICAgICBpZiAobmV4dEJveC0+YmlkaUxldmVsKCkgPj0gbGV2ZWwpCisgICAgICAg
ICAgICAgICAgaWYgKG5leHRSdW4tPmJpZGlMZXZlbCgpID49IGxldmVsKQogICAgICAgICAgICAg
ICAgICAgICBicmVhazsKIAotICAgICAgICAgICAgICAgIGxldmVsID0gbmV4dEJveC0+YmlkaUxl
dmVsKCk7CisgICAgICAgICAgICAgICAgbGV2ZWwgPSBuZXh0UnVuLT5iaWRpTGV2ZWwoKTsKIAot
ICAgICAgICAgICAgICAgIElubGluZUJveCogcHJldkJveCA9IGJveDsKKyAgICAgICAgICAgICAg
ICBhdXRvIHByZXZpb3VzUnVuID0gcnVuOwogICAgICAgICAgICAgICAgIGRvIHsKLSAgICAgICAg
ICAgICAgICAgICAgcHJldkJveCA9IHByZXZCb3gtPnByZXZpb3VzTGVhZk9uTGluZSgpOwotICAg
ICAgICAgICAgICAgIH0gd2hpbGUgKHByZXZCb3ggJiYgcHJldkJveC0+YmlkaUxldmVsKCkgPiBs
ZXZlbCk7CisgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzUnVuLnRyYXZlcnNlUHJldmlvdXNP
bkxpbmUoKTsKKyAgICAgICAgICAgICAgICB9IHdoaWxlIChwcmV2aW91c1J1biAmJiBwcmV2aW91
c1J1bi0+YmlkaUxldmVsKCkgPiBsZXZlbCk7CiAKLSAgICAgICAgICAgICAgICBpZiAocHJldkJv
eCAmJiBwcmV2Qm94LT5iaWRpTGV2ZWwoKSA9PSBsZXZlbCkgICAvLyBGb3IgZXhhbXBsZSwgYWJj
IEZFRCAxMjMgXiBDQkEKKyAgICAgICAgICAgICAgICBpZiAocHJldmlvdXNSdW4gJiYgcHJldmlv
dXNSdW4tPmJpZGlMZXZlbCgpID09IGxldmVsKSAvLyBGb3IgZXhhbXBsZSwgYWJjIEZFRCAxMjMg
XiBDQkEKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgICAgICAvLyBG
b3IgZXhhbXBsZSwgYWJjIDEyMyBeIENCQSBvciAxMjMgXiBDQkEgYWJjCi0gICAgICAgICAgICAg
ICAgYm94ID0gbmV4dEJveDsKLSAgICAgICAgICAgICAgICByZW5kZXJlciA9ICZib3gtPnJlbmRl
cmVyKCk7Ci0gICAgICAgICAgICAgICAgb2Zmc2V0ID0gYm94LT5jYXJldExlZnRtb3N0T2Zmc2V0
KCk7Ci0gICAgICAgICAgICAgICAgaWYgKGJveC0+ZGlyZWN0aW9uKCkgPT0gcHJpbWFyeURpcmVj
dGlvbikKKyAgICAgICAgICAgICAgICBydW4gPSBuZXh0UnVuOworICAgICAgICAgICAgICAgIHJl
bmRlcmVyID0gJnJ1bi0+cmVuZGVyZXIoKTsKKyAgICAgICAgICAgICAgICBvZmZzZXQgPSBydW4t
PmxlZnRtb3N0Q2FyZXRPZmZzZXQoKTsKKyAgICAgICAgICAgICAgICBpZiAocnVuLT5kaXJlY3Rp
b24oKSA9PSBwcmltYXJ5RGlyZWN0aW9uKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgd2hp
bGUgKG5leHRCb3ggJiYgIW5leHRCb3gtPnJlbmRlcmVyKCkubm9kZSgpKQotICAgICAgICAgICAg
ICAgIG5leHRCb3ggPSBuZXh0Qm94LT5uZXh0TGVhZk9uTGluZSgpOworICAgICAgICAgICAgd2hp
bGUgKG5leHRSdW4gJiYgIW5leHRSdW4tPnJlbmRlcmVyKCkubm9kZSgpKQorICAgICAgICAgICAg
ICAgIG5leHRSdW4udHJhdmVyc2VOZXh0T25MaW5lKCk7CiAKLSAgICAgICAgICAgIGlmIChuZXh0
Qm94KSB7Ci0gICAgICAgICAgICAgICAgYm94ID0gbmV4dEJveDsKLSAgICAgICAgICAgICAgICBy
ZW5kZXJlciA9ICZib3gtPnJlbmRlcmVyKCk7Ci0gICAgICAgICAgICAgICAgb2Zmc2V0ID0gYm94
LT5jYXJldExlZnRtb3N0T2Zmc2V0KCk7CisgICAgICAgICAgICBpZiAobmV4dFJ1bikgeworICAg
ICAgICAgICAgICAgIHJ1biA9IG5leHRSdW47CisgICAgICAgICAgICAgICAgcmVuZGVyZXIgPSAm
cnVuLT5yZW5kZXJlcigpOworICAgICAgICAgICAgICAgIG9mZnNldCA9IHJ1bi0+bGVmdG1vc3RD
YXJldE9mZnNldCgpOwogCi0gICAgICAgICAgICAgICAgaWYgKGJveC0+YmlkaUxldmVsKCkgPiBs
ZXZlbCkgeworICAgICAgICAgICAgICAgIGlmIChydW4tPmJpZGlMZXZlbCgpID4gbGV2ZWwpIHsK
ICAgICAgICAgICAgICAgICAgICAgZG8gewotICAgICAgICAgICAgICAgICAgICAgICAgbmV4dEJv
eCA9IG5leHRCb3gtPm5leHRMZWFmT25MaW5lKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0gd2hp
bGUgKG5leHRCb3ggJiYgbmV4dEJveC0+YmlkaUxldmVsKCkgPiBsZXZlbCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBuZXh0UnVuLnRyYXZlcnNlTmV4dE9uTGluZSgpOworICAgICAgICAgICAg
ICAgICAgICB9IHdoaWxlIChuZXh0UnVuICYmIG5leHRSdW4tPmJpZGlMZXZlbCgpID4gbGV2ZWwp
OwogCi0gICAgICAgICAgICAgICAgICAgIGlmICghbmV4dEJveCB8fCBuZXh0Qm94LT5iaWRpTGV2
ZWwoKSA8IGxldmVsKQorICAgICAgICAgICAgICAgICAgICBpZiAoIW5leHRSdW4gfHwgbmV4dFJ1
bi0+YmlkaUxldmVsKCkgPCBsZXZlbCkKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAg
ICAgLy8gVHJhaWxpbmcgZWRnZSBvZiBhIHNlY29uZGFyeSBydW4uIFNldCB0byB0aGUgbGVhZGlu
ZyBlZGdlIG9mIHRoZSBlbnRpcmUgcnVuLgogICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7
Ci0gICAgICAgICAgICAgICAgICAgIHdoaWxlIChJbmxpbmVCb3gqIHByZXZCb3ggPSBib3gtPnBy
ZXZpb3VzTGVhZk9uTGluZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJldkJv
eC0+YmlkaUxldmVsKCkgPCBsZXZlbCkKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGF1dG8g
cHJldmlvdXNSdW4gPSBydW4ucHJldmlvdXNPbkxpbmUoKSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKHByZXZpb3VzUnVuLT5iaWRpTGV2ZWwoKSA8IGxldmVsKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgYm94ID0gcHJl
dkJveDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJ1biA9IHByZXZpb3VzUnVuOwogICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGlmIChib3gtPmJpZGlMZXZlbCgp
ID09IGxldmVsKQorICAgICAgICAgICAgICAgICAgICBpZiAocnVuLT5iaWRpTGV2ZWwoKSA9PSBs
ZXZlbCkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAg
ICBsZXZlbCA9IGJveC0+YmlkaUxldmVsKCk7Ci0gICAgICAgICAgICAgICAgICAgIHdoaWxlIChJ
bmxpbmVCb3gqIG5leHRCb3ggPSBib3gtPm5leHRMZWFmT25MaW5lKCkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChuZXh0Qm94LT5iaWRpTGV2ZWwoKSA8IGxldmVsKQorICAgICAgICAg
ICAgICAgICAgICBsZXZlbCA9IHJ1bi0+YmlkaUxldmVsKCk7CisgICAgICAgICAgICAgICAgICAg
IHdoaWxlIChhdXRvIG5leHRSdW4gPSBydW4ubmV4dE9uTGluZSgpKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAobmV4dFJ1bi0+YmlkaUxldmVsKCkgPCBsZXZlbCkKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJveCA9IG5l
eHRCb3g7CisgICAgICAgICAgICAgICAgICAgICAgICBydW4gPSBuZXh0UnVuOwogICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGlmIChib3gtPmJpZGlMZXZlbCgpID09
IGxldmVsKQorICAgICAgICAgICAgICAgICAgICBpZiAocnVuLT5iaWRpTGV2ZWwoKSA9PSBsZXZl
bCkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBs
ZXZlbCA9IGJveC0+YmlkaUxldmVsKCk7CisgICAgICAgICAgICAgICAgICAgIGxldmVsID0gcnVu
LT5iaWRpTGV2ZWwoKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmVuZGVy
ZXIgPSAmYm94LT5yZW5kZXJlcigpOwotICAgICAgICAgICAgICAgIG9mZnNldCA9IHByaW1hcnlE
aXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gYm94LT5jYXJldE1heE9mZnNldCgpIDog
Ym94LT5jYXJldE1pbk9mZnNldCgpOworICAgICAgICAgICAgICAgIHJlbmRlcmVyID0gJnJ1bi0+
cmVuZGVyZXIoKTsKKyAgICAgICAgICAgICAgICBvZmZzZXQgPSBwcmltYXJ5RGlyZWN0aW9uID09
IFRleHREaXJlY3Rpb246OkxUUiA/IHJ1bi0+bWF4aW11bUNhcmV0T2Zmc2V0KCkgOiBydW4tPm1p
bmltdW1DYXJldE9mZnNldCgpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAppbmRleCA4YWZh
YjM0ZmQxMmIuLmU5NmUxNDFjN2Q2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9WaXNpYmxlVW5pdHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVu
aXRzLmNwcApAQCAtNzkwLDcgKzc5MCw3IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gc3RhcnRQ
b3NpdGlvbkZvckxpbmUoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBjLCBMaW5lRW5kcG9pCiAgICAg
fQogCiAgICAgTm9kZSogc3RhcnROb2RlOwotICAgIExheW91dEludGVncmF0aW9uOjpMaW5lUnVu
SXRlcmF0b3Igc3RhcnRSdW47CisgICAgTGF5b3V0SW50ZWdyYXRpb246OlJ1bkl0ZXJhdG9yIHN0
YXJ0UnVuOwogICAgIGlmIChtb2RlID09IFVzZUxvZ2ljYWxPcmRlcmluZykgewogICAgICAgICBz
dGFydFJ1biA9IGxpbmUubG9naWNhbFN0YXJ0UnVuV2l0aE5vZGUoKTsKICAgICAgICAgaWYgKCFz
dGFydFJ1bikKQEAgLTg2NSw3ICs4NjUsNyBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIGVuZFBv
c2l0aW9uRm9yTGluZShjb25zdCBWaXNpYmxlUG9zaXRpb24mIGMsIExpbmVFbmRwb2ludAogICAg
IH0KIAogICAgIE5vZGUqIGVuZE5vZGU7Ci0gICAgTGF5b3V0SW50ZWdyYXRpb246OkxpbmVSdW5J
dGVyYXRvciBlbmRSdW47CisgICAgTGF5b3V0SW50ZWdyYXRpb246OlJ1bkl0ZXJhdG9yIGVuZFJ1
bjsKICAgICBpZiAobW9kZSA9PSBVc2VMb2dpY2FsT3JkZXJpbmcpIHsKICAgICAgICAgZW5kUnVu
ID0gbGluZS5sb2dpY2FsRW5kUnVuV2l0aE5vZGUoKTsKICAgICAgICAgaWYgKCFlbmRSdW4pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdy
YXRpb25MaW5lSXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9u
L0xheW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9yLmNwcAppbmRleCBlNzE3ZWVmNGRmNWUuLmY3
Mzg0YmM4NDgwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9u
L0xheW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0b3IuY3BwCkBAIC04
MSwyOCArODEsMjggQEAgYm9vbCBMaW5lSXRlcmF0b3I6Om9wZXJhdG9yPT0oY29uc3QgTGluZUl0
ZXJhdG9yJiBvdGhlcikgY29uc3QKICAgICB9KTsKIH0KIAotTGluZVJ1bkl0ZXJhdG9yIExpbmVJ
dGVyYXRvcjo6Zmlyc3RSdW4oKSBjb25zdAorUnVuSXRlcmF0b3IgTGluZUl0ZXJhdG9yOjpmaXJz
dFJ1bigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9saW5lLm1fcGF0aFZh
cmlhbnQsIFtdKGF1dG8mIHBhdGgpIC0+IFJ1bkl0ZXJhdG9yIHsKICAgICAgICAgcmV0dXJuIHsg
cGF0aC5maXJzdFJ1bigpIH07CiAgICAgfSk7CiB9CiAKLUxpbmVSdW5JdGVyYXRvciBMaW5lSXRl
cmF0b3I6Omxhc3RSdW4oKSBjb25zdAorUnVuSXRlcmF0b3IgTGluZUl0ZXJhdG9yOjpsYXN0UnVu
KCkgY29uc3QKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX2xpbmUubV9wYXRoVmFyaWFu
dCwgW10oYXV0byYgcGF0aCkgLT4gUnVuSXRlcmF0b3IgewogICAgICAgICByZXR1cm4geyBwYXRo
Lmxhc3RSdW4oKSB9OwogICAgIH0pOwogfQogCi1MaW5lUnVuSXRlcmF0b3IgTGluZUl0ZXJhdG9y
Ojpsb2dpY2FsU3RhcnRSdW5XaXRoTm9kZSgpIGNvbnN0CitSdW5JdGVyYXRvciBMaW5lSXRlcmF0
b3I6OmxvZ2ljYWxTdGFydFJ1bldpdGhOb2RlKCkgY29uc3QKIHsKICAgICByZXR1cm4gV1RGOjpz
d2l0Y2hPbihtX2xpbmUubV9wYXRoVmFyaWFudCwgW10oYXV0byYgcGF0aCkgLT4gUnVuSXRlcmF0
b3IgewogICAgICAgICByZXR1cm4geyBwYXRoLmxvZ2ljYWxTdGFydFJ1bldpdGhOb2RlKCkgfTsK
ICAgICB9KTsKIH0KIAotTGluZVJ1bkl0ZXJhdG9yIExpbmVJdGVyYXRvcjo6bG9naWNhbEVuZFJ1
bldpdGhOb2RlKCkgY29uc3QKK1J1bkl0ZXJhdG9yIExpbmVJdGVyYXRvcjo6bG9naWNhbEVuZFJ1
bldpdGhOb2RlKCkgY29uc3QKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX2xpbmUubV9w
YXRoVmFyaWFudCwgW10oYXV0byYgcGF0aCkgLT4gUnVuSXRlcmF0b3IgewogICAgICAgICByZXR1
cm4geyBwYXRoLmxvZ2ljYWxFbmRSdW5XaXRoTm9kZSgpIH07CkBAIC0xMjksMTQgKzEyOSwxNCBA
QCBMaW5lSXRlcmF0b3IgbGFzdExpbmVGb3IoY29uc3QgUmVuZGVyQmxvY2tGbG93JiBmbG93KQog
ICAgIHJldHVybiB7IExpbmVJdGVyYXRvckxlZ2FjeVBhdGggeyBmbG93Lmxhc3RSb290Qm94KCkg
fSB9OwogfQogCi1MaW5lUnVuSXRlcmF0b3IgTGluZUl0ZXJhdG9yOjpjbG9zZXN0UnVuRm9yUG9p
bnQoY29uc3QgSW50UG9pbnQmIHBvaW50SW5Db250ZW50cywgYm9vbCBlZGl0YWJsZU9ubHkpCitS
dW5JdGVyYXRvciBMaW5lSXRlcmF0b3I6OmNsb3Nlc3RSdW5Gb3JQb2ludChjb25zdCBJbnRQb2lu
dCYgcG9pbnRJbkNvbnRlbnRzLCBib29sIGVkaXRhYmxlT25seSkKIHsKICAgICBpZiAoYXRFbmQo
KSkKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICByZXR1cm4gY2xvc2VzdFJ1bkZvckxvZ2ljYWxM
ZWZ0UG9zaXRpb24obV9saW5lLmlzSG9yaXpvbnRhbCgpID8gcG9pbnRJbkNvbnRlbnRzLngoKSA6
IHBvaW50SW5Db250ZW50cy55KCksIGVkaXRhYmxlT25seSk7CiB9CiAKLUxpbmVSdW5JdGVyYXRv
ciBMaW5lSXRlcmF0b3I6OmNsb3Nlc3RSdW5Gb3JMb2dpY2FsTGVmdFBvc2l0aW9uKGludCBsZWZ0
UG9zaXRpb24sIGJvb2wgZWRpdGFibGVPbmx5KQorUnVuSXRlcmF0b3IgTGluZUl0ZXJhdG9yOjpj
bG9zZXN0UnVuRm9yTG9naWNhbExlZnRQb3NpdGlvbihpbnQgbGVmdFBvc2l0aW9uLCBib29sIGVk
aXRhYmxlT25seSkKIHsKICAgICBhdXRvIGlzRWRpdGFibGUgPSBbJl0oYXV0byBydW4pCiAgICAg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dElu
dGVncmF0aW9uTGluZUl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRp
b24vTGF5b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0b3IuaAppbmRleCA5ODQ2MDAzMTExZTcuLjM1
NjYyYzFhYjJmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9u
L0xheW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9yLmgKQEAgLTM0LDgg
KzM0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIExheW91dEludGVncmF0aW9u
IHsKIAogY2xhc3MgTGluZUl0ZXJhdG9yOwotY2xhc3MgTGluZVJ1bkl0ZXJhdG9yOwogY2xhc3Mg
UGF0aEl0ZXJhdG9yOworY2xhc3MgUnVuSXRlcmF0b3I7CiAKIHN0cnVjdCBFbmRMaW5lSXRlcmF0
b3IgeyB9OwogCkBAIC0xMDQsMTIgKzEwNCwxMiBAQCBwdWJsaWM6CiAKICAgICBib29sIGF0RW5k
KCkgY29uc3Q7CiAKLSAgICBMaW5lUnVuSXRlcmF0b3IgZmlyc3RSdW4oKSBjb25zdDsKLSAgICBM
aW5lUnVuSXRlcmF0b3IgbGFzdFJ1bigpIGNvbnN0OwotICAgIExpbmVSdW5JdGVyYXRvciBsb2dp
Y2FsU3RhcnRSdW5XaXRoTm9kZSgpIGNvbnN0OwotICAgIExpbmVSdW5JdGVyYXRvciBsb2dpY2Fs
RW5kUnVuV2l0aE5vZGUoKSBjb25zdDsKLSAgICBMaW5lUnVuSXRlcmF0b3IgY2xvc2VzdFJ1bkZv
clBvaW50KGNvbnN0IEludFBvaW50JiBwb2ludEluQ29udGVudHMsIGJvb2wgZWRpdGFibGVPbmx5
KTsKLSAgICBMaW5lUnVuSXRlcmF0b3IgY2xvc2VzdFJ1bkZvckxvZ2ljYWxMZWZ0UG9zaXRpb24o
aW50IHBvc2l0aW9uLCBib29sIGVkaXRhYmxlT25seSA9IGZhbHNlKTsKKyAgICBSdW5JdGVyYXRv
ciBmaXJzdFJ1bigpIGNvbnN0OworICAgIFJ1bkl0ZXJhdG9yIGxhc3RSdW4oKSBjb25zdDsKKyAg
ICBSdW5JdGVyYXRvciBsb2dpY2FsU3RhcnRSdW5XaXRoTm9kZSgpIGNvbnN0OworICAgIFJ1bkl0
ZXJhdG9yIGxvZ2ljYWxFbmRSdW5XaXRoTm9kZSgpIGNvbnN0OworICAgIFJ1bkl0ZXJhdG9yIGNs
b3Nlc3RSdW5Gb3JQb2ludChjb25zdCBJbnRQb2ludCYgcG9pbnRJbkNvbnRlbnRzLCBib29sIGVk
aXRhYmxlT25seSk7CisgICAgUnVuSXRlcmF0b3IgY2xvc2VzdFJ1bkZvckxvZ2ljYWxMZWZ0UG9z
aXRpb24oaW50IHBvc2l0aW9uLCBib29sIGVkaXRhYmxlT25seSA9IGZhbHNlKTsKIAogcHJpdmF0
ZToKICAgICBQYXRoTGluZSBtX2xpbmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5j
cHAKaW5kZXggZDgyNWIxODE4MDliLi44MmMyMzQ4MGZlMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRp
b25SdW5JdGVyYXRvci5jcHAKQEAgLTY0LDI0ICs2NCwyNCBAQCB2b2lkIFJ1bkl0ZXJhdG9yOjpz
ZXRBdEVuZCgpCiAgICAgfSk7CiB9CiAKLUxpbmVSdW5JdGVyYXRvciBSdW5JdGVyYXRvcjo6bmV4
dE9uTGluZSgpIGNvbnN0CitSdW5JdGVyYXRvciBSdW5JdGVyYXRvcjo6bmV4dE9uTGluZSgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIExpbmVSdW5JdGVyYXRvcigqdGhpcykudHJhdmVyc2VOZXh0T25M
aW5lKCk7CisgICAgcmV0dXJuIFJ1bkl0ZXJhdG9yKCp0aGlzKS50cmF2ZXJzZU5leHRPbkxpbmUo
KTsKIH0KIAotTGluZVJ1bkl0ZXJhdG9yIFJ1bkl0ZXJhdG9yOjpwcmV2aW91c09uTGluZSgpIGNv
bnN0CitSdW5JdGVyYXRvciBSdW5JdGVyYXRvcjo6cHJldmlvdXNPbkxpbmUoKSBjb25zdAogewot
ICAgIHJldHVybiBMaW5lUnVuSXRlcmF0b3IoKnRoaXMpLnRyYXZlcnNlUHJldmlvdXNPbkxpbmUo
KTsKKyAgICByZXR1cm4gUnVuSXRlcmF0b3IoKnRoaXMpLnRyYXZlcnNlUHJldmlvdXNPbkxpbmUo
KTsKIH0KIAotTGluZVJ1bkl0ZXJhdG9yIFJ1bkl0ZXJhdG9yOjpuZXh0T25MaW5lSWdub3JpbmdM
aW5lQnJlYWsoKSBjb25zdAorUnVuSXRlcmF0b3IgUnVuSXRlcmF0b3I6Om5leHRPbkxpbmVJZ25v
cmluZ0xpbmVCcmVhaygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIExpbmVSdW5JdGVyYXRvcigqdGhp
cykudHJhdmVyc2VOZXh0T25MaW5lSWdub3JpbmdMaW5lQnJlYWsoKTsKKyAgICByZXR1cm4gUnVu
SXRlcmF0b3IoKnRoaXMpLnRyYXZlcnNlTmV4dE9uTGluZUlnbm9yaW5nTGluZUJyZWFrKCk7CiB9
CiAKLUxpbmVSdW5JdGVyYXRvciBSdW5JdGVyYXRvcjo6cHJldmlvdXNPbkxpbmVJZ25vcmluZ0xp
bmVCcmVhaygpIGNvbnN0CitSdW5JdGVyYXRvciBSdW5JdGVyYXRvcjo6cHJldmlvdXNPbkxpbmVJ
Z25vcmluZ0xpbmVCcmVhaygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIExpbmVSdW5JdGVyYXRvcigq
dGhpcykudHJhdmVyc2VQcmV2aW91c09uTGluZUlnbm9yaW5nTGluZUJyZWFrKCk7CisgICAgcmV0
dXJuIFJ1bkl0ZXJhdG9yKCp0aGlzKS50cmF2ZXJzZVByZXZpb3VzT25MaW5lSWdub3JpbmdMaW5l
QnJlYWsoKTsKIH0KIAogTGluZUl0ZXJhdG9yIFJ1bkl0ZXJhdG9yOjpsaW5lKCkgY29uc3QKQEAg
LTExOCwxNyArMTE4LDcgQEAgVGV4dFJ1bkl0ZXJhdG9yJiBUZXh0UnVuSXRlcmF0b3I6OnRyYXZl
cnNlTmV4dFRleHRSdW5JblRleHRPcmRlcigpCiAgICAgcmV0dXJuICp0aGlzOwogfQogCi1MaW5l
UnVuSXRlcmF0b3I6OkxpbmVSdW5JdGVyYXRvcihQYXRoUnVuOjpQYXRoVmFyaWFudCYmIHBhdGhW
YXJpYW50KQotICAgIDogUnVuSXRlcmF0b3IoV1RGTW92ZShwYXRoVmFyaWFudCkpCi17Ci19Ci0K
LUxpbmVSdW5JdGVyYXRvcjo6TGluZVJ1bkl0ZXJhdG9yKGNvbnN0IFJ1bkl0ZXJhdG9yJiBydW5J
dGVyYXRvcikKLSAgICA6IFJ1bkl0ZXJhdG9yKHJ1bkl0ZXJhdG9yKQotewotfQotCi1MaW5lUnVu
SXRlcmF0b3ImIExpbmVSdW5JdGVyYXRvcjo6dHJhdmVyc2VOZXh0T25MaW5lKCkKK1J1bkl0ZXJh
dG9yJiBSdW5JdGVyYXRvcjo6dHJhdmVyc2VOZXh0T25MaW5lKCkKIHsKICAgICBXVEY6OnN3aXRj
aE9uKG1fcnVuLm1fcGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIHsKICAgICAgICAgcGF0aC50
cmF2ZXJzZU5leHRPbkxpbmUoKTsKQEAgLTEzNiw3ICsxMjYsNyBAQCBMaW5lUnVuSXRlcmF0b3Im
IExpbmVSdW5JdGVyYXRvcjo6dHJhdmVyc2VOZXh0T25MaW5lKCkKICAgICByZXR1cm4gKnRoaXM7
CiB9CiAKLUxpbmVSdW5JdGVyYXRvciYgTGluZVJ1bkl0ZXJhdG9yOjp0cmF2ZXJzZVByZXZpb3Vz
T25MaW5lKCkKK1J1bkl0ZXJhdG9yJiBSdW5JdGVyYXRvcjo6dHJhdmVyc2VQcmV2aW91c09uTGlu
ZSgpCiB7CiAgICAgV1RGOjpzd2l0Y2hPbihtX3J1bi5tX3BhdGhWYXJpYW50LCBbXShhdXRvJiBw
YXRoKSB7CiAgICAgICAgIHBhdGgudHJhdmVyc2VQcmV2aW91c09uTGluZSgpOwpAQCAtMTQ0LDcg
KzEzNCw3IEBAIExpbmVSdW5JdGVyYXRvciYgTGluZVJ1bkl0ZXJhdG9yOjp0cmF2ZXJzZVByZXZp
b3VzT25MaW5lKCkKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKLUxpbmVSdW5JdGVyYXRvciYgTGlu
ZVJ1bkl0ZXJhdG9yOjp0cmF2ZXJzZU5leHRPbkxpbmVJZ25vcmluZ0xpbmVCcmVhaygpCitSdW5J
dGVyYXRvciYgUnVuSXRlcmF0b3I6OnRyYXZlcnNlTmV4dE9uTGluZUlnbm9yaW5nTGluZUJyZWFr
KCkKIHsKICAgICB0cmF2ZXJzZU5leHRPbkxpbmUoKTsKICAgICBpZiAoIWF0RW5kKCkgJiYgbV9y
dW4uaXNMaW5lQnJlYWsoKSkKQEAgLTE1Miw3ICsxNDIsNyBAQCBMaW5lUnVuSXRlcmF0b3ImIExp
bmVSdW5JdGVyYXRvcjo6dHJhdmVyc2VOZXh0T25MaW5lSWdub3JpbmdMaW5lQnJlYWsoKQogICAg
IHJldHVybiAqdGhpczsKIH0KIAotTGluZVJ1bkl0ZXJhdG9yJiBMaW5lUnVuSXRlcmF0b3I6OnRy
YXZlcnNlUHJldmlvdXNPbkxpbmVJZ25vcmluZ0xpbmVCcmVhaygpCitSdW5JdGVyYXRvciYgUnVu
SXRlcmF0b3I6OnRyYXZlcnNlUHJldmlvdXNPbkxpbmVJZ25vcmluZ0xpbmVCcmVhaygpCiB7CiAg
ICAgdHJhdmVyc2VQcmV2aW91c09uTGluZSgpOwogICAgIGlmICghYXRFbmQoKSAmJiBtX3J1bi5p
c0xpbmVCcmVhaygpKQpAQCAtMjA3LDExICsxOTcsNiBAQCBSdW5JdGVyYXRvciBydW5Gb3IoY29u
c3QgUmVuZGVyQm94JiByZW5kZXJlcikKICAgICByZXR1cm4geyBSdW5JdGVyYXRvckxlZ2FjeVBh
dGgocmVuZGVyZXIuaW5saW5lQm94V3JhcHBlcigpKSB9OwogfQogCi1MaW5lUnVuSXRlcmF0b3Ig
bGluZVJ1bihjb25zdCBSdW5JdGVyYXRvciYgcnVuSXRlcmF0b3IpCi17Ci0gICAgcmV0dXJuIExp
bmVSdW5JdGVyYXRvcihydW5JdGVyYXRvcik7Ci19Ci0KICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1B
VFRJTkdfQ09OVEVYVCkKIGNvbnN0IFJ1bkl0ZXJhdG9yTW9kZXJuUGF0aCYgUGF0aFJ1bjo6bW9k
ZXJuUGF0aCgpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50
ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuaAppbmRleCBl
NzY3N2M2NWU2ZWIuLmU4ODkzYzUwY2FiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRv
ci5oCkBAIC0zOSw3ICszOSw2IEBAIGNsYXNzIFJlbmRlclRleHQ7CiBuYW1lc3BhY2UgTGF5b3V0
SW50ZWdyYXRpb24gewogCiBjbGFzcyBMaW5lSXRlcmF0b3I7Ci1jbGFzcyBMaW5lUnVuSXRlcmF0
b3I7CiBjbGFzcyBUZXh0UnVuSXRlcmF0b3I7CiAKIHN0cnVjdCBFbmRJdGVyYXRvciB7IH07CkBA
IC04NCw3ICs4Myw2IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIGZyaWVuZCBjbGFzcyBS
dW5JdGVyYXRvcjsKLSAgICBmcmllbmQgY2xhc3MgTGluZVJ1bkl0ZXJhdG9yOwogICAgIGZyaWVu
ZCBjbGFzcyBUZXh0UnVuSXRlcmF0b3I7CiAKICAgICAvLyBUbyBoZWxwIHdpdGggZGVidWdnaW5n
LgpAQCAtMTM3LDEwICsxMzUsMTUgQEAgcHVibGljOgogCiAgICAgYm9vbCBhdEVuZCgpIGNvbnN0
OwogCi0gICAgTGluZVJ1bkl0ZXJhdG9yIG5leHRPbkxpbmUoKSBjb25zdDsKLSAgICBMaW5lUnVu
SXRlcmF0b3IgcHJldmlvdXNPbkxpbmUoKSBjb25zdDsKLSAgICBMaW5lUnVuSXRlcmF0b3IgbmV4
dE9uTGluZUlnbm9yaW5nTGluZUJyZWFrKCkgY29uc3Q7Ci0gICAgTGluZVJ1bkl0ZXJhdG9yIHBy
ZXZpb3VzT25MaW5lSWdub3JpbmdMaW5lQnJlYWsoKSBjb25zdDsKKyAgICBSdW5JdGVyYXRvciBu
ZXh0T25MaW5lKCkgY29uc3Q7CisgICAgUnVuSXRlcmF0b3IgcHJldmlvdXNPbkxpbmUoKSBjb25z
dDsKKyAgICBSdW5JdGVyYXRvciBuZXh0T25MaW5lSWdub3JpbmdMaW5lQnJlYWsoKSBjb25zdDsK
KyAgICBSdW5JdGVyYXRvciBwcmV2aW91c09uTGluZUlnbm9yaW5nTGluZUJyZWFrKCkgY29uc3Q7
CisKKyAgICBSdW5JdGVyYXRvciYgdHJhdmVyc2VOZXh0T25MaW5lKCk7CisgICAgUnVuSXRlcmF0
b3ImIHRyYXZlcnNlUHJldmlvdXNPbkxpbmUoKTsKKyAgICBSdW5JdGVyYXRvciYgdHJhdmVyc2VO
ZXh0T25MaW5lSWdub3JpbmdMaW5lQnJlYWsoKTsKKyAgICBSdW5JdGVyYXRvciYgdHJhdmVyc2VQ
cmV2aW91c09uTGluZUlnbm9yaW5nTGluZUJyZWFrKCk7CiAKICAgICBMaW5lSXRlcmF0b3IgbGlu
ZSgpIGNvbnN0OwogCkBAIC0xNjcsMjEgKzE3MCwxMiBAQCBwdWJsaWM6CiAgICAgVGV4dFJ1bkl0
ZXJhdG9yIG5leHRUZXh0UnVuSW5UZXh0T3JkZXIoKSBjb25zdCB7IHJldHVybiBUZXh0UnVuSXRl
cmF0b3IoKnRoaXMpLnRyYXZlcnNlTmV4dFRleHRSdW5JblRleHRPcmRlcigpOyB9CiAKIHByaXZh
dGU6Ci0gICAgY29uc3QgUGF0aFRleHRSdW4mIGdldCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0
PFBhdGhUZXh0UnVuPihtX3J1bik7IH0KLX07CisgICAgUnVuSXRlcmF0b3ImIHRyYXZlcnNlTmV4
dE9uTGluZSgpID0gZGVsZXRlOworICAgIFJ1bkl0ZXJhdG9yJiB0cmF2ZXJzZVByZXZpb3VzT25M
aW5lKCkgPSBkZWxldGU7CisgICAgUnVuSXRlcmF0b3ImIHRyYXZlcnNlTmV4dE9uTGluZUlnbm9y
aW5nTGluZUJyZWFrKCkgPSBkZWxldGU7CisgICAgUnVuSXRlcmF0b3ImIHRyYXZlcnNlUHJldmlv
dXNPbkxpbmVJZ25vcmluZ0xpbmVCcmVhaygpID0gZGVsZXRlOwogCi1jbGFzcyBMaW5lUnVuSXRl
cmF0b3IgOiBwdWJsaWMgUnVuSXRlcmF0b3IgewotcHVibGljOgotICAgIExpbmVSdW5JdGVyYXRv
cigpIHsgfQotICAgIExpbmVSdW5JdGVyYXRvcihjb25zdCBSdW5JdGVyYXRvciYpOwotICAgIExp
bmVSdW5JdGVyYXRvcihQYXRoUnVuOjpQYXRoVmFyaWFudCYmKTsKLQotICAgIExpbmVSdW5JdGVy
YXRvciYgb3BlcmF0b3IrKygpIHsgcmV0dXJuIHRyYXZlcnNlTmV4dE9uTGluZSgpOyB9Ci0KLSAg
ICBMaW5lUnVuSXRlcmF0b3ImIHRyYXZlcnNlTmV4dE9uTGluZSgpOwotICAgIExpbmVSdW5JdGVy
YXRvciYgdHJhdmVyc2VQcmV2aW91c09uTGluZSgpOwotICAgIExpbmVSdW5JdGVyYXRvciYgdHJh
dmVyc2VOZXh0T25MaW5lSWdub3JpbmdMaW5lQnJlYWsoKTsKLSAgICBMaW5lUnVuSXRlcmF0b3Im
IHRyYXZlcnNlUHJldmlvdXNPbkxpbmVJZ25vcmluZ0xpbmVCcmVhaygpOworICAgIGNvbnN0IFBh
dGhUZXh0UnVuJiBnZXQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxQYXRoVGV4dFJ1bj4obV9y
dW4pOyB9CiB9OwogCiBjbGFzcyBUZXh0UnVuUmFuZ2UgewpAQCAtMjAzLDcgKzE5Nyw2IEBAIFRl
eHRSdW5JdGVyYXRvciBmaXJzdFRleHRSdW5JblRleHRPcmRlckZvcihjb25zdCBSZW5kZXJUZXh0
Jik7CiBUZXh0UnVuUmFuZ2UgdGV4dFJ1bnNGb3IoY29uc3QgUmVuZGVyVGV4dCYpOwogUnVuSXRl
cmF0b3IgcnVuRm9yKGNvbnN0IFJlbmRlckxpbmVCcmVhayYpOwogUnVuSXRlcmF0b3IgcnVuRm9y
KGNvbnN0IFJlbmRlckJveCYpOwotTGluZVJ1bkl0ZXJhdG9yIGxpbmVSdW4oY29uc3QgUnVuSXRl
cmF0b3ImKTsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>