<?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>94511</bug_id>
          
          <creation_ts>2012-08-20 12:07:42 -0700</creation_ts>
          <short_desc>CodeGeneratorInspector.py: Generate guards for type validators</short_desc>
          <delta_ts>2012-08-21 16:09:36 -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>WebKit EFL</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>
          
          <blocked>88973</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Thiago Marcos P. Santos">tmpsantos</reporter>
          <assigned_to name="Thiago Marcos P. Santos">tmpsantos</assigned_to>
          <cc>aandrey</cc>
    
    <cc>cdumez</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>pfeldman</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>699773</commentid>
    <comment_count>0</comment_count>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-08-20 12:07:42 -0700</bug_when>
    <thetext>EFL Debug bots are broken after r126028. Release build looks like was unaffected, which makes me think we have something missing for NDEBUG flags.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699788</commentid>
    <comment_count>1</comment_count>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-08-20 12:23:57 -0700</bug_when>
    <thetext>The problem is not on bug 88973, but on the code generator. It was just exposed by the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699998</commentid>
    <comment_count>2</comment_count>
      <attachid>159526</attachid>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-08-20 14:49:26 -0700</bug_when>
    <thetext>Created attachment 159526
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700054</commentid>
    <comment_count>3</comment_count>
      <attachid>159534</attachid>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-08-20 15:25:00 -0700</bug_when>
    <thetext>Created attachment 159534
Generated InspectorTypeBuilder.cpp before the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700055</commentid>
    <comment_count>4</comment_count>
      <attachid>159535</attachid>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-08-20 15:25:31 -0700</bug_when>
    <thetext>Created attachment 159535
Generated InspectorTypeBuilder.cpp after the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700535</commentid>
    <comment_count>5</comment_count>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-08-21 00:23:33 -0700</bug_when>
    <thetext>Yeah, thanks for fixing this!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700538</commentid>
    <comment_count>6</comment_count>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-08-21 00:27:17 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Yeah, thanks for fixing this!

Can you help me to find a reviewer for this patch? I have 2 debug bots broken since yesterday because of this regression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700541</commentid>
    <comment_count>7</comment_count>
      <attachid>159526</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-08-21 00:29:10 -0700</bug_when>
    <thetext>Comment on attachment 159526
Patch

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

A couple of nits otherwise looks good.

&gt; Source/WebCore/inspector/CodeGeneratorInspector.py:931
&gt; +                                    if domain_guard:

The closing guard should go right after &quot;}&quot; and be followed by &quot;\n\n\n&quot; to match the coding style when there is no guard.

&gt; Source/WebCore/inspector/CodeGeneratorInspector.py:1338
&gt; +                                    if domain_guard:

Same here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700545</commentid>
    <comment_count>8</comment_count>
      <attachid>159526</attachid>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-08-21 00:35:01 -0700</bug_when>
    <thetext>Comment on attachment 159526
Patch

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

&gt;&gt; Source/WebCore/inspector/CodeGeneratorInspector.py:931
&gt;&gt; +                                    if domain_guard:
&gt; 
&gt; The closing guard should go right after &quot;}&quot; and be followed by &quot;\n\n\n&quot; to match the coding style when there is no guard.

You probably meant after &quot;}\n&quot; and followed by &quot;\n\n&quot;, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700546</commentid>
    <comment_count>9</comment_count>
      <attachid>159632</attachid>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-08-21 00:36:15 -0700</bug_when>
    <thetext>Created attachment 159632
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700547</commentid>
    <comment_count>10</comment_count>
      <attachid>159633</attachid>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-08-21 00:38:12 -0700</bug_when>
    <thetext>Created attachment 159633
Generated InspectorTypeBuilder.cpp after the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700548</commentid>
    <comment_count>11</comment_count>
      <attachid>159634</attachid>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-08-21 00:41:58 -0700</bug_when>
    <thetext>Created attachment 159634
Patch

Added copyright notice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701240</commentid>
    <comment_count>12</comment_count>
      <attachid>159634</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-21 16:09:32 -0700</bug_when>
    <thetext>Comment on attachment 159634
Patch

Clearing flags on attachment: 159634

Committed r126206: &lt;http://trac.webkit.org/changeset/126206&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701241</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-21 16:09:36 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159526</attachid>
            <date>2012-08-20 14:49:26 -0700</date>
            <delta_ts>2012-08-21 00:36:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94511-20120821004846.patch</filename>
            <type>text/plain</type>
            <size>4266</size>
            <attacher name="Thiago Marcos P. Santos">tmpsantos</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2MDQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDc3ZTc4YWNlNTMxOGMz
NjhhYjM2ZmU3ZmM3YWFiYzk5NmZlMTQ2MC4uZWVhMDZmOTMwMzA5Mzg1OWJlNjZkZThhZjQ4M2Uy
MjYyOWRiMTRmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTA4LTIwICBUaGlh
Z28gTWFyY29zIFAuIFNhbnRvcyAgPHRoaWFnby5zYW50b3NAaW50ZWwuY29tPgorCisgICAgICAg
IENvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHk6IEdlbmVyYXRlIGd1YXJkcyBmb3IgdHlwZSB2YWxp
ZGF0b3JzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
NDUxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZp
eCByZWdyZXNzaW9uIHdoZW4gYnVpbGRpbmcgZGVidWcgYW5kIG9uZSBvZiB0aGUgZ2VuZXJhdGVk
IHR5cGVzIGlzCisgICAgICAgIGRpc2FibGVkIGJ5IGEgY29tcGlsZSBmbGFnLiBXZSBzaG91bGQg
Z2VuZXJhdGUgZ3VhcmRzIGZvciB0aGVzZSB0eXBlCisgICAgICAgIHZhbGlkYXRvcnMgdGhlIHNh
bWUgd2F5IGFzIHdlIGFyZSBkb2luZyBvbiB0aGUgaW5jbHVkZSBoZWFkZXJzLgorCisgICAgICAg
ICogaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHk6CisgICAgICAgIChUeXBlQmlu
ZGluZ3MuY3JlYXRlX3R5cGVfZGVjbGFyYXRpb25fLkVudW1CaW5kaW5nLmdldF9jb2RlX2dlbmVy
YXRvci5Db2RlR2VuZXJhdG9yLmdlbmVyYXRlX3R5cGVfYnVpbGRlcik6CisKIDIwMTItMDgtMjAg
IE1pa2UgV2VzdCAgPG1rd3N0QGNocm9taXVtLm9yZz4KIAogICAgICAgICBDU1AgMS4xOiBUaGUg
J3BsdWdpbi10eXBlcycgd2FybmluZyBzaG91bGQgaW5jbHVkZSBkZXRhaWxzIGFib3V0IGV4cGxp
Y2l0IHR5cGUgZGVjbGFyYXRpb24gd2hlbiByZWxldmFudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5IGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKaW5kZXggODE3ZWQwYjQ2ZmZj
ZjYyNTgyMThjYzJhYTc3YTNjNTg0NjM5YzEyOS4uYjg0ZGU4Yjk0ZjNkZDg5MmYwYWIwMTI4YjUw
ZmM3YWQ1YTQyM2RiMSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVH
ZW5lcmF0b3JJbnNwZWN0b3IucHkKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVH
ZW5lcmF0b3JJbnNwZWN0b3IucHkKQEAgLTkwOSw2ICs5MDksMTIgQEAgY2xhc3MgVHlwZUJpbmRp
bmdzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLmFwcGVuZCgi
I2VuZGlmICAvLyAlc1xuIiAlIFZBTElEQVRPUl9JRkRFRl9OQU1FKQogCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3Jfd3JpdGVyID0gZ2VuZXJhdGVfY29udGV4
dC52YWxpZGF0b3Jfd3JpdGVyCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRvbWFpbl9maXhlcyA9IERvbWFpbk5hbWVGaXhlcy5nZXRfZml4ZWRfZGF0YShjb250ZXh0X2Rv
bWFpbl9uYW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tYWluX2d1
YXJkID0gZG9tYWluX2ZpeGVzLmdldF9ndWFyZCgpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiBkb21haW5fZ3VhcmQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZG9tYWluX2d1YXJkLmdlbmVyYXRlX29wZW4odmFsaWRhdG9yX3dyaXRlcikK
KwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yX3dyaXRlci5u
ZXdsaW5lKCJ2b2lkICVzJXM6OmFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFs
dWUpXG4iICUgKGhlbHBlci5mdWxsX25hbWVfcHJlZml4X2Zvcl9pbXBsLCBlbnVtX25hbWUpKQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yX3dyaXRlci5uZXds
aW5lKCJ7XG4iKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9y
X3dyaXRlci5uZXdsaW5lKCIgICAgV1RGOjpTdHJpbmcgcztcbiIpCkBAIC05MjIsNiArOTI4LDgg
QEAgY2xhc3MgVHlwZUJpbmRpbmdzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZhbGlkYXRvcl93cml0ZXIubmV3bGluZSgiICAgIEFTU0VSVCglcyk7XG4iICUgam9p
bihjb25kaXRpb25fbGlzdCwgIiB8fCAiKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZhbGlkYXRvcl93cml0ZXIubmV3bGluZSgifVxuXG5cbiIpCiAKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRvbWFpbl9ndWFyZDoKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkb21haW5fZ3VhcmQuZ2VuZXJhdGVfY2xvc2UodmFs
aWRhdG9yX3dyaXRlcikKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIu
bmV3bGluZSgifTsgLy8gc3RydWN0ICIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHdyaXRlci5hcHBlbmQoZW51bV9uYW1lKQpAQCAtMTI4OCw2ICsxMjk2LDEyIEBAIGNsYXNzIFR5
cGVCaW5kaW5nczoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlZF9m
aWVsZF9zZXQgPSAoY29udGV4dF9kb21haW5fbmFtZSArICIuIiArIGNsYXNzX25hbWUpIG5vdCBp
biBUWVBFU19XSVRIX09QRU5fRklFTERfTElTVF9TRVQKIAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdmFsaWRhdG9yX3dyaXRlciA9IGdlbmVyYXRlX2NvbnRleHQudmFsaWRh
dG9yX3dyaXRlcgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21haW5f
Zml4ZXMgPSBEb21haW5OYW1lRml4ZXMuZ2V0X2ZpeGVkX2RhdGEoY29udGV4dF9kb21haW5fbmFt
ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbl9ndWFyZCA9IGRv
bWFpbl9maXhlcy5nZXRfZ3VhcmQoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgZG9tYWluX2d1YXJkOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRvbWFpbl9ndWFyZC5nZW5lcmF0ZV9vcGVuKHZhbGlkYXRvcl93cml0ZXIpCisKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcl93cml0ZXIubmV3bGluZSgi
dm9pZCAlcyVzOjphc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKVxuIiAl
IChoZWxwZXIuZnVsbF9uYW1lX3ByZWZpeF9mb3JfaW1wbCwgY2xhc3NfbmFtZSkpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3Jfd3JpdGVyLm5ld2xpbmUoIntc
biIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3Jfd3JpdGVy
Lm5ld2xpbmUoIiAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3Q7XG4iKQpAQCAtMTMy
MSw2ICsxMzM1LDkgQEAgY2xhc3MgVHlwZUJpbmRpbmdzOgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcl93cml0ZXIubmV3bGluZSgiICAgIEFTU0VSVChm
b3VuZFByb3BlcnRpZXNDb3VudCA9PSBvYmplY3QtPnNpemUoKSk7XG4iKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yX3dyaXRlci5uZXdsaW5lKCJ9XG5cblxu
IikKIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZG9tYWluX2d1YXJk
OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbl9ndWFyZC5n
ZW5lcmF0ZV9jbG9zZSh2YWxpZGF0b3Jfd3JpdGVyKQorCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIGlzX29wZW5fdHlwZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNwcF93cml0ZXIgPSBnZW5lcmF0ZV9jb250ZXh0LmNwcF93cml0ZXIKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5hcHBlbmQoIlxuIikK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>159534</attachid>
            <date>2012-08-20 15:25:00 -0700</date>
            <delta_ts>2012-08-20 15:25:00 -0700</delta_ts>
            <desc>Generated InspectorTypeBuilder.cpp before the patch.</desc>
            <filename>InspectorTypeBuilder.cpp</filename>
            <type>text/x-c++src</type>
            <size>19235</size>
            <attacher name="Thiago Marcos P. Santos">tmpsantos</attacher>
            
              <data encoding="base64">Ly8gRmlsZSBpcyBnZW5lcmF0ZWQgYnkgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5l
