<?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>87086</bug_id>
          
          <creation_ts>2012-05-21 23:29:54 -0700</creation_ts>
          <short_desc>PAGE_POPUP: window.setValueAndClosePopup should be moved to a per-context property of DOMWindow.</short_desc>
          <delta_ts>2012-05-24 23:51:02 -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>WebCore JavaScript</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>
          <dependson>86555</dependson>
    
    <dependson>87185</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kent Tamura">tkent</reporter>
          <assigned_to name="Kent Tamura">tkent</assigned_to>
          <cc>abarth</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>morrita</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>629976</commentid>
    <comment_count>0</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-05-21 23:29:54 -0700</bug_when>
    <thetext>[V8] PAGE_POPUP: window.setValueAndClosePopup should be a per-context function</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>630142</commentid>
    <comment_count>1</comment_count>
      <attachid>143245</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-05-22 02:52:11 -0700</bug_when>
    <thetext>Created attachment 143245
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>630145</commentid>
    <comment_count>2</comment_count>
      <attachid>143246</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-05-22 02:55:31 -0700</bug_when>
    <thetext>Created attachment 143246
WIP 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631145</commentid>
    <comment_count>3</comment_count>
      <attachid>143246</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-05-22 21:01:50 -0700</bug_when>
    <thetext>Comment on attachment 143246
WIP 2

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

Maybe we could define window.popupController attribute instead of function.
Then popup window can turn to be a supplemental module.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:368
&gt; +        if ($attrExt-&gt;{&quot;V8EnablePerContext&quot;}) {

EnableAtRuntime and EnablePerContext should be mutually exclusive. So else if would be preferred.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631242</commentid>
    <comment_count>4</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-05-22 22:58:05 -0700</bug_when>
    <thetext>&gt; Maybe we could define window.popupController attribute instead of function.
&gt; Then popup window can turn to be a supplemental module.

It make sense.  It&apos;s extensible and I don&apos;t need to touch a Perl code though we need to add one more C++ class and IDL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631294</commentid>
    <comment_count>5</comment_count>
      <attachid>143479</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-05-22 23:57:33 -0700</bug_when>
    <thetext>Created attachment 143479
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631798</commentid>
    <comment_count>6</comment_count>
      <attachid>143479</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-23 10:50:58 -0700</bug_when>
    <thetext>Comment on attachment 143479
Patch

Should we add a test that pagePopupController doesn&apos;t appear on the default Window object by mistake?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632227</commentid>
    <comment_count>7</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-05-23 17:13:46 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 143479 [details])
&gt; Should we add a test that pagePopupController doesn&apos;t appear on the default Window object by mistake?
That sounds nice. Just having a test which checks pagePopController 
will be sufficient.
If we have a way to enable it from testing API, it would be greater.
But that is another story.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633577</commentid>
    <comment_count>8</comment_count>
      <attachid>143980</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-05-24 22:43:06 -0700</bug_when>
    <thetext>Created attachment 143980
Patch for landing

Add a simple test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633616</commentid>
    <comment_count>9</comment_count>
      <attachid>143980</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-24 23:50:55 -0700</bug_when>
    <thetext>Comment on attachment 143980
Patch for landing

Clearing flags on attachment: 143980

Committed r118482: &lt;http://trac.webkit.org/changeset/118482&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633617</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-24 23:51:02 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143245</attachid>
            <date>2012-05-22 02:52:11 -0700</date>
            <delta_ts>2012-05-22 02:55:25 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-87086-20120522185209.patch</filename>
            <type>text/plain</type>
            <size>22475</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3ODk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmIzZjFjODQwOTZmMjhk
