<?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>53996</bug_id>
          
          <creation_ts>2011-02-08 06:04:30 -0800</creation_ts>
          <short_desc>Move the light source implementations into their own files</short_desc>
          <delta_ts>2011-02-10 04:24:07 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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="Renata Hodovan">rhodovan.u-szeged</reporter>
          <assigned_to name="Renata Hodovan">rhodovan.u-szeged</assigned_to>
          <cc>buildbot</cc>
    
    <cc>krit</cc>
    
    <cc>zherczeg</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>347305</commentid>
    <comment_count>0</comment_count>
    <who name="Renata Hodovan">rhodovan.u-szeged</who>
    <bug_when>2011-02-08 06:04:30 -0800</bug_when>
    <thetext>Move of the light source implementations into their own files</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347317</commentid>
    <comment_count>1</comment_count>
      <attachid>81628</attachid>
    <who name="Renata Hodovan">rhodovan.u-szeged</who>
    <bug_when>2011-02-08 06:24:53 -0800</bug_when>
    <thetext>Created attachment 81628
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347328</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-02-08 06:53:51 -0800</bug_when>
    <thetext>Attachment 81628 did not build on win:
Build output: http://queues.webkit.org/results/7797081</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>348072</commentid>
    <comment_count>3</comment_count>
      <attachid>81628</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-02-09 01:57:09 -0800</bug_when>
    <thetext>Comment on attachment 81628
Patch

Patch looks good. You just forgot to edit the windows project file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>348123</commentid>
    <comment_count>4</comment_count>
      <attachid>81785</attachid>
    <who name="Renata Hodovan">rhodovan.u-szeged</who>
    <bug_when>2011-02-09 03:16:18 -0800</bug_when>
    <thetext>Created attachment 81785
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>348911</commentid>
    <comment_count>5</comment_count>
      <attachid>81785</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-02-10 02:59:19 -0800</bug_when>
    <thetext>Comment on attachment 81785
Patch

The changes look right. Not sure why the patch didn&apos;t apply to the Mac builds. Maybe they are out of sync again. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>348935</commentid>
    <comment_count>6</comment_count>
      <attachid>81785</attachid>
    <who name="Renata Hodovan">rhodovan.u-szeged</who>
    <bug_when>2011-02-10 04:23:57 -0800</bug_when>
    <thetext>Comment on attachment 81785
Patch

Clearing flags on attachment: 81785

Committed r78194: &lt;http://trac.webkit.org/changeset/78194&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>348936</commentid>
    <comment_count>7</comment_count>
    <who name="Renata Hodovan">rhodovan.u-szeged</who>
    <bug_when>2011-02-10 04:24:07 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81628</attachid>
            <date>2011-02-08 06:24:53 -0800</date>
            <delta_ts>2011-02-09 03:16:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>separate_light.patch</filename>
            <type>text/plain</type>
            <size>34331</size>
            <attacher name="Renata Hodovan">rhodovan.u-szeged</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc3OTI1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTEtMDItMDggIFJlbmF0YSBI