cmF0b3JJbnNwZWN0b3IucHkKCi8vIENvcHlyaWdodCAoYykgMjAxMSBUaGUgQ2hyb21pdW0gQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQovLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgoKCiNpbmNsdWRlICJjb25maWcuaCIKI2lmIEVOQUJMRShJTlNQRUNU
T1IpCgojaW5jbHVkZSAiSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCIKCm5hbWVzcGFjZSBXZWJDb3Jl
IHsKCm5hbWVzcGFjZSBUeXBlQnVpbGRlciB7Cgpjb25zdCBjaGFyKiBjb25zdCBlbnVtX2NvbnN0
YW50X3ZhbHVlc1tdID0gewogICAgIkRvY3VtZW50IiwKICAgICJTdHlsZXNoZWV0IiwKICAgICJJ
bWFnZSIsCiAgICAiRm9udCIsCiAgICAiU2NyaXB0IiwKICAgICJYSFIiLAogICAgIldlYlNvY2tl
dCIsCiAgICAiT3RoZXIiLAogICAgIm9iamVjdCIsCiAgICAiZnVuY3Rpb24iLAogICAgInVuZGVm
aW5lZCIsCiAgICAic3RyaW5nIiwKICAgICJudW1iZXIiLAogICAgImJvb2xlYW4iLAogICAgImFy
cmF5IiwKICAgICJudWxsIiwKICAgICJub2RlIiwKICAgICJyZWdleHAiLAogICAgImRhdGUiLAog
ICAgImh0bWwiLAogICAgIndtbCIsCiAgICAieG1sIiwKICAgICJqYXZhc2NyaXB0IiwKICAgICJu
ZXR3b3JrIiwKICAgICJjb25zb2xlLWFwaSIsCiAgICAib3RoZXIiLAogICAgInRpcCIsCiAgICAi
bG9nIiwKICAgICJ3YXJuaW5nIiwKICAgICJlcnJvciIsCiAgICAiZGVidWciLAogICAgImRpciIs
CiAgICAiZGlyeG1sIiwKICAgICJ0cmFjZSIsCiAgICAic3RhcnRHcm91cCIsCiAgICAic3RhcnRH
cm91cENvbGxhcHNlZCIsCiAgICAiZW5kR3JvdXAiLAogICAgImFzc2VydCIsCiAgICAicGFyc2Vy
IiwKICAgICJzY3JpcHQiLAogICAgInVzZXIiLAogICAgInVzZXItYWdlbnQiLAogICAgImluc3Bl
Y3RvciIsCiAgICAicmVndWxhciIsCiAgICAiYWN0aXZlIiwKICAgICJpbmFjdGl2ZSIsCiAgICAi
ZGlzYWJsZWQiLAogICAgInN0eWxlIiwKICAgICJtZWRpYVJ1bGUiLAogICAgImltcG9ydFJ1bGUi
LAogICAgImxpbmtlZFNoZWV0IiwKICAgICJpbmxpbmVTaGVldCIsCiAgICAib3ZlcnNldCIsCiAg
ICAiZml0IiwKICAgICJlbXB0eSIsCiAgICAiZ2xvYmFsIiwKICAgICJsb2NhbCIsCiAgICAid2l0
aCIsCiAgICAiY2xvc3VyZSIsCiAgICAiY2F0Y2giLAogICAgInN1YnRyZWUtbW9kaWZpZWQiLAog
ICAgImF0dHJpYnV0ZS1tb2RpZmllZCIsCiAgICAibm9kZS1yZW1vdmVkIiwKICAgICJDUFUiLAog
ICAgIkNTUyIsCiAgICAiSEVBUCIsCiAgICAiYWxsb3dlZCIsCiAgICAiZm9yYmlkZGVuIiwKICAg
ICJET00iLAogICAgIkV2ZW50TGlzdGVuZXIiLAogICAgImV4Y2VwdGlvbiIKfTsKClN0cmluZyBn
ZXRFbnVtQ29uc3RhbnRWYWx1ZShpbnQgY29kZSkgewogICAgcmV0dXJuIGVudW1fY29uc3RhbnRf
dmFsdWVzW2NvZGVdOwp9Cgp9IC8vIG5hbWVzcGFjZSBUeXBlQnVpbGRlcgoKY29uc3QgY2hhciog
VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OlJlc3BvbnNlOjpVcmwgPSAidXJsIjsKY29uc3QgY2hhciog
VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OlJlc3BvbnNlOjpTdGF0dXMgPSAic3RhdHVzIjsKY29uc3Qg
Y2hhciogVHlwZUJ1aWxkZXI6Ok5ldHdvcms6OlJlc3BvbnNlOjpTdGF0dXNUZXh0ID0gInN0YXR1
c1RleHQiOwpjb25zdCBjaGFyKiBUeXBlQnVpbGRlcjo6TmV0d29yazo6UmVzcG9uc2U6OkhlYWRl
cnMgPSAiaGVhZGVycyI7CmNvbnN0IGNoYXIqIFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXNwb25z
ZTo6TWltZVR5cGUgPSAibWltZVR5cGUiOwpjb25zdCBjaGFyKiBUeXBlQnVpbGRlcjo6TmV0d29y
azo6UmVzcG9uc2U6OkNvbm5lY3Rpb25SZXVzZWQgPSAiY29ubmVjdGlvblJldXNlZCI7CmNvbnN0
IGNoYXIqIFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXNwb25zZTo6Q29ubmVjdGlvbklkID0gImNv
bm5lY3Rpb25JZCI7CmNvbnN0IGNoYXIqIFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXNwb25zZTo6
SGVhZGVyc1RleHQgPSAiaGVhZGVyc1RleHQiOwpjb25zdCBjaGFyKiBUeXBlQnVpbGRlcjo6TmV0
d29yazo6UmVzcG9uc2U6OlJlcXVlc3RIZWFkZXJzID0gInJlcXVlc3RIZWFkZXJzIjsKY29uc3Qg
Y2hhciogVHlwZUJ1aWxkZXI6Ok5ldHdvcms6OlJlc3BvbnNlOjpSZXF1ZXN0SGVhZGVyc1RleHQg
PSAicmVxdWVzdEhlYWRlcnNUZXh0IjsKY29uc3QgY2hhciogVHlwZUJ1aWxkZXI6Ok5ldHdvcms6
OlJlc3BvbnNlOjpGcm9tRGlza0NhY2hlID0gImZyb21EaXNrQ2FjaGUiOwpjb25zdCBjaGFyKiBU
eXBlQnVpbGRlcjo6TmV0d29yazo6UmVzcG9uc2U6OlRpbWluZyA9ICJ0aW1pbmciOwpjb25zdCBj
aGFyKiBUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eTo6TmFtZSA9ICJuYW1lIjsKY29uc3Qg
Y2hhciogVHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk6OlZhbHVlID0gInZhbHVlIjsKY29u
c3QgY2hhciogVHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk6OlByaW9yaXR5ID0gInByaW9y
aXR5IjsKY29uc3QgY2hhciogVHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk6OkltcGxpY2l0
ID0gImltcGxpY2l0IjsKY29uc3QgY2hhciogVHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk6
OlRleHQgPSAidGV4dCI7CmNvbnN0IGNoYXIqIFR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5
OjpQYXJzZWRPayA9ICJwYXJzZWRPayI7CmNvbnN0IGNoYXIqIFR5cGVCdWlsZGVyOjpDU1M6OkNT
U1Byb3BlcnR5OjpTdGF0dXMgPSAic3RhdHVzIjsKY29uc3QgY2hhciogVHlwZUJ1aWxkZXI6OkNT
Uzo6Q1NTUHJvcGVydHk6OlJhbmdlID0gInJhbmdlIjsKY29uc3QgY2hhciogVHlwZUJ1aWxkZXI6
OlRpbWVsaW5lOjpUaW1lbGluZUV2ZW50OjpUeXBlID0gInR5cGUiOwpjb25zdCBjaGFyKiBUeXBl
QnVpbGRlcjo6VGltZWxpbmU6OlRpbWVsaW5lRXZlbnQ6OkRhdGEgPSAiZGF0YSI7CmNvbnN0IGNo
YXIqIFR5cGVCdWlsZGVyOjpUaW1lbGluZTo6VGltZWxpbmVFdmVudDo6Q2hpbGRyZW4gPSAiY2hp
bGRyZW4iOwoKCiNpZiAhQVNTRVJUX0RJU0FCTEVECgp2b2lkIFR5cGVCdWlsZGVyOjpSdW50aW1l
Q2FzdEhlbHBlcjo6YXNzZXJ0QW55KEluc3BlY3RvclZhbHVlKikKewogICAgLy8gTm8tb3AuCn0K
Cgp2b2lkIFR5cGVCdWlsZGVyOjpSdW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0SW50KEluc3BlY3Rv
clZhbHVlKiB2YWx1ZSkKewogICAgZG91YmxlIHY7CiAgICBib29sIGNhc3RSZXMgPSB2YWx1ZS0+
YXNOdW1iZXIoJnYpOwogICAgQVNTRVJUX1VOVVNFRChjYXN0UmVzLCBjYXN0UmVzKTsKICAgIEFT
U0VSVChzdGF0aWNfY2FzdDxkb3VibGU+KHN0YXRpY19jYXN0PGludD4odikpID09IHYpOwp9Cgp2
b2lkIFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q6OlR5cGU6OmFzc2VydENvcnJl
Y3RWYWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpCnsKICAgIFdURjo6U3RyaW5nIHM7CiAgICBi
b29sIGNhc3RfcmVzID0gdmFsdWUtPmFzU3RyaW5nKCZzKTsKICAgIEFTU0VSVChjYXN0X3Jlcyk7
CiAgICBBU1NFUlQocyA9PSAib2JqZWN0IiB8fCBzID09ICJmdW5jdGlvbiIgfHwgcyA9PSAidW5k
ZWZpbmVkIiB8fCBzID09ICJzdHJpbmciIHx8IHMgPT0gIm51bWJlciIgfHwgcyA9PSAiYm9vbGVh
biIpOwp9CgoKdm9pZCBUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0OjpTdWJ0eXBl
Ojphc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKQp7CiAgICBXVEY6OlN0
cmluZyBzOwogICAgYm9vbCBjYXN0X3JlcyA9IHZhbHVlLT5hc1N0cmluZygmcyk7CiAgICBBU1NF
UlQoY2FzdF9yZXMpOwogICAgQVNTRVJUKHMgPT0gImFycmF5IiB8fCBzID09ICJudWxsIiB8fCBz
ID09ICJub2RlIiB8fCBzID09ICJyZWdleHAiIHx8IHMgPT0gImRhdGUiKTsKfQoKCnZvaWQgVHlw
ZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdDo6YXNzZXJ0Q29ycmVjdFZhbHVlKEluc3Bl
Y3RvclZhbHVlKiB2YWx1ZSkKewogICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gb2JqZWN0Owog
ICAgYm9vbCBjYXN0UmVzID0gdmFsdWUtPmFzT2JqZWN0KCZvYmplY3QpOwogICAgQVNTRVJUX1VO
VVNFRChjYXN0UmVzLCBjYXN0UmVzKTsKICAgIHsKICAgICAgICBJbnNwZWN0b3JPYmplY3Q6Oml0
ZXJhdG9yIHR5cGVQb3M7CiAgICAgICAgdHlwZVBvcyA9IG9iamVjdC0+ZmluZCgidHlwZSIpOwog
ICAgICAgIEFTU0VSVCh0eXBlUG9zICE9IG9iamVjdC0+ZW5kKCkpOwogICAgICAgIFR5cGU6OmFz
c2VydENvcnJlY3RWYWx1ZSh0eXBlUG9zLT5zZWNvbmQuZ2V0KCkpOwogICAgfQogICAgaW50IGZv
dW5kUHJvcGVydGllc0NvdW50ID0gMTsKICAgIHsKICAgICAgICBJbnNwZWN0b3JPYmplY3Q6Oml0
ZXJhdG9yIHN1YnR5cGVQb3M7CiAgICAgICAgc3VidHlwZVBvcyA9IG9iamVjdC0+ZmluZCgic3Vi
dHlwZSIpOwogICAgICAgIGlmIChzdWJ0eXBlUG9zICE9IG9iamVjdC0+ZW5kKCkpIHsKICAgICAg
ICAgICAgU3VidHlwZTo6YXNzZXJ0Q29ycmVjdFZhbHVlKHN1YnR5cGVQb3MtPnNlY29uZC5nZXQo
KSk7CiAgICAgICAgICAgICsrZm91bmRQcm9wZXJ0aWVzQ291bnQ7CiAgICAgICAgfQogICAgfQog
ICAgewogICAgICAgIEluc3BlY3Rvck9iamVjdDo6aXRlcmF0b3IgY2xhc3NOYW1lUG9zOwogICAg
ICAgIGNsYXNzTmFtZVBvcyA9IG9iamVjdC0+ZmluZCgiY2xhc3NOYW1lIik7CiAgICAgICAgaWYg
KGNsYXNzTmFtZVBvcyAhPSBvYmplY3QtPmVuZCgpKSB7CiAgICAgICAgICAgIFJ1bnRpbWVDYXN0
SGVscGVyOjphc3NlcnRUeXBlPEluc3BlY3RvclZhbHVlOjpUeXBlU3RyaW5nPihjbGFzc05hbWVQ
b3MtPnNlY29uZC5nZXQoKSk7CiAgICAgICAgICAgICsrZm91bmRQcm9wZXJ0aWVzQ291bnQ7CiAg
ICAgICAgfQogICAgfQogICAgewogICAgICAgIEluc3BlY3Rvck9iamVjdDo6aXRlcmF0b3IgdmFs
dWVQb3M7CiAgICAgICAgdmFsdWVQb3MgPSBvYmplY3QtPmZpbmQoInZhbHVlIik7CiAgICAgICAg
aWYgKHZhbHVlUG9zICE9IG9iamVjdC0+ZW5kKCkpIHsKICAgICAgICAgICAgUnVudGltZUNhc3RI
ZWxwZXI6OmFzc2VydEFueSh2YWx1ZVBvcy0+c2Vjb25kLmdldCgpKTsKICAgICAgICAgICAgKytm
b3VuZFByb3BlcnRpZXNDb3VudDsKICAgICAgICB9CiAgICB9CiAgICB7CiAgICAgICAgSW5zcGVj
dG9yT2JqZWN0OjppdGVyYXRvciBkZXNjcmlwdGlvblBvczsKICAgICAgICBkZXNjcmlwdGlvblBv
cyA9IG9iamVjdC0+ZmluZCgiZGVzY3JpcHRpb24iKTsKICAgICAgICBpZiAoZGVzY3JpcHRpb25Q
b3MgIT0gb2JqZWN0LT5lbmQoKSkgewogICAgICAgICAgICBSdW50aW1lQ2FzdEhlbHBlcjo6YXNz
ZXJ0VHlwZTxJbnNwZWN0b3JWYWx1ZTo6VHlwZVN0cmluZz4oZGVzY3JpcHRpb25Qb3MtPnNlY29u
ZC5nZXQoKSk7CiAgICAgICAgICAgICsrZm91bmRQcm9wZXJ0aWVzQ291bnQ7CiAgICAgICAgfQog
ICAgfQogICAgewogICAgICAgIEluc3BlY3Rvck9iamVjdDo6aXRlcmF0b3Igb2JqZWN0SWRQb3M7
CiAgICAgICAgb2JqZWN0SWRQb3MgPSBvYmplY3QtPmZpbmQoIm9iamVjdElkIik7CiAgICAgICAg
aWYgKG9iamVjdElkUG9zICE9IG9iamVjdC0+ZW5kKCkpIHsKICAgICAgICAgICAgUnVudGltZUNh
c3RIZWxwZXI6OmFzc2VydFR5cGU8SW5zcGVjdG9yVmFsdWU6OlR5cGVTdHJpbmc+KG9iamVjdElk
UG9zLT5zZWNvbmQuZ2V0KCkpOwogICAgICAgICAgICArK2ZvdW5kUHJvcGVydGllc0NvdW50Owog
ICAgICAgIH0KICAgIH0KICAgIHsKICAgICAgICBJbnNwZWN0b3JPYmplY3Q6Oml0ZXJhdG9yIHBy
ZXZpZXdQb3M7CiAgICAgICAgcHJldmlld1BvcyA9IG9iamVjdC0+ZmluZCgicHJldmlldyIpOwog
ICAgICAgIGlmIChwcmV2aWV3UG9zICE9IG9iamVjdC0+ZW5kKCkpIHsKICAgICAgICAgICAgVHlw
ZUJ1aWxkZXI6OlJ1bnRpbWU6Ok9iamVjdFByZXZpZXc6OmFzc2VydENvcnJlY3RWYWx1ZShwcmV2
aWV3UG9zLT5zZWNvbmQuZ2V0KCkpOwogICAgICAgICAgICArK2ZvdW5kUHJvcGVydGllc0NvdW50
OwogICAgICAgIH0KICAgIH0KICAgIEFTU0VSVChmb3VuZFByb3BlcnRpZXNDb3VudCA9PSBvYmpl
Y3QtPnNpemUoKSk7Cn0KCgp2b2lkIFR5cGVCdWlsZGVyOjpSdW50aW1lOjpPYmplY3RQcmV2aWV3
Ojphc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKQp7CiAgICBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBvYmplY3Q7CiAgICBib29sIGNhc3RSZXMgPSB2YWx1ZS0+YXNPYmpl
Y3QoJm9iamVjdCk7CiAgICBBU1NFUlRfVU5VU0VEKGNhc3RSZXMsIGNhc3RSZXMpOwogICAgewog
ICAgICAgIEluc3BlY3Rvck9iamVjdDo6aXRlcmF0b3IgbG9zc2xlc3NQb3M7CiAgICAgICAgbG9z
c2xlc3NQb3MgPSBvYmplY3QtPmZpbmQoImxvc3NsZXNzIik7CiAgICAgICAgQVNTRVJUKGxvc3Ns
ZXNzUG9zICE9IG9iamVjdC0+ZW5kKCkpOwogICAgICAgIFJ1bnRpbWVDYXN0SGVscGVyOjphc3Nl
cnRUeXBlPEluc3BlY3RvclZhbHVlOjpUeXBlQm9vbGVhbj4obG9zc2xlc3NQb3MtPnNlY29uZC5n
ZXQoKSk7CiAgICB9CiAgICB7CiAgICAgICAgSW5zcGVjdG9yT2JqZWN0OjppdGVyYXRvciBvdmVy
Zmxvd1BvczsKICAgICAgICBvdmVyZmxvd1BvcyA9IG9iamVjdC0+ZmluZCgib3ZlcmZsb3ciKTsK
ICAgICAgICBBU1NFUlQob3ZlcmZsb3dQb3MgIT0gb2JqZWN0LT5lbmQoKSk7CiAgICAgICAgUnVu
dGltZUNhc3RIZWxwZXI6OmFzc2VydFR5cGU8SW5zcGVjdG9yVmFsdWU6OlR5cGVCb29sZWFuPihv
dmVyZmxvd1Bvcy0+c2Vjb25kLmdldCgpKTsKICAgIH0KICAgIHsKICAgICAgICBJbnNwZWN0b3JP
YmplY3Q6Oml0ZXJhdG9yIHByb3BlcnRpZXNQb3M7CiAgICAgICAgcHJvcGVydGllc1BvcyA9IG9i
amVjdC0+ZmluZCgicHJvcGVydGllcyIpOwogICAgICAgIEFTU0VSVChwcm9wZXJ0aWVzUG9zICE9
IG9iamVjdC0+ZW5kKCkpOwogICAgICAgIFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6
UnVudGltZTo6UHJvcGVydHlQcmV2aWV3Pjo6YXNzZXJ0Q29ycmVjdFZhbHVlKHByb3BlcnRpZXNQ
b3MtPnNlY29uZC5nZXQoKSk7CiAgICB9CiAgICBpbnQgZm91bmRQcm9wZXJ0aWVzQ291bnQgPSAz
OwogICAgQVNTRVJUKGZvdW5kUHJvcGVydGllc0NvdW50ID09IG9iamVjdC0+c2l6ZSgpKTsKfQoK
CnZvaWQgVHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlByb3BlcnR5UHJldmlldzo6VHlwZTo6YXNzZXJ0
Q29ycmVjdFZhbHVlKEluc3BlY3RvclZhbHVlKiB2YWx1ZSkKewogICAgV1RGOjpTdHJpbmcgczsK
ICAgIGJvb2wgY2FzdF9yZXMgPSB2YWx1ZS0+YXNTdHJpbmcoJnMpOwogICAgQVNTRVJUKGNhc3Rf
cmVzKTsKICAgIEFTU0VSVChzID09ICJvYmplY3QiIHx8IHMgPT0gImZ1bmN0aW9uIiB8fCBzID09
ICJ1bmRlZmluZWQiIHx8IHMgPT0gInN0cmluZyIgfHwgcyA9PSAibnVtYmVyIiB8fCBzID09ICJi
b29sZWFuIik7Cn0KCgp2b2lkIFR5cGVCdWlsZGVyOjpSdW50aW1lOjpQcm9wZXJ0eVByZXZpZXc6
OlN1YnR5cGU6OmFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpCnsKICAg
IFdURjo6U3RyaW5nIHM7CiAgICBib29sIGNhc3RfcmVzID0gdmFsdWUtPmFzU3RyaW5nKCZzKTsK
ICAgIEFTU0VSVChjYXN0X3Jlcyk7CiAgICBBU1NFUlQocyA9PSAiYXJyYXkiIHx8IHMgPT0gIm51
bGwiIHx8IHMgPT0gIm5vZGUiIHx8IHMgPT0gInJlZ2V4cCIgfHwgcyA9PSAiZGF0ZSIpOwp9CgoK
dm9pZCBUeXBlQnVpbGRlcjo6UnVudGltZTo6UHJvcGVydHlQcmV2aWV3Ojphc3NlcnRDb3JyZWN0
VmFsdWUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKQp7CiAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiBvYmplY3Q7CiAgICBib29sIGNhc3RSZXMgPSB2YWx1ZS0+YXNPYmplY3QoJm9iamVjdCk7CiAg
ICBBU1NFUlRfVU5VU0VEKGNhc3RSZXMsIGNhc3RSZXMpOwogICAgewogICAgICAgIEluc3BlY3Rv
ck9iamVjdDo6aXRlcmF0b3IgbmFtZVBvczsKICAgICAgICBuYW1lUG9zID0gb2JqZWN0LT5maW5k
KCJuYW1lIik7CiAgICAgICAgQVNTRVJUKG5hbWVQb3MgIT0gb2JqZWN0LT5lbmQoKSk7CiAgICAg
ICAgUnVudGltZUNhc3RIZWxwZXI6OmFzc2VydFR5cGU8SW5zcGVjdG9yVmFsdWU6OlR5cGVTdHJp
bmc+KG5hbWVQb3MtPnNlY29uZC5nZXQoKSk7CiAgICB9CiAgICB7CiAgICAgICAgSW5zcGVjdG9y
T2JqZWN0OjppdGVyYXRvciB0eXBlUG9zOwogICAgICAgIHR5cGVQb3MgPSBvYmplY3QtPmZpbmQo
InR5cGUiKTsKICAgICAgICBBU1NFUlQodHlwZVBvcyAhPSBvYmplY3QtPmVuZCgpKTsKICAgICAg
ICBUeXBlOjphc3NlcnRDb3JyZWN0VmFsdWUodHlwZVBvcy0+c2Vjb25kLmdldCgpKTsKICAgIH0K
ICAgIGludCBmb3VuZFByb3BlcnRpZXNDb3VudCA9IDI7CiAgICB7CiAgICAgICAgSW5zcGVjdG9y
T2JqZWN0OjppdGVyYXRvciB2YWx1ZVBvczsKICAgICAgICB2YWx1ZVBvcyA9IG9iamVjdC0+Zmlu
ZCgidmFsdWUiKTsKICAgICAgICBpZiAodmFsdWVQb3MgIT0gb2JqZWN0LT5lbmQoKSkgewogICAg
ICAgICAgICBSdW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0VHlwZTxJbnNwZWN0b3JWYWx1ZTo6VHlw
ZVN0cmluZz4odmFsdWVQb3MtPnNlY29uZC5nZXQoKSk7CiAgICAgICAgICAgICsrZm91bmRQcm9w
ZXJ0aWVzQ291bnQ7CiAgICAgICAgfQogICAgfQogICAgewogICAgICAgIEluc3BlY3Rvck9iamVj
dDo6aXRlcmF0b3Igc3VidHlwZVBvczsKICAgICAgICBzdWJ0eXBlUG9zID0gb2JqZWN0LT5maW5k
KCJzdWJ0eXBlIik7CiAgICAgICAgaWYgKHN1YnR5cGVQb3MgIT0gb2JqZWN0LT5lbmQoKSkgewog
ICAgICAgICAgICBTdWJ0eXBlOjphc3NlcnRDb3JyZWN0VmFsdWUoc3VidHlwZVBvcy0+c2Vjb25k
LmdldCgpKTsKICAgICAgICAgICAgKytmb3VuZFByb3BlcnRpZXNDb3VudDsKICAgICAgICB9CiAg
ICB9CiAgICBBU1NFUlQoZm91bmRQcm9wZXJ0aWVzQ291bnQgPT0gb2JqZWN0LT5zaXplKCkpOwp9
CgoKdm9pZCBUeXBlQnVpbGRlcjo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yOjphc3NlcnRD
b3JyZWN0VmFsdWUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKQp7CiAgICBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiBvYmplY3Q7CiAgICBib29sIGNhc3RSZXMgPSB2YWx1ZS0+YXNPYmplY3QoJm9iamVj
dCk7CiAgICBBU1NFUlRfVU5VU0VEKGNhc3RSZXMsIGNhc3RSZXMpOwogICAgewogICAgICAgIElu
c3BlY3Rvck9iamVjdDo6aXRlcmF0b3IgbmFtZVBvczsKICAgICAgICBuYW1lUG9zID0gb2JqZWN0
LT5maW5kKCJuYW1lIik7CiAgICAgICAgQVNTRVJUKG5hbWVQb3MgIT0gb2JqZWN0LT5lbmQoKSk7
CiAgICAgICAgUnVudGltZUNhc3RIZWxwZXI6OmFzc2VydFR5cGU8SW5zcGVjdG9yVmFsdWU6OlR5
cGVTdHJpbmc+KG5hbWVQb3MtPnNlY29uZC5nZXQoKSk7CiAgICB9CiAgICB7CiAgICAgICAgSW5z
cGVjdG9yT2JqZWN0OjppdGVyYXRvciBjb25maWd1cmFibGVQb3M7CiAgICAgICAgY29uZmlndXJh
YmxlUG9zID0gb2JqZWN0LT5maW5kKCJjb25maWd1cmFibGUiKTsKICAgICAgICBBU1NFUlQoY29u
ZmlndXJhYmxlUG9zICE9IG9iamVjdC0+ZW5kKCkpOwogICAgICAgIFJ1bnRpbWVDYXN0SGVscGVy
Ojphc3NlcnRUeXBlPEluc3BlY3RvclZhbHVlOjpUeXBlQm9vbGVhbj4oY29uZmlndXJhYmxlUG9z
LT5zZWNvbmQuZ2V0KCkpOwogICAgfQogICAgewogICAgICAgIEluc3BlY3Rvck9iamVjdDo6aXRl
cmF0b3IgZW51bWVyYWJsZVBvczsKICAgICAgICBlbnVtZXJhYmxlUG9zID0gb2JqZWN0LT5maW5k
KCJlbnVtZXJhYmxlIik7CiAgICAgICAgQVNTRVJUKGVudW1lcmFibGVQb3MgIT0gb2JqZWN0LT5l
bmQoKSk7CiAgICAgICAgUnVudGltZUNhc3RIZWxwZXI6OmFzc2VydFR5cGU8SW5zcGVjdG9yVmFs
dWU6OlR5cGVCb29sZWFuPihlbnVtZXJhYmxlUG9zLT5zZWNvbmQuZ2V0KCkpOwogICAgfQogICAg
aW50IGZvdW5kUHJvcGVydGllc0NvdW50ID0gMzsKICAgIHsKICAgICAgICBJbnNwZWN0b3JPYmpl
Y3Q6Oml0ZXJhdG9yIHZhbHVlUG9zOwogICAgICAgIHZhbHVlUG9zID0gb2JqZWN0LT5maW5kKCJ2
YWx1ZSIpOwogICAgICAgIGlmICh2YWx1ZVBvcyAhPSBvYmplY3QtPmVuZCgpKSB7CiAgICAgICAg
ICAgIFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q6OmFzc2VydENvcnJlY3RWYWx1
ZSh2YWx1ZVBvcy0+c2Vjb25kLmdldCgpKTsKICAgICAgICAgICAgKytmb3VuZFByb3BlcnRpZXND
b3VudDsKICAgICAgICB9CiAgICB9CiAgICB7CiAgICAgICAgSW5zcGVjdG9yT2JqZWN0OjppdGVy
YXRvciB3cml0YWJsZVBvczsKICAgICAgICB3cml0YWJsZVBvcyA9IG9iamVjdC0+ZmluZCgid3Jp
dGFibGUiKTsKICAgICAgICBpZiAod3JpdGFibGVQb3MgIT0gb2JqZWN0LT5lbmQoKSkgewogICAg
ICAgICAgICBSdW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0VHlwZTxJbnNwZWN0b3JWYWx1ZTo6VHlw
ZUJvb2xlYW4+KHdyaXRhYmxlUG9zLT5zZWNvbmQuZ2V0KCkpOwogICAgICAgICAgICArK2ZvdW5k
UHJvcGVydGllc0NvdW50OwogICAgICAgIH0KICAgIH0KICAgIHsKICAgICAgICBJbnNwZWN0b3JP
YmplY3Q6Oml0ZXJhdG9yIGdldFBvczsKICAgICAgICBnZXRQb3MgPSBvYmplY3QtPmZpbmQoImdl
dCIpOwogICAgICAgIGlmIChnZXRQb3MgIT0gb2JqZWN0LT5lbmQoKSkgewogICAgICAgICAgICBU
eXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0Ojphc3NlcnRDb3JyZWN0VmFsdWUoZ2V0
UG9zLT5zZWNvbmQuZ2V0KCkpOwogICAgICAgICAgICArK2ZvdW5kUHJvcGVydGllc0NvdW50Owog
ICAgICAgIH0KICAgIH0KICAgIHsKICAgICAgICBJbnNwZWN0b3JPYmplY3Q6Oml0ZXJhdG9yIHNl
dFBvczsKICAgICAgICBzZXRQb3MgPSBvYmplY3QtPmZpbmQoInNldCIpOwogICAgICAgIGlmIChz
ZXRQb3MgIT0gb2JqZWN0LT5lbmQoKSkgewogICAgICAgICAgICBUeXBlQnVpbGRlcjo6UnVudGlt
ZTo6UmVtb3RlT2JqZWN0Ojphc3NlcnRDb3JyZWN0VmFsdWUoc2V0UG9zLT5zZWNvbmQuZ2V0KCkp
OwogICAgICAgICAgICArK2ZvdW5kUHJvcGVydGllc0NvdW50OwogICAgICAgIH0KICAgIH0KICAg
IHsKICAgICAgICBJbnNwZWN0b3JPYmplY3Q6Oml0ZXJhdG9yIHdhc1Rocm93blBvczsKICAgICAg
ICB3YXNUaHJvd25Qb3MgPSBvYmplY3QtPmZpbmQoIndhc1Rocm93biIpOwogICAgICAgIGlmICh3
YXNUaHJvd25Qb3MgIT0gb2JqZWN0LT5lbmQoKSkgewogICAgICAgICAgICBSdW50aW1lQ2FzdEhl
bHBlcjo6YXNzZXJ0VHlwZTxJbnNwZWN0b3JWYWx1ZTo6VHlwZUJvb2xlYW4+KHdhc1Rocm93blBv
cy0+c2Vjb25kLmdldCgpKTsKICAgICAgICAgICAgKytmb3VuZFByb3BlcnRpZXNDb3VudDsKICAg
ICAgICB9CiAgICB9CiAgICBBU1NFUlQoZm91bmRQcm9wZXJ0aWVzQ291bnQgPT0gb2JqZWN0LT5z
aXplKCkpOwp9CgoKdm9pZCBUeXBlQnVpbGRlcjo6VGltZWxpbmU6OlRpbWVsaW5lRXZlbnQ6OmFz
c2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpCnsKICAgIFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+IG9iamVjdDsKICAgIGJvb2wgY2FzdFJlcyA9IHZhbHVlLT5hc09iamVjdCgm
b2JqZWN0KTsKICAgIEFTU0VSVF9VTlVTRUQoY2FzdFJlcywgY2FzdFJlcyk7CiAgICB7CiAgICAg
ICAgSW5zcGVjdG9yT2JqZWN0OjppdGVyYXRvciB0eXBlUG9zOwogICAgICAgIHR5cGVQb3MgPSBv
YmplY3QtPmZpbmQoInR5cGUiKTsKICAgICAgICBBU1NFUlQodHlwZVBvcyAhPSBvYmplY3QtPmVu
ZCgpKTsKICAgICAgICBSdW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0VHlwZTxJbnNwZWN0b3JWYWx1
ZTo6VHlwZVN0cmluZz4odHlwZVBvcy0+c2Vjb25kLmdldCgpKTsKICAgIH0KICAgIHsKICAgICAg
ICBJbnNwZWN0b3JPYmplY3Q6Oml0ZXJhdG9yIGRhdGFQb3M7CiAgICAgICAgZGF0YVBvcyA9IG9i
amVjdC0+ZmluZCgiZGF0YSIpOwogICAgICAgIEFTU0VSVChkYXRhUG9zICE9IG9iamVjdC0+ZW5k
KCkpOwogICAgICAgIFJ1bnRpbWVDYXN0SGVscGVyOjphc3NlcnRUeXBlPEluc3BlY3RvclZhbHVl
OjpUeXBlT2JqZWN0PihkYXRhUG9zLT5zZWNvbmQuZ2V0KCkpOwogICAgfQogICAgewogICAgICAg
IEluc3BlY3Rvck9iamVjdDo6aXRlcmF0b3IgY2hpbGRyZW5Qb3M7CiAgICAgICAgY2hpbGRyZW5Q
b3MgPSBvYmplY3QtPmZpbmQoImNoaWxkcmVuIik7CiAgICAgICAgaWYgKGNoaWxkcmVuUG9zICE9
IG9iamVjdC0+ZW5kKCkpIHsKICAgICAgICAgICAgVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWls
ZGVyOjpUaW1lbGluZTo6VGltZWxpbmVFdmVudD46OmFzc2VydENvcnJlY3RWYWx1ZShjaGlsZHJl
blBvcy0+c2Vjb25kLmdldCgpKTsKICAgICAgICB9CiAgICB9Cn0KCgp2b2lkIFR5cGVCdWlsZGVy
OjpEZWJ1Z2dlcjo6TG9jYXRpb246OmFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3JWYWx1ZSog
dmFsdWUpCnsKICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG9iamVjdDsKICAgIGJvb2wgY2Fz
dFJlcyA9IHZhbHVlLT5hc09iamVjdCgmb2JqZWN0KTsKICAgIEFTU0VSVF9VTlVTRUQoY2FzdFJl
cywgY2FzdFJlcyk7CiAgICB7CiAgICAgICAgSW5zcGVjdG9yT2JqZWN0OjppdGVyYXRvciBzY3Jp
cHRJZFBvczsKICAgICAgICBzY3JpcHRJZFBvcyA9IG9iamVjdC0+ZmluZCgic2NyaXB0SWQiKTsK
ICAgICAgICBBU1NFUlQoc2NyaXB0SWRQb3MgIT0gb2JqZWN0LT5lbmQoKSk7CiAgICAgICAgUnVu
dGltZUNhc3RIZWxwZXI6OmFzc2VydFR5cGU8SW5zcGVjdG9yVmFsdWU6OlR5cGVTdHJpbmc+KHNj
cmlwdElkUG9zLT5zZWNvbmQuZ2V0KCkpOwogICAgfQogICAgewogICAgICAgIEluc3BlY3Rvck9i
amVjdDo6aXRlcmF0b3IgbGluZU51bWJlclBvczsKICAgICAgICBsaW5lTnVtYmVyUG9zID0gb2Jq
ZWN0LT5maW5kKCJsaW5lTnVtYmVyIik7CiAgICAgICAgQVNTRVJUKGxpbmVOdW1iZXJQb3MgIT0g
b2JqZWN0LT5lbmQoKSk7CiAgICAgICAgUnVudGltZUNhc3RIZWxwZXI6OmFzc2VydEludChsaW5l
TnVtYmVyUG9zLT5zZWNvbmQuZ2V0KCkpOwogICAgfQogICAgaW50IGZvdW5kUHJvcGVydGllc0Nv
dW50ID0gMjsKICAgIHsKICAgICAgICBJbnNwZWN0b3JPYmplY3Q6Oml0ZXJhdG9yIGNvbHVtbk51
bWJlclBvczsKICAgICAgICBjb2x1bW5OdW1iZXJQb3MgPSBvYmplY3QtPmZpbmQoImNvbHVtbk51
bWJlciIpOwogICAgICAgIGlmIChjb2x1bW5OdW1iZXJQb3MgIT0gb2JqZWN0LT5lbmQoKSkgewog
ICAgICAgICAgICBSdW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0SW50KGNvbHVtbk51bWJlclBvcy0+
c2Vjb25kLmdldCgpKTsKICAgICAgICAgICAgKytmb3VuZFByb3BlcnRpZXNDb3VudDsKICAgICAg
ICB9CiAgICB9CiAgICBBU1NFUlQoZm91bmRQcm9wZXJ0aWVzQ291bnQgPT0gb2JqZWN0LT5zaXpl
KCkpOwp9CgoKdm9pZCBUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlsczo6YXNz
ZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3RvclZhbHVlKiB2YWx1ZSkKewogICAgUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gb2JqZWN0OwogICAgYm9vbCBjYXN0UmVzID0gdmFsdWUtPmFzT2JqZWN0KCZv
YmplY3QpOwogICAgQVNTRVJUX1VOVVNFRChjYXN0UmVzLCBjYXN0UmVzKTsKICAgIHsKICAgICAg
ICBJbnNwZWN0b3JPYmplY3Q6Oml0ZXJhdG9yIGxvY2F0aW9uUG9zOwogICAgICAgIGxvY2F0aW9u
UG9zID0gb2JqZWN0LT5maW5kKCJsb2NhdGlvbiIpOwogICAgICAgIEFTU0VSVChsb2NhdGlvblBv
cyAhPSBvYmplY3QtPmVuZCgpKTsKICAgICAgICBUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0
aW9uOjphc3NlcnRDb3JyZWN0VmFsdWUobG9jYXRpb25Qb3MtPnNlY29uZC5nZXQoKSk7CiAgICB9
CiAgICBpbnQgZm91bmRQcm9wZXJ0aWVzQ291bnQgPSAxOwogICAgewogICAgICAgIEluc3BlY3Rv
ck9iamVjdDo6aXRlcmF0b3IgbmFtZVBvczsKICAgICAgICBuYW1lUG9zID0gb2JqZWN0LT5maW5k
KCJuYW1lIik7CiAgICAgICAgaWYgKG5hbWVQb3MgIT0gb2JqZWN0LT5lbmQoKSkgewogICAgICAg
ICAgICBSdW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0VHlwZTxJbnNwZWN0b3JWYWx1ZTo6VHlwZVN0
cmluZz4obmFtZVBvcy0+c2Vjb25kLmdldCgpKTsKICAgICAgICAgICAgKytmb3VuZFByb3BlcnRp
ZXNDb3VudDsKICAgICAgICB9CiAgICB9CiAgICB7CiAgICAgICAgSW5zcGVjdG9yT2JqZWN0Ojpp
dGVyYXRvciBkaXNwbGF5TmFtZVBvczsKICAgICAgICBkaXNwbGF5TmFtZVBvcyA9IG9iamVjdC0+
ZmluZCgiZGlzcGxheU5hbWUiKTsKICAgICAgICBpZiAoZGlzcGxheU5hbWVQb3MgIT0gb2JqZWN0
LT5lbmQoKSkgewogICAgICAgICAgICBSdW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0VHlwZTxJbnNw
ZWN0b3JWYWx1ZTo6VHlwZVN0cmluZz4oZGlzcGxheU5hbWVQb3MtPnNlY29uZC5nZXQoKSk7CiAg
ICAgICAgICAgICsrZm91bmRQcm9wZXJ0aWVzQ291bnQ7CiAgICAgICAgfQogICAgfQogICAgewog
ICAgICAgIEluc3BlY3Rvck9iamVjdDo6aXRlcmF0b3IgaW5mZXJyZWROYW1lUG9zOwogICAgICAg
IGluZmVycmVkTmFtZVBvcyA9IG9iamVjdC0+ZmluZCgiaW5mZXJyZWROYW1lIik7CiAgICAgICAg
aWYgKGluZmVycmVkTmFtZVBvcyAhPSBvYmplY3QtPmVuZCgpKSB7CiAgICAgICAgICAgIFJ1bnRp
bWVDYXN0SGVscGVyOjphc3NlcnRUeXBlPEluc3BlY3RvclZhbHVlOjpUeXBlU3RyaW5nPihpbmZl
cnJlZE5hbWVQb3MtPnNlY29uZC5nZXQoKSk7CiAgICAgICAgICAgICsrZm91bmRQcm9wZXJ0aWVz
Q291bnQ7CiAgICAgICAgfQogICAgfQogICAgewogICAgICAgIEluc3BlY3Rvck9iamVjdDo6aXRl
cmF0b3Igc2NvcGVDaGFpblBvczsKICAgICAgICBzY29wZUNoYWluUG9zID0gb2JqZWN0LT5maW5k
KCJzY29wZUNoYWluIik7CiAgICAgICAgaWYgKHNjb3BlQ2hhaW5Qb3MgIT0gb2JqZWN0LT5lbmQo
KSkgewogICAgICAgICAgICBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRlYnVnZ2Vy
OjpTY29wZT46OmFzc2VydENvcnJlY3RWYWx1ZShzY29wZUNoYWluUG9zLT5zZWNvbmQuZ2V0KCkp
OwogICAgICAgICAgICArK2ZvdW5kUHJvcGVydGllc0NvdW50OwogICAgICAgIH0KICAgIH0KICAg
IEFTU0VSVChmb3VuZFByb3BlcnRpZXNDb3VudCA9PSBvYmplY3QtPnNpemUoKSk7Cn0KCgp2b2lk
IFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lOjphc3NlcnRDb3JyZWN0VmFsdWUoSW5z
cGVjdG9yVmFsdWUqIHZhbHVlKQp7CiAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3Q7
CiAgICBib29sIGNhc3RSZXMgPSB2YWx1ZS0+YXNPYmplY3QoJm9iamVjdCk7CiAgICBBU1NFUlRf
VU5VU0VEKGNhc3RSZXMsIGNhc3RSZXMpOwogICAgewogICAgICAgIEluc3BlY3Rvck9iamVjdDo6
aXRlcmF0b3IgY2FsbEZyYW1lSWRQb3M7CiAgICAgICAgY2FsbEZyYW1lSWRQb3MgPSBvYmplY3Qt
PmZpbmQoImNhbGxGcmFtZUlkIik7CiAgICAgICAgQVNTRVJUKGNhbGxGcmFtZUlkUG9zICE9IG9i
amVjdC0+ZW5kKCkpOwogICAgICAgIFJ1bnRpbWVDYXN0SGVscGVyOjphc3NlcnRUeXBlPEluc3Bl
Y3RvclZhbHVlOjpUeXBlU3RyaW5nPihjYWxsRnJhbWVJZFBvcy0+c2Vjb25kLmdldCgpKTsKICAg
IH0KICAgIHsKICAgICAgICBJbnNwZWN0b3JPYmplY3Q6Oml0ZXJhdG9yIGZ1bmN0aW9uTmFtZVBv
czsKICAgICAgICBmdW5jdGlvbk5hbWVQb3MgPSBvYmplY3QtPmZpbmQoImZ1bmN0aW9uTmFtZSIp
OwogICAgICAgIEFTU0VSVChmdW5jdGlvbk5hbWVQb3MgIT0gb2JqZWN0LT5lbmQoKSk7CiAgICAg
ICAgUnVudGltZUNhc3RIZWxwZXI6OmFzc2VydFR5cGU8SW5zcGVjdG9yVmFsdWU6OlR5cGVTdHJp
bmc+KGZ1bmN0aW9uTmFtZVBvcy0+c2Vjb25kLmdldCgpKTsKICAgIH0KICAgIHsKICAgICAgICBJ
bnNwZWN0b3JPYmplY3Q6Oml0ZXJhdG9yIGxvY2F0aW9uUG9zOwogICAgICAgIGxvY2F0aW9uUG9z
ID0gb2JqZWN0LT5maW5kKCJsb2NhdGlvbiIpOwogICAgICAgIEFTU0VSVChsb2NhdGlvblBvcyAh
PSBvYmplY3QtPmVuZCgpKTsKICAgICAgICBUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9u
Ojphc3NlcnRDb3JyZWN0VmFsdWUobG9jYXRpb25Qb3MtPnNlY29uZC5nZXQoKSk7CiAgICB9CiAg
ICB7CiAgICAgICAgSW5zcGVjdG9yT2JqZWN0OjppdGVyYXRvciBzY29wZUNoYWluUG9zOwogICAg
ICAgIHNjb3BlQ2hhaW5Qb3MgPSBvYmplY3QtPmZpbmQoInNjb3BlQ2hhaW4iKTsKICAgICAgICBB
U1NFUlQoc2NvcGVDaGFpblBvcyAhPSBvYmplY3QtPmVuZCgpKTsKICAgICAgICBUeXBlQnVpbGRl
cjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpTY29wZT46OmFzc2VydENvcnJlY3RWYWx1
ZShzY29wZUNoYWluUG9zLT5zZWNvbmQuZ2V0KCkpOwogICAgfQogICAgewogICAgICAgIEluc3Bl
Y3Rvck9iamVjdDo6aXRlcmF0b3IgdGhpc1BvczsKICAgICAgICB0aGlzUG9zID0gb2JqZWN0LT5m
aW5kKCJ0aGlzIik7CiAgICAgICAgQVNTRVJUKHRoaXNQb3MgIT0gb2JqZWN0LT5lbmQoKSk7CiAg
ICAgICAgVHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdDo6YXNzZXJ0Q29ycmVjdFZh
bHVlKHRoaXNQb3MtPnNlY29uZC5nZXQoKSk7CiAgICB9CiAgICBpbnQgZm91bmRQcm9wZXJ0aWVz
Q291bnQgPSA1OwogICAgQVNTRVJUKGZvdW5kUHJvcGVydGllc0NvdW50ID09IG9iamVjdC0+c2l6
ZSgpKTsKfQoKCnZvaWQgVHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpTY29wZTo6VHlwZTo6YXNzZXJ0
Q29ycmVjdFZhbHVlKEluc3BlY3RvclZhbHVlKiB2YWx1ZSkKewogICAgV1RGOjpTdHJpbmcgczsK
ICAgIGJvb2wgY2FzdF9yZXMgPSB2YWx1ZS0+YXNTdHJpbmcoJnMpOwogICAgQVNTRVJUKGNhc3Rf
cmVzKTsKICAgIEFTU0VSVChzID09ICJnbG9iYWwiIHx8IHMgPT0gImxvY2FsIiB8fCBzID09ICJ3
aXRoIiB8fCBzID09ICJjbG9zdXJlIiB8fCBzID09ICJjYXRjaCIpOwp9CgoKdm9pZCBUeXBlQnVp
bGRlcjo6RGVidWdnZXI6OlNjb3BlOjphc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9yVmFsdWUq
IHZhbHVlKQp7CiAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3Q7CiAgICBib29sIGNh
c3RSZXMgPSB2YWx1ZS0+YXNPYmplY3QoJm9iamVjdCk7CiAgICBBU1NFUlRfVU5VU0VEKGNhc3RS
ZXMsIGNhc3RSZXMpOwogICAgewogICAgICAgIEluc3BlY3Rvck9iamVjdDo6aXRlcmF0b3IgdHlw
ZVBvczsKICAgICAgICB0eXBlUG9zID0gb2JqZWN0LT5maW5kKCJ0eXBlIik7CiAgICAgICAgQVNT
RVJUKHR5cGVQb3MgIT0gb2JqZWN0LT5lbmQoKSk7CiAgICAgICAgVHlwZTo6YXNzZXJ0Q29ycmVj
dFZhbHVlKHR5cGVQb3MtPnNlY29uZC5nZXQoKSk7CiAgICB9CiAgICB7CiAgICAgICAgSW5zcGVj
dG9yT2JqZWN0OjppdGVyYXRvciBvYmplY3RQb3M7CiAgICAgICAgb2JqZWN0UG9zID0gb2JqZWN0
LT5maW5kKCJvYmplY3QiKTsKICAgICAgICBBU1NFUlQob2JqZWN0UG9zICE9IG9iamVjdC0+ZW5k
KCkpOwogICAgICAgIFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q6OmFzc2VydENv
cnJlY3RWYWx1ZShvYmplY3RQb3MtPnNlY29uZC5nZXQoKSk7CiAgICB9CiAgICBpbnQgZm91bmRQ
cm9wZXJ0aWVzQ291bnQgPSAyOwogICAgQVNTRVJUKGZvdW5kUHJvcGVydGllc0NvdW50ID09IG9i
amVjdC0+c2l6ZSgpKTsKfQoKCnZvaWQgVHlwZUJ1aWxkZXI6OldlYkdMOjpDYWxsOjphc3NlcnRD
b3JyZWN0VmFsdWUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKQp7CiAgICBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiBvYmplY3Q7CiAgICBib29sIGNhc3RSZXMgPSB2YWx1ZS0+YXNPYmplY3QoJm9iamVj
dCk7CiAgICBBU1NFUlRfVU5VU0VEKGNhc3RSZXMsIGNhc3RSZXMpOwogICAgewogICAgICAgIElu
c3BlY3Rvck9iamVjdDo6aXRlcmF0b3IgZnVuY3Rpb25OYW1lUG9zOwogICAgICAgIGZ1bmN0aW9u
TmFtZVBvcyA9IG9iamVjdC0+ZmluZCgiZnVuY3Rpb25OYW1lIik7CiAgICAgICAgQVNTRVJUKGZ1
bmN0aW9uTmFtZVBvcyAhPSBvYmplY3QtPmVuZCgpKTsKICAgICAgICBSdW50aW1lQ2FzdEhlbHBl
cjo6YXNzZXJ0VHlwZTxJbnNwZWN0b3JWYWx1ZTo6VHlwZVN0cmluZz4oZnVuY3Rpb25OYW1lUG9z
LT5zZWNvbmQuZ2V0KCkpOwogICAgfQogICAgaW50IGZvdW5kUHJvcGVydGllc0NvdW50ID0gMTsK
ICAgIEFTU0VSVChmb3VuZFByb3BlcnRpZXNDb3VudCA9PSBvYmplY3QtPnNpemUoKSk7Cn0KCgp2
b2lkIFR5cGVCdWlsZGVyOjpXZWJHTDo6VHJhY2VMb2c6OmFzc2VydENvcnJlY3RWYWx1ZShJbnNw
ZWN0b3JWYWx1ZSogdmFsdWUpCnsKICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG9iamVjdDsK
ICAgIGJvb2wgY2FzdFJlcyA9IHZhbHVlLT5hc09iamVjdCgmb2JqZWN0KTsKICAgIEFTU0VSVF9V
TlVTRUQoY2FzdFJlcywgY2FzdFJlcyk7CiAgICB7CiAgICAgICAgSW5zcGVjdG9yT2JqZWN0Ojpp
dGVyYXRvciBpZFBvczsKICAgICAgICBpZFBvcyA9IG9iamVjdC0+ZmluZCgiaWQiKTsKICAgICAg
ICBBU1NFUlQoaWRQb3MgIT0gb2JqZWN0LT5lbmQoKSk7CiAgICAgICAgUnVudGltZUNhc3RIZWxw
ZXI6OmFzc2VydFR5cGU8SW5zcGVjdG9yVmFsdWU6OlR5cGVTdHJpbmc+KGlkUG9zLT5zZWNvbmQu
Z2V0KCkpOwogICAgfQogICAgewogICAgICAgIEluc3BlY3Rvck9iamVjdDo6aXRlcmF0b3IgY2Fs
bHNQb3M7CiAgICAgICAgY2FsbHNQb3MgPSBvYmplY3QtPmZpbmQoImNhbGxzIik7CiAgICAgICAg
QVNTRVJUKGNhbGxzUG9zICE9IG9iamVjdC0+ZW5kKCkpOwogICAgICAgIFR5cGVCdWlsZGVyOjpB
cnJheTxUeXBlQnVpbGRlcjo6V2ViR0w6OkNhbGw+Ojphc3NlcnRDb3JyZWN0VmFsdWUoY2FsbHNQ
b3MtPnNlY29uZC5nZXQoKSk7CiAgICB9CiAgICBpbnQgZm91bmRQcm9wZXJ0aWVzQ291bnQgPSAy
OwogICAgQVNTRVJUKGZvdW5kUHJvcGVydGllc0NvdW50ID09IG9iamVjdC0+c2l6ZSgpKTsKfQoK
CgoKI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKCn0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKCiNl
bmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>159535</attachid>
            <date>2012-08-20 15:25:31 -0700</date>
            <delta_ts>2012-08-20 15:25:31 -0700</delta_ts>
            <desc>Generated InspectorTypeBuilder.cpp after the patch.</desc>
            <filename>InspectorTypeBuilder.cpp</filename>
            <type>text/x-c++src</type>
            <size>19669</size>
            <attacher name="Thiago Marcos P. Santos">tmpsantos</attacher>
            
              <data encoding="base64">Ly8gRmlsZSBpcyBnZW5lcmF0ZWQgYnkgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5l