ZGUwZWU1NGRhZjk4ZTNiMjliZDczYmI2Yy4uNDc1N2YxNjU5N2YzOTJmNmNhYTc2MGVmYTQ1Zjdk
MTg1MmQ2Y2U0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTA1LTIyICBLZW50
IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIFBBR0VfUE9QVVA6
IHdpbmRvdy5zZXRWYWx1ZUFuZENsb3NlUG9wdXAgc2hvdWxkIGJlIGEgcGVyLWNvbnRleHQgZnVu
Y3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3
MDg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8g
bmV3IHRlc3RzLiAoT09QUyEpCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICog
YmluZGluZ3MvZ2VuZXJpYy9Db250ZXh0RW5hYmxlZEZlYXR1cmVzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dEVuYWJsZWRGZWF0dXJlczo6cGFnZVBv
cHVwRW5hYmxlZCk6CisgICAgICAgICogYmluZGluZ3MvZ2VuZXJpYy9Db250ZXh0RW5hYmxlZEZl
YXR1cmVzLmg6CisgICAgICAgIChDb250ZXh0RW5hYmxlZEZlYXR1cmVzKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAgKEdlbmVyYXRlSGVh
ZGVyKToKKyAgICAgICAgKElzTm9ybWFsRnVuY3Rpb24pOgorICAgICAgICAoR2VuZXJhdGVBYm5v
cm1hbEZ1bmN0aW9uKToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbDoKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRD
b250cm9sbGVyLmg6CisgICAgICAgIChTY3JpcHRDb250cm9sbGVyKToKKyAgICAgICAgKiBsb2Fk
ZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKEZyYW1lTG9hZGVyQ2xpZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50OjphbGxvd1BhZ2VQb3B1cCk6CisKIDIw
MTItMDUtMjEgIEhhamltZSBNb3JyaXRhICA8bW9ycml0YUBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgW1Y4XSBTaGFkb3cgRE9NIHNob3VsZCBiZSBwZXItd2luZG93LWNvbmZpZ3VyYWJsZS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMWVhYmE0MDRkYjk5YTA0OTgwM2NkZDVlNWQ4OWUw
ZTJhOGNmN2NkZS4uODNmODczYTA4Mjk4M2YyN2UzZjc5ZWQ0YjY3ZGZjMjEwZWI5OTgzMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wNS0yMiAgS2Vu
dCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1Y4XSBQQUdFX1BPUFVQ
OiB3aW5kb3cuc2V0VmFsdWVBbmRDbG9zZVBvcHVwIHNob3VsZCBiZSBhIHBlci1jb250ZXh0IGZ1
bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
NzA4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
c3JjL1dlYlBhZ2VQb3B1cEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVBvcHVwSW1wbDo6aW5pdFBhZ2UpOgorCiAyMDEyLTA1LTIxICBKYW1lcyBS
b2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ2hyb21pdW0gY29tcGls
ZSBmaXgsIHVucmV2aWV3ZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggYTE0ZDFmMTVlMDc5YjZjOGMz
MWQ3YTJhODc5NjUyOTYyN2FlMTdmZC4uYTQ0MmI4YzdlZGE5NDZjMGMzMzU3NzQ3NmEyZTBkYTdj
NjI4NWZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMTE0Myw2ICsxMTQzLDcgQEAKICAgICAgICAg
ICAgICdwYWdlL0NyeXB0by5pZGwnLAogICAgICAgICAgICAgJ3BhZ2UvRE9NU2VsZWN0aW9uLmlk
bCcsCiAgICAgICAgICAgICAncGFnZS9ET01XaW5kb3cuaWRsJywKKyAgICAgICAgICAgICdwYWdl
L0RPTVdpbmRvd1BhZ2VQb3B1cC5pZGwnLAogICAgICAgICAgICAgJ3BhZ2UvRXZlbnRTb3VyY2Uu
aWRsJywKICAgICAgICAgICAgICdwYWdlL0hpc3RvcnkuaWRsJywKICAgICAgICAgICAgICdwYWdl
L0xvY2F0aW9uLmlkbCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5l
cmljL0NvbnRleHRFbmFibGVkRmVhdHVyZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
Z2VuZXJpYy9Db250ZXh0RW5hYmxlZEZlYXR1cmVzLmNwcAppbmRleCA3MTc0YzhlNTE2NWIwNjMw
MjBlMWQ0OTY4ZDZmOGUxZmQ0MThhM2M3Li40ZTA5MDA3NDJkZmYyZTE1NmRhODhjOTUwOTdlZTJk
MjA3OTg2NDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL0Nv
bnRleHRFbmFibGVkRmVhdHVyZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dl
bmVyaWMvQ29udGV4dEVuYWJsZWRGZWF0dXJlcy5jcHAKQEAgLTUwLDQgKzUwLDE1IEBAIGJvb2wg
Q29udGV4dEVuYWJsZWRGZWF0dXJlczo6c2hhZG93RE9NRW5hYmxlZChET01XaW5kb3cqIHdpbmRv
dykKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKFBBR0VfUE9QVVApCitib29sIENvbnRleHRFbmFi
bGVkRmVhdHVyZXM6OnBhZ2VQb3B1cEVuYWJsZWQoRE9NV2luZG93KiB3aW5kb3cpCit7CisgICAg
aWYgKCF3aW5kb3cpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoRnJhbWUqIGZyYW1l
ID0gd2luZG93LT5mcmFtZSgpKQorICAgICAgICByZXR1cm4gZnJhbWUtPmxvYWRlcigpLT5jbGll
bnQoKS0+cGFnZVBvcHVwQWxsb3dlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKyNlbmRpZgor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9nZW5lcmljL0NvbnRleHRFbmFibGVkRmVhdHVyZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2dlbmVyaWMvQ29udGV4dEVuYWJsZWRGZWF0dXJlcy5oCmluZGV4IDVhMjA0ZWVjZTQ5
MDZlM2IzYjY4OTU4MWNmZGMyMjFhZWYzZThlOGUuLjRjZWY3Njg3ZDhjMTdhZGM4YThmZjU3ZDU2
ODBhYzIyOTc5MDZmMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVy
aWMvQ29udGV4dEVuYWJsZWRGZWF0dXJlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2dlbmVyaWMvQ29udGV4dEVuYWJsZWRGZWF0dXJlcy5oCkBAIC00NCw2ICs0NCwxMCBAQCBwdWJs
aWM6CiAjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgc3RhdGljIGJvb2wgc2hhZG93RE9NRW5h
YmxlZChET01XaW5kb3cqKTsKICNlbmRpZgorCisjaWYgRU5BQkxFKFBBR0VfUE9QVVApCisgICAg
c3RhdGljIGJvb2wgcGFnZVBvcHVwRW5hYmxlZChET01XaW5kb3cqKTsKKyNlbmRpZgogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCBkMzFiMDQzNjEyMWM3OWM2ZmQwODQ1ZWUx
MzYxYjNlYzRiMzZjMzVhLi45ZDMzNjEyODM3OWU1MDBhOTc5NTJkMTg3YjZjM2IxMjQ5YzJiZTI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JWOC5wbQpAQCAtMzY1LDYgKzM2NSw5IEBAIEVORAogICAgICAgICBpZiAoJGF0dHJFeHQtPnsi
VjhFbmFibGVkQXRSdW50aW1lIn0pIHsKICAgICAgICAgICAgIHB1c2goQGVuYWJsZWRBdFJ1bnRp
bWUsICRmdW5jdGlvbik7CiAgICAgICAgIH0KKyAgICAgICAgaWYgKCRhdHRyRXh0LT57IlY4RW5h
YmxlUGVyQ29udGV4dCJ9KSB7CisgICAgICAgICAgICBwdXNoKEBlbmFibGVkUGVyQ29udGV4dCwg
JGZ1bmN0aW9uKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChJc0NvbnN0cnVjdGFibGUo
JGRhdGFOb2RlKSkgewpAQCAtMjMwOCw2ICsyMzExLDExNyBAQCBzdWIgSXNUeXBlZEFycmF5VHlw
ZQogICAgIHJldHVybiAwOwogfQogCitzdWIgSXNOb3JtYWxGdW5jdGlvbgoreworICAgIG15ICRk
YXRhTm9kZSA9IHNoaWZ0OworICAgIG15ICRmdW5jdGlvbiA9IHNoaWZ0OworICAgIG15ICRpbnRl
cmZhY2VOYW1lID0gJGRhdGFOb2RlLT5uYW1lOworICAgIG15ICRhdHRyRXh0ID0gJGZ1bmN0aW9u
LT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlczsKKyAgICByZXR1cm4gMCBpZiAkYXR0ckV4
dC0+eyJWOFVuZm9yZ2VhYmxlIn07CisgICAgcmV0dXJuIDAgaWYgJGZ1bmN0aW9uLT5pc1N0YXRp
YzsKKyAgICByZXR1cm4gMCBpZiAoJGF0dHJFeHQtPnsiVjhFbmFibGVkQXRSdW50aW1lIn0gfHwg
JGF0dHJFeHQtPnsiVjhFbmFibGVkUGVyQ29udGV4dCJ9IHx8IFJlcXVpcmVzQ3VzdG9tU2lnbmF0
dXJlKCRmdW5jdGlvbikgfHwgJGF0dHJFeHQtPnsiVjhEb05vdENoZWNrU2lnbmF0dXJlIn0pOwor
ICAgIHJldHVybiAwIGlmICgkYXR0ckV4dC0+eyJEb05vdENoZWNrU2VjdXJpdHkifSAmJiAoJGRh
dGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2hlY2tTZWN1cml0eSJ9IHx8ICRpbnRlcmZh
Y2VOYW1lIGVxICJET01XaW5kb3ciKSk7CisgICAgcmV0dXJuIDAgaWYgKCRhdHRyRXh0LT57Ik5v
dEVudW1lcmFibGUifSB8fCAkYXR0ckV4dC0+eyJWOFJlYWRPbmx5In0pOworICAgIHJldHVybiAx
OworfQorCitzdWIgR2VuZXJhdGVBYm5vcm1hbEZ1bmN0aW9uCit7CisgICAgbXkgJGRhdGFOb2Rl
ID0gc2hpZnQ7CisgICAgbXkgJGZ1bmN0aW9uID0gc2hpZnQ7CisgICAgbXkgJGludGVyZmFjZU5h
bWUgPSAkZGF0YU5vZGUtPm5hbWU7CisgICAgbXkgJGF0dHJFeHQgPSAkZnVuY3Rpb24tPnNpZ25h
dHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzOworICAgIG15ICRuYW1lID0gJGZ1bmN0aW9uLT5zaWdu
YXR1cmUtPm5hbWU7CisKKyAgICBteSAkcHJvcGVydHlfYXR0cmlidXRlcyA9ICJ2ODo6RG9udERl
bGV0ZSI7CisgICAgaWYgKCRhdHRyRXh0LT57Ik5vdEVudW1lcmFibGUifSkgeworICAgICAgICAk
cHJvcGVydHlfYXR0cmlidXRlcyAuPSAiIHwgdjg6OkRvbnRFbnVtIjsKKyAgICB9CisgICAgaWYg
KCRhdHRyRXh0LT57IlY4UmVhZE9ubHkifSkgeworICAgICAgICAkcHJvcGVydHlfYXR0cmlidXRl
cyAuPSAiIHwgdjg6OlJlYWRPbmx5IjsKKyAgICB9CisKKyAgICBteSAkY29tbWVudEluZm8gPSAi
RnVuY3Rpb24gJyRuYW1lJyAoRXh0QXR0cjogJyIgLiBqb2luKCcgJywga2V5cygleyRhdHRyRXh0
fSkpIC4gIicpIjsKKworICAgIG15ICR0ZW1wbGF0ZSA9ICJwcm90byI7CisgICAgaWYgKCRhdHRy
RXh0LT57IlY4VW5mb3JnZWFibGUifSkgeworICAgICAgICAkdGVtcGxhdGUgPSAiaW5zdGFuY2Ui
OworICAgIH0KKyAgICBpZiAoJGZ1bmN0aW9uLT5pc1N0YXRpYykgeworICAgICAgICAkdGVtcGxh
dGUgPSAiZGVzYyI7CisgICAgfQorCisgICAgbXkgJGNvbmRpdGlvbmFsID0gIiI7CisgICAgbXkg
JG5lZWRGdW5jdGlvbiA9IDA7CisgICAgaWYgKCRhdHRyRXh0LT57IlY4RW5hYmxlZEF0UnVudGlt
ZSJ9KSB7CisgICAgICAgICMgT25seSBjYWxsIFNldCgpL1NldEFjY2Vzc29yKCkgaWYgdGhpcyBt
ZXRob2Qgc2hvdWxkIGJlIGVuYWJsZWQKKyAgICAgICAgbXkgJGVuYWJsZV9mdW5jdGlvbiA9IEdl
dFJ1bnRpbWVFbmFibGVGdW5jdGlvbk5hbWUoJGZ1bmN0aW9uLT5zaWduYXR1cmUpOworICAgICAg
ICAkY29uZGl0aW9uYWwgPSAiaWYgKCR7ZW5hYmxlX2Z1bmN0aW9ufSgpKVxuICAgICAgICAiOwor
ICAgIH0gZWxzaWYgKCRhdHRyRXh0LT57IlY4RW5hYmxlZFBlckNvbnRleHQifSkgeworICAgICAg
ICBteSAkZW5hYmxlX2Z1bmN0aW9uID0gR2V0Q29udGV4dEVuYWJsZUZ1bmN0aW9uKCRmdW5jdGlv
bi0+c2lnbmF0dXJlKTsKKyAgICAgICAgJGNvbmRpdGlvbmFsID0gImlmIChDb250ZXh0RW5hYmxl
ZEZlYXR1cmVzOjoke2VuYWJsZV9mdW5jdGlvbn0oaW1wbCkpXG4gICAgICAgICI7CisgICAgICAg
ICRuZWVkRnVuY3Rpb24gPSAxOworICAgIH0KKworICAgIGlmICgkYXR0ckV4dC0+eyJEb05vdENo
ZWNrU2VjdXJpdHkifSAmJgorICAgICAgICAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiQ2hlY2tTZWN1cml0eSJ9IHx8ICRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSkgewor
ICAgICAgICAjIE1hcmsgdGhlIGFjY2Vzc29yIGFzIFJlYWRPbmx5IGFuZCBzZXQgaXQgb24gdGhl
IHByb3RvIG9iamVjdCBzbworICAgICAgICAjIGl0IGNhbiBiZSBzaGFkb3dlZC4gVGhpcyBpcyBy
ZWFsbHkgYSBoYWNrIHRvIG1ha2UgaXQgd29yay4KKyAgICAgICAgIyBUaGVyZSBhcmUgc2V2ZXJh
bCBzY2VuZXJpYSB0byBjYWxsIGludG8gdGhlIGFjY2Vzc29yOgorICAgICAgICAjICAgMSkgZnJv
bSB0aGUgc2FtZSBkb21haW46ICJ3aW5kb3cub3BlbiI6CisgICAgICAgICMgICAgICB0aGUgYWNj
ZXNzb3IgZmluZHMgdGhlIERPTSB3cmFwcGVyIGluIHRoZSBwcm90byBjaGFpbjsKKyAgICAgICAg
IyAgIDIpIGZyb20gdGhlIHNhbWUgZG9tYWluOiAid2luZG93Ll9fcHJvdG9fXy5vcGVuIjoKKyAg
ICAgICAgIyAgICAgIHRoZSBhY2Nlc3NvciB3aWxsIE5PVCBmaW5kIGEgRE9NIHdyYXBwZXIgaW4g
dGhlIHByb3RvdHlwZSBjaGFpbgorICAgICAgICAjICAgMykgZnJvbSBhbm90aGVyIGRvbWFpbjog
IndpbmRvdy5vcGVuIjoKKyAgICAgICAgIyAgICAgIHRoZSBhY2Nlc3MgZmluZCB0aGUgRE9NIHdy
YXBwZXIgaW4gdGhlIHByb3RvdHlwZSBjaGFpbgorICAgICAgICAjICAgIndpbmRvdy5fX3Byb3Rv
X18ub3BlbiIgZnJvbSBhbm90aGVyIGRvbWFpbiB3aWxsIGZhaWwgd2hlbgorICAgICAgICAjICAg
YWNjZXNzaW5nICdfX3Byb3RvX18nCisgICAgICAgICMKKyAgICAgICAgIyBUaGUgc29sdXRpb24g
aXMgdmVyeSBoYWNreSBhbmQgZnJhZ2lsZSwgaXQgcmVhbGx5IG5lZWRzIHRvIGJlIHJlcGxhY2Vk
CisgICAgICAgICMgYnkgYSBiZXR0ZXIgc29sdXRpb24uCisgICAgICAgICRwcm9wZXJ0eV9hdHRy
aWJ1dGVzIC49ICIgfCB2ODo6UmVhZE9ubHkiOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
PDxFTkQpOworCisgICAgLy8gJGNvbW1lbnRJbmZvCisgICAgJHtjb25kaXRpb25hbH0kdGVtcGxh
dGUtPlNldEFjY2Vzc29yKHY4OjpTdHJpbmc6Ok5ldygiJG5hbWUiKSwgJHtpbnRlcmZhY2VOYW1l
fVY4SW50ZXJuYWw6OiR7bmFtZX1BdHRyR2V0dGVyLCAwLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4o
KSwgdjg6OkFMTF9DQU5fUkVBRCwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPigk
cHJvcGVydHlfYXR0cmlidXRlcykpOworRU5ECisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBteSAkc2lnbmF0dXJlID0gImRlZmF1bHRTaWduYXR1cmUiOworICAgIGlmICgkYXR0ckV4dC0+
eyJWOERvTm90Q2hlY2tTaWduYXR1cmUifSB8fCAkZnVuY3Rpb24tPmlzU3RhdGljKSB7CisgICAg
ICAgICRzaWduYXR1cmUgPSAidjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+KCkiOworICAgIH0KKwor
ICAgIGlmIChSZXF1aXJlc0N1c3RvbVNpZ25hdHVyZSgkZnVuY3Rpb24pKSB7CisgICAgICAgICRz
aWduYXR1cmUgPSAiJHtuYW1lfVNpZ25hdHVyZSI7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiXG4gICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAnJG5hbWUnXG4iLCBDcmVhdGVDdXN0b21TaWdu
YXR1cmUoJGZ1bmN0aW9uKSk7CisgICAgfQorCisgICAgIyBOb3JtYWwgZnVuY3Rpb24gY2FsbCBp
cyBhIHRlbXBsYXRlCisgICAgbXkgJGNhbGxiYWNrID0gR2V0RnVuY3Rpb25UZW1wbGF0ZUNhbGxi
YWNrTmFtZSgkZnVuY3Rpb24sICRpbnRlcmZhY2VOYW1lKTsKKworICAgIGlmICgkcHJvcGVydHlf
YXR0cmlidXRlcyBlcSAidjg6OkRvbnREZWxldGUiKSB7CisgICAgICAgICRwcm9wZXJ0eV9hdHRy
aWJ1dGVzID0gIiI7CisgICAgfSBlbHNlIHsKKyAgICAgICAgJHByb3BlcnR5X2F0dHJpYnV0ZXMg
PSAiLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KCRwcm9wZXJ0eV9hdHRyaWJ1
dGVzKSI7CisgICAgfQorCisgICAgaWYgKCR0ZW1wbGF0ZSBlcSAicHJvdG8iICYmICRjb25kaXRp
b25hbCBlcSAiIiAmJiAkc2lnbmF0dXJlIGVxICJkZWZhdWx0U2lnbmF0dXJlIiAmJiAkcHJvcGVy
dHlfYXR0cmlidXRlcyBlcSAiIikgeworICAgICAgICBkaWUgIlRoaXMgc2hvdWxkbid0IGhhcHBl
bjogIiAuIElzTm9ybWFsRnVuY3Rpb24oJGZ1bmN0aW9uKSAuICJcbiI7CisgICAgfQorCisgICAg
bXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9u
YWxTdHJpbmcoJGZ1bmN0aW9uLT5zaWduYXR1cmUpOworICAgIHB1c2goQGltcGxDb250ZW50LCAi
I2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CisKKyAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2NvbmRpdGlvbmFsfSR0ZW1wbGF0ZS0+U2V0KHY4
OjpTdHJpbmc6Ok5ldyhcIiRuYW1lXCIpLCAiKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgInY4
OjpIYW5kbGU8djg6OkZ1bmN0aW9uPigiKSBpZiAkbmVlZEZ1bmN0aW9uOworICAgIHB1c2goQGlt
cGxDb250ZW50LCAidjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldygkY2FsbGJhY2ssIHY4OjpIYW5k
bGU8djg6OlZhbHVlPigpLCAke3NpZ25hdHVyZX0pIik7CisgICAgcHVzaChAaW1wbENvbnRlbnQs
ICItPkdldEZ1bmN0aW9uKCkpIikgaWYgJG5lZWRGdW5jdGlvbjsKKyAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiRwcm9wZXJ0eV9hdHRyaWJ1dGVzKTtcbiIpOworCisgICAgcHVzaChAaW1wbENvbnRl
bnQsICIjZW5kaWYgLy8gJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0
cmluZzsKK30KIAogc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIHsKQEAgLTI0NzgsMjAgKzI1
OTIsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogCiAgICAgICAgIG15ICRhdHRyRXh0
ID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlczsKICAgICAgICAgIyBE
b24ndCBwdXQgYW55IG5vbnN0YW5kYXJkIGZ1bmN0aW9ucyBpbnRvIHRoaXMgdGFibGU6Ci0gICAg
ICAgIGlmICgkYXR0ckV4dC0+eyJWOFVuZm9yZ2VhYmxlIn0pIHsKLSAgICAgICAgICAgIG5leHQ7
Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCRmdW5jdGlvbi0+aXNTdGF0aWMpIHsKLSAgICAgICAg
ICAgIG5leHQ7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCRhdHRyRXh0LT57IlY4RW5hYmxlZEF0
UnVudGltZSJ9IHx8IFJlcXVpcmVzQ3VzdG9tU2lnbmF0dXJlKCRmdW5jdGlvbikgfHwgJGF0dHJF
eHQtPnsiVjhEb05vdENoZWNrU2lnbmF0dXJlIn0pIHsKLSAgICAgICAgICAgIG5leHQ7Ci0gICAg
ICAgIH0KLSAgICAgICAgaWYgKCRhdHRyRXh0LT57IkRvTm90Q2hlY2tTZWN1cml0eSJ9ICYmCi0g
ICAgICAgICAgICAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2hlY2tTZWN1cml0
eSJ9IHx8ICRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSkgewotICAgICAgICAgICAgbmV4
dDsKLSAgICAgICAgfQotICAgICAgICBpZiAoJGF0dHJFeHQtPnsiTm90RW51bWVyYWJsZSJ9IHx8
ICRhdHRyRXh0LT57IlY4UmVhZE9ubHkifSkgeworICAgICAgICBpZiAoIUlzTm9ybWFsRnVuY3Rp
b24oJGRhdGFOb2RlLCAkZnVuY3Rpb24pKSB7CiAgICAgICAgICAgICBuZXh0OwogICAgICAgICB9
CiAgICAgICAgIGlmICghJGhhc19jYWxsYmFja3MpIHsKQEAgLTI2ODcsOTcgKzI3ODgsMTIgQEAg
RU5ECiAgICAgICAgIG5leHQgaWYgJGZ1bmN0aW9uLT57b3ZlcmxvYWRJbmRleH0gPiAxOwogCiAg
ICAgICAgICR0b3RhbF9mdW5jdGlvbnMrKzsKLSAgICAgICAgbXkgJGF0dHJFeHQgPSAkZnVuY3Rp
b24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzOwotICAgICAgICBteSAkbmFtZSA9ICRm
dW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lOwotCi0gICAgICAgIG15ICRwcm9wZXJ0eV9hdHRyaWJ1
dGVzID0gInY4OjpEb250RGVsZXRlIjsKLSAgICAgICAgaWYgKCRhdHRyRXh0LT57Ik5vdEVudW1l
cmFibGUifSkgewotICAgICAgICAgICAgJHByb3BlcnR5X2F0dHJpYnV0ZXMgLj0gIiB8IHY4OjpE
b250RW51bSI7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCRhdHRyRXh0LT57IlY4UmVhZE9ubHki
fSkgewotICAgICAgICAgICAgJHByb3BlcnR5X2F0dHJpYnV0ZXMgLj0gIiB8IHY4OjpSZWFkT25s
eSI7Ci0gICAgICAgIH0KLQotICAgICAgICBteSAkY29tbWVudEluZm8gPSAiRnVuY3Rpb24gJyRu
YW1lJyAoRXh0QXR0cjogJyIgLiBqb2luKCcgJywga2V5cygleyRhdHRyRXh0fSkpIC4gIicpIjsK
LQotICAgICAgICBteSAkdGVtcGxhdGUgPSAicHJvdG8iOwotICAgICAgICBpZiAoJGF0dHJFeHQt
PnsiVjhVbmZvcmdlYWJsZSJ9KSB7Ci0gICAgICAgICAgICAkdGVtcGxhdGUgPSAiaW5zdGFuY2Ui
OwotICAgICAgICB9Ci0gICAgICAgIGlmICgkZnVuY3Rpb24tPmlzU3RhdGljKSB7Ci0gICAgICAg
ICAgICAkdGVtcGxhdGUgPSAiZGVzYyI7Ci0gICAgICAgIH0KLQotICAgICAgICBteSAkY29uZGl0
aW9uYWwgPSAiIjsKLSAgICAgICAgaWYgKCRhdHRyRXh0LT57IlY4RW5hYmxlZEF0UnVudGltZSJ9
KSB7Ci0gICAgICAgICAgICAjIE9ubHkgY2FsbCBTZXQoKS9TZXRBY2Nlc3NvcigpIGlmIHRoaXMg
bWV0aG9kIHNob3VsZCBiZSBlbmFibGVkCi0gICAgICAgICAgICBteSAkZW5hYmxlX2Z1bmN0aW9u
ID0gR2V0UnVudGltZUVuYWJsZUZ1bmN0aW9uTmFtZSgkZnVuY3Rpb24tPnNpZ25hdHVyZSk7Ci0g
ICAgICAgICAgICAkY29uZGl0aW9uYWwgPSAiaWYgKCR7ZW5hYmxlX2Z1bmN0aW9ufSgpKVxuICAg
ICAgICAiOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCRhdHRyRXh0LT57IkRvTm90Q2hlY2tT
ZWN1cml0eSJ9ICYmCi0gICAgICAgICAgICAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiQ2hlY2tTZWN1cml0eSJ9IHx8ICRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSkgewot
ICAgICAgICAgICAgIyBNYXJrIHRoZSBhY2Nlc3NvciBhcyBSZWFkT25seSBhbmQgc2V0IGl0IG9u
IHRoZSBwcm90byBvYmplY3Qgc28KLSAgICAgICAgICAgICMgaXQgY2FuIGJlIHNoYWRvd2VkLiBU
aGlzIGlzIHJlYWxseSBhIGhhY2sgdG8gbWFrZSBpdCB3b3JrLgotICAgICAgICAgICAgIyBUaGVy
ZSBhcmUgc2V2ZXJhbCBzY2VuZXJpYSB0byBjYWxsIGludG8gdGhlIGFjY2Vzc29yOgotICAgICAg
ICAgICAgIyAgIDEpIGZyb20gdGhlIHNhbWUgZG9tYWluOiAid2luZG93Lm9wZW4iOgotICAgICAg
ICAgICAgIyAgICAgIHRoZSBhY2Nlc3NvciBmaW5kcyB0aGUgRE9NIHdyYXBwZXIgaW4gdGhlIHBy
b3RvIGNoYWluOwotICAgICAgICAgICAgIyAgIDIpIGZyb20gdGhlIHNhbWUgZG9tYWluOiAid2lu
ZG93Ll9fcHJvdG9fXy5vcGVuIjoKLSAgICAgICAgICAgICMgICAgICB0aGUgYWNjZXNzb3Igd2ls
bCBOT1QgZmluZCBhIERPTSB3cmFwcGVyIGluIHRoZSBwcm90b3R5cGUgY2hhaW4KLSAgICAgICAg
ICAgICMgICAzKSBmcm9tIGFub3RoZXIgZG9tYWluOiAid2luZG93Lm9wZW4iOgotICAgICAgICAg
ICAgIyAgICAgIHRoZSBhY2Nlc3MgZmluZCB0aGUgRE9NIHdyYXBwZXIgaW4gdGhlIHByb3RvdHlw
ZSBjaGFpbgotICAgICAgICAgICAgIyAgICJ3aW5kb3cuX19wcm90b19fLm9wZW4iIGZyb20gYW5v
dGhlciBkb21haW4gd2lsbCBmYWlsIHdoZW4KLSAgICAgICAgICAgICMgICBhY2Nlc3NpbmcgJ19f
cHJvdG9fXycKLSAgICAgICAgICAgICMKLSAgICAgICAgICAgICMgVGhlIHNvbHV0aW9uIGlzIHZl
cnkgaGFja3kgYW5kIGZyYWdpbGUsIGl0IHJlYWxseSBuZWVkcyB0byBiZSByZXBsYWNlZAotICAg
ICAgICAgICAgIyBieSBhIGJldHRlciBzb2x1dGlvbi4KLSAgICAgICAgICAgICRwcm9wZXJ0eV9h
dHRyaWJ1dGVzIC49ICIgfCB2ODo6UmVhZE9ubHkiOwotICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsIDw8RU5EKTsKLQotICAgIC8vICRjb21tZW50SW5mbwotICAgICR7Y29uZGl0aW9uYWx9
JHRlbXBsYXRlLT5TZXRBY2Nlc3Nvcih2ODo6U3RyaW5nOjpOZXcoIiRuYW1lIiksICR7aW50ZXJm
YWNlTmFtZX1WOEludGVybmFsOjoke25hbWV9QXR0ckdldHRlciwgMCwgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+KCksIHY4OjpBTExfQ0FOX1JFQUQsIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJp
YnV0ZT4oJHByb3BlcnR5X2F0dHJpYnV0ZXMpKTsKLUVORAorICAgICAgICBpZiAoIUlzTm9ybWFs
RnVuY3Rpb24oJGRhdGFOb2RlLCAkZnVuY3Rpb24pICYmICEkZnVuY3Rpb24tPnNpZ25hdHVyZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4RW5hYmxlZFBlckNvbnRleHQifSkgeworICAgICAgICAg
ICAgR2VuZXJhdGVBYm5vcm1hbEZ1bmN0aW9uKCRkYXRhTm9kZSwgJGZ1bmN0aW9uKTsKICAgICAg
ICAgICAgICRudW1fY2FsbGJhY2tzKys7Ci0gICAgICAgICAgICBuZXh0OwotICAgICAgICB9Ci0K
LSAgICAgICAgbXkgJHNpZ25hdHVyZSA9ICJkZWZhdWx0U2lnbmF0dXJlIjsKLSAgICAgICAgaWYg
KCRhdHRyRXh0LT57IlY4RG9Ob3RDaGVja1NpZ25hdHVyZSJ9IHx8ICRmdW5jdGlvbi0+aXNTdGF0
aWMpIHsKLSAgICAgICAgICAgICRzaWduYXR1cmUgPSAidjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+
KCkiOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKFJlcXVpcmVzQ3VzdG9tU2lnbmF0dXJlKCRm
dW5jdGlvbikpIHsKLSAgICAgICAgICAgICRzaWduYXR1cmUgPSAiJHtuYW1lfVNpZ25hdHVyZSI7
Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuICAgIC8vIEN1c3RvbSBTaWduYXR1
cmUgJyRuYW1lJ1xuIiwgQ3JlYXRlQ3VzdG9tU2lnbmF0dXJlKCRmdW5jdGlvbikpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgIyBOb3JtYWwgZnVuY3Rpb24gY2FsbCBpcyBhIHRlbXBsYXRlCi0gICAg
ICAgIG15ICRjYWxsYmFjayA9IEdldEZ1bmN0aW9uVGVtcGxhdGVDYWxsYmFja05hbWUoJGZ1bmN0
aW9uLCAkaW50ZXJmYWNlTmFtZSk7Ci0KLSAgICAgICAgaWYgKCRwcm9wZXJ0eV9hdHRyaWJ1dGVz
IGVxICJ2ODo6RG9udERlbGV0ZSIpIHsKLSAgICAgICAgICAgICRwcm9wZXJ0eV9hdHRyaWJ1dGVz
ID0gIiI7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAkcHJvcGVydHlfYXR0cmlidXRl
cyA9ICIsIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4oJHByb3BlcnR5X2F0dHJp
YnV0ZXMpIjsKICAgICAgICAgfQotCi0gICAgICAgIGlmICgkdGVtcGxhdGUgZXEgInByb3RvIiAm
JiAkY29uZGl0aW9uYWwgZXEgIiIgJiYgJHNpZ25hdHVyZSBlcSAiZGVmYXVsdFNpZ25hdHVyZSIg
JiYgJHByb3BlcnR5X2F0dHJpYnV0ZXMgZXEgIiIpIHsKLSAgICAgICAgICAgICMgU3RhbmRhcmQg
dHlwZSBvZiBjYWxsYmFjaywgYWxyZWFkeSBjcmVhdGVkIGluIHRoZSBiYXRjaCwgc28gc2tpcCBp
dCBoZXJlLgotICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgfQotCi0gICAgICAgIG15ICRjb25k
aXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5n
KCRmdW5jdGlvbi0+c2lnbmF0dXJlKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjaWYg
JHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKLQotICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwotICAgICR7Y29uZGl0aW9uYWx9JHRlbXBsYXRl
LT5TZXQodjg6OlN0cmluZzo6TmV3KCIkbmFtZSIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3
KCRjYWxsYmFjaywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCksICR7c2lnbmF0dXJlfSkkcHJvcGVy
dHlfYXR0cmlidXRlcyk7Ci1FTkQKLQotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbmRp
ZiAvLyAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwotICAg
ICAgICAkbnVtX2NhbGxiYWNrcysrOwogICAgIH0KIAotICAgIGRpZSAiV3JvbmcgbnVtYmVyIG9m
IGNhbGxiYWNrcyBnZW5lcmF0ZWQgZm9yICRpbnRlcmZhY2VOYW1lICgkbnVtX2NhbGxiYWNrcywg
c2hvdWxkIGJlICR0b3RhbF9mdW5jdGlvbnMpIiBpZiAkbnVtX2NhbGxiYWNrcyAhPSAkdG90YWxf
ZnVuY3Rpb25zOwotCiAgICAgaWYgKCRoYXNfY29uc3RhbnRzKSB7CiAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCA8PEVORCk7CiAgICAgYmF0Y2hDb25maWd1cmVDb25zdGFudHMoZGVzYywgcHJv
dG8sICR7aW50ZXJmYWNlTmFtZX1Db25zdHMsIFdURl9BUlJBWV9MRU5HVEgoJHtpbnRlcmZhY2VO
YW1lfUNvbnN0cykpOwpAQCAtMjg3NSwxMSArMjg5MSwxOSBAQCBFTkQKICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIH1cbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIjZW5kaWYgLy8gJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0
cmluZzsKICAgICAgICAgfQotCi0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7Ci19
Ci1FTkQKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiIpOworICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4gZGVmYXVsdFNpZ25hdHVy
ZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhWOERPTVdpbmRvdzo6R2V0UmF3VGVtcGxhdGUoKSk7XG4i
KTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFNKGRlZmF1bHRT
aWduYXR1cmUpO1xuIik7CisgICAgICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChAeyRkYXRhTm9k
ZS0+ZnVuY3Rpb25zfSkgeworICAgICAgICAgICAgbmV4dCBpZiAkZnVuY3Rpb24tPntvdmVybG9h
ZEluZGV4fSA+IDE7CisgICAgICAgICAgICBuZXh0IGlmIElzTm9ybWFsRnVuY3Rpb24oJGRhdGFO
b2RlLCAkZnVuY3Rpb24pOworICAgICAgICAgICAgbmV4dCBpZiAhJGZ1bmN0aW9uLT5zaWduYXR1
cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJWOEVuYWJsZWRQZXJDb250ZXh0In07CisgICAgICAg
ICAgICBHZW5lcmF0ZUFibm9ybWFsRnVuY3Rpb24oJGRhdGFOb2RlLCAkZnVuY3Rpb24pOworICAg
ICAgICAgICAgJG51bV9jYWxsYmFja3MrKzsKKyAgICAgICAgfQorICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIn1cblxuIik7CiAgICAgfQorICAgIGRpZSAiV3JvbmcgbnVtYmVyIG9mIGNhbGxi
YWNrcyBnZW5lcmF0ZWQgZm9yICRpbnRlcmZhY2VOYW1lICgkbnVtX2NhbGxiYWNrcywgc2hvdWxk
IGJlICR0b3RhbF9mdW5jdGlvbnMpIiBpZiAkbnVtX2NhbGxiYWNrcyAhPSAkdG90YWxfZnVuY3Rp
b25zOwogCiAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkFjdGl2ZURP
TU9iamVjdCJ9KSB7CiAgICAgICAgICMgTWVzc2FnZVBvcnQgaXMgaGFuZGxlZCBsaWtlIGFuIGFj
dGl2ZSBkb20gb2JqZWN0IGV2ZW4gdGhvdWdoIGl0IGRvZXNuJ3QgaW5oZXJpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCmluZGV4IDA4Yjk4
NTYyZjFkNzViMDA2ZDY2NjM0Y2I5YWFkZTNmMThjODY3MjYuLjQ4MTY3OGZjYmU0MjA3YTI1MDY0
YWI3ZmUxMGY1NThhZmZjYjA5ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKQEAgLTIwNiw2ICsyMDYsOCBAQCBtb2R1bGUgdGVzdCB7
CiAgICAgICAgIC8vIFY4RW5hYmxlZFBlckNvbnRleHQgY3VycmVudGx5IG9ubHkgc3VwcG9ydHMg
YXR0cmlidXRlcy4KICAgICAgICAgYXR0cmlidXRlIFtWOEVuYWJsZWRQZXJDb250ZXh0XSBsb25n
IGVuYWJsZWRBdENvbnRleHRBdHRyMTsKICAgICAgICAgYXR0cmlidXRlIFtWOEVuYWJsZWRQZXJD
b250ZXh0PUZlYXR1cmVOYW1lXSBsb25nIGVuYWJsZWRBdENvbnRleHRBdHRyMjsKKyAgICAgICAg
W1Y4RW5hYmxlZFBlckNvbnRleHRdIGxvbmcgZW5hYmxlZFBlckNvbnRleHRNZXRob2QxKGluIGxv
bmcgbnVtYmVyVmFsdWUsIGluIERPTVN0cmluZyBzdHJpbmdWYWx1ZSk7CisgICAgICAgIFtDb25k
aXRpb25hbD1Db25kaXRpb24xLCBWOEVuYWJsZWRQZXJDb250ZXh0PUZlYXR1cmVOYW1lXSB2b2lk
IGVuYWJsZWRQZXJDb250ZXh0TWV0aG9kMihpbiBsb25nIG51bWJlclZhbHVlLCBpbiBET01TdHJp
bmcgc3RyaW5nVmFsdWUpOwogI2VuZGlmCiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCAwMTA2NzA0ZGYzMGIzYjU2NDZjYjM0ZDYz
ZGMwZGEyNzMxMjI4NjUwLi40MmNkYTdhMzEzZGI1Y2MwNjAwNjRmYjJlMWM0MDgyMDY3MTNhMGEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNw
cApAQCAtMzgsNyArMzgsNiBAQAogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCIK
ICNpbmNsdWRlICJTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlICJET01XaW5k
b3cuaCIKLSNpbmNsdWRlICJET01XaW5kb3dQYWdlUG9wdXAuaCIKICNpbmNsdWRlICJFdmVudC5o
IgogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCkBA
IC0yNTAsMzYgKzI0OSw2IEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6YmluZFRvV2luZG93T2Jq
ZWN0KEZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiBrZXksIE5QT2JqCiAgICAgZ2xvYmFsLT5T
ZXQodjhTdHJpbmcoa2V5KSwgdmFsdWUpOwogfQogCi0jaWYgRU5BQkxFKFBBR0VfUE9QVVApCi1z
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHNldFZhbHVlQW5kQ2xvc2VQb3B1cENhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCi17Ci0gICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAy
KQotICAgICAgICByZXR1cm4gVjhQcm94eTo6dGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihh
cmdzLkdldElzb2xhdGUoKSk7Ci0gICAgRE9NV2luZG93KiBpbXAgPSBWOERPTVdpbmRvdzo6dG9O
YXRpdmUoYXJncy5EYXRhKCktPlRvT2JqZWN0KCkpOwotICAgIEVYQ0VQVElPTl9CTE9DSyhpbnQs
IGludFZhbHVlLCB0b0ludDMyKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1
bHRJc1VuZGVmaW5lZCkpKTsKLSAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JM
T0NLKFY4UGFyYW1ldGVyPD4sIHN0cmluZ1ZhbHVlLCBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihh
cmdzLCAxLCBEZWZhdWx0SXNVbmRlZmluZWQpKTsKLSAgICBET01XaW5kb3dQYWdlUG9wdXA6OnNl
dFZhbHVlQW5kQ2xvc2VQb3B1cChpbXAsIGludFZhbHVlLCBzdHJpbmdWYWx1ZSk7Ci0gICAgLy8g
c2V0VmFsdWVBbmRDbG9zZVBvcHVwKCkgZGVsZXRlcyB0aGUgd2luZG93LiBEbyBub3QgYWNjZXNz
IGl0LgotICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Ci19Ci0KLXZvaWQgU2NyaXB0Q29udHJv
bGxlcjo6aW5zdGFsbEZ1bmN0aW9uc0ZvclBhZ2VQb3B1cChGcmFtZSogZnJhbWUsIFBhZ2VQb3B1
cENsaWVudCogcG9wdXBDbGllbnQpCi17Ci0gICAgQVNTRVJUKGZyYW1lKTsKLSAgICBBU1NFUlQo
cG9wdXBDbGllbnQpOwotICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKLSAgICB2ODo6
SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0ID0gVjhQcm94eTo6bWFpbldvcmxkQ29udGV4dChm
cmFtZSk7Ci0gICAgaWYgKGNvbnRleHQuSXNFbXB0eSgpKSB7Ci0gICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIHY4OjpDb250ZXh0OjpTY29w
ZSBzY29wZShjb250ZXh0KTsKLSAgICBET01XaW5kb3dQYWdlUG9wdXA6Omluc3RhbGwoZnJhbWUt
PmV4aXN0aW5nRE9NV2luZG93KCksIHBvcHVwQ2xpZW50KTsKLSAgICB2ODo6TG9jYWw8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0gdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhzZXRWYWx1
ZUFuZENsb3NlUG9wdXBDYWxsYmFjaywgVjhET01XaW5kb3c6OndyYXAoZnJhbWUtPmV4aXN0aW5n
RE9NV2luZG93KCkpKTsKLSAgICBjb250ZXh0LT5HbG9iYWwoKS0+U2V0KHY4OjpTdHJpbmc6Ok5l
dygic2V0VmFsdWVBbmRDbG9zZVBvcHVwIiksIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPih0ZW1w
bC0+R2V0RnVuY3Rpb24oKSkpOwotfQotI2VuZGlmCi0KIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6
Y29sbGVjdEdhcmJhZ2UoKQogewogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuaAppbmRleCBkNzVm
YjllMWE2YTA5MWNhZTQ3ZmI1ZmRkMjk1YzhkODIwZmNkMzkyLi5jNzFkMjg0YjgyOWUzMWQ3OGY2
ZWRlNmI1OThkYjg1Y2Y3MjA3ZTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9TY3JpcHRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
U2NyaXB0Q29udHJvbGxlci5oCkBAIC0xMjIsOSArMTIyLDYgQEAgcHVibGljOgogICAgIHZvaWQg
YmluZFRvV2luZG93T2JqZWN0KEZyYW1lKiwgY29uc3QgU3RyaW5nJiBrZXksIE5QT2JqZWN0Kik7
CiAKICAgICBQYXNzU2NyaXB0SW5zdGFuY2UgY3JlYXRlU2NyaXB0SW5zdGFuY2VGb3JXaWRnZXQo
V2lkZ2V0Kik7Ci0jaWYgRU5BQkxFKFBBR0VfUE9QVVApCi0gICAgdm9pZCBpbnN0YWxsRnVuY3Rp
b25zRm9yUGFnZVBvcHVwKEZyYW1lKiwgUGFnZVBvcHVwQ2xpZW50Kik7Ci0jZW5kaWYKIAogICAg
IC8vIENoZWNrIGlmIHRoZSBqYXZhc2NyaXB0IGVuZ2luZSBoYXMgYmVlbiBpbml0aWFsaXplZC4K
ICAgICBib29sIGhhdmVJbnRlcnByZXRlcigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA3YzlmODUzYmQwZmRlYjIwOWRlZmNmZjUyNzllMjQ0
ZmIwZDcyZGYxLi5iMGRkOWY1MmUyYzJkYjhhMzU2OWVhMDk5ZWFlYjAyMzE2NWJiY2VhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMzEyLDYgKzMxMiw5
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBib29sIGFsbG93UnVubmlu
Z0luc2VjdXJlQ29udGVudChib29sIGVuYWJsZWRQZXJTZXR0aW5ncywgU2VjdXJpdHlPcmlnaW4q
LCBjb25zdCBLVVJMJikgeyByZXR1cm4gZW5hYmxlZFBlclNldHRpbmdzOyB9CiAKICAgICAgICAg
dmlydHVhbCBib29sIHNoYWRvd0RPTUFsbG93ZWQoYm9vbCBlbmFibGVkQXNSdW50aW1lRmVhdHVy
ZXMpIHsgcmV0dXJuIGVuYWJsZWRBc1J1bnRpbWVGZWF0dXJlczsgfQorI2lmIEVOQUJMRShQQUdF
X1BPUFVQKQorICAgICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dQYWdlUG9wdXAoKSB7IHJldHVybiBm
YWxzZTsgfQorI2VuZGlmCiAKICAgICAgICAgLy8gVGhpcyBjYWxsYmFjayBub3RpZmllcyB0aGUg
Y2xpZW50IHRoYXQgdGhlIGZyYW1lIHdhcyBhYm91dCB0byBydW4KICAgICAgICAgLy8gSmF2YVNj
cmlwdCBidXQgZGlkIG5vdCBiZWNhdXNlIGFsbG93U2NyaXB0IHJldHVybmVkIGZhbHNlLiBXZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVBvcHVwSW1wbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQYWdlUG9wdXBJbXBsLmNwcAppbmRl
eCAxYWQ0MTdiYWQ2ZDM1ZDEzYjFkZjcwZGNlOTVlNDEyN2FhNGZmODJiLi42MTdiNzI1Y2VlMmI1
ZjlmMmNmMjhlM2NhMjg2Y2Y1MGE3NGZjYzhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJQYWdlUG9wdXBJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJQYWdlUG9wdXBJbXBsLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUg
IldlYlBhZ2VQb3B1cEltcGwuaCIKIAogI2luY2x1ZGUgIkNocm9tZS5oIgorI2luY2x1ZGUgIkRP
TVdpbmRvd1BhZ2VQb3B1cC5oIgogI2luY2x1ZGUgIkVtcHR5Q2xpZW50cy5oIgogI2luY2x1ZGUg
IkZpbGVDaG9vc2VyLmgiCiAjaW5jbHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCkBAIC0xMjcsNiAr
MTI4LDEwIEBAIHByaXZhdGU6CiAgICAgV2ViUGFnZVBvcHVwSW1wbCogbV9wb3B1cDsKIH07CiAK
K2NsYXNzIFBhZ2VQb3B1cEZyYW1lTG9hZGVyQ2xpZW50IDogcHVibGljIEVtcHR5RnJhbWVMb2Fk
ZXJDbGllbnQgeworICAgIHZpcnR1YWwgYm9vbCBhbGxvd1BhZ2VQb3B1cCgpIE9WRVJSSURFIHsg
cmV0dXJuIHRydWU7IH0KK307CisKIC8vIFdlYlBhZ2VQb3B1cEltcGwgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBXZWJQ
YWdlUG9wdXBJbXBsOjpXZWJQYWdlUG9wdXBJbXBsKFdlYldpZGdldENsaWVudCogY2xpZW50KQpA
QCAtMTgxLDggKzE4Niw4IEBAIGJvb2wgV2ViUGFnZVBvcHVwSW1wbDo6aW5pdFBhZ2UoKQogICAg
IG1fcGFnZS0+c2V0dGluZ3MoKS0+c2V0U2NyaXB0RW5hYmxlZCh0cnVlKTsKICAgICBtX3BhZ2Ut
PnNldHRpbmdzKCktPnNldEFsbG93U2NyaXB0c1RvQ2xvc2VXaW5kb3dzKHRydWUpOwogCi0gICAg
c3RhdGljIEZyYW1lTG9hZGVyQ2xpZW50KiBlbXB0eUZyYW1lTG9hZGVyQ2xpZW50ID0gIG5ldyBF
bXB0eUZyYW1lTG9hZGVyQ2xpZW50OwotICAgIFJlZlB0cjxGcmFtZT4gZnJhbWUgPSBGcmFtZTo6
Y3JlYXRlKG1fcGFnZS5nZXQoKSwgMCwgZW1wdHlGcmFtZUxvYWRlckNsaWVudCk7CisgICAgc3Rh
dGljIEZyYW1lTG9hZGVyQ2xpZW50KiBwYWdlUG9wdXBGcmFtZUxvYWRlckNsaWVudCA9ICBuZXcg
UGFnZVBvcHVwRnJhbWVMb2FkZXJDbGllbnQ7CisgICAgUmVmUHRyPEZyYW1lPiBmcmFtZSA9IEZy
YW1lOjpjcmVhdGUobV9wYWdlLmdldCgpLCAwLCBwYWdlUG9wdXBGcmFtZUxvYWRlckNsaWVudCk7
CiAgICAgZnJhbWUtPnNldFZpZXcoRnJhbWVWaWV3OjpjcmVhdGUoZnJhbWUuZ2V0KCkpKTsKICAg
ICBmcmFtZS0+aW5pdCgpOwogICAgIGZyYW1lLT52aWV3KCktPnJlc2l6ZShtX3BvcHVwQ2xpZW50
LT5jb250ZW50U2l6ZSgpKTsKQEAgLTE5NSw3ICsyMDAsOCBAQCBib29sIFdlYlBhZ2VQb3B1cElt
cGw6OmluaXRQYWdlKCkKICAgICBtX3BvcHVwQ2xpZW50LT53cml0ZURvY3VtZW50KCp3cml0ZXIp
OwogICAgIHdyaXRlci0+ZW5kKCk7CiAKLSAgICBmcmFtZS0+c2NyaXB0KCktPmluc3RhbGxGdW5j
dGlvbnNGb3JQYWdlUG9wdXAoZnJhbWUuZ2V0KCksIG1fcG9wdXBDbGllbnQpOworICAgIEFTU0VS
VChmcmFtZS0+ZXhpc3RpbmdET01XaW5kb3coKSk7CisgICAgRE9NV2luZG93UGFnZVBvcHVwOjpp
bnN0YWxsKGZyYW1lLT5leGlzdGluZ0RPTVdpbmRvdygpLCBtX3BvcHVwQ2xpZW50KTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143246</attachid>
            <date>2012-05-22 02:55:31 -0700</date>
            <delta_ts>2012-05-22 23:54:04 -0700</delta_ts>
            <desc>WIP 2</desc>
            <filename>bug-87086-20120522185529.patch</filename>
            <type>text/plain</type>
            <size>23024</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3ODk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmIzZjFjODQwOTZmMjhk
ZGUwZWU1NGRhZjk4ZTNiMjliZDczYmI2Yy4uNDc1N2YxNjU5N2YzOTJmNmNhYTc2MGVmYTQ1Zjdk
MTg1MmQ2Y2U0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTA1LTIyICBLZW50
IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIFBBR0VfUE9QVVA6
IHdpbmRvdy5zZXRWYWx1ZUFuZENsb3NlUG9wdXAgc2hvdWxkIGJlIGEgcGVyLWNvbnRleHQgZnVu
Y3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3
MDg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8g
bmV3IHRlc3RzLiAoT09QUyEpCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICog
YmluZGluZ3MvZ2VuZXJpYy9Db250ZXh0RW5hYmxlZEZlYXR1cmVzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dEVuYWJsZWRGZWF0dXJlczo6cGFnZVBv
cHVwRW5hYmxlZCk6CisgICAgICAgICogYmluZGluZ3MvZ2VuZXJpYy9Db250ZXh0RW5hYmxlZEZl
YXR1cmVzLmg6CisgICAgICAgIChDb250ZXh0RW5hYmxlZEZlYXR1cmVzKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAgKEdlbmVyYXRlSGVh
ZGVyKToKKyAgICAgICAgKElzTm9ybWFsRnVuY3Rpb24pOgorICAgICAgICAoR2VuZXJhdGVBYm5v
cm1hbEZ1bmN0aW9uKToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbDoKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRD
b250cm9sbGVyLmg6CisgICAgICAgIChTY3JpcHRDb250cm9sbGVyKToKKyAgICAgICAgKiBsb2Fk
ZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKEZyYW1lTG9hZGVyQ2xpZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50OjphbGxvd1BhZ2VQb3B1cCk6CisKIDIw
MTItMDUtMjEgIEhhamltZSBNb3JyaXRhICA8bW9ycml0YUBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgW1Y4XSBTaGFkb3cgRE9NIHNob3VsZCBiZSBwZXItd2luZG93LWNvbmZpZ3VyYWJsZS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMWVhYmE0MDRkYjk5YTA0OTgwM2NkZDVlNWQ4OWUw
ZTJhOGNmN2NkZS4uODNmODczYTA4Mjk4M2YyN2UzZjc5ZWQ0YjY3ZGZjMjEwZWI5OTgzMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wNS0yMiAgS2Vu
dCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1Y4XSBQQUdFX1BPUFVQ
OiB3aW5kb3cuc2V0VmFsdWVBbmRDbG9zZVBvcHVwIHNob3VsZCBiZSBhIHBlci1jb250ZXh0IGZ1
bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
NzA4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
c3JjL1dlYlBhZ2VQb3B1cEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVBvcHVwSW1wbDo6aW5pdFBhZ2UpOgorCiAyMDEyLTA1LTIxICBKYW1lcyBS
b2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ2hyb21pdW0gY29tcGls
ZSBmaXgsIHVucmV2aWV3ZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggYTE0ZDFmMTVlMDc5YjZjOGMz
MWQ3YTJhODc5NjUyOTYyN2FlMTdmZC4uYTQ0MmI4YzdlZGE5NDZjMGMzMzU3NzQ3NmEyZTBkYTdj
NjI4NWZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMTE0Myw2ICsxMTQzLDcgQEAKICAgICAgICAg
ICAgICdwYWdlL0NyeXB0by5pZGwnLAogICAgICAgICAgICAgJ3BhZ2UvRE9NU2VsZWN0aW9uLmlk
bCcsCiAgICAgICAgICAgICAncGFnZS9ET01XaW5kb3cuaWRsJywKKyAgICAgICAgICAgICdwYWdl
L0RPTVdpbmRvd1BhZ2VQb3B1cC5pZGwnLAogICAgICAgICAgICAgJ3BhZ2UvRXZlbnRTb3VyY2Uu
aWRsJywKICAgICAgICAgICAgICdwYWdlL0hpc3RvcnkuaWRsJywKICAgICAgICAgICAgICdwYWdl
L0xvY2F0aW9uLmlkbCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5l
cmljL0NvbnRleHRFbmFibGVkRmVhdHVyZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
Z2VuZXJpYy9Db250ZXh0RW5hYmxlZEZlYXR1cmVzLmNwcAppbmRleCA3MTc0YzhlNTE2NWIwNjMw
MjBlMWQ0OTY4ZDZmOGUxZmQ0MThhM2M3Li40ZTA5MDA3NDJkZmYyZTE1NmRhODhjOTUwOTdlZTJk
MjA3OTg2NDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL0Nv
bnRleHRFbmFibGVkRmVhdHVyZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dl
bmVyaWMvQ29udGV4dEVuYWJsZWRGZWF0dXJlcy5jcHAKQEAgLTUwLDQgKzUwLDE1IEBAIGJvb2wg
Q29udGV4dEVuYWJsZWRGZWF0dXJlczo6c2hhZG93RE9NRW5hYmxlZChET01XaW5kb3cqIHdpbmRv
dykKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKFBBR0VfUE9QVVApCitib29sIENvbnRleHRFbmFi
bGVkRmVhdHVyZXM6OnBhZ2VQb3B1cEVuYWJsZWQoRE9NV2luZG93KiB3aW5kb3cpCit7CisgICAg
aWYgKCF3aW5kb3cpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoRnJhbWUqIGZyYW1l
ID0gd2luZG93LT5mcmFtZSgpKQorICAgICAgICByZXR1cm4gZnJhbWUtPmxvYWRlcigpLT5jbGll
bnQoKS0+cGFnZVBvcHVwQWxsb3dlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKyNlbmRpZgor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9nZW5lcmljL0NvbnRleHRFbmFibGVkRmVhdHVyZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2dlbmVyaWMvQ29udGV4dEVuYWJsZWRGZWF0dXJlcy5oCmluZGV4IDVhMjA0ZWVjZTQ5
MDZlM2IzYjY4OTU4MWNmZGMyMjFhZWYzZThlOGUuLjRjZWY3Njg3ZDhjMTdhZGM4YThmZjU3ZDU2
ODBhYzIyOTc5MDZmMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVy
aWMvQ29udGV4dEVuYWJsZWRGZWF0dXJlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2dlbmVyaWMvQ29udGV4dEVuYWJsZWRGZWF0dXJlcy5oCkBAIC00NCw2ICs0NCwxMCBAQCBwdWJs
aWM6CiAjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgc3RhdGljIGJvb2wgc2hhZG93RE9NRW5h
YmxlZChET01XaW5kb3cqKTsKICNlbmRpZgorCisjaWYgRU5BQkxFKFBBR0VfUE9QVVApCisgICAg
c3RhdGljIGJvb2wgcGFnZVBvcHVwRW5hYmxlZChET01XaW5kb3cqKTsKKyNlbmRpZgogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCBkMzFiMDQzNjEyMWM3OWM2ZmQwODQ1ZWUx
MzYxYjNlYzRiMzZjMzVhLi45ZDMzNjEyODM3OWU1MDBhOTc5NTJkMTg3YjZjM2IxMjQ5YzJiZTI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JWOC5wbQpAQCAtMzY1LDYgKzM2NSw5IEBAIEVORAogICAgICAgICBpZiAoJGF0dHJFeHQtPnsi
VjhFbmFibGVkQXRSdW50aW1lIn0pIHsKICAgICAgICAgICAgIHB1c2goQGVuYWJsZWRBdFJ1bnRp
bWUsICRmdW5jdGlvbik7CiAgICAgICAgIH0KKyAgICAgICAgaWYgKCRhdHRyRXh0LT57IlY4RW5h
YmxlUGVyQ29udGV4dCJ9KSB7CisgICAgICAgICAgICBwdXNoKEBlbmFibGVkUGVyQ29udGV4dCwg
JGZ1bmN0aW9uKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChJc0NvbnN0cnVjdGFibGUo
JGRhdGFOb2RlKSkgewpAQCAtMjMwOCw2ICsyMzExLDExNyBAQCBzdWIgSXNUeXBlZEFycmF5VHlw
ZQogICAgIHJldHVybiAwOwogfQogCitzdWIgSXNOb3JtYWxGdW5jdGlvbgoreworICAgIG15ICRk
YXRhTm9kZSA9IHNoaWZ0OworICAgIG15ICRmdW5jdGlvbiA9IHNoaWZ0OworICAgIG15ICRpbnRl
cmZhY2VOYW1lID0gJGRhdGFOb2RlLT5uYW1lOworICAgIG15ICRhdHRyRXh0ID0gJGZ1bmN0aW9u
LT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlczsKKyAgICByZXR1cm4gMCBpZiAkYXR0ckV4
dC0+eyJWOFVuZm9yZ2VhYmxlIn07CisgICAgcmV0dXJuIDAgaWYgJGZ1bmN0aW9uLT5pc1N0YXRp
YzsKKyAgICByZXR1cm4gMCBpZiAoJGF0dHJFeHQtPnsiVjhFbmFibGVkQXRSdW50aW1lIn0gfHwg
JGF0dHJFeHQtPnsiVjhFbmFibGVkUGVyQ29udGV4dCJ9IHx8IFJlcXVpcmVzQ3VzdG9tU2lnbmF0
dXJlKCRmdW5jdGlvbikgfHwgJGF0dHJFeHQtPnsiVjhEb05vdENoZWNrU2lnbmF0dXJlIn0pOwor
ICAgIHJldHVybiAwIGlmICgkYXR0ckV4dC0+eyJEb05vdENoZWNrU2VjdXJpdHkifSAmJiAoJGRh
dGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2hlY2tTZWN1cml0eSJ9IHx8ICRpbnRlcmZh
Y2VOYW1lIGVxICJET01XaW5kb3ciKSk7CisgICAgcmV0dXJuIDAgaWYgKCRhdHRyRXh0LT57Ik5v
dEVudW1lcmFibGUifSB8fCAkYXR0ckV4dC0+eyJWOFJlYWRPbmx5In0pOworICAgIHJldHVybiAx
OworfQorCitzdWIgR2VuZXJhdGVBYm5vcm1hbEZ1bmN0aW9uCit7CisgICAgbXkgJGRhdGFOb2Rl
ID0gc2hpZnQ7CisgICAgbXkgJGZ1bmN0aW9uID0gc2hpZnQ7CisgICAgbXkgJGludGVyZmFjZU5h
bWUgPSAkZGF0YU5vZGUtPm5hbWU7CisgICAgbXkgJGF0dHJFeHQgPSAkZnVuY3Rpb24tPnNpZ25h
dHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzOworICAgIG15ICRuYW1lID0gJGZ1bmN0aW9uLT5zaWdu
YXR1cmUtPm5hbWU7CisKKyAgICBteSAkcHJvcGVydHlfYXR0cmlidXRlcyA9ICJ2ODo6RG9udERl
bGV0ZSI7CisgICAgaWYgKCRhdHRyRXh0LT57Ik5vdEVudW1lcmFibGUifSkgeworICAgICAgICAk
cHJvcGVydHlfYXR0cmlidXRlcyAuPSAiIHwgdjg6OkRvbnRFbnVtIjsKKyAgICB9CisgICAgaWYg
KCRhdHRyRXh0LT57IlY4UmVhZE9ubHkifSkgeworICAgICAgICAkcHJvcGVydHlfYXR0cmlidXRl
cyAuPSAiIHwgdjg6OlJlYWRPbmx5IjsKKyAgICB9CisKKyAgICBteSAkY29tbWVudEluZm8gPSAi
RnVuY3Rpb24gJyRuYW1lJyAoRXh0QXR0cjogJyIgLiBqb2luKCcgJywga2V5cygleyRhdHRyRXh0
fSkpIC4gIicpIjsKKworICAgIG15ICR0ZW1wbGF0ZSA9ICJwcm90byI7CisgICAgaWYgKCRhdHRy
RXh0LT57IlY4VW5mb3JnZWFibGUifSkgeworICAgICAgICAkdGVtcGxhdGUgPSAiaW5zdGFuY2Ui
OworICAgIH0KKyAgICBpZiAoJGZ1bmN0aW9uLT5pc1N0YXRpYykgeworICAgICAgICAkdGVtcGxh
dGUgPSAiZGVzYyI7CisgICAgfQorCisgICAgbXkgJGNvbmRpdGlvbmFsID0gIiI7CisgICAgbXkg
JG5lZWRGdW5jdGlvbiA9IDA7CisgICAgaWYgKCRhdHRyRXh0LT57IlY4RW5hYmxlZEF0UnVudGlt
ZSJ9KSB7CisgICAgICAgICMgT25seSBjYWxsIFNldCgpL1NldEFjY2Vzc29yKCkgaWYgdGhpcyBt
ZXRob2Qgc2hvdWxkIGJlIGVuYWJsZWQKKyAgICAgICAgbXkgJGVuYWJsZV9mdW5jdGlvbiA9IEdl
dFJ1bnRpbWVFbmFibGVGdW5jdGlvbk5hbWUoJGZ1bmN0aW9uLT5zaWduYXR1cmUpOworICAgICAg
ICAkY29uZGl0aW9uYWwgPSAiaWYgKCR7ZW5hYmxlX2Z1bmN0aW9ufSgpKVxuICAgICAgICAiOwor
ICAgIH0gZWxzaWYgKCRhdHRyRXh0LT57IlY4RW5hYmxlZFBlckNvbnRleHQifSkgeworICAgICAg
ICBteSAkZW5hYmxlX2Z1bmN0aW9uID0gR2V0Q29udGV4dEVuYWJsZUZ1bmN0aW9uKCRmdW5jdGlv
bi0+c2lnbmF0dXJlKTsKKyAgICAgICAgJGNvbmRpdGlvbmFsID0gImlmIChDb250ZXh0RW5hYmxl
ZEZlYXR1cmVzOjoke2VuYWJsZV9mdW5jdGlvbn0oaW1wbCkpXG4gICAgICAgICI7CisgICAgICAg
ICRuZWVkRnVuY3Rpb24gPSAxOworICAgIH0KKworICAgIGlmICgkYXR0ckV4dC0+eyJEb05vdENo
ZWNrU2VjdXJpdHkifSAmJgorICAgICAgICAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiQ2hlY2tTZWN1cml0eSJ9IHx8ICRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSkgewor
ICAgICAgICAjIE1hcmsgdGhlIGFjY2Vzc29yIGFzIFJlYWRPbmx5IGFuZCBzZXQgaXQgb24gdGhl
IHByb3RvIG9iamVjdCBzbworICAgICAgICAjIGl0IGNhbiBiZSBzaGFkb3dlZC4gVGhpcyBpcyBy
ZWFsbHkgYSBoYWNrIHRvIG1ha2UgaXQgd29yay4KKyAgICAgICAgIyBUaGVyZSBhcmUgc2V2ZXJh
bCBzY2VuZXJpYSB0byBjYWxsIGludG8gdGhlIGFjY2Vzc29yOgorICAgICAgICAjICAgMSkgZnJv
bSB0aGUgc2FtZSBkb21haW46ICJ3aW5kb3cub3BlbiI6CisgICAgICAgICMgICAgICB0aGUgYWNj
ZXNzb3IgZmluZHMgdGhlIERPTSB3cmFwcGVyIGluIHRoZSBwcm90byBjaGFpbjsKKyAgICAgICAg
IyAgIDIpIGZyb20gdGhlIHNhbWUgZG9tYWluOiAid2luZG93Ll9fcHJvdG9fXy5vcGVuIjoKKyAg
ICAgICAgIyAgICAgIHRoZSBhY2Nlc3NvciB3aWxsIE5PVCBmaW5kIGEgRE9NIHdyYXBwZXIgaW4g
dGhlIHByb3RvdHlwZSBjaGFpbgorICAgICAgICAjICAgMykgZnJvbSBhbm90aGVyIGRvbWFpbjog
IndpbmRvdy5vcGVuIjoKKyAgICAgICAgIyAgICAgIHRoZSBhY2Nlc3MgZmluZCB0aGUgRE9NIHdy
YXBwZXIgaW4gdGhlIHByb3RvdHlwZSBjaGFpbgorICAgICAgICAjICAgIndpbmRvdy5fX3Byb3Rv
X18ub3BlbiIgZnJvbSBhbm90aGVyIGRvbWFpbiB3aWxsIGZhaWwgd2hlbgorICAgICAgICAjICAg
YWNjZXNzaW5nICdfX3Byb3RvX18nCisgICAgICAgICMKKyAgICAgICAgIyBUaGUgc29sdXRpb24g
aXMgdmVyeSBoYWNreSBhbmQgZnJhZ2lsZSwgaXQgcmVhbGx5IG5lZWRzIHRvIGJlIHJlcGxhY2Vk
CisgICAgICAgICMgYnkgYSBiZXR0ZXIgc29sdXRpb24uCisgICAgICAgICRwcm9wZXJ0eV9hdHRy
aWJ1dGVzIC49ICIgfCB2ODo6UmVhZE9ubHkiOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
PDxFTkQpOworCisgICAgLy8gJGNvbW1lbnRJbmZvCisgICAgJHtjb25kaXRpb25hbH0kdGVtcGxh
dGUtPlNldEFjY2Vzc29yKHY4OjpTdHJpbmc6Ok5ldygiJG5hbWUiKSwgJHtpbnRlcmZhY2VOYW1l
fVY4SW50ZXJuYWw6OiR7bmFtZX1BdHRyR2V0dGVyLCAwLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4o
KSwgdjg6OkFMTF9DQU5fUkVBRCwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPigk
cHJvcGVydHlfYXR0cmlidXRlcykpOworRU5ECisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBteSAkc2lnbmF0dXJlID0gImRlZmF1bHRTaWduYXR1cmUiOworICAgIGlmICgkYXR0ckV4dC0+
eyJWOERvTm90Q2hlY2tTaWduYXR1cmUifSB8fCAkZnVuY3Rpb24tPmlzU3RhdGljKSB7CisgICAg
ICAgICRzaWduYXR1cmUgPSAidjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+KCkiOworICAgIH0KKwor
ICAgIGlmIChSZXF1aXJlc0N1c3RvbVNpZ25hdHVyZSgkZnVuY3Rpb24pKSB7CisgICAgICAgICRz
aWduYXR1cmUgPSAiJHtuYW1lfVNpZ25hdHVyZSI7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiXG4gICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAnJG5hbWUnXG4iLCBDcmVhdGVDdXN0b21TaWdu
YXR1cmUoJGZ1bmN0aW9uKSk7CisgICAgfQorCisgICAgIyBOb3JtYWwgZnVuY3Rpb24gY2FsbCBp
cyBhIHRlbXBsYXRlCisgICAgbXkgJGNhbGxiYWNrID0gR2V0RnVuY3Rpb25UZW1wbGF0ZUNhbGxi
YWNrTmFtZSgkZnVuY3Rpb24sICRpbnRlcmZhY2VOYW1lKTsKKworICAgIGlmICgkcHJvcGVydHlf
YXR0cmlidXRlcyBlcSAidjg6OkRvbnREZWxldGUiKSB7CisgICAgICAgICRwcm9wZXJ0eV9hdHRy
aWJ1dGVzID0gIiI7CisgICAgfSBlbHNlIHsKKyAgICAgICAgJHByb3BlcnR5X2F0dHJpYnV0ZXMg
PSAiLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KCRwcm9wZXJ0eV9hdHRyaWJ1
dGVzKSI7CisgICAgfQorCisgICAgaWYgKCR0ZW1wbGF0ZSBlcSAicHJvdG8iICYmICRjb25kaXRp
b25hbCBlcSAiIiAmJiAkc2lnbmF0dXJlIGVxICJkZWZhdWx0U2lnbmF0dXJlIiAmJiAkcHJvcGVy
dHlfYXR0cmlidXRlcyBlcSAiIikgeworICAgICAgICBkaWUgIlRoaXMgc2hvdWxkbid0IGhhcHBl
bjogIiAuIElzTm9ybWFsRnVuY3Rpb24oJGZ1bmN0aW9uKSAuICJcbiI7CisgICAgfQorCisgICAg
bXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9u
YWxTdHJpbmcoJGZ1bmN0aW9uLT5zaWduYXR1cmUpOworICAgIHB1c2goQGltcGxDb250ZW50LCAi
I2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CisKKyAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2NvbmRpdGlvbmFsfSR0ZW1wbGF0ZS0+U2V0KHY4
OjpTdHJpbmc6Ok5ldyhcIiRuYW1lXCIpLCAiKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgInY4
OjpIYW5kbGU8djg6OkZ1bmN0aW9uPigiKSBpZiAkbmVlZEZ1bmN0aW9uOworICAgIHB1c2goQGlt
cGxDb250ZW50LCAidjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldygkY2FsbGJhY2ssIHY4OjpIYW5k
bGU8djg6OlZhbHVlPigpLCAke3NpZ25hdHVyZX0pIik7CisgICAgcHVzaChAaW1wbENvbnRlbnQs
ICItPkdldEZ1bmN0aW9uKCkpIikgaWYgJG5lZWRGdW5jdGlvbjsKKyAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiRwcm9wZXJ0eV9hdHRyaWJ1dGVzKTtcbiIpOworCisgICAgcHVzaChAaW1wbENvbnRl
bnQsICIjZW5kaWYgLy8gJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0
cmluZzsKK30KIAogc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIHsKQEAgLTI0NzgsMjAgKzI1
OTIsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogCiAgICAgICAgIG15ICRhdHRyRXh0
ID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlczsKICAgICAgICAgIyBE
b24ndCBwdXQgYW55IG5vbnN0YW5kYXJkIGZ1bmN0aW9ucyBpbnRvIHRoaXMgdGFibGU6Ci0gICAg
ICAgIGlmICgkYXR0ckV4dC0+eyJWOFVuZm9yZ2VhYmxlIn0pIHsKLSAgICAgICAgICAgIG5leHQ7
Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCRmdW5jdGlvbi0+aXNTdGF0aWMpIHsKLSAgICAgICAg
ICAgIG5leHQ7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCRhdHRyRXh0LT57IlY4RW5hYmxlZEF0
UnVudGltZSJ9IHx8IFJlcXVpcmVzQ3VzdG9tU2lnbmF0dXJlKCRmdW5jdGlvbikgfHwgJGF0dHJF
eHQtPnsiVjhEb05vdENoZWNrU2lnbmF0dXJlIn0pIHsKLSAgICAgICAgICAgIG5leHQ7Ci0gICAg
ICAgIH0KLSAgICAgICAgaWYgKCRhdHRyRXh0LT57IkRvTm90Q2hlY2tTZWN1cml0eSJ9ICYmCi0g
ICAgICAgICAgICAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2hlY2tTZWN1cml0
eSJ9IHx8ICRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSkgewotICAgICAgICAgICAgbmV4
dDsKLSAgICAgICAgfQotICAgICAgICBpZiAoJGF0dHJFeHQtPnsiTm90RW51bWVyYWJsZSJ9IHx8
ICRhdHRyRXh0LT57IlY4UmVhZE9ubHkifSkgeworICAgICAgICBpZiAoIUlzTm9ybWFsRnVuY3Rp
b24oJGRhdGFOb2RlLCAkZnVuY3Rpb24pKSB7CiAgICAgICAgICAgICBuZXh0OwogICAgICAgICB9
CiAgICAgICAgIGlmICghJGhhc19jYWxsYmFja3MpIHsKQEAgLTI2ODcsOTcgKzI3ODgsMTIgQEAg
RU5ECiAgICAgICAgIG5leHQgaWYgJGZ1bmN0aW9uLT57b3ZlcmxvYWRJbmRleH0gPiAxOwogCiAg
ICAgICAgICR0b3RhbF9mdW5jdGlvbnMrKzsKLSAgICAgICAgbXkgJGF0dHJFeHQgPSAkZnVuY3Rp
b24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzOwotICAgICAgICBteSAkbmFtZSA9ICRm
dW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lOwotCi0gICAgICAgIG15ICRwcm9wZXJ0eV9hdHRyaWJ1
dGVzID0gInY4OjpEb250RGVsZXRlIjsKLSAgICAgICAgaWYgKCRhdHRyRXh0LT57Ik5vdEVudW1l
cmFibGUifSkgewotICAgICAgICAgICAgJHByb3BlcnR5X2F0dHJpYnV0ZXMgLj0gIiB8IHY4OjpE
b250RW51bSI7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCRhdHRyRXh0LT57IlY4UmVhZE9ubHki
fSkgewotICAgICAgICAgICAgJHByb3BlcnR5X2F0dHJpYnV0ZXMgLj0gIiB8IHY4OjpSZWFkT25s
eSI7Ci0gICAgICAgIH0KLQotICAgICAgICBteSAkY29tbWVudEluZm8gPSAiRnVuY3Rpb24gJyRu
YW1lJyAoRXh0QXR0cjogJyIgLiBqb2luKCcgJywga2V5cygleyRhdHRyRXh0fSkpIC4gIicpIjsK
LQotICAgICAgICBteSAkdGVtcGxhdGUgPSAicHJvdG8iOwotICAgICAgICBpZiAoJGF0dHJFeHQt
PnsiVjhVbmZvcmdlYWJsZSJ9KSB7Ci0gICAgICAgICAgICAkdGVtcGxhdGUgPSAiaW5zdGFuY2Ui
OwotICAgICAgICB9Ci0gICAgICAgIGlmICgkZnVuY3Rpb24tPmlzU3RhdGljKSB7Ci0gICAgICAg
ICAgICAkdGVtcGxhdGUgPSAiZGVzYyI7Ci0gICAgICAgIH0KLQotICAgICAgICBteSAkY29uZGl0
aW9uYWwgPSAiIjsKLSAgICAgICAgaWYgKCRhdHRyRXh0LT57IlY4RW5hYmxlZEF0UnVudGltZSJ9
KSB7Ci0gICAgICAgICAgICAjIE9ubHkgY2FsbCBTZXQoKS9TZXRBY2Nlc3NvcigpIGlmIHRoaXMg
bWV0aG9kIHNob3VsZCBiZSBlbmFibGVkCi0gICAgICAgICAgICBteSAkZW5hYmxlX2Z1bmN0aW9u
ID0gR2V0UnVudGltZUVuYWJsZUZ1bmN0aW9uTmFtZSgkZnVuY3Rpb24tPnNpZ25hdHVyZSk7Ci0g
ICAgICAgICAgICAkY29uZGl0aW9uYWwgPSAiaWYgKCR7ZW5hYmxlX2Z1bmN0aW9ufSgpKVxuICAg
ICAgICAiOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCRhdHRyRXh0LT57IkRvTm90Q2hlY2tT
ZWN1cml0eSJ9ICYmCi0gICAgICAgICAgICAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiQ2hlY2tTZWN1cml0eSJ9IHx8ICRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSkgewot
ICAgICAgICAgICAgIyBNYXJrIHRoZSBhY2Nlc3NvciBhcyBSZWFkT25seSBhbmQgc2V0IGl0IG9u
IHRoZSBwcm90byBvYmplY3Qgc28KLSAgICAgICAgICAgICMgaXQgY2FuIGJlIHNoYWRvd2VkLiBU
aGlzIGlzIHJlYWxseSBhIGhhY2sgdG8gbWFrZSBpdCB3b3JrLgotICAgICAgICAgICAgIyBUaGVy
ZSBhcmUgc2V2ZXJhbCBzY2VuZXJpYSB0byBjYWxsIGludG8gdGhlIGFjY2Vzc29yOgotICAgICAg
ICAgICAgIyAgIDEpIGZyb20gdGhlIHNhbWUgZG9tYWluOiAid2luZG93Lm9wZW4iOgotICAgICAg
ICAgICAgIyAgICAgIHRoZSBhY2Nlc3NvciBmaW5kcyB0aGUgRE9NIHdyYXBwZXIgaW4gdGhlIHBy
b3RvIGNoYWluOwotICAgICAgICAgICAgIyAgIDIpIGZyb20gdGhlIHNhbWUgZG9tYWluOiAid2lu
ZG93Ll9fcHJvdG9fXy5vcGVuIjoKLSAgICAgICAgICAgICMgICAgICB0aGUgYWNjZXNzb3Igd2ls
bCBOT1QgZmluZCBhIERPTSB3cmFwcGVyIGluIHRoZSBwcm90b3R5cGUgY2hhaW4KLSAgICAgICAg
ICAgICMgICAzKSBmcm9tIGFub3RoZXIgZG9tYWluOiAid2luZG93Lm9wZW4iOgotICAgICAgICAg
ICAgIyAgICAgIHRoZSBhY2Nlc3MgZmluZCB0aGUgRE9NIHdyYXBwZXIgaW4gdGhlIHByb3RvdHlw
ZSBjaGFpbgotICAgICAgICAgICAgIyAgICJ3aW5kb3cuX19wcm90b19fLm9wZW4iIGZyb20gYW5v
dGhlciBkb21haW4gd2lsbCBmYWlsIHdoZW4KLSAgICAgICAgICAgICMgICBhY2Nlc3NpbmcgJ19f
cHJvdG9fXycKLSAgICAgICAgICAgICMKLSAgICAgICAgICAgICMgVGhlIHNvbHV0aW9uIGlzIHZl
cnkgaGFja3kgYW5kIGZyYWdpbGUsIGl0IHJlYWxseSBuZWVkcyB0byBiZSByZXBsYWNlZAotICAg
ICAgICAgICAgIyBieSBhIGJldHRlciBzb2x1dGlvbi4KLSAgICAgICAgICAgICRwcm9wZXJ0eV9h
dHRyaWJ1dGVzIC49ICIgfCB2ODo6UmVhZE9ubHkiOwotICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsIDw8RU5EKTsKLQotICAgIC8vICRjb21tZW50SW5mbwotICAgICR7Y29uZGl0aW9uYWx9
JHRlbXBsYXRlLT5TZXRBY2Nlc3Nvcih2ODo6U3RyaW5nOjpOZXcoIiRuYW1lIiksICR7aW50ZXJm
YWNlTmFtZX1WOEludGVybmFsOjoke25hbWV9QXR0ckdldHRlciwgMCwgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+KCksIHY4OjpBTExfQ0FOX1JFQUQsIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJp
YnV0ZT4oJHByb3BlcnR5X2F0dHJpYnV0ZXMpKTsKLUVORAorICAgICAgICBpZiAoIUlzTm9ybWFs
RnVuY3Rpb24oJGRhdGFOb2RlLCAkZnVuY3Rpb24pICYmICEkZnVuY3Rpb24tPnNpZ25hdHVyZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4RW5hYmxlZFBlckNvbnRleHQifSkgeworICAgICAgICAg
ICAgR2VuZXJhdGVBYm5vcm1hbEZ1bmN0aW9uKCRkYXRhTm9kZSwgJGZ1bmN0aW9uKTsKICAgICAg
ICAgICAgICRudW1fY2FsbGJhY2tzKys7Ci0gICAgICAgICAgICBuZXh0OwotICAgICAgICB9Ci0K
LSAgICAgICAgbXkgJHNpZ25hdHVyZSA9ICJkZWZhdWx0U2lnbmF0dXJlIjsKLSAgICAgICAgaWYg
KCRhdHRyRXh0LT57IlY4RG9Ob3RDaGVja1NpZ25hdHVyZSJ9IHx8ICRmdW5jdGlvbi0+aXNTdGF0
aWMpIHsKLSAgICAgICAgICAgICRzaWduYXR1cmUgPSAidjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+
KCkiOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKFJlcXVpcmVzQ3VzdG9tU2lnbmF0dXJlKCRm
dW5jdGlvbikpIHsKLSAgICAgICAgICAgICRzaWduYXR1cmUgPSAiJHtuYW1lfVNpZ25hdHVyZSI7
Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuICAgIC8vIEN1c3RvbSBTaWduYXR1
cmUgJyRuYW1lJ1xuIiwgQ3JlYXRlQ3VzdG9tU2lnbmF0dXJlKCRmdW5jdGlvbikpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgIyBOb3JtYWwgZnVuY3Rpb24gY2FsbCBpcyBhIHRlbXBsYXRlCi0gICAg
ICAgIG15ICRjYWxsYmFjayA9IEdldEZ1bmN0aW9uVGVtcGxhdGVDYWxsYmFja05hbWUoJGZ1bmN0
aW9uLCAkaW50ZXJmYWNlTmFtZSk7Ci0KLSAgICAgICAgaWYgKCRwcm9wZXJ0eV9hdHRyaWJ1dGVz
IGVxICJ2ODo6RG9udERlbGV0ZSIpIHsKLSAgICAgICAgICAgICRwcm9wZXJ0eV9hdHRyaWJ1dGVz
ID0gIiI7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAkcHJvcGVydHlfYXR0cmlidXRl
cyA9ICIsIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4oJHByb3BlcnR5X2F0dHJp
YnV0ZXMpIjsKICAgICAgICAgfQotCi0gICAgICAgIGlmICgkdGVtcGxhdGUgZXEgInByb3RvIiAm
JiAkY29uZGl0aW9uYWwgZXEgIiIgJiYgJHNpZ25hdHVyZSBlcSAiZGVmYXVsdFNpZ25hdHVyZSIg
JiYgJHByb3BlcnR5X2F0dHJpYnV0ZXMgZXEgIiIpIHsKLSAgICAgICAgICAgICMgU3RhbmRhcmQg
dHlwZSBvZiBjYWxsYmFjaywgYWxyZWFkeSBjcmVhdGVkIGluIHRoZSBiYXRjaCwgc28gc2tpcCBp
dCBoZXJlLgotICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgfQotCi0gICAgICAgIG15ICRjb25k
aXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5n
KCRmdW5jdGlvbi0+c2lnbmF0dXJlKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjaWYg
JHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKLQotICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwotICAgICR7Y29uZGl0aW9uYWx9JHRlbXBsYXRl
LT5TZXQodjg6OlN0cmluZzo6TmV3KCIkbmFtZSIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3
KCRjYWxsYmFjaywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCksICR7c2lnbmF0dXJlfSkkcHJvcGVy
dHlfYXR0cmlidXRlcyk7Ci1FTkQKLQotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbmRp
ZiAvLyAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwotICAg
ICAgICAkbnVtX2NhbGxiYWNrcysrOwogICAgIH0KIAotICAgIGRpZSAiV3JvbmcgbnVtYmVyIG9m
IGNhbGxiYWNrcyBnZW5lcmF0ZWQgZm9yICRpbnRlcmZhY2VOYW1lICgkbnVtX2NhbGxiYWNrcywg
c2hvdWxkIGJlICR0b3RhbF9mdW5jdGlvbnMpIiBpZiAkbnVtX2NhbGxiYWNrcyAhPSAkdG90YWxf
ZnVuY3Rpb25zOwotCiAgICAgaWYgKCRoYXNfY29uc3RhbnRzKSB7CiAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCA8PEVORCk7CiAgICAgYmF0Y2hDb25maWd1cmVDb25zdGFudHMoZGVzYywgcHJv
dG8sICR7aW50ZXJmYWNlTmFtZX1Db25zdHMsIFdURl9BUlJBWV9MRU5HVEgoJHtpbnRlcmZhY2VO
YW1lfUNvbnN0cykpOwpAQCAtMjg3NSwxMSArMjg5MSwxOSBAQCBFTkQKICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIH1cbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIjZW5kaWYgLy8gJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0
cmluZzsKICAgICAgICAgfQotCi0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7Ci19
Ci1FTkQKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiIpOworICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4gZGVmYXVsdFNpZ25hdHVy
ZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhWOERPTVdpbmRvdzo6R2V0UmF3VGVtcGxhdGUoKSk7XG4i
KTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFNKGRlZmF1bHRT
aWduYXR1cmUpO1xuIik7CisgICAgICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChAeyRkYXRhTm9k
ZS0+ZnVuY3Rpb25zfSkgeworICAgICAgICAgICAgbmV4dCBpZiAkZnVuY3Rpb24tPntvdmVybG9h
ZEluZGV4fSA+IDE7CisgICAgICAgICAgICBuZXh0IGlmIElzTm9ybWFsRnVuY3Rpb24oJGRhdGFO
b2RlLCAkZnVuY3Rpb24pOworICAgICAgICAgICAgbmV4dCBpZiAhJGZ1bmN0aW9uLT5zaWduYXR1
cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJWOEVuYWJsZWRQZXJDb250ZXh0In07CisgICAgICAg
ICAgICBHZW5lcmF0ZUFibm9ybWFsRnVuY3Rpb24oJGRhdGFOb2RlLCAkZnVuY3Rpb24pOworICAg
ICAgICAgICAgJG51bV9jYWxsYmFja3MrKzsKKyAgICAgICAgfQorICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIn1cblxuIik7CiAgICAgfQorICAgIGRpZSAiV3JvbmcgbnVtYmVyIG9mIGNhbGxi
YWNrcyBnZW5lcmF0ZWQgZm9yICRpbnRlcmZhY2VOYW1lICgkbnVtX2NhbGxiYWNrcywgc2hvdWxk
IGJlICR0b3RhbF9mdW5jdGlvbnMpIiBpZiAkbnVtX2NhbGxiYWNrcyAhPSAkdG90YWxfZnVuY3Rp
b25zOwogCiAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkFjdGl2ZURP
TU9iamVjdCJ9KSB7CiAgICAgICAgICMgTWVzc2FnZVBvcnQgaXMgaGFuZGxlZCBsaWtlIGFuIGFj
dGl2ZSBkb20gb2JqZWN0IGV2ZW4gdGhvdWdoIGl0IGRvZXNuJ3QgaW5oZXJpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCmluZGV4IDA4Yjk4
NTYyZjFkNzViMDA2ZDY2NjM0Y2I5YWFkZTNmMThjODY3MjYuLjQ4MTY3OGZjYmU0MjA3YTI1MDY0
YWI3ZmUxMGY1NThhZmZjYjA5ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKQEAgLTIwNiw2ICsyMDYsOCBAQCBtb2R1bGUgdGVzdCB7
CiAgICAgICAgIC8vIFY4RW5hYmxlZFBlckNvbnRleHQgY3VycmVudGx5IG9ubHkgc3VwcG9ydHMg
YXR0cmlidXRlcy4KICAgICAgICAgYXR0cmlidXRlIFtWOEVuYWJsZWRQZXJDb250ZXh0XSBsb25n
IGVuYWJsZWRBdENvbnRleHRBdHRyMTsKICAgICAgICAgYXR0cmlidXRlIFtWOEVuYWJsZWRQZXJD
b250ZXh0PUZlYXR1cmVOYW1lXSBsb25nIGVuYWJsZWRBdENvbnRleHRBdHRyMjsKKyAgICAgICAg
W1Y4RW5hYmxlZFBlckNvbnRleHRdIGxvbmcgZW5hYmxlZFBlckNvbnRleHRNZXRob2QxKGluIGxv
bmcgbnVtYmVyVmFsdWUsIGluIERPTVN0cmluZyBzdHJpbmdWYWx1ZSk7CisgICAgICAgIFtDb25k
aXRpb25hbD1Db25kaXRpb24xLCBWOEVuYWJsZWRQZXJDb250ZXh0PUZlYXR1cmVOYW1lXSB2b2lk
IGVuYWJsZWRQZXJDb250ZXh0TWV0aG9kMihpbiBsb25nIG51bWJlclZhbHVlLCBpbiBET01TdHJp
bmcgc3RyaW5nVmFsdWUpOwogI2VuZGlmCiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCAwMTA2NzA0ZGYzMGIzYjU2NDZjYjM0ZDYz
ZGMwZGEyNzMxMjI4NjUwLi40MmNkYTdhMzEzZGI1Y2MwNjAwNjRmYjJlMWM0MDgyMDY3MTNhMGEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNw
cApAQCAtMzgsNyArMzgsNiBAQAogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCIK
ICNpbmNsdWRlICJTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlICJET01XaW5k
b3cuaCIKLSNpbmNsdWRlICJET01XaW5kb3dQYWdlUG9wdXAuaCIKICNpbmNsdWRlICJFdmVudC5o
IgogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCkBA
IC0yNTAsMzYgKzI0OSw2IEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6YmluZFRvV2luZG93T2Jq
ZWN0KEZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiBrZXksIE5QT2JqCiAgICAgZ2xvYmFsLT5T
ZXQodjhTdHJpbmcoa2V5KSwgdmFsdWUpOwogfQogCi0jaWYgRU5BQkxFKFBBR0VfUE9QVVApCi1z
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHNldFZhbHVlQW5kQ2xvc2VQb3B1cENhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCi17Ci0gICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAy
KQotICAgICAgICByZXR1cm4gVjhQcm94eTo6dGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihh
cmdzLkdldElzb2xhdGUoKSk7Ci0gICAgRE9NV2luZG93KiBpbXAgPSBWOERPTVdpbmRvdzo6dG9O
YXRpdmUoYXJncy5EYXRhKCktPlRvT2JqZWN0KCkpOwotICAgIEVYQ0VQVElPTl9CTE9DSyhpbnQs
IGludFZhbHVlLCB0b0ludDMyKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1
bHRJc1VuZGVmaW5lZCkpKTsKLSAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JM
T0NLKFY4UGFyYW1ldGVyPD4sIHN0cmluZ1ZhbHVlLCBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihh
cmdzLCAxLCBEZWZhdWx0SXNVbmRlZmluZWQpKTsKLSAgICBET01XaW5kb3dQYWdlUG9wdXA6OnNl
dFZhbHVlQW5kQ2xvc2VQb3B1cChpbXAsIGludFZhbHVlLCBzdHJpbmdWYWx1ZSk7Ci0gICAgLy8g
c2V0VmFsdWVBbmRDbG9zZVBvcHVwKCkgZGVsZXRlcyB0aGUgd2luZG93LiBEbyBub3QgYWNjZXNz
IGl0LgotICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Ci19Ci0KLXZvaWQgU2NyaXB0Q29udHJv
bGxlcjo6aW5zdGFsbEZ1bmN0aW9uc0ZvclBhZ2VQb3B1cChGcmFtZSogZnJhbWUsIFBhZ2VQb3B1
cENsaWVudCogcG9wdXBDbGllbnQpCi17Ci0gICAgQVNTRVJUKGZyYW1lKTsKLSAgICBBU1NFUlQo
cG9wdXBDbGllbnQpOwotICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKLSAgICB2ODo6
SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0ID0gVjhQcm94eTo6bWFpbldvcmxkQ29udGV4dChm
cmFtZSk7Ci0gICAgaWYgKGNvbnRleHQuSXNFbXB0eSgpKSB7Ci0gICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIHY4OjpDb250ZXh0OjpTY29w
ZSBzY29wZShjb250ZXh0KTsKLSAgICBET01XaW5kb3dQYWdlUG9wdXA6Omluc3RhbGwoZnJhbWUt
PmV4aXN0aW5nRE9NV2luZG93KCksIHBvcHVwQ2xpZW50KTsKLSAgICB2ODo6TG9jYWw8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0gdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhzZXRWYWx1
ZUFuZENsb3NlUG9wdXBDYWxsYmFjaywgVjhET01XaW5kb3c6OndyYXAoZnJhbWUtPmV4aXN0aW5n
RE9NV2luZG93KCkpKTsKLSAgICBjb250ZXh0LT5HbG9iYWwoKS0+U2V0KHY4OjpTdHJpbmc6Ok5l
dygic2V0VmFsdWVBbmRDbG9zZVBvcHVwIiksIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPih0ZW1w
bC0+R2V0RnVuY3Rpb24oKSkpOwotfQotI2VuZGlmCi0KIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6
Y29sbGVjdEdhcmJhZ2UoKQogewogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuaAppbmRleCBkNzVm
YjllMWE2YTA5MWNhZTQ3ZmI1ZmRkMjk1YzhkODIwZmNkMzkyLi5jNzFkMjg0YjgyOWUzMWQ3OGY2
ZWRlNmI1OThkYjg1Y2Y3MjA3ZTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9TY3JpcHRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
U2NyaXB0Q29udHJvbGxlci5oCkBAIC0xMjIsOSArMTIyLDYgQEAgcHVibGljOgogICAgIHZvaWQg
YmluZFRvV2luZG93T2JqZWN0KEZyYW1lKiwgY29uc3QgU3RyaW5nJiBrZXksIE5QT2JqZWN0Kik7
CiAKICAgICBQYXNzU2NyaXB0SW5zdGFuY2UgY3JlYXRlU2NyaXB0SW5zdGFuY2VGb3JXaWRnZXQo
V2lkZ2V0Kik7Ci0jaWYgRU5BQkxFKFBBR0VfUE9QVVApCi0gICAgdm9pZCBpbnN0YWxsRnVuY3Rp
b25zRm9yUGFnZVBvcHVwKEZyYW1lKiwgUGFnZVBvcHVwQ2xpZW50Kik7Ci0jZW5kaWYKIAogICAg
IC8vIENoZWNrIGlmIHRoZSBqYXZhc2NyaXB0IGVuZ2luZSBoYXMgYmVlbiBpbml0aWFsaXplZC4K
ICAgICBib29sIGhhdmVJbnRlcnByZXRlcigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA3YzlmODUzYmQwZmRlYjIwOWRlZmNmZjUyNzllMjQ0
ZmIwZDcyZGYxLi5iMGRkOWY1MmUyYzJkYjhhMzU2OWVhMDk5ZWFlYjAyMzE2NWJiY2VhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMzEyLDYgKzMxMiw5
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBib29sIGFsbG93UnVubmlu
Z0luc2VjdXJlQ29udGVudChib29sIGVuYWJsZWRQZXJTZXR0aW5ncywgU2VjdXJpdHlPcmlnaW4q
LCBjb25zdCBLVVJMJikgeyByZXR1cm4gZW5hYmxlZFBlclNldHRpbmdzOyB9CiAKICAgICAgICAg
dmlydHVhbCBib29sIHNoYWRvd0RPTUFsbG93ZWQoYm9vbCBlbmFibGVkQXNSdW50aW1lRmVhdHVy
ZXMpIHsgcmV0dXJuIGVuYWJsZWRBc1J1bnRpbWVGZWF0dXJlczsgfQorI2lmIEVOQUJMRShQQUdF
X1BPUFVQKQorICAgICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dQYWdlUG9wdXAoKSB7IHJldHVybiBm
YWxzZTsgfQorI2VuZGlmCiAKICAgICAgICAgLy8gVGhpcyBjYWxsYmFjayBub3RpZmllcyB0aGUg
Y2xpZW50IHRoYXQgdGhlIGZyYW1lIHdhcyBhYm91dCB0byBydW4KICAgICAgICAgLy8gSmF2YVNj
cmlwdCBidXQgZGlkIG5vdCBiZWNhdXNlIGFsbG93U2NyaXB0IHJldHVybmVkIGZhbHNlLiBXZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3dQYWdlUG9wdXAuaWRsIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3dQYWdlUG9wdXAuaWRsCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFh
Y2Y5NDY5Nzk4YzdlNTkwMjc4MDAzNzI4YzM3NjI4Y2VhMWNjMjcKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvd1BhZ2VQb3B1cC5pZGwKQEAgLTAsMCArMSwx
MCBAQAorbW9kdWxlIHdpbmRvdyB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRp
b25hbD1QQUdFX1BPUFVQLAorICAgICAgICBTdXBwbGVtZW50YWw9RE9NV2luZG93CisgICAgXSBE
T01XaW5kb3dQYWdlUG9wdXAgeworICAgICAgICBbVjhFbmFibGVkUGVyQ29udGV4dD1wYWdlUG9w
dXBdIHZvaWQgc2V0VmFsdWVBbmRDbG9zZVBvcHVwKGluIGxvbmcgbnVtYmVyVmFsdWUsIGluIERP
TVN0cmluZyBzdHJpbmdWYWx1ZSk7CisgICAgfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVBvcHVwSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJQYWdlUG9wdXBJbXBsLmNwcAppbmRleCAxYWQ0MTdiYWQ2ZDM1ZDEzYjFk
ZjcwZGNlOTVlNDEyN2FhNGZmODJiLi42MTdiNzI1Y2VlMmI1ZjlmMmNmMjhlM2NhMjg2Y2Y1MGE3
NGZjYzhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQYWdlUG9w
dXBJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQYWdlUG9wdXBJ
bXBsLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIldlYlBhZ2VQb3B1cEltcGwuaCIK
IAogI2luY2x1ZGUgIkNocm9tZS5oIgorI2luY2x1ZGUgIkRPTVdpbmRvd1BhZ2VQb3B1cC5oIgog
I2luY2x1ZGUgIkVtcHR5Q2xpZW50cy5oIgogI2luY2x1ZGUgIkZpbGVDaG9vc2VyLmgiCiAjaW5j
bHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCkBAIC0xMjcsNiArMTI4LDEwIEBAIHByaXZhdGU6CiAg
ICAgV2ViUGFnZVBvcHVwSW1wbCogbV9wb3B1cDsKIH07CiAKK2NsYXNzIFBhZ2VQb3B1cEZyYW1l
TG9hZGVyQ2xpZW50IDogcHVibGljIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQgeworICAgIHZpcnR1
YWwgYm9vbCBhbGxvd1BhZ2VQb3B1cCgpIE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KK307CisK
IC8vIFdlYlBhZ2VQb3B1cEltcGwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBXZWJQYWdlUG9wdXBJbXBsOjpXZWJQYWdl
UG9wdXBJbXBsKFdlYldpZGdldENsaWVudCogY2xpZW50KQpAQCAtMTgxLDggKzE4Niw4IEBAIGJv
b2wgV2ViUGFnZVBvcHVwSW1wbDo6aW5pdFBhZ2UoKQogICAgIG1fcGFnZS0+c2V0dGluZ3MoKS0+
c2V0U2NyaXB0RW5hYmxlZCh0cnVlKTsKICAgICBtX3BhZ2UtPnNldHRpbmdzKCktPnNldEFsbG93
U2NyaXB0c1RvQ2xvc2VXaW5kb3dzKHRydWUpOwogCi0gICAgc3RhdGljIEZyYW1lTG9hZGVyQ2xp
ZW50KiBlbXB0eUZyYW1lTG9hZGVyQ2xpZW50ID0gIG5ldyBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50
OwotICAgIFJlZlB0cjxGcmFtZT4gZnJhbWUgPSBGcmFtZTo6Y3JlYXRlKG1fcGFnZS5nZXQoKSwg
MCwgZW1wdHlGcmFtZUxvYWRlckNsaWVudCk7CisgICAgc3RhdGljIEZyYW1lTG9hZGVyQ2xpZW50
KiBwYWdlUG9wdXBGcmFtZUxvYWRlckNsaWVudCA9ICBuZXcgUGFnZVBvcHVwRnJhbWVMb2FkZXJD
bGllbnQ7CisgICAgUmVmUHRyPEZyYW1lPiBmcmFtZSA9IEZyYW1lOjpjcmVhdGUobV9wYWdlLmdl
dCgpLCAwLCBwYWdlUG9wdXBGcmFtZUxvYWRlckNsaWVudCk7CiAgICAgZnJhbWUtPnNldFZpZXco
RnJhbWVWaWV3OjpjcmVhdGUoZnJhbWUuZ2V0KCkpKTsKICAgICBmcmFtZS0+aW5pdCgpOwogICAg
IGZyYW1lLT52aWV3KCktPnJlc2l6ZShtX3BvcHVwQ2xpZW50LT5jb250ZW50U2l6ZSgpKTsKQEAg
LTE5NSw3ICsyMDAsOCBAQCBib29sIFdlYlBhZ2VQb3B1cEltcGw6OmluaXRQYWdlKCkKICAgICBt
X3BvcHVwQ2xpZW50LT53cml0ZURvY3VtZW50KCp3cml0ZXIpOwogICAgIHdyaXRlci0+ZW5kKCk7
CiAKLSAgICBmcmFtZS0+c2NyaXB0KCktPmluc3RhbGxGdW5jdGlvbnNGb3JQYWdlUG9wdXAoZnJh
bWUuZ2V0KCksIG1fcG9wdXBDbGllbnQpOworICAgIEFTU0VSVChmcmFtZS0+ZXhpc3RpbmdET01X
aW5kb3coKSk7CisgICAgRE9NV2luZG93UGFnZVBvcHVwOjppbnN0YWxsKGZyYW1lLT5leGlzdGlu
Z0RPTVdpbmRvdygpLCBtX3BvcHVwQ2xpZW50KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143479</attachid>
            <date>2012-05-22 23:57:33 -0700</date>
            <delta_ts>2012-05-24 22:42:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87086-20120523155731.patch</filename>
            <type>text/plain</type>
            <size>25471</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4MTE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTgwYTg5Nzk1ZDIzMDQ3
