<?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>11830</bug_id>
          
          <creation_ts>2006-12-14 12:04:42 -0800</creation_ts>
          <short_desc>JS SVG POD types do not work properly when being assigned</short_desc>
          <delta_ts>2006-12-14 12:55:40 -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>SVG</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</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>Critical</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikolas Zimmermann">zimmermann</reporter>
          <assigned_to name="Nikolas Zimmermann">zimmermann</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>42182</commentid>
    <comment_count>0</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2006-12-14 12:04:42 -0800</bug_when>
    <thetext>All SVG pod type wrappers have problems, with putValueProperty(). The property modification
actually works inside JSSVGPoint/JSSVGRect though only acting on a copy of the actual variable
stored in the JSSVGPoint/JSSVGRect object.

if you write ie. &quot;document.rootElement.width.baseVal.value = 100&quot; the value is only updated
in the wrappers (aka. document.rootElement.width.baseVal.value _is_ 100 afterwards) but
the SVGSVGElement doesn&apos;t notice this. If we&apos;d store pointers in the JS SVG wrappers it would
work, but that would require passing FloatPoint/FloatRect pointers around everywhere in ksvg2/.
No one wants this, so we need another solution specificially for the auto-generated wrappers.

Attaching patch for this soon (I&apos;ve worked two weeks to find a solution :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>42149</commentid>
    <comment_count>1</comment_count>
      <attachid>11841</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2006-12-14 12:13:11 -0800</bug_when>
    <thetext>Created attachment 11841
Initial patch

No new regressions, none fixed. Can&apos;t create a LayoutTest for this, as things only break, if you apply my SVGLength* -&gt; SVGLength patch and do NOT have this patch yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>42134</commentid>
    <comment_count>2</comment_count>
      <attachid>11841</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-12-14 12:22:04 -0800</bug_when>
    <thetext>Comment on attachment 11841
Initial patch

I think there&apos;s some const missing here. Since SVGMatrix is immutable, I think the AffineTransform inside an SVGMatrix should be const.

Regardless, r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>42108</commentid>
    <comment_count>3</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2006-12-14 12:39:36 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 11841 [edit])
&gt; I think there&apos;s some const missing here. Since SVGMatrix is immutable, I think
&gt; the AffineTransform inside an SVGMatrix should be const.
&gt; 
&gt; Regardless, r=me

Thanks a lot for the quick review!
You mean in JSSVGMatrixCustom.cpp, regarding the const?

Niko

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>42111</commentid>
    <comment_count>4</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2006-12-14 12:55:40 -0800</bug_when>
    <thetext>Landed in r18217. Also found &amp; fixed the const issue mentioned by Darin.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>11841</attachid>
            <date>2006-12-14 12:13:11 -0800</date>
            <delta_ts>2006-12-14 12:22:04 -0800</delta_ts>
            <desc>Initial patch</desc>
            <filename>FixSVGPODtypes.diff</filename>
            <type>text/plain</type>
            <size>31927</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxODIxNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTAgQEAKKzIwMDYtMTItMTQgIE5pa29sYXMgWmltbWVybWFubiAgPHppbW1lcm1h