cmF0b3JJbnNwZWN0b3IucHkKCi8vIENvcHlyaWdodCAoYykgMjAxMSBUaGUgQ2hyb21pdW0gQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQovLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgoKCiNpbmNsdWRlICJjb25maWcuaCIKI2lmIEVOQUJMRShJTlNQRUNU
T1IpCgojaW5jbHVkZSAiSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCIKCm5hbWVzcGFjZSBXZWJDb3Jl
IHsKCm5hbWVzcGFjZSBUeXBlQnVpbGRlciB7Cgpjb25zdCBjaGFyKiBjb25zdCBlbnVtX2NvbnN0
YW50X3ZhbHVlc1tdID0gewogICAgIkRvY3VtZW50IiwKICAgICJTdHlsZXNoZWV0IiwKICAgICJJ
bWFnZSIsCiAgICAiRm9udCIsCiAgICAiU2NyaXB0IiwKICAgICJYSFIiLAogICAgIldlYlNvY2tl
dCIsCiAgICAiT3RoZXIiLAogICAgIm9iamVjdCIsCiAgICAiZnVuY3Rpb24iLAogICAgInVuZGVm
aW5lZCIsCiAgICAic3RyaW5nIiwKICAgICJudW1iZXIiLAogICAgImJvb2xlYW4iLAogICAgImFy
cmF5IiwKICAgICJudWxsIiwKICAgICJub2RlIiwKICAgICJyZWdleHAiLAogICAgImRhdGUiLAog
ICAgImh0bWwiLAogICAgIndtbCIsCiAgICAieG1sIiwKICAgICJqYXZhc2NyaXB0IiwKICAgICJu
ZXR3b3JrIiwKICAgICJjb25zb2xlLWFwaSIsCiAgICAib3RoZXIiLAogICAgInRpcCIsCiAgICAi
bG9nIiwKICAgICJ3YXJuaW5nIiwKICAgICJlcnJvciIsCiAgICAiZGVidWciLAogICAgImRpciIs
CiAgICAiZGlyeG1sIiwKICAgICJ0cmFjZSIsCiAgICAic3RhcnRHcm91cCIsCiAgICAic3RhcnRH
cm91cENvbGxhcHNlZCIsCiAgICAiZW5kR3JvdXAiLAogICAgImFzc2VydCIsCiAgICAicGFyc2Vy
IiwKICAgICJzY3JpcHQiLAogICAgInVzZXIiLAogICAgInVzZXItYWdlbnQiLAogICAgImluc3Bl
Y3RvciIsCiAgICAicmVndWxhciIsCiAgICAiYWN0aXZlIiwKICAgICJpbmFjdGl2ZSIsCiAgICAi
ZGlzYWJsZWQiLAogICAgInN0eWxlIiwKICAgICJtZWRpYVJ1bGUiLAogICAgImltcG9ydFJ1bGUi
LAogICAgImxpbmtlZFNoZWV0IiwKICAgICJpbmxpbmVTaGVldCIsCiAgICAib3ZlcnNldCIsCiAg
ICAiZml0IiwKICAgICJlbXB0eSIsCiAgICAiZ2xvYmFsIiwKICAgICJsb2NhbCIsCiAgICAid2l0
aCIsCiAgICAiY2xvc3VyZSIsCiAgICAiY2F0Y2giLAogICAgInN1YnRyZWUtbW9kaWZpZWQiLAog
ICAgImF0dHJpYnV0ZS1tb2RpZmllZCIsCiAgICAibm9kZS1yZW1vdmVkIiwKICAgICJDUFUiLAog
ICAgIkNTUyIsCiAgICAiSEVBUCIsCiAgICAiYWxsb3dlZCIsCiAgICAiZm9yYmlkZGVuIiwKICAg
ICJET00iLAogICAgIkV2ZW50TGlzdGVuZXIiLAogICAgImV4Y2VwdGlvbiIKfTsKClN0cmluZyBn
ZXRFbnVtQ29uc3RhbnRWYWx1ZShpbnQgY29kZSkgewogICAgcmV0dXJuIGVudW1fY29uc3RhbnRf
dmFsdWVzW2NvZGVdOwp9Cgp9IC8vIG5hbWVzcGFjZSBUeXBlQnVpbGRlcgoKY29uc3QgY2hhciog
VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OlJlc3BvbnNlOjpVcmwgPSAidXJsIjsKY29uc3QgY2hhciog
VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OlJlc3BvbnNlOjpTdGF0dXMgPSAic3RhdHVzIjsKY29uc3Qg
Y2hhciogVHlwZUJ1aWxkZXI6Ok5ldHdvcms6OlJlc3BvbnNlOjpTdGF0dXNUZXh0ID0gInN0YXR1
c1RleHQiOwpjb25zdCBjaGFyKiBUeXBlQnVpbGRlcjo6TmV0d29yazo6UmVzcG9uc2U6OkhlYWRl
cnMgPSAiaGVhZGVycyI7CmNvbnN0IGNoYXIqIFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXNwb25z
ZTo6TWltZVR5cGUgPSAibWltZVR5cGUiOwpjb25zdCBjaGFyKiBUeXBlQnVpbGRlcjo6TmV0d29y
azo6UmVzcG9uc2U6OkNvbm5lY3Rpb25SZXVzZWQgPSAiY29ubmVjdGlvblJldXNlZCI7CmNvbnN0
IGNoYXIqIFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXNwb25zZTo6Q29ubmVjdGlvbklkID0gImNv
bm5lY3Rpb25JZCI7CmNvbnN0IGNoYXIqIFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXNwb25zZTo6
SGVhZGVyc1RleHQgPSAiaGVhZGVyc1RleHQiOwpjb25zdCBjaGFyKiBUeXBlQnVpbGRlcjo6TmV0
d29yazo6UmVzcG9uc2U6OlJlcXVlc3RIZWFkZXJzID0gInJlcXVlc3RIZWFkZXJzIjsKY29uc3Qg
Y2hhciogVHlwZUJ1aWxkZXI6Ok5ldHdvcms6OlJlc3BvbnNlOjpSZXF1ZXN0SGVhZGVyc1RleHQg
PSAicmVxdWVzdEhlYWRlcnNUZXh0IjsKY29uc3QgY2hhciogVHlwZUJ1aWxkZXI6Ok5ldHdvcms6
OlJlc3BvbnNlOjpGcm9tRGlza0NhY2hlID0gImZyb21EaXNrQ2FjaGUiOwpjb25zdCBjaGFyKiBU
eXBlQnVpbGRlcjo6TmV0d29yazo6UmVzcG9uc2U6OlRpbWluZyA9ICJ0aW1pbmciOwpjb25zdCBj
aGFyKiBUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eTo6TmFtZSA9ICJuYW1lIjsKY29uc3Qg
Y2hhciogVHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk6OlZhbHVlID0gInZhbHVlIjsKY29u
c3QgY2hhciogVHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk6OlByaW9yaXR5ID0gInByaW9y
aXR5IjsKY29uc3QgY2hhciogVHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk6OkltcGxpY2l0
ID0gImltcGxpY2l0IjsKY29uc3QgY2hhciogVHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk6
OlRleHQgPSAidGV4dCI7CmNvbnN0IGNoYXIqIFR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5
OjpQYXJzZWRPayA9ICJwYXJzZWRPayI7CmNvbnN0IGNoYXIqIFR5cGVCdWlsZGVyOjpDU1M6OkNT
U1Byb3BlcnR5OjpTdGF0dXMgPSAic3RhdHVzIjsKY29uc3QgY2hhciogVHlwZUJ1aWxkZXI6OkNT
Uzo6Q1NTUHJvcGVydHk6OlJhbmdlID0gInJhbmdlIjsKY29uc3QgY2hhciogVHlwZUJ1aWxkZXI6
OlRpbWVsaW5lOjpUaW1lbGluZUV2ZW50OjpUeXBlID0gInR5cGUiOwpjb25zdCBjaGFyKiBUeXBl
QnVpbGRlcjo6VGltZWxpbmU6OlRpbWVsaW5lRXZlbnQ6OkRhdGEgPSAiZGF0YSI7CmNvbnN0IGNo
YXIqIFR5cGVCdWlsZGVyOjpUaW1lbGluZTo6VGltZWxpbmVFdmVudDo6Q2hpbGRyZW4gPSAiY2hp
bGRyZW4iOwoKCiNpZiAhQVNTRVJUX0RJU0FCTEVECgp2b2lkIFR5cGVCdWlsZGVyOjpSdW50aW1l
Q2FzdEhlbHBlcjo6YXNzZXJ0QW55KEluc3BlY3RvclZhbHVlKikKewogICAgLy8gTm8tb3AuCn0K
Cgp2b2lkIFR5cGVCdWlsZGVyOjpSdW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0SW50KEluc3BlY3Rv
clZhbHVlKiB2YWx1ZSkKewogICAgZG91YmxlIHY7CiAgICBib29sIGNhc3RSZXMgPSB2YWx1ZS0+
YXNOdW1iZXIoJnYpOwogICAgQVNTRVJUX1VOVVNFRChjYXN0UmVzLCBjYXN0UmVzKTsKICAgIEFT
U0VSVChzdGF0aWNfY2FzdDxkb3VibGU+KHN0YXRpY19jYXN0PGludD4odikpID09IHYpOwp9Cgp2
b2lkIFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q6OlR5cGU6OmFzc2VydENvcnJl
Y3RWYWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpCnsKICAgIFdURjo6U3RyaW5nIHM7CiAgICBi
b29sIGNhc3RfcmVzID0gdmFsdWUtPmFzU3RyaW5nKCZzKTsKICAgIEFTU0VSVChjYXN0X3Jlcyk7
CiAgICBBU1NFUlQocyA9PSAib2JqZWN0IiB8fCBzID09ICJmdW5jdGlvbiIgfHwgcyA9PSAidW5k
ZWZpbmVkIiB8fCBzID09ICJzdHJpbmciIHx8IHMgPT0gIm51bWJlciIgfHwgcyA9PSAiYm9vbGVh
biIpOwp9CgoKdm9pZCBUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0OjpTdWJ0eXBl
Ojphc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKQp7CiAgICBXVEY6OlN0
cmluZyBzOwogICAgYm9vbCBjYXN0X3JlcyA9IHZhbHVlLT5hc1N0cmluZygmcyk7CiAgICBBU1NF
UlQoY2FzdF9yZXMpOwogICAgQVNTRVJUKHMgPT0gImFycmF5IiB8fCBzID09ICJudWxsIiB8fCBz
ID09ICJub2RlIiB8fCBzID09ICJyZWdleHAiIHx8IHMgPT0gImRhdGUiKTsKfQoKCnZvaWQgVHlw
ZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdDo6YXNzZXJ0Q29ycmVjdFZhbHVlKEluc3Bl
Y3RvclZhbHVlKiB2YWx1ZSkKewogICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gb2JqZWN0Owog
ICAgYm9vbCBjYXN0UmVzID0gdmFsdWUtPmFzT2JqZWN0KCZvYmplY3QpOwogICAgQVNTRVJUX1VO
VVNFRChjYXN0UmVzLCBjYXN0UmVzKTsKICAgIHsKICAgICAgICBJbnNwZWN0b3JPYmplY3Q6Oml0
ZXJhdG9yIHR5cGVQb3M7CiAgICAgICAgdHlwZVBvcyA9IG9iamVjdC0+ZmluZCgidHlwZSIpOwog
ICAgICAgIEFTU0VSVCh0eXBlUG9zICE9IG9iamVjdC0+ZW5kKCkpOwogICAgICAgIFR5cGU6OmFz
c2VydENvcnJlY3RWYWx1ZSh0eXBlUG9zLT5zZWNvbmQuZ2V0KCkpOwogICAgfQogICAgaW50IGZv
dW5kUHJvcGVydGllc0NvdW50ID0gMTsKICAgIHsKICAgICAgICBJbnNwZWN0b3JPYmplY3Q6Oml0
ZXJhdG9yIHN1YnR5cGVQb3M7CiAgICAgICAgc3VidHlwZVBvcyA9IG9iamVjdC0+ZmluZCgic3Vi
dHlwZSIpOwogICAgICAgIGlmIChzdWJ0eXBlUG9zICE9IG9iamVjdC0+ZW5kKCkpIHsKICAgICAg
ICAgICAgU3VidHlwZTo6YXNzZXJ0Q29ycmVjdFZhbHVlKHN1YnR5cGVQb3MtPnNlY29uZC5nZXQo
KSk7CiAgICAgICAgICAgICsrZm91bmRQcm9wZXJ0aWVzQ291bnQ7CiAgICAgICAgfQogICAgfQog
ICAgewogICAgICAgIEluc3BlY3Rvck9iamVjdDo6aXRlcmF0b3IgY2xhc3NOYW1lUG9zOwogICAg
ICAgIGNsYXNzTmFtZVBvcyA9IG9iamVjdC0+ZmluZCgiY2xhc3NOYW1lIik7CiAgICAgICAgaWYg
KGNsYXNzTmFtZVBvcyAhPSBvYmplY3QtPmVuZCgpKSB7CiAgICAgICAgICAgIFJ1bnRpbWVDYXN0
SGVscGVyOjphc3NlcnRUeXBlPEluc3BlY3RvclZhbHVlOjpUeXBlU3RyaW5nPihjbGFzc05hbWVQ
b3MtPnNlY29uZC5nZXQoKSk7CiAgICAgICAgICAgICsrZm91bmRQcm9wZXJ0aWVzQ291bnQ7CiAg
ICAgICAgfQogICAgfQogICAgewogICAgICAgIEluc3BlY3Rvck9iamVjdDo6aXRlcmF0b3IgdmFs
dWVQb3M7CiAgICAgICAgdmFsdWVQb3MgPSBvYmplY3QtPmZpbmQoInZhbHVlIik7CiAgICAgICAg
aWYgKHZhbHVlUG9zICE9IG9iamVjdC0+ZW5kKCkpIHsKICAgICAgICAgICAgUnVudGltZUNhc3RI
ZWxwZXI6OmFzc2VydEFueSh2YWx1ZVBvcy0+c2Vjb25kLmdldCgpKTsKICAgICAgICAgICAgKytm
b3VuZFByb3BlcnRpZXNDb3VudDsKICAgICAgICB9CiAgICB9CiAgICB7CiAgICAgICAgSW5zcGVj
dG9yT2JqZWN0OjppdGVyYXRvciBkZXNjcmlwdGlvblBvczsKICAgICAgICBkZXNjcmlwdGlvblBv
cyA9IG9iamVjdC0+ZmluZCgiZGVzY3JpcHRpb24iKTsKICAgICAgICBpZiAoZGVzY3JpcHRpb25Q
b3MgIT0gb2JqZWN0LT5lbmQoKSkgewogICAgICAgICAgICBSdW50aW1lQ2FzdEhlbHBlcjo6YXNz
ZXJ0VHlwZTxJbnNwZWN0b3JWYWx1ZTo6VHlwZVN0cmluZz4oZGVzY3JpcHRpb25Qb3MtPnNlY29u
ZC5nZXQoKSk7CiAgICAgICAgICAgICsrZm91bmRQcm9wZXJ0aWVzQ291bnQ7CiAgICAgICAgfQog
ICAgfQogICAgewogICAgICAgIEluc3BlY3Rvck9iamVjdDo6aXRlcmF0b3Igb2JqZWN0SWRQb3M7
CiAgICAgICAgb2JqZWN0SWRQb3MgPSBvYmplY3QtPmZpbmQoIm9iamVjdElkIik7CiAgICAgICAg
aWYgKG9iamVjdElkUG9zICE9IG9iamVjdC0+ZW5kKCkpIHsKICAgICAgICAgICAgUnVudGltZUNh
c3RIZWxwZXI6OmFzc2VydFR5cGU8SW5zcGVjdG9yVmFsdWU6OlR5cGVTdHJpbmc+KG9iamVjdElk
UG9zLT5zZWNvbmQuZ2V0KCkpOwogICAgICAgICAgICArK2ZvdW5kUHJvcGVydGllc0NvdW50Owog
ICAgICAgIH0KICAgIH0KICAgIHsKICAgICAgICBJbnNwZWN0b3JPYmplY3Q6Oml0ZXJhdG9yIHBy
ZXZpZXdQb3M7CiAgICAgICAgcHJldmlld1BvcyA9IG9iamVjdC0+ZmluZCgicHJldmlldyIpOwog
ICAgICAgIGlmIChwcmV2aWV3UG9zICE9IG9iamVjdC0+ZW5kKCkpIHsKICAgICAgICAgICAgVHlw
ZUJ1aWxkZXI6OlJ1bnRpbWU6Ok9iamVjdFByZXZpZXc6OmFzc2VydENvcnJlY3RWYWx1ZShwcmV2
aWV3UG9zLT5zZWNvbmQuZ2V0KCkpOwogICAgICAgICAgICArK2ZvdW5kUHJvcGVydGllc0NvdW50
OwogICAgICAgIH0KICAgIH0KICAgIEFTU0VSVChmb3VuZFByb3BlcnRpZXNDb3VudCA9PSBvYmpl
Y3QtPnNpemUoKSk7Cn0KCgp2b2lkIFR5cGVCdWlsZGVyOjpSdW50aW1lOjpPYmplY3RQcmV2aWV3
Ojphc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKQp7CiAgICBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBvYmplY3Q7CiAgICBib29sIGNhc3RSZXMgPSB2YWx1ZS0+YXNPYmpl
Y3QoJm9iamVjdCk7CiAgICBBU1NFUlRfVU5VU0VEKGNhc3RSZXMsIGNhc3RSZXMpOwogICAgewog
ICAgICAgIEluc3BlY3Rvck9iamVjdDo6aXRlcmF0b3IgbG9zc2xlc3NQb3M7CiAgICAgICAgbG9z
c2xlc3NQb3MgPSBvYmplY3QtPmZpbmQoImxvc3NsZXNzIik7CiAgICAgICAgQVNTRVJUKGxvc3Ns
ZXNzUG9zICE9IG9iamVjdC0+ZW5kKCkpOwogICAgICAgIFJ1bnRpbWVDYXN0SGVscGVyOjphc3Nl
cnRUeXBlPEluc3BlY3RvclZhbHVlOjpUeXBlQm9vbGVhbj4obG9zc2xlc3NQb3MtPnNlY29uZC5n
ZXQoKSk7CiAgICB9CiAgICB7CiAgICAgICAgSW5zcGVjdG9yT2JqZWN0OjppdGVyYXRvciBvdmVy
Zmxvd1BvczsKICAgICAgICBvdmVyZmxvd1BvcyA9IG9iamVjdC0+ZmluZCgib3ZlcmZsb3ciKTsK
ICAgICAgICBBU1NFUlQob3ZlcmZsb3dQb3MgIT0gb2JqZWN0LT5lbmQoKSk7CiAgICAgICAgUnVu
dGltZUNhc3RIZWxwZXI6OmFzc2VydFR5cGU8SW5zcGVjdG9yVmFsdWU6OlR5cGVCb29sZWFuPihv
dmVyZmxvd1Bvcy0+c2Vjb25kLmdldCgpKTsKICAgIH0KICAgIHsKICAgICAgICBJbnNwZWN0b3JP
YmplY3Q6Oml0ZXJhdG9yIHByb3BlcnRpZXNQb3M7CiAgICAgICAgcHJvcGVydGllc1BvcyA9IG9i
amVjdC0+ZmluZCgicHJvcGVydGllcyIpOwogICAgICAgIEFTU0VSVChwcm9wZXJ0aWVzUG9zICE9
IG9iamVjdC0+ZW5kKCkpOwogICAgICAgIFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6
UnVudGltZTo6UHJvcGVydHlQcmV2aWV3Pjo6YXNzZXJ0Q29ycmVjdFZhbHVlKHByb3BlcnRpZXNQ
b3MtPnNlY29uZC5nZXQoKSk7CiAgICB9CiAgICBpbnQgZm91bmRQcm9wZXJ0aWVzQ291bnQgPSAz
OwogICAgQVNTRVJUKGZvdW5kUHJvcGVydGllc0NvdW50ID09IG9iamVjdC0+c2l6ZSgpKTsKfQoK
CnZvaWQgVHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlByb3BlcnR5UHJldmlldzo6VHlwZTo6YXNzZXJ0
Q29ycmVjdFZhbHVlKEluc3BlY3RvclZhbHVlKiB2YWx1ZSkKewogICAgV1RGOjpTdHJpbmcgczsK
ICAgIGJvb2wgY2FzdF9yZXMgPSB2YWx1ZS0+YXNTdHJpbmcoJnMpOwogICAgQVNTRVJUKGNhc3Rf
cmVzKTsKICAgIEFTU0VSVChzID09ICJvYmplY3QiIHx8IHMgPT0gImZ1bmN0aW9uIiB8fCBzID09
ICJ1bmRlZmluZWQiIHx8IHMgPT0gInN0cmluZyIgfHwgcyA9PSAibnVtYmVyIiB8fCBzID09ICJi
b29sZWFuIik7Cn0KCgp2b2lkIFR5cGVCdWlsZGVyOjpSdW50aW1lOjpQcm9wZXJ0eVByZXZpZXc6
OlN1YnR5cGU6OmFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpCnsKICAg
IFdURjo6U3RyaW5nIHM7CiAgICBib29sIGNhc3RfcmVzID0gdmFsdWUtPmFzU3RyaW5nKCZzKTsK
ICAgIEFTU0VSVChjYXN0X3Jlcyk7CiAgICBBU1NFUlQocyA9PSAiYXJyYXkiIHx8IHMgPT0gIm51
bGwiIHx8IHMgPT0gIm5vZGUiIHx8IHMgPT0gInJlZ2V4cCIgfHwgcyA9PSAiZGF0ZSIpOwp9CgoK
dm9pZCBUeXBlQnVpbGRlcjo6UnVudGltZTo6UHJvcGVydHlQcmV2aWV3Ojphc3NlcnRDb3JyZWN0
VmFsdWUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKQp7CiAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiBvYmplY3Q7CiAgICBib29sIGNhc3RSZXMgPSB2YWx1ZS0+YXNPYmplY3QoJm9iamVjdCk7CiAg
ICBBU1NFUlRfVU5VU0VEKGNhc3RSZXMsIGNhc3RSZXMpOwogICAgewogICAgICAgIEluc3BlY3Rv
ck9iamVjdDo6aXRlcmF0b3IgbmFtZVBvczsKICAgICAgICBuYW1lUG9zID0gb2JqZWN0LT5maW5k
KCJuYW1lIik7CiAgICAgICAgQVNTRVJUKG5hbWVQb3MgIT0gb2JqZWN0LT5lbmQoKSk7CiAgICAg
ICAgUnVudGltZUNhc3RIZWxwZXI6OmFzc2VydFR5cGU8SW5zcGVjdG9yVmFsdWU6OlR5cGVTdHJp
bmc+KG5hbWVQb3MtPnNlY29uZC5nZXQoKSk7CiAgICB9CiAgICB7CiAgICAgICAgSW5zcGVjdG9y
T2JqZWN0OjppdGVyYXRvciB0eXBlUG9zOwogICAgICAgIHR5cGVQb3MgPSBvYmplY3QtPmZpbmQo
InR5cGUiKTsKICAgICAgICBBU1NFUlQodHlwZVBvcyAhPSBvYmplY3QtPmVuZCgpKTsKICAgICAg
ICBUeXBlOjphc3NlcnRDb3JyZWN0VmFsdWUodHlwZVBvcy0+c2Vjb25kLmdldCgpKTsKICAgIH0K
ICAgIGludCBmb3VuZFByb3BlcnRpZXNDb3VudCA9IDI7CiAgICB7CiAgICAgICAgSW5zcGVjdG9y
T2JqZWN0OjppdGVyYXRvciB2YWx1ZVBvczsKICAgICAgICB2YWx1ZVBvcyA9IG9iamVjdC0+Zmlu
ZCgidmFsdWUiKTsKICAgICAgICBpZiAodmFsdWVQb3MgIT0gb2JqZWN0LT5lbmQoKSkgewogICAg
ICAgICAgICBSdW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0VHlwZTxJbnNwZWN0b3JWYWx1ZTo6VHlw
ZVN0cmluZz4odmFsdWVQb3MtPnNlY29uZC5nZXQoKSk7CiAgICAgICAgICAgICsrZm91bmRQcm9w
ZXJ0aWVzQ291bnQ7CiAgICAgICAgfQogICAgfQogICAgewogICAgICAgIEluc3BlY3Rvck9iamVj
dDo6aXRlcmF0b3Igc3VidHlwZVBvczsKICAgICAgICBzdWJ0eXBlUG9zID0gb2JqZWN0LT5maW5k
KCJzdWJ0eXBlIik7CiAgICAgICAgaWYgKHN1YnR5cGVQb3MgIT0gb2JqZWN0LT5lbmQoKSkgewog
ICAgICAgICAgICBTdWJ0eXBlOjphc3NlcnRDb3JyZWN0VmFsdWUoc3VidHlwZVBvcy0+c2Vjb25k
LmdldCgpKTsKICAgICAgICAgICAgKytmb3VuZFByb3BlcnRpZXNDb3VudDsKICAgICAgICB9CiAg
ICB9CiAgICBBU1NFUlQoZm91bmRQcm9wZXJ0aWVzQ291bnQgPT0gb2JqZWN0LT5zaXplKCkpOwp9
CgoKdm9pZCBUeXBlQnVpbGRlcjo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yOjphc3NlcnRD
b3JyZWN0VmFsdWUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKQp7CiAgICBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiBvYmplY3Q7CiAgICBib29sIGNhc3RSZXMgPSB2YWx1ZS0+YXNPYmplY3QoJm9iamVj
dCk7CiAgICBBU1NFUlRfVU5VU0VEKGNhc3RSZXMsIGNhc3RSZXMpOwogICAgewogICAgICAgIElu
c3BlY3Rvck9iamVjdDo6aXRlcmF0b3IgbmFtZVBvczsKICAgICAgICBuYW1lUG9zID0gb2JqZWN0
LT5maW5kKCJuYW1lIik7CiAgICAgICAgQVNTRVJUKG5hbWVQb3MgIT0gb2JqZWN0LT5lbmQoKSk7
CiAgICAgICAgUnVudGltZUNhc3RIZWxwZXI6OmFzc2VydFR5cGU8SW5zcGVjdG9yVmFsdWU6OlR5
cGVTdHJpbmc+KG5hbWVQb3MtPnNlY29uZC5nZXQoKSk7CiAgICB9CiAgICB7CiAgICAgICAgSW5z
cGVjdG9yT2JqZWN0OjppdGVyYXRvciBjb25maWd1cmFibGVQb3M7CiAgICAgICAgY29uZmlndXJh
YmxlUG9zID0gb2JqZWN0LT5maW5kKCJjb25maWd1cmFibGUiKTsKICAgICAgICBBU1NFUlQoY29u
ZmlndXJhYmxlUG9zICE9IG9iamVjdC0+ZW5kKCkpOwogICAgICAgIFJ1bnRpbWVDYXN0SGVscGVy
Ojphc3NlcnRUeXBlPEluc3BlY3RvclZhbHVlOjpUeXBlQm9vbGVhbj4oY29uZmlndXJhYmxlUG9z
LT5zZWNvbmQuZ2V0KCkpOwogICAgfQogICAgewogICAgICAgIEluc3BlY3Rvck9iamVjdDo6aXRl
cmF0b3IgZW51bWVyYWJsZVBvczsKICAgICAgICBlbnVtZXJhYmxlUG9zID0gb2JqZWN0LT5maW5k
KCJlbnVtZXJhYmxlIik7CiAgICAgICAgQVNTRVJUKGVudW1lcmFibGVQb3MgIT0gb2JqZWN0LT5l
bmQoKSk7CiAgICAgICAgUnVudGltZUNhc3RIZWxwZXI6OmFzc2VydFR5cGU8SW5zcGVjdG9yVmFs
dWU6OlR5cGVCb29sZWFuPihlbnVtZXJhYmxlUG9zLT5zZWNvbmQuZ2V0KCkpOwogICAgfQogICAg
aW50IGZvdW5kUHJvcGVydGllc0NvdW50ID0gMzsKICAgIHsKICAgICAgICBJbnNwZWN0b3JPYmpl
Y3Q6Oml0ZXJhdG9yIHZhbHVlUG9zOwogICAgICAgIHZhbHVlUG9zID0gb2JqZWN0LT5maW5kKCJ2
YWx1ZSIpOwogICAgICAgIGlmICh2YWx1ZVBvcyAhPSBvYmplY3QtPmVuZCgpKSB7CiAgICAgICAg
ICAgIFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q6OmFzc2VydENvcnJlY3RWYWx1
ZSh2YWx1ZVBvcy0+c2Vjb25kLmdldCgpKTsKICAgICAgICAgICAgKytmb3VuZFByb3BlcnRpZXND
b3VudDsKICAgICAgICB9CiAgICB9CiAgICB7CiAgICAgICAgSW5zcGVjdG9yT2JqZWN0OjppdGVy
YXRvciB3cml0YWJsZVBvczsKICAgICAgICB3cml0YWJsZVBvcyA9IG9iamVjdC0+ZmluZCgid3Jp
dGFibGUiKTsKICAgICAgICBpZiAod3JpdGFibGVQb3MgIT0gb2JqZWN0LT5lbmQoKSkgewogICAg
ICAgICAgICBSdW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0VHlwZTxJbnNwZWN0b3JWYWx1ZTo6VHlw
ZUJvb2xlYW4+KHdyaXRhYmxlUG9zLT5zZWNvbmQuZ2V0KCkpOwogICAgICAgICAgICArK2ZvdW5k
UHJvcGVydGllc0NvdW50OwogICAgICAgIH0KICAgIH0KICAgIHsKICAgICAgICBJbnNwZWN0b3JP
YmplY3Q6Oml0ZXJhdG9yIGdldFBvczsKICAgICAgICBnZXRQb3MgPSBvYmplY3QtPmZpbmQoImdl
dCIpOwogICAgICAgIGlmIChnZXRQb3MgIT0gb2JqZWN0LT5lbmQoKSkgewogICAgICAgICAgICBU
eXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0Ojphc3NlcnRDb3JyZWN0VmFsdWUoZ2V0
UG9zLT5zZWNvbmQuZ2V0KCkpOwogICAgICAgICAgICArK2ZvdW5kUHJvcGVydGllc0NvdW50Owog
ICAgICAgIH0KICAgIH0KICAgIHsKICAgICAgICBJbnNwZWN0b3JPYmplY3Q6Oml0ZXJhdG9yIHNl
dFBvczsKICAgICAgICBzZXRQb3MgPSBvYmplY3QtPmZpbmQoInNldCIpOwogICAgICAgIGlmIChz
ZXRQb3MgIT0gb2JqZWN0LT5lbmQoKSkgewogICAgICAgICAgICBUeXBlQnVpbGRlcjo6UnVudGlt
ZTo6UmVtb3RlT2JqZWN0Ojphc3NlcnRDb3JyZWN0VmFsdWUoc2V0UG9zLT5zZWNvbmQuZ2V0KCkp
OwogICAgICAgICAgICArK2ZvdW5kUHJvcGVydGllc0NvdW50OwogICAgICAgIH0KICAgIH0KICAg
IHsKICAgICAgICBJbnNwZWN0b3JPYmplY3Q6Oml0ZXJhdG9yIHdhc1Rocm93blBvczsKICAgICAg
ICB3YXNUaHJvd25Qb3MgPSBvYmplY3QtPmZpbmQoIndhc1Rocm93biIpOwogICAgICAgIGlmICh3
YXNUaHJvd25Qb3MgIT0gb2JqZWN0LT5lbmQoKSkgewogICAgICAgICAgICBSdW50aW1lQ2FzdEhl
bHBlcjo6YXNzZXJ0VHlwZTxJbnNwZWN0b3JWYWx1ZTo6VHlwZUJvb2xlYW4+KHdhc1Rocm93blBv
cy0+c2Vjb25kLmdldCgpKTsKICAgICAgICAgICAgKytmb3VuZFByb3BlcnRpZXNDb3VudDsKICAg
ICAgICB9CiAgICB9CiAgICBBU1NFUlQoZm91bmRQcm9wZXJ0aWVzQ291bnQgPT0gb2JqZWN0LT5z
aXplKCkpOwp9CgoKdm9pZCBUeXBlQnVpbGRlcjo6VGltZWxpbmU6OlRpbWVsaW5lRXZlbnQ6OmFz
c2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpCnsKICAgIFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+IG9iamVjdDsKICAgIGJvb2wgY2FzdFJlcyA9IHZhbHVlLT5hc09iamVjdCgm
b2JqZWN0KTsKICAgIEFTU0VSVF9VTlVTRUQoY2FzdFJlcywgY2FzdFJlcyk7CiAgICB7CiAgICAg
ICAgSW5zcGVjdG9yT2JqZWN0OjppdGVyYXRvciB0eXBlUG9zOwogICAgICAgIHR5cGVQb3MgPSBv
YmplY3QtPmZpbmQoInR5cGUiKTsKICAgICAgICBBU1NFUlQodHlwZVBvcyAhPSBvYmplY3QtPmVu
ZCgpKTsKICAgICAgICBSdW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0VHlwZTxJbnNwZWN0b3JWYWx1
ZTo6VHlwZVN0cmluZz4odHlwZVBvcy0+c2Vjb25kLmdldCgpKTsKICAgIH0KICAgIHsKICAgICAg
ICBJbnNwZWN0b3JPYmplY3Q6Oml0ZXJhdG9yIGRhdGFQb3M7CiAgICAgICAgZGF0YVBvcyA9IG9i
amVjdC0+ZmluZCgiZGF0YSIpOwogICAgICAgIEFTU0VSVChkYXRhUG9zICE9IG9iamVjdC0+ZW5k
KCkpOwogICAgICAgIFJ1bnRpbWVDYXN0SGVscGVyOjphc3NlcnRUeXBlPEluc3BlY3RvclZhbHVl
OjpUeXBlT2JqZWN0PihkYXRhUG9zLT5zZWNvbmQuZ2V0KCkpOwogICAgfQogICAgewogICAgICAg
IEluc3BlY3Rvck9iamVjdDo6aXRlcmF0b3IgY2hpbGRyZW5Qb3M7CiAgICAgICAgY2hpbGRyZW5Q
b3MgPSBvYmplY3QtPmZpbmQoImNoaWxkcmVuIik7CiAgICAgICAgaWYgKGNoaWxkcmVuUG9zICE9
IG9iamVjdC0+ZW5kKCkpIHsKICAgICAgICAgICAgVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWls
ZGVyOjpUaW1lbGluZTo6VGltZWxpbmVFdmVudD46OmFzc2VydENvcnJlY3RWYWx1ZShjaGlsZHJl
blBvcy0+c2Vjb25kLmdldCgpKTsKICAgICAgICB9CiAgICB9Cn0KCgojaWYgRU5BQkxFKEpBVkFT
Q1JJUFRfREVCVUdHRVIpCnZvaWQgVHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbjo6YXNz
ZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3RvclZhbHVlKiB2YWx1ZSkKewogICAgUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gb2JqZWN0OwogICAgYm9vbCBjYXN0UmVzID0gdmFsdWUtPmFzT2JqZWN0KCZv
YmplY3QpOwogICAgQVNTRVJUX1VOVVNFRChjYXN0UmVzLCBjYXN0UmVzKTsKICAgIHsKICAgICAg
ICBJbnNwZWN0b3JPYmplY3Q6Oml0ZXJhdG9yIHNjcmlwdElkUG9zOwogICAgICAgIHNjcmlwdElk
UG9zID0gb2JqZWN0LT5maW5kKCJzY3JpcHRJZCIpOwogICAgICAgIEFTU0VSVChzY3JpcHRJZFBv
cyAhPSBvYmplY3QtPmVuZCgpKTsKICAgICAgICBSdW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0VHlw
ZTxJbnNwZWN0b3JWYWx1ZTo6VHlwZVN0cmluZz4oc2NyaXB0SWRQb3MtPnNlY29uZC5nZXQoKSk7
CiAgICB9CiAgICB7CiAgICAgICAgSW5zcGVjdG9yT2JqZWN0OjppdGVyYXRvciBsaW5lTnVtYmVy
UG9zOwogICAgICAgIGxpbmVOdW1iZXJQb3MgPSBvYmplY3QtPmZpbmQoImxpbmVOdW1iZXIiKTsK
ICAgICAgICBBU1NFUlQobGluZU51bWJlclBvcyAhPSBvYmplY3QtPmVuZCgpKTsKICAgICAgICBS
dW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0SW50KGxpbmVOdW1iZXJQb3MtPnNlY29uZC5nZXQoKSk7
CiAgICB9CiAgICBpbnQgZm91bmRQcm9wZXJ0aWVzQ291bnQgPSAyOwogICAgewogICAgICAgIElu
c3BlY3Rvck9iamVjdDo6aXRlcmF0b3IgY29sdW1uTnVtYmVyUG9zOwogICAgICAgIGNvbHVtbk51
bWJlclBvcyA9IG9iamVjdC0+ZmluZCgiY29sdW1uTnVtYmVyIik7CiAgICAgICAgaWYgKGNvbHVt
bk51bWJlclBvcyAhPSBvYmplY3QtPmVuZCgpKSB7CiAgICAgICAgICAgIFJ1bnRpbWVDYXN0SGVs
cGVyOjphc3NlcnRJbnQoY29sdW1uTnVtYmVyUG9zLT5zZWNvbmQuZ2V0KCkpOwogICAgICAgICAg
ICArK2ZvdW5kUHJvcGVydGllc0NvdW50OwogICAgICAgIH0KICAgIH0KICAgIEFTU0VSVChmb3Vu
ZFByb3BlcnRpZXNDb3VudCA9PSBvYmplY3QtPnNpemUoKSk7Cn0KCgojZW5kaWYgLy8gRU5BQkxF
KEpBVkFTQ1JJUFRfREVCVUdHRVIpCiNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKdm9p
ZCBUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlsczo6YXNzZXJ0Q29ycmVjdFZh
bHVlKEluc3BlY3RvclZhbHVlKiB2YWx1ZSkKewogICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
b2JqZWN0OwogICAgYm9vbCBjYXN0UmVzID0gdmFsdWUtPmFzT2JqZWN0KCZvYmplY3QpOwogICAg
QVNTRVJUX1VOVVNFRChjYXN0UmVzLCBjYXN0UmVzKTsKICAgIHsKICAgICAgICBJbnNwZWN0b3JP
YmplY3Q6Oml0ZXJhdG9yIGxvY2F0aW9uUG9zOwogICAgICAgIGxvY2F0aW9uUG9zID0gb2JqZWN0
LT5maW5kKCJsb2NhdGlvbiIpOwogICAgICAgIEFTU0VSVChsb2NhdGlvblBvcyAhPSBvYmplY3Qt
PmVuZCgpKTsKICAgICAgICBUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uOjphc3NlcnRD
b3JyZWN0VmFsdWUobG9jYXRpb25Qb3MtPnNlY29uZC5nZXQoKSk7CiAgICB9CiAgICBpbnQgZm91
bmRQcm9wZXJ0aWVzQ291bnQgPSAxOwogICAgewogICAgICAgIEluc3BlY3Rvck9iamVjdDo6aXRl
cmF0b3IgbmFtZVBvczsKICAgICAgICBuYW1lUG9zID0gb2JqZWN0LT5maW5kKCJuYW1lIik7CiAg
ICAgICAgaWYgKG5hbWVQb3MgIT0gb2JqZWN0LT5lbmQoKSkgewogICAgICAgICAgICBSdW50aW1l
Q2FzdEhlbHBlcjo6YXNzZXJ0VHlwZTxJbnNwZWN0b3JWYWx1ZTo6VHlwZVN0cmluZz4obmFtZVBv
cy0+c2Vjb25kLmdldCgpKTsKICAgICAgICAgICAgKytmb3VuZFByb3BlcnRpZXNDb3VudDsKICAg
ICAgICB9CiAgICB9CiAgICB7CiAgICAgICAgSW5zcGVjdG9yT2JqZWN0OjppdGVyYXRvciBkaXNw
bGF5TmFtZVBvczsKICAgICAgICBkaXNwbGF5TmFtZVBvcyA9IG9iamVjdC0+ZmluZCgiZGlzcGxh
eU5hbWUiKTsKICAgICAgICBpZiAoZGlzcGxheU5hbWVQb3MgIT0gb2JqZWN0LT5lbmQoKSkgewog
ICAgICAgICAgICBSdW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0VHlwZTxJbnNwZWN0b3JWYWx1ZTo6
VHlwZVN0cmluZz4oZGlzcGxheU5hbWVQb3MtPnNlY29uZC5nZXQoKSk7CiAgICAgICAgICAgICsr
Zm91bmRQcm9wZXJ0aWVzQ291bnQ7CiAgICAgICAgfQogICAgfQogICAgewogICAgICAgIEluc3Bl
Y3Rvck9iamVjdDo6aXRlcmF0b3IgaW5mZXJyZWROYW1lUG9zOwogICAgICAgIGluZmVycmVkTmFt
ZVBvcyA9IG9iamVjdC0+ZmluZCgiaW5mZXJyZWROYW1lIik7CiAgICAgICAgaWYgKGluZmVycmVk
TmFtZVBvcyAhPSBvYmplY3QtPmVuZCgpKSB7CiAgICAgICAgICAgIFJ1bnRpbWVDYXN0SGVscGVy
Ojphc3NlcnRUeXBlPEluc3BlY3RvclZhbHVlOjpUeXBlU3RyaW5nPihpbmZlcnJlZE5hbWVQb3Mt
PnNlY29uZC5nZXQoKSk7CiAgICAgICAgICAgICsrZm91bmRQcm9wZXJ0aWVzQ291bnQ7CiAgICAg
ICAgfQogICAgfQogICAgewogICAgICAgIEluc3BlY3Rvck9iamVjdDo6aXRlcmF0b3Igc2NvcGVD
aGFpblBvczsKICAgICAgICBzY29wZUNoYWluUG9zID0gb2JqZWN0LT5maW5kKCJzY29wZUNoYWlu
Iik7CiAgICAgICAgaWYgKHNjb3BlQ2hhaW5Qb3MgIT0gb2JqZWN0LT5lbmQoKSkgewogICAgICAg
ICAgICBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpTY29wZT46OmFz
c2VydENvcnJlY3RWYWx1ZShzY29wZUNoYWluUG9zLT5zZWNvbmQuZ2V0KCkpOwogICAgICAgICAg
ICArK2ZvdW5kUHJvcGVydGllc0NvdW50OwogICAgICAgIH0KICAgIH0KICAgIEFTU0VSVChmb3Vu
ZFByb3BlcnRpZXNDb3VudCA9PSBvYmplY3QtPnNpemUoKSk7Cn0KCgojZW5kaWYgLy8gRU5BQkxF
KEpBVkFTQ1JJUFRfREVCVUdHRVIpCiNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKdm9p
ZCBUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkNhbGxGcmFtZTo6YXNzZXJ0Q29ycmVjdFZhbHVlKElu
c3BlY3RvclZhbHVlKiB2YWx1ZSkKewogICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gb2JqZWN0
OwogICAgYm9vbCBjYXN0UmVzID0gdmFsdWUtPmFzT2JqZWN0KCZvYmplY3QpOwogICAgQVNTRVJU
X1VOVVNFRChjYXN0UmVzLCBjYXN0UmVzKTsKICAgIHsKICAgICAgICBJbnNwZWN0b3JPYmplY3Q6
Oml0ZXJhdG9yIGNhbGxGcmFtZUlkUG9zOwogICAgICAgIGNhbGxGcmFtZUlkUG9zID0gb2JqZWN0
LT5maW5kKCJjYWxsRnJhbWVJZCIpOwogICAgICAgIEFTU0VSVChjYWxsRnJhbWVJZFBvcyAhPSBv
YmplY3QtPmVuZCgpKTsKICAgICAgICBSdW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0VHlwZTxJbnNw
ZWN0b3JWYWx1ZTo6VHlwZVN0cmluZz4oY2FsbEZyYW1lSWRQb3MtPnNlY29uZC5nZXQoKSk7CiAg
ICB9CiAgICB7CiAgICAgICAgSW5zcGVjdG9yT2JqZWN0OjppdGVyYXRvciBmdW5jdGlvbk5hbWVQ
b3M7CiAgICAgICAgZnVuY3Rpb25OYW1lUG9zID0gb2JqZWN0LT5maW5kKCJmdW5jdGlvbk5hbWUi
KTsKICAgICAgICBBU1NFUlQoZnVuY3Rpb25OYW1lUG9zICE9IG9iamVjdC0+ZW5kKCkpOwogICAg
ICAgIFJ1bnRpbWVDYXN0SGVscGVyOjphc3NlcnRUeXBlPEluc3BlY3RvclZhbHVlOjpUeXBlU3Ry
aW5nPihmdW5jdGlvbk5hbWVQb3MtPnNlY29uZC5nZXQoKSk7CiAgICB9CiAgICB7CiAgICAgICAg
SW5zcGVjdG9yT2JqZWN0OjppdGVyYXRvciBsb2NhdGlvblBvczsKICAgICAgICBsb2NhdGlvblBv
cyA9IG9iamVjdC0+ZmluZCgibG9jYXRpb24iKTsKICAgICAgICBBU1NFUlQobG9jYXRpb25Qb3Mg
IT0gb2JqZWN0LT5lbmQoKSk7CiAgICAgICAgVHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlv
bjo6YXNzZXJ0Q29ycmVjdFZhbHVlKGxvY2F0aW9uUG9zLT5zZWNvbmQuZ2V0KCkpOwogICAgfQog
ICAgewogICAgICAgIEluc3BlY3Rvck9iamVjdDo6aXRlcmF0b3Igc2NvcGVDaGFpblBvczsKICAg
ICAgICBzY29wZUNoYWluUG9zID0gb2JqZWN0LT5maW5kKCJzY29wZUNoYWluIik7CiAgICAgICAg
QVNTRVJUKHNjb3BlQ2hhaW5Qb3MgIT0gb2JqZWN0LT5lbmQoKSk7CiAgICAgICAgVHlwZUJ1aWxk
ZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6U2NvcGU+Ojphc3NlcnRDb3JyZWN0VmFs
dWUoc2NvcGVDaGFpblBvcy0+c2Vjb25kLmdldCgpKTsKICAgIH0KICAgIHsKICAgICAgICBJbnNw
ZWN0b3JPYmplY3Q6Oml0ZXJhdG9yIHRoaXNQb3M7CiAgICAgICAgdGhpc1BvcyA9IG9iamVjdC0+
ZmluZCgidGhpcyIpOwogICAgICAgIEFTU0VSVCh0aGlzUG9zICE9IG9iamVjdC0+ZW5kKCkpOwog
ICAgICAgIFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q6OmFzc2VydENvcnJlY3RW
YWx1ZSh0aGlzUG9zLT5zZWNvbmQuZ2V0KCkpOwogICAgfQogICAgaW50IGZvdW5kUHJvcGVydGll
c0NvdW50ID0gNTsKICAgIEFTU0VSVChmb3VuZFByb3BlcnRpZXNDb3VudCA9PSBvYmplY3QtPnNp
emUoKSk7Cn0KCgojZW5kaWYgLy8gRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiNpZiBFTkFC
TEUoSkFWQVNDUklQVF9ERUJVR0dFUikKdm9pZCBUeXBlQnVpbGRlcjo6RGVidWdnZXI6OlNjb3Bl
OjpUeXBlOjphc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKQp7CiAgICBX
VEY6OlN0cmluZyBzOwogICAgYm9vbCBjYXN0X3JlcyA9IHZhbHVlLT5hc1N0cmluZygmcyk7CiAg
ICBBU1NFUlQoY2FzdF9yZXMpOwogICAgQVNTRVJUKHMgPT0gImdsb2JhbCIgfHwgcyA9PSAibG9j
YWwiIHx8IHMgPT0gIndpdGgiIHx8IHMgPT0gImNsb3N1cmUiIHx8IHMgPT0gImNhdGNoIik7Cn0K
CgojZW5kaWYgLy8gRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiNpZiBFTkFCTEUoSkFWQVND
UklQVF9ERUJVR0dFUikKdm9pZCBUeXBlQnVpbGRlcjo6RGVidWdnZXI6OlNjb3BlOjphc3NlcnRD
b3JyZWN0VmFsdWUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKQp7CiAgICBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiBvYmplY3Q7CiAgICBib29sIGNhc3RSZXMgPSB2YWx1ZS0+YXNPYmplY3QoJm9iamVj
dCk7CiAgICBBU1NFUlRfVU5VU0VEKGNhc3RSZXMsIGNhc3RSZXMpOwogICAgewogICAgICAgIElu
c3BlY3Rvck9iamVjdDo6aXRlcmF0b3IgdHlwZVBvczsKICAgICAgICB0eXBlUG9zID0gb2JqZWN0
LT5maW5kKCJ0eXBlIik7CiAgICAgICAgQVNTRVJUKHR5cGVQb3MgIT0gb2JqZWN0LT5lbmQoKSk7
CiAgICAgICAgVHlwZTo6YXNzZXJ0Q29ycmVjdFZhbHVlKHR5cGVQb3MtPnNlY29uZC5nZXQoKSk7
CiAgICB9CiAgICB7CiAgICAgICAgSW5zcGVjdG9yT2JqZWN0OjppdGVyYXRvciBvYmplY3RQb3M7
CiAgICAgICAgb2JqZWN0UG9zID0gb2JqZWN0LT5maW5kKCJvYmplY3QiKTsKICAgICAgICBBU1NF
UlQob2JqZWN0UG9zICE9IG9iamVjdC0+ZW5kKCkpOwogICAgICAgIFR5cGVCdWlsZGVyOjpSdW50
aW1lOjpSZW1vdGVPYmplY3Q6OmFzc2VydENvcnJlY3RWYWx1ZShvYmplY3RQb3MtPnNlY29uZC5n
ZXQoKSk7CiAgICB9CiAgICBpbnQgZm91bmRQcm9wZXJ0aWVzQ291bnQgPSAyOwogICAgQVNTRVJU
KGZvdW5kUHJvcGVydGllc0NvdW50ID09IG9iamVjdC0+c2l6ZSgpKTsKfQoKCiNlbmRpZiAvLyBF
TkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKI2lmIEVOQUJMRShXRUJHTCkKdm9pZCBUeXBlQnVp
bGRlcjo6V2ViR0w6OkNhbGw6OmFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFs
dWUpCnsKICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG9iamVjdDsKICAgIGJvb2wgY2FzdFJl
cyA9IHZhbHVlLT5hc09iamVjdCgmb2JqZWN0KTsKICAgIEFTU0VSVF9VTlVTRUQoY2FzdFJlcywg
Y2FzdFJlcyk7CiAgICB7CiAgICAgICAgSW5zcGVjdG9yT2JqZWN0OjppdGVyYXRvciBmdW5jdGlv
bk5hbWVQb3M7CiAgICAgICAgZnVuY3Rpb25OYW1lUG9zID0gb2JqZWN0LT5maW5kKCJmdW5jdGlv
bk5hbWUiKTsKICAgICAgICBBU1NFUlQoZnVuY3Rpb25OYW1lUG9zICE9IG9iamVjdC0+ZW5kKCkp
OwogICAgICAgIFJ1bnRpbWVDYXN0SGVscGVyOjphc3NlcnRUeXBlPEluc3BlY3RvclZhbHVlOjpU
eXBlU3RyaW5nPihmdW5jdGlvbk5hbWVQb3MtPnNlY29uZC5nZXQoKSk7CiAgICB9CiAgICBpbnQg
Zm91bmRQcm9wZXJ0aWVzQ291bnQgPSAxOwogICAgQVNTRVJUKGZvdW5kUHJvcGVydGllc0NvdW50
ID09IG9iamVjdC0+c2l6ZSgpKTsKfQoKCiNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCiNpZiBFTkFC
TEUoV0VCR0wpCnZvaWQgVHlwZUJ1aWxkZXI6OldlYkdMOjpUcmFjZUxvZzo6YXNzZXJ0Q29ycmVj
dFZhbHVlKEluc3BlY3RvclZhbHVlKiB2YWx1ZSkKewogICAgUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4gb2JqZWN0OwogICAgYm9vbCBjYXN0UmVzID0gdmFsdWUtPmFzT2JqZWN0KCZvYmplY3QpOwog
ICAgQVNTRVJUX1VOVVNFRChjYXN0UmVzLCBjYXN0UmVzKTsKICAgIHsKICAgICAgICBJbnNwZWN0
b3JPYmplY3Q6Oml0ZXJhdG9yIGlkUG9zOwogICAgICAgIGlkUG9zID0gb2JqZWN0LT5maW5kKCJp
ZCIpOwogICAgICAgIEFTU0VSVChpZFBvcyAhPSBvYmplY3QtPmVuZCgpKTsKICAgICAgICBSdW50
aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0VHlwZTxJbnNwZWN0b3JWYWx1ZTo6VHlwZVN0cmluZz4oaWRQ
b3MtPnNlY29uZC5nZXQoKSk7CiAgICB9CiAgICB7CiAgICAgICAgSW5zcGVjdG9yT2JqZWN0Ojpp
dGVyYXRvciBjYWxsc1BvczsKICAgICAgICBjYWxsc1BvcyA9IG9iamVjdC0+ZmluZCgiY2FsbHMi
KTsKICAgICAgICBBU1NFUlQoY2FsbHNQb3MgIT0gb2JqZWN0LT5lbmQoKSk7CiAgICAgICAgVHlw
ZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpXZWJHTDo6Q2FsbD46OmFzc2VydENvcnJlY3RW
YWx1ZShjYWxsc1Bvcy0+c2Vjb25kLmdldCgpKTsKICAgIH0KICAgIGludCBmb3VuZFByb3BlcnRp
ZXNDb3VudCA9IDI7CiAgICBBU1NFUlQoZm91bmRQcm9wZXJ0aWVzQ291bnQgPT0gb2JqZWN0LT5z
aXplKCkpOwp9CgoKI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKCgojZW5kaWYgLy8gIUFTU0VSVF9E
SVNBQkxFRAoKfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQoKI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNU
T1IpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159632</attachid>
            <date>2012-08-21 00:36:15 -0700</date>
            <delta_ts>2012-08-21 00:41:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94511-20120821103534.patch</filename>
            <type>text/plain</type>
            <size>4696</size>
            <attacher name="Thiago Marcos P. Santos">tmpsantos</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2MTM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmUyM2ZiMDkxMDYzNWFh
