<?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>92935</bug_id>
          
          <creation_ts>2012-08-01 20:00:55 -0700</creation_ts>
          <short_desc>Remove all uses of ClassInfo for JSStrings in JIT code</short_desc>
          <delta_ts>2012-08-02 10:32:50 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Hahnenberg">mhahnenberg</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>684918</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-08-01 20:00:55 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684923</commentid>
    <comment_count>1</comment_count>
      <attachid>155956</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-08-01 20:09:06 -0700</bug_when>
    <thetext>Created attachment 155956
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684925</commentid>
    <comment_count>2</comment_count>
      <attachid>155956</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-08-01 20:13:41 -0700</bug_when>
    <thetext>Comment on attachment 155956
Patch

Attachment 155956 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/13426029</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684926</commentid>
    <comment_count>3</comment_count>
      <attachid>155956</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-08-01 20:15:01 -0700</bug_when>
    <thetext>Comment on attachment 155956
Patch

Attachment 155956 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/13425052</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684928</commentid>
    <comment_count>4</comment_count>
      <attachid>155958</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-08-01 20:19:57 -0700</bug_when>
    <thetext>Created attachment 155958
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684967</commentid>
    <comment_count>5</comment_count>
      <attachid>155958</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-08-01 21:50:29 -0700</bug_when>
    <thetext>Comment on attachment 155958
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=155958&amp;action=review

r=me

&gt; Source/JavaScriptCore/bytecode/SpeculatedType.cpp:270
&gt; +    if (structure-&gt;typeInfo().type() == StringType)
&gt; +        return SpecString;

FWIW, you *could* get the JSGlobalData from structure-&gt;globalObject()-&gt;globalData().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685549</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-08-02 10:32:50 -0700</bug_when>
    <thetext>Committed r124476: &lt;http://trac.webkit.org/changeset/124476&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155956</attachid>
            <date>2012-08-01 20:09:06 -0700</date>
            <delta_ts>2012-08-01 20:19:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92935-20120801200848.patch</filename>
            <type>text/plain</type>
            <size>22258</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTI0NDAxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBA
CisyMDEyLTA4LTAxICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgUmVtb3ZlIGFsbCB1c2VzIG9mIENsYXNzSW5mbyBmb3IgSlNTdHJpbmdzIGluIEpJ
VCBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
MjkzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgaXMgdGhlIGZpcnN0IHN0ZXAgaW4gcmVtb3Zpbmcgb3VyIGRlcGVuZGVuY2Ugb24gaW4tb2Jq
ZWN0IENsYXNzSW5mbyBwb2ludGVycworICAgICAgICBpbiBKSVQgY29kZS4gTW9zdCBvZiB0aGUg
Y2hhbmdlcyBhcmUgdG8gY2hlY2sgdGhlIFN0cnVjdHVyZSwgd2hpY2ggaXMgdW5pcXVlIGZvciAK
KyAgICAgICAgSlNTdHJpbmcgcHJpbWl0aXZlcy4KKworICAgICAgICAqIGJ5dGVjb2RlL1NwZWN1
bGF0ZWRUeXBlLmNwcDoKKyAgICAgICAgKEpTQzo6c3BlY3VsYXRpb25Gcm9tQ2xhc3NJbmZvKToK
KyAgICAgICAgKEpTQzo6c3BlY3VsYXRpb25Gcm9tU3RydWN0dXJlKTogQ2hhbmdlZCB0byBjaGVj
ayB0aGUgVHlwZUluZm8gaW4gdGhlIFN0cnVjdHVyZQorICAgICAgICBzaW5jZSB0aGVyZSB3YXNu
J3QgYSBKU0dsb2JhbERhdGEgaW1tZWRpYXRlbHkgYXZhaWxhYmxlIHRvIGdyYWIgdGhlIEpTU3Ry
aW5nIAorICAgICAgICBTdHJ1Y3R1cmUgb3V0IG9mLgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVH
ZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVK
SVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUp
OgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogaml0L0pJVElubGluZU1l
dGhvZHMuaDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TG9hZENoYXJhY3RlclN0cmluZyk6Cisg
ICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVD
b21waWxlQ1RJTWFjaGluZVRyYW1wb2xpbmVzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X3RvX3ByaW1pdGl2ZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jb252ZXJ0X3RoaXMp
OgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6
OnByaXZhdGVDb21waWxlQ1RJTWFjaGluZVRyYW1wb2xpbmVzKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3RvX3ByaW1pdGl2ZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bf
ZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX25lcSk6CisgICAgICAgIChKU0M6
OkpJVDo6Y29tcGlsZU9wU3RyaWN0RXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY29u
dmVydF90aGlzKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAg
ICAoSlNDOjpKSVQ6OnN0cmluZ0dldEJ5VmFsU3R1YkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X3ZhbCk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5
QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnN0cmluZ0dldEJ5VmFsU3R1Ykdl
bmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X3ZhbCk6Cisg
ICAgICAgICogaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaDoKKyAgICAgICAgKEpTQzo6U3BlY2lh
bGl6ZWRUaHVua0pJVDo6bG9hZEpTU3RyaW5nQXJndW1lbnQpOgorICAgICAgICAqIGppdC9UaHVu
a0dlbmVyYXRvcnMuY3BwOgorICAgICAgICAoSlNDOjpzdHJpbmdDaGFyTG9hZCk6CisgICAgICAg
IChKU0M6OmNoYXJDb2RlQXRUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OmNoYXJBdFRo
dW5rR2VuZXJhdG9yKToKKwogMjAxMi0wOC0wMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUu
Y29tPgogCiAgICAgICAgIERGRyBzaG91bGQgZGlzdGluZ3Vpc2ggYmV0d2VlbiBQdXRCeVZhbCdz
IHRoYXQgY2xvYmJlciB0aGUgd29ybGQgYW5kIG9uZXMgdGhhdCBkb24ndApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCShyZXZp
c2lvbiAxMjQzNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRl
ZFR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjYsOSArMjI2LDYgQEAgU3BlY3VsYXRlZFR5
cGUgc3BlY3VsYXRpb25Gcm9tQ2xhc3NJbmZvKAogICAgIGlmIChjbGFzc0luZm8gPT0gJkpTQXJy
YXk6OnNfaW5mbykKICAgICAgICAgcmV0dXJuIFNwZWNBcnJheTsKICAgICAKLSAgICBpZiAoY2xh
c3NJbmZvID09ICZKU1N0cmluZzo6c19pbmZvKQotICAgICAgICByZXR1cm4gU3BlY1N0cmluZzsK
LSAgICAKICAgICBpZiAoY2xhc3NJbmZvID09ICZBcmd1bWVudHM6OnNfaW5mbykKICAgICAgICAg
cmV0dXJuIFNwZWNBcmd1bWVudHM7IC8vIENhbm5vdCBkaXN0aW5ndWlzaCBiZXR3ZWVuIE15QXJn
dW1lbnRzIGFuZCBGb3JlaWduQXJndW1lbnRzIGF0IHRoaXMgc3RhZ2UuIFRoYXQgaGFwcGVucyBp
biB0aGUgZmxvdyBhbmFseXNpcy4KICAgICAKQEAgLTI2OSw2ICsyNjYsOCBAQCBTcGVjdWxhdGVk
VHlwZSBzcGVjdWxhdGlvbkZyb21DbGFzc0luZm8oCiAKIFNwZWN1bGF0ZWRUeXBlIHNwZWN1bGF0
aW9uRnJvbVN0cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKKyAgICBpZiAoc3RydWN0
dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBTdHJpbmdUeXBlKQorICAgICAgICByZXR1cm4gU3Bl
Y1N0cmluZzsKICAgICByZXR1cm4gc3BlY3VsYXRpb25Gcm9tQ2xhc3NJbmZvKHN0cnVjdHVyZS0+
Y2xhc3NJbmZvKCkpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDEyNDM3MikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI5OTAsNyArMjk5MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAgIG1faml0Lm1vdmUob3AxUGF5bG9hZEdQUiwgcmVz
dWx0UGF5bG9hZEdQUik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcCBhbHJlYWR5UHJpbWl0aXZlID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsLCBvcDFUYWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7
Ci0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub3RQcmltaXRpdmUgPSBtX2ppdC5i
cmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhvcDFQYXlsb2FkR1BSLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW1QdHIoJkpTU3RyaW5nOjpzX2luZm8pKTsKKyAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpKdW1wIG5vdFByaW1pdGl2ZSA9IG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMVBheWxvYWRHUFIsIEpT
Q2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0ciht
X2ppdC5nbG9iYWxEYXRhKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgICAgICAgICAg
CiAgICAgICAgICAgICBhbHJlYWR5UHJpbWl0aXZlLmxpbmsoJm1faml0KTsKICAgICAgICAgICAg
IG1faml0Lm1vdmUob3AxVGFnR1BSLCByZXN1bHRUYWdHUFIpOwpAQCAtMzE3NCw3ICszMTc0LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAgICAg
R1BSUmVnIHRoaXNWYWx1ZUdQUiA9IHRoaXNWYWx1ZS5ncHIoKTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgaWYgKCFpc09iamVjdFNwZWN1bGF0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNo
aWxkMSgpKS5tX3R5cGUpKQotICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlw
ZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwodGhpc1ZhbHVlR1BSKSwgbm9kZS5jaGlsZDEo
KSwgbV9qaXQuYnJhbmNoUHRyKEpJVENvbXBpbGVyOjpFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJl
c3ModGhpc1ZhbHVlR1BSLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgSklUQ29tcGlsZXI6
OlRydXN0ZWRJbW1QdHIoJkpTU3RyaW5nOjpzX2luZm8pKSk7CisgICAgICAgICAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbCh0aGlzVmFs
dWVHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoSklUQ29tcGlsZXI6OkVxdWFs
LCBKSVRDb21waWxlcjo6QWRkcmVzcyh0aGlzVmFsdWVHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zm
c2V0KCkpLCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnN0
cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgR1BSVGVt
cG9yYXJ5IHJlc3VsdCh0aGlzLCB0aGlzVmFsdWUpOwogICAgICAgICAgICAgR1BSUmVnIHJlc3Vs
dEdQUiA9IHJlc3VsdC5ncHIoKTsKQEAgLTM0MTgsNyArMzQxOCw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJl
c3VsdC5ncHIoKTsKICAgICAgICAgCiAgICAgICAgIGlmICghaXNTdHJpbmdTcGVjdWxhdGlvbiht
X3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZUdQUiks
IG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWws
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0
KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNTdHJpbmc6OnNfaW5mbykpKTsK
KyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5i
b3hlZENlbGwoYmFzZUdQUiksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fz
c2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2Vs
bDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2pp
dC5nbG9iYWxEYXRhKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKICAgICAgICAgCiAgICAg
ICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU1N0cmlu
Zzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHJlc3VsdEdQUik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTI0
MzcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzA0Myw3ICszMDQzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAgICAgbV9qaXQubW92ZShvcDFHUFIsIHJl
c3VsdEdQUik7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1
bXAgYWxyZWFkeVByaW1pdGl2ZSA9IG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6
Ok5vblplcm8sIG9wMUdQUiwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKLSAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdFByaW1pdGl2ZSA9IG1faml0LmJyYW5jaFB0cihNYWNy
b0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlND
ZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZK
U1N0cmluZzo6c19pbmZvKSk7CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub3RQ
cmltaXRpdmUgPSBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnN0cmluZ1N0
cnVjdHVyZS5nZXQoKSkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBhbHJlYWR5UHJpbWl0
aXZlLmxpbmsoJm1faml0KTsKICAgICAgICAgICAgIG1faml0Lm1vdmUob3AxR1BSLCByZXN1bHRH
UFIpOwpAQCAtMzIwOCw3ICszMjA4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlJiBub2RlKQogICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKCFpc09iamVjdFNwZWN1bGF0aW9uKG1fc3Rh
dGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQotICAgICAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3ModGhpc1ZhbHVlR1BSKSwgbm9kZS5jaGls
ZDEoKSwgbV9qaXQuYnJhbmNoUHRyKEpJVENvbXBpbGVyOjpFcXVhbCwgSklUQ29tcGlsZXI6OkFk
ZHJlc3ModGhpc1ZhbHVlR1BSLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgSklUQ29tcGls
ZXI6OlRydXN0ZWRJbW1QdHIoJkpTU3RyaW5nOjpzX2luZm8pKSk7CisgICAgICAgICAgICAgICAg
c3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyh0aGlzVmFsdWVHUFIpLCBub2Rl
LmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoSklUQ29tcGlsZXI6OkVxdWFsLCBKSVRDb21waWxl
cjo6QWRkcmVzcyh0aGlzVmFsdWVHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBKSVRD
b21waWxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnN0cmluZ1N0cnVjdHVy
ZS5nZXQoKSkpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9qaXQubW92ZSh0aGlzVmFs
dWVHUFIsIHJlc3VsdEdQUik7CiAgICAgICAgICAgICAKQEAgLTM0MzUsNyArMzQzNSw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgR1BSUmVnIHJl
c3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgCiAgICAgICAgIGlmICghaXNTdHJpbmdT
cGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAgICAg
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIG5v
ZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkp
LCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNTdHJpbmc6OnNfaW5mbykpKTsKKyAg
ICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiks
IG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWws
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0
KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnN0
cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKICAgICAgICAgCiAgICAgICAgIG1faml0LmxvYWQzMihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU1N0cmluZzo6b2Zmc2V0T2ZMZW5ndGgo
KSksIHJlc3VsdEdQUik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAxMjQzNzIpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjkw
Miw3ICsyOTAyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEluZGV4ZWRQcgog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9IGVsc2UgaWYgKGF0KG5vZGUuY2hp
bGQxKCkpLnByZWRpY3Rpb24oKSA9PSBTcGVjU3RyaW5nKSB7CiAgICAgICAgIGlmICghaXNTdHJp
bmdTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAg
ICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hl
ZENlbGwoYmFzZVJlZyksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6
Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNTdHJp
bmc6OnNfaW5mbykpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNW
YWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUuY2hpbGQxKCksIG1faml0LmJy
YW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KGJhc2VSZWcsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsK
IAogICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcs
IEpTU3RyaW5nOjpvZmZzZXRPZlZhbHVlKCkpLCBzdG9yYWdlUmVnKTsKICAgICAgICAgCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZU1ldGhvZHMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZU1ldGhvZHMuaAkocmV2aXNp
b24gMTI0MzcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVNZXRob2Rz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTg0LDcgKzg0LDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIEpJ
VDo6ZW1pdEdldEZyb21DYWxsRgogCiBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjplbWl0TG9hZENo
YXJhY3RlclN0cmluZyhSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QsIEp1bXBMaXN0JiBm
YWlsdXJlcykKIHsKLSAgICBmYWlsdXJlcy5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRy
ZXNzKHNyYywgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoJkpTU3Ry
aW5nOjpzX2luZm8pKSk7CisgICAgZmFpbHVyZXMuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwg
QWRkcmVzcyhzcmMsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKG1f
Z2xvYmFsRGF0YS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOwogICAgIGZhaWx1cmVzLmFwcGVu
ZChicmFuY2gzMihOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3JjLCBUaHVua0hl
bHBlcnM6OmpzU3RyaW5nTGVuZ3RoT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoMSkpKTsKICAgICBs
b2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNyYywgVGh1bmtIZWxwZXJzOjpqc1N0cmlu
Z1ZhbHVlT2Zmc2V0KCkpLCBkc3QpOwogICAgIGZhaWx1cmVzLmFwcGVuZChicmFuY2hUZXN0MzIo
WmVybywgZHN0KSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMz
Ml82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzMzJfNjQuY3BwCShyZXZpc2lvbiAxMjQzNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAg
UGFzc1JlZlB0cjxFeGVjdXRhYmxlTWVtb3J5SGFuZGxlPiBKSVQ6OgogICAgIC8vIHJlZ1QwIGhv
bGRzIHBheWxvYWQsIHJlZ1QxIGhvbGRzIHRhZwogCiAgICAgSnVtcCBzdHJpbmdfZmFpbHVyZUNh
c2VzMSA9IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNl
bGxUYWcpKTsKLSAgICBKdW1wIHN0cmluZ19mYWlsdXJlQ2FzZXMyID0gYnJhbmNoUHRyKE5vdEVx
dWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1c3RlZElt
bVB0cigmSlNTdHJpbmc6OnNfaW5mbykpOworICAgIEp1bXAgc3RyaW5nX2ZhaWx1cmVDYXNlczIg
PSBicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zm
c2V0KCkpLCBUcnVzdGVkSW1tUHRyKGdsb2JhbERhdGEtPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkp
OwogCiAgICAgLy8gQ2hlY2tzIG91dCBva2F5ISAtIGdldCB0aGUgbGVuZ3RoIGZyb20gdGhlIFVz
dHJpbmcuCiAgICAgbG9hZDMyKEFkZHJlc3MocmVnVDAsIE9CSkVDVF9PRkZTRVRPRihKU1N0cmlu
ZywgbV9sZW5ndGgpKSwgcmVnVDIpOwpAQCAtNzMyLDcgKzczMiw3IEBAIHZvaWQgSklUOjplbWl0
X29wX3RvX3ByaW1pdGl2ZShJbnN0cnVjdGkKICAgICBlbWl0TG9hZChzcmMsIHJlZ1QxLCByZWdU
MCk7CiAKICAgICBKdW1wIGlzSW1tID0gYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVk
SW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RF
cXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJ
bW1QdHIoJkpTU3RyaW5nOjpzX2luZm8pKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5v
dEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3Rl
ZEltbVB0cihtX2dsb2JhbERhdGEtPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKICAgICBpc0lt
bS5saW5rKHRoaXMpOwogCiAgICAgaWYgKGRzdCAhPSBzcmMpCkBAIC0xMDA4LDggKzEwMDgsOCBA
QCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZXEoSW5zdHJ1Y3Rpb24qIGN1CiAgICAgZ2VuZXJpY0Nh
c2UuYXBwZW5kKGdldFNsb3dDYXNlKGl0ZXIpKTsgLy8gdGFncyBub3QgZXF1YWwKIAogICAgIGxp
bmtTbG93Q2FzZShpdGVyKTsgLy8gdGFncyBlcXVhbCBhbmQgSlNDZWxsCi0gICAgZ2VuZXJpY0Nh
c2UuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpjbGFz
c0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoJkpTU3RyaW5nOjpzX2luZm8pKSk7Ci0gICAg
Z2VuZXJpY0Nhc2UuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMiwgSlND
ZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoJkpTU3RyaW5nOjpzX2luZm8p
KSk7CisgICAgZ2VuZXJpY0Nhc2UuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhy
ZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIobV9nbG9iYWxE
YXRhLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgZ2VuZXJpY0Nhc2UuYXBwZW5kKGJy
YW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQo
KSksIFRydXN0ZWRJbW1QdHIobV9nbG9iYWxEYXRhLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7
CiAKICAgICAvLyBTdHJpbmcgY2FzZS4KICAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbEVxU3RyaW5n
cyh0aGlzLCBjdGlfb3BfZXFfc3RyaW5ncyk7CkBAIC0xMDU2LDggKzEwNTYsOCBAQCB2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfbmVxKEluc3RydWN0aW9uKiBjCiAgICAgZ2VuZXJpY0Nhc2UuYXBwZW5k
KGdldFNsb3dDYXNlKGl0ZXIpKTsgLy8gdGFncyBub3QgZXF1YWwKIAogICAgIGxpbmtTbG93Q2Fz
ZShpdGVyKTsgLy8gdGFncyBlcXVhbCBhbmQgSlNDZWxsCi0gICAgZ2VuZXJpY0Nhc2UuYXBwZW5k
KGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpjbGFzc0luZm9PZmZz
ZXQoKSksIFRydXN0ZWRJbW1QdHIoJkpTU3RyaW5nOjpzX2luZm8pKSk7Ci0gICAgZ2VuZXJpY0Nh
c2UuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpjbGFz
c0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoJkpTU3RyaW5nOjpzX2luZm8pKSk7CisgICAg
Z2VuZXJpY0Nhc2UuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlND
ZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIobV9nbG9iYWxEYXRhLT5zdHJp
bmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgZ2VuZXJpY0Nhc2UuYXBwZW5kKGJyYW5jaFB0cihO
b3RFcXVhbCwgQWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0
ZWRJbW1QdHIobV9nbG9iYWxEYXRhLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CiAKICAgICAv
LyBTdHJpbmcgY2FzZS4KICAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbEVxU3RyaW5ncyh0aGlzLCBj
dGlfb3BfZXFfc3RyaW5ncyk7CkBAIC0xMDkzLDggKzEwOTMsOCBAQCB2b2lkIEpJVDo6Y29tcGls
ZU9wU3RyaWN0RXEoSW5zdHJ1Y3Rpb24qCiAKICAgICAvLyBKdW1wIHRvIGEgc2xvdyBjYXNlIGlm
IGJvdGggYXJlIHN0cmluZ3MuCiAgICAgSnVtcCBub3RDZWxsID0gYnJhbmNoMzIoTm90RXF1YWws
IHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwotICAgIEp1bXAgZmlyc3RO
b3RTdHJpbmcgPSBicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6Y2xh
c3NJbmZvT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKCZKU1N0cmluZzo6c19pbmZvKSk7Ci0gICAg
YWRkU2xvd0Nhc2UoYnJhbmNoUHRyKEVxdWFsLCBBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OmNsYXNz
SW5mb09mZnNldCgpKSwgVHJ1c3RlZEltbVB0cigmSlNTdHJpbmc6OnNfaW5mbykpKTsKKyAgICBK
dW1wIGZpcnN0Tm90U3RyaW5nID0gYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBK
U0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihtX2dsb2JhbERhdGEtPnN0
cmluZ1N0cnVjdHVyZS5nZXQoKSkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihFcXVhbCwg
QWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIo
bV9nbG9iYWxEYXRhLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CiAgICAgbm90Q2VsbC5saW5r
KHRoaXMpOwogICAgIGZpcnN0Tm90U3RyaW5nLmxpbmsodGhpcyk7CiAKQEAgLTE1NTYsNyArMTU1
Niw3IEBAIHZvaWQgSklUOjplbWl0X29wX2NvbnZlcnRfdGhpcyhJbnN0cnVjdGkKICAgICAgICAg
bW92ZShyZWdUMywgcmVnVDEpOwogICAgICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKCk7CiAg
ICAgfQotICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihFcXVhbCwgQWRkcmVzcyhyZWdUMiwgSlND
ZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoJkpTU3RyaW5nOjpzX2luZm8p
KSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKEVxdWFsLCBBZGRyZXNzKHJlZ1QyLCBKU0Nl
bGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihtX2dsb2JhbERhdGEtPnN0cmlu
Z1N0cnVjdHVyZS5nZXQoKSkpKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NvbnZlcnRf
dGhpcyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJiBpdGVyKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGNvZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMuY3BwCShyZXZpc2lvbiAxMjQzNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wY29kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIFBhc3NSZWZQ
dHI8RXhlY3V0YWJsZU1lbW9yeUhhbmRsZT4gSklUOjoKIAogICAgIC8vIENoZWNrIGVheCBpcyBh
IHN0cmluZwogICAgIEp1bXAgc3RyaW5nX2ZhaWx1cmVDYXNlczEgPSBlbWl0SnVtcElmTm90SlND
ZWxsKHJlZ1QwKTsKLSAgICBKdW1wIHN0cmluZ19mYWlsdXJlQ2FzZXMyID0gYnJhbmNoUHRyKE5v
dEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1c3Rl
ZEltbVB0cigmSlNTdHJpbmc6OnNfaW5mbykpOworICAgIEp1bXAgc3RyaW5nX2ZhaWx1cmVDYXNl
czIgPSBicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJl
T2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKGdsb2JhbERhdGEtPnN0cmluZ1N0cnVjdHVyZS5nZXQo
KSkpOwogCiAgICAgLy8gQ2hlY2tzIG91dCBva2F5ISAtIGdldCB0aGUgbGVuZ3RoIGZyb20gdGhl
IFVzdHJpbmcuCiAgICAgbG9hZDMyKEFkZHJlc3MocmVnVDAsIE9CSkVDVF9PRkZTRVRPRihKU1N0
cmluZywgbV9sZW5ndGgpKSwgcmVnVDApOwpAQCAtNjQ3LDcgKzY0Nyw3IEBAIHZvaWQgSklUOjpl
bWl0X29wX3RvX3ByaW1pdGl2ZShJbnN0cnVjdGkKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
KHNyYywgcmVnVDApOwogICAgIAogICAgIEp1bXAgaXNJbW0gPSBlbWl0SnVtcElmTm90SlNDZWxs
KHJlZ1QwKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVn
VDAsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKCZKU1N0cmluZzo6
c19pbmZvKSkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhy
ZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIobV9nbG9iYWxE
YXRhLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CiAgICAgaXNJbW0ubGluayh0aGlzKTsKIAog
ICAgIGlmIChkc3QgIT0gc3JjKQpAQCAtMTI2MCw3ICsxMjYwLDcgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfY29udmVydF90aGlzKEluc3RydWN0aQogICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDEs
IEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMCk7CiAgICAgICAgIGVtaXRWYWx1ZVBy
b2ZpbGluZ1NpdGUoKTsKICAgICB9Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKEVxdWFsLCBB
ZGRyZXNzKHJlZ1QxLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1c3RlZEltbVB0cigm
SlNTdHJpbmc6OnNfaW5mbykpKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hQdHIoRXF1YWwsIEFk
ZHJlc3MocmVnVDEsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKG1f
Z2xvYmFsRGF0YS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOwogfQogCiB2b2lkIEpJVDo6ZW1p
dF9vcF9jcmVhdGVfdGhpcyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJf
NjQuY3BwCShyZXZpc2lvbiAxMjQzNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjEsNyArMTYxLDcg
QEAgSklUOjpDb2RlUmVmIEpJVDo6c3RyaW5nR2V0QnlWYWxTdHViR2VuZQogewogICAgIEpTSW50
ZXJmYWNlSklUIGppdDsKICAgICBKdW1wTGlzdCBmYWlsdXJlczsKLSAgICBmYWlsdXJlcy5hcHBl
bmQoaml0LmJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpjbGFzc0lu
Zm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoJkpTU3RyaW5nOjpzX2luZm8pKSk7CisgICAgZmFp
bHVyZXMuYXBwZW5kKGppdC5icmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2Vs
bDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKG1fZ2xvYmFsRGF0YS0+c3RyaW5n
U3RydWN0dXJlLmdldCgpKSkpOwogICAgIAogICAgIC8vIExvYWQgc3RyaW5nIGxlbmd0aCB0byBy
ZWdUMSwgYW5kIHN0YXJ0IHRoZSBwcm9jZXNzIG9mIGxvYWRpbmcgdGhlIGRhdGEgcG9pbnRlciBp
bnRvIHJlZ1QwCiAgICAgaml0LmxvYWQzMihBZGRyZXNzKHJlZ1QwLCBUaHVua0hlbHBlcnM6Ompz
U3RyaW5nTGVuZ3RoT2Zmc2V0KCkpLCByZWdUMSk7CkBAIC0yMzQsNyArMjM0LDcgQEAgdm9pZCBK
SVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwoSW5zdHJ1YwogCiAgICAgSnVtcCBub25DZWxsID0g
anVtcCgpOwogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gYmFzZSBhcnJheSBjaGVjawotICAg
IEp1bXAgbm90U3RyaW5nID0gYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0Nl
bGw6OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1c3RlZEltbVB0cigmSlNTdHJpbmc6OnNfaW5mbykp
OworICAgIEp1bXAgbm90U3RyaW5nID0gYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1Qw
LCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihtX2dsb2JhbERhdGEt
PnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgIGVtaXROYWtlZENhbGwobV9nbG9iYWxEYXRh
LT5nZXRDVElTdHViKHN0cmluZ0dldEJ5VmFsU3R1YkdlbmVyYXRvcikuY29kZSgpKTsKICAgICBK
dW1wIGZhaWxlZCA9IGJyYW5jaFRlc3RQdHIoWmVybywgcmVnVDApOwogICAgIGVtaXRTdG9yZShk
c3QsIHJlZ1QxLCByZWdUMCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkocmV2aXNpb24gMTI0MzcyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2
LDcgKzU2LDcgQEAgSklUOjpDb2RlUmVmIEpJVDo6c3RyaW5nR2V0QnlWYWxTdHViR2VuZQogewog
ICAgIEpTSW50ZXJmYWNlSklUIGppdDsKICAgICBKdW1wTGlzdCBmYWlsdXJlczsKLSAgICBmYWls
dXJlcy5hcHBlbmQoaml0LmJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxs
OjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoJkpTU3RyaW5nOjpzX2luZm8pKSk7
CisgICAgZmFpbHVyZXMuYXBwZW5kKGppdC5icmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVn
VDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKGdsb2JhbERhdGEt
PnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKIAogICAgIC8vIExvYWQgc3RyaW5nIGxlbmd0aCB0
byByZWdUMiwgYW5kIHN0YXJ0IHRoZSBwcm9jZXNzIG9mIGxvYWRpbmcgdGhlIGRhdGEgcG9pbnRl
ciBpbnRvIHJlZ1QwCiAgICAgaml0LmxvYWQzMihBZGRyZXNzKHJlZ1QwLCBUaHVua0hlbHBlcnM6
OmpzU3RyaW5nTGVuZ3RoT2Zmc2V0KCkpLCByZWdUMik7CkBAIC0xMzIsNyArMTMyLDcgQEAgdm9p
ZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwoSW5zdHJ1YwogICAgIGxpbmtTbG93Q2FzZUlm
Tm90SlNDZWxsKGl0ZXIsIGJhc2UpOyAvLyBiYXNlIGNlbGwgY2hlY2sKICAgICBKdW1wIG5vbkNl
bGwgPSBqdW1wKCk7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBiYXNlIGFycmF5IGNoZWNr
Ci0gICAgSnVtcCBub3RTdHJpbmcgPSBicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAs
IEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKCZKU1N0cmluZzo6c19p
bmZvKSk7CisgICAgSnVtcCBub3RTdHJpbmcgPSBicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3Mo
cmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKG1fZ2xvYmFs
RGF0YS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAgICAgZW1pdE5ha2VkQ2FsbChDb2RlTG9j
YXRpb25MYWJlbChtX2dsb2JhbERhdGEtPmdldENUSVN0dWIoc3RyaW5nR2V0QnlWYWxTdHViR2Vu
ZXJhdG9yKS5jb2RlKCkpKTsKICAgICBKdW1wIGZhaWxlZCA9IGJyYW5jaFRlc3RQdHIoWmVybywg
cmVnVDApOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZWdUMCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaAkocmV2
aXNpb24gMTI0MzcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TcGVjaWFsaXplZFRo
dW5rSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDEwICs1NSwxMCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgICAgIG1fZmFpbHVyZXMuYXBwZW5kKGVtaXRMb2FkSlNDZWxsKHNyYywgZHN0
KSk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIHZvaWQgbG9hZEpTU3RyaW5nQXJndW1l
bnQoaW50IGFyZ3VtZW50LCBSZWdpc3RlcklEIGRzdCkKKyAgICAgICAgdm9pZCBsb2FkSlNTdHJp
bmdBcmd1bWVudChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGludCBhcmd1bWVudCwgUmVnaXN0
ZXJJRCBkc3QpCiAgICAgICAgIHsKICAgICAgICAgICAgIGxvYWRDZWxsQXJndW1lbnQoYXJndW1l
bnQsIGRzdCk7Ci0gICAgICAgICAgICBtX2ZhaWx1cmVzLmFwcGVuZChicmFuY2hQdHIoTm90RXF1
YWwsIEFkZHJlc3MoZHN0LCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1c3RlZEltbVB0
cigmSlNTdHJpbmc6OnNfaW5mbykpKTsKKyAgICAgICAgICAgIG1fZmFpbHVyZXMuYXBwZW5kKGJy
YW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhkc3QsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkp
LCBUcnVzdGVkSW1tUHRyKGdsb2JhbERhdGEuc3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOwogICAg
ICAgICB9CiAgICAgICAgIAogICAgICAgICB2b2lkIGxvYWRJbnQzMkFyZ3VtZW50KGludCBhcmd1
bWVudCwgUmVnaXN0ZXJJRCBkc3QsIEp1bXAmIGZhaWxUYXJnZXQpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCShyZXZpc2lvbiAxMjQzNzIp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM1LDEwICszNSwxMCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RhdGlj
IHZvaWQgc3RyaW5nQ2hhckxvYWQoU3BlY2lhbGl6ZWRUaHVua0pJVCYgaml0KQorc3RhdGljIHZv
aWQgc3RyaW5nQ2hhckxvYWQoU3BlY2lhbGl6ZWRUaHVua0pJVCYgaml0LCBKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEpCiB7CiAgICAgLy8gbG9hZCBzdHJpbmcKLSAgICBqaXQubG9hZEpTU3RyaW5n
QXJndW1lbnQoU3BlY2lhbGl6ZWRUaHVua0pJVDo6VGhpc0FyZ3VtZW50LCBTcGVjaWFsaXplZFRo
dW5rSklUOjpyZWdUMCk7CisgICAgaml0LmxvYWRKU1N0cmluZ0FyZ3VtZW50KCpnbG9iYWxEYXRh
LCBTcGVjaWFsaXplZFRodW5rSklUOjpUaGlzQXJndW1lbnQsIFNwZWNpYWxpemVkVGh1bmtKSVQ6
OnJlZ1QwKTsKIAogICAgIC8vIExvYWQgc3RyaW5nIGxlbmd0aCB0byByZWdUMiwgYW5kIHN0YXJ0
IHRoZSBwcm9jZXNzIG9mIGxvYWRpbmcgdGhlIGRhdGEgcG9pbnRlciBpbnRvIHJlZ1QwCiAgICAg
aml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhTcGVjaWFsaXplZFRodW5rSklUOjpy
ZWdUMCwgVGh1bmtIZWxwZXJzOjpqc1N0cmluZ0xlbmd0aE9mZnNldCgpKSwgU3BlY2lhbGl6ZWRU
aHVua0pJVDo6cmVnVDIpOwpAQCAtNzYsNyArNzYsNyBAQCBzdGF0aWMgdm9pZCBjaGFyVG9TdHJp
bmcoU3BlY2lhbGl6ZWRUaHVuCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY2hhckNvZGVBdFRodW5r
R2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKIHsKICAgICBTcGVjaWFsaXplZFRo
dW5rSklUIGppdCgxKTsKLSAgICBzdHJpbmdDaGFyTG9hZChqaXQpOworICAgIHN0cmluZ0NoYXJM
b2FkKGppdCwgZ2xvYmFsRGF0YSk7CiAgICAgaml0LnJldHVybkludDMyKFNwZWNpYWxpemVkVGh1
bmtKSVQ6OnJlZ1QwKTsKICAgICByZXR1cm4gaml0LmZpbmFsaXplKCpnbG9iYWxEYXRhLCBnbG9i
YWxEYXRhLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCgpLCAiY2hhckNvZGVBdCIpOwogfQpAQCAt
ODQsNyArODQsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY2hhckNvZGVBdFRodW5rR2VuCiBN
YWNyb0Fzc2VtYmxlckNvZGVSZWYgY2hhckF0VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhKQogewogICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KDEpOwotICAgIHN0cmlu
Z0NoYXJMb2FkKGppdCk7CisgICAgc3RyaW5nQ2hhckxvYWQoaml0LCBnbG9iYWxEYXRhKTsKICAg
ICBjaGFyVG9TdHJpbmcoaml0LCBnbG9iYWxEYXRhLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdU
MCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1Qx
KTsKICAgICBqaXQucmV0dXJuSlNDZWxsKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsKICAg
ICByZXR1cm4gaml0LmZpbmFsaXplKCpnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLT5qaXRTdHVicy0+
Y3RpTmF0aXZlQ2FsbCgpLCAiY2hhckF0Iik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155958</attachid>
            <date>2012-08-01 20:19:57 -0700</date>
            <delta_ts>2012-08-01 21:50:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92935-20120801201939.patch</filename>
            <type>text/plain</type>
            <size>22256</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTI0NDAxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBA
CisyMDEyLTA4LTAxICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgUmVtb3ZlIGFsbCB1c2VzIG9mIENsYXNzSW5mbyBmb3IgSlNTdHJpbmdzIGluIEpJ
VCBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
MjkzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgaXMgdGhlIGZpcnN0IHN0ZXAgaW4gcmVtb3Zpbmcgb3VyIGRlcGVuZGVuY2Ugb24gaW4tb2Jq
ZWN0IENsYXNzSW5mbyBwb2ludGVycworICAgICAgICBpbiBKSVQgY29kZS4gTW9zdCBvZiB0aGUg
Y2hhbmdlcyBhcmUgdG8gY2hlY2sgdGhlIFN0cnVjdHVyZSwgd2hpY2ggaXMgdW5pcXVlIGZvciAK
KyAgICAgICAgSlNTdHJpbmcgcHJpbWl0aXZlcy4KKworICAgICAgICAqIGJ5dGVjb2RlL1NwZWN1
bGF0ZWRUeXBlLmNwcDoKKyAgICAgICAgKEpTQzo6c3BlY3VsYXRpb25Gcm9tQ2xhc3NJbmZvKToK
KyAgICAgICAgKEpTQzo6c3BlY3VsYXRpb25Gcm9tU3RydWN0dXJlKTogQ2hhbmdlZCB0byBjaGVj
ayB0aGUgVHlwZUluZm8gaW4gdGhlIFN0cnVjdHVyZQorICAgICAgICBzaW5jZSB0aGVyZSB3YXNu
J3QgYSBKU0dsb2JhbERhdGEgaW1tZWRpYXRlbHkgYXZhaWxhYmxlIHRvIGdyYWIgdGhlIEpTU3Ry
aW5nIAorICAgICAgICBTdHJ1Y3R1cmUgb3V0IG9mLgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVH
ZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVK
SVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUp
OgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogaml0L0pJVElubGluZU1l
dGhvZHMuaDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TG9hZENoYXJhY3RlclN0cmluZyk6Cisg
ICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVD
b21waWxlQ1RJTWFjaGluZVRyYW1wb2xpbmVzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X3RvX3ByaW1pdGl2ZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jb252ZXJ0X3RoaXMp
OgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6
OnByaXZhdGVDb21waWxlQ1RJTWFjaGluZVRyYW1wb2xpbmVzKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3RvX3ByaW1pdGl2ZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bf
ZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX25lcSk6CisgICAgICAgIChKU0M6
OkpJVDo6Y29tcGlsZU9wU3RyaWN0RXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY29u
dmVydF90aGlzKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAg
ICAoSlNDOjpKSVQ6OnN0cmluZ0dldEJ5VmFsU3R1YkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X3ZhbCk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5
QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnN0cmluZ0dldEJ5VmFsU3R1Ykdl
bmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X3ZhbCk6Cisg
ICAgICAgICogaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaDoKKyAgICAgICAgKEpTQzo6U3BlY2lh
bGl6ZWRUaHVua0pJVDo6bG9hZEpTU3RyaW5nQXJndW1lbnQpOgorICAgICAgICAqIGppdC9UaHVu
a0dlbmVyYXRvcnMuY3BwOgorICAgICAgICAoSlNDOjpzdHJpbmdDaGFyTG9hZCk6CisgICAgICAg
IChKU0M6OmNoYXJDb2RlQXRUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OmNoYXJBdFRo
dW5rR2VuZXJhdG9yKToKKwogMjAxMi0wOC0wMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUu
Y29tPgogCiAgICAgICAgIERGRyBzaG91bGQgZGlzdGluZ3Vpc2ggYmV0d2VlbiBQdXRCeVZhbCdz
IHRoYXQgY2xvYmJlciB0aGUgd29ybGQgYW5kIG9uZXMgdGhhdCBkb24ndApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCShyZXZp
c2lvbiAxMjQzNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRl
ZFR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjYsOSArMjI2LDYgQEAgU3BlY3VsYXRlZFR5
cGUgc3BlY3VsYXRpb25Gcm9tQ2xhc3NJbmZvKAogICAgIGlmIChjbGFzc0luZm8gPT0gJkpTQXJy
YXk6OnNfaW5mbykKICAgICAgICAgcmV0dXJuIFNwZWNBcnJheTsKICAgICAKLSAgICBpZiAoY2xh
c3NJbmZvID09ICZKU1N0cmluZzo6c19pbmZvKQotICAgICAgICByZXR1cm4gU3BlY1N0cmluZzsK
LSAgICAKICAgICBpZiAoY2xhc3NJbmZvID09ICZBcmd1bWVudHM6OnNfaW5mbykKICAgICAgICAg
cmV0dXJuIFNwZWNBcmd1bWVudHM7IC8vIENhbm5vdCBkaXN0aW5ndWlzaCBiZXR3ZWVuIE15QXJn
dW1lbnRzIGFuZCBGb3JlaWduQXJndW1lbnRzIGF0IHRoaXMgc3RhZ2UuIFRoYXQgaGFwcGVucyBp
biB0aGUgZmxvdyBhbmFseXNpcy4KICAgICAKQEAgLTI2OSw2ICsyNjYsOCBAQCBTcGVjdWxhdGVk
VHlwZSBzcGVjdWxhdGlvbkZyb21DbGFzc0luZm8oCiAKIFNwZWN1bGF0ZWRUeXBlIHNwZWN1bGF0
aW9uRnJvbVN0cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKKyAgICBpZiAoc3RydWN0
dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBTdHJpbmdUeXBlKQorICAgICAgICByZXR1cm4gU3Bl
Y1N0cmluZzsKICAgICByZXR1cm4gc3BlY3VsYXRpb25Gcm9tQ2xhc3NJbmZvKHN0cnVjdHVyZS0+
Y2xhc3NJbmZvKCkpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDEyNDM3MikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI5OTAsNyArMjk5MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAgIG1faml0Lm1vdmUob3AxUGF5bG9hZEdQUiwgcmVz
dWx0UGF5bG9hZEdQUik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcCBhbHJlYWR5UHJpbWl0aXZlID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsLCBvcDFUYWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7
Ci0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub3RQcmltaXRpdmUgPSBtX2ppdC5i
cmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhvcDFQYXlsb2FkR1BSLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW1QdHIoJkpTU3RyaW5nOjpzX2luZm8pKTsKKyAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpKdW1wIG5vdFByaW1pdGl2ZSA9IG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMVBheWxvYWRHUFIsIEpT
Q2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0ciht
X2ppdC5nbG9iYWxEYXRhKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgICAgICAgICAg
CiAgICAgICAgICAgICBhbHJlYWR5UHJpbWl0aXZlLmxpbmsoJm1faml0KTsKICAgICAgICAgICAg
IG1faml0Lm1vdmUob3AxVGFnR1BSLCByZXN1bHRUYWdHUFIpOwpAQCAtMzE3NCw3ICszMTc0LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAgICAg
R1BSUmVnIHRoaXNWYWx1ZUdQUiA9IHRoaXNWYWx1ZS5ncHIoKTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgaWYgKCFpc09iamVjdFNwZWN1bGF0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNo
aWxkMSgpKS5tX3R5cGUpKQotICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlw
ZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwodGhpc1ZhbHVlR1BSKSwgbm9kZS5jaGlsZDEo
KSwgbV9qaXQuYnJhbmNoUHRyKEpJVENvbXBpbGVyOjpFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJl
c3ModGhpc1ZhbHVlR1BSLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgSklUQ29tcGlsZXI6
OlRydXN0ZWRJbW1QdHIoJkpTU3RyaW5nOjpzX2luZm8pKSk7CisgICAgICAgICAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbCh0aGlzVmFs
dWVHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoSklUQ29tcGlsZXI6OkVxdWFs
LCBKSVRDb21waWxlcjo6QWRkcmVzcyh0aGlzVmFsdWVHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zm
c2V0KCkpLCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnN0
cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgR1BSVGVt
cG9yYXJ5IHJlc3VsdCh0aGlzLCB0aGlzVmFsdWUpOwogICAgICAgICAgICAgR1BSUmVnIHJlc3Vs
dEdQUiA9IHJlc3VsdC5ncHIoKTsKQEAgLTM0MTgsNyArMzQxOCw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJl
c3VsdC5ncHIoKTsKICAgICAgICAgCiAgICAgICAgIGlmICghaXNTdHJpbmdTcGVjdWxhdGlvbiht
X3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZUdQUiks
IG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWws
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0
KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNTdHJpbmc6OnNfaW5mbykpKTsK
KyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5i
b3hlZENlbGwoYmFzZUdQUiksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fz
c2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2Vs
bDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2pp
dC5nbG9iYWxEYXRhKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKICAgICAgICAgCiAgICAg
ICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU1N0cmlu
Zzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHJlc3VsdEdQUik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTI0
MzcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzA0Myw3ICszMDQzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAgICAgbV9qaXQubW92ZShvcDFHUFIsIHJl
c3VsdEdQUik7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1
bXAgYWxyZWFkeVByaW1pdGl2ZSA9IG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6
Ok5vblplcm8sIG9wMUdQUiwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKLSAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdFByaW1pdGl2ZSA9IG1faml0LmJyYW5jaFB0cihNYWNy
b0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlND
ZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZK
U1N0cmluZzo6c19pbmZvKSk7CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub3RQ
cmltaXRpdmUgPSBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnN0cmluZ1N0
cnVjdHVyZS5nZXQoKSkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBhbHJlYWR5UHJpbWl0
aXZlLmxpbmsoJm1faml0KTsKICAgICAgICAgICAgIG1faml0Lm1vdmUob3AxR1BSLCByZXN1bHRH
UFIpOwpAQCAtMzIwOCw3ICszMjA4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlJiBub2RlKQogICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKCFpc09iamVjdFNwZWN1bGF0aW9uKG1fc3Rh
dGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQotICAgICAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3ModGhpc1ZhbHVlR1BSKSwgbm9kZS5jaGls
ZDEoKSwgbV9qaXQuYnJhbmNoUHRyKEpJVENvbXBpbGVyOjpFcXVhbCwgSklUQ29tcGlsZXI6OkFk
ZHJlc3ModGhpc1ZhbHVlR1BSLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgSklUQ29tcGls
ZXI6OlRydXN0ZWRJbW1QdHIoJkpTU3RyaW5nOjpzX2luZm8pKSk7CisgICAgICAgICAgICAgICAg
c3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyh0aGlzVmFsdWVHUFIpLCBub2Rl
LmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoSklUQ29tcGlsZXI6OkVxdWFsLCBKSVRDb21waWxl
cjo6QWRkcmVzcyh0aGlzVmFsdWVHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBKSVRD
b21waWxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnN0cmluZ1N0cnVjdHVy
ZS5nZXQoKSkpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9qaXQubW92ZSh0aGlzVmFs
dWVHUFIsIHJlc3VsdEdQUik7CiAgICAgICAgICAgICAKQEAgLTM0MzUsNyArMzQzNSw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgR1BSUmVnIHJl
c3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgCiAgICAgICAgIGlmICghaXNTdHJpbmdT
cGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAgICAg
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIG5v
ZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkp
LCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNTdHJpbmc6OnNfaW5mbykpKTsKKyAg
ICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiks
IG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWws
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0
KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnN0
cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKICAgICAgICAgCiAgICAgICAgIG1faml0LmxvYWQzMihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU1N0cmluZzo6b2Zmc2V0T2ZMZW5ndGgo
KSksIHJlc3VsdEdQUik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAxMjQzNzIpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjkw
Miw3ICsyOTAyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEluZGV4ZWRQcgog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9IGVsc2UgaWYgKGF0KG5vZGUuY2hp
bGQxKCkpLnByZWRpY3Rpb24oKSA9PSBTcGVjU3RyaW5nKSB7CiAgICAgICAgIGlmICghaXNTdHJp
bmdTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAg
ICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hl
ZENlbGwoYmFzZVJlZyksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6
Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNTdHJp
bmc6OnNfaW5mbykpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNW
YWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUuY2hpbGQxKCksIG1faml0LmJy
YW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KGJhc2VSZWcsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsK
IAogICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcs
IEpTU3RyaW5nOjpvZmZzZXRPZlZhbHVlKCkpLCBzdG9yYWdlUmVnKTsKICAgICAgICAgCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZU1ldGhvZHMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZU1ldGhvZHMuaAkocmV2aXNp
b24gMTI0MzcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVNZXRob2Rz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTg0LDcgKzg0LDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIEpJ
VDo6ZW1pdEdldEZyb21DYWxsRgogCiBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjplbWl0TG9hZENo
YXJhY3RlclN0cmluZyhSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QsIEp1bXBMaXN0JiBm
YWlsdXJlcykKIHsKLSAgICBmYWlsdXJlcy5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRy
ZXNzKHNyYywgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoJkpTU3Ry
aW5nOjpzX2luZm8pKSk7CisgICAgZmFpbHVyZXMuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwg
QWRkcmVzcyhzcmMsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKG1f
Z2xvYmFsRGF0YS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOwogICAgIGZhaWx1cmVzLmFwcGVu
ZChicmFuY2gzMihOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3JjLCBUaHVua0hl
bHBlcnM6OmpzU3RyaW5nTGVuZ3RoT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoMSkpKTsKICAgICBs
b2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNyYywgVGh1bmtIZWxwZXJzOjpqc1N0cmlu
Z1ZhbHVlT2Zmc2V0KCkpLCBkc3QpOwogICAgIGZhaWx1cmVzLmFwcGVuZChicmFuY2hUZXN0MzIo
WmVybywgZHN0KSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMz
Ml82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzMzJfNjQuY3BwCShyZXZpc2lvbiAxMjQzNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAg
UGFzc1JlZlB0cjxFeGVjdXRhYmxlTWVtb3J5SGFuZGxlPiBKSVQ6OgogICAgIC8vIHJlZ1QwIGhv
bGRzIHBheWxvYWQsIHJlZ1QxIGhvbGRzIHRhZwogCiAgICAgSnVtcCBzdHJpbmdfZmFpbHVyZUNh
c2VzMSA9IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNl
bGxUYWcpKTsKLSAgICBKdW1wIHN0cmluZ19mYWlsdXJlQ2FzZXMyID0gYnJhbmNoUHRyKE5vdEVx
dWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1c3RlZElt
bVB0cigmSlNTdHJpbmc6OnNfaW5mbykpOworICAgIEp1bXAgc3RyaW5nX2ZhaWx1cmVDYXNlczIg
PSBicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zm
c2V0KCkpLCBUcnVzdGVkSW1tUHRyKGdsb2JhbERhdGEtPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkp
OwogCiAgICAgLy8gQ2hlY2tzIG91dCBva2F5ISAtIGdldCB0aGUgbGVuZ3RoIGZyb20gdGhlIFVz
dHJpbmcuCiAgICAgbG9hZDMyKEFkZHJlc3MocmVnVDAsIE9CSkVDVF9PRkZTRVRPRihKU1N0cmlu
ZywgbV9sZW5ndGgpKSwgcmVnVDIpOwpAQCAtNzMyLDcgKzczMiw3IEBAIHZvaWQgSklUOjplbWl0
X29wX3RvX3ByaW1pdGl2ZShJbnN0cnVjdGkKICAgICBlbWl0TG9hZChzcmMsIHJlZ1QxLCByZWdU
MCk7CiAKICAgICBKdW1wIGlzSW1tID0gYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVk
SW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RF
cXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJ
bW1QdHIoJkpTU3RyaW5nOjpzX2luZm8pKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5v
dEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3Rl
ZEltbVB0cihtX2dsb2JhbERhdGEtPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKICAgICBpc0lt
bS5saW5rKHRoaXMpOwogCiAgICAgaWYgKGRzdCAhPSBzcmMpCkBAIC0xMDA4LDggKzEwMDgsOCBA
QCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZXEoSW5zdHJ1Y3Rpb24qIGN1CiAgICAgZ2VuZXJpY0Nh
c2UuYXBwZW5kKGdldFNsb3dDYXNlKGl0ZXIpKTsgLy8gdGFncyBub3QgZXF1YWwKIAogICAgIGxp
bmtTbG93Q2FzZShpdGVyKTsgLy8gdGFncyBlcXVhbCBhbmQgSlNDZWxsCi0gICAgZ2VuZXJpY0Nh
c2UuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpjbGFz
c0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoJkpTU3RyaW5nOjpzX2luZm8pKSk7Ci0gICAg
Z2VuZXJpY0Nhc2UuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMiwgSlND
ZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoJkpTU3RyaW5nOjpzX2luZm8p
KSk7CisgICAgZ2VuZXJpY0Nhc2UuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhy
ZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIobV9nbG9iYWxE
YXRhLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgZ2VuZXJpY0Nhc2UuYXBwZW5kKGJy
YW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQo
KSksIFRydXN0ZWRJbW1QdHIobV9nbG9iYWxEYXRhLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7
CiAKICAgICAvLyBTdHJpbmcgY2FzZS4KICAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbEVxU3RyaW5n
cyh0aGlzLCBjdGlfb3BfZXFfc3RyaW5ncyk7CkBAIC0xMDU2LDggKzEwNTYsOCBAQCB2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfbmVxKEluc3RydWN0aW9uKiBjCiAgICAgZ2VuZXJpY0Nhc2UuYXBwZW5k
KGdldFNsb3dDYXNlKGl0ZXIpKTsgLy8gdGFncyBub3QgZXF1YWwKIAogICAgIGxpbmtTbG93Q2Fz
ZShpdGVyKTsgLy8gdGFncyBlcXVhbCBhbmQgSlNDZWxsCi0gICAgZ2VuZXJpY0Nhc2UuYXBwZW5k
KGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpjbGFzc0luZm9PZmZz
ZXQoKSksIFRydXN0ZWRJbW1QdHIoJkpTU3RyaW5nOjpzX2luZm8pKSk7Ci0gICAgZ2VuZXJpY0Nh
c2UuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpjbGFz
c0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoJkpTU3RyaW5nOjpzX2luZm8pKSk7CisgICAg
Z2VuZXJpY0Nhc2UuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlND
ZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIobV9nbG9iYWxEYXRhLT5zdHJp
bmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgZ2VuZXJpY0Nhc2UuYXBwZW5kKGJyYW5jaFB0cihO
b3RFcXVhbCwgQWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0
ZWRJbW1QdHIobV9nbG9iYWxEYXRhLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CiAKICAgICAv
LyBTdHJpbmcgY2FzZS4KICAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbEVxU3RyaW5ncyh0aGlzLCBj
dGlfb3BfZXFfc3RyaW5ncyk7CkBAIC0xMDkzLDggKzEwOTMsOCBAQCB2b2lkIEpJVDo6Y29tcGls
ZU9wU3RyaWN0RXEoSW5zdHJ1Y3Rpb24qCiAKICAgICAvLyBKdW1wIHRvIGEgc2xvdyBjYXNlIGlm
IGJvdGggYXJlIHN0cmluZ3MuCiAgICAgSnVtcCBub3RDZWxsID0gYnJhbmNoMzIoTm90RXF1YWws
IHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwotICAgIEp1bXAgZmlyc3RO
b3RTdHJpbmcgPSBicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6Y2xh
c3NJbmZvT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKCZKU1N0cmluZzo6c19pbmZvKSk7Ci0gICAg
YWRkU2xvd0Nhc2UoYnJhbmNoUHRyKEVxdWFsLCBBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OmNsYXNz
SW5mb09mZnNldCgpKSwgVHJ1c3RlZEltbVB0cigmSlNTdHJpbmc6OnNfaW5mbykpKTsKKyAgICBK
dW1wIGZpcnN0Tm90U3RyaW5nID0gYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBK
U0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihtX2dsb2JhbERhdGEtPnN0
cmluZ1N0cnVjdHVyZS5nZXQoKSkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihFcXVhbCwg
QWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIo
bV9nbG9iYWxEYXRhLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CiAgICAgbm90Q2VsbC5saW5r
KHRoaXMpOwogICAgIGZpcnN0Tm90U3RyaW5nLmxpbmsodGhpcyk7CiAKQEAgLTE1NTYsNyArMTU1
Niw3IEBAIHZvaWQgSklUOjplbWl0X29wX2NvbnZlcnRfdGhpcyhJbnN0cnVjdGkKICAgICAgICAg
bW92ZShyZWdUMywgcmVnVDEpOwogICAgICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKCk7CiAg
ICAgfQotICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihFcXVhbCwgQWRkcmVzcyhyZWdUMiwgSlND
ZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoJkpTU3RyaW5nOjpzX2luZm8p
KSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKEVxdWFsLCBBZGRyZXNzKHJlZ1QyLCBKU0Nl
bGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihtX2dsb2JhbERhdGEtPnN0cmlu
Z1N0cnVjdHVyZS5nZXQoKSkpKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NvbnZlcnRf
dGhpcyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJiBpdGVyKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGNvZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMuY3BwCShyZXZpc2lvbiAxMjQzNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wY29kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIFBhc3NSZWZQ
dHI8RXhlY3V0YWJsZU1lbW9yeUhhbmRsZT4gSklUOjoKIAogICAgIC8vIENoZWNrIGVheCBpcyBh
IHN0cmluZwogICAgIEp1bXAgc3RyaW5nX2ZhaWx1cmVDYXNlczEgPSBlbWl0SnVtcElmTm90SlND
ZWxsKHJlZ1QwKTsKLSAgICBKdW1wIHN0cmluZ19mYWlsdXJlQ2FzZXMyID0gYnJhbmNoUHRyKE5v
dEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1c3Rl
ZEltbVB0cigmSlNTdHJpbmc6OnNfaW5mbykpOworICAgIEp1bXAgc3RyaW5nX2ZhaWx1cmVDYXNl
czIgPSBicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJl
T2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKGdsb2JhbERhdGEtPnN0cmluZ1N0cnVjdHVyZS5nZXQo
KSkpOwogCiAgICAgLy8gQ2hlY2tzIG91dCBva2F5ISAtIGdldCB0aGUgbGVuZ3RoIGZyb20gdGhl
IFVzdHJpbmcuCiAgICAgbG9hZDMyKEFkZHJlc3MocmVnVDAsIE9CSkVDVF9PRkZTRVRPRihKU1N0
cmluZywgbV9sZW5ndGgpKSwgcmVnVDApOwpAQCAtNjQ3LDcgKzY0Nyw3IEBAIHZvaWQgSklUOjpl
bWl0X29wX3RvX3ByaW1pdGl2ZShJbnN0cnVjdGkKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
KHNyYywgcmVnVDApOwogICAgIAogICAgIEp1bXAgaXNJbW0gPSBlbWl0SnVtcElmTm90SlNDZWxs
KHJlZ1QwKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVn
VDAsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKCZKU1N0cmluZzo6
c19pbmZvKSkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhy
ZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIobV9nbG9iYWxE
YXRhLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CiAgICAgaXNJbW0ubGluayh0aGlzKTsKIAog
ICAgIGlmIChkc3QgIT0gc3JjKQpAQCAtMTI2MCw3ICsxMjYwLDcgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfY29udmVydF90aGlzKEluc3RydWN0aQogICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDEs
IEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMCk7CiAgICAgICAgIGVtaXRWYWx1ZVBy
b2ZpbGluZ1NpdGUoKTsKICAgICB9Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKEVxdWFsLCBB
ZGRyZXNzKHJlZ1QxLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1c3RlZEltbVB0cigm
SlNTdHJpbmc6OnNfaW5mbykpKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hQdHIoRXF1YWwsIEFk
ZHJlc3MocmVnVDEsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKG1f
Z2xvYmFsRGF0YS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOwogfQogCiB2b2lkIEpJVDo6ZW1p
dF9vcF9jcmVhdGVfdGhpcyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJf
NjQuY3BwCShyZXZpc2lvbiAxMjQzNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjEsNyArMTYxLDcg
QEAgSklUOjpDb2RlUmVmIEpJVDo6c3RyaW5nR2V0QnlWYWxTdHViR2VuZQogewogICAgIEpTSW50
ZXJmYWNlSklUIGppdDsKICAgICBKdW1wTGlzdCBmYWlsdXJlczsKLSAgICBmYWlsdXJlcy5hcHBl
bmQoaml0LmJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpjbGFzc0lu
Zm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoJkpTU3RyaW5nOjpzX2luZm8pKSk7CisgICAgZmFp
bHVyZXMuYXBwZW5kKGppdC5icmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2Vs
bDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKGdsb2JhbERhdGEtPnN0cmluZ1N0
cnVjdHVyZS5nZXQoKSkpKTsKICAgICAKICAgICAvLyBMb2FkIHN0cmluZyBsZW5ndGggdG8gcmVn
VDEsIGFuZCBzdGFydCB0aGUgcHJvY2VzcyBvZiBsb2FkaW5nIHRoZSBkYXRhIHBvaW50ZXIgaW50
byByZWdUMAogICAgIGppdC5sb2FkMzIoQWRkcmVzcyhyZWdUMCwgVGh1bmtIZWxwZXJzOjpqc1N0
cmluZ0xlbmd0aE9mZnNldCgpKSwgcmVnVDEpOwpAQCAtMjM0LDcgKzIzNCw3IEBAIHZvaWQgSklU
OjplbWl0U2xvd19vcF9nZXRfYnlfdmFsKEluc3RydWMKIAogICAgIEp1bXAgbm9uQ2VsbCA9IGp1
bXAoKTsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIGJhc2UgYXJyYXkgY2hlY2sKLSAgICBK
dW1wIG5vdFN0cmluZyA9IGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxs
OjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoJkpTU3RyaW5nOjpzX2luZm8pKTsK
KyAgICBKdW1wIG5vdFN0cmluZyA9IGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwg
SlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIobV9nbG9iYWxEYXRhLT5z
dHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICBlbWl0TmFrZWRDYWxsKG1fZ2xvYmFsRGF0YS0+
Z2V0Q1RJU3R1YihzdHJpbmdHZXRCeVZhbFN0dWJHZW5lcmF0b3IpLmNvZGUoKSk7CiAgICAgSnVt
cCBmYWlsZWQgPSBicmFuY2hUZXN0UHRyKFplcm8sIHJlZ1QwKTsKICAgICBlbWl0U3RvcmUoZHN0
LCByZWdUMSwgcmVnVDApOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9w
ZXJ0eUFjY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHJldmlzaW9uIDEyNDM3MikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3
ICs1Niw3IEBAIEpJVDo6Q29kZVJlZiBKSVQ6OnN0cmluZ0dldEJ5VmFsU3R1YkdlbmUKIHsKICAg
ICBKU0ludGVyZmFjZUpJVCBqaXQ7CiAgICAgSnVtcExpc3QgZmFpbHVyZXM7Ci0gICAgZmFpbHVy
ZXMuYXBwZW5kKGppdC5icmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6
Y2xhc3NJbmZvT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKCZKU1N0cmluZzo6c19pbmZvKSkpOwor
ICAgIGZhaWx1cmVzLmFwcGVuZChqaXQuYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1Qw
LCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihnbG9iYWxEYXRhLT5z
dHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CiAKICAgICAvLyBMb2FkIHN0cmluZyBsZW5ndGggdG8g
cmVnVDIsIGFuZCBzdGFydCB0aGUgcHJvY2VzcyBvZiBsb2FkaW5nIHRoZSBkYXRhIHBvaW50ZXIg
aW50byByZWdUMAogICAgIGppdC5sb2FkMzIoQWRkcmVzcyhyZWdUMCwgVGh1bmtIZWxwZXJzOjpq
c1N0cmluZ0xlbmd0aE9mZnNldCgpKSwgcmVnVDIpOwpAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQg
SklUOjplbWl0U2xvd19vcF9nZXRfYnlfdmFsKEluc3RydWMKICAgICBsaW5rU2xvd0Nhc2VJZk5v
dEpTQ2VsbChpdGVyLCBiYXNlKTsgLy8gYmFzZSBjZWxsIGNoZWNrCiAgICAgSnVtcCBub25DZWxs
ID0ganVtcCgpOwogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gYmFzZSBhcnJheSBjaGVjawot
ICAgIEp1bXAgbm90U3RyaW5nID0gYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBK
U0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1c3RlZEltbVB0cigmSlNTdHJpbmc6OnNfaW5m
bykpOworICAgIEp1bXAgbm90U3RyaW5nID0gYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJl
Z1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihtX2dsb2JhbERh
dGEtPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgIGVtaXROYWtlZENhbGwoQ29kZUxvY2F0
aW9uTGFiZWwobV9nbG9iYWxEYXRhLT5nZXRDVElTdHViKHN0cmluZ0dldEJ5VmFsU3R1YkdlbmVy
YXRvcikuY29kZSgpKSk7CiAgICAgSnVtcCBmYWlsZWQgPSBicmFuY2hUZXN0UHRyKFplcm8sIHJl
Z1QwKTsKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmVnVDApOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TcGVjaWFsaXplZFRodW5rSklULmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TcGVjaWFsaXplZFRodW5rSklULmgJKHJldmlz
aW9uIDEyNDM3MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRUaHVu
a0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSwxMCArNTUsMTAgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgICAgICBtX2ZhaWx1cmVzLmFwcGVuZChlbWl0TG9hZEpTQ2VsbChzcmMsIGRzdCkp
OwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICB2b2lkIGxvYWRKU1N0cmluZ0FyZ3VtZW50
KGludCBhcmd1bWVudCwgUmVnaXN0ZXJJRCBkc3QpCisgICAgICAgIHZvaWQgbG9hZEpTU3RyaW5n
QXJndW1lbnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBpbnQgYXJndW1lbnQsIFJlZ2lzdGVy
SUQgZHN0KQogICAgICAgICB7CiAgICAgICAgICAgICBsb2FkQ2VsbEFyZ3VtZW50KGFyZ3VtZW50
LCBkc3QpOwotICAgICAgICAgICAgbV9mYWlsdXJlcy5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFs
LCBBZGRyZXNzKGRzdCwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIo
JkpTU3RyaW5nOjpzX2luZm8pKSk7CisgICAgICAgICAgICBtX2ZhaWx1cmVzLmFwcGVuZChicmFu
Y2hQdHIoTm90RXF1YWwsIEFkZHJlc3MoZHN0LCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwg
VHJ1c3RlZEltbVB0cihnbG9iYWxEYXRhLnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKICAgICAg
ICAgfQogICAgICAgICAKICAgICAgICAgdm9pZCBsb2FkSW50MzJBcmd1bWVudChpbnQgYXJndW1l
bnQsIFJlZ2lzdGVySUQgZHN0LCBKdW1wJiBmYWlsVGFyZ2V0KQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAkocmV2aXNpb24gMTI0MzcyKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNSwxMCArMzUsMTAgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0YXRpYyB2
b2lkIHN0cmluZ0NoYXJMb2FkKFNwZWNpYWxpemVkVGh1bmtKSVQmIGppdCkKK3N0YXRpYyB2b2lk
IHN0cmluZ0NoYXJMb2FkKFNwZWNpYWxpemVkVGh1bmtKSVQmIGppdCwgSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhKQogewogICAgIC8vIGxvYWQgc3RyaW5nCi0gICAgaml0LmxvYWRKU1N0cmluZ0Fy
Z3VtZW50KFNwZWNpYWxpemVkVGh1bmtKSVQ6OlRoaXNBcmd1bWVudCwgU3BlY2lhbGl6ZWRUaHVu
a0pJVDo6cmVnVDApOworICAgIGppdC5sb2FkSlNTdHJpbmdBcmd1bWVudCgqZ2xvYmFsRGF0YSwg
U3BlY2lhbGl6ZWRUaHVua0pJVDo6VGhpc0FyZ3VtZW50LCBTcGVjaWFsaXplZFRodW5rSklUOjpy
ZWdUMCk7CiAKICAgICAvLyBMb2FkIHN0cmluZyBsZW5ndGggdG8gcmVnVDIsIGFuZCBzdGFydCB0
aGUgcHJvY2VzcyBvZiBsb2FkaW5nIHRoZSBkYXRhIHBvaW50ZXIgaW50byByZWdUMAogICAgIGpp
dC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVn
VDAsIFRodW5rSGVscGVyczo6anNTdHJpbmdMZW5ndGhPZmZzZXQoKSksIFNwZWNpYWxpemVkVGh1
bmtKSVQ6OnJlZ1QyKTsKQEAgLTc2LDcgKzc2LDcgQEAgc3RhdGljIHZvaWQgY2hhclRvU3RyaW5n
KFNwZWNpYWxpemVkVGh1bgogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNoYXJDb2RlQXRUaHVua0dl
bmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCiB7CiAgICAgU3BlY2lhbGl6ZWRUaHVu
a0pJVCBqaXQoMSk7Ci0gICAgc3RyaW5nQ2hhckxvYWQoaml0KTsKKyAgICBzdHJpbmdDaGFyTG9h
ZChqaXQsIGdsb2JhbERhdGEpOwogICAgIGppdC5yZXR1cm5JbnQzMihTcGVjaWFsaXplZFRodW5r
SklUOjpyZWdUMCk7CiAgICAgcmV0dXJuIGppdC5maW5hbGl6ZSgqZ2xvYmFsRGF0YSwgZ2xvYmFs
RGF0YS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwoKSwgImNoYXJDb2RlQXQiKTsKIH0KQEAgLTg0
LDcgKzg0LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNoYXJDb2RlQXRUaHVua0dlbgogTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmIGNoYXJBdFRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSkKIHsKICAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCgxKTsKLSAgICBzdHJpbmdD
aGFyTG9hZChqaXQpOworICAgIHN0cmluZ0NoYXJMb2FkKGppdCwgZ2xvYmFsRGF0YSk7CiAgICAg
Y2hhclRvU3RyaW5nKGppdCwgZ2xvYmFsRGF0YSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDAs
IFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMSk7
CiAgICAgaml0LnJldHVybkpTQ2VsbChTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCk7CiAgICAg
cmV0dXJuIGppdC5maW5hbGl6ZSgqZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS0+aml0U3R1YnMtPmN0
aU5hdGl2ZUNhbGwoKSwgImNoYXJBdCIpOwo=
</data>
<flag name="review"
          id="165539"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>