OWQxMWY0ZWViNmQ1YzZiMTMzZjIwMDQ3MS4uNGYwYTFkMjYyMGYxMzA3NmE3ZWVmZmYzOWUzMDZm
OWJiZWJlNjk0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTA1LTIzICBLZW50
IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAgICBQQUdFX1BPUFVQOiB3aW5k
b3cuc2V0VmFsdWVBbmRDbG9zZVBvcHVwIHNob3VsZCBiZSBtb3ZlZCB0byBhCisgICAgICAgIHBl
ci1jb250ZXh0IHByb3BlcnR5IG9mIERPTVdpbmRvdy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3MDg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgLSBJbnRyb2R1Y2Ugd2luZG93LnBhZ2VQYWdlUG9wdXBD
b250cm9sbGVyIHByb3BlcnR5IGFzIFY4RW5hYmxlZFBlckNvbnRleHQuCisgICAgICAgIC0gTW92
ZSB3aW5kb3cuc2V0VmFsdWVBbmRDbG9zZVBvcHVwKCkgdG8gd2luZG93LnBhZ2VQb3B1cENvbnRy
b2xsZXIuCisgICAgICAgIFNvLCB3ZSBjYW4gcmVtb3ZlIGFkLWhvYyBTY3JpcHRDb250cm9sbGVy
OjppbnN0YWxsRnVuY3Rpb25zRm9yUGFnZVBvcHVwKCkuCisKKyAgICAgICAgTm8gYmVoYXZpb3Ig
Y2hhbmdlLgorCisgICAgICAgICogUmVzb3VyY2VzL2NhbGVuZGFyUGlja2VyLmpzOgorICAgICAg
ICAoc3VibWl0VmFsdWUpOiBVc2Ugd2luZG93LnBhZ2VQb3B1cENvbnRyb2xsZXIuCisgICAgICAg
IChoYW5kbGVDYW5jZWwpOiBkaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6IEFkZCBuZXcg
ZmlsZXMuCisgICAgICAgICogYmluZGluZ3MvZ2VuZXJpYy9Db250ZXh0RW5hYmxlZEZlYXR1cmVz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRFbmFibGVkRmVhdHVyZXM6OnBhZ2VQb3B1
cEVuYWJsZWQpOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9nZW5lcmljL0NvbnRleHRFbmFi
bGVkRmVhdHVyZXMuaDoKKyAgICAgICAgKENvbnRleHRFbmFibGVkRmVhdHVyZXMpOiBBZGRlZC4K
KyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcDogUmVtb3ZlIGluc3Rh
bGxGdW5jdGlvbnNGb3JQYWdlUG9wdXAoKS4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRD
b250cm9sbGVyLmg6IGRpdHRvLgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5o
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnQ6OmFsbG93UGFnZVBvcHVwKTog
QWRkZWQuCisgICAgICAgICogcGFnZS9ET01XaW5kb3dQYWdlUG9wdXAuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RE9NV2luZG93UGFnZVBvcHVwOjpET01XaW5kb3dQYWdlUG9wdXApOgorICAgICAg
ICBDcmVhdGVzIGEgUGFnZVBvcHVwQ29udHJvbGxlciBvYmplY3QgZm9yIHRoZSBzcGVjaWZpZWQg
UGFnZVBvcHVwQ2xpZW50LgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93UGFnZVBvcHVwOjp+
RE9NV2luZG93UGFnZVBvcHVwKToKKyAgICAgICAgRW1wdHkgZGVzdHJ1Y3RvciB0byBnZW5lcmF0
ZSB0aGUgUmVmUHRyPFBhZ2VQb3B1cENvbnRyb2xsZXI+IGRlc3RydWN0b3IuCisgICAgICAgIChX
ZWJDb3JlOjpET01XaW5kb3dQYWdlUG9wdXA6OnBhZ2VQb3B1cENvbnRyb2xsZXIpOgorICAgICAg
ICAqIHBhZ2UvRE9NV2luZG93UGFnZVBvcHVwLmg6CisgICAgICAgIChET01XaW5kb3dQYWdlUG9w
dXApOgorICAgICAgICAgLSBSZW1vdmUgc2V0VmFsdWVBbmRDbG9zZVBvcHVwKCkKKyAgICAgICAg
IC0gQWRkIHBhZ2VQb3B1cENvbnRyb2xsZXIoKQorICAgICAgICAgLSBDaGFuZ2UgdGhlIGRhdGEg
bWVtYmVyIGZyb20gUGFnZVBvcHVwQ2xpZW50IHRvIFBhZ2VQb3B1cENvbnRyb2xsZXIuCisgICAg
ICAgICogcGFnZS9ET01XaW5kb3dQYWdlUG9wdXAuaWRsOiBTdXBwbHkgcGVyLWNvbnRleHQgd2lu
ZG93LnBhZ2VQb3B1cENvbnRyb2xsZXIuCisgICAgICAgICogcGFnZS9QYWdlUG9wdXBDb250cm9s
bGVyLmNwcDogQWRkZWQuIFRoaXMgb2JqZWN0IGlzIGF0dGFjaGVkIHRvIHdpbmRvdy4KKyAgICAg
ICAgKiBwYWdlL1BhZ2VQb3B1cENvbnRyb2xsZXIuaDogZGl0dG8uCisgICAgICAgICogcGFnZS9Q
YWdlUG9wdXBDb250cm9sbGVyLmlkbDogZGl0dG8uCisKIDIwMTItMDUtMjEgIFNoYXduIFNpbmdo
ICA8c2hhd25zaW5naEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSW1wcm92ZSBXM0MgY29uZm9y
bWFuY2Ugb2YgYmFja2ZhY2UtdmlzaWJpbGl0eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRl
eCAzNTEyMjE0OTQ1M2QwYWI2NTBkMGNkN2IwZDg1ODhkNDM3Nzg0ZjNiLi4xZjE3MzAxMjZkZmU5
YWM4OTJmOGIxNWRmMDQyYmJlYWExZDZmZGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE5IEBACisyMDEyLTA1LTIyICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBQQUdFX1BPUFVQOiB3aW5kb3cuc2V0VmFsdWVBbmRDbG9zZVBvcHVw
IHNob3VsZCBiZSBtb3ZlZCB0byBhCisgICAgICAgIHBlci1jb250ZXh0IHByb3BlcnR5IG9mIERP
TVdpbmRvdy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTg3MDg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBzcmMvV2ViUGFnZVBvcHVwSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQpOiBBZGQgUGFnZVBv
cHVwRnJhbWVMb2FkZXJDbGllbnQsIHdoaWNoIGFsbG93cyB3aW5kb3cucGFnZVBvcHVwQ29udHJv
bGxlci4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBvcHVwSW1wbDo6aW5pdFBhZ2UpOgorICAg
ICAgICAgLSBVc2UgUGFnZVBvcHVwRnJhbWVMb2FkZXJDbGllbnQKKyAgICAgICAgIC0gUmVtb3Zl
IHRoZSBjYWxsIG9mIFNjcmlwdENvbnRyb2xsZXI6Omluc3RhbGxGdW5jdGlvbnNGb3JQYWdlUG9w
dXAoKS4KKyAgICAgICAgIC0gQ2FsbCBET01XaW5kb3dQYWdlUG9wdXA6Omluc3RhbGwoKSB0byBp
bmZvcm0gbV9wb3B1cENsaWVudCB0byBhCisgICAgICAgICAgIERPTVdpbmRvd1BhZ2VQb3B1cCBv
YmplY3QgZm9yIHRoZSBET01XaW5kb3cuCisKIDIwMTItMDUtMjEgIFNoYXduIFNpbmdoICA8c2hh
d25zaW5naEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSW1wcm92ZSBXM0MgY29uZm9ybWFuY2Ug
b2YgYmFja2ZhY2UtdmlzaWJpbGl0eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUmVzb3Vy
Y2VzL2NhbGVuZGFyUGlja2VyLmpzIGIvU291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL2NhbGVuZGFy
UGlja2VyLmpzCmluZGV4IDViMGU1NmRkYzFjOWY5MjliODA1MDllNzIwMmU1MmJlOTM5OGIzMmYu
LjRhN2VmMDZhYzJjMThiYWI3NjFmYmVhNzgzNzYyOGEzN2Y2NGU2YjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1Jlc291cmNlcy9jYWxlbmRhclBpY2tlci5qcworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9SZXNvdXJjZXMvY2FsZW5kYXJQaWNrZXIuanMKQEAgLTEwODAsMTEgKzEwODAsMTEgQEAg
ZnVuY3Rpb24gaGFuZGxlQ2xlYXIoKSB7CiAgKiBAcGFyYW0ge3N0cmluZ30gdmFsdWUKICAqLwog
ZnVuY3Rpb24gc3VibWl0VmFsdWUodmFsdWUpIHsKLSAgICB3aW5kb3cuc2V0VmFsdWVBbmRDbG9z
ZVBvcHVwKDAsIHZhbHVlKTsKKyAgICB3aW5kb3cucGFnZVBvcHVwQ29udHJvbGxlci5zZXRWYWx1
ZUFuZENsb3NlUG9wdXAoMCwgdmFsdWUpOwogfQogCiBmdW5jdGlvbiBoYW5kbGVDYW5jZWwoKSB7
Ci0gICAgd2luZG93LnNldFZhbHVlQW5kQ2xvc2VQb3B1cCgtMSwgIiIpOworICAgIHdpbmRvdy5w
YWdlUG9wdXBDb250cm9sbGVyLnNldFZhbHVlQW5kQ2xvc2VQb3B1cCgtMSwgIiIpOwogfQogCiAv
KioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQppbmRleCA0ODJhYzgyYzRjMTkxMTRiMDRmY2RlZWZiMzU1NTg3ZDJm
OGU5NjQ4Li5lMzZlNDUyYWYyNWJlODA4MGUyZWU3MGVmODY1OGM2NjM3YjY4N2FkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCkBAIC0xMTQzLDEyICsxMTQzLDE0IEBACiAgICAgICAgICAgICAncGFnZS9Dcnlw
dG8uaWRsJywKICAgICAgICAgICAgICdwYWdlL0RPTVNlbGVjdGlvbi5pZGwnLAogICAgICAgICAg
ICAgJ3BhZ2UvRE9NV2luZG93LmlkbCcsCisgICAgICAgICAgICAncGFnZS9ET01XaW5kb3dQYWdl
UG9wdXAuaWRsJywKICAgICAgICAgICAgICdwYWdlL0V2ZW50U291cmNlLmlkbCcsCiAgICAgICAg
ICAgICAncGFnZS9IaXN0b3J5LmlkbCcsCiAgICAgICAgICAgICAncGFnZS9Mb2NhdGlvbi5pZGwn
LAogICAgICAgICAgICAgJ3BhZ2UvTWVtb3J5SW5mby5pZGwnLAogICAgICAgICAgICAgJ3BhZ2Uv
TmF2aWdhdG9yLmlkbCcsCiAgICAgICAgICAgICAncGFnZS9OYXZpZ2F0b3JSZWdpc3RlclByb3Rv
Y29sSGFuZGxlci5pZGwnLAorICAgICAgICAgICAgJ3BhZ2UvUGFnZVBvcHVwQ29udHJvbGxlci5p
ZGwnLAogICAgICAgICAgICAgJ3BhZ2UvUGVyZm9ybWFuY2UuaWRsJywKICAgICAgICAgICAgICdw
YWdlL1BlcmZvcm1hbmNlRW50cnkuaWRsJywKICAgICAgICAgICAgICdwYWdlL1BlcmZvcm1hbmNl
RW50cnlMaXN0LmlkbCcsCkBAIC0zMDMzLDYgKzMwMzUsOCBAQAogICAgICAgICAgICAgJ3BhZ2Uv
UGFnZUdyb3VwLmNwcCcsCiAgICAgICAgICAgICAncGFnZS9QYWdlR3JvdXBMb2FkRGVmZXJyZXIu
Y3BwJywKICAgICAgICAgICAgICdwYWdlL1BhZ2VHcm91cExvYWREZWZlcnJlci5oJywKKyAgICAg
ICAgICAgICdwYWdlL1BhZ2VQb3B1cENvbnRyb2xsZXIuY3BwJywKKyAgICAgICAgICAgICdwYWdl
L1BhZ2VQb3B1cENvbnRyb2xsZXIuaCcsCiAgICAgICAgICAgICAncGFnZS9QYWdlU2VyaWFsaXpl
ci5jcHAnLAogICAgICAgICAgICAgJ3BhZ2UvUGFnZVZpc2liaWxpdHlTdGF0ZS5jcHAnLAogICAg
ICAgICAgICAgJ3BhZ2UvUGVyZm9ybWFuY2UuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2dlbmVyaWMvQ29udGV4dEVuYWJsZWRGZWF0dXJlcy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL0NvbnRleHRFbmFibGVkRmVhdHVyZXMuY3BwCmluZGV4
IDcxNzRjOGU1MTY1YjA2MzAyMGUxZDQ5NjhkNmY4ZTFmZDQxOGEzYzcuLjliYWI1NGRjZGU2OGIx
Njk2Y2Q0NjBiNTVhMTM2YjkxNGIwMWQxZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2dlbmVyaWMvQ29udGV4dEVuYWJsZWRGZWF0dXJlcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9Db250ZXh0RW5hYmxlZEZlYXR1cmVzLmNwcApAQCAtNTAs
NCArNTAsMTUgQEAgYm9vbCBDb250ZXh0RW5hYmxlZEZlYXR1cmVzOjpzaGFkb3dET01FbmFibGVk
KERPTVdpbmRvdyogd2luZG93KQogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoUEFHRV9QT1BVUCkK
K2Jvb2wgQ29udGV4dEVuYWJsZWRGZWF0dXJlczo6cGFnZVBvcHVwRW5hYmxlZChET01XaW5kb3cq
IHdpbmRvdykKK3sKKyAgICBpZiAoIXdpbmRvdykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IGlmIChGcmFtZSogZnJhbWUgPSB3aW5kb3ctPmZyYW1lKCkpCisgICAgICAgIHJldHVybiBmcmFt
ZS0+bG9hZGVyKCktPmNsaWVudCgpLT5hbGxvd1BhZ2VQb3B1cCgpOworICAgIHJldHVybiBmYWxz
ZTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL0NvbnRleHRFbmFibGVkRmVhdHVyZXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvQ29udGV4dEVuYWJsZWRGZWF0dXJlcy5oCmlu
ZGV4IDVhMjA0ZWVjZTQ5MDZlM2IzYjY4OTU4MWNmZGMyMjFhZWYzZThlOGUuLjRjZWY3Njg3ZDhj
MTdhZGM4YThmZjU3ZDU2ODBhYzIyOTc5MDZmMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2dlbmVyaWMvQ29udGV4dEVuYWJsZWRGZWF0dXJlcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvQ29udGV4dEVuYWJsZWRGZWF0dXJlcy5oCkBAIC00NCw2
ICs0NCwxMCBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgc3RhdGljIGJv
b2wgc2hhZG93RE9NRW5hYmxlZChET01XaW5kb3cqKTsKICNlbmRpZgorCisjaWYgRU5BQkxFKFBB
R0VfUE9QVVApCisgICAgc3RhdGljIGJvb2wgcGFnZVBvcHVwRW5hYmxlZChET01XaW5kb3cqKTsK
KyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCAwMTA2NzA0ZGYzMGIzYjU2
NDZjYjM0ZDYzZGMwZGEyNzMxMjI4NjUwLi40MmNkYTdhMzEzZGI1Y2MwNjAwNjRmYjJlMWM0MDgy
MDY3MTNhMGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRD
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250
cm9sbGVyLmNwcApAQCAtMzgsNyArMzgsNiBAQAogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFja0Zh
Y3RvcnkuaCIKICNpbmNsdWRlICJTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRl
ICJET01XaW5kb3cuaCIKLSNpbmNsdWRlICJET01XaW5kb3dQYWdlUG9wdXAuaCIKICNpbmNsdWRl
ICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJFdmVudE5h
bWVzLmgiCkBAIC0yNTAsMzYgKzI0OSw2IEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6YmluZFRv
V2luZG93T2JqZWN0KEZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiBrZXksIE5QT2JqCiAgICAg
Z2xvYmFsLT5TZXQodjhTdHJpbmcoa2V5KSwgdmFsdWUpOwogfQogCi0jaWYgRU5BQkxFKFBBR0Vf
UE9QVVApCi1zdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHNldFZhbHVlQW5kQ2xvc2VQb3B1
cENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCi17Ci0gICAgaWYgKGFyZ3MuTGVu
Z3RoKCkgPCAyKQotICAgICAgICByZXR1cm4gVjhQcm94eTo6dGhyb3dOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7Ci0gICAgRE9NV2luZG93KiBpbXAgPSBWOERPTVdp
bmRvdzo6dG9OYXRpdmUoYXJncy5EYXRhKCktPlRvT2JqZWN0KCkpOwotICAgIEVYQ0VQVElPTl9C
TE9DSyhpbnQsIGludFZhbHVlLCB0b0ludDMyKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3Ms
IDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpKTsKLSAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhD
RVBUSU9OX0JMT0NLKFY4UGFyYW1ldGVyPD4sIHN0cmluZ1ZhbHVlLCBNQVlCRV9NSVNTSU5HX1BB
UkFNRVRFUihhcmdzLCAxLCBEZWZhdWx0SXNVbmRlZmluZWQpKTsKLSAgICBET01XaW5kb3dQYWdl
UG9wdXA6OnNldFZhbHVlQW5kQ2xvc2VQb3B1cChpbXAsIGludFZhbHVlLCBzdHJpbmdWYWx1ZSk7
Ci0gICAgLy8gc2V0VmFsdWVBbmRDbG9zZVBvcHVwKCkgZGVsZXRlcyB0aGUgd2luZG93LiBEbyBu
b3QgYWNjZXNzIGl0LgotICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Ci19Ci0KLXZvaWQgU2Ny
aXB0Q29udHJvbGxlcjo6aW5zdGFsbEZ1bmN0aW9uc0ZvclBhZ2VQb3B1cChGcmFtZSogZnJhbWUs
IFBhZ2VQb3B1cENsaWVudCogcG9wdXBDbGllbnQpCi17Ci0gICAgQVNTRVJUKGZyYW1lKTsKLSAg
ICBBU1NFUlQocG9wdXBDbGllbnQpOwotICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsK
LSAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0ID0gVjhQcm94eTo6bWFpbldvcmxk
Q29udGV4dChmcmFtZSk7Ci0gICAgaWYgKGNvbnRleHQuSXNFbXB0eSgpKSB7Ci0gICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIHY4OjpDb250
ZXh0OjpTY29wZSBzY29wZShjb250ZXh0KTsKLSAgICBET01XaW5kb3dQYWdlUG9wdXA6Omluc3Rh
bGwoZnJhbWUtPmV4aXN0aW5nRE9NV2luZG93KCksIHBvcHVwQ2xpZW50KTsKLSAgICB2ODo6TG9j
YWw8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0gdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5l
dyhzZXRWYWx1ZUFuZENsb3NlUG9wdXBDYWxsYmFjaywgVjhET01XaW5kb3c6OndyYXAoZnJhbWUt
PmV4aXN0aW5nRE9NV2luZG93KCkpKTsKLSAgICBjb250ZXh0LT5HbG9iYWwoKS0+U2V0KHY4OjpT
dHJpbmc6Ok5ldygic2V0VmFsdWVBbmRDbG9zZVBvcHVwIiksIHY4OjpIYW5kbGU8djg6OkZ1bmN0
aW9uPih0ZW1wbC0+R2V0RnVuY3Rpb24oKSkpOwotfQotI2VuZGlmCi0KIHZvaWQgU2NyaXB0Q29u
dHJvbGxlcjo6Y29sbGVjdEdhcmJhZ2UoKQogewogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVT
Y29wZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRy
b2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuaApp
bmRleCBkNzVmYjllMWE2YTA5MWNhZTQ3ZmI1ZmRkMjk1YzhkODIwZmNkMzkyLi5jNzFkMjg0Yjgy
OWUzMWQ3OGY2ZWRlNmI1OThkYjg1Y2Y3MjA3ZTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5oCkBAIC0xMjIsOSArMTIyLDYgQEAgcHVibGljOgog
ICAgIHZvaWQgYmluZFRvV2luZG93T2JqZWN0KEZyYW1lKiwgY29uc3QgU3RyaW5nJiBrZXksIE5Q
T2JqZWN0Kik7CiAKICAgICBQYXNzU2NyaXB0SW5zdGFuY2UgY3JlYXRlU2NyaXB0SW5zdGFuY2VG
b3JXaWRnZXQoV2lkZ2V0Kik7Ci0jaWYgRU5BQkxFKFBBR0VfUE9QVVApCi0gICAgdm9pZCBpbnN0
YWxsRnVuY3Rpb25zRm9yUGFnZVBvcHVwKEZyYW1lKiwgUGFnZVBvcHVwQ2xpZW50Kik7Ci0jZW5k
aWYKIAogICAgIC8vIENoZWNrIGlmIHRoZSBqYXZhc2NyaXB0IGVuZ2luZSBoYXMgYmVlbiBpbml0
aWFsaXplZC4KICAgICBib29sIGhhdmVJbnRlcnByZXRlcigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA3YzlmODUzYmQwZmRlYjIwOWRlZmNm
ZjUyNzllMjQ0ZmIwZDcyZGYxLi5iMGRkOWY1MmUyYzJkYjhhMzU2OWVhMDk5ZWFlYjAyMzE2NWJi
Y2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMzEy
LDYgKzMxMiw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBib29sIGFs
bG93UnVubmluZ0luc2VjdXJlQ29udGVudChib29sIGVuYWJsZWRQZXJTZXR0aW5ncywgU2VjdXJp
dHlPcmlnaW4qLCBjb25zdCBLVVJMJikgeyByZXR1cm4gZW5hYmxlZFBlclNldHRpbmdzOyB9CiAK
ICAgICAgICAgdmlydHVhbCBib29sIHNoYWRvd0RPTUFsbG93ZWQoYm9vbCBlbmFibGVkQXNSdW50
aW1lRmVhdHVyZXMpIHsgcmV0dXJuIGVuYWJsZWRBc1J1bnRpbWVGZWF0dXJlczsgfQorI2lmIEVO
QUJMRShQQUdFX1BPUFVQKQorICAgICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dQYWdlUG9wdXAoKSB7
IHJldHVybiBmYWxzZTsgfQorI2VuZGlmCiAKICAgICAgICAgLy8gVGhpcyBjYWxsYmFjayBub3Rp
ZmllcyB0aGUgY2xpZW50IHRoYXQgdGhlIGZyYW1lIHdhcyBhYm91dCB0byBydW4KICAgICAgICAg
Ly8gSmF2YVNjcmlwdCBidXQgZGlkIG5vdCBiZWNhdXNlIGFsbG93U2NyaXB0IHJldHVybmVkIGZh
bHNlLiBXZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3dQYWdlUG9w
dXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3dQYWdlUG9wdXAuY3BwCmluZGV4
IDk5NGNkMzk2ZTUxNTdkMzAyMjgyNjkyMTM5NDE3NGFlMzcwYzBiMGQuLjA5ZTNjMTZjMGU3NzBh
OGJiOTgzNTJmNDU4Njg2NDU0MmNjMTU2ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93UGFnZVBvcHVwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvd1BhZ2VQb3B1cC5jcHAKQEAgLTMzLDI4ICszMywzMSBAQAogCiAjaWYgRU5BQkxFKFBBR0Vf
UE9QVVApCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCi0jaW5jbHVkZSAiUGFnZVBvcHVwQ2xpZW50
LmgiCisjaW5jbHVkZSAiUGFnZVBvcHVwQ29udHJvbGxlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIERPTVdpbmRvd1BhZ2VQb3B1cDo6RE9NV2luZG93UGFnZVBvcHVwKFBhZ2VQb3B1cENs
aWVudCogcG9wdXBDbGllbnQpCi0gICAgOiBtX3BvcHVwQ2xpZW50KHBvcHVwQ2xpZW50KQorICAg
IDogbV9jb250cm9sbGVyKFBhZ2VQb3B1cENvbnRyb2xsZXI6OmNyZWF0ZShwb3B1cENsaWVudCkp
CiB7CiAgICAgQVNTRVJUKHBvcHVwQ2xpZW50KTsKIH0KIAorRE9NV2luZG93UGFnZVBvcHVwOjp+
RE9NV2luZG93UGFnZVBvcHVwKCkKK3sKK30KKwogY29uc3QgQXRvbWljU3RyaW5nJiBET01XaW5k
b3dQYWdlUG9wdXA6OnN1cHBsZW1lbnROYW1lKCkKIHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KEF0b21pY1N0cmluZywgbmFtZSwgKCJET01XaW5kb3dQYWdlUG9wdXAiKSk7CiAgICAgcmV0dXJu
IG5hbWU7CiB9CiAKLXZvaWQgRE9NV2luZG93UGFnZVBvcHVwOjpzZXRWYWx1ZUFuZENsb3NlUG9w
dXAoRE9NV2luZG93KiB3aW5kb3csIGludCBpbnRWYWx1ZSwgY29uc3QgU3RyaW5nJiBzdHJpbmdW
YWx1ZSkKK1BhZ2VQb3B1cENvbnRyb2xsZXIqIERPTVdpbmRvd1BhZ2VQb3B1cDo6cGFnZVBvcHVw
Q29udHJvbGxlcihET01XaW5kb3cqIHdpbmRvdykKIHsKICAgICBET01XaW5kb3dQYWdlUG9wdXAq
IHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxET01XaW5kb3dQYWdlUG9wdXAqPihmcm9tKHdpbmRv
dywgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIEFTU0VSVChzdXBwbGVtZW50KTsKLSAgICBzdXBw
bGVtZW50LT5tX3BvcHVwQ2xpZW50LT5zZXRWYWx1ZUFuZENsb3NlUG9wdXAoaW50VmFsdWUsIHN0
cmluZ1ZhbHVlKTsKLSAgICAvLyBzZXRWYWx1ZUFuZENsb3NlUG9wdXAoKSBkZWxldGVzIHRoZSB3
aW5kb3cgYW5kIHRoaXMgb2JqZWN0LiBEbyBub3QgYWNjZXNzIHRoZW0uCisgICAgcmV0dXJuIHN1
cHBsZW1lbnQtPm1fY29udHJvbGxlci5nZXQoKTsKIH0KIAogdm9pZCBET01XaW5kb3dQYWdlUG9w
dXA6Omluc3RhbGwoRE9NV2luZG93KiB3aW5kb3csIFBhZ2VQb3B1cENsaWVudCogcG9wdXBDbGll
bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvd1BhZ2VQb3B1cC5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3dQYWdlUG9wdXAuaAppbmRleCA1MWZiODVh
YjE3MDFhZTIzZDg4MWQ2NWJjNmRlYjA3YjMwMDMyYjAxLi40ZjgwNmQ5ODE0NTk2NjcyZDU1MzZl
MDcwZjU5ZDQ3Yzc1OTBmMWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvd1BhZ2VQb3B1cC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93UGFnZVBv
cHVwLmgKQEAgLTM4LDE3ICszOCwxOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERP
TVdpbmRvdzsKIGNsYXNzIFBhZ2VQb3B1cENsaWVudDsKK2NsYXNzIFBhZ2VQb3B1cENvbnRyb2xs
ZXI7CiAKIGNsYXNzIERPTVdpbmRvd1BhZ2VQb3B1cCA6IHB1YmxpYyBTdXBwbGVtZW50PERPTVdp
bmRvdz4gewogcHVibGljOgotICAgIHN0YXRpYyB2b2lkIHNldFZhbHVlQW5kQ2xvc2VQb3B1cChE
T01XaW5kb3cqLCBpbnQgaW50VmFsdWUsIGNvbnN0IFN0cmluZyYgc3RyaW5nVmFsdWUpOworICAg
IHN0YXRpYyBQYWdlUG9wdXBDb250cm9sbGVyKiBwYWdlUG9wdXBDb250cm9sbGVyKERPTVdpbmRv
dyopOwogICAgIHN0YXRpYyB2b2lkIGluc3RhbGwoRE9NV2luZG93KiwgUGFnZVBvcHVwQ2xpZW50
Kik7CisgICAgfkRPTVdpbmRvd1BhZ2VQb3B1cCgpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0
IERPTVdpbmRvd1BhZ2VQb3B1cChQYWdlUG9wdXBDbGllbnQqKTsKICAgICBzdGF0aWMgY29uc3Qg
QXRvbWljU3RyaW5nJiBzdXBwbGVtZW50TmFtZSgpOwogCi0gICAgUGFnZVBvcHVwQ2xpZW50KiBt
X3BvcHVwQ2xpZW50OworICAgIFJlZlB0cjxQYWdlUG9wdXBDb250cm9sbGVyPiBtX2NvbnRyb2xs
ZXI7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvd1Bh
Z2VQb3B1cC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvd1BhZ2VQb3B1cC5pZGwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZmNjZTMyMGRkOWFjN2IzZjc5MTlhODc2NzRmZjE3ZDZlZTY0OGJhZAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93UGFnZVBvcHVwLmlk
bApAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworbW9kdWxlIHdpbmRvdyB7CisgICAgaW50ZXJmYWNlIFsKKyAgICAg
ICAgQ29uZGl0aW9uYWw9UEFHRV9QT1BVUCwKKyAgICAgICAgU3VwcGxlbWVudGFsPURPTVdpbmRv
dworICAgIF0gRE9NV2luZG93UGFnZVBvcHVwIHsKKyAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBbVjhFbmFibGVkUGVyQ29udGV4dD1wYWdlUG9wdXBdIFBhZ2VQb3B1cENvbnRyb2xsZXIgcGFn
ZVBvcHVwQ29udHJvbGxlcjsKKyAgICB9OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlUG9wdXBDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVBv
cHVwQ29udHJvbGxlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODI0ZjZkZmFhNWE0OTI3NjQ3NTJmZjk3ZjNm
MzBjYWE5MzQxNTAwZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZVBvcHVwQ29udHJvbGxlci5jcHAKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJQYWdlUG9wdXBDb250cm9sbGVyLmgiCisKKyNpZiBFTkFCTEUoUEFHRV9QT1BV
UCkKKyNpbmNsdWRlICJQYWdlUG9wdXBDbGllbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitQYWdlUG9wdXBDb250cm9sbGVyOjpQYWdlUG9wdXBDb250cm9sbGVyKFBhZ2VQb3B1cENsaWVu
dCogY2xpZW50KQorICAgIDogbV9wb3B1cENsaWVudChjbGllbnQpCit7CisgICAgQVNTRVJUKGNs
aWVudCk7Cit9CisKK1Bhc3NSZWZQdHI8UGFnZVBvcHVwQ29udHJvbGxlcj4gUGFnZVBvcHVwQ29u
dHJvbGxlcjo6Y3JlYXRlKFBhZ2VQb3B1cENsaWVudCogY2xpZW50KQoreworICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgUGFnZVBvcHVwQ29udHJvbGxlcihjbGllbnQpKTsKK30KKwordm9pZCBQYWdl
UG9wdXBDb250cm9sbGVyOjpzZXRWYWx1ZUFuZENsb3NlUG9wdXAoaW50IG51bVZhbHVlLCBjb25z
dCBTdHJpbmcmIHN0cmluZ1ZhbHVlKQoreworICAgIG1fcG9wdXBDbGllbnQtPnNldFZhbHVlQW5k
Q2xvc2VQb3B1cChudW1WYWx1ZSwgc3RyaW5nVmFsdWUpOworfQorCit9CisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVBvcHVwQ29udHJvbGxlci5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlUG9wdXBDb250cm9sbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWVjNzI4NzY2
NTlkMTlhMWFmMjQyZGQ4OGRlY2YwMTQ2Y2IyNGIwZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZVBvcHVwQ29udHJvbGxlci5oCkBAIC0wLDAgKzEsNTYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFBhZ2VQb3B1cENvbnRyb2xsZXJfaAorI2RlZmluZSBQYWdlUG9wdXBDb250cm9sbGVyX2gK
KworI2lmIEVOQUJMRShQQUdFX1BPUFVQKQorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IFBhZ2VQb3B1cENsaWVudDsKKworY2xhc3MgUGFnZVBvcHVwQ29udHJvbGxlciA6IHB1YmxpYyBS
ZWZDb3VudGVkPFBhZ2VQb3B1cENvbnRyb2xsZXI+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxQYWdlUG9wdXBDb250cm9sbGVyPiBjcmVhdGUoUGFnZVBvcHVwQ2xpZW50Kik7Cisg
ICAgdm9pZCBzZXRWYWx1ZUFuZENsb3NlUG9wdXAoaW50IG51bVZhbHVlLCBjb25zdCBTdHJpbmcm
IHN0cmluZ1ZhbHVlKTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBQYWdlUG9wdXBDb250cm9s
bGVyKFBhZ2VQb3B1cENsaWVudCopOworCisgICAgUGFnZVBvcHVwQ2xpZW50KiBtX3BvcHVwQ2xp
ZW50OworfTsKKworfQorI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZVBvcHVwQ29udHJvbGxlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VQ
b3B1cENvbnRyb2xsZXIuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlMGE0OWRhYmExNDk1YjMwMWY4NGVmNjI1
NDk4NjM4ZDliMzg5OTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VQb3B1cENvbnRyb2xsZXIuaWRsCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgd2luZG93IHsKKyAg
ICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1QQUdFX1BPUFVQCisgICAgXSBQYWdl
UG9wdXBDb250cm9sbGVyIHsKKyAgICAgICAgdm9pZCBzZXRWYWx1ZUFuZENsb3NlUG9wdXAoaW4g
bG9uZyBudW1iZXJWYWx1ZSwgaW4gRE9NU3RyaW5nIHN0cmluZ1ZhbHVlKTsKKyAgICB9OworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVBvcHVwSW1wbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQYWdlUG9wdXBJbXBsLmNwcAppbmRl
eCAxYWQ0MTdiYWQ2ZDM1ZDEzYjFkZjcwZGNlOTVlNDEyN2FhNGZmODJiLi42MTdiNzI1Y2VlMmI1
ZjlmMmNmMjhlM2NhMjg2Y2Y1MGE3NGZjYzhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJQYWdlUG9wdXBJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJQYWdlUG9wdXBJbXBsLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUg
IldlYlBhZ2VQb3B1cEltcGwuaCIKIAogI2luY2x1ZGUgIkNocm9tZS5oIgorI2luY2x1ZGUgIkRP
TVdpbmRvd1BhZ2VQb3B1cC5oIgogI2luY2x1ZGUgIkVtcHR5Q2xpZW50cy5oIgogI2luY2x1ZGUg
IkZpbGVDaG9vc2VyLmgiCiAjaW5jbHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCkBAIC0xMjcsNiAr
MTI4LDEwIEBAIHByaXZhdGU6CiAgICAgV2ViUGFnZVBvcHVwSW1wbCogbV9wb3B1cDsKIH07CiAK
K2NsYXNzIFBhZ2VQb3B1cEZyYW1lTG9hZGVyQ2xpZW50IDogcHVibGljIEVtcHR5RnJhbWVMb2Fk
ZXJDbGllbnQgeworICAgIHZpcnR1YWwgYm9vbCBhbGxvd1BhZ2VQb3B1cCgpIE9WRVJSSURFIHsg
cmV0dXJuIHRydWU7IH0KK307CisKIC8vIFdlYlBhZ2VQb3B1cEltcGwgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBXZWJQ
YWdlUG9wdXBJbXBsOjpXZWJQYWdlUG9wdXBJbXBsKFdlYldpZGdldENsaWVudCogY2xpZW50KQpA
QCAtMTgxLDggKzE4Niw4IEBAIGJvb2wgV2ViUGFnZVBvcHVwSW1wbDo6aW5pdFBhZ2UoKQogICAg
IG1fcGFnZS0+c2V0dGluZ3MoKS0+c2V0U2NyaXB0RW5hYmxlZCh0cnVlKTsKICAgICBtX3BhZ2Ut
PnNldHRpbmdzKCktPnNldEFsbG93U2NyaXB0c1RvQ2xvc2VXaW5kb3dzKHRydWUpOwogCi0gICAg
c3RhdGljIEZyYW1lTG9hZGVyQ2xpZW50KiBlbXB0eUZyYW1lTG9hZGVyQ2xpZW50ID0gIG5ldyBF
bXB0eUZyYW1lTG9hZGVyQ2xpZW50OwotICAgIFJlZlB0cjxGcmFtZT4gZnJhbWUgPSBGcmFtZTo6
Y3JlYXRlKG1fcGFnZS5nZXQoKSwgMCwgZW1wdHlGcmFtZUxvYWRlckNsaWVudCk7CisgICAgc3Rh
dGljIEZyYW1lTG9hZGVyQ2xpZW50KiBwYWdlUG9wdXBGcmFtZUxvYWRlckNsaWVudCA9ICBuZXcg
UGFnZVBvcHVwRnJhbWVMb2FkZXJDbGllbnQ7CisgICAgUmVmUHRyPEZyYW1lPiBmcmFtZSA9IEZy
YW1lOjpjcmVhdGUobV9wYWdlLmdldCgpLCAwLCBwYWdlUG9wdXBGcmFtZUxvYWRlckNsaWVudCk7
CiAgICAgZnJhbWUtPnNldFZpZXcoRnJhbWVWaWV3OjpjcmVhdGUoZnJhbWUuZ2V0KCkpKTsKICAg
ICBmcmFtZS0+aW5pdCgpOwogICAgIGZyYW1lLT52aWV3KCktPnJlc2l6ZShtX3BvcHVwQ2xpZW50
LT5jb250ZW50U2l6ZSgpKTsKQEAgLTE5NSw3ICsyMDAsOCBAQCBib29sIFdlYlBhZ2VQb3B1cElt
cGw6OmluaXRQYWdlKCkKICAgICBtX3BvcHVwQ2xpZW50LT53cml0ZURvY3VtZW50KCp3cml0ZXIp
OwogICAgIHdyaXRlci0+ZW5kKCk7CiAKLSAgICBmcmFtZS0+c2NyaXB0KCktPmluc3RhbGxGdW5j
dGlvbnNGb3JQYWdlUG9wdXAoZnJhbWUuZ2V0KCksIG1fcG9wdXBDbGllbnQpOworICAgIEFTU0VS
VChmcmFtZS0+ZXhpc3RpbmdET01XaW5kb3coKSk7CisgICAgRE9NV2luZG93UGFnZVBvcHVwOjpp
bnN0YWxsKGZyYW1lLT5leGlzdGluZ0RPTVdpbmRvdygpLCBtX3BvcHVwQ2xpZW50KTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4
IDVmNGY4YjcxYTJhZDE1OTAyNzhjMmM0MTFlOWFlMDc1NGRiZjkyY2UuLjllZGFjNmZjZGUwZmJk
N2YwOGMzMTZlMDZlMTQ0NThmMDZjM2MwNzcgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wNS0yMiAgS2VudCBUYW11cmEgIDx0a2Vu
dEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUEFHRV9QT1BVUDogd2luZG93LnNldFZhbHVlQW5k
Q2xvc2VQb3B1cCBzaG91bGQgYmUgbW92ZWQgdG8gYQorICAgICAgICBwZXItY29udGV4dCBwcm9w
ZXJ0eSBvZiBET01XaW5kb3cuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04NzA4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogTWFudWFsVGVzdHMvZm9ybXMvY2FsZW5kYXItcGlja2VyLmh0bWw6CisgICAg
ICAgIEludHJvZHVjZSBwc2V1ZG8gd2luZG93LnBhZ2VQb3B1cENvbnRyb2xsZXIuCisKIDIwMTIt
MDUtMjIgIEthbmdpbCBIYW4gIDxrYW5naWwuaGFuQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtF
RkxdW0RSVF0gSW1wbGVtZW50IHRvdWNoIGV2ZW50CmRpZmYgLS1naXQgYS9NYW51YWxUZXN0cy9m
b3Jtcy9jYWxlbmRhci1waWNrZXIuaHRtbCBiL01hbnVhbFRlc3RzL2Zvcm1zL2NhbGVuZGFyLXBp
Y2tlci5odG1sCmluZGV4IDQzZWVkNWM5NWE2MjJjMThmZGY0ZGQ3NjdiMjQ0ZTdhNjcwNzc1OWIu
LmZmMDEwMjg0MDdkYjlmMzhmYWVlNjIzZDZkNDg5Y2Q2OGM5MzFhODkgMTAwNjQ0Ci0tLSBhL01h
bnVhbFRlc3RzL2Zvcm1zL2NhbGVuZGFyLXBpY2tlci5odG1sCisrKyBiL01hbnVhbFRlc3RzL2Zv
cm1zL2NhbGVuZGFyLXBpY2tlci5odG1sCkBAIC04MCwxMyArODAsMTcgQEAgZnVuY3Rpb24gb3Bl
bkNhbGVuZGFyKGFyZ3MpIHsKICAgICBzY3JpcHQuc3JjID0gJy4uLy4uL1NvdXJjZS9XZWJDb3Jl
L1Jlc291cmNlcy9jYWxlbmRhclBpY2tlci5qcz8nICsgKG5ldyBEYXRlKCkpLmdldFRpbWUoKTsK
ICAgICBkb2MuYm9keS5hcHBlbmRDaGlsZChzY3JpcHQpOwogCi0gICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsKLSAgICAgICAgZnJhbWUuY29udGVudFdpbmRvdy5wb3N0TWVzc2FnZShKU09OLnN0
cmluZ2lmeShhcmdzKSwgIioiKTsKLSAgICAgICAgZnJhbWUuY29udGVudFdpbmRvdy5zZXRWYWx1
ZUFuZENsb3NlUG9wdXAgPSBmdW5jdGlvbihudW1WYWx1ZSwgc3RyaW5nVmFsdWUpIHsKKyAgICB2
YXIgcGFnZVBvcHVwQ29udHJvbGxlciA9IHsKKyAgICAgICAgc2V0VmFsdWVBbmRDbG9zZVBvcHVw
OiBmdW5jdGlvbihudW1WYWx1ZSwgc3RyaW5nVmFsdWUpIHsKICAgICAgICAgICAgIHdpbmRvdy5s
b2coJ251bWJlcj0nICsgbnVtVmFsdWUgKyAnLCBzdHJpbmc9IicgKyBzdHJpbmdWYWx1ZSArICci
Jyk7CiAgICAgICAgICAgICBpZiAobnVtVmFsdWUgPT0gMCkKICAgICAgICAgICAgICAgICB3aW5k
b3cuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RhdGUnKS52YWx1ZSA9IHN0cmluZ1ZhbHVlOwot
ICAgICAgICB9OworICAgICAgICB9CisgICAgfQorCisgICAgc2V0VGltZW91dChmdW5jdGlvbigp
IHsKKyAgICAgICAgZnJhbWUuY29udGVudFdpbmRvdy5wb3N0TWVzc2FnZShKU09OLnN0cmluZ2lm
eShhcmdzKSwgIioiKTsKKyAgICAgICAgZnJhbWUuY29udGVudFdpbmRvdy5wYWdlUG9wdXBDb250
cm9sbGVyID0gcGFnZVBvcHVwQ29udHJvbGxlcjsKICAgICB9LCAxMDApOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143980</attachid>
            <date>2012-05-24 22:43:06 -0700</date>
            <delta_ts>2012-05-24 23:50:55 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-87086-20120525144304.patch</filename>
            <type>text/plain</type>
            <size>27848</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4NDcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzdlYjc4Zjc4NmYxZjMz