MzMwNzA0ZjhlMTY1ZDY0NDBiZmVlYWU1ZC4uYjRiZThlZGFmZGMyYjJmOWJlNTkwODhjZmNjMTdm
ODMwZjI0YjNmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTA4LTIxICBUaGlh
Z28gTWFyY29zIFAuIFNhbnRvcyAgPHRoaWFnby5zYW50b3NAaW50ZWwuY29tPgorCisgICAgICAg
IENvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHk6IEdlbmVyYXRlIGd1YXJkcyBmb3IgdHlwZSB2YWxp
ZGF0b3JzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
NDUxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZp
eCByZWdyZXNzaW9uIHdoZW4gYnVpbGRpbmcgZGVidWcgYW5kIG9uZSBvZiB0aGUgZ2VuZXJhdGVk
IHR5cGVzIGlzCisgICAgICAgIGRpc2FibGVkIGJ5IGEgY29tcGlsZSBmbGFnLiBXZSBzaG91bGQg
Z2VuZXJhdGUgZ3VhcmRzIGZvciB0aGVzZSB0eXBlCisgICAgICAgIHZhbGlkYXRvcnMgdGhlIHNh
bWUgd2F5IGFzIHdlIGFyZSBkb2luZyBvbiB0aGUgaW5jbHVkZSBoZWFkZXJzLgorCisgICAgICAg
ICogaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHk6CisgICAgICAgIChUeXBlQmlu
ZGluZ3MuY3JlYXRlX3R5cGVfZGVjbGFyYXRpb25fLkVudW1CaW5kaW5nLmdldF9jb2RlX2dlbmVy
YXRvci5Db2RlR2VuZXJhdG9yLmdlbmVyYXRlX3R5cGVfYnVpbGRlcik6CisKIDIwMTItMDgtMjAg
IEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtWOF0gTW92
ZSBoYW5kbGVPdXRPZk1lbW9yeSgpIGZyb20gVjhQcm94eSB0byBWOEJpbmRpbmcKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5IGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKaW5kZXgg
ODE3ZWQwYjQ2ZmZjZjYyNTgyMThjYzJhYTc3YTNjNTg0NjM5YzEyOS4uYzk1MTY5YTRmZjk3NGUx
ZjhkZTQ0MjgyY2QxY2E4YWZmZjU5NTQ1ZiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKQEAgLTkwOSw2ICs5MDksMTIgQEAgY2xh
c3MgVHlwZUJpbmRpbmdzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3Jp
dGVyLmFwcGVuZCgiI2VuZGlmICAvLyAlc1xuIiAlIFZBTElEQVRPUl9JRkRFRl9OQU1FKQogCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3Jfd3JpdGVyID0gZ2Vu
ZXJhdGVfY29udGV4dC52YWxpZGF0b3Jfd3JpdGVyCisKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRvbWFpbl9maXhlcyA9IERvbWFpbk5hbWVGaXhlcy5nZXRfZml4ZWRfZGF0
YShjb250ZXh0X2RvbWFpbl9uYW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZG9tYWluX2d1YXJkID0gZG9tYWluX2ZpeGVzLmdldF9ndWFyZCgpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiBkb21haW5fZ3VhcmQ6CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZG9tYWluX2d1YXJkLmdlbmVyYXRlX29wZW4odmFsaWRh
dG9yX3dyaXRlcikKKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRh
dG9yX3dyaXRlci5uZXdsaW5lKCJ2b2lkICVzJXM6OmFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0
b3JWYWx1ZSogdmFsdWUpXG4iICUgKGhlbHBlci5mdWxsX25hbWVfcHJlZml4X2Zvcl9pbXBsLCBl
bnVtX25hbWUpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9y
X3dyaXRlci5uZXdsaW5lKCJ7XG4iKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdmFsaWRhdG9yX3dyaXRlci5uZXdsaW5lKCIgICAgV1RGOjpTdHJpbmcgcztcbiIpCkBAIC05
MjAsOCArOTI2LDEyIEBAIGNsYXNzIFR5cGVCaW5kaW5nczoKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZW51bV9wb3MgPSBFbnVtQ29uc3RhbnRzLmFkZF9jb25z
dGFudChlbnVtX2l0ZW0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbmRpdGlvbl9saXN0LmFwcGVuZCgicyA9PSBcIiVzXCIiICUgZW51bV9pdGVtKQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcl93cml0ZXIubmV3
bGluZSgiICAgIEFTU0VSVCglcyk7XG4iICUgam9pbihjb25kaXRpb25fbGlzdCwgIiB8fCAiKSkK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcl93cml0ZXIubmV3
bGluZSgifVxuXG5cbiIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxp
ZGF0b3Jfd3JpdGVyLm5ld2xpbmUoIn1cbiIpCiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIGRvbWFpbl9ndWFyZDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkb21haW5fZ3VhcmQuZ2VuZXJhdGVfY2xvc2UodmFsaWRhdG9yX3dyaXRlcikK
KworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yX3dyaXRlci5u
ZXdsaW5lKCJcblxuIikKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIu
bmV3bGluZSgifTsgLy8gc3RydWN0ICIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHdyaXRlci5hcHBlbmQoZW51bV9uYW1lKQpAQCAtMTI4OCw2ICsxMjk4LDEyIEBAIGNsYXNzIFR5
cGVCaW5kaW5nczoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlZF9m
aWVsZF9zZXQgPSAoY29udGV4dF9kb21haW5fbmFtZSArICIuIiArIGNsYXNzX25hbWUpIG5vdCBp
biBUWVBFU19XSVRIX09QRU5fRklFTERfTElTVF9TRVQKIAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdmFsaWRhdG9yX3dyaXRlciA9IGdlbmVyYXRlX2NvbnRleHQudmFsaWRh
dG9yX3dyaXRlcgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21haW5f
Zml4ZXMgPSBEb21haW5OYW1lRml4ZXMuZ2V0X2ZpeGVkX2RhdGEoY29udGV4dF9kb21haW5fbmFt
ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbl9ndWFyZCA9IGRv
bWFpbl9maXhlcy5nZXRfZ3VhcmQoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgZG9tYWluX2d1YXJkOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRvbWFpbl9ndWFyZC5nZW5lcmF0ZV9vcGVuKHZhbGlkYXRvcl93cml0ZXIpCisKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcl93cml0ZXIubmV3bGluZSgi
dm9pZCAlcyVzOjphc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKVxuIiAl
IChoZWxwZXIuZnVsbF9uYW1lX3ByZWZpeF9mb3JfaW1wbCwgY2xhc3NfbmFtZSkpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3Jfd3JpdGVyLm5ld2xpbmUoIntc
biIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3Jfd3JpdGVy
Lm5ld2xpbmUoIiAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3Q7XG4iKQpAQCAtMTMx
OSw3ICsxMzM1LDEyIEBAIGNsYXNzIFR5cGVCaW5kaW5nczoKIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgY2xvc2VkX2ZpZWxkX3NldDoKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3Jfd3JpdGVyLm5ld2xpbmUoIiAgICBBU1NF
UlQoZm91bmRQcm9wZXJ0aWVzQ291bnQgPT0gb2JqZWN0LT5zaXplKCkpO1xuIikKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcl93cml0ZXIubmV3bGluZSgifVxu
XG5cbiIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3Jfd3Jp
dGVyLm5ld2xpbmUoIn1cbiIpCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIGRvbWFpbl9ndWFyZDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkb21haW5fZ3VhcmQuZ2VuZXJhdGVfY2xvc2UodmFsaWRhdG9yX3dyaXRlcikKKworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yX3dyaXRlci5uZXdsaW5lKCJc
blxuIikKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBpc19vcGVuX3R5cGU6
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHBfd3JpdGVyID0gZ2VuZXJh
dGVfY29udGV4dC5jcHBfd3JpdGVyCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>159633</attachid>
            <date>2012-08-21 00:38:12 -0700</date>
            <delta_ts>2012-08-21 00:38:12 -0700</delta_ts>
            <desc>Generated InspectorTypeBuilder.cpp after the patch. </desc>
            <filename>InspectorTypeBuilder.cpp</filename>
            <type>text/x-c++src</type>
            <size>19669</size>
            <attacher name="Thiago Marcos P. Santos">tmpsantos</attacher>
            
              <data encoding="base64">Ly8gRmlsZSBpcyBnZW5lcmF0ZWQgYnkgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5l