b2RvdmFuICA8cmVuaUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE1vdmUgdGhlIGxpZ2h0IHNvdXJjZSBpbXBsZW1lbnRhdGlvbnMg
aW50byB0aGVpciBvd24gZmlsZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01Mzk5NgorCisgICAgICAgIFNwbGl0dGluZyBMaWdodFNvdXJjZS5jcHAg
aW50byAzIGZpbGVzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBhcmUgYWRkZWQgc2luY2UgdGhp
cyBpcyBhIHJlZmFjdG9yaW5nLgorCisgICAgICAgICogQW5kcm9pZC5tazoKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJD
b3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRGlzdGFudExpZ2h0U291cmNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXN0
YW50TGlnaHRTb3VyY2U6OmluaXRQYWludGluZ0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
dGFudExpZ2h0U291cmNlOjp1cGRhdGVQYWludGluZ0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
RGlzdGFudExpZ2h0U291cmNlOjpzZXRBemltdXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Rh
bnRMaWdodFNvdXJjZTo6c2V0RWxldmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3RhbnRM
aWdodFNvdXJjZTo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9MaWdodFNvdXJjZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9Qb2ludExpZ2h0U291cmNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpQb2ludExpZ2h0U291cmNlOjppbml0UGFpbnRpbmdEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OlBvaW50TGlnaHRTb3VyY2U6OnVwZGF0ZVBhaW50aW5nRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpQb2ludExpZ2h0U291cmNlOjpzZXRYKToKKyAgICAgICAgKFdlYkNvcmU6OlBvaW50TGln
aHRTb3VyY2U6OnNldFkpOgorICAgICAgICAoV2ViQ29yZTo6UG9pbnRMaWdodFNvdXJjZTo6c2V0
Wik6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KToKKyAgICAgICAgKFdlYkNvcmU6OlBv
aW50TGlnaHRTb3VyY2U6OmV4dGVybmFsUmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvU3BvdExpZ2h0U291cmNlLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpTcG90TGlnaHRTb3VyY2U6OmluaXRQYWludGluZ0RhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6U3BvdExpZ2h0U291cmNlOjp1cGRhdGVQYWludGluZ0RhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6U3BvdExpZ2h0U291cmNlOjpzZXRYKToKKyAgICAgICAgKFdlYkNvcmU6OlNwb3RM
aWdodFNvdXJjZTo6c2V0WSk6CisgICAgICAgIChXZWJDb3JlOjpTcG90TGlnaHRTb3VyY2U6OnNl
dFopOgorICAgICAgICAoV2ViQ29yZTo6U3BvdExpZ2h0U291cmNlOjpzZXRQb2ludHNBdFgpOgor
ICAgICAgICAoV2ViQ29yZTo6U3BvdExpZ2h0U291cmNlOjpzZXRQb2ludHNBdFkpOgorICAgICAg
ICAoV2ViQ29yZTo6U3BvdExpZ2h0U291cmNlOjpzZXRQb2ludHNBdFopOgorICAgICAgICAoV2Vi
Q29yZTo6U3BvdExpZ2h0U291cmNlOjpzZXRTcGVjdWxhckV4cG9uZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlNwb3RMaWdodFNvdXJjZTo6c2V0TGltaXRpbmdDb25lQW5nbGUpOgorICAgICAgICAo
V2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgIChXZWJDb3JlOjpTcG90TGlnaHRTb3VyY2U6
OmV4dGVybmFsUmVwcmVzZW50YXRpb24pOgorCiAyMDExLTAyLTA0ICBBbmRyZXkgS29zeWFrb3Yg
IDxjYXNlcUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1h
bi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0FuZHJvaWQubWsKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvQW5kcm9pZC5tawkocmV2aXNpb24gNzc5MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9B
bmRyb2lkLm1rCSh3b3JraW5nIGNvcHkpCkBAIC01NDMsNiArNTQzLDcgQEAgTE9DQUxfU1JDX0ZJ
TEVTIDo9ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAKIGlmZXEgKCQoRU5BQkxFX1NWRyksIHRydWUp
CiBMT0NBTF9TUkNfRklMRVMgOj0gJChMT0NBTF9TUkNfRklMRVMpIFwKKwlwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0Rpc3RhbnRMaWdodFNvdXJjZS5jcHAgXAogCXBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVCbGVuZC5jcHAgXAogCXBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xv
ck1hdHJpeC5jcHAgXAogCXBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFu
c2Zlci5jcHAgXApAQCAtNTU3LDcgKzU1OCw5IEBAIExPQ0FMX1NSQ19GSUxFUyA6PSAkKExPQ0FM
X1NSQ19GSUxFUykgXAogCXBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVTcGVjdWxhckxpZ2h0
aW5nLmNwcCBcCiAJcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwIFwKIAlwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5jcHAgXAotCXBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvTGlnaHRTb3VyY2UuY3BwCisJcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9M
aWdodFNvdXJjZS5jcHAgXAorCXBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvUG9pbnRMaWdodFNv
dXJjZS5jcHAgXAorCXBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU3BvdExpZ2h0U291cmNlLmNw
cAogZW5kaWYKIAogTE9DQUxfU1JDX0ZJTEVTIDo9ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gNzc5MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTIyMiw2ICsxMjIyLDcgQEAgU0VUKFdl
YkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1N0cmluZ1RydW5jYXRvci5jcHAK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcAogCisgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9EaXN0YW50TGlnaHRTb3VyY2UuY3BwCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVDb2xvck1hdHJpeC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9u
ZW50VHJhbnNmZXIuY3BwCkBAIC0xMjQwLDYgKzEyNDEsOCBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VT
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9MaWdodFNvdXJjZS5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL1BvaW50TGlnaHRTb3VyY2UuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9T
cG90TGlnaHRTb3VyY2UuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VB
bHBoYS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3Bw
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiA3NzkxNykKKysrIFNvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC0yMzQzLDYgKzIzNDMsNyBA
QCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0NvbnRleHRTaGFkb3cuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b250ZXh0U2hhZG93LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rhc2hB
cnJheS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Rpc3Rh
bnRMaWdodFNvdXJjZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRGlzdGFudExpZ2h0U291cmNlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5oIFwKQEAgLTIzODEsMTEgKzIzODIsMTMgQEAgd2ViY29y
ZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZpbHRlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0xp
Z2h0U291cmNlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9MaWdodFNvdXJjZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL1BvaW50TGlnaHRTb3VyY2UuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL1BvaW50TGlnaHRTb3VyY2UuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuaCBcCiAJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmggXAorCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU3BvdExpZ2h0U291cmNlLmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9TcG90TGlnaHRTb3Vy
Y2UuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludDNELmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludDNELmggXApJ
bmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gNzc5MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTI2MzMsNiArMjYzMyw3IEBACiAgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmgnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGEuaCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNv
Y29hLm1tJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Rpc3RhbnRM
aWdodFNvdXJjZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RGlzdGFudExpZ2h0U291cmNlLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVCbGVuZC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVCbGVuZC5oJywKQEAgLTI2NjgsNyArMjY2OSw5IEBACiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuaCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9MaWdodFNvdXJjZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvTGlnaHRTb3VyY2UuaCcsCisgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9Qb2ludExpZ2h0U291cmNlLmNwcCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Qb2ludExpZ2h0U291cmNlLmgnLAorICAgICAgICAg
ICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU3BvdExpZ2h0U291cmNlLmNwcCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9TcG90TGlnaHRTb3VyY2UuaCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwJywKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUucHJvCShyZXZpc2lvbiA3NzkxNykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
cHJvCSh3b3JraW5nIGNvcHkpCkBAIC0zMzUzLDYgKzMzNTMsNyBAQCBjb250YWlucyhERUZJTkVT
LCBFTkFCTEVfWFNMVD0xKSB7CiAKIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9GSUxURVJTPTEp
IHsKICAgICBTT1VSQ0VTICs9IFwKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9E
aXN0YW50TGlnaHRTb3VyY2UuY3BwIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUJsZW5kLmNwcCBcCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xv
ck1hdHJpeC5jcHAgXAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9u
ZW50VHJhbnNmZXIuY3BwIFwKQEAgLTMzNzEsNiArMzM3Miw4IEBAIGNvbnRhaW5zKERFRklORVMs
IEVOQUJMRV9GSUxURVJTPTEpIHsKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RVR1cmJ1bGVuY2UuY3BwIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0
ZXJFZmZlY3QuY3BwIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9MaWdodFNv
dXJjZS5jcHAgXAorICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1BvaW50TGlnaHRT
b3VyY2UuY3BwIFwKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9TcG90TGlnaHRT
b3VyY2UuY3BwIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBo
YS5jcHAgXAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMu
Y3BwCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCShyZXZpc2lvbiA3NzkxNykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzEzNiw2ICszMTM2
LDkgQEAKIAkJQTEzNkEwMEQxMTM0REJEMjAwQ0M4RDUwIC8qIFhNTEh0dHBSZXF1ZXN0UHJvZ3Jl
c3NFdmVudFRocm90dGxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMTM2QTAwQjExMzREQkQyMDBDQzhENTAgLyogWE1MSHR0cFJlcXVlc3RQcm9ncmVz
c0V2ZW50VGhyb3R0bGUuaCAqLzsgfTsKIAkJQTE3QzgxMjIwRjJBNUNGNzAwNURBQUVCIC8qIEhU
TUxFbGVtZW50RmFjdG9yeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBMTdDODEyMDBGMkE1Q0Y3MDA1REFBRUIgLyogSFRNTEVsZW1lbnRGYWN0b3J5
LmNwcCAqLzsgfTsKIAkJQTE3QzgxMjMwRjJBNUNGNzAwNURBQUVCIC8qIEhUTUxFbGVtZW50RmFj
dG9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3
QzgxMjEwRjJBNUNGNzAwNURBQUVCIC8qIEhUTUxFbGVtZW50RmFjdG9yeS5oICovOyB9OworCQlB
MUUxMTU0NDEzMDE1QzNEMDA1NEFDOEMgLyogRGlzdGFudExpZ2h0U291cmNlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRTExNTQzMTMwMTVDM0Qw
MDU0QUM4QyAvKiBEaXN0YW50TGlnaHRTb3VyY2UuY3BwICovOyB9OworCQlBMUUxMTU0NjEzMDE1
QzRFMDA1NEFDOEMgLyogUG9pbnRMaWdodFNvdXJjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUUxMTU0NTEzMDE1QzRFMDA1NEFDOEMgLyogUG9p
bnRMaWdodFNvdXJjZS5jcHAgKi87IH07CisJCUExRTExNTQ4MTMwMTVDNUQwMDU0QUM4QyAvKiBT
cG90TGlnaHRTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTFFMTE1NDcxMzAxNUM1RDAwNTRBQzhDIC8qIFNwb3RMaWdodFNvdXJjZS5jcHAg
Ki87IH07CiAJCUE0MDlDOTg0MTE2RDBEREQwMDcxOTdCRCAvKiBBY2Nlc3NpYmlsaXR5UHJvZ3Jl
c3NJbmRpY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTQwOUM5ODIxMTZEMERERDAwNzE5N0JEIC8qIEFjY2Vzc2liaWxpdHlQcm9ncmVzc0lu
ZGljYXRvci5jcHAgKi87IH07CiAJCUE0MDlDOTg1MTE2RDBEREQwMDcxOTdCRCAvKiBBY2Nlc3Np
YmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE0MDlDOTgzMTE2RDBEREQwMDcxOTdCRCAvKiBBY2Nlc3NpYmlsaXR5
UHJvZ3Jlc3NJbmRpY2F0b3IuaCAqLzsgfTsKIAkJQTQyMjZFNUExMTYzRDY2NzAwOEI4Mzk3IC8q
IEpTSFRNTFByb2dyZXNzRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNDIyNkU1OTExNjNENjY3MDA4QjgzOTcgLyogSlNIVE1MUHJvZ3Jl
c3NFbGVtZW50LmNwcCAqLzsgfTsKQEAgLTk1MjQsNiArOTUyNyw5IEBACiAJCUExMzZBMDBCMTEz
NERCRDIwMENDOEQ1MCAvKiBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnRUaHJvdHRsZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZl
bnRUaHJvdHRsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTdDODEyMDBGMkE1
Q0Y3MDA1REFBRUIgLyogSFRNTEVsZW1lbnRGYWN0b3J5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxFbGVtZW50RmFjdG9yeS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUExN0M4MTIxMEYyQTVDRjcwMDVEQUFFQiAvKiBIVE1MRWxlbWVudEZh
Y3RvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTEVsZW1lbnRGYWN0
b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExRTExNTQzMTMwMTVDM0QwMDU0
QUM4QyAvKiBEaXN0YW50TGlnaHRTb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gRGlzdGFudExpZ2h0U291cmNlLmNwcDsgcGF0aCA9IGZpbHRlcnMvRGlzdGFu
dExpZ2h0U291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFFMTE1NDUx
MzAxNUM0RTAwNTRBQzhDIC8qIFBvaW50TGlnaHRTb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gUG9pbnRMaWdodFNvdXJjZS5jcHA7IHBhdGggPSBmaWx0ZXJz
L1BvaW50TGlnaHRTb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMUUx
MTU0NzEzMDE1QzVEMDA1NEFDOEMgLyogU3BvdExpZ2h0U291cmNlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFNwb3RMaWdodFNvdXJjZS5jcHA7IHBhdGggPSBmaWx0
ZXJzL1Nwb3RMaWdodFNvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE0
MDlDOTgyMTE2RDBEREQwMDcxOTdCRCAvKiBBY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3Iu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eVBy
b2dyZXNzSW5kaWNhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTQwOUM5
ODMxMTZEMERERDAwNzE5N0JEIC8qIEFjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRvci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRp
Y2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTQyMjZFNTkxMTYzRDY2NzAw
OEI4Mzk3IC8qIEpTSFRNTFByb2dyZXNzRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTU5NjcsNiArMTU5NzMsOSBAQAogCQlBNzVFOEI3RjBFMURFMkIw
MDA3RjI0ODEgLyogZmlsdGVycyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCisJCQkJQTFFMTE1NDcxMzAxNUM1RDAwNTRBQzhDIC8qIFNwb3RMaWdodFNvdXJjZS5j
cHAgKi8sCisJCQkJQTFFMTE1NDUxMzAxNUM0RTAwNTRBQzhDIC8qIFBvaW50TGlnaHRTb3VyY2Uu
Y3BwICovLAorCQkJCUExRTExNTQzMTMwMTVDM0QwMDU0QUM4QyAvKiBEaXN0YW50TGlnaHRTb3Vy
Y2UuY3BwICovLAogCQkJCTg0NzMwRDVBMTI0OEYwQjMwMEQzQTlDOSAvKiBEaXN0YW50TGlnaHRT
b3VyY2UuaCAqLywKIAkJCQlBNzVFOEI4MDBFMURFMkQ2MDA3RjI0ODEgLyogRkVCbGVuZC5jcHAg
Ki8sCiAJCQkJQTc1RThCODEwRTFERTJENjAwN0YyNDgxIC8qIEZFQmxlbmQuaCAqLywKQEAgLTI1
MTI2LDYgKzI1MTM1LDkgQEAKIAkJCQk5MzQzQ0I4MTEyRjI1RTUxMDAzM0M1RUUgLyogVGV4dENv
ZGVjVVRGOC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzdFMkUwRTEyRjBGQzlDMDBDMTMzNzkg
LyogWFNTRmlsdGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjlDMTZFMTMwMEMyRTIwMDJE
Nzk0RSAvKiBBY2Nlc3NpYmlsaXR5QWxsSW5PbmUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTFF
MTE1NDQxMzAxNUMzRDAwNTRBQzhDIC8qIERpc3RhbnRMaWdodFNvdXJjZS5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlBMUUxMTU0NjEzMDE1QzRFMDA1NEFDOEMgLyogUG9pbnRMaWdodFNvdXJjZS5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlBMUUxMTU0ODEzMDE1QzVEMDA1NEFDOEMgLyogU3BvdExp
Z2h0U291cmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9EaXN0YW50TGlnaHRTb3VyY2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRGlzdGFudExpZ2h0U291
cmNlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRGlzdGFudExpZ2h0U291cmNlLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBOaWtvbGFz
IFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwg
MjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA1IEVyaWMg
U2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgWm9sdGFuIEhl
cmN6ZWcgPHpoZXJjemVnQHdlYmtpdC5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgVW5pdmVy
c2l0eSBvZiBTemVnZWQKKyAqIENvcHlyaWdodCAoQykgMjAxMSBSZW5hdGEgSG9kb3ZhbiA8cmVu
aUB3ZWJraXQub3JnPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVU5JVkVSU0lUWSBPRiBTWkVHRUQgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBVTklWRVJTSVRZIE9GIFNaRUdFRCBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUo
RklMVEVSUykKKyNpbmNsdWRlICJEaXN0YW50TGlnaHRTb3VyY2UuaCIKKworI2luY2x1ZGUgIlJl
bmRlclRyZWVBc1RleHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIERpc3RhbnRM
aWdodFNvdXJjZTo6aW5pdFBhaW50aW5nRGF0YShQYWludGluZ0RhdGEmIHBhaW50aW5nRGF0YSkK
K3sKKyAgICBmbG9hdCBhemltdXRoID0gZGVnMnJhZChtX2F6aW11dGgpOworICAgIGZsb2F0IGVs
ZXZhdGlvbiA9IGRlZzJyYWQobV9lbGV2YXRpb24pOworICAgIHBhaW50aW5nRGF0YS5saWdodFZl
Y3Rvci5zZXRYKGNvc2YoYXppbXV0aCkgKiBjb3NmKGVsZXZhdGlvbikpOworICAgIHBhaW50aW5n
RGF0YS5saWdodFZlY3Rvci5zZXRZKHNpbmYoYXppbXV0aCkgKiBjb3NmKGVsZXZhdGlvbikpOwor
ICAgIHBhaW50aW5nRGF0YS5saWdodFZlY3Rvci5zZXRaKHNpbmYoZWxldmF0aW9uKSk7CisgICAg
cGFpbnRpbmdEYXRhLmxpZ2h0VmVjdG9yTGVuZ3RoID0gMTsKK30KKwordm9pZCBEaXN0YW50TGln
aHRTb3VyY2U6OnVwZGF0ZVBhaW50aW5nRGF0YShQYWludGluZ0RhdGEmLCBpbnQsIGludCwgZmxv
YXQpCit7Cit9CisKK2Jvb2wgRGlzdGFudExpZ2h0U291cmNlOjpzZXRBemltdXRoKGZsb2F0IGF6
aW11dGgpCit7CisgICAgaWYgKG1fYXppbXV0aCA9PSBhemltdXRoKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgbV9hemltdXRoID0gYXppbXV0aDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
Ym9vbCBEaXN0YW50TGlnaHRTb3VyY2U6OnNldEVsZXZhdGlvbihmbG9hdCBlbGV2YXRpb24pCit7
CisgICAgaWYgKG1fZWxldmF0aW9uID09IGVsZXZhdGlvbikKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIG1fZWxldmF0aW9uID0gZWxldmF0aW9uOworICAgIHJldHVybiB0cnVlOworfQorCitU
ZXh0U3RyZWFtJiBEaXN0YW50TGlnaHRTb3VyY2U6OmV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4
dFN0cmVhbSYgdHMpIGNvbnN0Cit7CisgICAgdHMgPDwgIlt0eXBlPURJU1RBTlQtTElHSFRdICI7
CisgICAgdHMgPDwgIlthemltdXRoPVwiIiA8PCBhemltdXRoKCkgPDwgIlwiXSI7CisgICAgdHMg
PDwgIltlbGV2YXRpb249XCIiIDw8IGVsZXZhdGlvbigpIDw8ICJcIl0iOworICAgIHJldHVybiB0
czsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEZJTFRF
UlMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0xpZ2h0
U291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0xpZ2h0U291cmNlLmNwcAkocmV2aXNpb24gNzc5MTcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0xpZ2h0U291cmNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMyw2ICszLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBSb2IgQnVp
cyA8YnVpc0BrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA1IEVyaWMgU2VpZGVsIDxlcmlj
QHdlYmtpdC5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgWm9sdGFuIEhlcmN6ZWcgPHpoZXJj
emVnQHdlYmtpdC5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgUmVuYXRhIEhvZG92YW4gPHJl
bmlAd2Via2l0Lm9yZz4sIFVuaXZlcnNpdHkgb2YgU3plZ2VkLgogICoKICAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CkBAIC0zMywyMTEgKzM0LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIFBvaW50
TGlnaHRTb3VyY2U6OmluaXRQYWludGluZ0RhdGEoUGFpbnRpbmdEYXRhJikKLXsKLX0KLQotdm9p
ZCBQb2ludExpZ2h0U291cmNlOjp1cGRhdGVQYWludGluZ0RhdGEoUGFpbnRpbmdEYXRhJiBwYWlu
dGluZ0RhdGEsIGludCB4LCBpbnQgeSwgZmxvYXQgeikKLXsKLSAgICBwYWludGluZ0RhdGEubGln
aHRWZWN0b3Iuc2V0WChtX3Bvc2l0aW9uLngoKSAtIHgpOwotICAgIHBhaW50aW5nRGF0YS5saWdo
dFZlY3Rvci5zZXRZKG1fcG9zaXRpb24ueSgpIC0geSk7Ci0gICAgcGFpbnRpbmdEYXRhLmxpZ2h0
VmVjdG9yLnNldFoobV9wb3NpdGlvbi56KCkgLSB6KTsKLSAgICBwYWludGluZ0RhdGEubGlnaHRW
ZWN0b3JMZW5ndGggPSBwYWludGluZ0RhdGEubGlnaHRWZWN0b3IubGVuZ3RoKCk7Ci19Ci0KLWJv
b2wgUG9pbnRMaWdodFNvdXJjZTo6c2V0WChmbG9hdCB4KQotewotICAgIGlmIChtX3Bvc2l0aW9u
LngoKSA9PSB4KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgbV9wb3NpdGlvbi5zZXRYKHgp
OwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIFBvaW50TGlnaHRTb3VyY2U6OnNldFkoZmxv
YXQgeSkKLXsKLSAgICBpZiAobV9wb3NpdGlvbi55KCkgPT0geSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIG1fcG9zaXRpb24uc2V0WSh5KTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9v
bCBQb2ludExpZ2h0U291cmNlOjpzZXRaKGZsb2F0IHopCi17Ci0gICAgaWYgKG1fcG9zaXRpb24u
eigpID09IHopCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBtX3Bvc2l0aW9uLnNldFooeik7
Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLS8vIHNwb3QtbGlnaHQgZWRnZSBkYXJrZW5pbmcgZGVw
ZW5kcyBvbiBhbiBhYnNvbHV0ZSB0cmVzaG9sZAotLy8gYWNjb3JkaW5nIHRvIHRoZSBTVkcgMS4x
IFNFIGxpZ2h0IHJlZ3Jlc3Npb24gdGVzdHMKLXN0YXRpYyBjb25zdCBmbG9hdCBhbnRpQWxpYXNU
cmVzaG9sZCA9IDAuMDE2ZjsKLQotdm9pZCBTcG90TGlnaHRTb3VyY2U6OmluaXRQYWludGluZ0Rh
dGEoUGFpbnRpbmdEYXRhJiBwYWludGluZ0RhdGEpCi17Ci0gICAgcGFpbnRpbmdEYXRhLnByaXZh
dGVDb2xvclZlY3RvciA9IHBhaW50aW5nRGF0YS5jb2xvclZlY3RvcjsKLSAgICBwYWludGluZ0Rh
dGEuZGlyZWN0aW9uVmVjdG9yLnNldFgobV9kaXJlY3Rpb24ueCgpIC0gbV9wb3NpdGlvbi54KCkp
OwotICAgIHBhaW50aW5nRGF0YS5kaXJlY3Rpb25WZWN0b3Iuc2V0WShtX2RpcmVjdGlvbi55KCkg
LSBtX3Bvc2l0aW9uLnkoKSk7Ci0gICAgcGFpbnRpbmdEYXRhLmRpcmVjdGlvblZlY3Rvci5zZXRa
KG1fZGlyZWN0aW9uLnooKSAtIG1fcG9zaXRpb24ueigpKTsKLSAgICBwYWludGluZ0RhdGEuZGly
ZWN0aW9uVmVjdG9yLm5vcm1hbGl6ZSgpOwotCi0gICAgaWYgKCFtX2xpbWl0aW5nQ29uZUFuZ2xl
KSB7Ci0gICAgICAgIHBhaW50aW5nRGF0YS5jb25lQ3V0T2ZmTGltaXQgPSAwLjBmOwotICAgICAg
ICBwYWludGluZ0RhdGEuY29uZUZ1bGxMaWdodCA9IC1hbnRpQWxpYXNUcmVzaG9sZDsKLSAgICB9
IGVsc2UgewotICAgICAgICBmbG9hdCBsaW1pdGluZ0NvbmVBbmdsZSA9IG1fbGltaXRpbmdDb25l
QW5nbGU7Ci0gICAgICAgIGlmIChsaW1pdGluZ0NvbmVBbmdsZSA8IDAuMGYpCi0gICAgICAgICAg
ICBsaW1pdGluZ0NvbmVBbmdsZSA9IC1saW1pdGluZ0NvbmVBbmdsZTsKLSAgICAgICAgaWYgKGxp
bWl0aW5nQ29uZUFuZ2xlID4gOTAuMGYpCi0gICAgICAgICAgICBsaW1pdGluZ0NvbmVBbmdsZSA9
IDkwLjBmOwotICAgICAgICBwYWludGluZ0RhdGEuY29uZUN1dE9mZkxpbWl0ID0gY29zZihkZWcy
cmFkKDE4MC4wZiAtIGxpbWl0aW5nQ29uZUFuZ2xlKSk7Ci0gICAgICAgIHBhaW50aW5nRGF0YS5j
b25lRnVsbExpZ2h0ID0gcGFpbnRpbmdEYXRhLmNvbmVDdXRPZmZMaW1pdCAtIGFudGlBbGlhc1Ry
ZXNob2xkOwotICAgIH0KLQotICAgIC8vIE9wdGltaXphdGlvbiBmb3IgY29tbW9uIHNwZWN1bGFy
RXhwb25lbnQgdmFsdWVzCi0gICAgaWYgKCFtX3NwZWN1bGFyRXhwb25lbnQpCi0gICAgICAgIHBh
aW50aW5nRGF0YS5zcGVjdWxhckV4cG9uZW50ID0gMDsKLSAgICBlbHNlIGlmIChtX3NwZWN1bGFy
RXhwb25lbnQgPT0gMS4wZikKLSAgICAgICAgcGFpbnRpbmdEYXRhLnNwZWN1bGFyRXhwb25lbnQg
PSAxOwotICAgIGVsc2UgLy8gSXQgaXMgbmVpdGhlciAwLjBmIG5vciAxLjBmCi0gICAgICAgIHBh
aW50aW5nRGF0YS5zcGVjdWxhckV4cG9uZW50ID0gMjsKLX0KLQotdm9pZCBTcG90TGlnaHRTb3Vy
Y2U6OnVwZGF0ZVBhaW50aW5nRGF0YShQYWludGluZ0RhdGEmIHBhaW50aW5nRGF0YSwgaW50IHgs
IGludCB5LCBmbG9hdCB6KQotewotICAgIHBhaW50aW5nRGF0YS5saWdodFZlY3Rvci5zZXRYKG1f
cG9zaXRpb24ueCgpIC0geCk7Ci0gICAgcGFpbnRpbmdEYXRhLmxpZ2h0VmVjdG9yLnNldFkobV9w
b3NpdGlvbi55KCkgLSB5KTsKLSAgICBwYWludGluZ0RhdGEubGlnaHRWZWN0b3Iuc2V0WihtX3Bv
c2l0aW9uLnooKSAtIHopOwotICAgIHBhaW50aW5nRGF0YS5saWdodFZlY3Rvckxlbmd0aCA9IHBh
aW50aW5nRGF0YS5saWdodFZlY3Rvci5sZW5ndGgoKTsKLQotICAgIGZsb2F0IGNvc2luZU9mQW5n
bGUgPSAocGFpbnRpbmdEYXRhLmxpZ2h0VmVjdG9yICogcGFpbnRpbmdEYXRhLmRpcmVjdGlvblZl
Y3RvcikgLyBwYWludGluZ0RhdGEubGlnaHRWZWN0b3JMZW5ndGg7Ci0gICAgaWYgKGNvc2luZU9m
QW5nbGUgPiBwYWludGluZ0RhdGEuY29uZUN1dE9mZkxpbWl0KSB7Ci0gICAgICAgIC8vIE5vIGxp
Z2h0IGlzIHByb2R1Y2VkLCBzY2FubGluZXMgYXJlIG5vdCB1cGRhdGVkCi0gICAgICAgIHBhaW50
aW5nRGF0YS5jb2xvclZlY3Rvci5zZXRYKDAuMGYpOwotICAgICAgICBwYWludGluZ0RhdGEuY29s
b3JWZWN0b3Iuc2V0WSgwLjBmKTsKLSAgICAgICAgcGFpbnRpbmdEYXRhLmNvbG9yVmVjdG9yLnNl
dFooMC4wZik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBTZXQgdGhlIGNvbG9y
IG9mIHRoZSBwaXhlbAotICAgIGZsb2F0IGxpZ2h0U3RyZW5ndGg7Ci0gICAgc3dpdGNoIChwYWlu
dGluZ0RhdGEuc3BlY3VsYXJFeHBvbmVudCkgewotICAgIGNhc2UgMDoKLSAgICAgICAgbGlnaHRT
dHJlbmd0aCA9IDEuMGY7IC8vIC1jb3NpbmVPZkFuZ2xlIF4gMCA9PSAxCi0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgMToKLSAgICAgICAgbGlnaHRTdHJlbmd0aCA9IC1jb3NpbmVPZkFuZ2xlOyAv
LyAtY29zaW5lT2ZBbmdsZSBeIDEgPT0gLWNvc2luZU9mQW5nbGUKLSAgICAgICAgYnJlYWs7Ci0g
ICAgZGVmYXVsdDoKLSAgICAgICAgbGlnaHRTdHJlbmd0aCA9IHBvd2YoLWNvc2luZU9mQW5nbGUs
IG1fc3BlY3VsYXJFeHBvbmVudCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGlmIChj
b3NpbmVPZkFuZ2xlID4gcGFpbnRpbmdEYXRhLmNvbmVGdWxsTGlnaHQpCi0gICAgICAgIGxpZ2h0
U3RyZW5ndGggKj0gKHBhaW50aW5nRGF0YS5jb25lQ3V0T2ZmTGltaXQgLSBjb3NpbmVPZkFuZ2xl
KSAvIChwYWludGluZ0RhdGEuY29uZUN1dE9mZkxpbWl0IC0gcGFpbnRpbmdEYXRhLmNvbmVGdWxs
TGlnaHQpOwotCi0gICAgaWYgKGxpZ2h0U3RyZW5ndGggPiAxLjBmKQotICAgICAgICBsaWdodFN0
cmVuZ3RoID0gMS4wZjsKLQotICAgIHBhaW50aW5nRGF0YS5jb2xvclZlY3Rvci5zZXRYKHBhaW50
aW5nRGF0YS5wcml2YXRlQ29sb3JWZWN0b3IueCgpICogbGlnaHRTdHJlbmd0aCk7Ci0gICAgcGFp
bnRpbmdEYXRhLmNvbG9yVmVjdG9yLnNldFkocGFpbnRpbmdEYXRhLnByaXZhdGVDb2xvclZlY3Rv
ci55KCkgKiBsaWdodFN0cmVuZ3RoKTsKLSAgICBwYWludGluZ0RhdGEuY29sb3JWZWN0b3Iuc2V0
WihwYWludGluZ0RhdGEucHJpdmF0ZUNvbG9yVmVjdG9yLnooKSAqIGxpZ2h0U3RyZW5ndGgpOwot
fQotCi1ib29sIFNwb3RMaWdodFNvdXJjZTo6c2V0WChmbG9hdCB4KQotewotICAgIGlmIChtX3Bv
c2l0aW9uLngoKSA9PSB4KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgbV9wb3NpdGlvbi5z
ZXRYKHgpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIFNwb3RMaWdodFNvdXJjZTo6c2V0
WShmbG9hdCB5KQotewotICAgIGlmIChtX3Bvc2l0aW9uLnkoKSA9PSB5KQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgbV9wb3NpdGlvbi5zZXRZKHkpOwotICAgIHJldHVybiB0cnVlOwotfQot
Ci1ib29sIFNwb3RMaWdodFNvdXJjZTo6c2V0WihmbG9hdCB6KQotewotICAgIGlmIChtX3Bvc2l0
aW9uLnooKSA9PSB6KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgbV9wb3NpdGlvbi5zZXRa
KHopOwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIFNwb3RMaWdodFNvdXJjZTo6c2V0UG9p
bnRzQXRYKGZsb2F0IHBvaW50c0F0WCkKLXsKLSAgICBpZiAobV9kaXJlY3Rpb24ueCgpID09IHBv
aW50c0F0WCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIG1fZGlyZWN0aW9uLnNldFgocG9p
bnRzQXRYKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBTcG90TGlnaHRTb3VyY2U6OnNl
dFBvaW50c0F0WShmbG9hdCBwb2ludHNBdFkpCi17Ci0gICAgaWYgKG1fZGlyZWN0aW9uLnkoKSA9
PSBwb2ludHNBdFkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBtX2RpcmVjdGlvbi5zZXRZ
KHBvaW50c0F0WSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgU3BvdExpZ2h0U291cmNl
OjpzZXRQb2ludHNBdFooZmxvYXQgcG9pbnRzQXRaKQotewotICAgIGlmIChtX2RpcmVjdGlvbi56
KCkgPT0gcG9pbnRzQXRaKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgbV9kaXJlY3Rpb24u
c2V0Wihwb2ludHNBdFopOwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIFNwb3RMaWdodFNv
dXJjZTo6c2V0U3BlY3VsYXJFeHBvbmVudChmbG9hdCBzcGVjdWxhckV4cG9uZW50KQotewotICAg
IGlmIChtX3NwZWN1bGFyRXhwb25lbnQgPT0gc3BlY3VsYXJFeHBvbmVudCkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIG1fc3BlY3VsYXJFeHBvbmVudCA9IHNwZWN1bGFyRXhwb25lbnQ7Ci0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgU3BvdExpZ2h0U291cmNlOjpzZXRMaW1pdGluZ0Nv
bmVBbmdsZShmbG9hdCBsaW1pdGluZ0NvbmVBbmdsZSkKLXsKLSAgICBpZiAobV9saW1pdGluZ0Nv
bmVBbmdsZSA9PSBsaW1pdGluZ0NvbmVBbmdsZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IG1fbGltaXRpbmdDb25lQW5nbGUgPSBsaW1pdGluZ0NvbmVBbmdsZTsKLSAgICByZXR1cm4gdHJ1
ZTsKLX0KLQotdm9pZCBEaXN0YW50TGlnaHRTb3VyY2U6OmluaXRQYWludGluZ0RhdGEoUGFpbnRp
bmdEYXRhJiBwYWludGluZ0RhdGEpCi17Ci0gICAgZmxvYXQgYXppbXV0aCA9IGRlZzJyYWQobV9h
emltdXRoKTsKLSAgICBmbG9hdCBlbGV2YXRpb24gPSBkZWcycmFkKG1fZWxldmF0aW9uKTsKLSAg
ICBwYWludGluZ0RhdGEubGlnaHRWZWN0b3Iuc2V0WChjb3NmKGF6aW11dGgpICogY29zZihlbGV2
YXRpb24pKTsKLSAgICBwYWludGluZ0RhdGEubGlnaHRWZWN0b3Iuc2V0WShzaW5mKGF6aW11dGgp
ICogY29zZihlbGV2YXRpb24pKTsKLSAgICBwYWludGluZ0RhdGEubGlnaHRWZWN0b3Iuc2V0Wihz
aW5mKGVsZXZhdGlvbikpOwotICAgIHBhaW50aW5nRGF0YS5saWdodFZlY3Rvckxlbmd0aCA9IDE7
Ci19Ci0KLXZvaWQgRGlzdGFudExpZ2h0U291cmNlOjp1cGRhdGVQYWludGluZ0RhdGEoUGFpbnRp
bmdEYXRhJiwgaW50LCBpbnQsIGZsb2F0KQotewotfQotCi1ib29sIERpc3RhbnRMaWdodFNvdXJj
ZTo6c2V0QXppbXV0aChmbG9hdCBhemltdXRoKQotewotICAgIGlmIChtX2F6aW11dGggPT0gYXpp
bXV0aCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIG1fYXppbXV0aCA9IGF6aW11dGg7Ci0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgRGlzdGFudExpZ2h0U291cmNlOjpzZXRFbGV2YXRp
b24oZmxvYXQgZWxldmF0aW9uKQotewotICAgIGlmIChtX2VsZXZhdGlvbiA9PSBlbGV2YXRpb24p
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBtX2VsZXZhdGlvbiA9IGVsZXZhdGlvbjsKLSAg
ICByZXR1cm4gdHJ1ZTsKLX0KLQogYm9vbCBMaWdodFNvdXJjZTo6c2V0QXppbXV0aChmbG9hdCBh
emltdXRoKQogewogICAgIGlmIChtX3R5cGUgPT0gTFNfRElTVEFOVCkKQEAgLTMxNCwzNyArMTEw
LDYgQEAgYm9vbCBMaWdodFNvdXJjZTo6c2V0TGltaXRpbmdDb25lQW5nbGUoZgogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYg
dHMsIGNvbnN0IEZsb2F0UG9pbnQzRCYgcCkKLXsKLSAgICB0cyA8PCAieD0iIDw8IHAueCgpIDw8
ICIgeT0iIDw8IHAueSgpIDw8ICIgej0iIDw8IHAueigpOwotICAgIHJldHVybiB0czsKLX0KLQot
VGV4dFN0cmVhbSYgUG9pbnRMaWdodFNvdXJjZTo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0
U3RyZWFtJiB0cykgY29uc3QKLXsKLSAgICB0cyA8PCAiW3R5cGU9UE9JTlQtTElHSFRdICI7Ci0g
ICAgdHMgPDwgIltwb3NpdGlvbj1cIiIgPDwgcG9zaXRpb24oKSA8PCAiXCJdIjsKLSAgICByZXR1
cm4gdHM7Ci19Ci0KLVRleHRTdHJlYW0mIFNwb3RMaWdodFNvdXJjZTo6ZXh0ZXJuYWxSZXByZXNl
bnRhdGlvbihUZXh0U3RyZWFtJiB0cykgY29uc3QKLXsKLSAgICB0cyA8PCAiW3R5cGU9U1BPVC1M
SUdIVF0gIjsKLSAgICB0cyA8PCAiW3Bvc2l0aW9uPVwiIiA8PCBwb3NpdGlvbigpIDw8ICJcIl0i
OwotICAgIHRzIDw8ICJbZGlyZWN0aW9uPVwiIiA8PCBkaXJlY3Rpb24oKSA8PCAiXCJdIjsKLSAg
ICB0cyA8PCAiW3NwZWN1bGFyRXhwb25lbnQ9XCIiIDw8IHNwZWN1bGFyRXhwb25lbnQoKSA8PCAi
XCJdIjsKLSAgICB0cyA8PCAiW2xpbWl0aW5nQ29uZUFuZ2xlPVwiIiA8PCBsaW1pdGluZ0NvbmVB
bmdsZSgpIDw8ICJcIl0iOwotICAgIHJldHVybiB0czsKLX0KLQotVGV4dFN0cmVhbSYgRGlzdGFu
dExpZ2h0U291cmNlOjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25z
dAotewotICAgIHRzIDw8ICJbdHlwZT1ESVNUQU5ULUxJR0hUXSAiOwotICAgIHRzIDw8ICJbYXpp
bXV0aD1cIiIgPDwgYXppbXV0aCgpIDw8ICJcIl0iOwotICAgIHRzIDw8ICJbZWxldmF0aW9uPVwi
IiA8PCBlbGV2YXRpb24oKSA8PCAiXCJdIjsKLSAgICByZXR1cm4gdHM7Ci19Ci0KIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShGSUxURVJTKQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Qb2ludExpZ2h0U291cmNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1Bv
aW50TGlnaHRTb3VyY2UuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9Qb2ludExpZ2h0U291cmNlLmNwcAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAw
NyBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KKyAqIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAy
MDA1IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
Wm9sdGFuIEhlcmN6ZWcgPHpoZXJjemVnQHdlYmtpdC5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgVW5pdmVyc2l0eSBvZiBTemVnZWQKKyAqIENvcHlyaWdodCAoQykgMjAxMSBSZW5hdGEgSG9k
b3ZhbiA8cmVuaUB3ZWJraXQub3JnPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVU5JVkVSU0lUWSBPRiBTWkVHRUQgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBVTklWRVJTSVRZIE9GIFNaRUdFRCBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNp
ZiBFTkFCTEUoRklMVEVSUykKKyNpbmNsdWRlICJQb2ludExpZ2h0U291cmNlLmgiCisKKyNpbmNs
dWRlICJUZXh0U3RyZWFtLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBQb2ludExp
Z2h0U291cmNlOjppbml0UGFpbnRpbmdEYXRhKFBhaW50aW5nRGF0YSYpCit7Cit9CisKK3ZvaWQg
UG9pbnRMaWdodFNvdXJjZTo6dXBkYXRlUGFpbnRpbmdEYXRhKFBhaW50aW5nRGF0YSYgcGFpbnRp
bmdEYXRhLCBpbnQgeCwgaW50IHksIGZsb2F0IHopCit7CisgICAgcGFpbnRpbmdEYXRhLmxpZ2h0
VmVjdG9yLnNldFgobV9wb3NpdGlvbi54KCkgLSB4KTsKKyAgICBwYWludGluZ0RhdGEubGlnaHRW
ZWN0b3Iuc2V0WShtX3Bvc2l0aW9uLnkoKSAtIHkpOworICAgIHBhaW50aW5nRGF0YS5saWdodFZl
Y3Rvci5zZXRaKG1fcG9zaXRpb24ueigpIC0geik7CisgICAgcGFpbnRpbmdEYXRhLmxpZ2h0VmVj
dG9yTGVuZ3RoID0gcGFpbnRpbmdEYXRhLmxpZ2h0VmVjdG9yLmxlbmd0aCgpOworfQorCitib29s
IFBvaW50TGlnaHRTb3VyY2U6OnNldFgoZmxvYXQgeCkKK3sKKyAgICBpZiAobV9wb3NpdGlvbi54
KCkgPT0geCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIG1fcG9zaXRpb24uc2V0WCh4KTsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBQb2ludExpZ2h0U291cmNlOjpzZXRZKGZsb2F0
IHkpCit7CisgICAgaWYgKG1fcG9zaXRpb24ueSgpID09IHkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBtX3Bvc2l0aW9uLnNldFkoeSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wg
UG9pbnRMaWdodFNvdXJjZTo6c2V0WihmbG9hdCB6KQoreworICAgIGlmIChtX3Bvc2l0aW9uLnoo
KSA9PSB6KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgbV9wb3NpdGlvbi5zZXRaKHopOwor
ICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiB0cywgY29uc3QgRmxvYXRQb2ludDNEJiBwKQoreworICAgIHRzIDw8ICJ4PSIgPDwg
cC54KCkgPDwgIiB5PSIgPDwgcC55KCkgPDwgIiB6PSIgPDwgcC56KCk7CisgICAgcmV0dXJuIHRz
OworfQorCitUZXh0U3RyZWFtJiBQb2ludExpZ2h0U291cmNlOjpleHRlcm5hbFJlcHJlc2VudGF0
aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdAoreworICAgIHRzIDw8ICJbdHlwZT1QT0lOVC1MSUdI
VF0gIjsKKyAgICB0cyA8PCAiW3Bvc2l0aW9uPVwiIiA8PCBwb3NpdGlvbigpIDw8ICJcIl0iOwor
ICAgIHJldHVybiB0czsKK30KKworfTsgLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShGSUxURVJTKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9TcG90TGlnaHRTb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU3BvdExpZ2h0U291cmNlLmNwcAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU3BvdExpZ2h0
U291cmNlLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOTggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDggQWxleCBNYXRoZXdzIDxwb3NzZXNzZWRwZW5ndWluYm9iQGdtYWlsLmNvbT4K
KyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBOaWtvbGFzIFppbW1lcm1h
bm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBSb2Ig
QnVpcyA8YnVpc0BrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA1IEVyaWMgU2VpZGVsIDxl
cmljQHdlYmtpdC5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgWm9sdGFuIEhlcmN6ZWcgPHpo
ZXJjemVnQHdlYmtpdC5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgVW5pdmVyc2l0eSBvZiBT
emVnZWQKKyAqIENvcHlyaWdodCAoQykgMjAxMSBSZW5hdGEgSG9kb3ZhbiA8cmVuaUB3ZWJraXQu
b3JnPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVU5JVkVS
U0lUWSBPRiBTWkVHRUQgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBVTklWRVJT
SVRZIE9GIFNaRUdFRCBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoRklMVEVSUykK
KyNpbmNsdWRlICJTcG90TGlnaHRTb3VyY2UuaCIKKworI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBzcG90LWxpZ2h0IGVkZ2UgZGFya2VuaW5nIGRl
cGVuZHMgb24gYW4gYWJzb2x1dGUgdHJlc2hvbGQKKy8vIGFjY29yZGluZyB0byB0aGUgU1ZHIDEu
MSBTRSBsaWdodCByZWdyZXNzaW9uIHRlc3RzCitzdGF0aWMgY29uc3QgZmxvYXQgYW50aUFsaWFz
VHJlc2hvbGQgPSAwLjAxNmY7CisKK3ZvaWQgU3BvdExpZ2h0U291cmNlOjppbml0UGFpbnRpbmdE
YXRhKFBhaW50aW5nRGF0YSYgcGFpbnRpbmdEYXRhKQoreworICAgIHBhaW50aW5nRGF0YS5wcml2
YXRlQ29sb3JWZWN0b3IgPSBwYWludGluZ0RhdGEuY29sb3JWZWN0b3I7CisgICAgcGFpbnRpbmdE
YXRhLmRpcmVjdGlvblZlY3Rvci5zZXRYKG1fZGlyZWN0aW9uLngoKSAtIG1fcG9zaXRpb24ueCgp
KTsKKyAgICBwYWludGluZ0RhdGEuZGlyZWN0aW9uVmVjdG9yLnNldFkobV9kaXJlY3Rpb24ueSgp
IC0gbV9wb3NpdGlvbi55KCkpOworICAgIHBhaW50aW5nRGF0YS5kaXJlY3Rpb25WZWN0b3Iuc2V0
WihtX2RpcmVjdGlvbi56KCkgLSBtX3Bvc2l0aW9uLnooKSk7CisgICAgcGFpbnRpbmdEYXRhLmRp
cmVjdGlvblZlY3Rvci5ub3JtYWxpemUoKTsKKworICAgIGlmICghbV9saW1pdGluZ0NvbmVBbmds
ZSkgeworICAgICAgICBwYWludGluZ0RhdGEuY29uZUN1dE9mZkxpbWl0ID0gMC4wZjsKKyAgICAg
ICAgcGFpbnRpbmdEYXRhLmNvbmVGdWxsTGlnaHQgPSAtYW50aUFsaWFzVHJlc2hvbGQ7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgZmxvYXQgbGltaXRpbmdDb25lQW5nbGUgPSBtX2xpbWl0aW5nQ29u
ZUFuZ2xlOworICAgICAgICBpZiAobGltaXRpbmdDb25lQW5nbGUgPCAwLjBmKQorICAgICAgICAg
ICAgbGltaXRpbmdDb25lQW5nbGUgPSAtbGltaXRpbmdDb25lQW5nbGU7CisgICAgICAgIGlmIChs
aW1pdGluZ0NvbmVBbmdsZSA+IDkwLjBmKQorICAgICAgICAgICAgbGltaXRpbmdDb25lQW5nbGUg
PSA5MC4wZjsKKyAgICAgICAgcGFpbnRpbmdEYXRhLmNvbmVDdXRPZmZMaW1pdCA9IGNvc2YoZGVn
MnJhZCgxODAuMGYgLSBsaW1pdGluZ0NvbmVBbmdsZSkpOworICAgICAgICBwYWludGluZ0RhdGEu
Y29uZUZ1bGxMaWdodCA9IHBhaW50aW5nRGF0YS5jb25lQ3V0T2ZmTGltaXQgLSBhbnRpQWxpYXNU
cmVzaG9sZDsKKyAgICB9CisKKyAgICAvLyBPcHRpbWl6YXRpb24gZm9yIGNvbW1vbiBzcGVjdWxh
ckV4cG9uZW50IHZhbHVlcworICAgIGlmICghbV9zcGVjdWxhckV4cG9uZW50KQorICAgICAgICBw
YWludGluZ0RhdGEuc3BlY3VsYXJFeHBvbmVudCA9IDA7CisgICAgZWxzZSBpZiAobV9zcGVjdWxh
ckV4cG9uZW50ID09IDEuMGYpCisgICAgICAgIHBhaW50aW5nRGF0YS5zcGVjdWxhckV4cG9uZW50
ID0gMTsKKyAgICBlbHNlIC8vIEl0IGlzIG5laXRoZXIgMC4wZiBub3IgMS4wZgorICAgICAgICBw
YWludGluZ0RhdGEuc3BlY3VsYXJFeHBvbmVudCA9IDI7Cit9CisKK3ZvaWQgU3BvdExpZ2h0U291
cmNlOjp1cGRhdGVQYWludGluZ0RhdGEoUGFpbnRpbmdEYXRhJiBwYWludGluZ0RhdGEsIGludCB4
LCBpbnQgeSwgZmxvYXQgeikKK3sKKyAgICBwYWludGluZ0RhdGEubGlnaHRWZWN0b3Iuc2V0WCht
X3Bvc2l0aW9uLngoKSAtIHgpOworICAgIHBhaW50aW5nRGF0YS5saWdodFZlY3Rvci5zZXRZKG1f
cG9zaXRpb24ueSgpIC0geSk7CisgICAgcGFpbnRpbmdEYXRhLmxpZ2h0VmVjdG9yLnNldFoobV9w
b3NpdGlvbi56KCkgLSB6KTsKKyAgICBwYWludGluZ0RhdGEubGlnaHRWZWN0b3JMZW5ndGggPSBw
YWludGluZ0RhdGEubGlnaHRWZWN0b3IubGVuZ3RoKCk7CisKKyAgICBmbG9hdCBjb3NpbmVPZkFu
Z2xlID0gKHBhaW50aW5nRGF0YS5saWdodFZlY3RvciAqIHBhaW50aW5nRGF0YS5kaXJlY3Rpb25W
ZWN0b3IpIC8gcGFpbnRpbmdEYXRhLmxpZ2h0VmVjdG9yTGVuZ3RoOworICAgIGlmIChjb3NpbmVP
ZkFuZ2xlID4gcGFpbnRpbmdEYXRhLmNvbmVDdXRPZmZMaW1pdCkgeworICAgICAgICAvLyBObyBs
aWdodCBpcyBwcm9kdWNlZCwgc2NhbmxpbmVzIGFyZSBub3QgdXBkYXRlZAorICAgICAgICBwYWlu
dGluZ0RhdGEuY29sb3JWZWN0b3Iuc2V0WCgwLjBmKTsKKyAgICAgICAgcGFpbnRpbmdEYXRhLmNv
bG9yVmVjdG9yLnNldFkoMC4wZik7CisgICAgICAgIHBhaW50aW5nRGF0YS5jb2xvclZlY3Rvci5z
ZXRaKDAuMGYpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gU2V0IHRoZSBjb2xv
ciBvZiB0aGUgcGl4ZWwKKyAgICBmbG9hdCBsaWdodFN0cmVuZ3RoOworICAgIHN3aXRjaCAocGFp
bnRpbmdEYXRhLnNwZWN1bGFyRXhwb25lbnQpIHsKKyAgICBjYXNlIDA6CisgICAgICAgIGxpZ2h0
U3RyZW5ndGggPSAxLjBmOyAvLyAtY29zaW5lT2ZBbmdsZSBeIDAgPT0gMQorICAgICAgICBicmVh
azsKKyAgICBjYXNlIDE6CisgICAgICAgIGxpZ2h0U3RyZW5ndGggPSAtY29zaW5lT2ZBbmdsZTsg
Ly8gLWNvc2luZU9mQW5nbGUgXiAxID09IC1jb3NpbmVPZkFuZ2xlCisgICAgICAgIGJyZWFrOwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIGxpZ2h0U3RyZW5ndGggPSBwb3dmKC1jb3NpbmVPZkFuZ2xl
LCBtX3NwZWN1bGFyRXhwb25lbnQpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBpZiAo
Y29zaW5lT2ZBbmdsZSA+IHBhaW50aW5nRGF0YS5jb25lRnVsbExpZ2h0KQorICAgICAgICBsaWdo
dFN0cmVuZ3RoICo9IChwYWludGluZ0RhdGEuY29uZUN1dE9mZkxpbWl0IC0gY29zaW5lT2ZBbmds
ZSkgLyAocGFpbnRpbmdEYXRhLmNvbmVDdXRPZmZMaW1pdCAtIHBhaW50aW5nRGF0YS5jb25lRnVs
bExpZ2h0KTsKKworICAgIGlmIChsaWdodFN0cmVuZ3RoID4gMS4wZikKKyAgICAgICAgbGlnaHRT
dHJlbmd0aCA9IDEuMGY7CisKKyAgICBwYWludGluZ0RhdGEuY29sb3JWZWN0b3Iuc2V0WChwYWlu
dGluZ0RhdGEucHJpdmF0ZUNvbG9yVmVjdG9yLngoKSAqIGxpZ2h0U3RyZW5ndGgpOworICAgIHBh
aW50aW5nRGF0YS5jb2xvclZlY3Rvci5zZXRZKHBhaW50aW5nRGF0YS5wcml2YXRlQ29sb3JWZWN0
b3IueSgpICogbGlnaHRTdHJlbmd0aCk7CisgICAgcGFpbnRpbmdEYXRhLmNvbG9yVmVjdG9yLnNl
dFoocGFpbnRpbmdEYXRhLnByaXZhdGVDb2xvclZlY3Rvci56KCkgKiBsaWdodFN0cmVuZ3RoKTsK
K30KKworYm9vbCBTcG90TGlnaHRTb3VyY2U6OnNldFgoZmxvYXQgeCkKK3sKKyAgICBpZiAobV9w
b3NpdGlvbi54KCkgPT0geCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIG1fcG9zaXRpb24u
c2V0WCh4KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBTcG90TGlnaHRTb3VyY2U6OnNl
dFkoZmxvYXQgeSkKK3sKKyAgICBpZiAobV9wb3NpdGlvbi55KCkgPT0geSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIG1fcG9zaXRpb24uc2V0WSh5KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworYm9vbCBTcG90TGlnaHRTb3VyY2U6OnNldFooZmxvYXQgeikKK3sKKyAgICBpZiAobV9wb3Np
dGlvbi56KCkgPT0geikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIG1fcG9zaXRpb24uc2V0
Wih6KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBTcG90TGlnaHRTb3VyY2U6OnNldFBv
aW50c0F0WChmbG9hdCBwb2ludHNBdFgpCit7CisgICAgaWYgKG1fZGlyZWN0aW9uLngoKSA9PSBw
b2ludHNBdFgpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBtX2RpcmVjdGlvbi5zZXRYKHBv
aW50c0F0WCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgU3BvdExpZ2h0U291cmNlOjpz
ZXRQb2ludHNBdFkoZmxvYXQgcG9pbnRzQXRZKQoreworICAgIGlmIChtX2RpcmVjdGlvbi55KCkg
PT0gcG9pbnRzQXRZKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgbV9kaXJlY3Rpb24uc2V0
WShwb2ludHNBdFkpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFNwb3RMaWdodFNvdXJj
ZTo6c2V0UG9pbnRzQXRaKGZsb2F0IHBvaW50c0F0WikKK3sKKyAgICBpZiAobV9kaXJlY3Rpb24u
eigpID09IHBvaW50c0F0WikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIG1fZGlyZWN0aW9u
LnNldFoocG9pbnRzQXRaKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBTcG90TGlnaHRT
b3VyY2U6OnNldFNwZWN1bGFyRXhwb25lbnQoZmxvYXQgc3BlY3VsYXJFeHBvbmVudCkKK3sKKyAg
ICBpZiAobV9zcGVjdWxhckV4cG9uZW50ID09IHNwZWN1bGFyRXhwb25lbnQpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBtX3NwZWN1bGFyRXhwb25lbnQgPSBzcGVjdWxhckV4cG9uZW50Owor
ICAgIHJldHVybiB0cnVlOworfQorCitib29sIFNwb3RMaWdodFNvdXJjZTo6c2V0TGltaXRpbmdD
b25lQW5nbGUoZmxvYXQgbGltaXRpbmdDb25lQW5nbGUpCit7CisgICAgaWYgKG1fbGltaXRpbmdD
b25lQW5nbGUgPT0gbGltaXRpbmdDb25lQW5nbGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBtX2xpbWl0aW5nQ29uZUFuZ2xlID0gbGltaXRpbmdDb25lQW5nbGU7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK3N0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBj
b25zdCBGbG9hdFBvaW50M0QmIHApCit7CisgICAgdHMgPDwgIng9IiA8PCBwLngoKSA8PCAiIHk9
IiA8PCBwLnkoKSA8PCAiIHo9IiA8PCBwLnooKTsKKyAgICByZXR1cm4gdHM7Cit9CisKK1RleHRT
dHJlYW0mIFNwb3RMaWdodFNvdXJjZTo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFt
JiB0cykgY29uc3QKK3sKKyAgICB0cyA8PCAiW3R5cGU9U1BPVC1MSUdIVF0gIjsKKyAgICB0cyA8
PCAiW3Bvc2l0aW9uPVwiIiA8PCBwb3NpdGlvbigpIDw8ICJcIl0iOworICAgIHRzIDw8ICJbZGly
ZWN0aW9uPVwiIiA8PCBkaXJlY3Rpb24oKSA8PCAiXCJdIjsKKyAgICB0cyA8PCAiW3NwZWN1bGFy
RXhwb25lbnQ9XCIiIDw8IHNwZWN1bGFyRXhwb25lbnQoKSA8PCAiXCJdIjsKKyAgICB0cyA8PCAi
W2xpbWl0aW5nQ29uZUFuZ2xlPVwiIiA8PCBsaW1pdGluZ0NvbmVBbmdsZSgpIDw8ICJcIl0iOwor
ICAgIHJldHVybiB0czsKK30KKworfTsgLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShGSUxURVJTKQo=
</data>
<flag name="review"
          id="73234"
          type_id="1"
          status="-"
          setter="krit"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81785</attachid>
            <date>2011-02-09 03:16:18 -0800</date>
            <delta_ts>2011-02-10 04:23:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>separate_light_win.patch</filename>
            <type>text/plain</type>
            <size>35407</size>
            <attacher name="Renata Hodovan">rhodovan.u-szeged</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc4MDM3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTAgQEAKKzIwMTEtMDItMDkgIFJlbmF0YSBI
