<?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>132717</bug_id>
          
          <creation_ts>2014-05-08 17:13:01 -0700</creation_ts>
          <short_desc>[iOS] Switch geolocation to an explicit authorization query model</short_desc>
          <delta_ts>2014-05-09 14:26:05 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1007827</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-05-08 17:13:01 -0700</bug_when>
    <thetext>[iOS] Switch geolocation to an explicit authorization query model</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1007842</commentid>
    <comment_count>1</comment_count>
      <attachid>231117</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-05-08 17:55:26 -0700</bug_when>
    <thetext>Created attachment 231117
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1008099</commentid>
    <comment_count>2</comment_count>
      <attachid>231117</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-05-09 14:26:03 -0700</bug_when>
    <thetext>Comment on attachment 231117
Patch

Clearing flags on attachment: 231117

Committed r168555: &lt;http://trac.webkit.org/changeset/168555&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1008100</commentid>
    <comment_count>3</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-05-09 14:26:05 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>231117</attachid>
            <date>2014-05-08 17:55:26 -0700</date>
            <delta_ts>2014-05-09 14:26:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-132717-20140508175503.patch</filename>
            <type>text/plain</type>
            <size>43153</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY4Mzk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2lv
cy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cKaW5kZXggYjlmOGJhZjA2
OGYwNGFlNjVlYWMwZDI1ZThiOTE4NTYzOGE2Nzk0YS4uNzY0OWFjMDExYmU3YmYyNDU0N2NlMGJk
MWJlZjhhMDc1MzQ0MzQzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDE0
LTA1LTA4ICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KKworICAgICAg
ICBbaU9TXSBTd2l0Y2ggZ2VvbG9jYXRpb24gdG8gYW4gZXhwbGljaXQgYXV0aG9yaXphdGlvbiBx
dWVyeSBtb2RlbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTMyNzE3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xNjc2MjM5MD4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJHZW9sb2NhdGlvbkNvcmVM
b2NhdGlvblByb3ZpZGVyIGlzIHRoZSBnZW5lcmFsIFdlYktpdCB3cmFwcGVyIGZvciBDb3JlTG9j
YXRpb24uCisKKyAgICAgICAgVGhlIG9sZCBtb2RlbCB3YXMgdG8gc3RhcnQgV2ViR2VvbG9jYXRp
b25Db3JlTG9jYXRpb25Qcm92aWRlciBhbmQgaGF2ZSB0aGUgc3RhcnQgZmFpbCBvciBzdWNjZWVk
LgorICAgICAgICBUaGUgbmV3IG1vZGVsIGlzIHRvIGV4cGxpY2l0ZWx5IGFzayBmb3IgYXV0aG9y
aXphdGlvbiB0aHJvdWdoICJyZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uIiwgYW5kCisg
ICAgICAgIGxpc3RlbiB0byAiZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uR3JhbnRlZCIgYW5kICJn
ZW9sb2NhdGlvbkF1dGhvcml6YXRpb25EZW5pZWQiLgorCisgICAgICAgIFdlIGFzc3VtZSB0aGUg
Y2xpZW50IG9mIFdlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIgaXMgd2VsbCBiZWhh
dmVkIGFuZCBhc2sgZm9yIGF1dGhvcml6YXRpb24KKyAgICAgICAgYmVmb3JlIGludm9raW5nICJz
dGFydCIuCisgICAgICAgIElmICJzdGFydCIgaXMgY2FsbGVkIGFuZCB0aGUgYXV0aG9yaXphdGlv
biBpcyBub3QgZ3JhbnRlZCwgd2UgYXNzdW1lIGdlb2xvY2F0aW9uIHdhcyByZXNldCBzaW5jZQor
ICAgICAgICB0aGUgbGFzdCB0aW1lIGF1dGhvcml6YXRpb24gd2FzIHJlcXVlc3RlZCwgYW5kIHdl
IHJlc2V0IHRoZSBjbGllbnQuCisKKworICAgICAgICBXZWJHZW9sb2NhdGlvblByb3ZpZGVySU9T
IGhhcyBiZWVuIGFkYXB0ZWQgdG8gdGhhdCBtb2RlbC4gSW5zdGVhZCBvZiBkb2luZyB0aGUgIndh
cm11cCIgc2VxdWVuY2UKKyAgICAgICAgdG8gZ2V0IHRoZSBhdXRob3JpemF0aW9uLCBpdCBxdWVy
aWVzIFdlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIgZXhwbGljaXRseS4KKworICAg
ICAgICAqIE1pc2MvV2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlci5oOgorICAgICAg
ICAqIE1pc2MvV2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlci5tbToKKyAgICAgICAg
KC1bV2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlciBjcmVhdGVMb2NhdGlvbk1hbmFn
ZXJdKToKKyAgICAgICAgKC1bV2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlciBkZWFs
bG9jXSk6CisgICAgICAgICgtW1dlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIgcmVx
dWVzdEdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbl0pOgorICAgICAgICAoaXNBdXRob3JpemF0aW9u
R3JhbnRlZCk6CisgICAgICAgICgtW1dlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIg
c3RhcnRdKToKKyAgICAgICAgKC1bV2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlciBz
dG9wXSk6CisgICAgICAgICgtW1dlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIgbG9j
YXRpb25NYW5hZ2VyOmRpZENoYW5nZUF1dGhvcml6YXRpb25TdGF0dXM6XSk6CisgICAgICAgICgt
W1dlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIgc2V0RW5hYmxlSGlnaEFjY3VyYWN5
Ol0pOgorICAgICAgICAoLVtXZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyIGhhbmRs
ZUV4dGVybmFsQXV0aG9yaXphdGlvblN0YXR1c0NoYW5nZTpdKTogRGVsZXRlZC4KKyAgICAgICAg
KiBNaXNjL1dlYkdlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW06CisgICAgICAgICgtW1dlYkdlb2xv
Y2F0aW9uUHJvdmlkZXJJT1Mgc3VzcGVuZF0pOgorICAgICAgICAoLVtXZWJHZW9sb2NhdGlvblBy
b3ZpZGVySU9TIHJlc3VtZV0pOgorICAgICAgICAoLVtXZWJHZW9sb2NhdGlvblByb3ZpZGVySU9T
IHJlZ2lzdGVyV2ViVmlldzpdKToKKyAgICAgICAgKC1bV2ViR2VvbG9jYXRpb25Qcm92aWRlcklP
UyB1bnJlZ2lzdGVyV2ViVmlldzpdKToKKyAgICAgICAgKC1bV2ViR2VvbG9jYXRpb25Qcm92aWRl
cklPUyBzZXRFbmFibGVIaWdoQWNjdXJhY3k6XSk6CisgICAgICAgICgtW1dlYkdlb2xvY2F0aW9u
UHJvdmlkZXJJT1MgaW5pdGlhbGl6ZUdlb2xvY2F0aW9uRm9yV2ViVmlldzpsaXN0ZW5lcjpdKToK
KyAgICAgICAgKC1bV2ViR2VvbG9jYXRpb25Qcm92aWRlcklPUyBnZW9sb2NhdGlvbkF1dGhvcml6
YXRpb25HcmFudGVkXSk6CisgICAgICAgICgtW1dlYkdlb2xvY2F0aW9uUHJvdmlkZXJJT1MgZ2Vv
bG9jYXRpb25BdXRob3JpemF0aW9uRGVuaWVkXSk6CisgICAgICAgICgtW1dlYkdlb2xvY2F0aW9u
UHJvdmlkZXJJT1Mgc3RvcFRyYWNraW5nV2ViVmlldzpdKToKKyAgICAgICAgKC1bV2ViR2VvbG9j
YXRpb25Qcm92aWRlcklPUyByZXNldEdlb2xvY2F0aW9uXSk6CisgICAgICAgICgtW19XZWJDb3Jl
TG9jYXRpb25VcGRhdGVUaHJlYWRpbmdQcm94eSBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFu
dGVkXSk6CisgICAgICAgICgtW19XZWJDb3JlTG9jYXRpb25VcGRhdGVUaHJlYWRpbmdQcm94eSBn
ZW9sb2NhdGlvbkF1dGhvcml6YXRpb25EZW5pZWRdKToKKyAgICAgICAgKC1bX1dlYkNvcmVMb2Nh
dGlvblVwZGF0ZVRocmVhZGluZ1Byb3h5IHBvc2l0aW9uQ2hhbmdlZDpXZWJDb3JlOjpdKToKKyAg
ICAgICAgKC1bX1dlYkNvcmVMb2NhdGlvblVwZGF0ZVRocmVhZGluZ1Byb3h5IGVycm9yT2NjdXJy
ZWQ6XSk6CisgICAgICAgICgtW19XZWJDb3JlTG9jYXRpb25VcGRhdGVUaHJlYWRpbmdQcm94eSBy
ZXNldEdlb2xvY2F0aW9uXSk6CisgICAgICAgICgtW1dlYkdlb2xvY2F0aW9uUHJvdmlkZXJJT1Mg
X3N0YXJ0Q29yZUxvY2F0aW9uRGVsZWdhdGVdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViR2Vv
bG9jYXRpb25Qcm92aWRlcklPUyBfc3RvcENvcmVMb2NhdGlvbkRlbGVnYXRlSWZOZWVkZWRdKTog
RGVsZXRlZC4KKyAgICAgICAgKC1bV2ViR2VvbG9jYXRpb25Qcm92aWRlcklPUyBjYW5jZWxXYXJt
VXBGb3JXZWJWaWV3Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJHZW9sb2NhdGlvblByb3Zp
ZGVySU9TIGdlb2xvY2F0aW9uRGVsZWdhdGVTdGFydGVkXSk6IERlbGV0ZWQuCisgICAgICAgICgt
W1dlYkdlb2xvY2F0aW9uUHJvdmlkZXJJT1MgZ2VvbG9jYXRpb25EZWxlZ2F0ZVVuYWJsZVRvU3Rh
cnRdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bX1dlYkNvcmVMb2NhdGlvblVwZGF0ZVRocmVhZGlu
Z1Byb3h5IGdlb2xvY2F0aW9uRGVsZWdhdGVTdGFydGVkXSk6IERlbGV0ZWQuCisgICAgICAgICgt
W19XZWJDb3JlTG9jYXRpb25VcGRhdGVUaHJlYWRpbmdQcm94eSBnZW9sb2NhdGlvbkRlbGVnYXRl
VW5hYmxlVG9TdGFydF0pOiBEZWxldGVkLgorCiAyMDE0LTA0LTMwICBBbmRlcnMgQ2FybHNzb24g
IDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSB0aGUgbGVnYWN5IFdlYktpdCBB
UEkgaW50byBXZWJLaXRMZWdhY3kuZnJhbWV3b3JrIGFuZCBtb3ZlIGl0IGluc2lkZSBXZWJLaXQu
ZnJhbWV3b3JrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggODY1MGYyYzNmYjk4MWVhYzAwYTIwN2VhOWUw
OGRmY2RkNGJiYWUxNC4uYTM4OTNhZWVhZDIwNWQ0ODhhODA0MjljOWE2ZWQxNzI0YzY3NGI2YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE0LTA1LTA4ICBCZW5qYW1pbiBQ
b3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBbaU9TXSBTd2l0Y2ggZ2Vv
bG9jYXRpb24gdG8gYW4gZXhwbGljaXQgYXV0aG9yaXphdGlvbiBxdWVyeSBtb2RlbAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMyNzE3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2luY2UgdGhlcmUgaXMg
bm8gd2FybXVwIGNvZGUsIFdlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIgbm8gbG9uZ2VyIG5l
ZWQgdG8ga25vdyBhYm91dCB0aGUgcHJvdmlkZXIsCisgICAgICAgIHdoaWNoIGlzIGF3ZXNvbWUg
OikKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lm1tOgor
ICAgICAgICAoLVtXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyIGluaXRXaXRoR2VvbG9jYXRp
b246Zm9yV2ViVmlldzpdKToKKyAgICAgICAgKC1bV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5l
ciBkZW55XSk6CisgICAgICAgICgtW1dlYkdlb2xvY2F0aW9uUHJvdmlkZXJJbml0aWFsaXphdGlv
bkxpc3RlbmVyIGluaXRpYWxpemF0aW9uQWxsb3dlZFdlYlZpZXc6XSk6CisgICAgICAgICgtW1dl
Ykdlb2xvY2F0aW9uUHJvdmlkZXJJbml0aWFsaXphdGlvbkxpc3RlbmVyIGluaXRpYWxpemF0aW9u
RGVuaWVkV2ViVmlldzpdKToKKyAgICAgICAgKC1bV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5l
ciBpbml0V2l0aEdlb2xvY2F0aW9uOmZvcldlYlZpZXc6cHJvdmlkZXI6XSk6IERlbGV0ZWQuCisg
ICAgICAgICgtW1dlYkdlb2xvY2F0aW9uUHJvdmlkZXJJbml0aWFsaXphdGlvbkxpc3RlbmVyIGlu
aXRpYWxpemF0aW9uQWxsb3dlZFdlYlZpZXc6cHJvdmlkZXI6XSk6IERlbGV0ZWQuCisgICAgICAg
ICgtW1dlYkdlb2xvY2F0aW9uUHJvdmlkZXJJbml0aWFsaXphdGlvbkxpc3RlbmVyIGluaXRpYWxp
emF0aW9uRGVuaWVkV2ViVmlldzpwcm92aWRlcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJW
aWV3L1dlYlZpZXdQcml2YXRlLmg6CisKIDIwMTQtMDUtMDYgIEJyYWR5IEVpZHNvbiAgPGJlaWRz
b25AYXBwbGUuY29tPgogCiAgICAgICAgIERvbid0IHNlbGVjdCBhbiBpbWFnZSB0aGF0IGlzIGFi
b3V0IHRvIGhhdmUgaXRzIG1lbnUgc2hvd24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNTk1M2ZlN2ZmYWY0ODQ4
Yjc1MzFkNTE4YWI5YmE5OWJlM2Q3NjkwNC4uOWM5NzNlOTU0MDk0ZWJiNzI5ZjA3Njg4YzdlZmE5
ZGJlNjE2ZDRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE0LTA1LTA4ICBCZW5q
YW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBbaU9TXSBTd2l0
Y2ggZ2VvbG9jYXRpb24gdG8gYW4gZXhwbGljaXQgYXV0aG9yaXphdGlvbiBxdWVyeSBtb2RlbAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMyNzE3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3dpdGNoIFdL
R2VvbG9jYXRpb25Qcm92aWRlcklPUyB0byB1c2UgdGhlIG5ldyBBUEkgb2YgV2ViR2VvbG9jYXRp
b25Db3JlTG9jYXRpb25Qcm92aWRlci4KKworICAgICAgICBPbiBXZWJLaXQyLCB0aGUgd2hvbGUg
bG9naWMgdG8gdHJhY2sgcmVxdWVzdGVycyBpcyBpbiBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94
eS4KKworICAgICAgICBXaXRob3V0IHRoZSB3YXJtdXAgc2VxdWVuY2UsIFdLR2VvbG9jYXRpb25Q
cm92aWRlcklPUyBiZWNvbWVzIHJlYWxseSBkdW1iOiBpdCBqdXN0IHByb3ZpZGVzCisgICAgICAg
IHRoZSB0d28gc3RlcCBhdXRob3JpemF0aW9uIGFuZCBmb3J3YXJkIHRoZSBzdGFydC9zdG9wIG1l
c3NhZ2VzIHRvIHRoZSBXZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLgorCisgICAg
ICAgICogVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW06CisgICAgICAg
ICgtW1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUyBfc3RvcFVwZGF0aW5nXSk6CisgICAgICAgICgt
W1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUyBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVl
c3RGcm9tT3JpZ2luOmZyYW1lOnJlcXVlc3Q6d2luZG93Ol0pOgorICAgICAgICAoLVtXS0dlb2xv
Y2F0aW9uUHJvdmlkZXJJT1MgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uR3JhbnRlZF0pOgorICAg
ICAgICAoLVtXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9u
RGVuaWVkXSk6CisgICAgICAgICgtW1dLV2ViQWxsb3dEZW55UG9saWN5TGlzdGVuZXIgaW5pdFdp
dGhQZXJtaXNzaW9uUmVxdWVzdFByb3h5Ol0pOgorICAgICAgICAoLVtXS1dlYkFsbG93RGVueVBv
bGljeUxpc3RlbmVyIGRlbnldKToKKyAgICAgICAgKC1bV0tHZW9sb2NhdGlvblByb3ZpZGVySU9T
IF9zdG9wVXBkYXRpbmdJZlBvc3NpYmxlXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLR2VvbG9j
YXRpb25Qcm92aWRlcklPUyBnZW9sb2NhdGlvbkRlbGVnYXRlU3RhcnRlZF0pOiBEZWxldGVkLgor
ICAgICAgICAoLVtXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MgZ2VvbG9jYXRpb25EZWxlZ2F0ZVVu
YWJsZVRvU3RhcnRdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tHZW9sb2NhdGlvblByb3ZpZGVy
SU9TIHBlcm1pc3Npb25EZW5pZWQ6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLV2ViQWxsb3dE
ZW55UG9saWN5TGlzdGVuZXIgaW5pdFdpdGhQcm92aWRlcjpwZXJtaXNzaW9uUmVxdWVzdFByb3h5
Ol0pOiBEZWxldGVkLgorCiAyMDE0LTA1LTA2ICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW5A
d2Via2l0Lm9yZz4KIAogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTY4MzM0NDI+IFtpT1MgV2Vi
S2l0Ml06IEtlZXAgdGhlIG9yZGVyIG9mIGNvbnRlbnRWaWV3IGluIF9zY3JvbGxWaWV3IGFmdGVy
IHJvdGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2lvcy9NaXNjL1dlYkdlb2xvY2F0
aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQvaW9zL01pc2MvV2ViR2Vv
bG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlci5oCmluZGV4IDJiYzNkYTNiOTE2ZmUwYjc5N2Ix
MWU3NDVkZGNjZDEyYzExOTBhMDQuLjA2ZDM2MDE1ZTYyYmZlODU2ODY5YjY0MDg3OTNjMTQxMzdl
YzM3YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaW9zL01pc2MvV2ViR2VvbG9jYXRpb25D
b3JlTG9jYXRpb25Qcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvaW9zL01pc2MvV2ViR2Vv
bG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMiBBcHBsZSBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTAsIDIwMTIsIDIwMTQg
QXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC00MSw4ICs0MSw4IEBAIGNsYXNzIEdlb2xvY2F0aW9uUG9zaXRpb247CiAvLyBt
YWluIHRocmVhZC4KIAogQHByb3RvY29sIFdlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uVXBkYXRl
TGlzdGVuZXIKLS0gKHZvaWQpZ2VvbG9jYXRpb25EZWxlZ2F0ZVN0YXJ0ZWQ7Ci0tICh2b2lkKWdl
b2xvY2F0aW9uRGVsZWdhdGVVbmFibGVUb1N0YXJ0OworLSAodm9pZClnZW9sb2NhdGlvbkF1dGhv
cml6YXRpb25HcmFudGVkOworLSAodm9pZClnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25EZW5pZWQ7
CiAKIC0gKHZvaWQpcG9zaXRpb25DaGFuZ2VkOihXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9u
Kilwb3NpdGlvbjsKIC0gKHZvaWQpZXJyb3JPY2N1cnJlZDooTlNTdHJpbmcgKillcnJvck1lc3Nh
Z2U7CkBAIC01Myw3ICs1MywxMCBAQCBjbGFzcyBHZW9sb2NhdGlvblBvc2l0aW9uOwogQGludGVy
ZmFjZSBXZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyIDogTlNPYmplY3QKIC0gKGlk
KWluaXRXaXRoTGlzdGVuZXI6KGlkPFdlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uVXBkYXRlTGlz
dGVuZXI+KWxpc3RlbmVyOwogCistICh2b2lkKXJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRp
b247CisKIC0gKHZvaWQpc3RhcnQ7CiAtICh2b2lkKXN0b3A7CisKIC0gKHZvaWQpc2V0RW5hYmxl
SGlnaEFjY3VyYWN5OihCT09MKWZsYWc7CiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2lvcy9NaXNjL1dlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIubW0gYi9Tb3VyY2Uv
V2ViS2l0L2lvcy9NaXNjL1dlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIubW0KaW5k
ZXggMzQ1MTAxMjA5ODdlODI3MWVlZTBiZGI1ZjFjMjkyZTM2NzE0MjgzNi4uMTcwYmQ5Mjc3YjRl
MGEzYTg3NzgxYjg4NmI0NjBkYzc0MzhmMzRjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9p
b3MvTWlzYy9XZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvaW9zL01pc2MvV2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlci5tbQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTAsIDIw
MTIgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4
LCAyMDA5LCAyMDEwLCAyMDEyLCAyMDE0IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzEsNyArNzEsNyBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKICAgICBfbGFzdEF1dGhvcml6YXRpb25TdGF0dXMgPSBbQ0xMb2Nh
dGlvbk1hbmFnZXIgYXV0aG9yaXphdGlvblN0YXR1c107CiAjdW5kZWYgQ0xMb2NhdGlvbk1hbmFn
ZXIKIAotICAgIFsgX2xvY2F0aW9uTWFuYWdlci5nZXQoKSBzZXREZWxlZ2F0ZTpzZWxmXTsKKyAg
ICBbIF9sb2NhdGlvbk1hbmFnZXIgc2V0RGVsZWdhdGU6c2VsZl07CiB9CiAKIC0gKGlkKWluaXRX
aXRoTGlzdGVuZXI6KGlkPFdlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uVXBkYXRlTGlzdGVuZXI+
KWxpc3RlbmVyCkBAIC04OCw2NyArODgsNjYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAt
ICh2b2lkKWRlYWxsb2MKIHsKICAgICBBU1NFUlRfTUFJTl9USFJFQUQoKTsKLSAgICBfbG9jYXRp
b25NYW5hZ2VyLmdldCgpLmRlbGVnYXRlID0gbmlsOworICAgIFtfbG9jYXRpb25NYW5hZ2VyIHNl
dERlbGVnYXRlOm5pbF07CiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCi0tIChCT09MKWhhbmRs
ZUV4dGVybmFsQXV0aG9yaXphdGlvblN0YXR1c0NoYW5nZTooQ0xBdXRob3JpemF0aW9uU3RhdHVz
KW5ld1N0YXR1cworLSAodm9pZClyZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uCiB7Ci0g
ICAgQ0xBdXRob3JpemF0aW9uU3RhdHVzIHByZXZpb3VzU3RhdHVzID0gX2xhc3RBdXRob3JpemF0
aW9uU3RhdHVzOwotICAgIF9sYXN0QXV0aG9yaXphdGlvblN0YXR1cyA9IG5ld1N0YXR1czsKLSAg
ICBpZiAoIV9pc1dhaXRpbmdGb3JBdXRob3JpemF0aW9uICYmIHByZXZpb3VzU3RhdHVzICE9IG5l
d1N0YXR1cykgewotICAgICAgICBbX2xvY2F0aW9uTWFuYWdlci5nZXQoKSBzdG9wVXBkYXRpbmdM
b2NhdGlvbl07Ci0gICAgICAgIFtfcG9zaXRpb25MaXN0ZW5lciByZXNldEdlb2xvY2F0aW9uXTsK
LSAgICAgICAgcmV0dXJuIFlFUzsKKyAgICBBU1NFUlRfTUFJTl9USFJFQUQoKTsKKworICAgIGlm
ICghW2dldENMTG9jYXRpb25NYW5hZ2VyQ2xhc3MoKSBsb2NhdGlvblNlcnZpY2VzRW5hYmxlZF0p
IHsKKyAgICAgICAgW19wb3NpdGlvbkxpc3RlbmVyIGdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkRl
bmllZF07CisgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgcmV0dXJuIE5POworCisgICAgc3dp
dGNoIChbZ2V0Q0xMb2NhdGlvbk1hbmFnZXJDbGFzcygpIGF1dGhvcml6YXRpb25TdGF0dXNdKSB7
CisgICAgY2FzZSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzTm90RGV0ZXJtaW5lZDogeworICAgICAg
ICBpZiAoIV9pc1dhaXRpbmdGb3JBdXRob3JpemF0aW9uKSB7CisgICAgICAgICAgICBfaXNXYWl0
aW5nRm9yQXV0aG9yaXphdGlvbiA9IFlFUzsKKyAgICAgICAgICAgIFtfbG9jYXRpb25NYW5hZ2Vy
IHJlcXVlc3RXaGVuSW5Vc2VBdXRob3JpemF0aW9uXTsKKyAgICAgICAgfQorICAgICAgICBicmVh
azsKKyAgICB9CisgICAgY2FzZSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzQXV0aG9yaXplZEFsd2F5
czoKKyAgICBjYXNlIGtDTEF1dGhvcml6YXRpb25TdGF0dXNBdXRob3JpemVkV2hlbkluVXNlOiB7
CisgICAgICAgIFtfcG9zaXRpb25MaXN0ZW5lciBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFu
dGVkXTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Uga0NMQXV0aG9yaXphdGlvblN0
YXR1c1Jlc3RyaWN0ZWQ6CisgICAgY2FzZSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzRGVuaWVkOgor
ICAgICAgICBbX3Bvc2l0aW9uTGlzdGVuZXIgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uRGVuaWVk
XTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitzdGF0aWMgYm9vbCBpc0F1dGhvcml6YXRp
b25HcmFudGVkKENMQXV0aG9yaXphdGlvblN0YXR1cyBhdXRob3JpemF0aW9uU3RhdHVzKQorewor
ICAgIHJldHVybiBhdXRob3JpemF0aW9uU3RhdHVzID09IGtDTEF1dGhvcml6YXRpb25TdGF0dXNB
dXRob3JpemVkQWx3YXlzIHx8IGF1dGhvcml6YXRpb25TdGF0dXMgPT0ga0NMQXV0aG9yaXphdGlv
blN0YXR1c0F1dGhvcml6ZWRXaGVuSW5Vc2U7CiB9CiAKIC0gKHZvaWQpc3RhcnQKIHsKICAgICBB
U1NFUlRfTUFJTl9USFJFQUQoKTsKIAotI2RlZmluZSBDTExvY2F0aW9uTWFuYWdlciBnZXRDTExv
Y2F0aW9uTWFuYWdlckNsYXNzKCkKLSAgICBDTEF1dGhvcml6YXRpb25TdGF0dXMgYXV0aG9yaXph
dGlvblN0YXR1cyA9IFtDTExvY2F0aW9uTWFuYWdlciBhdXRob3JpemF0aW9uU3RhdHVzXTsKLSAg
ICBpZiAoW3NlbGYgaGFuZGxlRXh0ZXJuYWxBdXRob3JpemF0aW9uU3RhdHVzQ2hhbmdlOmF1dGhv
cml6YXRpb25TdGF0dXNdKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIVtDTExvY2F0aW9u
TWFuYWdlciBsb2NhdGlvblNlcnZpY2VzRW5hYmxlZF0pIHsKLSAgICAgICAgW19wb3NpdGlvbkxp
c3RlbmVyIGdlb2xvY2F0aW9uRGVsZWdhdGVVbmFibGVUb1N0YXJ0XTsKKyAgICBpZiAoIVtnZXRD
TExvY2F0aW9uTWFuYWdlckNsYXNzKCkgbG9jYXRpb25TZXJ2aWNlc0VuYWJsZWRdCisgICAgICAg
IHx8ICFpc0F1dGhvcml6YXRpb25HcmFudGVkKFtnZXRDTExvY2F0aW9uTWFuYWdlckNsYXNzKCkg
YXV0aG9yaXphdGlvblN0YXR1c10pKSB7CisgICAgICAgIFtfbG9jYXRpb25NYW5hZ2VyIHN0b3BV
cGRhdGluZ0xvY2F0aW9uXTsKKyAgICAgICAgW19wb3NpdGlvbkxpc3RlbmVyIHJlc2V0R2VvbG9j
YXRpb25dOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgc3dpdGNoIChhdXRob3JpemF0
aW9uU3RhdHVzKSB7Ci0gICAgY2FzZSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzTm90RGV0ZXJtaW5l
ZDoKLSAgICAgICAgX2lzV2FpdGluZ0ZvckF1dGhvcml6YXRpb24gPSBZRVM7Ci0gICAgICAgIFtf
bG9jYXRpb25NYW5hZ2VyLmdldCgpIHN0YXJ0VXBkYXRpbmdMb2NhdGlvbl07Ci0gICAgICAgIHJl
dHVybjsKLSAgICBjYXNlIGtDTEF1dGhvcml6YXRpb25TdGF0dXNEZW5pZWQ6Ci0gICAgY2FzZSBr
Q0xBdXRob3JpemF0aW9uU3RhdHVzUmVzdHJpY3RlZDoKLSAgICAgICAgW19wb3NpdGlvbkxpc3Rl
bmVyIGdlb2xvY2F0aW9uRGVsZWdhdGVVbmFibGVUb1N0YXJ0XTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIGNhc2Uga0NMQXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6ZWRBbHdheXM6Ci0gICAgY2Fz
ZSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzQXV0aG9yaXplZFdoZW5JblVzZToKLSAgICAgICAgW19s
b2NhdGlvbk1hbmFnZXIuZ2V0KCkgc3RhcnRVcGRhdGluZ0xvY2F0aW9uXTsKLSAgICAgICAgW19w
b3NpdGlvbkxpc3RlbmVyIGdlb2xvY2F0aW9uRGVsZWdhdGVTdGFydGVkXTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSN1bmRlZiBDTExvY2F0aW9uTWFuYWdlcgotICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgIFtfcG9zaXRpb25MaXN0ZW5lciBnZW9sb2NhdGlvbkRlbGVnYXRlVW5hYmxl
VG9TdGFydF07CisgICAgW19sb2NhdGlvbk1hbmFnZXIgc3RhcnRVcGRhdGluZ0xvY2F0aW9uXTsK
IH0KIAogLSAodm9pZClzdG9wCiB7CiAgICAgQVNTRVJUX01BSU5fVEhSRUFEKCk7Ci0gICAgW19s
b2NhdGlvbk1hbmFnZXIuZ2V0KCkgc3RvcFVwZGF0aW5nTG9jYXRpb25dOworICAgIFtfbG9jYXRp
b25NYW5hZ2VyIHN0b3BVcGRhdGluZ0xvY2F0aW9uXTsKIH0KIAogLSAodm9pZClsb2NhdGlvbk1h
bmFnZXI6KENMTG9jYXRpb25NYW5hZ2VyICopbWFuYWdlciBkaWRDaGFuZ2VBdXRob3JpemF0aW9u
U3RhdHVzOihDTEF1dGhvcml6YXRpb25TdGF0dXMpc3RhdHVzCiB7Ci0gICAgaWYgKFtzZWxmIGhh
bmRsZUV4dGVybmFsQXV0aG9yaXphdGlvblN0YXR1c0NoYW5nZTpzdGF0dXNdKQotICAgICAgICBy
ZXR1cm47Ci0KICAgICBpZiAoX2lzV2FpdGluZ0ZvckF1dGhvcml6YXRpb24pIHsKICAgICAgICAg
c3dpdGNoIChzdGF0dXMpIHsKICAgICAgICAgY2FzZSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzTm90
RGV0ZXJtaW5lZDoKQEAgLTE1NywxNSArMTU2LDIxIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogICAgICAgICBjYXNlIGtDTEF1dGhvcml6YXRpb25TdGF0dXNEZW5pZWQ6CiAgICAgICAgIGNh
c2Uga0NMQXV0aG9yaXphdGlvblN0YXR1c1Jlc3RyaWN0ZWQ6CiAgICAgICAgICAgICBfaXNXYWl0
aW5nRm9yQXV0aG9yaXphdGlvbiA9IE5POwotICAgICAgICAgICAgW19wb3NpdGlvbkxpc3RlbmVy
IGdlb2xvY2F0aW9uRGVsZWdhdGVVbmFibGVUb1N0YXJ0XTsKKyAgICAgICAgICAgIFtfcG9zaXRp
b25MaXN0ZW5lciBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25EZW5pZWRdOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2Uga0NMQXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6ZWRBbHdh
eXM6CiAgICAgICAgIGNhc2Uga0NMQXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6ZWRXaGVuSW5V
c2U6CiAgICAgICAgICAgICBfaXNXYWl0aW5nRm9yQXV0aG9yaXphdGlvbiA9IE5POwotICAgICAg
ICAgICAgW19wb3NpdGlvbkxpc3RlbmVyIGdlb2xvY2F0aW9uRGVsZWdhdGVTdGFydGVkXTsKKyAg
ICAgICAgICAgIFtfcG9zaXRpb25MaXN0ZW5lciBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFu
dGVkXTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgaWYgKCEoaXNBdXRob3JpemF0aW9uR3JhbnRlZChfbGFzdEF1dGhvcml6YXRpb25TdGF0dXMp
ICYmIGlzQXV0aG9yaXphdGlvbkdyYW50ZWQoc3RhdHVzKSkpIHsKKyAgICAgICAgICAgIFtfbG9j
YXRpb25NYW5hZ2VyIHN0b3BVcGRhdGluZ0xvY2F0aW9uXTsKKyAgICAgICAgICAgIFtfcG9zaXRp
b25MaXN0ZW5lciByZXNldEdlb2xvY2F0aW9uXTsKKyAgICAgICAgfQogICAgIH0KKyAgICBfbGFz
dEF1dGhvcml6YXRpb25TdGF0dXMgPSBzdGF0dXM7CiB9CiAKIC0gKHZvaWQpc2VuZExvY2F0aW9u
OihDTExvY2F0aW9uICopbmV3TG9jYXRpb24KQEAgLTIyMCw3ICsyMjUsNyBAQCB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIC0gKHZvaWQpc2V0RW5hYmxlSGlnaEFjY3VyYWN5OihCT09MKWZsYWcK
IHsKICAgICBBU1NFUlRfTUFJTl9USFJFQUQoKTsKLSAgICBbX2xvY2F0aW9uTWFuYWdlci5nZXQo
KSBzZXREZXNpcmVkQWNjdXJhY3k6ZmxhZyA/IGtDTExvY2F0aW9uQWNjdXJhY3lCZXN0IDoga0NM
TG9jYXRpb25BY2N1cmFjeUh1bmRyZWRNZXRlcnNdOworICAgIFtfbG9jYXRpb25NYW5hZ2VyIHNl
dERlc2lyZWRBY2N1cmFjeTpmbGFnID8ga0NMTG9jYXRpb25BY2N1cmFjeUJlc3QgOiBrQ0xMb2Nh
dGlvbkFjY3VyYWN5SHVuZHJlZE1ldGVyc107CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvaW9zL01pc2MvV2ViR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbSBiL1NvdXJjZS9X
ZWJLaXQvaW9zL01pc2MvV2ViR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQppbmRleCBiMGZlMDkz
ZjA4MzExZGU1NGU1Njk0OTg0YzY5OTZiMjY4YmJlZjRjLi42MTA3ZTk4Mjc5YWQxMzk0YWFmYjUz
MWZmZmFlMDAwZjVkMjMyNGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2lvcy9NaXNjL1dl
Ykdlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9pb3MvTWlzYy9X
ZWJHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTAsIDIwMTIsIDIwMTQgQXBw
bGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC02NiwxMSArNjYsNyBAQCB0eXBlZGVmIEhhc2hNYXA8UmV0YWluUHRyPFdlYlZpZXc+
LCBSZXRhaW5QdHI8aWQ8V2ViR2VvbG9jYXRpb25Qcm92aWRlckluaXRpYWxpegogCiAgICAgLy8g
V2ViVmlld3Mgd2FpdGluZyBmb3IgQ29yZUxvY2F0aW9uIHRvIGJlIHJlYWR5LiBJZiB0aGUgQXBw
bGljYXRpb24gZG9lcyBub3QgeWV0IGhhdmUgdGhlIHBlcm1pc3Npb24gdG8gdXNlIEdlb2xvY2F0
aW9uCiAgICAgLy8gd2UgYWxzbyBoYXZlIHRvIHdhaXQgZm9yIHRoYXQgdG8gYmUgZ3JhbnRlZC4K
LSAgICBHZW9sb2NhdGlvbkluaXRpYWxpemF0aW9uQ2FsbGJhY2tNYXAgX3dlYlZpZXdzV2FpdGlu
Z0ZvckNvcmVMb2NhdGlvblN0YXJ0OwotCi0gICAgLy8gV2ViVmlld3MgdGhhdCBoYXZlIHJlcXVp
cmVkIGxvY2F0aW9uIHNlcnZpY2VzIGFuZCBhcmUgaW4gIldhcm0gVXAiIHdoaWxlIHdhaXRpbmcg
dG8gYmUgcmVnaXN0ZXJlZCBvciBkZW5pZWQgZm9yIHRoZSBTZWN1cml0eU9yaWdpbi4KLSAgICAv
LyBUaGUgd2FybSB1cCBleHBpcmUgYWZ0ZXIgc29tZSB0aW1lIHRvIGF2b2lkIGtlZXBpbmcgQ29y
ZUxvY2F0aW9uIGFsaXZlIHdoaWxlIHdhaXRpbmcgZm9yIHRoZSB1c2VyIHJlc3BvbnNlIGZvciB0
aGUgU2VjdXJpdHkgT3JpZ2luLgotICAgIEhhc2hTZXQ8V2ViVmlldyo+IF93YXJtVXBXZWJWaWV3
czsKKyAgICBHZW9sb2NhdGlvbkluaXRpYWxpemF0aW9uQ2FsbGJhY2tNYXAgX3dlYlZpZXdzV2Fp
dGluZ0ZvckNvcmVMb2NhdGlvbkF1dGhvcml6YXRpb247CiAKICAgICAvLyBMaXN0IG9mIFdlYlZp
ZXcgbmVlZGluZyB0aGUgaW5pdGlhbCBwb3NpdGlvbiBhZnRlciByZWdpc3RlcldlYlZpZXc6LiBU
aGlzIGlzIG5lZWRlZCBiZWNhdXNlIFdlYktpdCBkb2VzIG5vdAogICAgIC8vIGhhbmRsZSBzZW5k
aW5nIHRoZSBwb3NpdGlvbiBzeW5jaHJvbm91c2x5IGluIHJlc3BvbnNlIHRvIHJlZ2lzdGVyV2Vi
VmlldzosIHNvIHdlIHF1ZXVlIHNlbmRpbmcgbGFzdFBvc2l0aW9uIGJlaGluZCBhIHRpbWVyLgpA
QCAtMTIxLDcgKzExNyw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhYm9ydFNlbmRMYXN0UG9zaXRp
b24oV2ViR2VvbG9jYXRpb25Qcm92aWRlcklPUyogcHJvdmlkZXIpCiAgICAgLy8gQSBuZXcgcG9z
aXRpb24gaXMgYWNxdWlyZWQgYW5kIHNlbnQgdG8gYWxsIHJlZ2lzdGVyZWQgdmlld3Mgb24gcmVz
dW1lLgogICAgIF9sYXN0UG9zaXRpb24uY2xlYXIoKTsKICAgICBhYm9ydFNlbmRMYXN0UG9zaXRp
b24oc2VsZik7Ci0gICAgW19jb3JlTG9jYXRpb25Qcm92aWRlci5nZXQoKSBzdG9wXTsKKyAgICBb
X2NvcmVMb2NhdGlvblByb3ZpZGVyIHN0b3BdOwogfQogCiAtICh2b2lkKXJlc3VtZQpAQCAtMTM4
LDcgKzEzNCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhYm9ydFNlbmRMYXN0UG9zaXRpb24oV2Vi
R2VvbG9jYXRpb25Qcm92aWRlcklPUyogcHJvdmlkZXIpCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBpZiAoX3JlZ2lzdGVyZWRXZWJWaWV3cy5pc0VtcHR5KCkgJiYgX3dlYlZpZXdzV2Fp
dGluZ0ZvckNvcmVMb2NhdGlvblN0YXJ0LmlzRW1wdHkoKSAmJiBfd2FybVVwV2ViVmlld3MuaXNF
bXB0eSgpKQorICAgIGlmIChfcmVnaXN0ZXJlZFdlYlZpZXdzLmlzRW1wdHkoKSAmJiBfd2ViVmll
d3NXYWl0aW5nRm9yQ29yZUxvY2F0aW9uQXV0aG9yaXphdGlvbi5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIGlmICghX2NvcmVMb2NhdGlvblByb3ZpZGVyKSB7CkBAIC0xNDYsMzkg
KzE0MiwxOCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWJvcnRTZW5kTGFzdFBvc2l0aW9uKFdlYkdl
b2xvY2F0aW9uUHJvdmlkZXJJT1MqIHByb3ZpZGVyKQogICAgICAgICBfY29yZUxvY2F0aW9uVXBk
YXRlTGlzdGVuZXJQcm94eSA9IGFkb3B0TlMoW1tfV2ViQ29yZUxvY2F0aW9uVXBkYXRlVGhyZWFk
aW5nUHJveHkgYWxsb2NdIGluaXRXaXRoUHJvdmlkZXI6c2VsZl0pOwogICAgICAgICBfY29yZUxv
Y2F0aW9uUHJvdmlkZXIgPSBhZG9wdE5TKFtbV2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92
aWRlciBhbGxvY10gaW5pdFdpdGhMaXN0ZW5lcjpfY29yZUxvY2F0aW9uVXBkYXRlTGlzdGVuZXJQ
cm94eS5nZXQoKV0pOwogICAgIH0KLSAgICBbX2NvcmVMb2NhdGlvblByb3ZpZGVyLmdldCgpIHNl
dEVuYWJsZUhpZ2hBY2N1cmFjeTpfZW5hYmxlSGlnaEFjY3VyYWN5XTsKLSAgICBbX2NvcmVMb2Nh
dGlvblByb3ZpZGVyLmdldCgpIHN0YXJ0XTsKLX0KIAotI3ByYWdtYSBtYXJrIC0gSW50ZXJuYWwg
dXRpbGl0eSBtZXRob2RzCi0tICh2b2lkKV9zdGFydENvcmVMb2NhdGlvbkRlbGVnYXRlCi17Ci0g
ICAgQVNTRVJUKCEoX3JlZ2lzdGVyZWRXZWJWaWV3cy5pc0VtcHR5KCkgJiYgX3dlYlZpZXdzV2Fp
dGluZ0ZvckNvcmVMb2NhdGlvblN0YXJ0LmlzRW1wdHkoKSkpOworICAgIGlmICghX3dlYlZpZXdz
V2FpdGluZ0ZvckNvcmVMb2NhdGlvbkF1dGhvcml6YXRpb24uaXNFbXB0eSgpKQorICAgICAgICBb
X2NvcmVMb2NhdGlvblByb3ZpZGVyIHJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb25dOwog
Ci0gICAgaWYgKF9pc1N1c3BlbmRlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZGlzcGF0Y2hf
YXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKLSAgICAgICAgaWYgKCFfY29yZUxv
Y2F0aW9uUHJvdmlkZXIuZ2V0KCkpIHsKLSAgICAgICAgICAgIEFTU0VSVCghX2NvcmVMb2NhdGlv
blVwZGF0ZUxpc3RlbmVyUHJveHkpOwotICAgICAgICAgICAgX2NvcmVMb2NhdGlvblVwZGF0ZUxp
c3RlbmVyUHJveHkgPSBhZG9wdE5TKFtbX1dlYkNvcmVMb2NhdGlvblVwZGF0ZVRocmVhZGluZ1By
b3h5IGFsbG9jXSBpbml0V2l0aFByb3ZpZGVyOnNlbGZdKTsKLSAgICAgICAgICAgIF9jb3JlTG9j
YXRpb25Qcm92aWRlciA9IGFkb3B0TlMoW1tXZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3Zp
ZGVyIGFsbG9jXSBpbml0V2l0aExpc3RlbmVyOl9jb3JlTG9jYXRpb25VcGRhdGVMaXN0ZW5lclBy
b3h5LmdldCgpXSk7Ci0gICAgICAgIH0KLSAgICAgICAgW19jb3JlTG9jYXRpb25Qcm92aWRlci5n
ZXQoKSBzdGFydF07Ci0gICAgfSk7Ci19Ci0KLS0gKHZvaWQpX3N0b3BDb3JlTG9jYXRpb25EZWxl
Z2F0ZUlmTmVlZGVkCi17Ci0gICAgaWYgKF9yZWdpc3RlcmVkV2ViVmlld3MuaXNFbXB0eSgpICYm
IF93ZWJWaWV3c1dhaXRpbmdGb3JDb3JlTG9jYXRpb25TdGFydC5pc0VtcHR5KCkgJiYgX3dhcm1V
cFdlYlZpZXdzLmlzRW1wdHkoKSkgewotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9n
ZXRfbWFpbl9xdWV1ZSgpLCBeewotICAgICAgICAgICAgW19jb3JlTG9jYXRpb25Qcm92aWRlci5n
ZXQoKSBzdG9wXTsKLSAgICAgICAgfSk7Ci0gICAgICAgIF9lbmFibGVIaWdoQWNjdXJhY3kgPSBO
TzsKLSAgICAgICAgX2xhc3RQb3NpdGlvbi5jbGVhcigpOworICAgIGlmICghX3JlZ2lzdGVyZWRX
ZWJWaWV3cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgW19jb3JlTG9jYXRpb25Qcm92aWRlciBzZXRF
bmFibGVIaWdoQWNjdXJhY3k6X2VuYWJsZUhpZ2hBY2N1cmFjeV07CisgICAgICAgIFtfY29yZUxv
Y2F0aW9uUHJvdmlkZXIgc3RhcnRdOwogICAgIH0KIH0KIAorI3ByYWdtYSBtYXJrIC0gSW50ZXJu
YWwgdXRpbGl0eSBtZXRob2RzCisKIC0gKHZvaWQpX2hhbmRsZVBlbmRpbmdJbml0aWFsUG9zaXRp
b246KE5TVGltZXIqKXRpbWVyCiB7CiAgICAgQVNTRVJUX1VOVVNFRCh0aW1lciwgdGltZXIgPT0g
X3NlbmRMYXN0UG9zaXRpb25Bc3luY2hyb25vdXNseVRpbWVyKTsKQEAgLTIwMiwxMyArMTc3LDIx
IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhYm9ydFNlbmRMYXN0UG9zaXRpb24oV2ViR2VvbG9jYXRp
b25Qcm92aWRlcklPUyogcHJvdmlkZXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIF9yZWdpc3Rl
cmVkV2ViVmlld3MuYWRkKHdlYlZpZXcpOwotICAgIF93YXJtVXBXZWJWaWV3cy5yZW1vdmUod2Vi
Vmlldyk7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGlmICghQ2FsbFVJRGVsZWdhdGVSZXR1cm5p
bmdCb29sZWFuKFlFUywgd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXdDYW5DaGVja0dlb2xvY2F0
aW9uQXV0aG9yaXphdGlvblN0YXR1czopKSkKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCiAKLSAg
ICBbc2VsZiBfc3RhcnRDb3JlTG9jYXRpb25EZWxlZ2F0ZV07CisgICAgaWYgKCFfaXNTdXNwZW5k
ZWQpIHsKKyAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwg
XnsKKyAgICAgICAgICAgIGlmICghX2NvcmVMb2NhdGlvblByb3ZpZGVyKSB7CisgICAgICAgICAg
ICAgICAgQVNTRVJUKCFfY29yZUxvY2F0aW9uVXBkYXRlTGlzdGVuZXJQcm94eSk7CisgICAgICAg
ICAgICAgICAgX2NvcmVMb2NhdGlvblVwZGF0ZUxpc3RlbmVyUHJveHkgPSBhZG9wdE5TKFtbX1dl
YkNvcmVMb2NhdGlvblVwZGF0ZVRocmVhZGluZ1Byb3h5IGFsbG9jXSBpbml0V2l0aFByb3ZpZGVy
OnNlbGZdKTsKKyAgICAgICAgICAgICAgICBfY29yZUxvY2F0aW9uUHJvdmlkZXIgPSBhZG9wdE5T
KFtbV2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlciBhbGxvY10gaW5pdFdpdGhMaXN0
ZW5lcjpfY29yZUxvY2F0aW9uVXBkYXRlTGlzdGVuZXJQcm94eS5nZXQoKV0pOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgW19jb3JlTG9jYXRpb25Qcm92aWRlciBzdGFydF07CisgICAgICAg
IH0pOworICAgIH0KIAogICAgIC8vIFdlIHNlbmQgdGhlIGxhc3RQb3NpdGlvbiBhc3luY2hyb25v
dXNseSBiZWNhdXNlIFdlYktpdCBkb2VzIG5vdCBoYW5kbGUgdXBkYXRpbmcgdGhlIHBvc2l0aW9u
IHN5bmNocm9ub3VzbHkuCiAgICAgLy8gT24gV2ViS2l0Miwgd2UgY291bGQgc2tpcCB0aGF0IGFu
ZCBzZW5kIHRoZSBwb3NpdGlvbiBkaXJlY3RseSBmcm9tIHRoZSBVSVByb2Nlc3MuCkBAIC0yMzAs
NyArMjEzLDE0IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhYm9ydFNlbmRMYXN0UG9zaXRpb24oV2Vi
R2VvbG9jYXRpb25Qcm92aWRlcklPUyogcHJvdmlkZXIpCiAKICAgICBfcmVnaXN0ZXJlZFdlYlZp
ZXdzLnJlbW92ZSh3ZWJWaWV3KTsKICAgICBfcGVuZGluZ0luaXRpYWxQb3NpdGlvbldlYlZpZXcu
cmVtb3ZlKHdlYlZpZXcpOwotICAgIFtzZWxmIF9zdG9wQ29yZUxvY2F0aW9uRGVsZWdhdGVJZk5l
ZWRlZF07CisKKyAgICBpZiAoX3JlZ2lzdGVyZWRXZWJWaWV3cy5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICAgICAg
ICAgIFtfY29yZUxvY2F0aW9uUHJvdmlkZXIgc3RvcF07CisgICAgICAgIH0pOworICAgICAgICBf
ZW5hYmxlSGlnaEFjY3VyYWN5ID0gTk87CisgICAgICAgIF9sYXN0UG9zaXRpb24uY2xlYXIoKTsK
KyAgICB9CiB9CiAKIC0gKFdlYkdlb2xvY2F0aW9uUG9zaXRpb24gKilsYXN0UG9zaXRpb24KQEAg
LTI0NCw3ICsyMzQsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWJvcnRTZW5kTGFzdFBvc2l0aW9u
KFdlYkdlb2xvY2F0aW9uUHJvdmlkZXJJT1MqIHByb3ZpZGVyKQogICAgIEFTU0VSVChXZWJUaHJl
YWRJc0xvY2tlZE9yRGlzYWJsZWQoKSk7CiAgICAgX2VuYWJsZUhpZ2hBY2N1cmFjeSA9IF9lbmFi
bGVIaWdoQWNjdXJhY3kgfHwgZW5hYmxlSGlnaEFjY3VyYWN5OwogICAgIGRpc3BhdGNoX2FzeW5j
KGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57Ci0gICAgICAgIFtfY29yZUxvY2F0aW9uUHJv
dmlkZXIuZ2V0KCkgc2V0RW5hYmxlSGlnaEFjY3VyYWN5Ol9lbmFibGVIaWdoQWNjdXJhY3ldOwor
ICAgICAgICBbX2NvcmVMb2NhdGlvblByb3ZpZGVyIHNldEVuYWJsZUhpZ2hBY2N1cmFjeTpfZW5h
YmxlSGlnaEFjY3VyYWN5XTsKICAgICB9KTsKIH0KIApAQCAtMjU2LDgzICsyNDYsNDkgQEAgc3Rh
dGljIGlubGluZSB2b2lkIGFib3J0U2VuZExhc3RQb3NpdGlvbihXZWJHZW9sb2NhdGlvblByb3Zp
ZGVySU9TKiBwcm92aWRlcikKICAgICBpZiAoIUNhbGxVSURlbGVnYXRlUmV0dXJuaW5nQm9vbGVh
bihZRVMsIHdlYlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3Q2FuQ2hlY2tHZW9sb2NhdGlvbkF1dGhv
cml6YXRpb25TdGF0dXM6KSkpCiAgICAgICAgIHJldHVybjsKICNlbmRpZgotICAgIF93ZWJWaWV3
c1dhaXRpbmdGb3JDb3JlTG9jYXRpb25TdGFydC5hZGQod2ViVmlldywgbGlzdGVuZXIpOworICAg
IF93ZWJWaWV3c1dhaXRpbmdGb3JDb3JlTG9jYXRpb25BdXRob3JpemF0aW9uLmFkZCh3ZWJWaWV3
LCBsaXN0ZW5lcik7CiAgICAgX3RyYWNrZWRXZWJWaWV3cy5hZGQod2ViVmlldyk7CiAKLSAgICBb
c2VsZiBfc3RhcnRDb3JlTG9jYXRpb25EZWxlZ2F0ZV07CisgICAgZGlzcGF0Y2hfYXN5bmMoZGlz
cGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICAgICAgaWYgKCFfY29yZUxvY2F0aW9uUHJv
dmlkZXIpIHsKKyAgICAgICAgICAgIEFTU0VSVCghX2NvcmVMb2NhdGlvblVwZGF0ZUxpc3RlbmVy
UHJveHkpOworICAgICAgICAgICAgX2NvcmVMb2NhdGlvblVwZGF0ZUxpc3RlbmVyUHJveHkgPSBh
ZG9wdE5TKFtbX1dlYkNvcmVMb2NhdGlvblVwZGF0ZVRocmVhZGluZ1Byb3h5IGFsbG9jXSBpbml0
V2l0aFByb3ZpZGVyOnNlbGZdKTsKKyAgICAgICAgICAgIF9jb3JlTG9jYXRpb25Qcm92aWRlciA9
IGFkb3B0TlMoW1tXZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyIGFsbG9jXSBpbml0
V2l0aExpc3RlbmVyOl9jb3JlTG9jYXRpb25VcGRhdGVMaXN0ZW5lclByb3h5LmdldCgpXSk7Cisg
ICAgICAgIH0KKyAgICAgICAgW19jb3JlTG9jYXRpb25Qcm92aWRlciByZXF1ZXN0R2VvbG9jYXRp
b25BdXRob3JpemF0aW9uXTsKKyAgICB9KTsKIH0KIAotLSAodm9pZCljYW5jZWxXYXJtVXBGb3JX
ZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldworLSAodm9pZClnZW9sb2NhdGlvbkF1dGhvcml6YXRp
b25HcmFudGVkCiB7Ci0gICAgQVNTRVJUKFdlYlRocmVhZElzTG9ja2VkT3JEaXNhYmxlZCgpKTsK
KyAgICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJyZW50KCkpOwogCi0gICAgX3dhcm1VcFdlYlZpZXdz
LnJlbW92ZSh3ZWJWaWV3KTsKLSAgICBbc2VsZiBfc3RvcENvcmVMb2NhdGlvbkRlbGVnYXRlSWZO
ZWVkZWRdOwotfQorICAgIEdlb2xvY2F0aW9uSW5pdGlhbGl6YXRpb25DYWxsYmFja01hcCByZXF1
ZXN0czsKKyAgICByZXF1ZXN0cy5zd2FwKF93ZWJWaWV3c1dhaXRpbmdGb3JDb3JlTG9jYXRpb25B
dXRob3JpemF0aW9uKTsKIAotLSAodm9pZClzdG9wVHJhY2tpbmdXZWJWaWV3OihXZWJWaWV3Kil3
ZWJWaWV3Ci17Ci0gICAgQVNTRVJUKFdlYlRocmVhZElzTG9ja2VkT3JEaXNhYmxlZCgpKTsKLSAg
ICBfdHJhY2tlZFdlYlZpZXdzLnJlbW92ZSh3ZWJWaWV3KTsKKyAgICBmb3IgKGNvbnN0IGF1dG8m
IHNsb3QgOiByZXF1ZXN0cykKKyAgICAgICAgW3Nsb3QudmFsdWUgaW5pdGlhbGl6YXRpb25BbGxv
d2VkV2ViVmlldzpzbG90LmtleS5nZXQoKV07CiB9CiAKLSNwcmFnbWEgbWFyayAtIE1pcnJvciB0
byBXZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblVwZGF0ZUxpc3RlbmVyIGNhbGxlZCBieSB0aGUg
cHJveHkuCi0tICh2b2lkKWdlb2xvY2F0aW9uRGVsZWdhdGVTdGFydGVkCistICh2b2lkKWdlb2xv
Y2F0aW9uQXV0aG9yaXphdGlvbkRlbmllZAogewogICAgIEFTU0VSVChXZWJUaHJlYWRJc0N1cnJl
bnQoKSk7CiAKLSAgICAvLyBUaGlzIGNvdWxkIGJlIGNhbGxlZCByZWN1cnNpdmVseS4gV2UgbXVz
dCBjbGVhbiBfd2ViVmlld3NXYWl0aW5nRm9yQ29yZUxvY2F0aW9uU3RhcnQgYmVmb3JlIGludm9r
aW5nIHRoZSBjYWxsYmFja3MuCi0gICAgVmVjdG9yPFJldGFpblB0cjxXZWJWaWV3PiA+IHdlYlZp
ZXdzOwotICAgIGNvcHlLZXlzVG9WZWN0b3IoX3dlYlZpZXdzV2FpdGluZ0ZvckNvcmVMb2NhdGlv
blN0YXJ0LCB3ZWJWaWV3cyk7Ci0KLSAgICBWZWN0b3I8UmV0YWluUHRyPGlkPFdlYkdlb2xvY2F0
aW9uUHJvdmlkZXJJbml0aWFsaXphdGlvbkxpc3RlbmVyPiA+ID4gaW5pdGlhbGl6YXRpb25MaXN0
ZW5lcnM7Ci0gICAgY29weVZhbHVlc1RvVmVjdG9yKF93ZWJWaWV3c1dhaXRpbmdGb3JDb3JlTG9j
YXRpb25TdGFydCwgaW5pdGlhbGl6YXRpb25MaXN0ZW5lcnMpOwotCi0gICAgX3dlYlZpZXdzV2Fp
dGluZ0ZvckNvcmVMb2NhdGlvblN0YXJ0LmNsZWFyKCk7Ci0KLSAgICAvLyBTdGFydCB3YXJtdXAg
cGVyaW9kIGZvciBlYWNoIHZpZXcgaW4gaW50aWFsaXphdGlvbi4KLSAgICBjb25zdCBpbnQ2NF90
IHdhcm1VcFRpbWVvdXRJbnRlcnZhbCA9IDIwICogTlNFQ19QRVJfU0VDOwotICAgIGRpc3BhdGNo
X3RpbWVfdCB3aGVuID0gZGlzcGF0Y2hfdGltZShESVNQQVRDSF9USU1FX05PVywgd2FybVVwVGlt
ZW91dEludGVydmFsKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdlYlZpZXdzLnNpemUo
KTsgKytpKSB7Ci0gICAgICAgIFdlYlZpZXcgKndlYlZpZXcgPSB3ZWJWaWV3c1tpXS5nZXQoKTsK
LQotICAgICAgICBfd2FybVVwV2ViVmlld3MuYWRkKHdlYlZpZXcpOwotCi0gICAgICAgIGRpc3Bh
dGNoX2FmdGVyKHdoZW4sIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57Ci0gICAgICAgICAg
ICBfd2FybVVwV2ViVmlld3MucmVtb3ZlKHdlYlZpZXcpOwotICAgICAgICAgICAgW3NlbGYgX3N0
b3BDb3JlTG9jYXRpb25EZWxlZ2F0ZUlmTmVlZGVkXTsKLSAgICAgICAgfSk7Ci0gICAgfQorICAg
IEdlb2xvY2F0aW9uSW5pdGlhbGl6YXRpb25DYWxsYmFja01hcCByZXF1ZXN0czsKKyAgICByZXF1
ZXN0cy5zd2FwKF93ZWJWaWV3c1dhaXRpbmdGb3JDb3JlTG9jYXRpb25BdXRob3JpemF0aW9uKTsK
IAotICAgIC8vIEluZm9ybSB0aGUgbGlzdGVuZXJzIHRoZSBpbml0aWFsaXphdGlvbiBzdWNjZWVk
ZWQuCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3ZWJWaWV3cy5zaXplKCk7ICsraSkgewot
ICAgICAgICBSZXRhaW5QdHI8V2ViVmlldz4mIHdlYlZpZXcgPSB3ZWJWaWV3c1tpXTsKLSAgICAg
ICAgUmV0YWluUHRyPGlkPFdlYkdlb2xvY2F0aW9uUHJvdmlkZXJJbml0aWFsaXphdGlvbkxpc3Rl
bmVyPiA+JiBsaXN0ZW5lciA9IGluaXRpYWxpemF0aW9uTGlzdGVuZXJzW2ldOwotICAgICAgICBb
bGlzdGVuZXIuZ2V0KCkgaW5pdGlhbGl6YXRpb25BbGxvd2VkV2ViVmlldzp3ZWJWaWV3LmdldCgp
IHByb3ZpZGVyOnNlbGZdOwotICAgIH0KKyAgICBmb3IgKGNvbnN0IGF1dG8mIHNsb3QgOiByZXF1
ZXN0cykKKyAgICAgICAgW3Nsb3QudmFsdWUgaW5pdGlhbGl6YXRpb25EZW5pZWRXZWJWaWV3OnNs
b3Qua2V5LmdldCgpXTsKIH0KIAotLSAodm9pZClnZW9sb2NhdGlvbkRlbGVnYXRlVW5hYmxlVG9T
dGFydAorLSAodm9pZClzdG9wVHJhY2tpbmdXZWJWaWV3OihXZWJWaWV3Kil3ZWJWaWV3CiB7Ci0g
ICAgQVNTRVJUKFdlYlRocmVhZElzQ3VycmVudCgpKTsKLQotICAgIC8vIFRoaXMgY291bGQgYmUg
Y2FsbGVkIHJlY3Vyc2l2ZWx5LiBXZSBtdXN0IGNsZWFuIF93ZWJWaWV3c1dhaXRpbmdGb3JDb3Jl
TG9jYXRpb25TdGFydCBiZWZvcmUgaW52b2tpbmcgdGhlIGNhbGxiYWNrcy4KLSAgICBWZWN0b3I8
UmV0YWluUHRyPFdlYlZpZXc+ID4gd2ViVmlld3M7Ci0gICAgY29weUtleXNUb1ZlY3Rvcihfd2Vi
Vmlld3NXYWl0aW5nRm9yQ29yZUxvY2F0aW9uU3RhcnQsIHdlYlZpZXdzKTsKLQotICAgIFZlY3Rv
cjxSZXRhaW5QdHI8aWQ8V2ViR2VvbG9jYXRpb25Qcm92aWRlckluaXRpYWxpemF0aW9uTGlzdGVu
ZXI+ID4gPiBpbml0aWFsaXphdGlvbkxpc3RlbmVyczsKLSAgICBjb3B5VmFsdWVzVG9WZWN0b3Io
X3dlYlZpZXdzV2FpdGluZ0ZvckNvcmVMb2NhdGlvblN0YXJ0LCBpbml0aWFsaXphdGlvbkxpc3Rl
bmVycyk7Ci0KLSAgICBfd2ViVmlld3NXYWl0aW5nRm9yQ29yZUxvY2F0aW9uU3RhcnQuY2xlYXIo
KTsKLQotICAgIC8vIEluZm9ybSB0aGUgbGlzdGVuZXJzIG9mIHRoZSBmYWlsdXJlLgotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgd2ViVmlld3Muc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgUmV0
YWluUHRyPFdlYlZpZXc+JiB3ZWJWaWV3ID0gd2ViVmlld3NbaV07Ci0gICAgICAgIFJldGFpblB0
cjxpZDxXZWJHZW9sb2NhdGlvblByb3ZpZGVySW5pdGlhbGl6YXRpb25MaXN0ZW5lcj4gPiYgbGlz
dGVuZXIgPSBpbml0aWFsaXphdGlvbkxpc3RlbmVyc1tpXTsKLSAgICAgICAgW2xpc3RlbmVyLmdl
dCgpIGluaXRpYWxpemF0aW9uRGVuaWVkV2ViVmlldzp3ZWJWaWV3LmdldCgpIHByb3ZpZGVyOnNl
bGZdOwotICAgIH0KKyAgICBBU1NFUlQoV2ViVGhyZWFkSXNMb2NrZWRPckRpc2FibGVkKCkpOwor
ICAgIF90cmFja2VkV2ViVmlld3MucmVtb3ZlKHdlYlZpZXcpOwogfQogCisjcHJhZ21hIG1hcmsg
LSBNaXJyb3IgdG8gV2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25VcGRhdGVMaXN0ZW5lciBjYWxs
ZWQgYnkgdGhlIHByb3h5LgorCiAtICh2b2lkKXBvc2l0aW9uQ2hhbmdlZDooV2ViR2VvbG9jYXRp
b25Qb3NpdGlvbiopcG9zaXRpb24KIHsKICAgICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJyZW50KCkp
OwpAQCAtMzY3LDExICszMjMsOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWJvcnRTZW5kTGFzdFBv
c2l0aW9uKFdlYkdlb2xvY2F0aW9uUHJvdmlkZXJJT1MqIHByb3ZpZGVyKQogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIC8vIDEpIFN0b3AgYWxsIG9uZ29pbmcgR2VvbG9jYXRpb24gaW5pdGlh
bGl6YXRpb24gYW5kIHRyYWNraW5nLgotICAgIF93ZWJWaWV3c1dhaXRpbmdGb3JDb3JlTG9jYXRp
b25TdGFydC5jbGVhcigpOwotICAgIF93YXJtVXBXZWJWaWV3cy5jbGVhcigpOworICAgIF93ZWJW
aWV3c1dhaXRpbmdGb3JDb3JlTG9jYXRpb25BdXRob3JpemF0aW9uLmNsZWFyKCk7CiAgICAgX3Jl
Z2lzdGVyZWRXZWJWaWV3cy5jbGVhcigpOwogICAgIGFib3J0U2VuZExhc3RQb3NpdGlvbihzZWxm
KTsKLSAgICBbc2VsZiBfc3RvcENvcmVMb2NhdGlvbkRlbGVnYXRlSWZOZWVkZWRdOwogCiAgICAg
Ly8gMikgUmVzZXQgdGhlIHZpZXdzLCBlYWNoIGZyYW1lIHdpbGwgcmVnaXN0ZXIgYmFjayBpZiBu
ZWVkZWQuCiAgICAgVmVjdG9yPFdlYlZpZXcqPiB3ZWJWaWV3c0NvcHk7CkBAIC0zOTQsMzAgKzM0
OCw0MCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWJvcnRTZW5kTGFzdFBvc2l0aW9uKFdlYkdlb2xv
Y2F0aW9uUHJvdmlkZXJJT1MqIHByb3ZpZGVyKQogICAgIHJldHVybiBzZWxmOwogfQogCi0tICh2
b2lkKWdlb2xvY2F0aW9uRGVsZWdhdGVTdGFydGVkCistICh2b2lkKWdlb2xvY2F0aW9uQXV0aG9y
aXphdGlvbkdyYW50ZWQKIHsKLSAgICBXZWJUaHJlYWRSdW4oXnsgW19wcm92aWRlciBnZW9sb2Nh
dGlvbkRlbGVnYXRlU3RhcnRlZF07IH0pOworICAgIFdlYlRocmVhZFJ1biheeworICAgICAgICBb
X3Byb3ZpZGVyIGdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWRdOworICAgIH0pOwogfQog
Ci0tICh2b2lkKWdlb2xvY2F0aW9uRGVsZWdhdGVVbmFibGVUb1N0YXJ0CistICh2b2lkKWdlb2xv
Y2F0aW9uQXV0aG9yaXphdGlvbkRlbmllZAogewotICAgIFdlYlRocmVhZFJ1biheeyBbX3Byb3Zp
ZGVyIGdlb2xvY2F0aW9uRGVsZWdhdGVVbmFibGVUb1N0YXJ0XTsgfSk7CisgICAgV2ViVGhyZWFk
UnVuKF57CisgICAgICAgIFtfcHJvdmlkZXIgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uRGVuaWVk
XTsKKyAgICB9KTsKIH0KIAogLSAodm9pZClwb3NpdGlvbkNoYW5nZWQ6KFdlYkNvcmU6Okdlb2xv
Y2F0aW9uUG9zaXRpb24qKXBvc2l0aW9uCiB7CiAgICAgUmV0YWluUHRyPFdlYkdlb2xvY2F0aW9u
UG9zaXRpb24+IHdlYlBvc2l0aW9uID0gYWRvcHROUyhbW1dlYkdlb2xvY2F0aW9uUG9zaXRpb24g
YWxsb2NdIGluaXRXaXRoR2VvbG9jYXRpb25Qb3NpdGlvbjpwb3NpdGlvbl0pOwotICAgIFdlYlRo
cmVhZFJ1biheeyBbX3Byb3ZpZGVyIHBvc2l0aW9uQ2hhbmdlZDp3ZWJQb3NpdGlvbi5nZXQoKV07
IH0pOworICAgIFdlYlRocmVhZFJ1biheeworICAgICAgICBbX3Byb3ZpZGVyIHBvc2l0aW9uQ2hh
bmdlZDp3ZWJQb3NpdGlvbi5nZXQoKV07CisgICAgfSk7CiB9CiAKIC0gKHZvaWQpZXJyb3JPY2N1
cnJlZDooTlNTdHJpbmcgKillcnJvck1lc3NhZ2UKIHsKLSAgICBXZWJUaHJlYWRSdW4oXnsgW19w
cm92aWRlciBlcnJvck9jY3VycmVkOmVycm9yTWVzc2FnZV07IH0pOworICAgIFdlYlRocmVhZFJ1
biheeworICAgICAgICBbX3Byb3ZpZGVyIGVycm9yT2NjdXJyZWQ6ZXJyb3JNZXNzYWdlXTsKKyAg
ICB9KTsKIH0KIAogLSAodm9pZClyZXNldEdlb2xvY2F0aW9uCiB7Ci0gICAgV2ViVGhyZWFkUnVu
KF57IFtfcHJvdmlkZXIgcmVzZXRHZW9sb2NhdGlvbl07IH0pOworICAgIFdlYlRocmVhZFJ1bihe
eworICAgICAgICBbX3Byb3ZpZGVyIHJlc2V0R2VvbG9jYXRpb25dOworICAgIH0pOwogfQogQGVu
ZAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9s
b2NhdGlvbkNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdl
b2xvY2F0aW9uQ2xpZW50Lm1tCmluZGV4IGQ3OTYzMzJmZDBmZWJjMjI3ODI5OGVmYjhjNjkwMzNi
NzU3ZTdmNTUuLjFmZjhkY2NjOWIxOGY5NThiYmQyM2ExZmYyMmY5ZmUzMjEyOGExY2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xp
ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0
aW9uQ2xpZW50Lm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSwg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDksIDIwMTIsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01Nyw5ICs1Nyw4IEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogewogICAgIFJlZlB0cjxHZW9sb2NhdGlvbj4gX2dlb2xvY2F0aW9uOwogICAgIFJl
dGFpblB0cjxXZWJWaWV3ICo+IF93ZWJWaWV3OwotICAgIFJldGFpblB0cjxpZDxXZWJHZW9sb2Nh
dGlvblByb3ZpZGVyPiA+IF9nZW9sb2NhdGlvblByb3ZpZGVyOwogfQotLSAoaWQpaW5pdFdpdGhH
ZW9sb2NhdGlvbjooR2VvbG9jYXRpb24qKWdlb2xvY2F0aW9uIGZvcldlYlZpZXc6KFdlYlZpZXcq
KXdlYlZpZXcgcHJvdmlkZXI6KGlkPFdlYkdlb2xvY2F0aW9uUHJvdmlkZXI+KXByb3ZpZGVyOwor
LSAoaWQpaW5pdFdpdGhHZW9sb2NhdGlvbjooR2VvbG9jYXRpb24qKWdlb2xvY2F0aW9uIGZvcldl
YlZpZXc6KFdlYlZpZXcqKXdlYlZpZXc7CiBAZW5kCiAjZW5kaWYKIApAQCAtMTU3LDE0ICsxNTYs
MTMgQEAgR2VvbG9jYXRpb25Qb3NpdGlvbiogV2ViR2VvbG9jYXRpb25DbGllbnQ6Omxhc3RQb3Np
dGlvbigpCiAKICNlbHNlCiBAaW1wbGVtZW50YXRpb24gV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0
ZW5lcgotLSAoaWQpaW5pdFdpdGhHZW9sb2NhdGlvbjooR2VvbG9jYXRpb24qKWdlb2xvY2F0aW9u
IGZvcldlYlZpZXc6KFdlYlZpZXcqKXdlYlZpZXcgcHJvdmlkZXI6KGlkPFdlYkdlb2xvY2F0aW9u
UHJvdmlkZXI+KXByb3ZpZGVyCistIChpZClpbml0V2l0aEdlb2xvY2F0aW9uOihHZW9sb2NhdGlv
biopZ2VvbG9jYXRpb24gZm9yV2ViVmlldzooV2ViVmlldyopd2ViVmlldwogewogICAgIHNlbGYg
PSBbc3VwZXIgaW5pdF07CiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwogICAg
IF9nZW9sb2NhdGlvbiA9IGdlb2xvY2F0aW9uOwogICAgIF93ZWJWaWV3ID0gd2ViVmlldzsKLSAg
ICBfZ2VvbG9jYXRpb25Qcm92aWRlciA9IHByb3ZpZGVyOwogICAgIHJldHVybiBzZWxmOwogfQog
CkBAIC0xNzksNyArMTc3LDYgQEAgR2VvbG9jYXRpb25Qb3NpdGlvbiogV2ViR2VvbG9jYXRpb25D
bGllbnQ6Omxhc3RQb3NpdGlvbigpCiB7CiAgICAgV2ViVGhyZWFkUnVuKF57CiAgICAgICAgIF9n
ZW9sb2NhdGlvbi0+c2V0SXNBbGxvd2VkKGZhbHNlKTsKLSAgICAgICAgW19nZW9sb2NhdGlvblBy
b3ZpZGVyLmdldCgpIGNhbmNlbFdhcm1VcEZvcldlYlZpZXc6X3dlYlZpZXcuZ2V0KCldOwogICAg
IH0pOwogfQogCkBAIC0yMTEsMTcgKzIwOCwxNSBAQCBHZW9sb2NhdGlvblBvc2l0aW9uKiBXZWJH
ZW9sb2NhdGlvbkNsaWVudDo6bGFzdFBvc2l0aW9uKCkKICAgICByZXR1cm4gc2VsZjsKIH0KIAot
LSAodm9pZClpbml0aWFsaXphdGlvbkFsbG93ZWRXZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldyBw
cm92aWRlcjooaWQ8V2ViR2VvbG9jYXRpb25Qcm92aWRlcj4pcHJvdmlkZXIKKy0gKHZvaWQpaW5p
dGlhbGl6YXRpb25BbGxvd2VkV2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXcKIHsKICAgICBCRUdJ
Tl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKICAgICBGcmFtZSogZnJhbWUgPSBtX2dlb2xvY2F0
aW9uLT5mcmFtZSgpOwotICAgIGlmICghZnJhbWUpIHsKLSAgICAgICAgW3Byb3ZpZGVyIGNhbmNl
bFdhcm1VcEZvcldlYlZpZXc6d2ViVmlld107CisgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0
dXJuOwotICAgIH0KICAgICBXZWJTZWN1cml0eU9yaWdpbiAqd2ViT3JpZ2luID0gW1tXZWJTZWN1
cml0eU9yaWdpbiBhbGxvY10gX2luaXRXaXRoV2ViQ29yZVNlY3VyaXR5T3JpZ2luOmZyYW1lLT5k
b2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpXTsKLSAgICBXZWJHZW9sb2NhdGlvblBvbGljeUxp
c3RlbmVyICpsaXN0ZW5lciA9IFtbV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciBhbGxvY10g
aW5pdFdpdGhHZW9sb2NhdGlvbjptX2dlb2xvY2F0aW9uLmdldCgpIGZvcldlYlZpZXc6d2ViVmll
dyBwcm92aWRlcjpwcm92aWRlcl07CisgICAgV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciAq
bGlzdGVuZXIgPSBbW1dlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIgYWxsb2NdIGluaXRXaXRo
R2VvbG9jYXRpb246bV9nZW9sb2NhdGlvbi5nZXQoKSBmb3JXZWJWaWV3OndlYlZpZXddOwogICAg
IFNFTCBzZWxlY3RvciA9IEBzZWxlY3Rvcih3ZWJWaWV3OmRlY2lkZVBvbGljeUZvckdlb2xvY2F0
aW9uUmVxdWVzdEZyb21PcmlnaW46ZnJhbWU6bGlzdGVuZXI6KTsKICAgICBDYWxsVUlEZWxlZ2F0
ZSh3ZWJWaWV3LCBzZWxlY3Rvciwgd2ViT3JpZ2luLCBraXQoZnJhbWUpLCBsaXN0ZW5lcik7CiAg
ICAgW3dlYk9yaWdpbiByZWxlYXNlXTsKQEAgLTIzMCw3ICsyMjUsNyBAQCBHZW9sb2NhdGlvblBv
c2l0aW9uKiBXZWJHZW9sb2NhdGlvbkNsaWVudDo6bGFzdFBvc2l0aW9uKCkKICAgICBFTkRfQkxP
Q0tfT0JKQ19FWENFUFRJT05TOwogfQogCi0tICh2b2lkKWluaXRpYWxpemF0aW9uRGVuaWVkV2Vi
VmlldzooV2ViVmlldyAqKXdlYlZpZXcgcHJvdmlkZXI6KGlkPFdlYkdlb2xvY2F0aW9uUHJvdmlk
ZXI+KXByb3ZpZGVyCistICh2b2lkKWluaXRpYWxpemF0aW9uRGVuaWVkV2ViVmlldzooV2ViVmll
dyAqKXdlYlZpZXcKIHsKICAgICBtX2dlb2xvY2F0aW9uLT5zZXRJc0FsbG93ZWQoZmFsc2UpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5o
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCmluZGV4IGM5YWVh
Nzg0OGRiZWQ5NjZkOWQzZTc5NGU0MTViZmEwNTcyNTQyZTcuLmFiNzNhOWIwZDljM2IwNWZiMjg1
MWM5NzNhNzQyNDg4NjBlMzlkN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXdQcml2YXRlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA1LTIw
MTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA1
LTIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC05OTYsOCArOTk2LDggQEAgQ291bGQgYmUgd29ydGggYWRkaW5nIHRv
IHRoZSBBUEkuCiBAcHJvdG9jb2wgV2ViR2VvbG9jYXRpb25Qcm92aWRlcjsKIAogQHByb3RvY29s
IFdlYkdlb2xvY2F0aW9uUHJvdmlkZXJJbml0aWFsaXphdGlvbkxpc3RlbmVyIDxOU09iamVjdD4K
LS0gKHZvaWQpaW5pdGlhbGl6YXRpb25BbGxvd2VkV2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXcg
cHJvdmlkZXI6KGlkPFdlYkdlb2xvY2F0aW9uUHJvdmlkZXI+KXByb3ZpZGVyOwotLSAodm9pZClp
bml0aWFsaXphdGlvbkRlbmllZFdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3IHByb3ZpZGVyOihp
ZDxXZWJHZW9sb2NhdGlvblByb3ZpZGVyPilwcm92aWRlcjsKKy0gKHZvaWQpaW5pdGlhbGl6YXRp
b25BbGxvd2VkV2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXc7CistICh2b2lkKWluaXRpYWxpemF0
aW9uRGVuaWVkV2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXc7CiBAZW5kCiAjZW5kaWYKIApAQCAt
MTAxMyw3ICsxMDEzLDYgQEAgQ291bGQgYmUgd29ydGggYWRkaW5nIHRvIHRoZSBBUEkuCiAjaWYg
VEFSR0VUX09TX0lQSE9ORQogLSAodm9pZClzZXRFbmFibGVIaWdoQWNjdXJhY3k6KEJPT0wpZW5h
YmxlSGlnaEFjY3VyYWN5OwogLSAodm9pZClpbml0aWFsaXplR2VvbG9jYXRpb25Gb3JXZWJWaWV3
OihXZWJWaWV3ICopd2ViVmlldyBsaXN0ZW5lcjooaWQ8V2ViR2VvbG9jYXRpb25Qcm92aWRlcklu
aXRpYWxpemF0aW9uTGlzdGVuZXI+KWxpc3RlbmVyOwotLSAodm9pZCljYW5jZWxXYXJtVXBGb3JX
ZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldzsKIC0gKHZvaWQpc3RvcFRyYWNraW5nV2ViVmlldzoo
V2ViVmlldyAqKXdlYlZpZXc7CiAjZW5kaWYKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0KaW5kZXggN2E2
ZmJhYWZhMDYwMTAzMmU1YzFkMmJkZmVhMWFhOTk0YjE1MDg0NC4uNWQzMmM5NzM3YmVkODNmODI1
OGJiNjA3OWYwMzc0N2Q2N2E3OWQ0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0KQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUwLDE3ICs1MCwxMSBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gK
ICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRp
b25zIgogCi1AaW50ZXJmYWNlIFdLR2VvbG9jYXRpb25Qcm92aWRlcklPUyAoKQotLSh2b2lkKV9z
dGFydFVwZGF0aW5nOwotLSh2b2lkKV9zdG9wVXBkYXRpbmc7Ci0tKHZvaWQpX3NldEVuYWJsZUhp
Z2hBY2N1cmFjeTooQk9PTCllbmFibGU7Ci1AZW5kCi0KIEBpbnRlcmZhY2UgV0tHZW9sb2NhdGlv
blByb3ZpZGVySU9TIChXZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblVwZGF0ZUxpc3RlbmVyKSA8
V2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25VcGRhdGVMaXN0ZW5lcj4KIEBlbmQKIAogQGludGVy
ZmFjZSBXS1dlYkFsbG93RGVueVBvbGljeUxpc3RlbmVyIDogTlNPYmplY3Q8V2ViQWxsb3dEZW55
UG9saWN5TGlzdGVuZXI+Ci0tIChpZClpbml0V2l0aFByb3ZpZGVyOihXS0dlb2xvY2F0aW9uUHJv
dmlkZXJJT1MqKXByb3ZpZGVyIHBlcm1pc3Npb25SZXF1ZXN0UHJveHk6KFBhc3NSZWZQdHI8R2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5PilwZXJtaXNzaW9uUmVxdWVzdFByb3h5Owor
LSAoaWQpaW5pdFdpdGhQZXJtaXNzaW9uUmVxdWVzdFByb3h5OihQYXNzUmVmUHRyPEdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eT4pcGVybWlzc2lvblJlcXVlc3RQcm94eTsKIC0gKHZv
aWQpZGVueU9ubHlUaGlzUmVxdWVzdCBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVDsKIEBlbmQKIApA
QCAtNjgsNiArNjIsMjMgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiB2b2lkIGRlY2lkZVBvbGljeUZv
ckdlb2xvY2F0aW9uUmVxdWVzdEZyb21PcmlnaW4oV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qLCBj
b25zdCBTdHJpbmcmIHVybFN0cmluZywgaWQ8V2ViQWxsb3dEZW55UG9saWN5TGlzdGVuZXI+LCBV
SVdpbmRvdyopOwogfTsKIAorc3RydWN0IEdlb2xvY2F0aW9uUmVxdWVzdERhdGEgeworICAgIFJl
ZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4gb3JpZ2luOworICAgIFJlZlB0cjxXZWJGcmFt
ZVByb3h5PiBmcmFtZTsKKyAgICBSZWZQdHI8R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFBy
b3h5PiBwZXJtaXNzaW9uUmVxdWVzdDsKKyAgICBSZXRhaW5QdHI8VUlXaW5kb3c+IHdpbmRvdzsK
K307CisKK0BpbXBsZW1lbnRhdGlvbiBXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MgeworICAgIFJl
ZlB0cjxXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4gX2dlb2xvY2F0aW9uTWFuYWdlcjsKKyAg
ICBSZXRhaW5QdHI8V2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlcj4gX2NvcmVMb2Nh
dGlvblByb3ZpZGVyOworICAgIEJPT0wgX2lzV2ViQ29yZUdlb2xvY2F0aW9uQWN0aXZlOworICAg
IFJlZlB0cjxXZWJHZW9sb2NhdGlvblBvc2l0aW9uPiBfbGFzdEFjdGl2ZVBvc2l0aW9uOworICAg
IFZlY3RvcjxHZW9sb2NhdGlvblJlcXVlc3REYXRhPiBfcmVxdWVzdHNXYWl0aW5nRm9yQ29yZUxv
Y2F0aW9uQXV0aG9yaXphdGlvbjsKK30KKworI3ByYWdtYSBtYXJrIC0gV0tHZW9sb2NhdGlvblBy
b3ZpZGVyIGNhbGxiYWNrcyBpbXBsZW1lbnRhdGlvbi4KKwogc3RhdGljIHZvaWQgc3RhcnRVcGRh
dGluZ0NhbGxiYWNrKFdLR2VvbG9jYXRpb25NYW5hZ2VyUmVmIGdlb2xvY2F0aW9uTWFuYWdlciwg
Y29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKICAgICBXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1Mg
Kmdlb2xvY2F0aW9uUHJvdmlkZXIgPSByZWludGVycHJldF9jYXN0PFdLR2VvbG9jYXRpb25Qcm92
aWRlcklPUyo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKTsKQEAgLTg5LDM0ICsxMDAs
NiBAQCBzdGF0aWMgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3koV0tHZW9sb2NhdGlvbk1hbmFn
ZXJSZWYgZ2VvbG9jYXRpb25NYW5hZ2VyLCBibwogICAgIFtnZW9sb2NhdGlvblByb3ZpZGVyIF9z
ZXRFbmFibGVIaWdoQWNjdXJhY3k6ZW5hYmxlXTsKIH0KIAotc3RydWN0IEdlb2xvY2F0aW9uUmVx
dWVzdERhdGEgewotICAgIFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4gb3JpZ2luOwot
ICAgIFJlZlB0cjxXZWJGcmFtZVByb3h5PiBmcmFtZTsKLSAgICBSZWZQdHI8R2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdFByb3h5PiBwZXJtaXNzaW9uUmVxdWVzdDsKLSAgICBSZXRhaW5QdHI8
VUlXaW5kb3c+IHdpbmRvdzsKLX07Ci0KLUBpbXBsZW1lbnRhdGlvbiBXS0dlb2xvY2F0aW9uUHJv
dmlkZXJJT1MgewotICAgIFJlZlB0cjxXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4gX2dlb2xv
Y2F0aW9uTWFuYWdlcjsKLSAgICBSZXRhaW5QdHI8V2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Q
cm92aWRlcj4gX2NvcmVMb2NhdGlvblByb3ZpZGVyOwotICAgIEJPT0wgX2lzV2ViQ29yZUdlb2xv
Y2F0aW9uQWN0aXZlOwotICAgIFJlZlB0cjxXZWJHZW9sb2NhdGlvblBvc2l0aW9uPiBfbGFzdEFj
dGl2ZVBvc2l0aW9uOwotICAgIFZlY3RvcjxHZW9sb2NhdGlvblJlcXVlc3REYXRhPiBfcmVxdWVz
dHNXYWl0aW5nRm9yQ29yZUxvY2F0aW9uU3RhcnQ7Ci0gICAgSGFzaFNldDx2b2lkKj4gX3JlcXVl
c3RzSW5XYXJtVXA7Ci19Ci0KLS0odm9pZClfc3RvcFVwZGF0aW5nSWZQb3NzaWJsZQotewotICAg
IGlmIChfaXNXZWJDb3JlR2VvbG9jYXRpb25BY3RpdmUpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGlmIChfcmVxdWVzdHNXYWl0aW5nRm9yQ29yZUxvY2F0aW9uU3RhcnQuaXNFbXB0eSgpICYmIF9y
ZXF1ZXN0c0luV2FybVVwLmlzRW1wdHkoKSkgewotICAgICAgICBbX2NvcmVMb2NhdGlvblByb3Zp
ZGVyIHN0b3BdOwotICAgICAgICBfbGFzdEFjdGl2ZVBvc2l0aW9uLmNsZWFyKCk7Ci0gICAgfQot
fQotCi0jcHJhZ21hIG1hcmsgLSBXS0dlb2xvY2F0aW9uUHJvdmlkZXIgY2FsbGJhY2tzIGltcGxl
bWVudGF0aW9uLgogLSh2b2lkKV9zdGFydFVwZGF0aW5nCiB7CiAgICAgX2lzV2ViQ29yZUdlb2xv
Y2F0aW9uQWN0aXZlID0gWUVTOwpAQCAtMTMxLDcgKzExNCw4IEBAIHN0cnVjdCBHZW9sb2NhdGlv
blJlcXVlc3REYXRhIHsKIC0odm9pZClfc3RvcFVwZGF0aW5nCiB7CiAgICAgX2lzV2ViQ29yZUdl
b2xvY2F0aW9uQWN0aXZlID0gTk87Ci0gICAgW3NlbGYgX3N0b3BVcGRhdGluZ0lmUG9zc2libGVd
OworICAgIFtfY29yZUxvY2F0aW9uUHJvdmlkZXIgc3RvcF07CisgICAgX2xhc3RBY3RpdmVQb3Np
dGlvbi5jbGVhcigpOwogfQogCiAtKHZvaWQpX3NldEVuYWJsZUhpZ2hBY2N1cmFjeTooQk9PTCll
bmFibGVIaWdoQWNjdXJhY3kKQEAgLTE2OCw1MiArMTUyLDM2IEBAIHN0cnVjdCBHZW9sb2NhdGlv
blJlcXVlc3REYXRhIHsKIAogLSh2b2lkKWRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUmVxdWVz
dEZyb21PcmlnaW46KFdLU2VjdXJpdHlPcmlnaW5SZWYpb3JpZ2luIGZyYW1lOihXS0ZyYW1lUmVm
KWZyYW1lIHJlcXVlc3Q6KFdLR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFJlZilwZXJtaXNz
aW9uUmVxdWVzdCB3aW5kb3c6KFVJV2luZG93Kil3aW5kb3cKIHsKKyAgICAvLyBTdGVwIDE6IGFz
ayB0aGUgdXNlciBpZiB0aGUgYXBwIGNhbiB1c2UgR2VvbG9jYXRpb24uCiAgICAgR2VvbG9jYXRp
b25SZXF1ZXN0RGF0YSBnZW9sb2NhdGlvblJlcXVlc3REYXRhOwogICAgIGdlb2xvY2F0aW9uUmVx
dWVzdERhdGEub3JpZ2luID0gdG9JbXBsKG9yaWdpbiktPnNlY3VyaXR5T3JpZ2luKCk7CiAgICAg
Z2VvbG9jYXRpb25SZXF1ZXN0RGF0YS5mcmFtZSA9IHRvSW1wbChmcmFtZSk7CiAgICAgZ2VvbG9j
YXRpb25SZXF1ZXN0RGF0YS5wZXJtaXNzaW9uUmVxdWVzdCA9IHRvSW1wbChwZXJtaXNzaW9uUmVx
dWVzdCk7CiAgICAgZ2VvbG9jYXRpb25SZXF1ZXN0RGF0YS53aW5kb3cgPSB3aW5kb3c7Ci0gICAg
X3JlcXVlc3RzV2FpdGluZ0ZvckNvcmVMb2NhdGlvblN0YXJ0LmFwcGVuZChnZW9sb2NhdGlvblJl
cXVlc3REYXRhKTsKLSAgICBbX2NvcmVMb2NhdGlvblByb3ZpZGVyIHN0YXJ0XTsKKyAgICBfcmVx
dWVzdHNXYWl0aW5nRm9yQ29yZUxvY2F0aW9uQXV0aG9yaXphdGlvbi5hcHBlbmQoZ2VvbG9jYXRp
b25SZXF1ZXN0RGF0YSk7CisgICAgW19jb3JlTG9jYXRpb25Qcm92aWRlciByZXF1ZXN0R2VvbG9j
YXRpb25BdXRob3JpemF0aW9uXTsKIH0KIEBlbmQKIAogI3ByYWdtYSBtYXJrIC0gV2ViR2VvbG9j
YXRpb25Db3JlTG9jYXRpb25VcGRhdGVMaXN0ZW5lciBpbXBsZW1lbnRhdGlvbi4KIAogQGltcGxl
bWVudGF0aW9uIFdLR2VvbG9jYXRpb25Qcm92aWRlcklPUyAoV2ViR2VvbG9jYXRpb25Db3JlTG9j
YXRpb25VcGRhdGVMaXN0ZW5lcikKLS0gKHZvaWQpZ2VvbG9jYXRpb25EZWxlZ2F0ZVN0YXJ0ZWQK
LXsKLSAgICBWZWN0b3I8R2VvbG9jYXRpb25SZXF1ZXN0RGF0YT4gcmVxdWVzdHM7Ci0gICAgcmVx
dWVzdHMuc3dhcChfcmVxdWVzdHNXYWl0aW5nRm9yQ29yZUxvY2F0aW9uU3RhcnQpOwotICAgIEhh
c2hTZXQ8dm9pZCo+IGxhdGVzdFJlcXVlc3RzRm9yV2FybXVwOwotICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgcmVxdWVzdHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgR2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdFByb3h5KiBwZXJtaXNzaW9uUmVxdWVzdCA9IHJlcXVlc3RzW2ldLnBlcm1p
c3Npb25SZXF1ZXN0LmdldCgpOwotICAgICAgICBsYXRlc3RSZXF1ZXN0c0Zvcldhcm11cC5hZGQo
cGVybWlzc2lvblJlcXVlc3QpOwotICAgICAgICBfcmVxdWVzdHNJbldhcm1VcC5hZGQocGVybWlz
c2lvblJlcXVlc3QpOwotICAgIH0KIAotICAgIC8vIFN0YXJ0IHRoZSB3YXJtdXAgcGVyaW9kIGlu
IHdoaWNoIHdlIGtlZXAgQ29yZUxvY2F0aW9uIHJ1bm5pbmcgd2hpbGUgd2FpdGluZyBmb3IgdGhl
IHVzZXIgcmVzcG9uc2UuCi0gICAgY29uc3QgaW50NjRfdCB3YXJtVXBUaW1lb3V0SW50ZXJ2YWwg
PSAyMCAqIE5TRUNfUEVSX1NFQzsKLSAgICBkaXNwYXRjaF90aW1lX3Qgd2hlbiA9IGRpc3BhdGNo
X3RpbWUoRElTUEFUQ0hfVElNRV9OT1csIHdhcm1VcFRpbWVvdXRJbnRlcnZhbCk7Ci0gICAgZGlz
cGF0Y2hfYWZ0ZXIod2hlbiwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKLSAgICAgICAg
SGFzaFNldDx2b2lkKj46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxhdGVzdFJlcXVlc3RzRm9yV2Fy
bXVwLmVuZCgpOwotICAgICAgICBmb3IgKEhhc2hTZXQ8dm9pZCo+Ojpjb25zdF9pdGVyYXRvciBp
dCA9IGxhdGVzdFJlcXVlc3RzRm9yV2FybXVwLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAg
ICAgICAgICAgIF9yZXF1ZXN0c0luV2FybVVwLnJlbW92ZSgqaXQpOwotICAgICAgICBbc2VsZiBf
c3RvcFVwZGF0aW5nSWZQb3NzaWJsZV07Ci0gICAgfSk7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHJlcXVlc3RzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIFJldGFpblB0cjxXS1dlYkFs
bG93RGVueVBvbGljeUxpc3RlbmVyPiBwb2xpY3lMaXN0ZW5lciA9IGFkb3B0TlMoW1tXS1dlYkFs
bG93RGVueVBvbGljeUxpc3RlbmVyIGFsbG9jXSBpbml0V2l0aFByb3ZpZGVyOnNlbGYgcGVybWlz
c2lvblJlcXVlc3RQcm94eTpyZXF1ZXN0c1tpXS5wZXJtaXNzaW9uUmVxdWVzdC5nZXQoKV0pOwot
ICAgICAgICBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVlc3RGcm9tT3JpZ2luKHJlcXVl
c3RzW2ldLm9yaWdpbi5nZXQoKSwgcmVxdWVzdHNbaV0uZnJhbWUtPnVybCgpLCBwb2xpY3lMaXN0
ZW5lci5nZXQoKSwgcmVxdWVzdHNbaV0ud2luZG93LmdldCgpKTsKKy0gKHZvaWQpZ2VvbG9jYXRp
b25BdXRob3JpemF0aW9uR3JhbnRlZAoreworICAgIC8vIFN0ZXAgMjogYXNrIHRoZSB1c2VyIGlm
IHRoZSB0aGlzIHBhcnRpY3VsYXIgcGFnZSBjYW4gdXNlIGdlbG9jYXRpb24uCisgICAgVmVjdG9y
PEdlb2xvY2F0aW9uUmVxdWVzdERhdGE+IHJlcXVlc3RzID0gc3RkOjptb3ZlKF9yZXF1ZXN0c1dh
aXRpbmdGb3JDb3JlTG9jYXRpb25BdXRob3JpemF0aW9uKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8m
IHJlcXVlc3QgOiByZXF1ZXN0cykgeworICAgICAgICBSZXRhaW5QdHI8V0tXZWJBbGxvd0RlbnlQ
b2xpY3lMaXN0ZW5lcj4gcG9saWN5TGlzdGVuZXIgPSBhZG9wdE5TKFtbV0tXZWJBbGxvd0RlbnlQ
b2xpY3lMaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhQZXJtaXNzaW9uUmVxdWVzdFByb3h5OnJlcXVl
c3QucGVybWlzc2lvblJlcXVlc3QuZ2V0KCldKTsKKyAgICAgICAgZGVjaWRlUG9saWN5Rm9yR2Vv
bG9jYXRpb25SZXF1ZXN0RnJvbU9yaWdpbihyZXF1ZXN0Lm9yaWdpbi5nZXQoKSwgcmVxdWVzdC5m
cmFtZS0+dXJsKCksIHBvbGljeUxpc3RlbmVyLmdldCgpLCByZXF1ZXN0LndpbmRvdy5nZXQoKSk7
CiAgICAgfQogfQogCi0tICh2b2lkKWdlb2xvY2F0aW9uRGVsZWdhdGVVbmFibGVUb1N0YXJ0Cist
ICh2b2lkKWdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkRlbmllZAogewotICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgX3JlcXVlc3RzV2FpdGluZ0ZvckNvcmVMb2NhdGlvblN0YXJ0LnNpemUoKTsg
KytpKQotICAgICAgICBfcmVxdWVzdHNXYWl0aW5nRm9yQ29yZUxvY2F0aW9uU3RhcnRbaV0ucGVy
bWlzc2lvblJlcXVlc3QtPmRlbnkoKTsKLSAgICBfcmVxdWVzdHNXYWl0aW5nRm9yQ29yZUxvY2F0
aW9uU3RhcnQuY2xlYXIoKTsKLSAgICBbc2VsZiBfc3RvcFVwZGF0aW5nSWZQb3NzaWJsZV07Cisg
ICAgVmVjdG9yPEdlb2xvY2F0aW9uUmVxdWVzdERhdGE+IHJlcXVlc3RzID0gc3RkOjptb3ZlKF9y
ZXF1ZXN0c1dhaXRpbmdGb3JDb3JlTG9jYXRpb25BdXRob3JpemF0aW9uKTsKKyAgICBmb3IgKGNv
bnN0IGF1dG8mIHJlcXVlc3REYXRhIDogcmVxdWVzdHMpCisgICAgICAgIHJlcXVlc3REYXRhLnBl
cm1pc3Npb25SZXF1ZXN0LT5kZW55KCk7CiB9CiAKIC0gKHZvaWQpcG9zaXRpb25DaGFuZ2VkOihX
ZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uKilwb3NpdGlvbgpAQCAtMjMyLDI4ICsyMDAsMTkg
QEAgc3RydWN0IEdlb2xvY2F0aW9uUmVxdWVzdERhdGEgewogICAgIF9nZW9sb2NhdGlvbk1hbmFn
ZXItPnJlc2V0UGVybWlzc2lvbnMoKTsKIH0KIAotI3ByYWdtYSBtYXJrIC0gTWV0aG9kcyBmb3Ig
dWRhdGluZyB0aGUgc3RhdGUgV0tXZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5lcgotLSAodm9pZClw
ZXJtaXNzaW9uRGVuaWVkOihHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHkqKXBlcm1p
c3Npb25SZXF1ZXN0UHJveHkKLXsKLSAgICBfcmVxdWVzdHNJbldhcm1VcC5yZW1vdmUocGVybWlz
c2lvblJlcXVlc3RQcm94eSk7Ci0gICAgW3NlbGYgX3N0b3BVcGRhdGluZ0lmUG9zc2libGVdOwot
fQotCiBAZW5kCiAKICMgcHJhZ21hIG1hcmsgLSBJbXBsZW1lbnRhdGlvbiBvZiBXS1dlYkFsbG93
RGVueVBvbGljeUxpc3RlbmVyCiBAaW1wbGVtZW50YXRpb24gV0tXZWJBbGxvd0RlbnlQb2xpY3lM
aXN0ZW5lciB7Ci0gICAgUmV0YWluUHRyPFdLR2VvbG9jYXRpb25Qcm92aWRlcklPUz4gX3Byb3Zp
ZGVyOwogICAgIFJlZlB0cjxHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHk+IF9wZXJt
aXNzaW9uUmVxdWVzdFByb3h5OwogfQogCi0tIChpZClpbml0V2l0aFByb3ZpZGVyOihXS0dlb2xv
Y2F0aW9uUHJvdmlkZXJJT1MqKXByb3ZpZGVyIHBlcm1pc3Npb25SZXF1ZXN0UHJveHk6KFBhc3NS
ZWZQdHI8R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5PilwZXJtaXNzaW9uUmVxdWVz
dFByb3h5CistIChpZClpbml0V2l0aFBlcm1pc3Npb25SZXF1ZXN0UHJveHk6KFBhc3NSZWZQdHI8
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5PilwZXJtaXNzaW9uUmVxdWVzdFByb3h5
CiB7CiAgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKICAgICBpZiAoIXNlbGYpCiAgICAgICAgIHJl
dHVybiBuaWw7CiAKLSAgICBfcHJvdmlkZXIgPSBwcm92aWRlcjsKICAgICBfcGVybWlzc2lvblJl
cXVlc3RQcm94eSA9IHBlcm1pc3Npb25SZXF1ZXN0UHJveHk7CiAgICAgcmV0dXJuIHNlbGY7CiB9
CkBAIC0yNjUsNyArMjI0LDYgQEAgc3RydWN0IEdlb2xvY2F0aW9uUmVxdWVzdERhdGEgewogCiAt
ICh2b2lkKWRlbnkKIHsKLSAgICBbX3Byb3ZpZGVyIHBlcm1pc3Npb25EZW5pZWQ6X3Blcm1pc3Np
b25SZXF1ZXN0UHJveHkuZ2V0KCldOwogICAgIF9wZXJtaXNzaW9uUmVxdWVzdFByb3h5LT5kZW55
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCA3MjE5MTQyOGNiMmVjYjg3NzlhZjdhOTNhMzA4ZjA5MjI5ZGExZmFjLi43ZjhhYjAxYzdm
NDhkZDA4NWE0NjNhMmI0Nzk4ZGU5ZTZmNGU2ZDMwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTQtMDUtMDggIEJl
bmphbWluIFBvdWxhaW4gIDxiZW5qYW1pbkB3ZWJraXQub3JnPgorCisgICAgICAgIFtpT1NdIFN3
aXRjaCBnZW9sb2NhdGlvbiB0byBhbiBleHBsaWNpdCBhdXRob3JpemF0aW9uIHF1ZXJ5IG1vZGVs
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzI3MTcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL21hYy9Nb2NrR2VvbG9jYXRpb25Qcm92aWRlci5tbToKKyAgICAgICAgKC1bTW9j
a0dlb2xvY2F0aW9uUHJvdmlkZXIgaW5pdGlhbGl6ZUdlb2xvY2F0aW9uRm9yV2ViVmlldzpsaXN0
ZW5lcjpdKToKKyAgICAgICAgKC1bTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIgY2FuY2VsV2FybVVw
Rm9yV2ViVmlldzpdKTogRGVsZXRlZC4KKwogMjAxNC0wNS0wNiAgRGFyaW4gQWRsZXIgIDxkYXJp
bkBhcHBsZS5jb20+CiAKICAgICAgICAgVHJ5IHRvIGZpeCBpT1MgYnVpbGQuCmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIubW0gYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIubW0KaW5kZXgg
NGJlNTNmYjI3ZjYxMmIwNzZhMjdlMDMwZTRiOGU4NTA1NTJiNTRkMC4uNDcyY2QzOGY0YzI0ZjRl
M2UwYjM0ZGU0YmM2MmMzZmUyNmEyN2U0NiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL01vY2tHZW9sb2NhdGlvblByb3ZpZGVyLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9Nb2NrR2VvbG9jYXRpb25Qcm92aWRlci5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTIgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDEyLCAyMDE0IEFwcGxlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTAwLDEyICsx
MDAsNyBAQAogCiAtICh2b2lkKWluaXRpYWxpemVHZW9sb2NhdGlvbkZvcldlYlZpZXc6KFdlYlZp
ZXcgKil3ZWJWaWV3IGxpc3RlbmVyOihpZDxXZWJHZW9sb2NhdGlvblByb3ZpZGVySW5pdGlhbGl6
YXRpb25MaXN0ZW5lcj4pbGlzdGVuZXIKIHsKLSAgICBbbGlzdGVuZXIgaW5pdGlhbGl6YXRpb25B
bGxvd2VkV2ViVmlldzp3ZWJWaWV3IHByb3ZpZGVyOnNlbGZdOwotfQotCi0tICh2b2lkKWNhbmNl
bFdhcm1VcEZvcldlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3Ci17Ci0gICAgVU5VU0VEX1BBUkFN
KHdlYlZpZXcpOworICAgIFtsaXN0ZW5lciBpbml0aWFsaXphdGlvbkFsbG93ZWRXZWJWaWV3Ondl
YlZpZXddOwogfQogCiAtICh2b2lkKXN0b3BUcmFja2luZ1dlYlZpZXc6KFdlYlZpZXcgKil3ZWJW
aWV3Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>