cmF0b3JJbnNwZWN0b3IucHkKCi8vIENvcHlyaWdodCAoYykgMjAxMSBUaGUgQ2hyb21pdW0gQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQovLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgoKCiNpbmNsdWRlICJjb25maWcuaCIKI2lmIEVOQUJMRShJTlNQRUNU
T1IpCgojaW5jbHVkZSAiSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCIKCm5hbWVzcGFjZSBXZWJDb3Jl
IHsKCm5hbWVzcGFjZSBUeXBlQnVpbGRlciB7Cgpjb25zdCBjaGFyKiBjb25zdCBlbnVtX2NvbnN0
YW50X3ZhbHVlc1tdID0gewogICAgIkRvY3VtZW50IiwKICAgICJTdHlsZXNoZWV0IiwKICAgICJJ
bWFnZSIsCiAgICAiRm9udCIsCiAgICAiU2NyaXB0IiwKICAgICJYSFIiLAogICAgIldlYlNvY2tl
dCIsCiAgICAiT3RoZXIiLAogICAgIm9iamVjdCIsCiAgICAiZnVuY3Rpb24iLAogICAgInVuZGVm
aW5lZCIsCiAgICAic3RyaW5nIiwKICAgICJudW1iZXIiLAogICAgImJvb2xlYW4iLAogICAgImFy
cmF5IiwKICAgICJudWxsIiwKICAgICJub2RlIiwKICAgICJyZWdleHAiLAogICAgImRhdGUiLAog
ICAgImh0bWwiLAogICAgIndtbCIsCiAgICAieG1sIiwKICAgICJqYXZhc2NyaXB0IiwKICAgICJu
ZXR3b3JrIiwKICAgICJjb25zb2xlLWFwaSIsCiAgICAib3RoZXIiLAogICAgInRpcCIsCiAgICAi
bG9nIiwKICAgICJ3YXJuaW5nIiwKICAgICJlcnJvciIsCiAgICAiZGVidWciLAogICAgImRpciIs
CiAgICAiZGlyeG1sIiwKICAgICJ0cmFjZSIsCiAgICAic3RhcnRHcm91cCIsCiAgICAic3RhcnRH
cm91cENvbGxhcHNlZCIsCiAgICAiZW5kR3JvdXAiLAogICAgImFzc2VydCIsCiAgICAicGFyc2Vy
IiwKICAgICJzY3JpcHQiLAogICAgInVzZXIiLAogICAgInVzZXItYWdlbnQiLAogICAgImluc3Bl
Y3RvciIsCiAgICAicmVndWxhciIsCiAgICAiYWN0aXZlIiwKICAgICJpbmFjdGl2ZSIsCiAgICAi
ZGlzYWJsZWQiLAogICAgInN0eWxlIiwKICAgICJtZWRpYVJ1bGUiLAogICAgImltcG9ydFJ1bGUi
LAogICAgImxpbmtlZFNoZWV0IiwKICAgICJpbmxpbmVTaGVldCIsCiAgICAib3ZlcnNldCIsCiAg
ICAiZml0IiwKICAgICJlbXB0eSIsCiAgICAiZ2xvYmFsIiwKICAgICJsb2NhbCIsCiAgICAid2l0
aCIsCiAgICAiY2xvc3VyZSIsCiAgICAiY2F0Y2giLAogICAgInN1YnRyZWUtbW9kaWZpZWQiLAog
ICAgImF0dHJpYnV0ZS1tb2RpZmllZCIsCiAgICAibm9kZS1yZW1vdmVkIiwKICAgICJDUFUiLAog
ICAgIkNTUyIsCiAgICAiSEVBUCIsCiAgICAiYWxsb3dlZCIsCiAgICAiZm9yYmlkZGVuIiwKICAg
ICJET00iLAogICAgIkV2ZW50TGlzdGVuZXIiLAogICAgImV4Y2VwdGlvbiIKfTsKClN0cmluZyBn
ZXRFbnVtQ29uc3RhbnRWYWx1ZShpbnQgY29kZSkgewogICAgcmV0dXJuIGVudW1fY29uc3RhbnRf
dmFsdWVzW2NvZGVdOwp9Cgp9IC8vIG5hbWVzcGFjZSBUeXBlQnVpbGRlcgoKY29uc3QgY2hhciog
VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OlJlc3BvbnNlOjpVcmwgPSAidXJsIjsKY29uc3QgY2hhciog
VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OlJlc3BvbnNlOjpTdGF0dXMgPSAic3RhdHVzIjsKY29uc3Qg
Y2hhciogVHlwZUJ1aWxkZXI6Ok5ldHdvcms6OlJlc3BvbnNlOjpTdGF0dXNUZXh0ID0gInN0YXR1
c1RleHQiOwpjb25zdCBjaGFyKiBUeXBlQnVpbGRlcjo6TmV0d29yazo6UmVzcG9uc2U6OkhlYWRl
cnMgPSAiaGVhZGVycyI7CmNvbnN0IGNoYXIqIFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXNwb25z
ZTo6TWltZVR5cGUgPSAibWltZVR5cGUiOwpjb25zdCBjaGFyKiBUeXBlQnVpbGRlcjo6TmV0d29y
azo6UmVzcG9uc2U6OkNvbm5lY3Rpb25SZXVzZWQgPSAiY29ubmVjdGlvblJldXNlZCI7CmNvbnN0
IGNoYXIqIFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXNwb25zZTo6Q29ubmVjdGlvbklkID0gImNv
bm5lY3Rpb25JZCI7CmNvbnN0IGNoYXIqIFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXNwb25zZTo6
SGVhZGVyc1RleHQgPSAiaGVhZGVyc1RleHQiOwpjb25zdCBjaGFyKiBUeXBlQnVpbGRlcjo6TmV0
d29yazo6UmVzcG9uc2U6OlJlcXVlc3RIZWFkZXJzID0gInJlcXVlc3RIZWFkZXJzIjsKY29uc3Qg
Y2hhciogVHlwZUJ1aWxkZXI6Ok5ldHdvcms6OlJlc3BvbnNlOjpSZXF1ZXN0SGVhZGVyc1RleHQg
PSAicmVxdWVzdEhlYWRlcnNUZXh0IjsKY29uc3QgY2hhciogVHlwZUJ1aWxkZXI6Ok5ldHdvcms6
OlJlc3BvbnNlOjpGcm9tRGlza0NhY2hlID0gImZyb21EaXNrQ2FjaGUiOwpjb25zdCBjaGFyKiBU
eXBlQnVpbGRlcjo6TmV0d29yazo6UmVzcG9uc2U6OlRpbWluZyA9ICJ0aW1pbmciOwpjb25zdCBj
aGFyKiBUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eTo6TmFtZSA9ICJuYW1lIjsKY29uc3Qg
Y2hhciogVHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk6OlZhbHVlID0gInZhbHVlIjsKY29u
c3QgY2hhciogVHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk6OlByaW9yaXR5ID0gInByaW9y
aXR5IjsKY29uc3QgY2hhciogVHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk6OkltcGxpY2l0
ID0gImltcGxpY2l0IjsKY29uc3QgY2hhciogVHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk6
OlRleHQgPSAidGV4dCI7CmNvbnN0IGNoYXIqIFR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5
OjpQYXJzZWRPayA9ICJwYXJzZWRPayI7CmNvbnN0IGNoYXIqIFR5cGVCdWlsZGVyOjpDU1M6OkNT
U1Byb3BlcnR5OjpTdGF0dXMgPSAic3RhdHVzIjsKY29uc3QgY2hhciogVHlwZUJ1aWxkZXI6OkNT
Uzo6Q1NTUHJvcGVydHk6OlJhbmdlID0gInJhbmdlIjsKY29uc3QgY2hhciogVHlwZUJ1aWxkZXI6
OlRpbWVsaW5lOjpUaW1lbGluZUV2ZW50OjpUeXBlID0gInR5cGUiOwpjb25zdCBjaGFyKiBUeXBl
QnVpbGRlcjo6VGltZWxpbmU6OlRpbWVsaW5lRXZlbnQ6OkRhdGEgPSAiZGF0YSI7CmNvbnN0IGNo
YXIqIFR5cGVCdWlsZGVyOjpUaW1lbGluZTo6VGltZWxpbmVFdmVudDo6Q2hpbGRyZW4gPSAiY2hp
bGRyZW4iOwoKCiNpZiAhQVNTRVJUX0RJU0FCTEVECgp2b2lkIFR5cGVCdWlsZGVyOjpSdW50aW1l
Q2FzdEhlbHBlcjo6YXNzZXJ0QW55KEluc3BlY3RvclZhbHVlKikKewogICAgLy8gTm8tb3AuCn0K
Cgp2b2lkIFR5cGVCdWlsZGVyOjpSdW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0SW50KEluc3BlY3Rv
clZhbHVlKiB2YWx1ZSkKewogICAgZG91YmxlIHY7CiAgICBib29sIGNhc3RSZXMgPSB2YWx1ZS0+
YXNOdW1iZXIoJnYpOwogICAgQVNTRVJUX1VOVVNFRChjYXN0UmVzLCBjYXN0UmVzKTsKICAgIEFT
U0VSVChzdGF0aWNfY2FzdDxkb3VibGU+KHN0YXRpY19jYXN0PGludD4odikpID09IHYpOwp9Cgp2
b2lkIFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q6OlR5cGU6OmFzc2VydENvcnJl
Y3RWYWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpCnsKICAgIFdURjo6U3RyaW5nIHM7CiAgICBi
b29sIGNhc3RfcmVzID0gdmFsdWUtPmFzU3RyaW5nKCZzKTsKICAgIEFTU0VSVChjYXN0X3Jlcyk7
CiAgICBBU1NFUlQocyA9PSAib2JqZWN0IiB8fCBzID09ICJmdW5jdGlvbiIgfHwgcyA9PSAidW5k
ZWZpbmVkIiB8fCBzID09ICJzdHJpbmciIHx8IHMgPT0gIm51bWJlciIgfHwgcyA9PSAiYm9vbGVh
biIpOwp9CgoKdm9pZCBUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0OjpTdWJ0eXBl
Ojphc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKQp7CiAgICBXVEY6OlN0
cmluZyBzOwogICAgYm9vbCBjYXN0X3JlcyA9IHZhbHVlLT5hc1N0cmluZygmcyk7CiAgICBBU1NF
UlQoY2FzdF9yZXMpOwogICAgQVNTRVJUKHMgPT0gImFycmF5IiB8fCBzID09ICJudWxsIiB8fCBz
ID09ICJub2RlIiB8fCBzID09ICJyZWdleHAiIHx8IHMgPT0gImRhdGUiKTsKfQoKCnZvaWQgVHlw
ZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdDo6YXNzZXJ0Q29ycmVjdFZhbHVlKEluc3Bl
Y3RvclZhbHVlKiB2YWx1ZSkKewogICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gb2JqZWN0Owog
ICAgYm9vbCBjYXN0UmVzID0gdmFsdWUtPmFzT2JqZWN0KCZvYmplY3QpOwogICAgQVNTRVJUX1VO
VVNFRChjYXN0UmVzLCBjYXN0UmVzKTsKICAgIHsKICAgICAgICBJbnNwZWN0b3JPYmplY3Q6Oml0
ZXJhdG9yIHR5cGVQb3M7CiAgICAgICAgdHlwZVBvcyA9IG9iamVjdC0+ZmluZCgidHlwZSIpOwog
ICAgICAgIEFTU0VSVCh0eXBlUG9zICE9IG9iamVjdC0+ZW5kKCkpOwogICAgICAgIFR5cGU6OmFz
c2VydENvcnJlY3RWYWx1ZSh0eXBlUG9zLT5zZWNvbmQuZ2V0KCkpOwogICAgfQogICAgaW50IGZv
dW5kUHJvcGVydGllc0NvdW50ID0gMTsKICAgIHsKICAgICAgICBJbnNwZWN0b3JPYmplY3Q6Oml0
ZXJhdG9yIHN1YnR5cGVQb3M7CiAgICAgICAgc3VidHlwZVBvcyA9IG9iamVjdC0+ZmluZCgic3Vi
dHlwZSIpOwogICAgICAgIGlmIChzdWJ0eXBlUG9zICE9IG9iamVjdC0+ZW5kKCkpIHsKICAgICAg
ICAgICAgU3VidHlwZTo6YXNzZXJ0Q29ycmVjdFZhbHVlKHN1YnR5cGVQb3MtPnNlY29uZC5nZXQo
KSk7CiAgICAgICAgICAgICsrZm91bmRQcm9wZXJ0aWVzQ291bnQ7CiAgICAgICAgfQogICAgfQog
ICAgewogICAgICAgIEluc3BlY3Rvck9iamVjdDo6aXRlcmF0b3IgY2xhc3NOYW1lUG9zOwogICAg
ICAgIGNsYXNzTmFtZVBvcyA9IG9iamVjdC0+ZmluZCgiY2xhc3NOYW1lIik7CiAgICAgICAgaWYg
KGNsYXNzTmFtZVBvcyAhPSBvYmplY3QtPmVuZCgpKSB7CiAgICAgICAgICAgIFJ1bnRpbWVDYXN0
SGVscGVyOjphc3NlcnRUeXBlPEluc3BlY3RvclZhbHVlOjpUeXBlU3RyaW5nPihjbGFzc05hbWVQ
b3MtPnNlY29uZC5nZXQoKSk7CiAgICAgICAgICAgICsrZm91bmRQcm9wZXJ0aWVzQ291bnQ7CiAg
ICAgICAgfQogICAgfQogICAgewogICAgICAgIEluc3BlY3Rvck9iamVjdDo6aXRlcmF0b3IgdmFs
dWVQb3M7CiAgICAgICAgdmFsdWVQb3MgPSBvYmplY3QtPmZpbmQoInZhbHVlIik7CiAgICAgICAg
aWYgKHZhbHVlUG9zICE9IG9iamVjdC0+ZW5kKCkpIHsKICAgICAgICAgICAgUnVudGltZUNhc3RI
ZWxwZXI6OmFzc2VydEFueSh2YWx1ZVBvcy0+c2Vjb25kLmdldCgpKTsKICAgICAgICAgICAgKytm
b3VuZFByb3BlcnRpZXNDb3VudDsKICAgICAgICB9CiAgICB9CiAgICB7CiAgICAgICAgSW5zcGVj
dG9yT2JqZWN0OjppdGVyYXRvciBkZXNjcmlwdGlvblBvczsKICAgICAgICBkZXNjcmlwdGlvblBv
cyA9IG9iamVjdC0+ZmluZCgiZGVzY3JpcHRpb24iKTsKICAgICAgICBpZiAoZGVzY3JpcHRpb25Q
b3MgIT0gb2JqZWN0LT5lbmQoKSkgewogICAgICAgICAgICBSdW50aW1lQ2FzdEhlbHBlcjo6YXNz
ZXJ0VHlwZTxJbnNwZWN0b3JWYWx1ZTo6VHlwZVN0cmluZz4oZGVzY3JpcHRpb25Qb3MtPnNlY29u
ZC5nZXQoKSk7CiAgICAgICAgICAgICsrZm91bmRQcm9wZXJ0aWVzQ291bnQ7CiAgICAgICAgfQog
ICAgfQogICAgewogICAgICAgIEluc3BlY3Rvck9iamVjdDo6aXRlcmF0b3Igb2JqZWN0SWRQb3M7
CiAgICAgICAgb2JqZWN0SWRQb3MgPSBvYmplY3QtPmZpbmQoIm9iamVjdElkIik7CiAgICAgICAg
aWYgKG9iamVjdElkUG9zICE9IG9iamVjdC0+ZW5kKCkpIHsKICAgICAgICAgICAgUnVudGltZUNh
c3RIZWxwZXI6OmFzc2VydFR5cGU8SW5zcGVjdG9yVmFsdWU6OlR5cGVTdHJpbmc+KG9iamVjdElk
UG9zLT5zZWNvbmQuZ2V0KCkpOwogICAgICAgICAgICArK2ZvdW5kUHJvcGVydGllc0NvdW50Owog
ICAgICAgIH0KICAgIH0KICAgIHsKICAgICAgICBJbnNwZWN0b3JPYmplY3Q6Oml0ZXJhdG9yIHBy
ZXZpZXdQb3M7CiAgICAgICAgcHJldmlld1BvcyA9IG9iamVjdC0+ZmluZCgicHJldmlldyIpOwog
ICAgICAgIGlmIChwcmV2aWV3UG9zICE9IG9iamVjdC0+ZW5kKCkpIHsKICAgICAgICAgICAgVHlw
ZUJ1aWxkZXI6OlJ1bnRpbWU6Ok9iamVjdFByZXZpZXc6OmFzc2VydENvcnJlY3RWYWx1ZShwcmV2
aWV3UG9zLT5zZWNvbmQuZ2V0KCkpOwogICAgICAgICAgICArK2ZvdW5kUHJvcGVydGllc0NvdW50
OwogICAgICAgIH0KICAgIH0KICAgIEFTU0VSVChmb3VuZFByb3BlcnRpZXNDb3VudCA9PSBvYmpl
Y3QtPnNpemUoKSk7Cn0KCgp2b2lkIFR5cGVCdWlsZGVyOjpSdW50aW1lOjpPYmplY3RQcmV2aWV3
Ojphc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKQp7CiAgICBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBvYmplY3Q7CiAgICBib29sIGNhc3RSZXMgPSB2YWx1ZS0+YXNPYmpl
Y3QoJm9iamVjdCk7CiAgICBBU1NFUlRfVU5VU0VEKGNhc3RSZXMsIGNhc3RSZXMpOwogICAgewog
ICAgICAgIEluc3BlY3Rvck9iamVjdDo6aXRlcmF0b3IgbG9zc2xlc3NQb3M7CiAgICAgICAgbG9z
c2xlc3NQb3MgPSBvYmplY3QtPmZpbmQoImxvc3NsZXNzIik7CiAgICAgICAgQVNTRVJUKGxvc3Ns
ZXNzUG9zICE9IG9iamVjdC0+ZW5kKCkpOwogICAgICAgIFJ1bnRpbWVDYXN0SGVscGVyOjphc3Nl
cnRUeXBlPEluc3BlY3RvclZhbHVlOjpUeXBlQm9vbGVhbj4obG9zc2xlc3NQb3MtPnNlY29uZC5n
ZXQoKSk7CiAgICB9CiAgICB7CiAgICAgICAgSW5zcGVjdG9yT2JqZWN0OjppdGVyYXRvciBvdmVy
Zmxvd1BvczsKICAgICAgICBvdmVyZmxvd1BvcyA9IG9iamVjdC0+ZmluZCgib3ZlcmZsb3ciKTsK
ICAgICAgICBBU1NFUlQob3ZlcmZsb3dQb3MgIT0gb2JqZWN0LT5lbmQoKSk7CiAgICAgICAgUnVu
dGltZUNhc3RIZWxwZXI6OmFzc2VydFR5cGU8SW5zcGVjdG9yVmFsdWU6OlR5cGVCb29sZWFuPihv
dmVyZmxvd1Bvcy0+c2Vjb25kLmdldCgpKTsKICAgIH0KICAgIHsKICAgICAgICBJbnNwZWN0b3JP
YmplY3Q6Oml0ZXJhdG9yIHByb3BlcnRpZXNQb3M7CiAgICAgICAgcHJvcGVydGllc1BvcyA9IG9i
amVjdC0+ZmluZCgicHJvcGVydGllcyIpOwogICAgICAgIEFTU0VSVChwcm9wZXJ0aWVzUG9zICE9
IG9iamVjdC0+ZW5kKCkpOwogICAgICAgIFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6
UnVudGltZTo6UHJvcGVydHlQcmV2aWV3Pjo6YXNzZXJ0Q29ycmVjdFZhbHVlKHByb3BlcnRpZXNQ
b3MtPnNlY29uZC5nZXQoKSk7CiAgICB9CiAgICBpbnQgZm91bmRQcm9wZXJ0aWVzQ291bnQgPSAz
OwogICAgQVNTRVJUKGZvdW5kUHJvcGVydGllc0NvdW50ID09IG9iamVjdC0+c2l6ZSgpKTsKfQoK
CnZvaWQgVHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlByb3BlcnR5UHJldmlldzo6VHlwZTo6YXNzZXJ0
Q29ycmVjdFZhbHVlKEluc3BlY3RvclZhbHVlKiB2YWx1ZSkKewogICAgV1RGOjpTdHJpbmcgczsK
ICAgIGJvb2wgY2FzdF9yZXMgPSB2YWx1ZS0+YXNTdHJpbmcoJnMpOwogICAgQVNTRVJUKGNhc3Rf
cmVzKTsKICAgIEFTU0VSVChzID09ICJvYmplY3QiIHx8IHMgPT0gImZ1bmN0aW9uIiB8fCBzID09
ICJ1bmRlZmluZWQiIHx8IHMgPT0gInN0cmluZyIgfHwgcyA9PSAibnVtYmVyIiB8fCBzID09ICJi
b29sZWFuIik7Cn0KCgp2b2lkIFR5cGVCdWlsZGVyOjpSdW50aW1lOjpQcm9wZXJ0eVByZXZpZXc6
OlN1YnR5cGU6OmFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpCnsKICAg
IFdURjo6U3RyaW5nIHM7CiAgICBib29sIGNhc3RfcmVzID0gdmFsdWUtPmFzU3RyaW5nKCZzKTsK
ICAgIEFTU0VSVChjYXN0X3Jlcyk7CiAgICBBU1NFUlQocyA9PSAiYXJyYXkiIHx8IHMgPT0gIm51
bGwiIHx8IHMgPT0gIm5vZGUiIHx8IHMgPT0gInJlZ2V4cCIgfHwgcyA9PSAiZGF0ZSIpOwp9CgoK
dm9pZCBUeXBlQnVpbGRlcjo6UnVudGltZTo6UHJvcGVydHlQcmV2aWV3Ojphc3NlcnRDb3JyZWN0
VmFsdWUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKQp7CiAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiBvYmplY3Q7CiAgICBib29sIGNhc3RSZXMgPSB2YWx1ZS0+YXNPYmplY3QoJm9iamVjdCk7CiAg
ICBBU1NFUlRfVU5VU0VEKGNhc3RSZXMsIGNhc3RSZXMpOwogICAgewogICAgICAgIEluc3BlY3Rv
ck9iamVjdDo6aXRlcmF0b3IgbmFtZVBvczsKICAgICAgICBuYW1lUG9zID0gb2JqZWN0LT5maW5k
KCJuYW1lIik7CiAgICAgICAgQVNTRVJUKG5hbWVQb3MgIT0gb2JqZWN0LT5lbmQoKSk7CiAgICAg
ICAgUnVudGltZUNhc3RIZWxwZXI6OmFzc2VydFR5cGU8SW5zcGVjdG9yVmFsdWU6OlR5cGVTdHJp
bmc+KG5hbWVQb3MtPnNlY29uZC5nZXQoKSk7CiAgICB9CiAgICB7CiAgICAgICAgSW5zcGVjdG9y
T2JqZWN0OjppdGVyYXRvciB0eXBlUG9zOwogICAgICAgIHR5cGVQb3MgPSBvYmplY3QtPmZpbmQo
InR5cGUiKTsKICAgICAgICBBU1NFUlQodHlwZVBvcyAhPSBvYmplY3QtPmVuZCgpKTsKICAgICAg
ICBUeXBlOjphc3NlcnRDb3JyZWN0VmFsdWUodHlwZVBvcy0+c2Vjb25kLmdldCgpKTsKICAgIH0K
ICAgIGludCBmb3VuZFByb3BlcnRpZXNDb3VudCA9IDI7CiAgICB7CiAgICAgICAgSW5zcGVjdG9y
T2JqZWN0OjppdGVyYXRvciB2YWx1ZVBvczsKICAgICAgICB2YWx1ZVBvcyA9IG9iamVjdC0+Zmlu
ZCgidmFsdWUiKTsKICAgICAgICBpZiAodmFsdWVQb3MgIT0gb2JqZWN0LT5lbmQoKSkgewogICAg
ICAgICAgICBSdW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0VHlwZTxJbnNwZWN0b3JWYWx1ZTo6VHlw
ZVN0cmluZz4odmFsdWVQb3MtPnNlY29uZC5nZXQoKSk7CiAgICAgICAgICAgICsrZm91bmRQcm9w
ZXJ0aWVzQ291bnQ7CiAgICAgICAgfQogICAgfQogICAgewogICAgICAgIEluc3BlY3Rvck9iamVj
dDo6aXRlcmF0b3Igc3VidHlwZVBvczsKICAgICAgICBzdWJ0eXBlUG9zID0gb2JqZWN0LT5maW5k
KCJzdWJ0eXBlIik7CiAgICAgICAgaWYgKHN1YnR5cGVQb3MgIT0gb2JqZWN0LT5lbmQoKSkgewog
ICAgICAgICAgICBTdWJ0eXBlOjphc3NlcnRDb3JyZWN0VmFsdWUoc3VidHlwZVBvcy0+c2Vjb25k
LmdldCgpKTsKICAgICAgICAgICAgKytmb3VuZFByb3BlcnRpZXNDb3VudDsKICAgICAgICB9CiAg
ICB9CiAgICBBU1NFUlQoZm91bmRQcm9wZXJ0aWVzQ291bnQgPT0gb2JqZWN0LT5zaXplKCkpOwp9
CgoKdm9pZCBUeXBlQnVpbGRlcjo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yOjphc3NlcnRD
b3JyZWN0VmFsdWUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKQp7CiAgICBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiBvYmplY3Q7CiAgICBib29sIGNhc3RSZXMgPSB2YWx1ZS0+YXNPYmplY3QoJm9iamVj
dCk7CiAgICBBU1NFUlRfVU5VU0VEKGNhc3RSZXMsIGNhc3RSZXMpOwogICAgewogICAgICAgIElu
c3BlY3Rvck9iamVjdDo6aXRlcmF0b3IgbmFtZVBvczsKICAgICAgICBuYW1lUG9zID0gb2JqZWN0
LT5maW5kKCJuYW1lIik7CiAgICAgICAgQVNTRVJUKG5hbWVQb3MgIT0gb2JqZWN0LT5lbmQoKSk7
CiAgICAgICAgUnVudGltZUNhc3RIZWxwZXI6OmFzc2VydFR5cGU8SW5zcGVjdG9yVmFsdWU6OlR5
cGVTdHJpbmc+KG5hbWVQb3MtPnNlY29uZC5nZXQoKSk7CiAgICB9CiAgICB7CiAgICAgICAgSW5z
cGVjdG9yT2JqZWN0OjppdGVyYXRvciBjb25maWd1cmFibGVQb3M7CiAgICAgICAgY29uZmlndXJh
YmxlUG9zID0gb2JqZWN0LT5maW5kKCJjb25maWd1cmFibGUiKTsKICAgICAgICBBU1NFUlQoY29u
ZmlndXJhYmxlUG9zICE9IG9iamVjdC0+ZW5kKCkpOwogICAgICAgIFJ1bnRpbWVDYXN0SGVscGVy
Ojphc3NlcnRUeXBlPEluc3BlY3RvclZhbHVlOjpUeXBlQm9vbGVhbj4oY29uZmlndXJhYmxlUG9z
LT5zZWNvbmQuZ2V0KCkpOwogICAgfQogICAgewogICAgICAgIEluc3BlY3Rvck9iamVjdDo6aXRl
cmF0b3IgZW51bWVyYWJsZVBvczsKICAgICAgICBlbnVtZXJhYmxlUG9zID0gb2JqZWN0LT5maW5k
KCJlbnVtZXJhYmxlIik7CiAgICAgICAgQVNTRVJUKGVudW1lcmFibGVQb3MgIT0gb2JqZWN0LT5l
bmQoKSk7CiAgICAgICAgUnVudGltZUNhc3RIZWxwZXI6OmFzc2VydFR5cGU8SW5zcGVjdG9yVmFs
dWU6OlR5cGVCb29sZWFuPihlbnVtZXJhYmxlUG9zLT5zZWNvbmQuZ2V0KCkpOwogICAgfQogICAg
aW50IGZvdW5kUHJvcGVydGllc0NvdW50ID0gMzsKICAgIHsKICAgICAgICBJbnNwZWN0b3JPYmpl
Y3Q6Oml0ZXJhdG9yIHZhbHVlUG9zOwogICAgICAgIHZhbHVlUG9zID0gb2JqZWN0LT5maW5kKCJ2
YWx1ZSIpOwogICAgICAgIGlmICh2YWx1ZVBvcyAhPSBvYmplY3QtPmVuZCgpKSB7CiAgICAgICAg
ICAgIFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q6OmFzc2VydENvcnJlY3RWYWx1
ZSh2YWx1ZVBvcy0+c2Vjb25kLmdldCgpKTsKICAgICAgICAgICAgKytmb3VuZFByb3BlcnRpZXND
b3VudDsKICAgICAgICB9CiAgICB9CiAgICB7CiAgICAgICAgSW5zcGVjdG9yT2JqZWN0OjppdGVy
YXRvciB3cml0YWJsZVBvczsKICAgICAgICB3cml0YWJsZVBvcyA9IG9iamVjdC0+ZmluZCgid3Jp
dGFibGUiKTsKICAgICAgICBpZiAod3JpdGFibGVQb3MgIT0gb2JqZWN0LT5lbmQoKSkgewogICAg
ICAgICAgICBSdW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0VHlwZTxJbnNwZWN0b3JWYWx1ZTo6VHlw
ZUJvb2xlYW4+KHdyaXRhYmxlUG9zLT5zZWNvbmQuZ2V0KCkpOwogICAgICAgICAgICArK2ZvdW5k
UHJvcGVydGllc0NvdW50OwogICAgICAgIH0KICAgIH0KICAgIHsKICAgICAgICBJbnNwZWN0b3JP
YmplY3Q6Oml0ZXJhdG9yIGdldFBvczsKICAgICAgICBnZXRQb3MgPSBvYmplY3QtPmZpbmQoImdl
dCIpOwogICAgICAgIGlmIChnZXRQb3MgIT0gb2JqZWN0LT5lbmQoKSkgewogICAgICAgICAgICBU
eXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0Ojphc3NlcnRDb3JyZWN0VmFsdWUoZ2V0
UG9zLT5zZWNvbmQuZ2V0KCkpOwogICAgICAgICAgICArK2ZvdW5kUHJvcGVydGllc0NvdW50Owog
ICAgICAgIH0KICAgIH0KICAgIHsKICAgICAgICBJbnNwZWN0b3JPYmplY3Q6Oml0ZXJhdG9yIHNl
dFBvczsKICAgICAgICBzZXRQb3MgPSBvYmplY3QtPmZpbmQoInNldCIpOwogICAgICAgIGlmIChz
ZXRQb3MgIT0gb2JqZWN0LT5lbmQoKSkgewogICAgICAgICAgICBUeXBlQnVpbGRlcjo6UnVudGlt
ZTo6UmVtb3RlT2JqZWN0Ojphc3NlcnRDb3JyZWN0VmFsdWUoc2V0UG9zLT5zZWNvbmQuZ2V0KCkp
OwogICAgICAgICAgICArK2ZvdW5kUHJvcGVydGllc0NvdW50OwogICAgICAgIH0KICAgIH0KICAg
IHsKICAgICAgICBJbnNwZWN0b3JPYmplY3Q6Oml0ZXJhdG9yIHdhc1Rocm93blBvczsKICAgICAg
ICB3YXNUaHJvd25Qb3MgPSBvYmplY3QtPmZpbmQoIndhc1Rocm93biIpOwogICAgICAgIGlmICh3
YXNUaHJvd25Qb3MgIT0gb2JqZWN0LT5lbmQoKSkgewogICAgICAgICAgICBSdW50aW1lQ2FzdEhl
bHBlcjo6YXNzZXJ0VHlwZTxJbnNwZWN0b3JWYWx1ZTo6VHlwZUJvb2xlYW4+KHdhc1Rocm93blBv
cy0+c2Vjb25kLmdldCgpKTsKICAgICAgICAgICAgKytmb3VuZFByb3BlcnRpZXNDb3VudDsKICAg
ICAgICB9CiAgICB9CiAgICBBU1NFUlQoZm91bmRQcm9wZXJ0aWVzQ291bnQgPT0gb2JqZWN0LT5z
aXplKCkpOwp9CgoKdm9pZCBUeXBlQnVpbGRlcjo6VGltZWxpbmU6OlRpbWVsaW5lRXZlbnQ6OmFz
c2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpCnsKICAgIFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+IG9iamVjdDsKICAgIGJvb2wgY2FzdFJlcyA9IHZhbHVlLT5hc09iamVjdCgm
b2JqZWN0KTsKICAgIEFTU0VSVF9VTlVTRUQoY2FzdFJlcywgY2FzdFJlcyk7CiAgICB7CiAgICAg
ICAgSW5zcGVjdG9yT2JqZWN0OjppdGVyYXRvciB0eXBlUG9zOwogICAgICAgIHR5cGVQb3MgPSBv
YmplY3QtPmZpbmQoInR5cGUiKTsKICAgICAgICBBU1NFUlQodHlwZVBvcyAhPSBvYmplY3QtPmVu
ZCgpKTsKICAgICAgICBSdW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0VHlwZTxJbnNwZWN0b3JWYWx1
ZTo6VHlwZVN0cmluZz4odHlwZVBvcy0+c2Vjb25kLmdldCgpKTsKICAgIH0KICAgIHsKICAgICAg
ICBJbnNwZWN0b3JPYmplY3Q6Oml0ZXJhdG9yIGRhdGFQb3M7CiAgICAgICAgZGF0YVBvcyA9IG9i
amVjdC0+ZmluZCgiZGF0YSIpOwogICAgICAgIEFTU0VSVChkYXRhUG9zICE9IG9iamVjdC0+ZW5k
KCkpOwogICAgICAgIFJ1bnRpbWVDYXN0SGVscGVyOjphc3NlcnRUeXBlPEluc3BlY3RvclZhbHVl
OjpUeXBlT2JqZWN0PihkYXRhUG9zLT5zZWNvbmQuZ2V0KCkpOwogICAgfQogICAgewogICAgICAg
IEluc3BlY3Rvck9iamVjdDo6aXRlcmF0b3IgY2hpbGRyZW5Qb3M7CiAgICAgICAgY2hpbGRyZW5Q
b3MgPSBvYmplY3QtPmZpbmQoImNoaWxkcmVuIik7CiAgICAgICAgaWYgKGNoaWxkcmVuUG9zICE9
IG9iamVjdC0+ZW5kKCkpIHsKICAgICAgICAgICAgVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWls
ZGVyOjpUaW1lbGluZTo6VGltZWxpbmVFdmVudD46OmFzc2VydENvcnJlY3RWYWx1ZShjaGlsZHJl
blBvcy0+c2Vjb25kLmdldCgpKTsKICAgICAgICB9CiAgICB9Cn0KCgojaWYgRU5BQkxFKEpBVkFT
Q1JJUFRfREVCVUdHRVIpCnZvaWQgVHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbjo6YXNz
ZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3RvclZhbHVlKiB2YWx1ZSkKewogICAgUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gb2JqZWN0OwogICAgYm9vbCBjYXN0UmVzID0gdmFsdWUtPmFzT2JqZWN0KCZv
YmplY3QpOwogICAgQVNTRVJUX1VOVVNFRChjYXN0UmVzLCBjYXN0UmVzKTsKICAgIHsKICAgICAg
ICBJbnNwZWN0b3JPYmplY3Q6Oml0ZXJhdG9yIHNjcmlwdElkUG9zOwogICAgICAgIHNjcmlwdElk
UG9zID0gb2JqZWN0LT5maW5kKCJzY3JpcHRJZCIpOwogICAgICAgIEFTU0VSVChzY3JpcHRJZFBv
cyAhPSBvYmplY3QtPmVuZCgpKTsKICAgICAgICBSdW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0VHlw
ZTxJbnNwZWN0b3JWYWx1ZTo6VHlwZVN0cmluZz4oc2NyaXB0SWRQb3MtPnNlY29uZC5nZXQoKSk7
CiAgICB9CiAgICB7CiAgICAgICAgSW5zcGVjdG9yT2JqZWN0OjppdGVyYXRvciBsaW5lTnVtYmVy
UG9zOwogICAgICAgIGxpbmVOdW1iZXJQb3MgPSBvYmplY3QtPmZpbmQoImxpbmVOdW1iZXIiKTsK
ICAgICAgICBBU1NFUlQobGluZU51bWJlclBvcyAhPSBvYmplY3QtPmVuZCgpKTsKICAgICAgICBS
dW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0SW50KGxpbmVOdW1iZXJQb3MtPnNlY29uZC5nZXQoKSk7
CiAgICB9CiAgICBpbnQgZm91bmRQcm9wZXJ0aWVzQ291bnQgPSAyOwogICAgewogICAgICAgIElu
c3BlY3Rvck9iamVjdDo6aXRlcmF0b3IgY29sdW1uTnVtYmVyUG9zOwogICAgICAgIGNvbHVtbk51
bWJlclBvcyA9IG9iamVjdC0+ZmluZCgiY29sdW1uTnVtYmVyIik7CiAgICAgICAgaWYgKGNvbHVt
bk51bWJlclBvcyAhPSBvYmplY3QtPmVuZCgpKSB7CiAgICAgICAgICAgIFJ1bnRpbWVDYXN0SGVs
cGVyOjphc3NlcnRJbnQoY29sdW1uTnVtYmVyUG9zLT5zZWNvbmQuZ2V0KCkpOwogICAgICAgICAg
ICArK2ZvdW5kUHJvcGVydGllc0NvdW50OwogICAgICAgIH0KICAgIH0KICAgIEFTU0VSVChmb3Vu
ZFByb3BlcnRpZXNDb3VudCA9PSBvYmplY3QtPnNpemUoKSk7Cn0KI2VuZGlmIC8vIEVOQUJMRShK
QVZBU0NSSVBUX0RFQlVHR0VSKQoKCiNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKdm9p
ZCBUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlsczo6YXNzZXJ0Q29ycmVjdFZh
bHVlKEluc3BlY3RvclZhbHVlKiB2YWx1ZSkKewogICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
b2JqZWN0OwogICAgYm9vbCBjYXN0UmVzID0gdmFsdWUtPmFzT2JqZWN0KCZvYmplY3QpOwogICAg
QVNTRVJUX1VOVVNFRChjYXN0UmVzLCBjYXN0UmVzKTsKICAgIHsKICAgICAgICBJbnNwZWN0b3JP
YmplY3Q6Oml0ZXJhdG9yIGxvY2F0aW9uUG9zOwogICAgICAgIGxvY2F0aW9uUG9zID0gb2JqZWN0
LT5maW5kKCJsb2NhdGlvbiIpOwogICAgICAgIEFTU0VSVChsb2NhdGlvblBvcyAhPSBvYmplY3Qt
PmVuZCgpKTsKICAgICAgICBUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uOjphc3NlcnRD
b3JyZWN0VmFsdWUobG9jYXRpb25Qb3MtPnNlY29uZC5nZXQoKSk7CiAgICB9CiAgICBpbnQgZm91
bmRQcm9wZXJ0aWVzQ291bnQgPSAxOwogICAgewogICAgICAgIEluc3BlY3Rvck9iamVjdDo6aXRl
cmF0b3IgbmFtZVBvczsKICAgICAgICBuYW1lUG9zID0gb2JqZWN0LT5maW5kKCJuYW1lIik7CiAg
ICAgICAgaWYgKG5hbWVQb3MgIT0gb2JqZWN0LT5lbmQoKSkgewogICAgICAgICAgICBSdW50aW1l
Q2FzdEhlbHBlcjo6YXNzZXJ0VHlwZTxJbnNwZWN0b3JWYWx1ZTo6VHlwZVN0cmluZz4obmFtZVBv
cy0+c2Vjb25kLmdldCgpKTsKICAgICAgICAgICAgKytmb3VuZFByb3BlcnRpZXNDb3VudDsKICAg
ICAgICB9CiAgICB9CiAgICB7CiAgICAgICAgSW5zcGVjdG9yT2JqZWN0OjppdGVyYXRvciBkaXNw
bGF5TmFtZVBvczsKICAgICAgICBkaXNwbGF5TmFtZVBvcyA9IG9iamVjdC0+ZmluZCgiZGlzcGxh
eU5hbWUiKTsKICAgICAgICBpZiAoZGlzcGxheU5hbWVQb3MgIT0gb2JqZWN0LT5lbmQoKSkgewog
ICAgICAgICAgICBSdW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0VHlwZTxJbnNwZWN0b3JWYWx1ZTo6
VHlwZVN0cmluZz4oZGlzcGxheU5hbWVQb3MtPnNlY29uZC5nZXQoKSk7CiAgICAgICAgICAgICsr
Zm91bmRQcm9wZXJ0aWVzQ291bnQ7CiAgICAgICAgfQogICAgfQogICAgewogICAgICAgIEluc3Bl
Y3Rvck9iamVjdDo6aXRlcmF0b3IgaW5mZXJyZWROYW1lUG9zOwogICAgICAgIGluZmVycmVkTmFt
ZVBvcyA9IG9iamVjdC0+ZmluZCgiaW5mZXJyZWROYW1lIik7CiAgICAgICAgaWYgKGluZmVycmVk
TmFtZVBvcyAhPSBvYmplY3QtPmVuZCgpKSB7CiAgICAgICAgICAgIFJ1bnRpbWVDYXN0SGVscGVy
Ojphc3NlcnRUeXBlPEluc3BlY3RvclZhbHVlOjpUeXBlU3RyaW5nPihpbmZlcnJlZE5hbWVQb3Mt
PnNlY29uZC5nZXQoKSk7CiAgICAgICAgICAgICsrZm91bmRQcm9wZXJ0aWVzQ291bnQ7CiAgICAg
ICAgfQogICAgfQogICAgewogICAgICAgIEluc3BlY3Rvck9iamVjdDo6aXRlcmF0b3Igc2NvcGVD
aGFpblBvczsKICAgICAgICBzY29wZUNoYWluUG9zID0gb2JqZWN0LT5maW5kKCJzY29wZUNoYWlu
Iik7CiAgICAgICAgaWYgKHNjb3BlQ2hhaW5Qb3MgIT0gb2JqZWN0LT5lbmQoKSkgewogICAgICAg
ICAgICBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpTY29wZT46OmFz
c2VydENvcnJlY3RWYWx1ZShzY29wZUNoYWluUG9zLT5zZWNvbmQuZ2V0KCkpOwogICAgICAgICAg
ICArK2ZvdW5kUHJvcGVydGllc0NvdW50OwogICAgICAgIH0KICAgIH0KICAgIEFTU0VSVChmb3Vu
ZFByb3BlcnRpZXNDb3VudCA9PSBvYmplY3QtPnNpemUoKSk7Cn0KI2VuZGlmIC8vIEVOQUJMRShK
QVZBU0NSSVBUX0RFQlVHR0VSKQoKCiNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKdm9p
ZCBUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkNhbGxGcmFtZTo6YXNzZXJ0Q29ycmVjdFZhbHVlKElu
c3BlY3RvclZhbHVlKiB2YWx1ZSkKewogICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gb2JqZWN0
OwogICAgYm9vbCBjYXN0UmVzID0gdmFsdWUtPmFzT2JqZWN0KCZvYmplY3QpOwogICAgQVNTRVJU
X1VOVVNFRChjYXN0UmVzLCBjYXN0UmVzKTsKICAgIHsKICAgICAgICBJbnNwZWN0b3JPYmplY3Q6
Oml0ZXJhdG9yIGNhbGxGcmFtZUlkUG9zOwogICAgICAgIGNhbGxGcmFtZUlkUG9zID0gb2JqZWN0
LT5maW5kKCJjYWxsRnJhbWVJZCIpOwogICAgICAgIEFTU0VSVChjYWxsRnJhbWVJZFBvcyAhPSBv
YmplY3QtPmVuZCgpKTsKICAgICAgICBSdW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0VHlwZTxJbnNw
ZWN0b3JWYWx1ZTo6VHlwZVN0cmluZz4oY2FsbEZyYW1lSWRQb3MtPnNlY29uZC5nZXQoKSk7CiAg
ICB9CiAgICB7CiAgICAgICAgSW5zcGVjdG9yT2JqZWN0OjppdGVyYXRvciBmdW5jdGlvbk5hbWVQ
b3M7CiAgICAgICAgZnVuY3Rpb25OYW1lUG9zID0gb2JqZWN0LT5maW5kKCJmdW5jdGlvbk5hbWUi
KTsKICAgICAgICBBU1NFUlQoZnVuY3Rpb25OYW1lUG9zICE9IG9iamVjdC0+ZW5kKCkpOwogICAg
ICAgIFJ1bnRpbWVDYXN0SGVscGVyOjphc3NlcnRUeXBlPEluc3BlY3RvclZhbHVlOjpUeXBlU3Ry
aW5nPihmdW5jdGlvbk5hbWVQb3MtPnNlY29uZC5nZXQoKSk7CiAgICB9CiAgICB7CiAgICAgICAg
SW5zcGVjdG9yT2JqZWN0OjppdGVyYXRvciBsb2NhdGlvblBvczsKICAgICAgICBsb2NhdGlvblBv
cyA9IG9iamVjdC0+ZmluZCgibG9jYXRpb24iKTsKICAgICAgICBBU1NFUlQobG9jYXRpb25Qb3Mg
IT0gb2JqZWN0LT5lbmQoKSk7CiAgICAgICAgVHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlv
bjo6YXNzZXJ0Q29ycmVjdFZhbHVlKGxvY2F0aW9uUG9zLT5zZWNvbmQuZ2V0KCkpOwogICAgfQog
ICAgewogICAgICAgIEluc3BlY3Rvck9iamVjdDo6aXRlcmF0b3Igc2NvcGVDaGFpblBvczsKICAg
ICAgICBzY29wZUNoYWluUG9zID0gb2JqZWN0LT5maW5kKCJzY29wZUNoYWluIik7CiAgICAgICAg
QVNTRVJUKHNjb3BlQ2hhaW5Qb3MgIT0gb2JqZWN0LT5lbmQoKSk7CiAgICAgICAgVHlwZUJ1aWxk
ZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6U2NvcGU+Ojphc3NlcnRDb3JyZWN0VmFs
dWUoc2NvcGVDaGFpblBvcy0+c2Vjb25kLmdldCgpKTsKICAgIH0KICAgIHsKICAgICAgICBJbnNw
ZWN0b3JPYmplY3Q6Oml0ZXJhdG9yIHRoaXNQb3M7CiAgICAgICAgdGhpc1BvcyA9IG9iamVjdC0+
ZmluZCgidGhpcyIpOwogICAgICAgIEFTU0VSVCh0aGlzUG9zICE9IG9iamVjdC0+ZW5kKCkpOwog
ICAgICAgIFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q6OmFzc2VydENvcnJlY3RW
YWx1ZSh0aGlzUG9zLT5zZWNvbmQuZ2V0KCkpOwogICAgfQogICAgaW50IGZvdW5kUHJvcGVydGll
c0NvdW50ID0gNTsKICAgIEFTU0VSVChmb3VuZFByb3BlcnRpZXNDb3VudCA9PSBvYmplY3QtPnNp
emUoKSk7Cn0KI2VuZGlmIC8vIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQoKCiNpZiBFTkFC
TEUoSkFWQVNDUklQVF9ERUJVR0dFUikKdm9pZCBUeXBlQnVpbGRlcjo6RGVidWdnZXI6OlNjb3Bl
OjpUeXBlOjphc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKQp7CiAgICBX
VEY6OlN0cmluZyBzOwogICAgYm9vbCBjYXN0X3JlcyA9IHZhbHVlLT5hc1N0cmluZygmcyk7CiAg
ICBBU1NFUlQoY2FzdF9yZXMpOwogICAgQVNTRVJUKHMgPT0gImdsb2JhbCIgfHwgcyA9PSAibG9j
YWwiIHx8IHMgPT0gIndpdGgiIHx8IHMgPT0gImNsb3N1cmUiIHx8IHMgPT0gImNhdGNoIik7Cn0K
I2VuZGlmIC8vIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQoKCiNpZiBFTkFCTEUoSkFWQVND
UklQVF9ERUJVR0dFUikKdm9pZCBUeXBlQnVpbGRlcjo6RGVidWdnZXI6OlNjb3BlOjphc3NlcnRD
b3JyZWN0VmFsdWUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKQp7CiAgICBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiBvYmplY3Q7CiAgICBib29sIGNhc3RSZXMgPSB2YWx1ZS0+YXNPYmplY3QoJm9iamVj
dCk7CiAgICBBU1NFUlRfVU5VU0VEKGNhc3RSZXMsIGNhc3RSZXMpOwogICAgewogICAgICAgIElu
c3BlY3Rvck9iamVjdDo6aXRlcmF0b3IgdHlwZVBvczsKICAgICAgICB0eXBlUG9zID0gb2JqZWN0
LT5maW5kKCJ0eXBlIik7CiAgICAgICAgQVNTRVJUKHR5cGVQb3MgIT0gb2JqZWN0LT5lbmQoKSk7
CiAgICAgICAgVHlwZTo6YXNzZXJ0Q29ycmVjdFZhbHVlKHR5cGVQb3MtPnNlY29uZC5nZXQoKSk7
CiAgICB9CiAgICB7CiAgICAgICAgSW5zcGVjdG9yT2JqZWN0OjppdGVyYXRvciBvYmplY3RQb3M7
CiAgICAgICAgb2JqZWN0UG9zID0gb2JqZWN0LT5maW5kKCJvYmplY3QiKTsKICAgICAgICBBU1NF
UlQob2JqZWN0UG9zICE9IG9iamVjdC0+ZW5kKCkpOwogICAgICAgIFR5cGVCdWlsZGVyOjpSdW50
aW1lOjpSZW1vdGVPYmplY3Q6OmFzc2VydENvcnJlY3RWYWx1ZShvYmplY3RQb3MtPnNlY29uZC5n
ZXQoKSk7CiAgICB9CiAgICBpbnQgZm91bmRQcm9wZXJ0aWVzQ291bnQgPSAyOwogICAgQVNTRVJU
KGZvdW5kUHJvcGVydGllc0NvdW50ID09IG9iamVjdC0+c2l6ZSgpKTsKfQojZW5kaWYgLy8gRU5B
QkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCgoKI2lmIEVOQUJMRShXRUJHTCkKdm9pZCBUeXBlQnVp
bGRlcjo6V2ViR0w6OkNhbGw6OmFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFs
dWUpCnsKICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG9iamVjdDsKICAgIGJvb2wgY2FzdFJl
cyA9IHZhbHVlLT5hc09iamVjdCgmb2JqZWN0KTsKICAgIEFTU0VSVF9VTlVTRUQoY2FzdFJlcywg
Y2FzdFJlcyk7CiAgICB7CiAgICAgICAgSW5zcGVjdG9yT2JqZWN0OjppdGVyYXRvciBmdW5jdGlv
bk5hbWVQb3M7CiAgICAgICAgZnVuY3Rpb25OYW1lUG9zID0gb2JqZWN0LT5maW5kKCJmdW5jdGlv
bk5hbWUiKTsKICAgICAgICBBU1NFUlQoZnVuY3Rpb25OYW1lUG9zICE9IG9iamVjdC0+ZW5kKCkp
OwogICAgICAgIFJ1bnRpbWVDYXN0SGVscGVyOjphc3NlcnRUeXBlPEluc3BlY3RvclZhbHVlOjpU
eXBlU3RyaW5nPihmdW5jdGlvbk5hbWVQb3MtPnNlY29uZC5nZXQoKSk7CiAgICB9CiAgICBpbnQg
Zm91bmRQcm9wZXJ0aWVzQ291bnQgPSAxOwogICAgQVNTRVJUKGZvdW5kUHJvcGVydGllc0NvdW50
ID09IG9iamVjdC0+c2l6ZSgpKTsKfQojZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQoKCiNpZiBFTkFC
TEUoV0VCR0wpCnZvaWQgVHlwZUJ1aWxkZXI6OldlYkdMOjpUcmFjZUxvZzo6YXNzZXJ0Q29ycmVj
dFZhbHVlKEluc3BlY3RvclZhbHVlKiB2YWx1ZSkKewogICAgUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4gb2JqZWN0OwogICAgYm9vbCBjYXN0UmVzID0gdmFsdWUtPmFzT2JqZWN0KCZvYmplY3QpOwog
ICAgQVNTRVJUX1VOVVNFRChjYXN0UmVzLCBjYXN0UmVzKTsKICAgIHsKICAgICAgICBJbnNwZWN0
b3JPYmplY3Q6Oml0ZXJhdG9yIGlkUG9zOwogICAgICAgIGlkUG9zID0gb2JqZWN0LT5maW5kKCJp
ZCIpOwogICAgICAgIEFTU0VSVChpZFBvcyAhPSBvYmplY3QtPmVuZCgpKTsKICAgICAgICBSdW50
aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0VHlwZTxJbnNwZWN0b3JWYWx1ZTo6VHlwZVN0cmluZz4oaWRQ
b3MtPnNlY29uZC5nZXQoKSk7CiAgICB9CiAgICB7CiAgICAgICAgSW5zcGVjdG9yT2JqZWN0Ojpp
dGVyYXRvciBjYWxsc1BvczsKICAgICAgICBjYWxsc1BvcyA9IG9iamVjdC0+ZmluZCgiY2FsbHMi
KTsKICAgICAgICBBU1NFUlQoY2FsbHNQb3MgIT0gb2JqZWN0LT5lbmQoKSk7CiAgICAgICAgVHlw
ZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpXZWJHTDo6Q2FsbD46OmFzc2VydENvcnJlY3RW
YWx1ZShjYWxsc1Bvcy0+c2Vjb25kLmdldCgpKTsKICAgIH0KICAgIGludCBmb3VuZFByb3BlcnRp
ZXNDb3VudCA9IDI7CiAgICBBU1NFUlQoZm91bmRQcm9wZXJ0aWVzQ291bnQgPT0gb2JqZWN0LT5z
aXplKCkpOwp9CiNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCgoKCgojZW5kaWYgLy8gIUFTU0VSVF9E
SVNBQkxFRAoKfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQoKI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNU
T1IpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159634</attachid>
            <date>2012-08-21 00:41:58 -0700</date>
            <delta_ts>2012-08-21 16:09:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94511-20120821104117.patch</filename>
            <type>text/plain</type>
            <size>4999</size>
            <attacher name="Thiago Marcos P. Santos">tmpsantos</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2MTM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmUyM2ZiMDkxMDYzNWFh