b2RvdmFuICA8cmVuaUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE1vdmUgdGhlIGxpZ2h0IHNvdXJjZSBpbXBsZW1lbnRhdGlvbnMg
aW50byB0aGVpciBvd24gZmlsZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01Mzk5NgorCisgICAgICAgIFNwbGl0dGluZyBMaWdodFNvdXJjZS5jcHAg
aW50byAzIGZpbGVzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBhcmUgYWRkZWQgc2luY2UgdGhp
cyBpcyBhIHJlZmFjdG9yaW5nLgorCisgICAgICAgICogQW5kcm9pZC5tazoKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJD
b3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRGlzdGFudExpZ2h0
U291cmNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXN0YW50TGlnaHRTb3VyY2U6
OmluaXRQYWludGluZ0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RGlzdGFudExpZ2h0U291cmNl
Ojp1cGRhdGVQYWludGluZ0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RGlzdGFudExpZ2h0U291
cmNlOjpzZXRBemltdXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3RhbnRMaWdodFNvdXJjZTo6
c2V0RWxldmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3RhbnRMaWdodFNvdXJjZTo6ZXh0
ZXJuYWxSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9MaWdodFNvdXJjZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Q
b2ludExpZ2h0U291cmNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQb2ludExpZ2h0
U291cmNlOjppbml0UGFpbnRpbmdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlBvaW50TGlnaHRT
b3VyY2U6OnVwZGF0ZVBhaW50aW5nRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpQb2ludExpZ2h0
U291cmNlOjpzZXRYKToKKyAgICAgICAgKFdlYkNvcmU6OlBvaW50TGlnaHRTb3VyY2U6OnNldFkp
OgorICAgICAgICAoV2ViQ29yZTo6UG9pbnRMaWdodFNvdXJjZTo6c2V0Wik6CisgICAgICAgIChX
ZWJDb3JlOjpvcGVyYXRvcjw8KToKKyAgICAgICAgKFdlYkNvcmU6OlBvaW50TGlnaHRTb3VyY2U6
OmV4dGVybmFsUmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvU3BvdExpZ2h0U291cmNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTcG90
TGlnaHRTb3VyY2U6OmluaXRQYWludGluZ0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U3BvdExp
Z2h0U291cmNlOjp1cGRhdGVQYWludGluZ0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U3BvdExp
Z2h0U291cmNlOjpzZXRYKToKKyAgICAgICAgKFdlYkNvcmU6OlNwb3RMaWdodFNvdXJjZTo6c2V0
WSk6CisgICAgICAgIChXZWJDb3JlOjpTcG90TGlnaHRTb3VyY2U6OnNldFopOgorICAgICAgICAo
V2ViQ29yZTo6U3BvdExpZ2h0U291cmNlOjpzZXRQb2ludHNBdFgpOgorICAgICAgICAoV2ViQ29y
ZTo6U3BvdExpZ2h0U291cmNlOjpzZXRQb2ludHNBdFkpOgorICAgICAgICAoV2ViQ29yZTo6U3Bv
dExpZ2h0U291cmNlOjpzZXRQb2ludHNBdFopOgorICAgICAgICAoV2ViQ29yZTo6U3BvdExpZ2h0
U291cmNlOjpzZXRTcGVjdWxhckV4cG9uZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNwb3RMaWdo
dFNvdXJjZTo6c2V0TGltaXRpbmdDb25lQW5nbGUpOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0
b3I8PCk6CisgICAgICAgIChXZWJDb3JlOjpTcG90TGlnaHRTb3VyY2U6OmV4dGVybmFsUmVwcmVz
ZW50YXRpb24pOgorCiAyMDExLTAyLTA5ICBIYW5zIFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmVyZW15IE9ybG93LgpJbmRleDogU291cmNlL1dl
YkNvcmUvQW5kcm9pZC5tawo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9BbmRyb2lkLm1r
CShyZXZpc2lvbiA3ODAzNCkKKysrIFNvdXJjZS9XZWJDb3JlL0FuZHJvaWQubWsJKHdvcmtpbmcg
Y29weSkKQEAgLTU0Myw2ICs1NDMsNyBAQCBMT0NBTF9TUkNfRklMRVMgOj0gJChMT0NBTF9TUkNf
RklMRVMpIFwKIAogaWZlcSAoJChFTkFCTEVfU1ZHKSwgdHJ1ZSkKIExPQ0FMX1NSQ19GSUxFUyA6
PSAkKExPQ0FMX1NSQ19GSUxFUykgXAorCXBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRGlzdGFu
dExpZ2h0U291cmNlLmNwcCBcCiAJcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNw
cCBcCiAJcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcCBcCiAJcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmNwcCBcCkBAIC01NTcs
NyArNTU4LDkgQEAgTE9DQUxfU1JDX0ZJTEVTIDo9ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVNwZWN1bGFyTGlnaHRpbmcuY3BwIFwKIAlwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAgXAogCXBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVUdXJidWxlbmNlLmNwcCBcCi0JcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9MaWdodFNv
dXJjZS5jcHAKKwlwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0xpZ2h0U291cmNlLmNwcCBcCisJ
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Qb2ludExpZ2h0U291cmNlLmNwcCBcCisJcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9TcG90TGlnaHRTb3VyY2UuY3BwCiBlbmRpZgogCiBMT0NBTF9T
UkNfRklMRVMgOj0gJChMT0NBTF9TUkNfRklMRVMpIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CShyZXZpc2lvbiA3ODAzNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjIyLDYgKzEyMjIsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvU3RyaW5nVHJ1bmNhdG9yLmNwcAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL1dpZHRoSXRlcmF0b3IuY3BwCiAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Rp
c3RhbnRMaWdodFNvdXJjZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxl
bmQuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5jcHAKQEAg
LTEyNDAsNiArMTI0MSw4IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZpbHRlckVmZmVjdC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0xpZ2h0
U291cmNlLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvUG9pbnRMaWdodFNvdXJj
ZS5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1Nwb3RMaWdodFNvdXJjZS5jcHAK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHAKIApJbmRleDogU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUuYW0JKHJldmlzaW9uIDc4MDM0KQorKysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
YW0JKHdvcmtpbmcgY29weSkKQEAgLTIzNDMsNiArMjM0Myw3IEBAIHdlYmNvcmVfc291cmNlcyAr
PSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRTaGFkb3cuaCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGFzaEFycmF5LmggXAorCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRGlzdGFudExpZ2h0U291cmNlLmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9EaXN0YW50TGlnaHRT
b3VyY2UuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJs
ZW5kLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJs
ZW5kLmggXApAQCAtMjM4MSwxMSArMjM4MiwxMyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmggXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvTGlnaHRTb3VyY2UuY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0xpZ2h0U291cmNlLmggXAor
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvUG9pbnRMaWdodFNvdXJj
ZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvUG9pbnRM
aWdodFNvdXJjZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L1NvdXJjZUFscGhhLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9Tb3VyY2VBbHBoYS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9TcG90TGlnaHRTb3VyY2UuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1Nwb3RMaWdodFNvdXJjZS5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50M0QuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50M0QuaCBcCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CShyZXZpc2lvbiA3ODAzNCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2lu
ZyBjb3B5KQpAQCAtMjYzMyw2ICsyNjMzLDcgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YS5oJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0nLAorICAgICAgICAg
ICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRGlzdGFudExpZ2h0U291cmNlLmNwcCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9EaXN0YW50TGlnaHRTb3VyY2Uu
aCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmgnLApAQCAt
MjY2OCw3ICsyNjY5LDkgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFVHVyYnVsZW5jZS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0xpZ2h0U291cmNlLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9MaWdodFNvdXJjZS5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L1BvaW50TGlnaHRTb3VyY2UuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL1BvaW50TGlnaHRTb3VyY2UuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9TcG90TGlnaHRTb3VyY2UuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL1Nwb3RMaWdodFNvdXJjZS5oJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAnLApJbmRleDogU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8JKHJldmlz
aW9uIDc4MDM0KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8JKHdvcmtpbmcgY29weSkK
QEAgLTMzNTMsNiArMzM1Myw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9YU0xUPTEpIHsK
IAogY29udGFpbnMoREVGSU5FUywgRU5BQkxFX0ZJTFRFUlM9MSkgewogICAgIFNPVVJDRVMgKz0g
XAorICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Rpc3RhbnRMaWdodFNvdXJjZS5j
cHAgXAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwIFwKICAg
ICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcCBcCiAgICAg
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5jcHAgXApA
QCAtMzM3MSw2ICszMzcyLDggQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX0ZJTFRFUlM9MSkg
ewogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5jcHAgXAog
ICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAgXAogICAg
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0xpZ2h0U291cmNlLmNwcCBcCisgICAgICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvUG9pbnRMaWdodFNvdXJjZS5jcHAgXAorICAgICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1Nwb3RMaWdodFNvdXJjZS5jcHAgXAogICAgICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcCBcCiAgICAgICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHAKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiA3ODAz
NCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yODY2MCw2ICsyODY2MCwxMCBAQAogCQkJCQlOYW1lPSJmaWx0ZXJzIgog
CQkJCQk+CiAJCQkJCTxGaWxlCisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBo
aWNzXGZpbHRlcnNcRGlzdGFudExpZ2h0U291cmNlLmNwcCIKKwkJCQkJCT4KKwkJCQkJPC9GaWxl
PgorCQkJCQk8RmlsZQogCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xm
aWx0ZXJzXERpc3RhbnRMaWdodFNvdXJjZS5oIgogCQkJCQkJPgogCQkJCQk8L0ZpbGU+CkBAIC0y
ODgxMiw2ICsyODgxNiwxMCBAQAogCQkJCQkJPgogCQkJCQk8L0ZpbGU+CiAJCQkJCTxGaWxlCisJ
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGZpbHRlcnNcUG9pbnRMaWdo
dFNvdXJjZS5jcHAiCisJCQkJCQk+CisJCQkJCTwvRmlsZT4KKwkJCQkJPEZpbGUKIAkJCQkJCVJl
bGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZmlsdGVyc1xQb2ludExpZ2h0U291cmNl
LmgiCiAJCQkJCQk+CiAJCQkJCTwvRmlsZT4KQEAgLTI4ODMyLDYgKzI4ODQwLDEwIEBACiAJCQkJ
CQk+CiAJCQkJCTwvRmlsZT4KIAkJCQkJPEZpbGUKKwkJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxh
dGZvcm1cZ3JhcGhpY3NcZmlsdGVyc1xTcG90TGlnaHRTb3VyY2UuY3BwIgorCQkJCQkJPgorCQkJ
CQk8L0ZpbGU+CisJCQkJCTxGaWxlCiAJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdy
YXBoaWNzXGZpbHRlcnNcU3BvdExpZ2h0U291cmNlLmgiCiAJCQkJCQk+CiAJCQkJCTwvRmlsZT4K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDc4MDM0KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMTM2LDYgKzMxMzYsOSBAQAog
CQlBMTM2QTAwRDExMzREQkQyMDBDQzhENTAgLyogWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50
VGhyb3R0bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExMzZBMDBCMTEzNERCRDIwMENDOEQ1MCAvKiBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnRU
aHJvdHRsZS5oICovOyB9OwogCQlBMTdDODEyMjBGMkE1Q0Y3MDA1REFBRUIgLyogSFRNTEVsZW1l
bnRGYWN0b3J5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExN0M4MTIwMEYyQTVDRjcwMDVEQUFFQiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuY3BwICov
OyB9OwogCQlBMTdDODEyMzBGMkE1Q0Y3MDA1REFBRUIgLyogSFRNTEVsZW1lbnRGYWN0b3J5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTdDODEyMTBG
MkE1Q0Y3MDA1REFBRUIgLyogSFRNTEVsZW1lbnRGYWN0b3J5LmggKi87IH07CisJCUExRTExNTQ0
MTMwMTVDM0QwMDU0QUM4QyAvKiBEaXN0YW50TGlnaHRTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFFMTE1NDMxMzAxNUMzRDAwNTRBQzhD
IC8qIERpc3RhbnRMaWdodFNvdXJjZS5jcHAgKi87IH07CisJCUExRTExNTQ2MTMwMTVDNEUwMDU0
QUM4QyAvKiBQb2ludExpZ2h0U291cmNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEExRTExNTQ1MTMwMTVDNEUwMDU0QUM4QyAvKiBQb2ludExpZ2h0
U291cmNlLmNwcCAqLzsgfTsKKwkJQTFFMTE1NDgxMzAxNUM1RDAwNTRBQzhDIC8qIFNwb3RMaWdo
dFNvdXJjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMUUxMTU0NzEzMDE1QzVEMDA1NEFDOEMgLyogU3BvdExpZ2h0U291cmNlLmNwcCAqLzsgfTsK
IAkJQTQwOUM5ODQxMTZEMERERDAwNzE5N0JEIC8qIEFjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGlj
YXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NDA5Qzk4MjExNkQwREREMDA3MTk3QkQgLyogQWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9y
LmNwcCAqLzsgfTsKIAkJQTQwOUM5ODUxMTZEMERERDAwNzE5N0JEIC8qIEFjY2Vzc2liaWxpdHlQ
cm9ncmVzc0luZGljYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTQwOUM5ODMxMTZEMERERDAwNzE5N0JEIC8qIEFjY2Vzc2liaWxpdHlQcm9ncmVz
c0luZGljYXRvci5oICovOyB9OwogCQlBNDIyNkU1QTExNjNENjY3MDA4QjgzOTcgLyogSlNIVE1M
UHJvZ3Jlc3NFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE0MjI2RTU5MTE2M0Q2NjcwMDhCODM5NyAvKiBKU0hUTUxQcm9ncmVzc0VsZW1l
bnQuY3BwICovOyB9OwpAQCAtOTUyNCw2ICs5NTI3LDkgQEAKIAkJQTEzNkEwMEIxMTM0REJEMjAw
Q0M4RDUwIC8qIFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudFRocm90dGxlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudFRocm90
dGxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExN0M4MTIwMEYyQTVDRjcwMDVE
QUFFQiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSFRNTEVsZW1lbnRGYWN0b3J5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTE3QzgxMjEwRjJBNUNGNzAwNURBQUVCIC8qIEhUTUxFbGVtZW50RmFjdG9yeS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MRWxlbWVudEZhY3RvcnkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFFMTE1NDMxMzAxNUMzRDAwNTRBQzhDIC8q
IERpc3RhbnRMaWdodFNvdXJjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBEaXN0YW50TGlnaHRTb3VyY2UuY3BwOyBwYXRoID0gZmlsdGVycy9EaXN0YW50TGlnaHRT
b3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMUUxMTU0NTEzMDE1QzRF
MDA1NEFDOEMgLyogUG9pbnRMaWdodFNvdXJjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBQb2ludExpZ2h0U291cmNlLmNwcDsgcGF0aCA9IGZpbHRlcnMvUG9pbnRM
aWdodFNvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExRTExNTQ3MTMw
MTVDNUQwMDU0QUM4QyAvKiBTcG90TGlnaHRTb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gU3BvdExpZ2h0U291cmNlLmNwcDsgcGF0aCA9IGZpbHRlcnMvU3Bv
dExpZ2h0U291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTQwOUM5ODIx
MTZEMERERDAwNzE5N0JEIC8qIEFjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRvci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJ
bmRpY2F0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNDA5Qzk4MzExNkQw
REREMDA3MTk3QkQgLyogQWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNDIyNkU1OTExNjNENjY3MDA4QjgzOTcg
LyogSlNIVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTSFRNTFByb2dyZXNzRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xNTk2Nyw2ICsxNTk3Myw5IEBACiAJCUE3NUU4QjdGMEUxREUyQjAwMDdGMjQ4
MSAvKiBmaWx0ZXJzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
KwkJCQlBMUUxMTU0NzEzMDE1QzVEMDA1NEFDOEMgLyogU3BvdExpZ2h0U291cmNlLmNwcCAqLywK
KwkJCQlBMUUxMTU0NTEzMDE1QzRFMDA1NEFDOEMgLyogUG9pbnRMaWdodFNvdXJjZS5jcHAgKi8s
CisJCQkJQTFFMTE1NDMxMzAxNUMzRDAwNTRBQzhDIC8qIERpc3RhbnRMaWdodFNvdXJjZS5jcHAg
Ki8sCiAJCQkJODQ3MzBENUExMjQ4RjBCMzAwRDNBOUM5IC8qIERpc3RhbnRMaWdodFNvdXJjZS5o
ICovLAogCQkJCUE3NUU4QjgwMEUxREUyRDYwMDdGMjQ4MSAvKiBGRUJsZW5kLmNwcCAqLywKIAkJ
CQlBNzVFOEI4MTBFMURFMkQ2MDA3RjI0ODEgLyogRkVCbGVuZC5oICovLApAQCAtMjUxMjYsNiAr
MjUxMzUsOSBAQAogCQkJCTkzNDNDQjgxMTJGMjVFNTEwMDMzQzVFRSAvKiBUZXh0Q29kZWNVVEY4
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3N0UyRTBFMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NG
aWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyOUMxNkUxMzAwQzJFMjAwMkQ3OTRFIC8q
IEFjY2Vzc2liaWxpdHlBbGxJbk9uZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBMUUxMTU0NDEz
MDE1QzNEMDA1NEFDOEMgLyogRGlzdGFudExpZ2h0U291cmNlLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCUExRTExNTQ2MTMwMTVDNEUwMDU0QUM4QyAvKiBQb2ludExpZ2h0U291cmNlLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUExRTExNTQ4MTMwMTVDNUQwMDU0QUM4QyAvKiBTcG90TGlnaHRTb3Vy
Y2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0Rpc3RhbnRMaWdodFNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9EaXN0YW50TGlnaHRTb3VyY2UuY3Bw
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9EaXN0YW50TGlnaHRTb3VyY2UuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IE5pa29sYXMgWmltbWVy
bWFubiA8emltbWVybWFubkBrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IFJv
YiBCdWlzIDxidWlzQGtkZS5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDUgRXJpYyBTZWlkZWwg
PGVyaWNAd2Via2l0Lm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBab2x0YW4gSGVyY3plZyA8
emhlcmN6ZWdAd2Via2l0Lm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBVbml2ZXJzaXR5IG9m
IFN6ZWdlZAorICogQ29weXJpZ2h0IChDKSAyMDExIFJlbmF0YSBIb2RvdmFuIDxyZW5pQHdlYmtp
dC5vcmc+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBVTklW
RVJTSVRZIE9GIFNaRUdFRCBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFVOSVZF
UlNJVFkgT0YgU1pFR0VEIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShGSUxURVJT
KQorI2luY2x1ZGUgIkRpc3RhbnRMaWdodFNvdXJjZS5oIgorCisjaW5jbHVkZSAiUmVuZGVyVHJl
ZUFzVGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgRGlzdGFudExpZ2h0U291
cmNlOjppbml0UGFpbnRpbmdEYXRhKFBhaW50aW5nRGF0YSYgcGFpbnRpbmdEYXRhKQoreworICAg
IGZsb2F0IGF6aW11dGggPSBkZWcycmFkKG1fYXppbXV0aCk7CisgICAgZmxvYXQgZWxldmF0aW9u
ID0gZGVnMnJhZChtX2VsZXZhdGlvbik7CisgICAgcGFpbnRpbmdEYXRhLmxpZ2h0VmVjdG9yLnNl
dFgoY29zZihhemltdXRoKSAqIGNvc2YoZWxldmF0aW9uKSk7CisgICAgcGFpbnRpbmdEYXRhLmxp
Z2h0VmVjdG9yLnNldFkoc2luZihhemltdXRoKSAqIGNvc2YoZWxldmF0aW9uKSk7CisgICAgcGFp
bnRpbmdEYXRhLmxpZ2h0VmVjdG9yLnNldFooc2luZihlbGV2YXRpb24pKTsKKyAgICBwYWludGlu
Z0RhdGEubGlnaHRWZWN0b3JMZW5ndGggPSAxOworfQorCit2b2lkIERpc3RhbnRMaWdodFNvdXJj
ZTo6dXBkYXRlUGFpbnRpbmdEYXRhKFBhaW50aW5nRGF0YSYsIGludCwgaW50LCBmbG9hdCkKK3sK
K30KKworYm9vbCBEaXN0YW50TGlnaHRTb3VyY2U6OnNldEF6aW11dGgoZmxvYXQgYXppbXV0aCkK
K3sKKyAgICBpZiAobV9hemltdXRoID09IGF6aW11dGgpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBtX2F6aW11dGggPSBhemltdXRoOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIERp
c3RhbnRMaWdodFNvdXJjZTo6c2V0RWxldmF0aW9uKGZsb2F0IGVsZXZhdGlvbikKK3sKKyAgICBp
ZiAobV9lbGV2YXRpb24gPT0gZWxldmF0aW9uKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
bV9lbGV2YXRpb24gPSBlbGV2YXRpb247CisgICAgcmV0dXJuIHRydWU7Cit9CisKK1RleHRTdHJl
YW0mIERpc3RhbnRMaWdodFNvdXJjZTo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFt
JiB0cykgY29uc3QKK3sKKyAgICB0cyA8PCAiW3R5cGU9RElTVEFOVC1MSUdIVF0gIjsKKyAgICB0
cyA8PCAiW2F6aW11dGg9XCIiIDw8IGF6aW11dGgoKSA8PCAiXCJdIjsKKyAgICB0cyA8PCAiW2Vs
ZXZhdGlvbj1cIiIgPDwgZWxldmF0aW9uKCkgPDwgIlwiXSI7CisgICAgcmV0dXJuIHRzOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoRklMVEVSUykKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvTGlnaHRTb3VyY2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvTGlnaHRTb3VyY2UuY3BwCShyZXZpc2lvbiA3ODAzNCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvTGlnaHRTb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zLDYgKzMsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlz
QGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDUgRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0
Lm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAxMCBab2x0YW4gSGVyY3plZyA8emhlcmN6ZWdAd2Vi
a2l0Lm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBSZW5hdGEgSG9kb3ZhbiA8cmVuaUB3ZWJr
aXQub3JnPiwgVW5pdmVyc2l0eSBvZiBTemVnZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTMz
LDIxMSArMzQsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgUG9pbnRMaWdodFNv
dXJjZTo6aW5pdFBhaW50aW5nRGF0YShQYWludGluZ0RhdGEmKQotewotfQotCi12b2lkIFBvaW50
TGlnaHRTb3VyY2U6OnVwZGF0ZVBhaW50aW5nRGF0YShQYWludGluZ0RhdGEmIHBhaW50aW5nRGF0
YSwgaW50IHgsIGludCB5LCBmbG9hdCB6KQotewotICAgIHBhaW50aW5nRGF0YS5saWdodFZlY3Rv
ci5zZXRYKG1fcG9zaXRpb24ueCgpIC0geCk7Ci0gICAgcGFpbnRpbmdEYXRhLmxpZ2h0VmVjdG9y
LnNldFkobV9wb3NpdGlvbi55KCkgLSB5KTsKLSAgICBwYWludGluZ0RhdGEubGlnaHRWZWN0b3Iu
c2V0WihtX3Bvc2l0aW9uLnooKSAtIHopOwotICAgIHBhaW50aW5nRGF0YS5saWdodFZlY3Rvckxl
bmd0aCA9IHBhaW50aW5nRGF0YS5saWdodFZlY3Rvci5sZW5ndGgoKTsKLX0KLQotYm9vbCBQb2lu
dExpZ2h0U291cmNlOjpzZXRYKGZsb2F0IHgpCi17Ci0gICAgaWYgKG1fcG9zaXRpb24ueCgpID09
IHgpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBtX3Bvc2l0aW9uLnNldFgoeCk7Ci0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgUG9pbnRMaWdodFNvdXJjZTo6c2V0WShmbG9hdCB5KQot
ewotICAgIGlmIChtX3Bvc2l0aW9uLnkoKSA9PSB5KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgbV9wb3NpdGlvbi5zZXRZKHkpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIFBvaW50
TGlnaHRTb3VyY2U6OnNldFooZmxvYXQgeikKLXsKLSAgICBpZiAobV9wb3NpdGlvbi56KCkgPT0g
eikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIG1fcG9zaXRpb24uc2V0Wih6KTsKLSAgICBy
ZXR1cm4gdHJ1ZTsKLX0KLQotLy8gc3BvdC1saWdodCBlZGdlIGRhcmtlbmluZyBkZXBlbmRzIG9u
IGFuIGFic29sdXRlIHRyZXNob2xkCi0vLyBhY2NvcmRpbmcgdG8gdGhlIFNWRyAxLjEgU0UgbGln
aHQgcmVncmVzc2lvbiB0ZXN0cwotc3RhdGljIGNvbnN0IGZsb2F0IGFudGlBbGlhc1RyZXNob2xk
ID0gMC4wMTZmOwotCi12b2lkIFNwb3RMaWdodFNvdXJjZTo6aW5pdFBhaW50aW5nRGF0YShQYWlu
dGluZ0RhdGEmIHBhaW50aW5nRGF0YSkKLXsKLSAgICBwYWludGluZ0RhdGEucHJpdmF0ZUNvbG9y
VmVjdG9yID0gcGFpbnRpbmdEYXRhLmNvbG9yVmVjdG9yOwotICAgIHBhaW50aW5nRGF0YS5kaXJl
Y3Rpb25WZWN0b3Iuc2V0WChtX2RpcmVjdGlvbi54KCkgLSBtX3Bvc2l0aW9uLngoKSk7Ci0gICAg
cGFpbnRpbmdEYXRhLmRpcmVjdGlvblZlY3Rvci5zZXRZKG1fZGlyZWN0aW9uLnkoKSAtIG1fcG9z
aXRpb24ueSgpKTsKLSAgICBwYWludGluZ0RhdGEuZGlyZWN0aW9uVmVjdG9yLnNldFoobV9kaXJl
Y3Rpb24ueigpIC0gbV9wb3NpdGlvbi56KCkpOwotICAgIHBhaW50aW5nRGF0YS5kaXJlY3Rpb25W
ZWN0b3Iubm9ybWFsaXplKCk7Ci0KLSAgICBpZiAoIW1fbGltaXRpbmdDb25lQW5nbGUpIHsKLSAg
ICAgICAgcGFpbnRpbmdEYXRhLmNvbmVDdXRPZmZMaW1pdCA9IDAuMGY7Ci0gICAgICAgIHBhaW50
aW5nRGF0YS5jb25lRnVsbExpZ2h0ID0gLWFudGlBbGlhc1RyZXNob2xkOwotICAgIH0gZWxzZSB7
Ci0gICAgICAgIGZsb2F0IGxpbWl0aW5nQ29uZUFuZ2xlID0gbV9saW1pdGluZ0NvbmVBbmdsZTsK
LSAgICAgICAgaWYgKGxpbWl0aW5nQ29uZUFuZ2xlIDwgMC4wZikKLSAgICAgICAgICAgIGxpbWl0
aW5nQ29uZUFuZ2xlID0gLWxpbWl0aW5nQ29uZUFuZ2xlOwotICAgICAgICBpZiAobGltaXRpbmdD
b25lQW5nbGUgPiA5MC4wZikKLSAgICAgICAgICAgIGxpbWl0aW5nQ29uZUFuZ2xlID0gOTAuMGY7
Ci0gICAgICAgIHBhaW50aW5nRGF0YS5jb25lQ3V0T2ZmTGltaXQgPSBjb3NmKGRlZzJyYWQoMTgw
LjBmIC0gbGltaXRpbmdDb25lQW5nbGUpKTsKLSAgICAgICAgcGFpbnRpbmdEYXRhLmNvbmVGdWxs
TGlnaHQgPSBwYWludGluZ0RhdGEuY29uZUN1dE9mZkxpbWl0IC0gYW50aUFsaWFzVHJlc2hvbGQ7
Ci0gICAgfQotCi0gICAgLy8gT3B0aW1pemF0aW9uIGZvciBjb21tb24gc3BlY3VsYXJFeHBvbmVu
dCB2YWx1ZXMKLSAgICBpZiAoIW1fc3BlY3VsYXJFeHBvbmVudCkKLSAgICAgICAgcGFpbnRpbmdE
YXRhLnNwZWN1bGFyRXhwb25lbnQgPSAwOwotICAgIGVsc2UgaWYgKG1fc3BlY3VsYXJFeHBvbmVu
dCA9PSAxLjBmKQotICAgICAgICBwYWludGluZ0RhdGEuc3BlY3VsYXJFeHBvbmVudCA9IDE7Ci0g
ICAgZWxzZSAvLyBJdCBpcyBuZWl0aGVyIDAuMGYgbm9yIDEuMGYKLSAgICAgICAgcGFpbnRpbmdE
YXRhLnNwZWN1bGFyRXhwb25lbnQgPSAyOwotfQotCi12b2lkIFNwb3RMaWdodFNvdXJjZTo6dXBk
YXRlUGFpbnRpbmdEYXRhKFBhaW50aW5nRGF0YSYgcGFpbnRpbmdEYXRhLCBpbnQgeCwgaW50IHks
IGZsb2F0IHopCi17Ci0gICAgcGFpbnRpbmdEYXRhLmxpZ2h0VmVjdG9yLnNldFgobV9wb3NpdGlv
bi54KCkgLSB4KTsKLSAgICBwYWludGluZ0RhdGEubGlnaHRWZWN0b3Iuc2V0WShtX3Bvc2l0aW9u
LnkoKSAtIHkpOwotICAgIHBhaW50aW5nRGF0YS5saWdodFZlY3Rvci5zZXRaKG1fcG9zaXRpb24u
eigpIC0geik7Ci0gICAgcGFpbnRpbmdEYXRhLmxpZ2h0VmVjdG9yTGVuZ3RoID0gcGFpbnRpbmdE
YXRhLmxpZ2h0VmVjdG9yLmxlbmd0aCgpOwotCi0gICAgZmxvYXQgY29zaW5lT2ZBbmdsZSA9IChw
YWludGluZ0RhdGEubGlnaHRWZWN0b3IgKiBwYWludGluZ0RhdGEuZGlyZWN0aW9uVmVjdG9yKSAv
IHBhaW50aW5nRGF0YS5saWdodFZlY3Rvckxlbmd0aDsKLSAgICBpZiAoY29zaW5lT2ZBbmdsZSA+
IHBhaW50aW5nRGF0YS5jb25lQ3V0T2ZmTGltaXQpIHsKLSAgICAgICAgLy8gTm8gbGlnaHQgaXMg
cHJvZHVjZWQsIHNjYW5saW5lcyBhcmUgbm90IHVwZGF0ZWQKLSAgICAgICAgcGFpbnRpbmdEYXRh
LmNvbG9yVmVjdG9yLnNldFgoMC4wZik7Ci0gICAgICAgIHBhaW50aW5nRGF0YS5jb2xvclZlY3Rv
ci5zZXRZKDAuMGYpOwotICAgICAgICBwYWludGluZ0RhdGEuY29sb3JWZWN0b3Iuc2V0WigwLjBm
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIFNldCB0aGUgY29sb3Igb2YgdGhl
IHBpeGVsCi0gICAgZmxvYXQgbGlnaHRTdHJlbmd0aDsKLSAgICBzd2l0Y2ggKHBhaW50aW5nRGF0
YS5zcGVjdWxhckV4cG9uZW50KSB7Ci0gICAgY2FzZSAwOgotICAgICAgICBsaWdodFN0cmVuZ3Ro
ID0gMS4wZjsgLy8gLWNvc2luZU9mQW5nbGUgXiAwID09IDEKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSAxOgotICAgICAgICBsaWdodFN0cmVuZ3RoID0gLWNvc2luZU9mQW5nbGU7IC8vIC1jb3Np
bmVPZkFuZ2xlIF4gMSA9PSAtY29zaW5lT2ZBbmdsZQotICAgICAgICBicmVhazsKLSAgICBkZWZh
dWx0OgotICAgICAgICBsaWdodFN0cmVuZ3RoID0gcG93ZigtY29zaW5lT2ZBbmdsZSwgbV9zcGVj
dWxhckV4cG9uZW50KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgaWYgKGNvc2luZU9m
QW5nbGUgPiBwYWludGluZ0RhdGEuY29uZUZ1bGxMaWdodCkKLSAgICAgICAgbGlnaHRTdHJlbmd0
aCAqPSAocGFpbnRpbmdEYXRhLmNvbmVDdXRPZmZMaW1pdCAtIGNvc2luZU9mQW5nbGUpIC8gKHBh
aW50aW5nRGF0YS5jb25lQ3V0T2ZmTGltaXQgLSBwYWludGluZ0RhdGEuY29uZUZ1bGxMaWdodCk7
Ci0KLSAgICBpZiAobGlnaHRTdHJlbmd0aCA+IDEuMGYpCi0gICAgICAgIGxpZ2h0U3RyZW5ndGgg
PSAxLjBmOwotCi0gICAgcGFpbnRpbmdEYXRhLmNvbG9yVmVjdG9yLnNldFgocGFpbnRpbmdEYXRh
LnByaXZhdGVDb2xvclZlY3Rvci54KCkgKiBsaWdodFN0cmVuZ3RoKTsKLSAgICBwYWludGluZ0Rh
dGEuY29sb3JWZWN0b3Iuc2V0WShwYWludGluZ0RhdGEucHJpdmF0ZUNvbG9yVmVjdG9yLnkoKSAq
IGxpZ2h0U3RyZW5ndGgpOwotICAgIHBhaW50aW5nRGF0YS5jb2xvclZlY3Rvci5zZXRaKHBhaW50
aW5nRGF0YS5wcml2YXRlQ29sb3JWZWN0b3IueigpICogbGlnaHRTdHJlbmd0aCk7Ci19Ci0KLWJv
b2wgU3BvdExpZ2h0U291cmNlOjpzZXRYKGZsb2F0IHgpCi17Ci0gICAgaWYgKG1fcG9zaXRpb24u
eCgpID09IHgpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBtX3Bvc2l0aW9uLnNldFgoeCk7
Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgU3BvdExpZ2h0U291cmNlOjpzZXRZKGZsb2F0
IHkpCi17Ci0gICAgaWYgKG1fcG9zaXRpb24ueSgpID09IHkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICBtX3Bvc2l0aW9uLnNldFkoeSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wg
U3BvdExpZ2h0U291cmNlOjpzZXRaKGZsb2F0IHopCi17Ci0gICAgaWYgKG1fcG9zaXRpb24ueigp
ID09IHopCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBtX3Bvc2l0aW9uLnNldFooeik7Ci0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgU3BvdExpZ2h0U291cmNlOjpzZXRQb2ludHNBdFgo
ZmxvYXQgcG9pbnRzQXRYKQotewotICAgIGlmIChtX2RpcmVjdGlvbi54KCkgPT0gcG9pbnRzQXRY
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgbV9kaXJlY3Rpb24uc2V0WChwb2ludHNBdFgp
OwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIFNwb3RMaWdodFNvdXJjZTo6c2V0UG9pbnRz
QXRZKGZsb2F0IHBvaW50c0F0WSkKLXsKLSAgICBpZiAobV9kaXJlY3Rpb24ueSgpID09IHBvaW50
c0F0WSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIG1fZGlyZWN0aW9uLnNldFkocG9pbnRz
QXRZKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBTcG90TGlnaHRTb3VyY2U6OnNldFBv
aW50c0F0WihmbG9hdCBwb2ludHNBdFopCi17Ci0gICAgaWYgKG1fZGlyZWN0aW9uLnooKSA9PSBw
b2ludHNBdFopCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBtX2RpcmVjdGlvbi5zZXRaKHBv
aW50c0F0Wik7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgU3BvdExpZ2h0U291cmNlOjpz
ZXRTcGVjdWxhckV4cG9uZW50KGZsb2F0IHNwZWN1bGFyRXhwb25lbnQpCi17Ci0gICAgaWYgKG1f
c3BlY3VsYXJFeHBvbmVudCA9PSBzcGVjdWxhckV4cG9uZW50KQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgbV9zcGVjdWxhckV4cG9uZW50ID0gc3BlY3VsYXJFeHBvbmVudDsKLSAgICByZXR1
cm4gdHJ1ZTsKLX0KLQotYm9vbCBTcG90TGlnaHRTb3VyY2U6OnNldExpbWl0aW5nQ29uZUFuZ2xl
KGZsb2F0IGxpbWl0aW5nQ29uZUFuZ2xlKQotewotICAgIGlmIChtX2xpbWl0aW5nQ29uZUFuZ2xl
ID09IGxpbWl0aW5nQ29uZUFuZ2xlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgbV9saW1p
dGluZ0NvbmVBbmdsZSA9IGxpbWl0aW5nQ29uZUFuZ2xlOwotICAgIHJldHVybiB0cnVlOwotfQot
Ci12b2lkIERpc3RhbnRMaWdodFNvdXJjZTo6aW5pdFBhaW50aW5nRGF0YShQYWludGluZ0RhdGEm
IHBhaW50aW5nRGF0YSkKLXsKLSAgICBmbG9hdCBhemltdXRoID0gZGVnMnJhZChtX2F6aW11dGgp
OwotICAgIGZsb2F0IGVsZXZhdGlvbiA9IGRlZzJyYWQobV9lbGV2YXRpb24pOwotICAgIHBhaW50
aW5nRGF0YS5saWdodFZlY3Rvci5zZXRYKGNvc2YoYXppbXV0aCkgKiBjb3NmKGVsZXZhdGlvbikp
OwotICAgIHBhaW50aW5nRGF0YS5saWdodFZlY3Rvci5zZXRZKHNpbmYoYXppbXV0aCkgKiBjb3Nm
KGVsZXZhdGlvbikpOwotICAgIHBhaW50aW5nRGF0YS5saWdodFZlY3Rvci5zZXRaKHNpbmYoZWxl
dmF0aW9uKSk7Ci0gICAgcGFpbnRpbmdEYXRhLmxpZ2h0VmVjdG9yTGVuZ3RoID0gMTsKLX0KLQot
dm9pZCBEaXN0YW50TGlnaHRTb3VyY2U6OnVwZGF0ZVBhaW50aW5nRGF0YShQYWludGluZ0RhdGEm
LCBpbnQsIGludCwgZmxvYXQpCi17Ci19Ci0KLWJvb2wgRGlzdGFudExpZ2h0U291cmNlOjpzZXRB
emltdXRoKGZsb2F0IGF6aW11dGgpCi17Ci0gICAgaWYgKG1fYXppbXV0aCA9PSBhemltdXRoKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgbV9hemltdXRoID0gYXppbXV0aDsKLSAgICByZXR1
cm4gdHJ1ZTsKLX0KLQotYm9vbCBEaXN0YW50TGlnaHRTb3VyY2U6OnNldEVsZXZhdGlvbihmbG9h
dCBlbGV2YXRpb24pCi17Ci0gICAgaWYgKG1fZWxldmF0aW9uID09IGVsZXZhdGlvbikKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIG1fZWxldmF0aW9uID0gZWxldmF0aW9uOwotICAgIHJldHVy
biB0cnVlOwotfQotCiBib29sIExpZ2h0U291cmNlOjpzZXRBemltdXRoKGZsb2F0IGF6aW11dGgp
CiB7CiAgICAgaWYgKG1fdHlwZSA9PSBMU19ESVNUQU5UKQpAQCAtMzE0LDM3ICsxMTAsNiBAQCBi
b29sIExpZ2h0U291cmNlOjpzZXRMaW1pdGluZ0NvbmVBbmdsZShmCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi1zdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29u
c3QgRmxvYXRQb2ludDNEJiBwKQotewotICAgIHRzIDw8ICJ4PSIgPDwgcC54KCkgPDwgIiB5PSIg
PDwgcC55KCkgPDwgIiB6PSIgPDwgcC56KCk7Ci0gICAgcmV0dXJuIHRzOwotfQotCi1UZXh0U3Ry
ZWFtJiBQb2ludExpZ2h0U291cmNlOjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0m
IHRzKSBjb25zdAotewotICAgIHRzIDw8ICJbdHlwZT1QT0lOVC1MSUdIVF0gIjsKLSAgICB0cyA8
PCAiW3Bvc2l0aW9uPVwiIiA8PCBwb3NpdGlvbigpIDw8ICJcIl0iOwotICAgIHJldHVybiB0czsK
LX0KLQotVGV4dFN0cmVhbSYgU3BvdExpZ2h0U291cmNlOjpleHRlcm5hbFJlcHJlc2VudGF0aW9u
KFRleHRTdHJlYW0mIHRzKSBjb25zdAotewotICAgIHRzIDw8ICJbdHlwZT1TUE9ULUxJR0hUXSAi
OwotICAgIHRzIDw8ICJbcG9zaXRpb249XCIiIDw8IHBvc2l0aW9uKCkgPDwgIlwiXSI7Ci0gICAg
dHMgPDwgIltkaXJlY3Rpb249XCIiIDw8IGRpcmVjdGlvbigpIDw8ICJcIl0iOwotICAgIHRzIDw8
ICJbc3BlY3VsYXJFeHBvbmVudD1cIiIgPDwgc3BlY3VsYXJFeHBvbmVudCgpIDw8ICJcIl0iOwot
ICAgIHRzIDw8ICJbbGltaXRpbmdDb25lQW5nbGU9XCIiIDw8IGxpbWl0aW5nQ29uZUFuZ2xlKCkg
PDwgIlwiXSI7Ci0gICAgcmV0dXJuIHRzOwotfQotCi1UZXh0U3RyZWFtJiBEaXN0YW50TGlnaHRT
b3VyY2U6OmV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0Ci17Ci0g
ICAgdHMgPDwgIlt0eXBlPURJU1RBTlQtTElHSFRdICI7Ci0gICAgdHMgPDwgIlthemltdXRoPVwi
IiA8PCBhemltdXRoKCkgPDwgIlwiXSI7Ci0gICAgdHMgPDwgIltlbGV2YXRpb249XCIiIDw8IGVs
ZXZhdGlvbigpIDw8ICJcIl0iOwotICAgIHJldHVybiB0czsKLX0KLQogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKEZJTFRFUlMpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1BvaW50TGlnaHRTb3VyY2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvUG9pbnRMaWdo
dFNvdXJjZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL1BvaW50TGlnaHRTb3VyY2UuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IE5pa29s
YXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDUgRXJp
YyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBab2x0YW4g
SGVyY3plZyA8emhlcmN6ZWdAd2Via2l0Lm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBVbml2
ZXJzaXR5IG9mIFN6ZWdlZAorICogQ29weXJpZ2h0IChDKSAyMDExIFJlbmF0YSBIb2RvdmFuIDxy
ZW5pQHdlYmtpdC5vcmc+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBVTklWRVJTSVRZIE9GIFNaRUdFRCBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIFVOSVZFUlNJVFkgT0YgU1pFR0VEIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJM
RShGSUxURVJTKQorI2luY2x1ZGUgIlBvaW50TGlnaHRTb3VyY2UuaCIKKworI2luY2x1ZGUgIlRl
eHRTdHJlYW0uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIFBvaW50TGlnaHRTb3Vy
Y2U6OmluaXRQYWludGluZ0RhdGEoUGFpbnRpbmdEYXRhJikKK3sKK30KKwordm9pZCBQb2ludExp
Z2h0U291cmNlOjp1cGRhdGVQYWludGluZ0RhdGEoUGFpbnRpbmdEYXRhJiBwYWludGluZ0RhdGEs
IGludCB4LCBpbnQgeSwgZmxvYXQgeikKK3sKKyAgICBwYWludGluZ0RhdGEubGlnaHRWZWN0b3Iu
c2V0WChtX3Bvc2l0aW9uLngoKSAtIHgpOworICAgIHBhaW50aW5nRGF0YS5saWdodFZlY3Rvci5z
ZXRZKG1fcG9zaXRpb24ueSgpIC0geSk7CisgICAgcGFpbnRpbmdEYXRhLmxpZ2h0VmVjdG9yLnNl
dFoobV9wb3NpdGlvbi56KCkgLSB6KTsKKyAgICBwYWludGluZ0RhdGEubGlnaHRWZWN0b3JMZW5n
dGggPSBwYWludGluZ0RhdGEubGlnaHRWZWN0b3IubGVuZ3RoKCk7Cit9CisKK2Jvb2wgUG9pbnRM
aWdodFNvdXJjZTo6c2V0WChmbG9hdCB4KQoreworICAgIGlmIChtX3Bvc2l0aW9uLngoKSA9PSB4
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgbV9wb3NpdGlvbi5zZXRYKHgpOworICAgIHJl
dHVybiB0cnVlOworfQorCitib29sIFBvaW50TGlnaHRTb3VyY2U6OnNldFkoZmxvYXQgeSkKK3sK
KyAgICBpZiAobV9wb3NpdGlvbi55KCkgPT0geSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IG1fcG9zaXRpb24uc2V0WSh5KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBQb2ludExp
Z2h0U291cmNlOjpzZXRaKGZsb2F0IHopCit7CisgICAgaWYgKG1fcG9zaXRpb24ueigpID09IHop
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBtX3Bvc2l0aW9uLnNldFooeik7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK3N0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
IHRzLCBjb25zdCBGbG9hdFBvaW50M0QmIHApCit7CisgICAgdHMgPDwgIng9IiA8PCBwLngoKSA8
PCAiIHk9IiA8PCBwLnkoKSA8PCAiIHo9IiA8PCBwLnooKTsKKyAgICByZXR1cm4gdHM7Cit9CisK
K1RleHRTdHJlYW0mIFBvaW50TGlnaHRTb3VyY2U6OmV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4
dFN0cmVhbSYgdHMpIGNvbnN0Cit7CisgICAgdHMgPDwgIlt0eXBlPVBPSU5ULUxJR0hUXSAiOwor
ICAgIHRzIDw8ICJbcG9zaXRpb249XCIiIDw8IHBvc2l0aW9uKCkgPDwgIlwiXSI7CisgICAgcmV0
dXJuIHRzOworfQorCit9OyAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KEZJTFRFUlMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L1Nwb3RMaWdodFNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9TcG90TGlnaHRTb3VyY2UuY3BwCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9TcG90TGlnaHRTb3VyY2Uu
Y3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwOCBBbGV4IE1hdGhld3MgPHBvc3Nlc3NlZHBlbmd1aW5ib2JAZ21haWwuY29tPgorICogQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IE5pa29sYXMgWmltbWVybWFubiA8emlt
bWVybWFubkBrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IFJvYiBCdWlzIDxi
dWlzQGtkZS5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDUgRXJpYyBTZWlkZWwgPGVyaWNAd2Vi
a2l0Lm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBab2x0YW4gSGVyY3plZyA8emhlcmN6ZWdA
d2Via2l0Lm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBVbml2ZXJzaXR5IG9mIFN6ZWdlZAor
ICogQ29weXJpZ2h0IChDKSAyMDExIFJlbmF0YSBIb2RvdmFuIDxyZW5pQHdlYmtpdC5vcmc+Cisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBVTklWRVJTSVRZIE9G
IFNaRUdFRCBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFVOSVZFUlNJVFkgT0Yg
U1pFR0VEIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShGSUxURVJTKQorI2luY2x1
ZGUgIlNwb3RMaWdodFNvdXJjZS5oIgorCisjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKKy8vIHNwb3QtbGlnaHQgZWRnZSBkYXJrZW5pbmcgZGVwZW5kcyBv
biBhbiBhYnNvbHV0ZSB0cmVzaG9sZAorLy8gYWNjb3JkaW5nIHRvIHRoZSBTVkcgMS4xIFNFIGxp
Z2h0IHJlZ3Jlc3Npb24gdGVzdHMKK3N0YXRpYyBjb25zdCBmbG9hdCBhbnRpQWxpYXNUcmVzaG9s
ZCA9IDAuMDE2ZjsKKwordm9pZCBTcG90TGlnaHRTb3VyY2U6OmluaXRQYWludGluZ0RhdGEoUGFp
bnRpbmdEYXRhJiBwYWludGluZ0RhdGEpCit7CisgICAgcGFpbnRpbmdEYXRhLnByaXZhdGVDb2xv
clZlY3RvciA9IHBhaW50aW5nRGF0YS5jb2xvclZlY3RvcjsKKyAgICBwYWludGluZ0RhdGEuZGly
ZWN0aW9uVmVjdG9yLnNldFgobV9kaXJlY3Rpb24ueCgpIC0gbV9wb3NpdGlvbi54KCkpOworICAg
IHBhaW50aW5nRGF0YS5kaXJlY3Rpb25WZWN0b3Iuc2V0WShtX2RpcmVjdGlvbi55KCkgLSBtX3Bv
c2l0aW9uLnkoKSk7CisgICAgcGFpbnRpbmdEYXRhLmRpcmVjdGlvblZlY3Rvci5zZXRaKG1fZGly
ZWN0aW9uLnooKSAtIG1fcG9zaXRpb24ueigpKTsKKyAgICBwYWludGluZ0RhdGEuZGlyZWN0aW9u
VmVjdG9yLm5vcm1hbGl6ZSgpOworCisgICAgaWYgKCFtX2xpbWl0aW5nQ29uZUFuZ2xlKSB7Cisg
ICAgICAgIHBhaW50aW5nRGF0YS5jb25lQ3V0T2ZmTGltaXQgPSAwLjBmOworICAgICAgICBwYWlu
dGluZ0RhdGEuY29uZUZ1bGxMaWdodCA9IC1hbnRpQWxpYXNUcmVzaG9sZDsKKyAgICB9IGVsc2Ug
eworICAgICAgICBmbG9hdCBsaW1pdGluZ0NvbmVBbmdsZSA9IG1fbGltaXRpbmdDb25lQW5nbGU7
CisgICAgICAgIGlmIChsaW1pdGluZ0NvbmVBbmdsZSA8IDAuMGYpCisgICAgICAgICAgICBsaW1p
dGluZ0NvbmVBbmdsZSA9IC1saW1pdGluZ0NvbmVBbmdsZTsKKyAgICAgICAgaWYgKGxpbWl0aW5n
Q29uZUFuZ2xlID4gOTAuMGYpCisgICAgICAgICAgICBsaW1pdGluZ0NvbmVBbmdsZSA9IDkwLjBm
OworICAgICAgICBwYWludGluZ0RhdGEuY29uZUN1dE9mZkxpbWl0ID0gY29zZihkZWcycmFkKDE4
MC4wZiAtIGxpbWl0aW5nQ29uZUFuZ2xlKSk7CisgICAgICAgIHBhaW50aW5nRGF0YS5jb25lRnVs
bExpZ2h0ID0gcGFpbnRpbmdEYXRhLmNvbmVDdXRPZmZMaW1pdCAtIGFudGlBbGlhc1RyZXNob2xk
OworICAgIH0KKworICAgIC8vIE9wdGltaXphdGlvbiBmb3IgY29tbW9uIHNwZWN1bGFyRXhwb25l
bnQgdmFsdWVzCisgICAgaWYgKCFtX3NwZWN1bGFyRXhwb25lbnQpCisgICAgICAgIHBhaW50aW5n
RGF0YS5zcGVjdWxhckV4cG9uZW50ID0gMDsKKyAgICBlbHNlIGlmIChtX3NwZWN1bGFyRXhwb25l
bnQgPT0gMS4wZikKKyAgICAgICAgcGFpbnRpbmdEYXRhLnNwZWN1bGFyRXhwb25lbnQgPSAxOwor
ICAgIGVsc2UgLy8gSXQgaXMgbmVpdGhlciAwLjBmIG5vciAxLjBmCisgICAgICAgIHBhaW50aW5n
RGF0YS5zcGVjdWxhckV4cG9uZW50ID0gMjsKK30KKwordm9pZCBTcG90TGlnaHRTb3VyY2U6OnVw
ZGF0ZVBhaW50aW5nRGF0YShQYWludGluZ0RhdGEmIHBhaW50aW5nRGF0YSwgaW50IHgsIGludCB5
LCBmbG9hdCB6KQoreworICAgIHBhaW50aW5nRGF0YS5saWdodFZlY3Rvci5zZXRYKG1fcG9zaXRp
b24ueCgpIC0geCk7CisgICAgcGFpbnRpbmdEYXRhLmxpZ2h0VmVjdG9yLnNldFkobV9wb3NpdGlv
bi55KCkgLSB5KTsKKyAgICBwYWludGluZ0RhdGEubGlnaHRWZWN0b3Iuc2V0WihtX3Bvc2l0aW9u
LnooKSAtIHopOworICAgIHBhaW50aW5nRGF0YS5saWdodFZlY3Rvckxlbmd0aCA9IHBhaW50aW5n
RGF0YS5saWdodFZlY3Rvci5sZW5ndGgoKTsKKworICAgIGZsb2F0IGNvc2luZU9mQW5nbGUgPSAo
cGFpbnRpbmdEYXRhLmxpZ2h0VmVjdG9yICogcGFpbnRpbmdEYXRhLmRpcmVjdGlvblZlY3Rvcikg
LyBwYWludGluZ0RhdGEubGlnaHRWZWN0b3JMZW5ndGg7CisgICAgaWYgKGNvc2luZU9mQW5nbGUg
PiBwYWludGluZ0RhdGEuY29uZUN1dE9mZkxpbWl0KSB7CisgICAgICAgIC8vIE5vIGxpZ2h0IGlz
IHByb2R1Y2VkLCBzY2FubGluZXMgYXJlIG5vdCB1cGRhdGVkCisgICAgICAgIHBhaW50aW5nRGF0
YS5jb2xvclZlY3Rvci5zZXRYKDAuMGYpOworICAgICAgICBwYWludGluZ0RhdGEuY29sb3JWZWN0
b3Iuc2V0WSgwLjBmKTsKKyAgICAgICAgcGFpbnRpbmdEYXRhLmNvbG9yVmVjdG9yLnNldFooMC4w
Zik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBTZXQgdGhlIGNvbG9yIG9mIHRo
ZSBwaXhlbAorICAgIGZsb2F0IGxpZ2h0U3RyZW5ndGg7CisgICAgc3dpdGNoIChwYWludGluZ0Rh
dGEuc3BlY3VsYXJFeHBvbmVudCkgeworICAgIGNhc2UgMDoKKyAgICAgICAgbGlnaHRTdHJlbmd0
aCA9IDEuMGY7IC8vIC1jb3NpbmVPZkFuZ2xlIF4gMCA9PSAxCisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgMToKKyAgICAgICAgbGlnaHRTdHJlbmd0aCA9IC1jb3NpbmVPZkFuZ2xlOyAvLyAtY29z
aW5lT2ZBbmdsZSBeIDEgPT0gLWNvc2luZU9mQW5nbGUKKyAgICAgICAgYnJlYWs7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgbGlnaHRTdHJlbmd0aCA9IHBvd2YoLWNvc2luZU9mQW5nbGUsIG1fc3Bl
Y3VsYXJFeHBvbmVudCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGlmIChjb3NpbmVP
ZkFuZ2xlID4gcGFpbnRpbmdEYXRhLmNvbmVGdWxsTGlnaHQpCisgICAgICAgIGxpZ2h0U3RyZW5n
dGggKj0gKHBhaW50aW5nRGF0YS5jb25lQ3V0T2ZmTGltaXQgLSBjb3NpbmVPZkFuZ2xlKSAvIChw
YWludGluZ0RhdGEuY29uZUN1dE9mZkxpbWl0IC0gcGFpbnRpbmdEYXRhLmNvbmVGdWxsTGlnaHQp
OworCisgICAgaWYgKGxpZ2h0U3RyZW5ndGggPiAxLjBmKQorICAgICAgICBsaWdodFN0cmVuZ3Ro
ID0gMS4wZjsKKworICAgIHBhaW50aW5nRGF0YS5jb2xvclZlY3Rvci5zZXRYKHBhaW50aW5nRGF0
YS5wcml2YXRlQ29sb3JWZWN0b3IueCgpICogbGlnaHRTdHJlbmd0aCk7CisgICAgcGFpbnRpbmdE
YXRhLmNvbG9yVmVjdG9yLnNldFkocGFpbnRpbmdEYXRhLnByaXZhdGVDb2xvclZlY3Rvci55KCkg
KiBsaWdodFN0cmVuZ3RoKTsKKyAgICBwYWludGluZ0RhdGEuY29sb3JWZWN0b3Iuc2V0WihwYWlu
dGluZ0RhdGEucHJpdmF0ZUNvbG9yVmVjdG9yLnooKSAqIGxpZ2h0U3RyZW5ndGgpOworfQorCiti
b29sIFNwb3RMaWdodFNvdXJjZTo6c2V0WChmbG9hdCB4KQoreworICAgIGlmIChtX3Bvc2l0aW9u
LngoKSA9PSB4KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgbV9wb3NpdGlvbi5zZXRYKHgp
OworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFNwb3RMaWdodFNvdXJjZTo6c2V0WShmbG9h
dCB5KQoreworICAgIGlmIChtX3Bvc2l0aW9uLnkoKSA9PSB5KQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgbV9wb3NpdGlvbi5zZXRZKHkpOworICAgIHJldHVybiB0cnVlOworfQorCitib29s
IFNwb3RMaWdodFNvdXJjZTo6c2V0WihmbG9hdCB6KQoreworICAgIGlmIChtX3Bvc2l0aW9uLnoo
KSA9PSB6KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgbV9wb3NpdGlvbi5zZXRaKHopOwor
ICAgIHJldHVybiB0cnVlOworfQorCitib29sIFNwb3RMaWdodFNvdXJjZTo6c2V0UG9pbnRzQXRY
KGZsb2F0IHBvaW50c0F0WCkKK3sKKyAgICBpZiAobV9kaXJlY3Rpb24ueCgpID09IHBvaW50c0F0
WCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIG1fZGlyZWN0aW9uLnNldFgocG9pbnRzQXRY
KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBTcG90TGlnaHRTb3VyY2U6OnNldFBvaW50
c0F0WShmbG9hdCBwb2ludHNBdFkpCit7CisgICAgaWYgKG1fZGlyZWN0aW9uLnkoKSA9PSBwb2lu
dHNBdFkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBtX2RpcmVjdGlvbi5zZXRZKHBvaW50
c0F0WSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgU3BvdExpZ2h0U291cmNlOjpzZXRQ
b2ludHNBdFooZmxvYXQgcG9pbnRzQXRaKQoreworICAgIGlmIChtX2RpcmVjdGlvbi56KCkgPT0g
cG9pbnRzQXRaKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgbV9kaXJlY3Rpb24uc2V0Wihw
b2ludHNBdFopOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFNwb3RMaWdodFNvdXJjZTo6
c2V0U3BlY3VsYXJFeHBvbmVudChmbG9hdCBzcGVjdWxhckV4cG9uZW50KQoreworICAgIGlmICht
X3NwZWN1bGFyRXhwb25lbnQgPT0gc3BlY3VsYXJFeHBvbmVudCkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIG1fc3BlY3VsYXJFeHBvbmVudCA9IHNwZWN1bGFyRXhwb25lbnQ7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK2Jvb2wgU3BvdExpZ2h0U291cmNlOjpzZXRMaW1pdGluZ0NvbmVBbmds
ZShmbG9hdCBsaW1pdGluZ0NvbmVBbmdsZSkKK3sKKyAgICBpZiAobV9saW1pdGluZ0NvbmVBbmds
ZSA9PSBsaW1pdGluZ0NvbmVBbmdsZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIG1fbGlt
aXRpbmdDb25lQW5nbGUgPSBsaW1pdGluZ0NvbmVBbmdsZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
Kworc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZs
b2F0UG9pbnQzRCYgcCkKK3sKKyAgICB0cyA8PCAieD0iIDw8IHAueCgpIDw8ICIgeT0iIDw8IHAu
eSgpIDw8ICIgej0iIDw8IHAueigpOworICAgIHJldHVybiB0czsKK30KKworVGV4dFN0cmVhbSYg
U3BvdExpZ2h0U291cmNlOjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBj
b25zdAoreworICAgIHRzIDw8ICJbdHlwZT1TUE9ULUxJR0hUXSAiOworICAgIHRzIDw8ICJbcG9z
aXRpb249XCIiIDw8IHBvc2l0aW9uKCkgPDwgIlwiXSI7CisgICAgdHMgPDwgIltkaXJlY3Rpb249
XCIiIDw8IGRpcmVjdGlvbigpIDw8ICJcIl0iOworICAgIHRzIDw8ICJbc3BlY3VsYXJFeHBvbmVu
dD1cIiIgPDwgc3BlY3VsYXJFeHBvbmVudCgpIDw8ICJcIl0iOworICAgIHRzIDw8ICJbbGltaXRp
bmdDb25lQW5nbGU9XCIiIDw8IGxpbWl0aW5nQ29uZUFuZ2xlKCkgPDwgIlwiXSI7CisgICAgcmV0
dXJuIHRzOworfQorCit9OyAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KEZJTFRFUlMpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>