ZDZhZGIyYTQ5MzRiZDc3OTE4ZTY1MDY2Yi4uOGQ5MjZiNmQ3MDUyZmFiYjQyZTA0ZWNiMjhiNDdi
Zjk2MjM2MjI1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTA1LTI0ICBLZW50
IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAgICBQQUdFX1BPUFVQOiB3aW5k
b3cuc2V0VmFsdWVBbmRDbG9zZVBvcHVwIHNob3VsZCBiZSBtb3ZlZCB0byBhCisgICAgICAgIHBl
ci1jb250ZXh0IHByb3BlcnR5IG9mIERPTVdpbmRvdy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3MDg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRh
bSBCYXJ0aC4KKworICAgICAgICAtIEludHJvZHVjZSB3aW5kb3cucGFnZVBhZ2VQb3B1cENvbnRy
b2xsZXIgcHJvcGVydHkgYXMgVjhFbmFibGVkUGVyQ29udGV4dC4KKyAgICAgICAgLSBNb3ZlIHdp
bmRvdy5zZXRWYWx1ZUFuZENsb3NlUG9wdXAoKSB0byB3aW5kb3cucGFnZVBvcHVwQ29udHJvbGxl
ci4KKyAgICAgICAgU28sIHdlIGNhbiByZW1vdmUgYWQtaG9jIFNjcmlwdENvbnRyb2xsZXI6Omlu
c3RhbGxGdW5jdGlvbnNGb3JQYWdlUG9wdXAoKS4KKworICAgICAgICBObyBiZWhhdmlvciBjaGFu
Z2UuCisKKyAgICAgICAgVGVzdDogZmFzdC9mb3Jtcy9kYXRlL25vLXBhZ2UtcG9wdXAtY29udHJv
bGxlci5odG1sCisKKyAgICAgICAgKiBSZXNvdXJjZXMvY2FsZW5kYXJQaWNrZXIuanM6CisgICAg
ICAgIChzdWJtaXRWYWx1ZSk6IFVzZSB3aW5kb3cucGFnZVBvcHVwQ29udHJvbGxlci4KKyAgICAg
ICAgKGhhbmRsZUNhbmNlbCk6IGRpdHRvLgorICAgICAgICAqIFdlYkNvcmUuZ3lwaTogQWRkIG5l
dyBmaWxlcy4KKyAgICAgICAgKiBiaW5kaW5ncy9nZW5lcmljL0NvbnRleHRFbmFibGVkRmVhdHVy
ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dEVuYWJsZWRGZWF0dXJlczo6cGFnZVBv
cHVwRW5hYmxlZCk6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL2dlbmVyaWMvQ29udGV4dEVu
YWJsZWRGZWF0dXJlcy5oOgorICAgICAgICAoQ29udGV4dEVuYWJsZWRGZWF0dXJlcyk6IEFkZGVk
LgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwOiBSZW1vdmUgaW5z
dGFsbEZ1bmN0aW9uc0ZvclBhZ2VQb3B1cCgpLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Njcmlw
dENvbnRyb2xsZXIuaDogZGl0dG8uCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50
Lmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudDo6YWxsb3dQYWdlUG9wdXAp
OiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvd1BhZ2VQb3B1cC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpET01XaW5kb3dQYWdlUG9wdXA6OkRPTVdpbmRvd1BhZ2VQb3B1cCk6CisgICAg
ICAgIENyZWF0ZXMgYSBQYWdlUG9wdXBDb250cm9sbGVyIG9iamVjdCBmb3IgdGhlIHNwZWNpZmll
ZCBQYWdlUG9wdXBDbGllbnQuCisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dQYWdlUG9wdXA6
On5ET01XaW5kb3dQYWdlUG9wdXApOgorICAgICAgICBFbXB0eSBkZXN0cnVjdG9yIHRvIGdlbmVy
YXRlIHRoZSBSZWZQdHI8UGFnZVBvcHVwQ29udHJvbGxlcj4gZGVzdHJ1Y3Rvci4KKyAgICAgICAg
KFdlYkNvcmU6OkRPTVdpbmRvd1BhZ2VQb3B1cDo6cGFnZVBvcHVwQ29udHJvbGxlcik6CisgICAg
ICAgICogcGFnZS9ET01XaW5kb3dQYWdlUG9wdXAuaDoKKyAgICAgICAgKERPTVdpbmRvd1BhZ2VQ
b3B1cCk6CisgICAgICAgICAtIFJlbW92ZSBzZXRWYWx1ZUFuZENsb3NlUG9wdXAoKQorICAgICAg
ICAgLSBBZGQgcGFnZVBvcHVwQ29udHJvbGxlcigpCisgICAgICAgICAtIENoYW5nZSB0aGUgZGF0
YSBtZW1iZXIgZnJvbSBQYWdlUG9wdXBDbGllbnQgdG8gUGFnZVBvcHVwQ29udHJvbGxlci4KKyAg
ICAgICAgKiBwYWdlL0RPTVdpbmRvd1BhZ2VQb3B1cC5pZGw6IFN1cHBseSBwZXItY29udGV4dCB3
aW5kb3cucGFnZVBvcHVwQ29udHJvbGxlci4KKyAgICAgICAgKiBwYWdlL1BhZ2VQb3B1cENvbnRy
b2xsZXIuY3BwOiBBZGRlZC4gVGhpcyBvYmplY3QgaXMgYXR0YWNoZWQgdG8gd2luZG93LgorICAg
ICAgICAqIHBhZ2UvUGFnZVBvcHVwQ29udHJvbGxlci5oOiBkaXR0by4KKyAgICAgICAgKiBwYWdl
L1BhZ2VQb3B1cENvbnRyb2xsZXIuaWRsOiBkaXR0by4KKwogMjAxMi0wNS0yNCAgSGF5YXRvIEl0
byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRml4IGNyYXNoZXMgY2F1c2VkIGJ5
IGEgRE9NQ2hhcmFjdGVyRGF0YU1vZGlmaWVkIGV2ZW50IG9uIGEgdGV4dCBub2RlLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwppbmRleCAyN2Y4NjkzYmYxZTNkMzNiZmZmM2FlMDdiZGNlOWY5ZGRh
Zjk4NDIyLi40ZmZlMTBjY2RkMTE0MTNmNDlkMGM3NWJjNjMwN2YzYTFlZTljODFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTA1LTI0ICBLZW50IFRh
bXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAgICBQQUdFX1BPUFVQOiB3aW5kb3cu
c2V0VmFsdWVBbmRDbG9zZVBvcHVwIHNob3VsZCBiZSBtb3ZlZCB0byBhCisgICAgICAgIHBlci1j
b250ZXh0IHByb3BlcnR5IG9mIERPTVdpbmRvdy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTg3MDg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBC
YXJ0aC4KKworICAgICAgICAqIHNyYy9XZWJQYWdlUG9wdXBJbXBsLmNwcDoKKyAgICAgICAgKFdl
YktpdCk6IEFkZCBQYWdlUG9wdXBGcmFtZUxvYWRlckNsaWVudCwgd2hpY2ggYWxsb3dzIHdpbmRv
dy5wYWdlUG9wdXBDb250cm9sbGVyLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUG9wdXBJbXBs
Ojppbml0UGFnZSk6CisgICAgICAgICAtIFVzZSBQYWdlUG9wdXBGcmFtZUxvYWRlckNsaWVudAor
ICAgICAgICAgLSBSZW1vdmUgdGhlIGNhbGwgb2YgU2NyaXB0Q29udHJvbGxlcjo6aW5zdGFsbEZ1
bmN0aW9uc0ZvclBhZ2VQb3B1cCgpLgorICAgICAgICAgLSBDYWxsIERPTVdpbmRvd1BhZ2VQb3B1
cDo6aW5zdGFsbCgpIHRvIGluZm9ybSBtX3BvcHVwQ2xpZW50IHRvIGEKKyAgICAgICAgICAgRE9N
V2luZG93UGFnZVBvcHVwIG9iamVjdCBmb3IgdGhlIERPTVdpbmRvdy4KKwogMjAxMi0wNS0yNCAg
QWxleGFuZHJlIEVsaWFzICA8YWVsaWFzQGdvb2dsZS5jb20+CiAKICAgICAgICAgW2Nocm9taXVt
XSBTdXBwb3J0IG1vYmlsZSBkZXZpY2Ugcm90YXRpb24gcmVzaXppbmcKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1Jlc291cmNlcy9jYWxlbmRhclBpY2tlci5qcyBiL1NvdXJjZS9XZWJDb3Jl
L1Jlc291cmNlcy9jYWxlbmRhclBpY2tlci5qcwppbmRleCA1YjBlNTZkZGMxYzlmOTI5YjgwNTA5
ZTcyMDJlNTJiZTkzOThiMzJmLi40YTdlZjA2YWMyYzE4YmFiNzYxZmJlYTc4Mzc2MjhhMzdmNjRl
NmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvY2FsZW5kYXJQaWNrZXIu
anMKKysrIGIvU291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL2NhbGVuZGFyUGlja2VyLmpzCkBAIC0x
MDgwLDExICsxMDgwLDExIEBAIGZ1bmN0aW9uIGhhbmRsZUNsZWFyKCkgewogICogQHBhcmFtIHtz
dHJpbmd9IHZhbHVlCiAgKi8KIGZ1bmN0aW9uIHN1Ym1pdFZhbHVlKHZhbHVlKSB7Ci0gICAgd2lu
ZG93LnNldFZhbHVlQW5kQ2xvc2VQb3B1cCgwLCB2YWx1ZSk7CisgICAgd2luZG93LnBhZ2VQb3B1
cENvbnRyb2xsZXIuc2V0VmFsdWVBbmRDbG9zZVBvcHVwKDAsIHZhbHVlKTsKIH0KIAogZnVuY3Rp
b24gaGFuZGxlQ2FuY2VsKCkgewotICAgIHdpbmRvdy5zZXRWYWx1ZUFuZENsb3NlUG9wdXAoLTEs
ICIiKTsKKyAgICB3aW5kb3cucGFnZVBvcHVwQ29udHJvbGxlci5zZXRWYWx1ZUFuZENsb3NlUG9w
dXAoLTEsICIiKTsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggN2MzODkwMjUxNmIxYTIx
OWQ2MmY0OWQ3ZjllZGI1N2JhMTE5YjQ2Zi4uMzczMmIxMTc5ZDBmODAxOGEzZjI0M2RlY2M0NDZj
YzQ2OWMwNzBkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMTE0NCwxMiArMTE0NCwxNCBAQAogICAg
ICAgICAgICAgJ3BhZ2UvQ3J5cHRvLmlkbCcsCiAgICAgICAgICAgICAncGFnZS9ET01TZWxlY3Rp
b24uaWRsJywKICAgICAgICAgICAgICdwYWdlL0RPTVdpbmRvdy5pZGwnLAorICAgICAgICAgICAg
J3BhZ2UvRE9NV2luZG93UGFnZVBvcHVwLmlkbCcsCiAgICAgICAgICAgICAncGFnZS9FdmVudFNv
dXJjZS5pZGwnLAogICAgICAgICAgICAgJ3BhZ2UvSGlzdG9yeS5pZGwnLAogICAgICAgICAgICAg
J3BhZ2UvTG9jYXRpb24uaWRsJywKICAgICAgICAgICAgICdwYWdlL01lbW9yeUluZm8uaWRsJywK
ICAgICAgICAgICAgICdwYWdlL05hdmlnYXRvci5pZGwnLAogICAgICAgICAgICAgJ3BhZ2UvTmF2
aWdhdG9yUmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIuaWRsJywKKyAgICAgICAgICAgICdwYWdlL1Bh
Z2VQb3B1cENvbnRyb2xsZXIuaWRsJywKICAgICAgICAgICAgICdwYWdlL1BlcmZvcm1hbmNlLmlk
bCcsCiAgICAgICAgICAgICAncGFnZS9QZXJmb3JtYW5jZUVudHJ5LmlkbCcsCiAgICAgICAgICAg
ICAncGFnZS9QZXJmb3JtYW5jZUVudHJ5TGlzdC5pZGwnLApAQCAtMzAzOCw2ICszMDQwLDggQEAK
ICAgICAgICAgICAgICdwYWdlL1BhZ2VHcm91cC5jcHAnLAogICAgICAgICAgICAgJ3BhZ2UvUGFn
ZUdyb3VwTG9hZERlZmVycmVyLmNwcCcsCiAgICAgICAgICAgICAncGFnZS9QYWdlR3JvdXBMb2Fk
RGVmZXJyZXIuaCcsCisgICAgICAgICAgICAncGFnZS9QYWdlUG9wdXBDb250cm9sbGVyLmNwcCcs
CisgICAgICAgICAgICAncGFnZS9QYWdlUG9wdXBDb250cm9sbGVyLmgnLAogICAgICAgICAgICAg
J3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwJywKICAgICAgICAgICAgICdwYWdlL1BhZ2VWaXNpYmls
aXR5U3RhdGUuY3BwJywKICAgICAgICAgICAgICdwYWdlL1BlcmZvcm1hbmNlLmNwcCcsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL0NvbnRleHRFbmFibGVkRmVh
dHVyZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9Db250ZXh0RW5hYmxl
ZEZlYXR1cmVzLmNwcAppbmRleCBlMzgwNTQ3NDZkNzU5NWYwMDU1NTNkMzc4OGVhNDQ5ZjRlNTJm
Njk3Li5iOGQwYTUxNGQzMTQ5YmYzNWRiODdiMzRjNzliMGUyZTFhN2JkNmIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL0NvbnRleHRFbmFibGVkRmVhdHVyZXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvQ29udGV4dEVuYWJsZWRG
ZWF0dXJlcy5jcHAKQEAgLTU5LDcgKzU5LDE3IEBAIGJvb2wgQ29udGV4dEVuYWJsZWRGZWF0dXJl
czo6c3R5bGVTY29wZWRFbmFibGVkKERvY3VtZW50KiBkb2N1bWVudCkKICAgICBpZiAoRnJhbWUq
IGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCkpCiAgICAgICAgIHJldHVybiBmcmFtZS0+bG9hZGVy
KCktPmNsaWVudCgpLT5hbGxvd1N0eWxlU2NvcGVkKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnN0
eWxlU2NvcGVkRW5hYmxlZCgpKTsKICAgICByZXR1cm4gZmFsc2U7Ci0gICAKK30KKyNlbmRpZiAg
IAorCisjaWYgRU5BQkxFKFBBR0VfUE9QVVApCitib29sIENvbnRleHRFbmFibGVkRmVhdHVyZXM6
OnBhZ2VQb3B1cEVuYWJsZWQoRE9NV2luZG93KiB3aW5kb3cpCit7CisgICAgaWYgKCF3aW5kb3cp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoRnJhbWUqIGZyYW1lID0gd2luZG93LT5m
cmFtZSgpKQorICAgICAgICByZXR1cm4gZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+YWxsb3dQ
YWdlUG9wdXAoKTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9Db250ZXh0RW5hYmxlZEZlYXR1cmVzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL0NvbnRleHRFbmFibGVkRmVhdHVyZXMu
aAppbmRleCAwOTI0ZjI0ZThlNDBkMjRiNjg3OTg2MzRjZmNjMWZmZWEzZTY1MmE2Li5lYTdmYTRi
NzU4NWVhNzdhNzE5YmUzYjRkMzM0NDhiMjgyZjQ5OTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9nZW5lcmljL0NvbnRleHRFbmFibGVkRmVhdHVyZXMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL0NvbnRleHRFbmFibGVkRmVhdHVyZXMuaApAQCAt
NDgsNiArNDgsOSBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFNUWUxFX1NDT1BFRCkKICAgICBzdGF0
aWMgYm9vbCBzdHlsZVNjb3BlZEVuYWJsZWQoRG9jdW1lbnQqKTsKICNlbmRpZgorI2lmIEVOQUJM
RShQQUdFX1BPUFVQKQorICAgIHN0YXRpYyBib29sIHBhZ2VQb3B1cEVuYWJsZWQoRE9NV2luZG93
Kik7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggMDEwNjcwNGRmMzBi
M2I1NjQ2Y2IzNGQ2M2RjMGRhMjczMTIyODY1MC4uNDJjZGE3YTMxM2RiNWNjMDYwMDY0ZmIyZTFj
NDA4MjA2NzEzYTBhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2Ny
aXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0
Q29udHJvbGxlci5jcHAKQEAgLTM4LDcgKzM4LDYgQEAKICNpbmNsdWRlICJTY3JpcHRDYWxsU3Rh
Y2tGYWN0b3J5LmgiCiAjaW5jbHVkZSAiU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmgiCiAjaW5j
bHVkZSAiRE9NV2luZG93LmgiCi0jaW5jbHVkZSAiRE9NV2luZG93UGFnZVBvcHVwLmgiCiAjaW5j
bHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiRXZl
bnROYW1lcy5oIgpAQCAtMjUwLDM2ICsyNDksNiBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmJp
bmRUb1dpbmRvd09iamVjdChGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZyYga2V5LCBOUE9iagog
ICAgIGdsb2JhbC0+U2V0KHY4U3RyaW5nKGtleSksIHZhbHVlKTsKIH0KIAotI2lmIEVOQUJMRShQ
QUdFX1BPUFVQKQotc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzZXRWYWx1ZUFuZENsb3Nl
UG9wdXBDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQotewotICAgIGlmIChhcmdz
Lkxlbmd0aCgpIDwgMikKLSAgICAgICAgcmV0dXJuIFY4UHJveHk6OnRocm93Tm90RW5vdWdoQXJn
dW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwotICAgIERPTVdpbmRvdyogaW1wID0gVjhE
T01XaW5kb3c6OnRvTmF0aXZlKGFyZ3MuRGF0YSgpLT5Ub09iamVjdCgpKTsKLSAgICBFWENFUFRJ
T05fQkxPQ0soaW50LCBpbnRWYWx1ZSwgdG9JbnQzMihNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihh
cmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKSk7Ci0gICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVS
X0VYQ0VQVElPTl9CTE9DSyhWOFBhcmFtZXRlcjw+LCBzdHJpbmdWYWx1ZSwgTUFZQkVfTUlTU0lO
R19QQVJBTUVURVIoYXJncywgMSwgRGVmYXVsdElzVW5kZWZpbmVkKSk7Ci0gICAgRE9NV2luZG93
UGFnZVBvcHVwOjpzZXRWYWx1ZUFuZENsb3NlUG9wdXAoaW1wLCBpbnRWYWx1ZSwgc3RyaW5nVmFs
dWUpOwotICAgIC8vIHNldFZhbHVlQW5kQ2xvc2VQb3B1cCgpIGRlbGV0ZXMgdGhlIHdpbmRvdy4g
RG8gbm90IGFjY2VzcyBpdC4KLSAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotfQotCi12b2lk
IFNjcmlwdENvbnRyb2xsZXI6Omluc3RhbGxGdW5jdGlvbnNGb3JQYWdlUG9wdXAoRnJhbWUqIGZy
YW1lLCBQYWdlUG9wdXBDbGllbnQqIHBvcHVwQ2xpZW50KQotewotICAgIEFTU0VSVChmcmFtZSk7
Ci0gICAgQVNTRVJUKHBvcHVwQ2xpZW50KTsKLSAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2Nv
cGU7Ci0gICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dCA9IFY4UHJveHk6Om1haW5X
b3JsZENvbnRleHQoZnJhbWUpOwotICAgIGlmIChjb250ZXh0LklzRW1wdHkoKSkgewotICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICB2ODo6
Q29udGV4dDo6U2NvcGUgc2NvcGUoY29udGV4dCk7Ci0gICAgRE9NV2luZG93UGFnZVBvcHVwOjpp
bnN0YWxsKGZyYW1lLT5leGlzdGluZ0RPTVdpbmRvdygpLCBwb3B1cENsaWVudCk7Ci0gICAgdjg6
OkxvY2FsPHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9IHY4OjpGdW5jdGlvblRlbXBsYXRl
OjpOZXcoc2V0VmFsdWVBbmRDbG9zZVBvcHVwQ2FsbGJhY2ssIFY4RE9NV2luZG93Ojp3cmFwKGZy
YW1lLT5leGlzdGluZ0RPTVdpbmRvdygpKSk7Ci0gICAgY29udGV4dC0+R2xvYmFsKCktPlNldCh2
ODo6U3RyaW5nOjpOZXcoInNldFZhbHVlQW5kQ2xvc2VQb3B1cCIpLCB2ODo6SGFuZGxlPHY4OjpG
dW5jdGlvbj4odGVtcGwtPkdldEZ1bmN0aW9uKCkpKTsKLX0KLSNlbmRpZgotCiB2b2lkIFNjcmlw
dENvbnRyb2xsZXI6OmNvbGxlY3RHYXJiYWdlKCkKIHsKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFu
ZGxlU2NvcGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRD
b250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVy
LmgKaW5kZXggZDc1ZmI5ZTFhNmEwOTFjYWU0N2ZiNWZkZDI5NWM4ZDgyMGZjZDM5Mi4uYzcxZDI4
NGI4MjllMzFkNzhmNmVkZTZiNTk4ZGI4NWNmNzIwN2UwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuaApAQCAtMTIyLDkgKzEyMiw2IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGJpbmRUb1dpbmRvd09iamVjdChGcmFtZSosIGNvbnN0IFN0cmluZyYga2V5
LCBOUE9iamVjdCopOwogCiAgICAgUGFzc1NjcmlwdEluc3RhbmNlIGNyZWF0ZVNjcmlwdEluc3Rh
bmNlRm9yV2lkZ2V0KFdpZGdldCopOwotI2lmIEVOQUJMRShQQUdFX1BPUFVQKQotICAgIHZvaWQg
aW5zdGFsbEZ1bmN0aW9uc0ZvclBhZ2VQb3B1cChGcmFtZSosIFBhZ2VQb3B1cENsaWVudCopOwot
I2VuZGlmCiAKICAgICAvLyBDaGVjayBpZiB0aGUgamF2YXNjcmlwdCBlbmdpbmUgaGFzIGJlZW4g
aW5pdGlhbGl6ZWQuCiAgICAgYm9vbCBoYXZlSW50ZXJwcmV0ZXIoKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggNzkxY2MwYzMyMjk4YTI5NzEw
NWI5N2UxYzEyNjY4MTdjMzZjMTIzNS4uMTU4NzJlZmUzMTJkYjBlZDc3NGEyNGU1ZGQwMzQxOGM5
MDdiMGJkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAg
LTMxMyw2ICszMTMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCBi
b29sIHNoYWRvd0RPTUFsbG93ZWQoYm9vbCBlbmFibGVkQXNSdW50aW1lRmVhdHVyZXMpIHsgcmV0
dXJuIGVuYWJsZWRBc1J1bnRpbWVGZWF0dXJlczsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgYWxs
b3dTdHlsZVNjb3BlZChib29sIGVuYWJsZWRBc1J1bnRpbWVGZWF0dXJlcykgeyByZXR1cm4gZW5h
YmxlZEFzUnVudGltZUZlYXR1cmVzOyB9CisjaWYgRU5BQkxFKFBBR0VfUE9QVVApCisgICAgICAg
IHZpcnR1YWwgYm9vbCBhbGxvd1BhZ2VQb3B1cCgpIHsgcmV0dXJuIGZhbHNlOyB9CisjZW5kaWYK
IAogICAgICAgICAvLyBUaGlzIGNhbGxiYWNrIG5vdGlmaWVzIHRoZSBjbGllbnQgdGhhdCB0aGUg
ZnJhbWUgd2FzIGFib3V0IHRvIHJ1bgogICAgICAgICAvLyBKYXZhU2NyaXB0IGJ1dCBkaWQgbm90
IGJlY2F1c2UgYWxsb3dTY3JpcHQgcmV0dXJuZWQgZmFsc2UuIFdlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvd1BhZ2VQb3B1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvd1BhZ2VQb3B1cC5jcHAKaW5kZXggOTk0Y2QzOTZlNTE1N2QzMDIyODI2OTIx
Mzk0MTc0YWUzNzBjMGIwZC4uMDllM2MxNmMwZTc3MGE4YmI5ODM1MmY0NTg2ODY0NTQyY2MxNTZm
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3dQYWdlUG9wdXAuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93UGFnZVBvcHVwLmNwcApAQCAtMzMs
MjggKzMzLDMxIEBACiAKICNpZiBFTkFCTEUoUEFHRV9QT1BVUCkKICNpbmNsdWRlICJET01XaW5k
b3cuaCIKLSNpbmNsdWRlICJQYWdlUG9wdXBDbGllbnQuaCIKKyNpbmNsdWRlICJQYWdlUG9wdXBD
b250cm9sbGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRE9NV2luZG93UGFnZVBvcHVw
OjpET01XaW5kb3dQYWdlUG9wdXAoUGFnZVBvcHVwQ2xpZW50KiBwb3B1cENsaWVudCkKLSAgICA6
IG1fcG9wdXBDbGllbnQocG9wdXBDbGllbnQpCisgICAgOiBtX2NvbnRyb2xsZXIoUGFnZVBvcHVw
Q29udHJvbGxlcjo6Y3JlYXRlKHBvcHVwQ2xpZW50KSkKIHsKICAgICBBU1NFUlQocG9wdXBDbGll
bnQpOwogfQogCitET01XaW5kb3dQYWdlUG9wdXA6On5ET01XaW5kb3dQYWdlUG9wdXAoKQorewor
fQorCiBjb25zdCBBdG9taWNTdHJpbmcmIERPTVdpbmRvd1BhZ2VQb3B1cDo6c3VwcGxlbWVudE5h
bWUoKQogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoIkRP
TVdpbmRvd1BhZ2VQb3B1cCIpKTsKICAgICByZXR1cm4gbmFtZTsKIH0KIAotdm9pZCBET01XaW5k
b3dQYWdlUG9wdXA6OnNldFZhbHVlQW5kQ2xvc2VQb3B1cChET01XaW5kb3cqIHdpbmRvdywgaW50
IGludFZhbHVlLCBjb25zdCBTdHJpbmcmIHN0cmluZ1ZhbHVlKQorUGFnZVBvcHVwQ29udHJvbGxl
ciogRE9NV2luZG93UGFnZVBvcHVwOjpwYWdlUG9wdXBDb250cm9sbGVyKERPTVdpbmRvdyogd2lu
ZG93KQogewogICAgIERPTVdpbmRvd1BhZ2VQb3B1cCogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0
PERPTVdpbmRvd1BhZ2VQb3B1cCo+KGZyb20od2luZG93LCBzdXBwbGVtZW50TmFtZSgpKSk7CiAg
ICAgQVNTRVJUKHN1cHBsZW1lbnQpOwotICAgIHN1cHBsZW1lbnQtPm1fcG9wdXBDbGllbnQtPnNl
dFZhbHVlQW5kQ2xvc2VQb3B1cChpbnRWYWx1ZSwgc3RyaW5nVmFsdWUpOwotICAgIC8vIHNldFZh
bHVlQW5kQ2xvc2VQb3B1cCgpIGRlbGV0ZXMgdGhlIHdpbmRvdyBhbmQgdGhpcyBvYmplY3QuIERv
IG5vdCBhY2Nlc3MgdGhlbS4KKyAgICByZXR1cm4gc3VwcGxlbWVudC0+bV9jb250cm9sbGVyLmdl
dCgpOwogfQogCiB2b2lkIERPTVdpbmRvd1BhZ2VQb3B1cDo6aW5zdGFsbChET01XaW5kb3cqIHdp
bmRvdywgUGFnZVBvcHVwQ2xpZW50KiBwb3B1cENsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93UGFnZVBvcHVwLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvd1BhZ2VQb3B1cC5oCmluZGV4IDUxZmI4NWFiMTcwMWFlMjNkODgxZDY1YmM2ZGViMDdi
MzAwMzJiMDEuLjRmODA2ZDk4MTQ1OTY2NzJkNTUzNmUwNzBmNTlkNDdjNzU5MGYxYTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93UGFnZVBvcHVwLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3dQYWdlUG9wdXAuaApAQCAtMzgsMTcgKzM4LDE5IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRE9NV2luZG93OwogY2xhc3MgUGFnZVBvcHVw
Q2xpZW50OworY2xhc3MgUGFnZVBvcHVwQ29udHJvbGxlcjsKIAogY2xhc3MgRE9NV2luZG93UGFn
ZVBvcHVwIDogcHVibGljIFN1cHBsZW1lbnQ8RE9NV2luZG93PiB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIHZvaWQgc2V0VmFsdWVBbmRDbG9zZVBvcHVwKERPTVdpbmRvdyosIGludCBpbnRWYWx1ZSwg
Y29uc3QgU3RyaW5nJiBzdHJpbmdWYWx1ZSk7CisgICAgc3RhdGljIFBhZ2VQb3B1cENvbnRyb2xs
ZXIqIHBhZ2VQb3B1cENvbnRyb2xsZXIoRE9NV2luZG93Kik7CiAgICAgc3RhdGljIHZvaWQgaW5z
dGFsbChET01XaW5kb3cqLCBQYWdlUG9wdXBDbGllbnQqKTsKKyAgICB+RE9NV2luZG93UGFnZVBv
cHVwKCk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgRE9NV2luZG93UGFnZVBvcHVwKFBhZ2VQ
b3B1cENsaWVudCopOwogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHN1cHBsZW1lbnRO
YW1lKCk7CiAKLSAgICBQYWdlUG9wdXBDbGllbnQqIG1fcG9wdXBDbGllbnQ7CisgICAgUmVmUHRy
PFBhZ2VQb3B1cENvbnRyb2xsZXI+IG1fY29udHJvbGxlcjsKIH07CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93UGFnZVBvcHVwLmlkbCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93UGFnZVBvcHVwLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYTQ3N2ExMTExNTk3
NmZiYzRhOWIzNThmMmViOWUwMjM0ZjE4Mzc2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3dQYWdlUG9wdXAuaWRsCkBAIC0wLDAgKzEsMzggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUg
d2luZG93IHsKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1QQUdFX1BPUFVQ
LAorICAgICAgICBTdXBwbGVtZW50YWw9RE9NV2luZG93CisgICAgXSBET01XaW5kb3dQYWdlUG9w
dXAgeworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW1Y4RW5hYmxlZFBlckNvbnRleHQ9cGFn
ZVBvcHVwXSBQYWdlUG9wdXBDb250cm9sbGVyIHBhZ2VQb3B1cENvbnRyb2xsZXI7CisgICAgfTsK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVBvcHVwQ29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VQb3B1cENvbnRyb2xsZXIuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjgyNGY2ZGZhYTVhNDkyNzY0NzUyZmY5N2YzZjMwY2FhOTM0MTUwMGUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VQb3B1cENvbnRyb2xsZXIuY3BwCkBAIC0w
LDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGFnZVBvcHVwQ29udHJv
bGxlci5oIgorCisjaWYgRU5BQkxFKFBBR0VfUE9QVVApCisjaW5jbHVkZSAiUGFnZVBvcHVwQ2xp
ZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFnZVBvcHVwQ29udHJvbGxlcjo6UGFn
ZVBvcHVwQ29udHJvbGxlcihQYWdlUG9wdXBDbGllbnQqIGNsaWVudCkKKyAgICA6IG1fcG9wdXBD
bGllbnQoY2xpZW50KQoreworICAgIEFTU0VSVChjbGllbnQpOworfQorCitQYXNzUmVmUHRyPFBh
Z2VQb3B1cENvbnRyb2xsZXI+IFBhZ2VQb3B1cENvbnRyb2xsZXI6OmNyZWF0ZShQYWdlUG9wdXBD
bGllbnQqIGNsaWVudCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBhZ2VQb3B1cENvbnRy
b2xsZXIoY2xpZW50KSk7Cit9CisKK3ZvaWQgUGFnZVBvcHVwQ29udHJvbGxlcjo6c2V0VmFsdWVB
bmRDbG9zZVBvcHVwKGludCBudW1WYWx1ZSwgY29uc3QgU3RyaW5nJiBzdHJpbmdWYWx1ZSkKK3sK
KyAgICBtX3BvcHVwQ2xpZW50LT5zZXRWYWx1ZUFuZENsb3NlUG9wdXAobnVtVmFsdWUsIHN0cmlu
Z1ZhbHVlKTsKK30KKworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2VQb3B1cENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVBvcHVwQ29u
dHJvbGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFlYzcyODc2NjU5ZDE5YTFhZjI0MmRkODhkZWNmMDE0NmNi
MjRiMGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VQb3B1cENv
bnRyb2xsZXIuaApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBQYWdlUG9wdXBDb250cm9sbGVyX2gK
KyNkZWZpbmUgUGFnZVBvcHVwQ29udHJvbGxlcl9oCisKKyNpZiBFTkFCTEUoUEFHRV9QT1BVUCkK
KworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBQYWdlUG9wdXBDbGllbnQ7CisKK2NsYXNz
IFBhZ2VQb3B1cENvbnRyb2xsZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxQYWdlUG9wdXBDb250cm9s
bGVyPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UGFnZVBvcHVwQ29udHJvbGxl
cj4gY3JlYXRlKFBhZ2VQb3B1cENsaWVudCopOworICAgIHZvaWQgc2V0VmFsdWVBbmRDbG9zZVBv
cHVwKGludCBudW1WYWx1ZSwgY29uc3QgU3RyaW5nJiBzdHJpbmdWYWx1ZSk7CisKK3ByaXZhdGU6
CisgICAgZXhwbGljaXQgUGFnZVBvcHVwQ29udHJvbGxlcihQYWdlUG9wdXBDbGllbnQqKTsKKwor
ICAgIFBhZ2VQb3B1cENsaWVudCogbV9wb3B1cENsaWVudDsKK307CisKK30KKyNlbmRpZgorI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VQb3B1cENvbnRyb2xsZXIu
aWRsIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlUG9wdXBDb250cm9sbGVyLmlkbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTBhNDlkYWJhMTQ5NWIzMDFmODRlZjYyNTQ5ODYzOGQ5YjM4OTkwCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlUG9wdXBDb250cm9sbGVyLmlkbApAQCAt
MCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworbW9kdWxlIHdpbmRvdyB7CisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29u
ZGl0aW9uYWw9UEFHRV9QT1BVUAorICAgIF0gUGFnZVBvcHVwQ29udHJvbGxlciB7CisgICAgICAg
IHZvaWQgc2V0VmFsdWVBbmRDbG9zZVBvcHVwKGluIGxvbmcgbnVtYmVyVmFsdWUsIGluIERPTVN0
cmluZyBzdHJpbmdWYWx1ZSk7CisgICAgfTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlBhZ2VQb3B1cEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViUGFnZVBvcHVwSW1wbC5jcHAKaW5kZXggMWFkNDE3YmFkNmQzNWQxM2IxZGY3MGRj
ZTk1ZTQxMjdhYTRmZjgyYi4uNjE3YjcyNWNlZTJiNWY5ZjJjZjI4ZTNjYTI4NmNmNTBhNzRmY2M4
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVBvcHVwSW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVBvcHVwSW1wbC5j
cHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJXZWJQYWdlUG9wdXBJbXBsLmgiCiAKICNp
bmNsdWRlICJDaHJvbWUuaCIKKyNpbmNsdWRlICJET01XaW5kb3dQYWdlUG9wdXAuaCIKICNpbmNs
dWRlICJFbXB0eUNsaWVudHMuaCIKICNpbmNsdWRlICJGaWxlQ2hvb3Nlci5oIgogI2luY2x1ZGUg
IkZvY3VzQ29udHJvbGxlci5oIgpAQCAtMTI3LDYgKzEyOCwxMCBAQCBwcml2YXRlOgogICAgIFdl
YlBhZ2VQb3B1cEltcGwqIG1fcG9wdXA7CiB9OwogCitjbGFzcyBQYWdlUG9wdXBGcmFtZUxvYWRl
ckNsaWVudCA6IHB1YmxpYyBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50IHsKKyAgICB2aXJ0dWFsIGJv
b2wgYWxsb3dQYWdlUG9wdXAoKSBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9Cit9OworCiAvLyBX
ZWJQYWdlUG9wdXBJbXBsIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogV2ViUGFnZVBvcHVwSW1wbDo6V2ViUGFnZVBvcHVw
SW1wbChXZWJXaWRnZXRDbGllbnQqIGNsaWVudCkKQEAgLTE4MSw4ICsxODYsOCBAQCBib29sIFdl
YlBhZ2VQb3B1cEltcGw6OmluaXRQYWdlKCkKICAgICBtX3BhZ2UtPnNldHRpbmdzKCktPnNldFNj
cmlwdEVuYWJsZWQodHJ1ZSk7CiAgICAgbV9wYWdlLT5zZXR0aW5ncygpLT5zZXRBbGxvd1Njcmlw
dHNUb0Nsb3NlV2luZG93cyh0cnVlKTsKIAotICAgIHN0YXRpYyBGcmFtZUxvYWRlckNsaWVudCog
ZW1wdHlGcmFtZUxvYWRlckNsaWVudCA9ICBuZXcgRW1wdHlGcmFtZUxvYWRlckNsaWVudDsKLSAg
ICBSZWZQdHI8RnJhbWU+IGZyYW1lID0gRnJhbWU6OmNyZWF0ZShtX3BhZ2UuZ2V0KCksIDAsIGVt
cHR5RnJhbWVMb2FkZXJDbGllbnQpOworICAgIHN0YXRpYyBGcmFtZUxvYWRlckNsaWVudCogcGFn
ZVBvcHVwRnJhbWVMb2FkZXJDbGllbnQgPSAgbmV3IFBhZ2VQb3B1cEZyYW1lTG9hZGVyQ2xpZW50
OworICAgIFJlZlB0cjxGcmFtZT4gZnJhbWUgPSBGcmFtZTo6Y3JlYXRlKG1fcGFnZS5nZXQoKSwg
MCwgcGFnZVBvcHVwRnJhbWVMb2FkZXJDbGllbnQpOwogICAgIGZyYW1lLT5zZXRWaWV3KEZyYW1l
Vmlldzo6Y3JlYXRlKGZyYW1lLmdldCgpKSk7CiAgICAgZnJhbWUtPmluaXQoKTsKICAgICBmcmFt
ZS0+dmlldygpLT5yZXNpemUobV9wb3B1cENsaWVudC0+Y29udGVudFNpemUoKSk7CkBAIC0xOTUs
NyArMjAwLDggQEAgYm9vbCBXZWJQYWdlUG9wdXBJbXBsOjppbml0UGFnZSgpCiAgICAgbV9wb3B1
cENsaWVudC0+d3JpdGVEb2N1bWVudCgqd3JpdGVyKTsKICAgICB3cml0ZXItPmVuZCgpOwogCi0g
ICAgZnJhbWUtPnNjcmlwdCgpLT5pbnN0YWxsRnVuY3Rpb25zRm9yUGFnZVBvcHVwKGZyYW1lLmdl
dCgpLCBtX3BvcHVwQ2xpZW50KTsKKyAgICBBU1NFUlQoZnJhbWUtPmV4aXN0aW5nRE9NV2luZG93
KCkpOworICAgIERPTVdpbmRvd1BhZ2VQb3B1cDo6aW5zdGFsbChmcmFtZS0+ZXhpc3RpbmdET01X
aW5kb3coKSwgbV9wb3B1cENsaWVudCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4
YmQxNTE2MGZjMDQwYzU0OGFjZGY1NWY2ZGJkYjI0M2E5ZTI5NTg3Li4xMDBiYWYyMTFjZDI3MTg2
N2IwYzViZDAzMzJjN2JjZGJiY2ZlYzE0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDUt
MjQgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFBBR0VfUE9Q
VVA6IHdpbmRvdy5zZXRWYWx1ZUFuZENsb3NlUG9wdXAgc2hvdWxkIGJlIG1vdmVkIHRvIGEKKyAg
ICAgICAgcGVyLWNvbnRleHQgcHJvcGVydHkgb2YgRE9NV2luZG93LgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODcwODYKKworICAgICAgICBSZXZpZXdl
ZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgICogZmFzdC9mb3Jtcy9kYXRlL25vLXBhZ2UtcG9w
dXAtY29udHJvbGxlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMv
ZGF0ZS9uby1wYWdlLXBvcHVwLWNvbnRyb2xsZXIuaHRtbDogQWRkZWQuCisKIDIwMTItMDUtMjQg
IEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEZpeCBjcmFzaGVz
IGNhdXNlZCBieSBhIERPTUNoYXJhY3RlckRhdGFNb2RpZmllZCBldmVudCBvbiBhIHRleHQgbm9k
ZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZGF0ZS9uby1wYWdlLXBvcHVw
LWNvbnRyb2xsZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9kYXRlL25v
LXBhZ2UtcG9wdXAtY29udHJvbGxlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjI3ODI1Zjlj
NTMwZTFmNDRiMWM1NTExYmI0ZTBlZjhhZmI5NjBhZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvZGF0ZS9uby1wYWdlLXBvcHVwLWNvbnRyb2xsZXItZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTAgQEAKK0NvbmZpcm0gdGhhdCB0aGUgbWFpbiB3aW5kb3cgZG9lc24n
dCBoYXZlIHBhZ2VQb3B1cENvbnRyb2xsZXIsIHdoaWNoIHNob3VsZCBiZSBwcmVzZW50IG9ubHkg
aW4gYSBjYWxlbmRhciBwaWNrZXIuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQ
QVNTIHdpbmRvdy5wYWdlUG9wdXBDb250cm9sbGVyID09PSB1bmRlZmluZWQgaXMgdHJ1ZQorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZGF0ZS9uby1wYWdlLXBvcHVwLWNvbnRyb2xsZXIu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZGF0ZS9uby1wYWdlLXBvcHVwLWNvbnRyb2xs
ZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lMmNjNzA0OWZkNjg0MWU2MzQzODljYmRkOGFiY2IwZTRkZmE4
NDE0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9kYXRlL25vLXBh
Z2UtcG9wdXAtY29udHJvbGxlci5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxpbnB1dCB0eXBlPWRhdGU+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ0Nv
bmZpcm0gdGhhdCB0aGUgbWFpbiB3aW5kb3cgZG9lc25cJ3QgaGF2ZSBwYWdlUG9wdXBDb250cm9s
bGVyLCB3aGljaCBzaG91bGQgYmUgcHJlc2VudCBvbmx5IGluIGEgY2FsZW5kYXIgcGlja2VyLicp
Oworc2hvdWxkQmVUcnVlKCd3aW5kb3cucGFnZVBvcHVwQ29udHJvbGxlciA9PT0gdW5kZWZpbmVk
Jyk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5n
ZUxvZwppbmRleCAxMDkyNmNlZGQ0N2ZkNjYxMTg0OWY2M2M1OGIyODViOWMxMzYxZDRjLi4yMWY2
YmE2MTAwNmYzZWRjYjFjNzFlMzQ3MTEyZmUzYWQ3MDVjMTYxIDEwMDY0NAotLS0gYS9DaGFuZ2VM
b2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDUtMjQgIEtlbnQgVGFt
dXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFBBR0VfUE9QVVA6IHdpbmRvdy5z
ZXRWYWx1ZUFuZENsb3NlUG9wdXAgc2hvdWxkIGJlIG1vdmVkIHRvIGEKKyAgICAgICAgcGVyLWNv
bnRleHQgcHJvcGVydHkgb2YgRE9NV2luZG93LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODcwODYKKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJh
cnRoLgorCisgICAgICAgICogTWFudWFsVGVzdHMvZm9ybXMvY2FsZW5kYXItcGlja2VyLmh0bWw6
CisgICAgICAgIEludHJvZHVjZSBwc2V1ZG8gd2luZG93LnBhZ2VQb3B1cENvbnRyb2xsZXIuCisK
IDIwMTItMDUtMjQgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtHVEtdIEFkZCAtLWVuYWJsZS1jc3MzLWZsZXhib3ggY29uZmlndXJlIG9wdGlvbiBh
ZnRlciByMTE4MzA0LgpkaWZmIC0tZ2l0IGEvTWFudWFsVGVzdHMvZm9ybXMvY2FsZW5kYXItcGlj
a2VyLmh0bWwgYi9NYW51YWxUZXN0cy9mb3Jtcy9jYWxlbmRhci1waWNrZXIuaHRtbAppbmRleCA0
M2VlZDVjOTVhNjIyYzE4ZmRmNGRkNzY3YjI0NGU3YTY3MDc3NTliLi5mZjAxMDI4NDA3ZGI5ZjM4
ZmFlZTYyM2Q2ZDQ4OWNkNjhjOTMxYTg5IDEwMDY0NAotLS0gYS9NYW51YWxUZXN0cy9mb3Jtcy9j
YWxlbmRhci1waWNrZXIuaHRtbAorKysgYi9NYW51YWxUZXN0cy9mb3Jtcy9jYWxlbmRhci1waWNr
ZXIuaHRtbApAQCAtODAsMTMgKzgwLDE3IEBAIGZ1bmN0aW9uIG9wZW5DYWxlbmRhcihhcmdzKSB7
CiAgICAgc2NyaXB0LnNyYyA9ICcuLi8uLi9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvY2FsZW5k
YXJQaWNrZXIuanM/JyArIChuZXcgRGF0ZSgpKS5nZXRUaW1lKCk7CiAgICAgZG9jLmJvZHkuYXBw
ZW5kQ2hpbGQoc2NyaXB0KTsKIAotICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICAg
IGZyYW1lLmNvbnRlbnRXaW5kb3cucG9zdE1lc3NhZ2UoSlNPTi5zdHJpbmdpZnkoYXJncyksICIq
Iik7Ci0gICAgICAgIGZyYW1lLmNvbnRlbnRXaW5kb3cuc2V0VmFsdWVBbmRDbG9zZVBvcHVwID0g
ZnVuY3Rpb24obnVtVmFsdWUsIHN0cmluZ1ZhbHVlKSB7CisgICAgdmFyIHBhZ2VQb3B1cENvbnRy
b2xsZXIgPSB7CisgICAgICAgIHNldFZhbHVlQW5kQ2xvc2VQb3B1cDogZnVuY3Rpb24obnVtVmFs
dWUsIHN0cmluZ1ZhbHVlKSB7CiAgICAgICAgICAgICB3aW5kb3cubG9nKCdudW1iZXI9JyArIG51
bVZhbHVlICsgJywgc3RyaW5nPSInICsgc3RyaW5nVmFsdWUgKyAnIicpOwogICAgICAgICAgICAg
aWYgKG51bVZhbHVlID09IDApCiAgICAgICAgICAgICAgICAgd2luZG93LmRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdkYXRlJykudmFsdWUgPSBzdHJpbmdWYWx1ZTsKLSAgICAgICAgfTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgIGZyYW1l
LmNvbnRlbnRXaW5kb3cucG9zdE1lc3NhZ2UoSlNPTi5zdHJpbmdpZnkoYXJncyksICIqIik7Cisg
ICAgICAgIGZyYW1lLmNvbnRlbnRXaW5kb3cucGFnZVBvcHVwQ29udHJvbGxlciA9IHBhZ2VQb3B1
cENvbnRyb2xsZXI7CiAgICAgfSwgMTAwKTsKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>