bm5Aa2RlLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBGaXggZnVuZGFtZW50YWwgcHJvYmxlbXMgd2l0aCBKUyBTVkcgUE9EIHR5cGVzLgorICAg
ICAgICAoY3VycmVudGx5OiBGbG9hdFBvaW50L0Zsb2F0UmVjdC9BZmZpbmVUcmFuc2Zvcm0pCisK
KyAgICAgICAgVGhpcyBkb2Vzbid0IGFmZmVjdCBhbnkgdGVzdGNhc2UsIGJ1dCB3aGVuIEkgd3Jv
dGUgbXkgU1ZHTGVuZ3RoKiAtPiBTVkdMZW5ndGgKKyAgICAgICAgdGhlIHByb2JsZW0gZ290IHZp
c2libGUgKGFrYS4gYmFzZVZhbC1hbmltVmFsLWVxdWFsaXR5LnN2ZyBicm9rZSBhbmQgbW9yZSkK
KyAgICAgICAgV2l0aCB0aGF0IHBhdGNoIGFwcGxpZWQgZmlyc3QsIG5vbmUgYnJlYWtzIC0gc28g
U1ZHIFBPRCBKUyB3cmFwcGVycyBkbyB3b3JrIG5vdy4KKworICAgICAgICBJbiBkZXRhaWw6Cisg
ICAgICAgIC0gRml4IHNldEJhc2VWYWx1ZSgpIGNvbmZ1c2lvbi4gT05MWSB1c2UgdGhlIGhhc2gg
bWFwIGluIFNWR0RvY3VtZW50RXh0ZW5zaW9uCisgICAgICAgICAgd2hlbiB3ZSdyZSBhbmltYXRp
bmcgYSBwcm9wZXJ0eS4gQWRkICJzdGFydCMjUHJvcGVydHkiIC8gInN0b3AjI1Byb3BlcnR5IiBt
ZXRob2RzCisgICAgICAgICAgd2hpY2ggdGFrZSBjYXJlLCBvZiBtb3ZpbmcgImFuaW1WYWwiIC0+
ICJiYXNlVmFsIiBoYXNoLCBhbmQgYmFjayBhZnRlciBhbmltYXRpb24gc3RvcHBlZC4KKworICAg
ICAgICAgIFRoZXNlIG5ldyBtZXRob2RzIGFyZSBub3QgeWV0IHVzZWQgYW55d2hlcmUsIGJ1dCBm
aW5hbGx5IHRoZSAiYW5pbWF0ZWQgcHJvcGVydHkiIHN5c3RlbSBpcyBjb21wbGV0ZS4KKworICAg
ICAgICAtIE9mZmVyIGEgbmV3IEpTU1ZHUE9EVHlwZVdyYXBwZXIgY2xhc3MsIHdyYXBwaW5nIGFy
b3VuZCBub24tcG9pbnRlciBQT0QgdHlwZXMgbGlrZSBGbG9hdFBvaW50IGV0Yy4KKyAgICAgICAg
ICB0byBiZSB1c2VkIGluIHRoZSBnZW5lcmF0ZWQgSlMgYmluZGluZ3MuIEN1cnJlbnRseSBpZiB5
b3UgbW9kaWZpZWQgaWUgdGhlICJ4IiBwcm9wZXJ0eSBvZiBhIFNWR1BvaW50CisgICAgICAgICAg
ZnJvbSBKUywgeW91IG9ubHkgYWN0dWFsbHkgbW9kaWZpZWQgdGhlICJtX3giIG9iamVjdCBzdG9y
ZWQgaW4gdGhlIEpTU1ZHUG9pbnQgd3JhcHBlci4KKworICAgICAgICAgIElmIHlvdSB0YWtlIFNW
R0xlbmd0aCBhcyBleGFtcGxlIChtb3JlIGZyZXF1ZW50bHkgdXNlZCBpbiB0aGUgSlMgU1ZHIGJp
bmRpbmdzLCB0aGF0J3Mgd2h5IEknbSB1c2luZyBpdCkKKyAgICAgICAgICAiZG9jdW1lbnQucm9v
dEVsZW1lbnQud2lkdGguYmFzZVZhbC52YWx1ZSA9IDEwMDsiIG9ubHkgbW9kaWZpZWQgdGhlICJT
VkdMZW5ndGggbV9pbXBsIiBvYmplY3Qgc3RvcmVkIGluCisgICAgICAgICAgSlNTVkdMZW5ndGgs
IGJ1dCB0aGUgIlNWR1NWR0VsZW1lbnQiIGRpZG4ndCBub3RpY2UgaXQgd2lkdGggZ290IGNoYW5n
ZWQuIFRoZSBuZXcgY29tbWl0Q2hhbmdlcygpIGxvZ2ljCisgICAgICAgICAgZml4ZXMgdGhlc2Ug
cHJvYmxlbXMuCisKKyAgICAgICAgSXQncyBxdWl0ZSBoYXJkIHRvbyBkZXNjcmliZSB0aGUgYWN0
dWFsIGNoYW5nZXMsIGlmIG9uZSBpcyBub3QgZmFtaWxpYXIgd2l0aCB0aGUgY29kZS4gVGhpcyBp
cyB0aGUgcmVzdWx0CisgICAgICAgIG9mIGVuZGxlc3MgZGlzY3Vzc2lvbnMgd2l0aCBFcmljIFNl
aWRlbCwgYW5kIHdlIGhvcGUgdGhpcyBpcyBhIGRlY2VudCBzb2x1dGlvbiBhZHJlc3NpbmcgYWxs
IGlzc3Vlcy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1NWR01hdHJpeEN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU1NWR01hdHJpeDo6aW52ZXJzZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1NWR01h
dHJpeDo6cm90YXRlRnJvbVZlY3Rvcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNTVkdQT0RU
eXBlV3JhcHBlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTU1ZHUE9EVHlwZVdyYXBw
ZXI6OkpTU1ZHUE9EVHlwZVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNTVkdQT0RUeXBl
V3JhcHBlcjo6fkpTU1ZHUE9EVHlwZVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNTVkdQ
T0RUeXBlV3JhcHBlcjo6b3BlcmF0b3IgUE9EVHlwZSYpOgorICAgICAgICAoV2ViQ29yZTo6SlNT
VkdQT0RUeXBlV3JhcHBlcjo6Y29tbWl0Q2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTU1ZH
UE9EVHlwZVdyYXBwZXJDcmVhdG9yOjpKU1NWR1BPRFR5cGVXcmFwcGVyQ3JlYXRvcik6CisgICAg
ICAgIChXZWJDb3JlOjpKU1NWR1BPRFR5cGVXcmFwcGVyQ3JlYXRvcjo6fkpTU1ZHUE9EVHlwZVdy
YXBwZXJDcmVhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpTU1ZHUE9EVHlwZVdyYXBwZXJDcmVh
dG9yOjpjb21taXRDaGFuZ2UpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtOgorICAgICAgICAqIGtzdmcyL21pc2MvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmg6
CisgICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnJlbW92ZUJhc2VWYWx1
ZSk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0VsZW1lbnQuaDoKKwogMjAwNi0xMi0xNCAgQWxl
eGV5IFByb3NrdXJ5YWtvdiAgPGFwQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4uCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gMTgyMTYpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjIyNCw2ICsyMjI0LDcgQEAKIAkJQjIwMTExMDgwQUI3
NzQwNTAwREIwRTY4IC8qIEpTU1ZHQUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMDExMTA2MEFCNzc0MDUwMERCMEU2OCAvKiBKU1NWR0FF
bGVtZW50LmggKi87IH07CiAJCUIyMDk2NEJGMEFCNzZFRjYwMEU0Qzc0MCAvKiBTVkdBbmdsZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjA5NjRC
RDBBQjc2RUY2MDBFNEM3NDAgLyogU1ZHQW5nbGUuY3BwICovOyB9OwogCQlCMjA5NjRDMDBBQjc2
RUY2MDBFNEM3NDAgLyogU1ZHQW5nbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEIyMDk2NEJFMEFCNzZFRjYwMEU0Qzc0MCAvKiBTVkdBbmdsZS5oICov
OyB9OworCQlCMjExMjdBNjBCMzE4Njc3MDAwOUJFNTMgLyogSlNTVkdQT0RUeXBlV3JhcHBlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIxMTI3QTUw
QjMxODY3NzAwMDlCRTUzIC8qIEpTU1ZHUE9EVHlwZVdyYXBwZXIuaCAqLzsgfTsKIAkJQjIyMkY2
OTgwQUI3NzE5NTAwMjJFRkFEIC8qIEpTU1ZHQW5nbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMkY2OTYwQUI3NzE5NTAwMjJFRkFEIC8qIEpT
U1ZHQW5nbGUuY3BwICovOyB9OwogCQlCMjIyRjY5OTBBQjc3MTk1MDAyMkVGQUQgLyogSlNTVkdB
bmdsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIy
MkY2OTcwQUI3NzE5NTAwMjJFRkFEIC8qIEpTU1ZHQW5nbGUuaCAqLzsgfTsKIAkJQjIyMkY2OUMw
QUI3NzFCODAwMjJFRkFEIC8qIEpTU1ZHRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyRjY5QTBBQjc3MUI4MDAyMkVGQUQgLyogSlNT
VkdFbGVtZW50LmNwcCAqLzsgfTsKQEAgLTUxODgsNiArNTE4OSw3IEBACiAJCUIyMDExMTA2MEFC
Nzc0MDUwMERCMEU2OCAvKiBKU1NWR0FFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU1NWR0FFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUIyMDk2NEJEMEFCNzZFRjYwMEU0Qzc0MCAvKiBTVkdBbmdsZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHQW5nbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCMjA5NjRCRTBBQjc2RUY2MDBFNEM3NDAgLyogU1ZHQW5nbGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuZ2xlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUIyMTEyN0E1MEIzMTg2NzcwMDA5QkU1MyAvKiBKU1NWR1BPRFR5cGVXcmFw
cGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NWR1BPRFR5cGVXcmFw
cGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyMjJGNjk2MEFCNzcxOTUwMDIy
RUZBRCAvKiBKU1NWR0FuZ2xlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU1NWR0FuZ2xlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjIyMkY2
OTcwQUI3NzE5NTAwMjJFRkFEIC8qIEpTU1ZHQW5nbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTU1ZHQW5nbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QjIyMkY2OUEwQUI3NzFCODAwMjJFRkFEIC8qIEpTU1ZHRWxlbWVudC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTVkdFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTg2NjQsNiArODY2Niw3IEBACiAJCQkJODU3NEQxRjEwQURFNjEy
MjAwNENCQTExIC8qIEpTU1ZHRWxlbWVudFdyYXBwZXJGYWN0b3J5LmNwcCAqLywKIAkJCQk4NTc0
RDFGMjBBREU2MTIyMDA0Q0JBMTEgLyogSlNTVkdFbGVtZW50V3JhcHBlckZhY3RvcnkuaCAqLywK
IAkJCQlCMjVERkFBRTBCMkUyOTI5MDAwRTY1MTAgLyogSlNTVkdNYXRyaXhDdXN0b20uY3BwICov
LAorCQkJCUIyMTEyN0E1MEIzMTg2NzcwMDA5QkU1MyAvKiBKU1NWR1BPRFR5cGVXcmFwcGVyLmgg
Ki8sCiAJCQkJMUE3NTBFMzMwQTkwRjg5RjAwMEZGMjE1IC8qIEpTVHJlZVdhbGtlckN1c3RvbS5j
cHAgKi8sCiAJCQkJOTNCNzBENDEwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTWE1MSHR0cFJlcXVlc3Qu
Y3BwICovLAogCQkJCTkzQjcwRDQyMDlFQjBDN0MwMDlEODQ2OCAvKiBKU1hNTEh0dHBSZXF1ZXN0
LmggKi8sCkBAIC0xMDg0Niw2ICsxMDg0OSw3IEBACiAJCQkJQUE0QzNBNzcwQjJCMTY3OTAwMjMz
NEEyIC8qIFN0eWxlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNFMjQxRkYwQjJCNEU0
MDAwQzczMkExIC8qIEhUTUxGcmFtZU93bmVyRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RTExRDUxOTMwQjJFN0E1RjAwNTZDMTg4IC8qIEJhc2U2NC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
QjIxMTI3QTYwQjMxODY3NzAwMDlCRTUzIC8qIEpTU1ZHUE9EVHlwZVdyYXBwZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTE0OTkzQkU2MEIyRjJCMUMwMDUwNDk3RiAvKiBGb2N1c0NvbnRyb2xsZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR01hdHJpeEN1c3RvbS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR01hdHJpeEN1c3RvbS5j
cHAJKHJldmlzaW9uIDE4MjE2KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR01hdHJpeEN1
c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDggKzMyLDggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBKU1ZhbHVlKiBKU1NWR01hdHJpeDo6aW52ZXJzZShFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IExpc3QmKQogewotICAgIEFmZmluZVRyYW5zZm9ybSYgaW1wKGltcGwoKSk7Ci0gICAgS0pT
OjpKU1ZhbHVlKiByZXN1bHQgPSB0b0pTKGV4ZWMsIGltcC5pbnZlcnNlKCkpOworICAgIEFmZmlu
ZVRyYW5zZm9ybSYgaW1wKCppbXBsKCkpOworICAgIEtKUzo6SlNWYWx1ZSogcmVzdWx0ID0gdG9K
UyhleGVjLCBuZXcgSlNTVkdQT0RUeXBlV3JhcHBlcjxBZmZpbmVUcmFuc2Zvcm0+KGltcC5pbnZl
cnNlKCkpKTsKIAogICAgIGlmICghaW1wLmlzSW52ZXJ0aWJsZSgpKQogICAgICAgICBzZXRET01F
eGNlcHRpb24oZXhlYywgU1ZHX01BVFJJWF9OT1RfSU5WRVJUQUJMRSk7CkBAIC00MywxMiArNDMs
MTIgQEAgSlNWYWx1ZSogSlNTVkdNYXRyaXg6OmludmVyc2UoRXhlY1N0YXRlKgogCiBKU1ZhbHVl
KiBKU1NWR01hdHJpeDo6cm90YXRlRnJvbVZlY3RvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IExp
c3QmIGFyZ3MpCiB7Ci0gICAgQWZmaW5lVHJhbnNmb3JtJiBpbXAoaW1wbCgpKTsKKyAgICBBZmZp
bmVUcmFuc2Zvcm0mIGltcCgqaW1wbCgpKTsKICAKICAgICBmbG9hdCB4ID0gYXJnc1swXS0+dG9O
dW1iZXIoZXhlYyk7CiAgICAgZmxvYXQgeSA9IGFyZ3NbMV0tPnRvTnVtYmVyKGV4ZWMpOwogCi0g
ICAgS0pTOjpKU1ZhbHVlKiByZXN1bHQgPSB0b0pTKGV4ZWMsIGltcC5yb3RhdGVGcm9tVmVjdG9y
KHgsIHkpKTsKKyAgICBLSlM6OkpTVmFsdWUqIHJlc3VsdCA9IHRvSlMoZXhlYywgbmV3IEpTU1ZH
UE9EVHlwZVdyYXBwZXI8QWZmaW5lVHJhbnNmb3JtPihpbXAucm90YXRlRnJvbVZlY3Rvcih4LCB5
KSkpOwogCiAgICAgaWYgKHggPT0gMC4wIHx8IHkgPT0gMC4wKQogICAgICAgICBzZXRET01FeGNl
cHRpb24oZXhlYywgU1ZHX0lOVkFMSURfVkFMVUVfRVJSKTsKSW5kZXg6IFdlYkNvcmUvYmluZGlu
Z3MvanMvSlNTVkdQT0RUeXBlV3JhcHBlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGlu
Z3MvanMvSlNTVkdQT0RUeXBlV3JhcHBlci5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1NWR1BPRFR5cGVXcmFwcGVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJt
YW5uQGtkZS5vcmc+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgSlNTVkdQT0RUeXBlV3JhcHBlcl9ICisjZGVm
aW5lIEpTU1ZHUE9EVHlwZVdyYXBwZXJfSAorCisjaWZkZWYgU1ZHX1NVUFBPUlQKKworI2luY2x1
ZGUgIlNoYXJlZC5oIgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgUE9EVHlwZT4KK2NsYXNzIEpTU1ZHUE9EVHlw
ZVdyYXBwZXIgOiBwdWJsaWMgU2hhcmVkPEpTU1ZHUE9EVHlwZVdyYXBwZXI8UE9EVHlwZT4gPgor
eworcHVibGljOgorICAgIEpTU1ZHUE9EVHlwZVdyYXBwZXIoY29uc3QgUE9EVHlwZSYgdHlwZSkK
KyAgICA6IG1fcG9kVHlwZSh0eXBlKQorICAgIHsgfQorCisgICAgdmlydHVhbCB+SlNTVkdQT0RU
eXBlV3JhcHBlcigpIHsgfQorCisgICAgb3BlcmF0b3IgUE9EVHlwZSYoKSB7IHJldHVybiBtX3Bv
ZFR5cGU7IH0KKworICAgIC8vIEltcGxlbWVudGVkIGJ5IEpTU1ZHUE9EVHlwZVdyYXBwZXJDcmVh
dG9yICAgIAorICAgIHZpcnR1YWwgdm9pZCBjb21taXRDaGFuZ2UoKSB7IEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOyB9CisKK3ByaXZhdGU6CisgICAgUE9EVHlwZSBtX3BvZFR5cGU7Cit9OworCit0ZW1w
bGF0ZTx0eXBlbmFtZSBQT0RUeXBlLCB0eXBlbmFtZSBQT0RUeXBlQ3JlYXRvcj4KK2NsYXNzIEpT
U1ZHUE9EVHlwZVdyYXBwZXJDcmVhdG9yIDogcHVibGljIEpTU1ZHUE9EVHlwZVdyYXBwZXI8UE9E
VHlwZT4KK3sKK3B1YmxpYzoKKyAgICB0eXBlZGVmIFBPRFR5cGUgKFBPRFR5cGVDcmVhdG9yOjoq
R2V0dGVyTWV0aG9kKSgpIGNvbnN0OworICAgIHR5cGVkZWYgdm9pZCAoUE9EVHlwZUNyZWF0b3I6
OipTZXR0ZXJNZXRob2QpKFBPRFR5cGUpOworCisgICAgSlNTVkdQT0RUeXBlV3JhcHBlckNyZWF0
b3IoUE9EVHlwZUNyZWF0b3IqIGNyZWF0b3IsIEdldHRlck1ldGhvZCBnZXR0ZXIsIFNldHRlck1l
dGhvZCBzZXR0ZXIpCisgICAgOiBKU1NWR1BPRFR5cGVXcmFwcGVyPFBPRFR5cGU+KChjcmVhdG9y
LT4qZ2V0dGVyKSgpKQorICAgICwgbV9jcmVhdG9yKGNyZWF0b3IpCisgICAgLCBtX3NldHRlcihz
ZXR0ZXIpCisgICAgeyB9CisKKyAgICB2aXJ0dWFsIH5KU1NWR1BPRFR5cGVXcmFwcGVyQ3JlYXRv
cigpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIGNvbW1pdENoYW5nZSgpIHsgKG1fY3JlYXRvci0+
Km1fc2V0dGVyKSgoUE9EVHlwZSYpKCp0aGlzKSk7IH0KKworcHJpdmF0ZToKKyAgICAvLyBVcGRh
dGUgY2FsbGJhY2tzCisgICAgUE9EVHlwZUNyZWF0b3IqIG1fY3JlYXRvcjsKKyAgICBTZXR0ZXJN
ZXRob2QgbV9zZXR0ZXI7Cit9OworCit9OworCisjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKKyNlbmRp
ZiAvLyBKU1NWR1BPRFR5cGVXcmFwcGVyX0gKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMTgyMTYpCisrKyBXZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC0yNjMsOSAr
MjYzLDEwIEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogCiAgICAgIyBHZXQgY29ycmVjdCBwYXNzL3N0
b3JlIHR5cGVzIHJlc3BlY3RpbmcgUE9EVHlwZSBmbGFnCiAgICAgbXkgJHBvZFR5cGUgPSAkZGF0
YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJQT0RUeXBlIn07Ci0gICAgbXkgJHBhc3NUeXBl
ID0gJHBvZFR5cGUgPyAiY29uc3QgJHBvZFR5cGUmIiA6ICIkaW1wbENsYXNzTmFtZSoiOworICAg
IG15ICRwYXNzVHlwZSA9ICRwb2RUeXBlID8gIkpTU1ZHUE9EVHlwZVdyYXBwZXI8JHBvZFR5cGU+
KiIgOiAiJGltcGxDbGFzc05hbWUqIjsKIAogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIjaW5j
bHVkZSBcIiRwb2RUeXBlLmhcIlxuIikgaWYgJHBvZFR5cGUgYW5kICRwb2RUeXBlIG5lICJkb3Vi
bGUiOworICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIjaW5jbHVkZSBcIkpTU1ZHUE9EVHlwZVdy
YXBwZXIuaFwiXG4iKSBpZiAkcG9kVHlwZTsKIAogICAgIG15ICRudW1Db25zdGFudHMgPSBAeyRk
YXRhTm9kZS0+Y29uc3RhbnRzfTsKICAgICBteSAkbnVtQXR0cmlidXRlcyA9IEB7JGRhdGFOb2Rl
LT5hdHRyaWJ1dGVzfTsKQEAgLTQwNSwxMCArNDA2LDkgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAK
ICAgICBpZiAoISRoYXNQYXJlbnQpIHsKICAgICAgICAgaWYgKCRwb2RUeXBlKSB7Ci0gICAgICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICRwb2RUeXBlJiBpbXBsKCkgeyByZXR1cm4g
bV9pbXBsOyB9XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgY29u
c3QgJHBvZFR5cGUmIGltcGwoKSBjb25zdCB7IHJldHVybiBtX2ltcGw7IH1cbiIpOworICAgICAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBKU1NWR1BPRFR5cGVXcmFwcGVyPCRwb2RU
eXBlPiogaW1wbCgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbC5nZXQoKTsgfVxuIik7CiAgICAgICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAicHJpdmF0ZTpcbiIpOwotICAgICAgICAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgIiAgICAkcG9kVHlwZSBtX2ltcGw7XG4iKTsKKyAgICAgICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgUmVmUHRyPEpTU1ZHUE9EVHlwZVdyYXBwZXI8JHBv
ZFR5cGU+ID4gbV9pbXBsO1xuIik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAiICAgICRpbXBsQ2xhc3NOYW1lKiBpbXBsKCkgY29uc3QgeyByZXR1
cm4gbV9pbXBsLmdldCgpOyB9XG4iKTsKICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQs
ICJwcml2YXRlOlxuIik7CkBAIC00MzMsNyArNDMzLDExIEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgog
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJ9O1xuXG4iKTsKIAogICAgIGlmICghJGhhc1BhcmVu
dCkgewotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiS0pTOjpKU1ZhbHVlKiB0b0pTKEtK
Uzo6RXhlY1N0YXRlKiwgJHBhc3NUeXBlKTtcbiIpOworICAgICAgICBpZiAoJHBvZFR5cGUpIHsK
KyAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJLSlM6OkpTVmFsdWUqIHRvSlMoS0pT
OjpFeGVjU3RhdGUqLCBKU1NWR1BPRFR5cGVXcmFwcGVyPCRwb2RUeXBlPiopO1xuIik7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiS0pTOjpKU1Zh
bHVlKiB0b0pTKEtKUzo6RXhlY1N0YXRlKiwgJHBhc3NUeXBlKTtcbiIpOworICAgICAgICB9CiAg
ICAgfQogICAgIGlmICghJGhhc1BhcmVudCB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJHZW5lcmF0ZU5hdGl2ZUNvbnZlcnRlciJ9KSB7CiAgICAgICAgIGlmICgkcG9kVHlwZSkg
ewpAQCAtNjc1LDcgKzY3OSw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICAj
IEdldCBjb3JyZWN0IHBhc3Mvc3RvcmUgdHlwZXMgcmVzcGVjdGluZyBQT0RUeXBlIGZsYWcKICAg
ICBteSAkcG9kVHlwZSA9ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlBPRFR5cGUi
fTsKLSAgICBteSAkcGFzc1R5cGUgPSAkcG9kVHlwZSA/ICJjb25zdCAkcG9kVHlwZSYiIDogIiRp
bXBsQ2xhc3NOYW1lKiI7CisgICAgbXkgJHBhc3NUeXBlID0gJHBvZFR5cGUgPyAiSlNTVkdQT0RU
eXBlV3JhcHBlcjwkcG9kVHlwZT4qIiA6ICIkaW1wbENsYXNzTmFtZSoiOwogCiAgICAgIyBDb25z
dHJ1Y3RvcgogICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJEb05vdENh
Y2hlIn0pIHsKQEAgLTY5OSwxMSArNzAzLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24K
ICAgICAjIERlc3RydWN0b3IKICAgICBpZiAoISRoYXNQYXJlbnQpIHsKICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIke2NsYXNzTmFtZX06On4kY2xhc3NOYW1lKClcbiIpOwotICAgICAgICBp
ZiAoJHBvZFR5cGUpIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xufVxuXG4i
KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xu
ICAgIFNjcmlwdEludGVycHJldGVyOjpmb3JnZXRET01PYmplY3QobV9pbXBsLmdldCgpKTtcbn1c
blxuIik7Ci0gICAgICAgIH0KKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4gICAgU2Ny
aXB0SW50ZXJwcmV0ZXI6OmZvcmdldERPTU9iamVjdChtX2ltcGwuZ2V0KCkpO1xufVxuXG4iKTsK
ICAgICB9CiAKICAgICAjIERvY3VtZW50IG5lZWRzIGEgc3BlY2lhbCBkZXN0cnVjdG9yIGJlY2F1
c2UgaXQncyBhIHNwZWNpYWwgY2FzZSBmb3IgY2FjaGluZy4gSXQgbmVlZHMKQEAgLTc3Miw3ICs3
NzIsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIkpTVmFsdWUqICR7Y2xhc3NOYW1lfTo6Z2V0VmFsdWVQcm9wZXJ0eShFeGVjU3RhdGUq
IGV4ZWMsIGludCB0b2tlbikgY29uc3RcbntcbiIpOwogCiAgICAgICAgIGlmICgkcG9kVHlwZSkg
ewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgY29uc3QgJHBvZFR5cGUmIGlt
cChpbXBsKCkpO1xuXG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRw
b2RUeXBlJiBpbXAoKmltcGwoKSk7XG5cbiIpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGltcGxDbGFzc05hbWUqIGltcCA9IHN0YXRpY19j
YXN0PCRpbXBsQ2xhc3NOYW1lKj4oaW1wbCgpKTtcblxuIik7CiAgICAgICAgIH0KQEAgLTc4Miw2
ICs3ODIsMTEgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgZm9yZWFjaCBt
eSAkYXR0cmlidXRlIChAeyRkYXRhTm9kZS0+YXR0cmlidXRlc30pIHsKICAgICAgICAgICAgIG15
ICRuYW1lID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lOwogCisgICAgICAgICAgICBteSAk
aW1wbENsYXNzTmFtZUZvclZhbHVlQ29udmVyc2lvbiA9ICIiOworICAgICAgICAgICAgaWYgKCEk
cG9kVHlwZSBhbmQgKCRjb2RlR2VuZXJhdG9yLT5Jc1NWR0FuaW1hdGVkVHlwZSgkaW1wbENsYXNz
TmFtZSkgb3IgJGF0dHJpYnV0ZS0+dHlwZSAhfiAvXnJlYWRvbmx5LykpIHsKKyAgICAgICAgICAg
ICAgICAkaW1wbENsYXNzTmFtZUZvclZhbHVlQ29udmVyc2lvbiA9ICRpbXBsQ2xhc3NOYW1lOwor
ICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tIn0pIHsKICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBjYXNlICIgLiBXS191Y2ZpcnN0KCRuYW1lKSAuICJBdHRyTnVtOlxu
Iik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiAk
bmFtZShleGVjKTtcbiIpOwpAQCAtNzk2LDIxICs4MDEsMjEgQEAgc3ViIEdlbmVyYXRlSW1wbGVt
ZW50YXRpb24KIAogICAgICAgICAgICAgICAgIGlmICgkcG9kVHlwZSkgewogICAgICAgICAgICAg
ICAgICAgICBpZiAoJHBvZFR5cGUgZXEgImRvdWJsZSIpIHsgIyBTcGVjaWFsIGNhc2UgZm9yIEpT
U1ZHTnVtYmVyCi0gICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAgICAgcmV0dXJuICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAi
aW1wIikgLiAiO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICAgICAgcmV0dXJuICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLCAiIiwgImltcCIpIC4gIjtcbiIpOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVy
biAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgImltcC4kbmFtZSgp
IikgLiAiO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICAgICAgcmV0dXJuICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LCAiIiwgImltcC4kbmFtZSgpIikgLiAiO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICAgICAgcmV0dXJuICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLCAiaW1wLT4kbmFtZSgpIikgLiAiO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkYXR0
cmlidXRlLT5zaWduYXR1cmUsICRpbXBsQ2xhc3NOYW1lRm9yVmFsdWVDb252ZXJzaW9uLCAiaW1w
LT4kbmFtZSgpIikgLiAiO1xuIik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBjYXNlICIgLiBX
S191Y2ZpcnN0KCRuYW1lKSAuICJBdHRyTnVtOiB7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7XG4iKTsKIAogICAg
ICAgICAgICAgICAgIGlmICgkcG9kVHlwZSkgewotICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICAgICAgS0pTOjpKU1ZhbHVlKiByZXN1bHQgPSAiIC4gTmF0aXZlVG9K
U1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgImltcC4kbmFtZShlYykiKSAuICI7XG4iKTsK
KyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIEtKUzo6SlNW
YWx1ZSogcmVzdWx0ID0gIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUs
ICIiLCAiaW1wLiRuYW1lKGVjKSIpIC4gIjtcbiIpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBLSlM6OkpT
VmFsdWUqIHJlc3VsdCA9ICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LCAiaW1wLT4kbmFtZShlYykiKSAuICI7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgICAgIEtKUzo6SlNWYWx1ZSogcmVzdWx0ID0gIiAuIE5hdGl2ZVRv
SlNWYWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsICRpbXBsQ2xhc3NOYW1lRm9yVmFsdWVDb252
ZXJzaW9uLCAiaW1wLT4kbmFtZShlYykiKSAuICI7XG4iKTsKICAgICAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgc2V0RE9NRXhjZXB0
aW9uKGV4ZWMsIGVjKTtcbiIpOwpAQCAtODQxLDcgKzg0Niw3IEBAIHN1YiBHZW5lcmF0ZUltcGxl
bWVudGF0aW9uCiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogCiAgICAg
ICAgICAgICBpZiAoJHBvZFR5cGUpIHsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICAkcG9kVHlwZSYgaW1wKGltcGwoKSk7XG5cbiIpOworICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICRwb2RUeXBlJiBpbXAoKmltcGwoKSk7XG5cbiIpOwogICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAkaW1wbENsYXNzTmFtZSogaW1wID0gc3RhdGljX2Nhc3Q8JGltcGxDbGFzc05hbWUqPihpbXBs
KCkpO1xuXG4iKTsKICAgICAgICAgICAgIH0KQEAgLTg3NCwxMyArODc5LDE0IEBAIHN1YiBHZW5l
cmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
ICAgIGltcC5zZXQiIC4gV0tfdWNmaXJzdCgkbmFtZSkgLiAiKCIgLiBKU1ZhbHVlVG9OYXRpdmUo
JGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAidmFsdWUiKSAuICIpO1xuIik7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgICAgICBtX2ltcGwtPmNvbW1pdENoYW5nZSgpO1xuIik7CiAgICAgICAgICAg
ICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDtcbiIpIGlmIEB7JGF0
dHJpYnV0ZS0+c2V0dGVyRXhjZXB0aW9uc307CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGltcC0+c2V0IiAuIFdLX3VjZmlyc3QoJG5hbWUp
IC4gIigiIC4gSlNWYWx1ZVRvTmF0aXZlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgInZhbHVlIikp
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiLCBlYyIp
IGlmIEB7JGF0dHJpYnV0ZS0+c2V0dGVyRXhjZXB0aW9uc307CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIpO1xuIik7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVj
LCBlYyk7XG4iKSBpZiBAeyRhdHRyaWJ1dGUtPnNldHRlckV4Y2VwdGlvbnN9OwotICAgICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAg
IGJyZWFrO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IH1cbiIpOwpAQCAtOTA5LDcgKzkxNSw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywg
VHlwZUVycm9yKTtcblxuIik7CiAKICAgICAgICAgaWYgKCRwb2RUeXBlKSB7Ci0gICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkcG9kVHlwZSYgaW1wKHN0YXRpY19jYXN0PCRjbGFz
c05hbWUqPih0aGlzT2JqKS0+aW1wbCgpKTtcblxuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAkcG9kVHlwZSYgaW1wKCpzdGF0aWNfY2FzdDwkY2xhc3NOYW1lKj4odGhp
c09iaiktPmltcGwoKSk7XG5cbiIpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgJGltcGxDbGFzc05hbWUqIGltcCA9IHN0YXRpY19jYXN0PCRp
bXBsQ2xhc3NOYW1lKj4oc3RhdGljX2Nhc3Q8JGNsYXNzTmFtZSo+KHRoaXNPYmopLT5pbXBsKCkp
O1xuXG4iKTsKICAgICAgICAgfQpAQCAtOTQ5LDcgKzk1NSw3IEBAIHN1YiBHZW5lcmF0ZUltcGxl
bWVudGF0aW9uCiAKICAgICAgICAgICAgICAgICBteSAkbmFtZSA9ICRwYXJhbWV0ZXItPm5hbWU7
CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGJvb2wgJHtuYW1l
fU9rO1xuIikgaWYgVHlwZUNhbkZhaWxDb252ZXJzaW9uKCRwYXJhbWV0ZXIpOwotICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICAiIC4gR2V0TmF0aXZlVHlwZSgkcGFy
YW1ldGVyKSAuICIgJG5hbWUgPSAiIC4gSlNWYWx1ZVRvTmF0aXZlKCRwYXJhbWV0ZXIsICJhcmdz
WyRwYXJhbUluZGV4XSIsIFR5cGVDYW5GYWlsQ29udmVyc2lvbigkcGFyYW1ldGVyKSA/ICIke25h
bWV9T2siIDogdW5kZWYpIC4gIjtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICAgICAiIC4gR2V0TmF0aXZlVHlwZUZyb21TaWduYXR1cmUoJHBhcmFtZXRlcikg
LiAiICRuYW1lID0gIiAuIEpTVmFsdWVUb05hdGl2ZSgkcGFyYW1ldGVyLCAiYXJnc1skcGFyYW1J
bmRleF0iLCBUeXBlQ2FuRmFpbENvbnZlcnNpb24oJHBhcmFtZXRlcikgPyAiJHtuYW1lfU9rIiA6
IHVuZGVmKSAuICI7XG4iKTsKICAgICAgICAgICAgICAgICBpZiAoVHlwZUNhbkZhaWxDb252ZXJz
aW9uKCRwYXJhbWV0ZXIpKSB7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICAgICBpZiAoISR7bmFtZX1Paykge1xuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFRZUEVf
TUlTTUFUQ0hfRVJSKTtcbiIpOwpAQCAtOTkwLDEwICs5OTYsMjEgQEAgc3ViIEdlbmVyYXRlSW1w
bGVtZW50YXRpb24KICAgICB9CiAKICAgICBpZiAoISRoYXNQYXJlbnQpIHsKLSAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICJLSlM6OkpTVmFsdWUqIHRvSlMoS0pTOjpFeGVjU3RhdGUqIGV4ZWMs
ICRwYXNzVHlwZSBvYmopXG4iKTsKKyAgICAgICAgaWYgKCRwb2RUeXBlKSB7CisgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIktKUzo6SlNWYWx1ZSogdG9KUyhLSlM6OkV4ZWNTdGF0ZSog
ZXhlYywgSlNTVkdQT0RUeXBlV3JhcHBlcjwkcG9kVHlwZT4qIG9iailcbiIpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJLSlM6OkpTVmFsdWUqIHRv
SlMoS0pTOjpFeGVjU3RhdGUqIGV4ZWMsICRwYXNzVHlwZSBvYmopXG4iKTsKKyAgICAgICAgfQor
CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAgICAgICAgIGlmICgkcG9kVHlw
ZSkgewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIG5ldyAkY2xh
c3NOYW1lKGV4ZWMsIG9iaik7XG4iKTsKKyAgICAgICAgICAgICMgVGhpcyBjYWNoZSBmYWNpbGl0
eSBpcyBub3QgcmVhbGx5IHdvcmtpbmcgZm9yIFBPRCB0eXBlcywgd2UnZCBuZWVkIHRvIHBhc3Mg
YXJvdW5kIHBvaW50ZXJzIGluc3RlYWQgb2YgUE9ECisgICAgICAgICAgICAjIHR5cGVzIHRvIGJl
IGFibGUgdG8gcmV1c2UgdGhlIEpTU1ZHRm9vQmFyIGNsYXNzZXMuIFdoYXQncyBoYXBwZW5pbmcg
cmlnaHQgbm93LCBpcyB0aGF0IHdlIGp1c3QgY3JlYXRlIGEgbmV3CisgICAgICAgICAgICAjIEpT
U1ZHUE9EVHlwZVdyYXBwZXIsIG9uY2UgdG9KUyBpcyBjYWxsZWQuIEEgZm9sbG93IHVwIGNhbGws
IGRvaW5nIHRoZSBzYW1lLCB3b3VsZCBhbHNvIGNyZWF0ZSBhIG5ldyBKU1NWR1BPRFR5cGVXcmFw
cGVyLgorICAgICAgICAgICAgIyBTbyBpZiB3ZSdkIHVzZSBwb2ludGVycyBmb3IgUE9EIHR5cGVz
IGxpa2UgU1ZHUG9pbnQsIFNWR1JlY3QsIHdlIGNvdWxkIGVhc2lseSByZXVzZSB0aGUgSlNTVkdQ
b2ludC9KU1NWR1JlY3QgY2xhc3Nlcy4KKyAgICAgICAgICAgICMgVGhvdWdoIHdlIGRvIE5PVCB3
YW50IHRvIHBhc3MgcHJpbWl0aXZlIHBvaW50ZXIgYXJvdW5kIGluIFNWRywgdGhhdCdzIHdoeSB3
ZSBoYXZlIHRvIGNyZWF0ZSB0aGVzZSAic21hcnQgd3JhcHBlcnMiCisgICAgICAgICAgICAjIGFy
b3VuZCBQT0QgdHlwZXMgaW4gdGhlIGJpbmRpbmdzLiBUaGlzIGFwcHJvYWNoIGlzIHN0aWxsIHdh
eSBiZXR0ZXIgdGhhbiB1c2luZyBwb2ludGVycyBhbGwgb3ZlciBTVkcgY29kZWJhc2UuCisgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gS0pTOjpjYWNoZURPTU9iamVj
dDxKU1NWR1BPRFR5cGVXcmFwcGVyPCRwb2RUeXBlPiwgJGNsYXNzTmFtZT4oZXhlYywgb2JqKTtc
biIpOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIHJldHVybiBLSlM6OmNhY2hlRE9NT2JqZWN0PCRpbXBsQ2xhc3NOYW1lLCAkY2xhc3NOYW1l
PihleGVjLCBvYmopO1xuIik7CiAgICAgICAgIH0KQEAgLTEwMDksNyArMTAyNiw3IEBAIHN1YiBH
ZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4i
KTsKIAotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gdmFsLT5pc09iamVj
dCgmJHtjbGFzc05hbWV9OjppbmZvKSA/IHN0YXRpY19jYXN0PCRjbGFzc05hbWUqPih2YWwpLT5p
bXBsKCkgOiAiKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIHZhbC0+
aXNPYmplY3QoJiR7Y2xhc3NOYW1lfTo6aW5mbykgPyAiIC4gKCRwb2RUeXBlID8gIigkcG9kVHlw
ZSkgKiIgOiAiIikgLiAic3RhdGljX2Nhc3Q8JGNsYXNzTmFtZSo+KHZhbCktPmltcGwoKSA6ICIp
OwogICAgICAgICBpZiAoJHBvZFR5cGUgYW5kICRwb2RUeXBlIG5lICJkb3VibGUiKSB7CiAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiRwb2RUeXBlKCk7XG59XG4iKTsKICAgICAgICAg
fSBlbHNlIHsKQEAgLTEwNDcsMjQgKzEwNjQsMzAgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRp
b25GdW5jdGlvbkNhbGwoKQogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGluZGVudCAuICJz
ZXRET01FeGNlcHRpb24oZXhlYywgZWMpO1xuIikgaWYgQHskZnVuY3Rpb24tPnJhaXNlc0V4Y2Vw
dGlvbnN9OwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGluZGVudCAuICJyZXR1cm4ganNV
bmRlZmluZWQoKTtcbiIpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiXG4iIC4gJGluZGVudCAuICJLSlM6OkpTVmFsdWUqIHJlc3VsdCA9ICIgLiBOYXRpdmVUb0pT
VmFsdWUoJGZ1bmN0aW9uLT5zaWduYXR1cmUsICRmdW5jdGlvblN0cmluZykgLiAiO1xuIik7Cisg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4iIC4gJGluZGVudCAuICJLSlM6OkpTVmFsdWUq
IHJlc3VsdCA9ICIgLiBOYXRpdmVUb0pTVmFsdWUoJGZ1bmN0aW9uLT5zaWduYXR1cmUsICIiLCAk
ZnVuY3Rpb25TdHJpbmcpIC4gIjtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGlu
ZGVudCAuICJzZXRET01FeGNlcHRpb24oZXhlYywgZWMpO1xuIikgaWYgQHskZnVuY3Rpb24tPnJh
aXNlc0V4Y2VwdGlvbnN9OwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGluZGVudCAuICJy
ZXR1cm4gcmVzdWx0O1xuIik7CiAgICAgfQogfQogCi1zdWIgR2V0TmF0aXZlVHlwZQorc3ViIEdl
dE5hdGl2ZVR5cGVGcm9tU2lnbmF0dXJlCiB7CiAgICAgbXkgJHNpZ25hdHVyZSA9IHNoaWZ0Owot
CiAgICAgbXkgJHR5cGUgPSAkY29kZUdlbmVyYXRvci0+U3RyaXBNb2R1bGUoJHNpZ25hdHVyZS0+
dHlwZSk7CiAKLSAgICBpZiAoJHR5cGUgZXEgInVuc2lnbmVkIGxvbmciKSB7CisgICAgaWYgKCR0
eXBlIGVxICJ1bnNpZ25lZCBsb25nIiBhbmQgJHNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IklzSW5kZXgifSkgewogICAgICAgICAjIFNwZWNpYWwtY2FzZSBpbmRleCBhcmd1bWVudHMg
YmVjYXVzZSB3ZSBuZWVkIHRvIGNoZWNrIHRoYXQgdGhleSBhcmVuJ3QgPCAwLgotICAgICAgICBy
ZXR1cm4gImludCIgaWYgJHNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IklzSW5kZXgi
fTsKLSAgICAgICAgcmV0dXJuICJ1bnNpZ25lZCI7CisgICAgICAgIHJldHVybiAiaW50IjsKICAg
ICB9CiAKKyAgICByZXR1cm4gR2V0TmF0aXZlVHlwZSgkdHlwZSk7Cit9CisKK3N1YiBHZXROYXRp
dmVUeXBlCit7CisgICAgbXkgJHR5cGUgPSBzaGlmdDsKKworICAgIHJldHVybiAidW5zaWduZWQi
IGlmICR0eXBlIGVxICJ1bnNpZ25lZCBsb25nIjsKICAgICByZXR1cm4gJHR5cGUgaWYgJHR5cGUg
ZXEgInVuc2lnbmVkIHNob3J0IiBvciAkdHlwZSBlcSAiZmxvYXQiIG9yICR0eXBlIGVxICJBdG9t
aWNTdHJpbmciOwogICAgIHJldHVybiAiYm9vbCIgaWYgJHR5cGUgZXEgImJvb2xlYW4iOwogICAg
IHJldHVybiAiaW50IiBpZiAkdHlwZSBlcSAibG9uZyI7CkBAIC0xMTk5LDYgKzEyMjIsNyBAQCBz
dWIgSlNWYWx1ZVRvTmF0aXZlCiBzdWIgTmF0aXZlVG9KU1ZhbHVlCiB7CiAgICAgbXkgJHNpZ25h
dHVyZSA9IHNoaWZ0OworICAgIG15ICRpbXBsQ2xhc3NOYW1lID0gc2hpZnQ7CiAgICAgbXkgJHZh
bHVlID0gc2hpZnQ7CiAKICAgICBteSAkdHlwZSA9ICRjb2RlR2VuZXJhdG9yLT5TdHJpcE1vZHVs
ZSgkc2lnbmF0dXJlLT50eXBlKTsKQEAgLTEyMjMsOSArMTI0NywyMiBAQCBzdWIgTmF0aXZlVG9K
U1ZhbHVlCiAgICAgICAgIHJldHVybiAiZ2V0RE9NUkdCQ29sb3IoZXhlYywgJHZhbHVlKSI7CiAg
ICAgfQogCi0gICAgaWYgKCR0eXBlIGVxICJTVkdSZWN0IiBvciAkdHlwZSBlcSAiU1ZHUG9pbnQi
IG9yICR0eXBlIGVxICJTVkdOdW1iZXIiIG9yICR0eXBlIGVxICJTVkdNYXRyaXgiKSB7CisgICAg
aWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1BvZFR5cGUoJHR5cGUpKSB7CiAgICAgICAgICRpbXBsSW5j
bHVkZXN7IkpTJHR5cGUuaCJ9ID0gMTsKLSAgICAgICAgcmV0dXJuICJ0b0pTKGV4ZWMsICR2YWx1
ZSkiOworCisgICAgICAgIG15ICRuYXRpdmVUeXBlID0gR2V0TmF0aXZlVHlwZSgkdHlwZSk7CisK
KyAgICAgICAgbXkgJGdldHRlciA9ICR2YWx1ZTsKKyAgICAgICAgJGdldHRlciA9fiBzL2ltcC0+
Ly87CisgICAgICAgICRnZXR0ZXIgPX4gcy9cKFwpLy87CisKKyAgICAgICAgbXkgJHNldHRlciA9
ICJzZXQiIC4gV0tfdWNmaXJzdCgkZ2V0dGVyKTsKKworICAgICAgICBpZiAoJGltcGxDbGFzc05h
bWUgZXEgIiIpIHsKKyAgICAgICAgICAgIHJldHVybiAidG9KUyhleGVjLCBuZXcgSlNTVkdQT0RU
eXBlV3JhcHBlcjwkbmF0aXZlVHlwZT4oJHZhbHVlKSkiOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgcmV0dXJuICJ0b0pTKGV4ZWMsIG5ldyBKU1NWR1BPRFR5cGVXcmFwcGVyQ3JlYXRv
cjwkbmF0aXZlVHlwZSwgJGltcGxDbGFzc05hbWU+KGltcCwgJiR7aW1wbENsYXNzTmFtZX06OiRn
ZXR0ZXIsICYke2ltcGxDbGFzc05hbWV9Ojokc2V0dGVyKSkiOworICAgICAgICB9CiAgICAgfQog
CiAgICAgaWYgKCR0eXBlIGVxICJIVE1MQ29sbGVjdGlvbiIpIHsKSW5kZXg6IFdlYkNvcmUva3N2
ZzIvbWlzYy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tz
dmcyL21pc2MvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmgJKHJldmlzaW9uIDE4MjE2KQorKysgV2Vi
Q29yZS9rc3ZnMi9taXNjL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5oCSh3b3JraW5nIGNvcHkpCkBA
IC05Niw2ICs5NiwxNiBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VmFsdWVUeXBlPgorICAgIHZvaWQgcmVtb3ZlQmFzZVZhbHVlKGNvbnN0IFNWR0VsZW1lbnQqIGVs
ZW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgcHJvcGVydHlOYW1lKQorICAgIHsKKyAgICAgICAg
SGFzaE1hcDxTdHJpbmdJbXBsKiwgVmFsdWVUeXBlPiogcHJvcGVydHlNYXAgPSBiYXNlVmFsdWVN
YXA8VmFsdWVUeXBlPigpLmdldChlbGVtZW50KTsKKyAgICAgICAgaWYgKCFwcm9wZXJ0eU1hcCkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBwcm9wZXJ0eU1hcC0+cmVtb3ZlKHByb3Bl
cnR5TmFtZS5pbXBsKCkpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlVHlw
ZT4KICAgICBib29sIGhhc0Jhc2VWYWx1ZShjb25zdCBTVkdFbGVtZW50KiBlbGVtZW50LCBjb25z
dCBBdG9taWNTdHJpbmcmIHByb3BlcnR5TmFtZSkgY29uc3QKICAgICB7CiAgICAgICAgIEhhc2hN
YXA8U3RyaW5nSW1wbCosIFZhbHVlVHlwZT4qIHByb3BlcnR5TWFwID0gYmFzZVZhbHVlTWFwPFZh
bHVlVHlwZT4oKS5nZXQoZWxlbWVudCk7CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRWxlbWVudC5oCShyZXZp
c2lvbiAxODIxNikKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0VsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5p
a29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAg
ICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4K
IAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMjAsOCArMjAs
OSBAQAogICAgIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgogKi8KIAotI2lmbmRlZiBLU1ZH
X1NWR0VsZW1lbnRJbXBsX0gKLSNkZWZpbmUgS1NWR19TVkdFbGVtZW50SW1wbF9ICisjaWZuZGVm
IFNWR0VsZW1lbnRfSAorI2RlZmluZSBTVkdFbGVtZW50X0gKKwogI2lmZGVmIFNWR19TVVBQT1JU
CiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgpAQCAtMzMsMTcgKzM0LDIxIEBACiAKICNkZWZpbmUg
QU5JTUFURURfUFJPUEVSVFlfRU1QVFlfREVDTEFSQVRJT05TKEJhcmVUeXBlLCBOdWxsVHlwZSwg
VXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAogcHVibGljOiBcCi0gICAgdmlydHVhbCBC
YXJlVHlwZSBMb3dlclByb3BlcnR5KCkgY29uc3QgeyBBU1NFUlQoZmFsc2UpOyByZXR1cm4gTnVs
bFR5cGU7IH0gXAotICAgIHZpcnR1YWwgdm9pZCBzZXQjI1VwcGVyUHJvcGVydHkoQmFyZVR5cGUg
bmV3VmFsdWUpIHsgQVNTRVJUKGZhbHNlKTsgfVwKLSAgICB2aXJ0dWFsIEJhcmVUeXBlIExvd2Vy
UHJvcGVydHkjI0Jhc2VWYWx1ZSgpIGNvbnN0IHsgQVNTRVJUKGZhbHNlKTsgcmV0dXJuIE51bGxU
eXBlOyB9IFwKLSAgICB2aXJ0dWFsIHZvaWQgc2V0IyNVcHBlclByb3BlcnR5IyNCYXNlVmFsdWUo
QmFyZVR5cGUgbmV3VmFsdWUpIHsgQVNTRVJUKGZhbHNlKTsgfQorICAgIHZpcnR1YWwgQmFyZVR5
cGUgTG93ZXJQcm9wZXJ0eSgpIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBO
dWxsVHlwZTsgfSBcCisgICAgdmlydHVhbCB2b2lkIHNldCMjVXBwZXJQcm9wZXJ0eShCYXJlVHlw
ZSBuZXdWYWx1ZSkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfVwKKyAgICB2aXJ0dWFsIEJhcmVU
eXBlIExvd2VyUHJvcGVydHkjI0Jhc2VWYWx1ZSgpIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFDSEVE
KCk7IHJldHVybiBOdWxsVHlwZTsgfSBcCisgICAgdmlydHVhbCB2b2lkIHNldCMjVXBwZXJQcm9w
ZXJ0eSMjQmFzZVZhbHVlKEJhcmVUeXBlIG5ld1ZhbHVlKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OyB9IFwKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnQjI1VwcGVyUHJvcGVydHkoKSBjb25zdCB7IEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOyB9IFwKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcCMjVXBwZXJQcm9w
ZXJ0eSgpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAogI2RlZmluZSBBTklNQVRFRF9QUk9Q
RVJUWV9GT1JXQVJEX0RFQ0xBUkFUSU9OUyhGb3J3YXJkQ2xhc3MsIEJhcmVUeXBlLCBVcHBlclBy
b3BlcnR5LCBMb3dlclByb3BlcnR5KSBcCiBwdWJsaWM6IFwKICAgICB2aXJ0dWFsIEJhcmVUeXBl
IExvd2VyUHJvcGVydHkoKSBjb25zdCB7IHJldHVybiBGb3J3YXJkQ2xhc3M6Okxvd2VyUHJvcGVy
dHkoKTsgfSBcCiAgICAgdmlydHVhbCB2b2lkIHNldCMjVXBwZXJQcm9wZXJ0eShCYXJlVHlwZSBu
ZXdWYWx1ZSkgeyBGb3J3YXJkQ2xhc3M6OnNldCMjVXBwZXJQcm9wZXJ0eShuZXdWYWx1ZSk7IH0g
XAogICAgIHZpcnR1YWwgQmFyZVR5cGUgTG93ZXJQcm9wZXJ0eSMjQmFzZVZhbHVlKCkgY29uc3Qg
eyByZXR1cm4gRm9yd2FyZENsYXNzOjpMb3dlclByb3BlcnR5IyNCYXNlVmFsdWUoKTsgfSBcCi0g
ICAgdmlydHVhbCB2b2lkIHNldCMjVXBwZXJQcm9wZXJ0eSMjQmFzZVZhbHVlKEJhcmVUeXBlIG5l
d1ZhbHVlKSB7IEZvcndhcmRDbGFzczo6c2V0IyNVcHBlclByb3BlcnR5IyNCYXNlVmFsdWUobmV3
VmFsdWUpOyB9CisgICAgdmlydHVhbCB2b2lkIHNldCMjVXBwZXJQcm9wZXJ0eSMjQmFzZVZhbHVl
KEJhcmVUeXBlIG5ld1ZhbHVlKSB7IEZvcndhcmRDbGFzczo6c2V0IyNVcHBlclByb3BlcnR5IyNC
YXNlVmFsdWUobmV3VmFsdWUpOyB9IFwKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnQjI1VwcGVyUHJv
cGVydHkoKSBjb25zdCB7IEZvcndhcmRDbGFzczo6c3RhcnQjI1VwcGVyUHJvcGVydHkoKTsgfSBc
CisgICAgdmlydHVhbCB2b2lkIHN0b3AjI1VwcGVyUHJvcGVydHkoKSB7IEZvcndhcmRDbGFzczo6
c3RvcCMjVXBwZXJQcm9wZXJ0eSgpOyB9CiAKICNkZWZpbmUgQU5JTUFURURfUFJPUEVSVFlfREVD
TEFSQVRJT05TX0lOVEVSTkFMKENsYXNzVHlwZSwgQ2xhc3NTdG9yYWdlVHlwZSwgQmFyZVR5cGUs
IFN0b3JhZ2VUeXBlLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KSBcCiBjbGFzcyBTVkdB
bmltYXRlZFRlbXBsYXRlIyNVcHBlclByb3BlcnR5IFwKQEAgLTU2LDYgKzYxLDcgQEAgcHVibGlj
OiBcCiAgICAgdmlydHVhbCB2b2lkIHNldEJhc2VWYWwoQmFyZVR5cGUgbmV3QmFzZVZhbCk7IFwK
ICAgICB2aXJ0dWFsIEJhcmVUeXBlIGFuaW1WYWwoKSBjb25zdDsgXAogICAgIHZpcnR1YWwgdm9p
ZCBzZXRBbmltVmFsKEJhcmVUeXBlIG5ld0FuaW1WYWwpOyBcCitcCiBwcm90ZWN0ZWQ6IFwKICAg
ICBDbGFzc1N0b3JhZ2VUeXBlIG1fZWxlbWVudDsgXAogfTsgXApAQCAtNjUsNiArNzEsOSBAQCBw
dWJsaWM6IFwKICAgICBCYXJlVHlwZSBMb3dlclByb3BlcnR5IyNCYXNlVmFsdWUoKSBjb25zdDsg
XAogICAgIHZvaWQgc2V0IyNVcHBlclByb3BlcnR5IyNCYXNlVmFsdWUoQmFyZVR5cGUgbmV3VmFs
dWUpOyBcCiAgICAgUGFzc1JlZlB0cjxTVkdBbmltYXRlZFRlbXBsYXRlIyNVcHBlclByb3BlcnR5
PiBMb3dlclByb3BlcnR5IyNBbmltYXRlZCgpIGNvbnN0OyBcCisgICAgdm9pZCBzdGFydCMjVXBw
ZXJQcm9wZXJ0eSgpIGNvbnN0OyBcCisgICAgdm9pZCBzdG9wIyNVcHBlclByb3BlcnR5KCk7IFwK
K1wKIHByaXZhdGU6IFwKICAgICBTdG9yYWdlVHlwZSBtXyMjTG93ZXJQcm9wZXJ0eTsKIApAQCAt
ODIsNyArOTEsNyBAQCB2b2lkIENsYXNzTmFtZTo6U1ZHQW5pbWF0ZWRUZW1wbGF0ZSMjVXBwCiBC
YXJlVHlwZSBDbGFzc05hbWU6OlNWR0FuaW1hdGVkVGVtcGxhdGUjI1VwcGVyUHJvcGVydHk6OmFu
aW1WYWwoKSBjb25zdCBcCiB7IFwKICAgICByZXR1cm4gbV9lbGVtZW50LT5Mb3dlclByb3BlcnR5
KCk7IFwKLX1cCit9IFwKIHZvaWQgQ2xhc3NOYW1lOjpTVkdBbmltYXRlZFRlbXBsYXRlIyNVcHBl
clByb3BlcnR5OjpzZXRBbmltVmFsKEJhcmVUeXBlIG5ld0FuaW1WYWwpIFwKIHsgXAogICAgIG1f
ZWxlbWVudC0+c2V0IyNVcHBlclByb3BlcnR5KG5ld0FuaW1WYWwpOyBcCkBAIC05OCw3ICsxMDcs
NyBAQCB2b2lkIENsYXNzTmFtZTo6c2V0IyNVcHBlclByb3BlcnR5KEJhcmVUCiBCYXJlVHlwZSBD
bGFzc05hbWU6Okxvd2VyUHJvcGVydHkjI0Jhc2VWYWx1ZSgpIGNvbnN0IFwKIHsgXAogICAgIGNv
bnN0IFNWR0VsZW1lbnQqIGNvbnRleHQgPSBDb250ZXh0RWxlbWVudDsgXAotICAgIEFTU0VSVChj
b250ZXh0ICE9IDApOyBcCisgICAgQVNTRVJUKGNvbnRleHQpOyBcCiAgICAgU1ZHRG9jdW1lbnRF
eHRlbnNpb25zKiBleHRlbnNpb25zID0gKGNvbnRleHQtPmRvY3VtZW50KCkgPyBjb250ZXh0LT5k
b2N1bWVudCgpLT5hY2Nlc3NTVkdFeHRlbnNpb25zKCkgOiAwKTsgXAogICAgIGlmIChleHRlbnNp
b25zICYmIGV4dGVuc2lvbnMtPmhhc0Jhc2VWYWx1ZTxCYXJlVHlwZT4oY29udGV4dCwgQXR0ck5h
bWUpKSBcCiAgICAgICAgICByZXR1cm4gZXh0ZW5zaW9ucy0+YmFzZVZhbHVlPEJhcmVUeXBlPihj
b250ZXh0LCBBdHRyTmFtZSk7IFwKQEAgLTEwNywxMSArMTE2LDM3IEBAIEJhcmVUeXBlIENsYXNz
TmFtZTo6TG93ZXJQcm9wZXJ0eSMjQmFzZVYKIHZvaWQgQ2xhc3NOYW1lOjpzZXQjI1VwcGVyUHJv
cGVydHkjI0Jhc2VWYWx1ZShCYXJlVHlwZSBuZXdWYWx1ZSkgXAogeyBcCiAgICAgY29uc3QgU1ZH
RWxlbWVudCogY29udGV4dCA9IENvbnRleHRFbGVtZW50OyBcCi0gICAgQVNTRVJUKGNvbnRleHQg
IT0gMCk7IFwKKyAgICBBU1NFUlQoY29udGV4dCk7IFwKICAgICBTVkdEb2N1bWVudEV4dGVuc2lv
bnMqIGV4dGVuc2lvbnMgPSAoY29udGV4dC0+ZG9jdW1lbnQoKSA/IGNvbnRleHQtPmRvY3VtZW50
KCktPmFjY2Vzc1NWR0V4dGVuc2lvbnMoKSA6IDApOyBcCi0gICAgaWYgKGV4dGVuc2lvbnMgJiYg
ZXh0ZW5zaW9ucy0+aGFzQmFzZVZhbHVlPEJhcmVUeXBlPihjb250ZXh0LCBBdHRyTmFtZSkpIFwK
KyAgICBpZiAoZXh0ZW5zaW9ucyAmJiBleHRlbnNpb25zLT5oYXNCYXNlVmFsdWU8QmFyZVR5cGU+
KGNvbnRleHQsIEF0dHJOYW1lKSkgeyBcCiAgICAgICAgIGV4dGVuc2lvbnMtPnNldEJhc2VWYWx1
ZTxCYXJlVHlwZT4oY29udGV4dCwgQXR0ck5hbWUsIG5ld1ZhbHVlKTsgXAorICAgICAgICByZXR1
cm47IFwKKyAgICB9IFwKKyAgICAvKiBPbmx5IHVwZGF0ZSBzdG9yZWQgcHJvcGVydHksIGlmIG5v
dCBhbmltYXRpbmcgKi8gXAogICAgIHNldCMjVXBwZXJQcm9wZXJ0eShuZXdWYWx1ZSk7IFwKK30g
XAorXAordm9pZCBDbGFzc05hbWU6OnN0YXJ0IyNVcHBlclByb3BlcnR5KCkgY29uc3QgXAoreyBc
CisgICAgY29uc3QgU1ZHRWxlbWVudCogY29udGV4dCA9IENvbnRleHRFbGVtZW50OyBcCisgICAg
QVNTRVJUKGNvbnRleHQpOyBcCisgICAgU1ZHRG9jdW1lbnRFeHRlbnNpb25zKiBleHRlbnNpb25z
ID0gKGNvbnRleHQtPmRvY3VtZW50KCkgPyBjb250ZXh0LT5kb2N1bWVudCgpLT5hY2Nlc3NTVkdF
eHRlbnNpb25zKCkgOiAwKTsgXAorICAgIGlmIChleHRlbnNpb25zKSB7IFwKKyAgICAgICAgQVNT
RVJUKCFleHRlbnNpb25zLT5oYXNCYXNlVmFsdWU8QmFyZVR5cGU+KGNvbnRleHQsIEF0dHJOYW1l
KSk7IFwKKyAgICAgICAgZXh0ZW5zaW9ucy0+c2V0QmFzZVZhbHVlPEJhcmVUeXBlPihjb250ZXh0
LCBBdHRyTmFtZSwgTG93ZXJQcm9wZXJ0eSgpKTsgXAorICAgIH0gXAorfSBcCitcCit2b2lkIENs
YXNzTmFtZTo6c3RvcCMjVXBwZXJQcm9wZXJ0eSgpIFwKK3sgXAorICAgIGNvbnN0IFNWR0VsZW1l
bnQqIGNvbnRleHQgPSBDb250ZXh0RWxlbWVudDsgXAorICAgIEFTU0VSVChjb250ZXh0KTsgXAor
ICAgIFNWR0RvY3VtZW50RXh0ZW5zaW9ucyogZXh0ZW5zaW9ucyA9IChjb250ZXh0LT5kb2N1bWVu
dCgpID8gY29udGV4dC0+ZG9jdW1lbnQoKS0+YWNjZXNzU1ZHRXh0ZW5zaW9ucygpIDogMCk7IFwK
KyAgICBpZiAoZXh0ZW5zaW9ucykgeyBcCisgICAgICAgIEFTU0VSVChleHRlbnNpb25zLT5oYXNC
YXNlVmFsdWU8QmFyZVR5cGU+KGNvbnRleHQsIEF0dHJOYW1lKSk7IFwKKyAgICAgICAgc2V0IyNV
cHBlclByb3BlcnR5KGV4dGVuc2lvbnMtPmJhc2VWYWx1ZTxCYXJlVHlwZT4oY29udGV4dCwgQXR0
ck5hbWUpKTsgXAorICAgICAgICBleHRlbnNpb25zLT5yZW1vdmVCYXNlVmFsdWU8QmFyZVR5cGU+
KGNvbnRleHQsIEF0dHJOYW1lKTsgXAorICAgIH0gXAogfQogCiAvLyBUaGVzZSBhcmUgdGhlIG1h
Y3JvcyB3aGljaCB3aWxsIGJlIHVzZWQgdG8gZGVjbGFyZS9pbXBsZW1lbnQgdGhlIHN2ZyBhbmlt
YXRlZCBwcm9wZXJ0aWVzLi4uCkBAIC0xMjYsNyArMTYxLDcgQEAgQU5JTUFURURfUFJPUEVSVFlf
REVGSU5JVElPTlNfSU5URVJOQUwoQwogUGFzc1JlZlB0cjxDbGFzc05hbWU6OlNWR0FuaW1hdGVk
VGVtcGxhdGUjI1VwcGVyUHJvcGVydHk+IENsYXNzTmFtZTo6TG93ZXJQcm9wZXJ0eSMjQW5pbWF0
ZWQoKSBjb25zdCBcCiB7IFwKICAgICBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0ID0gY29udGV4
dEVsZW1lbnQoKTsgXAotICAgIEFTU0VSVChjb250ZXh0ICE9IDApOyBcCisgICAgQVNTRVJUKGNv
bnRleHQpOyBcCiAgICAgcmV0dXJuIFJlZlB0cjxDbGFzc05hbWU6OlNWR0FuaW1hdGVkVGVtcGxh
dGUjI1VwcGVyUHJvcGVydHk+KG5ldyBDbGFzc05hbWU6OlNWR0FuaW1hdGVkVGVtcGxhdGUjI1Vw
cGVyUHJvcGVydHkoY29udGV4dCkpOyBcCiB9CiAKQEAgLTE5Niw3ICsyMzEsNiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBoYXZlTG9hZGVkUmVxdWlyZWRSZXNv
dXJjZXMoKTsKICAgICB9OwogCi0KICAgICBzdGF0aWMgaW5saW5lIFNWR0VsZW1lbnQqIHN2Z19k
eW5hbWljX2Nhc3QoTm9kZSogbm9kZSkKICAgICB7CiAgICAgICAgIFNWR0VsZW1lbnQqIHN2Z0Vs
ZW1lbnQgPSAwOwpAQCAtMjA4LDYgKzI0Miw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUgCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAotI2VuZGlmIC8vIEtT
VkdfU1ZHRWxlbWVudEltcGxfSAorI2VuZGlmIC8vIFNWR0VsZW1lbnRfSAogCiAvLyB2aW06dHM9
NDpub2V0Cg==
</data>
<flag name="review"
          id="4310"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>