MzMwNzA0ZjhlMTY1ZDY0NDBiZmVlYWU1ZC4uYjRiZThlZGFmZGMyYjJmOWJlNTkwODhjZmNjMTdm
ODMwZjI0YjNmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTA4LTIxICBUaGlh
Z28gTWFyY29zIFAuIFNhbnRvcyAgPHRoaWFnby5zYW50b3NAaW50ZWwuY29tPgorCisgICAgICAg
IENvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHk6IEdlbmVyYXRlIGd1YXJkcyBmb3IgdHlwZSB2YWxp
ZGF0b3JzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
NDUxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZp
eCByZWdyZXNzaW9uIHdoZW4gYnVpbGRpbmcgZGVidWcgYW5kIG9uZSBvZiB0aGUgZ2VuZXJhdGVk
IHR5cGVzIGlzCisgICAgICAgIGRpc2FibGVkIGJ5IGEgY29tcGlsZSBmbGFnLiBXZSBzaG91bGQg
Z2VuZXJhdGUgZ3VhcmRzIGZvciB0aGVzZSB0eXBlCisgICAgICAgIHZhbGlkYXRvcnMgdGhlIHNh
bWUgd2F5IGFzIHdlIGFyZSBkb2luZyBvbiB0aGUgaW5jbHVkZSBoZWFkZXJzLgorCisgICAgICAg
ICogaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHk6CisgICAgICAgIChUeXBlQmlu
ZGluZ3MuY3JlYXRlX3R5cGVfZGVjbGFyYXRpb25fLkVudW1CaW5kaW5nLmdldF9jb2RlX2dlbmVy
YXRvci5Db2RlR2VuZXJhdG9yLmdlbmVyYXRlX3R5cGVfYnVpbGRlcik6CisKIDIwMTItMDgtMjAg
IEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtWOF0gTW92
ZSBoYW5kbGVPdXRPZk1lbW9yeSgpIGZyb20gVjhQcm94eSB0byBWOEJpbmRpbmcKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5IGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKaW5kZXgg
ODE3ZWQwYjQ2ZmZjZjYyNTgyMThjYzJhYTc3YTNjNTg0NjM5YzEyOS4uZjQ2ZWQzNTVmMWY0YTk3
NjdlYzQ2NzAwNmJmZTM2NDBmNDI1NzcwZiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKQEAgLTEsNSArMSw2IEBACiAjIS91c3Iv
YmluL2VudiBweXRob24KICMgQ29weXJpZ2h0IChjKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoYykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTkw
OSw2ICs5MTAsMTIgQEAgY2xhc3MgVHlwZUJpbmRpbmdzOgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgd3JpdGVyLmFwcGVuZCgiI2VuZGlmICAvLyAlc1xuIiAlIFZBTElEQVRP
Ul9JRkRFRl9OQU1FKQogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxp
ZGF0b3Jfd3JpdGVyID0gZ2VuZXJhdGVfY29udGV4dC52YWxpZGF0b3Jfd3JpdGVyCisKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbl9maXhlcyA9IERvbWFpbk5hbWVG
aXhlcy5nZXRfZml4ZWRfZGF0YShjb250ZXh0X2RvbWFpbl9uYW1lKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZG9tYWluX2d1YXJkID0gZG9tYWluX2ZpeGVzLmdldF9ndWFy
ZCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBkb21haW5fZ3VhcmQ6
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tYWluX2d1YXJkLmdl
bmVyYXRlX29wZW4odmFsaWRhdG9yX3dyaXRlcikKKwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdmFsaWRhdG9yX3dyaXRlci5uZXdsaW5lKCJ2b2lkICVzJXM6OmFzc2VydENv
cnJlY3RWYWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpXG4iICUgKGhlbHBlci5mdWxsX25hbWVf
cHJlZml4X2Zvcl9pbXBsLCBlbnVtX25hbWUpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmFsaWRhdG9yX3dyaXRlci5uZXdsaW5lKCJ7XG4iKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yX3dyaXRlci5uZXdsaW5lKCIgICAgV1RGOjpT
dHJpbmcgcztcbiIpCkBAIC05MjAsOCArOTI3LDEyIEBAIGNsYXNzIFR5cGVCaW5kaW5nczoKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bV9wb3MgPSBFbnVt
Q29uc3RhbnRzLmFkZF9jb25zdGFudChlbnVtX2l0ZW0pCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbl9saXN0LmFwcGVuZCgicyA9PSBcIiVzXCIi
ICUgZW51bV9pdGVtKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZh
bGlkYXRvcl93cml0ZXIubmV3bGluZSgiICAgIEFTU0VSVCglcyk7XG4iICUgam9pbihjb25kaXRp
b25fbGlzdCwgIiB8fCAiKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZh
bGlkYXRvcl93cml0ZXIubmV3bGluZSgifVxuXG5cbiIpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2YWxpZGF0b3Jfd3JpdGVyLm5ld2xpbmUoIn1cbiIpCiAKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRvbWFpbl9ndWFyZDoKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21haW5fZ3VhcmQuZ2VuZXJhdGVfY2xvc2Uo
dmFsaWRhdG9yX3dyaXRlcikKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmFsaWRhdG9yX3dyaXRlci5uZXdsaW5lKCJcblxuIikKIAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB3cml0ZXIubmV3bGluZSgifTsgLy8gc3RydWN0ICIpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHdyaXRlci5hcHBlbmQoZW51bV9uYW1lKQpAQCAtMTI4OCw2ICsx
Mjk5LDEyIEBAIGNsYXNzIFR5cGVCaW5kaW5nczoKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNsb3NlZF9maWVsZF9zZXQgPSAoY29udGV4dF9kb21haW5fbmFtZSArICIuIiAr
IGNsYXNzX25hbWUpIG5vdCBpbiBUWVBFU19XSVRIX09QRU5fRklFTERfTElTVF9TRVQKIAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yX3dyaXRlciA9IGdlbmVy
YXRlX2NvbnRleHQudmFsaWRhdG9yX3dyaXRlcgorCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkb21haW5fZml4ZXMgPSBEb21haW5OYW1lRml4ZXMuZ2V0X2ZpeGVkX2RhdGEo
Y29udGV4dF9kb21haW5fbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRvbWFpbl9ndWFyZCA9IGRvbWFpbl9maXhlcy5nZXRfZ3VhcmQoKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgZG9tYWluX2d1YXJkOgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbl9ndWFyZC5nZW5lcmF0ZV9vcGVuKHZhbGlkYXRv
cl93cml0ZXIpCisKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRv
cl93cml0ZXIubmV3bGluZSgidm9pZCAlcyVzOjphc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9y
VmFsdWUqIHZhbHVlKVxuIiAlIChoZWxwZXIuZnVsbF9uYW1lX3ByZWZpeF9mb3JfaW1wbCwgY2xh
c3NfbmFtZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3Jf
d3JpdGVyLm5ld2xpbmUoIntcbiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2YWxpZGF0b3Jfd3JpdGVyLm5ld2xpbmUoIiAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBv
YmplY3Q7XG4iKQpAQCAtMTMxOSw3ICsxMzM2LDEyIEBAIGNsYXNzIFR5cGVCaW5kaW5nczoKIAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgY2xvc2VkX2ZpZWxkX3NldDoK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3Jfd3JpdGVy
Lm5ld2xpbmUoIiAgICBBU1NFUlQoZm91bmRQcm9wZXJ0aWVzQ291bnQgPT0gb2JqZWN0LT5zaXpl
KCkpO1xuIikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcl93
cml0ZXIubmV3bGluZSgifVxuXG5cbiIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2YWxpZGF0b3Jfd3JpdGVyLm5ld2xpbmUoIn1cbiIpCisKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIGRvbWFpbl9ndWFyZDoKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkb21haW5fZ3VhcmQuZ2VuZXJhdGVfY2xvc2UodmFsaWRhdG9y
X3dyaXRlcikKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9y
X3dyaXRlci5uZXdsaW5lKCJcblxuIikKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiBpc19vcGVuX3R5cGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
cHBfd3JpdGVyID0gZ2VuZXJhdGVfY29udGV4dC5jcHBfd3JpdGVyCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>