<?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>83472</bug_id>
          
          <creation_ts>2012-04-09 08:26:19 -0700</creation_ts>
          <short_desc>Implement Dictionary.h on mac</short_desc>
          <delta_ts>2012-04-12 10:24:01 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.7</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>80477</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jon Lee">jonlee</reporter>
          <assigned_to name="Jon Lee">jonlee</assigned_to>
          <cc>abarth</cc>
    
    <cc>benjamin</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>598290</commentid>
    <comment_count>0</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-04-09 08:26:19 -0700</bug_when>
    <thetext>As opposed to JSDictionary used for generated bindings, Dictionary exposes JS dictionaries to WebCore objects. The interface differs between the two, so we can&apos;t have JSDictionary work for both without having a confusing interface, and also exposing unneeded information to the WebCore layer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598292</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2012-04-09 08:26:37 -0700</bug_when>
    <thetext>&lt;rdar://problem/11209766&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600047</commentid>
    <comment_count>2</comment_count>
      <attachid>136625</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-04-10 22:56:56 -0700</bug_when>
    <thetext>Created attachment 136625
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600054</commentid>
    <comment_count>3</comment_count>
      <attachid>136625</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-04-10 23:17:52 -0700</bug_when>
    <thetext>Comment on attachment 136625
Patch

Attachment 136625 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12384652</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600071</commentid>
    <comment_count>4</comment_count>
      <attachid>136625</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-04-10 23:48:26 -0700</bug_when>
    <thetext>Comment on attachment 136625
Patch

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

&gt; Source/WebCore/bindings/js/Dictionary.h:42
&gt; +    Dictionary()

Is this constructor needed?

&gt; Source/WebCore/bindings/js/Dictionary.h:45
&gt; +    { }

Nit: &apos;{&apos; and &apos;}&apos; for each line, please

&gt; Source/WebCore/bindings/js/Dictionary.h:50
&gt; +    { }

Nit: Ditto.

&gt; Source/WebCore/bindings/js/Dictionary.h:68
&gt; +    if (!m_isValid)
&gt; +        return false;

Maybe we want to move this check to JSDictionary.h, like this:

bool JSDictionary::tryGetProperty(...) {
    if (!m_initializerObject)
        return false;
    ...;
}

Then you can remove m_isValid from Dictionary.h.

&gt; Source/WebCore/bindings/js/Dictionary.h:71
&gt; +    bool noExceptions = m_dictionary.tryGetProperty(propertyName.ascii().data(), result, getPropertyResult);

Why do we need both &apos;getPropertyResult&apos; and &apos;noExceptions&apos;? Isn&apos;t it possible to have tryGetProperty return &apos;getPropertyResult&apos; as a return value? (If the return value is &apos;ExceptionThrown&apos;, it means that there is an exception.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600133</commentid>
    <comment_count>5</comment_count>
      <attachid>136625</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-04-11 01:40:40 -0700</bug_when>
    <thetext>Comment on attachment 136625
Patch

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

&gt;&gt; Source/WebCore/bindings/js/Dictionary.h:42
&gt;&gt; +    Dictionary()
&gt; 
&gt; Is this constructor needed?

The existence of the default constructor in the v8 implementation led me to believe this was required. Obviously nobody is using Dictionary right now except IDB, so this could be removed until needed.

&gt;&gt; Source/WebCore/bindings/js/Dictionary.h:50
&gt;&gt; +    { }
&gt; 
&gt; Nit: Ditto.

I didn&apos;t think inline empty functions or constructors required this. The indenting for initializing the variables is wrong though.

&gt;&gt; Source/WebCore/bindings/js/Dictionary.h:68
&gt;&gt; +        return false;
&gt; 
&gt; Maybe we want to move this check to JSDictionary.h, like this:
&gt; 
&gt; bool JSDictionary::tryGetProperty(...) {
&gt;     if (!m_initializerObject)
&gt;         return false;
&gt;     ...;
&gt; }
&gt; 
&gt; Then you can remove m_isValid from Dictionary.h.

I think I might have to expose the exec state now that i&apos;m trying to use it with notifications, so it&apos;s possible i can do the check that way and avoid adding this variable.

&gt;&gt; Source/WebCore/bindings/js/Dictionary.h:71
&gt;&gt; +    bool noExceptions = m_dictionary.tryGetProperty(propertyName.ascii().data(), result, getPropertyResult);
&gt; 
&gt; Why do we need both &apos;getPropertyResult&apos; and &apos;noExceptions&apos;? Isn&apos;t it possible to have tryGetProperty return &apos;getPropertyResult&apos; as a return value? (If the return value is &apos;ExceptionThrown&apos;, it means that there is an exception.)

I didn&apos;t want to change the existing signatures in JSDictionary because the bindings generation code relies on it, and I didn&apos;t want this bug to include having to completely overhaul that. I was afraid about making the API for JSDictionary inconsistent and confusing, but I think I found a way to make it work.

This patch is also missing new expected results for the bindings tests, which I will include in a forthcoming patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600134</commentid>
    <comment_count>6</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-04-11 01:46:18 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; &gt;&gt; Source/WebCore/bindings/js/Dictionary.h:50
&gt; &gt;&gt; +    { }
&gt; &gt; 
&gt; &gt; Nit: Ditto.
&gt; 
&gt; I didn&apos;t think inline empty functions or constructors required this. The indenting for initializing the variables is wrong though.

Nit: Please look at the coding style guide (&quot;Other punctuations&quot; 1.): http://www.webkit.org/coding/coding-style.html

I think whether inline or not does not matter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601017</commentid>
    <comment_count>7</comment_count>
      <attachid>136852</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-04-12 01:57:16 -0700</bug_when>
    <thetext>Created attachment 136852
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601022</commentid>
    <comment_count>8</comment_count>
      <attachid>136852</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-04-12 02:02:55 -0700</bug_when>
    <thetext>Comment on attachment 136852
Patch

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

&gt; Source/WebCore/bindings/js/JSDictionary.h:120
&gt; +bool JSDictionary::valueForProperty(const char* propertyName, Result&amp; finalResult) const

Nit: Maybe this can be renamed to JSDictionary::get(), for naming consistency with Dictionary::get(). It&apos;s up to you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601324</commentid>
    <comment_count>9</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-04-12 10:24:01 -0700</bug_when>
    <thetext>Committed r114001: &lt;http://trac.webkit.org/changeset/114001&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136625</attachid>
            <date>2012-04-10 22:56:56 -0700</date>
            <delta_ts>2012-04-12 01:57:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83472-20120410225901.patch</filename>
            <type>text/plain</type>
            <size>15358</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzODI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWMyN2QxY2EzNGE3ZTY5
YTc0NGNhMDI3YzA3MmY1YTJlZmYwYWNiYi4uOTQ3NGE2MThkOGJiMGQ3NjgwNmQ3NDBkOGZmNzNj
MjI5NWZhZjZjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEyLTA0LTExICBKb24g
TGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgRGljdGlvbmFyeS5o
IG9uIG1hYyAoODM0NzIpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04MzQ3MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTEyMDk3NjY+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQSBkaWZmZXJlbmNlIGJl
dHdlZW4gRGljdGlvbmFyeSBhbmQgSlNEaWN0aW9uYXJ5IG1ha2VzIGl0IGRpZmZpY3VsdCB0byBt
ZXJnZSB0aGUgdHdvIHRvZ2V0aGVyCisgICAgICAgIHdpdGhvdXQgbWFraW5nIGEgY29uZnVzaW5n
IEFQSS4gVGhlIGJvb2xlYW4gcmV0dXJuZWQgYnkgRGljdGlvbmFyeTo6Z2V0KCkgcmVwcmVzZW50
cyB3aGV0aGVyIHRoZQorICAgICAgICBwcm9wZXJ0eSB3YXMgZm91bmQuIFRoZSBib29sZWFuIHJl
dHVybmVkIGJ5IEpTRGljdGlvbmFyeTo6dHJ5R2V0UHJvcGVydHkoKSByZXByZXNlbnRzIHdoZXRo
ZXIgYW4KKyAgICAgICAgZXhjZXB0aW9uIHdhcyB0aHJvd24uCisKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZCBEaWN0aW9uYXJ5LmguCisKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9EaWN0aW9uYXJ5Lmg6IExldmVyYWdlIEpTRGljdGlvbmFyeSdzIGZ1bmN0
aW9uYWxpdHkgdG8gb2J0YWluIHRoZSBkYXRhLiBUaGUgdHJ5R2V0UHJvcGVydHkoKQorICAgICAg
ICBtZXRob2RzIGluIEpTRGljdGlvbmFyeSBhcmUgbm9uLWNvbnN0IGJlY2F1c2Ugb2YgaXRzIGFj
Y2VzcyB0byB0aGUgZXhlY3V0CisgICAgICAgIChXZWJDb3JlOjpEaWN0aW9uYXJ5Ojppc09iamVj
dCk6IFN0aWxsIG1hcmsgYW4gdW5pbXBsZW1lbnRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpY3Rp
b25hcnk6OmlzVW5kZWZpbmVkT3JOdWxsKTogU3RpbGwgbWFyayBhbiB1bmltcGxlbWVudGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RGljdGlvbmFyeTo6Z2V0V2l0aFVuZGVmaW5lZE9yTnVsbENoZWNr
KTogU3RpbGwgbWFyayBhbiB1bmltcGxlbWVudGVkLgorCisgICAgICAgIFRvIHRha2UgYWR2YW50
YWdlIG9mIEpTRGljdGlvbmFyeSdzIGN1cnJlbnQgZnVuY3Rpb25hbGl0eSwgd2UgaGF2ZSB0byBl
eHBvc2UgdGhlIEdldFByb3BlcnR5UmVzdWx0CisgICAgICAgIGVudW0sIGFuZCBhZGQgYWRkaXRp
b25hbCBmdW5jdGlvbnMgdG8gb2J0YWluIHRoYXQgZW51bS4gRGljdGlvbmFyeSdzIHJldHVybiB2
YWx1ZSByZWZsZWN0cyB3aGV0aGVyIHRoZQorICAgICAgICBwcm9wZXJ0eSB3YXMgZm91bmQsIGFu
ZCBubyBleGNlcHRpb25zIHdlcmUgdGhyb3duLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRGlj
dGlvbmFyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RpY3Rpb25hcnk6OnRyeUdldFByb3Bl
cnR5KTogQ29udmVydCB0byBhIGNvbnN0IGZ1bmN0aW9uLgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRGljdGlvbmFyeS5oOgorICAgICAgICAoV2ViQ29yZTo6SlNEaWN0aW9uYXJ5Ojp0cnlHZXRQ
cm9wZXJ0eSk6IENvbnZlcnQgdG8gYSBjb25zdCBmdW5jdGlvbi4KKworICAgICAgICBDaGFuZ2Ug
YmluZGluZ3Mgc2NyaXB0cyB0byB1c2UgRGljdGlvbmFyeSBjb25zdHJ1Y3Rvci4KKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcDogUmVtb3ZlIGNyZWF0ZURpY3Rp
b25hcnlGcm9tVmFsdWUoKS4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0
aWVzLmg6IFJlbW92ZSBjcmVhdGVEaWN0aW9uYXJ5RnJvbVZhbHVlKCkuCisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChKU1ZhbHVlVG9OYXRp
dmUpOiBVcGRhdGUgdG8gcmVtb3ZlIElEQkJpbmRpbmdVdGlsaXRpZXMuaCBkZXBlbmRlbmN5LCBh
bmQgdXNlIERpY3Rpb25hcnkgY29uc3RydWN0b3IuCisKIDIwMTItMDQtMTAgIEFsZXhhbmRyZSBF
bGlhcyAgPGFlbGlhc0Bnb29nbGUuY29tPgogCiAgICAgICAgIEFkZCBnZXN0dXJlIGV2ZW50IGVu
dW1zIGZvciBsb25nLXByZXNzIGFuZCBwaW5jaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGI5NzViZmYwYzgzMWJiNmNhZTMxN2M2
MzUxYTJkZGY1YTBhOTUxZmIuLjM2Y2I2NzJmOTA1NjgxMmQ4MWE5NzM2OTZiNjZlOTA1ZmUzNThl
MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTg1NCw2ICs4NTQsNyBAQAogCQkzMTMxM0Y2NTE0NDNCMzVGMDA2RTJBOTAgLyog
RmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzEzMTNGNjMxNDQzQjM1RTAwNkUyQTkwIC8qIEZpbHRlckVmZmVjdFJl
bmRlcmVyLmNwcCAqLzsgfTsKIAkJMzEzMTNGNjYxNDQzQjM1RjAwNkUyQTkwIC8qIEZpbHRlckVm
ZmVjdFJlbmRlcmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzMTMxM0Y2NDE0NDNCMzVFMDA2RTJBOTAgLyogRmlsdGVyRWZmZWN0UmVuZGVyZXIuaCAq
LzsgfTsKIAkJMzEzOEE5RTUxNDc0NDM0NjAwQjBFRDEyIC8qIFN0eWxlU2hhZGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTM4QTlFNDE0NzQ0MzQ2
MDBCMEVEMTIgLyogU3R5bGVTaGFkZXIuaCAqLzsgfTsKKwkJMzE2MDIzRjAxNTMyQzQwQzAwRDUw
RkY0IC8qIERpY3Rpb25hcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDMxNjAyM0VGMTUzMkM0MEMwMEQ1MEZGNCAvKiBEaWN0aW9uYXJ5LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzE2MTFFNUEwRTFD
NERFMDAwRjZBNTc5IC8qIEpTV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2MTFFNTgwRTFDNERFMDAwRjZB
NTc5IC8qIEpTV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuY3BwICovOyB9OwogCQkzMTYxMUU1QjBF
MUM0REUwMDBGNkE1NzkgLyogSlNXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2MTFFNTkwRTFDNERFMDAwRjZB
NTc5IC8qIEpTV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaCAqLzsgfTsKIAkJMzE2MTFFNjEwRTFD
NEUxNDAwRjZBNTc5IC8qIERPTVdlYktpdENTU1RyYW5zZm9ybVZhbHVlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTYxMUU1RTBFMUM0RTE0MDBGNkE1
NzkgLyogRE9NV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaCAqLzsgfTsKQEAgLTc3NDksNiArNzc1
MCw3IEBACiAJCTMxMzEzRjYzMTQ0M0IzNUUwMDZFMkE5MCAvKiBGaWx0ZXJFZmZlY3RSZW5kZXJl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWx0ZXJFZmZlY3RS
ZW5kZXJlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMzEzRjY0MTQ0M0Iz
NUUwMDZFMkE5MCAvKiBGaWx0ZXJFZmZlY3RSZW5kZXJlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBGaWx0ZXJFZmZlY3RSZW5kZXJlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkzMTM4QTlFNDE0NzQ0MzQ2MDBCMEVEMTIgLyogU3R5bGVTaGFkZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU3R5bGVTaGFkZXIuaDsgcGF0aCA9IHN0eWxl
L1N0eWxlU2hhZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxNjAyM0VGMTUz
MkM0MEMwMEQ1MEZGNCAvKiBEaWN0aW9uYXJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IERpY3Rpb25hcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE2MTFF
NTQwRTFDNEQ0QTAwRjZBNTc5IC8qIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTMxNjExRTU4MEUxQzRERTAwMEY2QTU3OSAvKiBKU1dlYktpdENT
U1RyYW5zZm9ybVZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkzMTYxMUU1OTBFMUM0REUwMDBGNkE1NzkgLyogSlNXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYktpdENTU1RyYW5zZm9y
bVZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTU3Myw2ICsxOTU3NSw3
IEBACiAJCQkJMTRERkIzM0YwQTdERjc2MzAwMThGNzY5IC8qIERlcml2ZWQgU291cmNlcyAqLywK
IAkJCQlCQ0Q1MzM2MzBFRDY4NDg5MDA4ODc0NjggLyogQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlk
ZXIuaCAqLywKIAkJCQk5M0Y4QjMwNjBBMzAwRkVBMDBGNjFBQjggLyogQ29kZUdlbmVyYXRvckpT
LnBtICovLAorCQkJCTMxNjAyM0VGMTUzMkM0MEMwMEQ1MEZGNCAvKiBEaWN0aW9uYXJ5LmggKi8s
CiAJCQkJQkM1M0RBNjExMTQzMTRCRDAwMEQ4MTdFIC8qIERPTU9iamVjdEhhc2hUYWJsZU1hcC5j
cHAgKi8sCiAJCQkJQkM1M0RBNUYxMTQzMTQxQTAwMEQ4MTdFIC8qIERPTU9iamVjdEhhc2hUYWJs
ZU1hcC5oICovLAogCQkJCUJDNTNEQTQ3MTE0MzEzNEQwMDBEODE3RSAvKiBET01XcmFwcGVyV29y
bGQuY3BwICovLApAQCAtMjQ3NDMsNiArMjQ3NDYsNyBAQAogCQkJCUM1QTFFQTdEMTUyQkNGMDgw
MDREMDBCNiAvKiBTaW1wbGlmeU1hcmt1cENvbW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCUNF
REExMkQ3MTUyQ0ExQ0IwMEQ5RTA4RCAvKiBBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTU3NDBFODNEMTUzMkRFMTcwMDc2MDYyOCAvKiBUcmVlU2NvcGVBZGp1c3Rl
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzE2MDIzRjAxNTMyQzQwQzAwRDUwRkY0IC8qIERpY3Rp
b25hcnkuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvRGljdGlvbmFyeS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFy
eS5oCmluZGV4IDFkOTQ0NDVhY2Q5OTkzMTIwYWEyYTllYTMxMTU5MTRjNzZkZGZkZjIuLmNjMzlk
OGI4NTdiMDc5NzVlODBiMzJmZDBiY2M2NWM5N2RjNDI1NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9EaWN0aW9uYXJ5LmgKQEAgLTI2LDQ2ICsyNiw1MiBAQAogI2lmbmRlZiBEaWN0aW9u
YXJ5X2gKICNkZWZpbmUgRGljdGlvbmFyeV9oCiAKLSNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0
VmFsdWUuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0
b21pY1N0cmluZy5oPgorI2luY2x1ZGUgIkpTRGljdGlvbmFyeS5oIgorI2luY2x1ZGUgIk5vdElt
cGxlbWVudGVkLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgSlND
IHsKK2NsYXNzIEpTVmFsdWU7Cit9CiAKLWNsYXNzIERPTVN0cmluZ0xpc3Q7Ci1jbGFzcyBET01X
aW5kb3c7Ci1jbGFzcyBJREJLZXlSYW5nZTsKLWNsYXNzIFNjcmlwdFZhbHVlOwotY2xhc3MgU3Rv
cmFnZTsKLWNsYXNzIFRyYWNrQmFzZTsKK25hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gRklYTUU6
IEltcGxlbWVudC4KIGNsYXNzIERpY3Rpb25hcnkgewogcHVibGljOgotICAgIERpY3Rpb25hcnko
KSB7IH0KKyAgICBEaWN0aW9uYXJ5KCkKKyAgICA6IG1fZGljdGlvbmFyeSgwLCAwKQorICAgICwg
bV9pc1ZhbGlkKGZhbHNlKQorICAgIHsgfQorCisgICAgRGljdGlvbmFyeShKU0M6OkV4ZWNTdGF0
ZSogZXhlYywgSlNDOjpKU1ZhbHVlIHZhbHVlKQorICAgIDogbV9kaWN0aW9uYXJ5KGV4ZWMsIHZh
bHVlLmlzT2JqZWN0KCkgPyB2YWx1ZS5nZXRPYmplY3QoKSA6IDApCisgICAgLCBtX2lzVmFsaWQo
dmFsdWUuaXNPYmplY3QoKSkKKyAgICB7IH0KIAotICAgIGJvb2wgaXNPYmplY3QoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNVbmRlZmluZWRPck51bGwoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQorICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBhIHZhbHVlIHdhcyBmb3VuZCBm
b3IgdGhlIHByb3ZpZGVkIHByb3BlcnR5LgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBSZXN1bHQ+
CisgICAgYm9vbCBnZXQoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIFJlc3VsdCYpIGNvbnN0
OwogCi0gICAgYm9vbCBnZXQoY29uc3QgU3RyaW5nJiwgYm9vbCYpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgYm9vbCBnZXQoY29uc3QgU3RyaW5nJiwgaW50MzJfdCYpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBnZXQoY29uc3QgU3RyaW5nJiwgZG91YmxlJikgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGdldChjb25zdCBTdHJpbmcmLCBTdHJpbmcmKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgZ2V0KGNvbnN0IFN0cmluZyYsIFNjcmlw
dFZhbHVlJikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGdldChjb25zdCBTdHJp
bmcmLCB1bnNpZ25lZCBzaG9ydCYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBn
ZXQoY29uc3QgU3RyaW5nJiwgdW5zaWduZWQmKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAg
IGJvb2wgZ2V0KGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIGxvbmcgbG9uZyYpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBnZXQoY29uc3QgU3RyaW5nJiwgUmVmUHRyPERPTVdpbmRv
dz4mKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgZ2V0KGNvbnN0IFN0cmluZyYs
IFJlZlB0cjxTdG9yYWdlPiYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBnZXQo
Y29uc3QgU3RyaW5nJiwgTWVzc2FnZVBvcnRBcnJheSYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
Ci0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIGJvb2wgZ2V0KGNvbnN0IFN0cmluZyYsIFJl
ZlB0cjxUcmFja0Jhc2U+JikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSNlbmRpZgotICAgIGJv
b2wgZ2V0KGNvbnN0IFN0cmluZyYsIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc09iamVjdCgpIGNvbnN0IHsgbm90SW1wbGVtZW50ZWQo
KTsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1VuZGVmaW5lZE9yTnVsbCgpIGNvbnN0IHsg
bm90SW1wbGVtZW50ZWQoKTsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBnZXRXaXRoVW5kZWZp
bmVkT3JOdWxsQ2hlY2soY29uc3QgU3RyaW5nJiwgU3RyaW5nJikgY29uc3QgeyBub3RJbXBsZW1l
bnRlZCgpOyByZXR1cm4gZmFsc2U7IH0KIAotICAgIGJvb2wgZ2V0V2l0aFVuZGVmaW5lZE9yTnVs
bENoZWNrKGNvbnN0IFN0cmluZyYsIFN0cmluZyYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgSlNEaWN0aW9uYXJ5IG1fZGljdGlvbmFyeTsKKyAgICBib29sIG1faXNWYWxpZDsKIH07CiAK
K3RlbXBsYXRlIDx0eXBlbmFtZSBSZXN1bHQ+Citib29sIERpY3Rpb25hcnk6OmdldChjb25zdCBT
dHJpbmcmIHByb3BlcnR5TmFtZSwgUmVzdWx0JiByZXN1bHQpIGNvbnN0Cit7CisgICAgaWYgKCFt
X2lzVmFsaWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEpTRGljdGlvbmFyeTo6R2V0
UHJvcGVydHlSZXN1bHQgZ2V0UHJvcGVydHlSZXN1bHQ7CisgICAgYm9vbCBub0V4Y2VwdGlvbnMg
PSBtX2RpY3Rpb25hcnkudHJ5R2V0UHJvcGVydHkocHJvcGVydHlOYW1lLmFzY2lpKCkuZGF0YSgp
LCByZXN1bHQsIGdldFByb3BlcnR5UmVzdWx0KTsKKyAgICByZXR1cm4gZ2V0UHJvcGVydHlSZXN1
bHQgPT0gSlNEaWN0aW9uYXJ5OjpQcm9wZXJ0eUZvdW5kICYmIG5vRXhjZXB0aW9uczsKK30KKwog
fQogCiAjZW5kaWYgLy8gRGljdGlvbmFyeV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCmluZGV4IDcyZjQ5Zjg5NWY2MjhlZTE1ZTFi
NTRmNWRlNmQ4OTRhODc1NGVkZGMuLmNkYzBjNDg4NDE1Y2EyMzM0MmI0MWY0ZGU1NTMxOWVhN2Nj
OTQ0OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdV
dGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdV
dGlsaXRpZXMuY3BwCkBAIC0yNiw5ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNp
ZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLQogI2luY2x1ZGUgIklEQkJpbmRpbmdVdGlsaXRp
ZXMuaCIKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogCiAjaW5jbHVkZSAiSURCS2V5Lmgi
CiAKQEAgLTQ2LDEyICs0NCw2IEBAIFBhc3NSZWZQdHI8SURCS2V5PiBjcmVhdGVJREJLZXlGcm9t
VmFsdWUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSB2YWx1CiAgICAgcmV0dXJu
IDA7CiB9CiAKLURpY3Rpb25hcnkgY3JlYXRlRGljdGlvbmFyeUZyb21WYWx1ZShKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6SlNWYWx1ZSkKLXsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IERhdGFiYXNl
IE9wdGlvbnMuCi0gICAgcmV0dXJuIERpY3Rpb25hcnkoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmgKaW5kZXggMTg3ODdh
NTQ5ZmIyZDM0MzVlODYwNzUzZWY0NjliNjFjOWI2MjhmNy4uOGUwYzljNWNkMDQ2YTg0MDI3M2Fj
ZmI2YjQwMWMwMTUxNTQzOTMzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSURCQmluZGluZ1V0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0lEQkJpbmRpbmdVdGlsaXRpZXMuaApAQCAtMzcsNyArMzcsNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBJREJLZXk7CiAKIFBhc3NSZWZQdHI8SURCS2V5PiBjcmVhdGVJREJLZXlGcm9t
VmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUpOwotRGljdGlvbmFyeSBjcmVhdGVE
aWN0aW9uYXJ5RnJvbVZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlKTsKIAogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcAppbmRleCBkNzkx
M2ZhMTYzYTM4M2QxM2IxZTU5YTNjZDk1NjBhMmE1MjU1N2E5Li5lYWQyOTdhMmM3NGYxYzJmYzM4
OGU3ZjIzZmE2YTE2YWJlNDgwMjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RpY3Rpb25hcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RGljdGlvbmFyeS5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1KU0RpY3Rpb25hcnk6OkdldFByb3BlcnR5UmVzdWx0IEpT
RGljdGlvbmFyeTo6dHJ5R2V0UHJvcGVydHkoY29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBKU1Zh
bHVlJiBmaW5hbFJlc3VsdCkKK0pTRGljdGlvbmFyeTo6R2V0UHJvcGVydHlSZXN1bHQgSlNEaWN0
aW9uYXJ5Ojp0cnlHZXRQcm9wZXJ0eShjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUm
IGZpbmFsUmVzdWx0KSBjb25zdAogewogICAgIElkZW50aWZpZXIgaWRlbnRpZmllcihtX2V4ZWMs
IHByb3BlcnR5TmFtZSk7CiAgICAgUHJvcGVydHlTbG90IHNsb3QobV9pbml0aWFsaXplck9iamVj
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnku
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5oCmluZGV4IGZiOGVh
MDAzYWYwNzNjYmVhYjRjYjE5ZDk2NjM0ODJhMDk3YjViOTIuLjQwOTU4ZDU3OGY1YjhiYmNhMzhk
YmVlM2M4NWJiMmNhZTBlMmZkOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRGljdGlvbmFyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGlj
dGlvbmFyeS5oCkBAIC00OCwxMSArNDgsMjIgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKKyAg
ICBlbnVtIEdldFByb3BlcnR5UmVzdWx0IHsKKyAgICAgICAgRXhjZXB0aW9uVGhyb3duLAorICAg
ICAgICBOb1Byb3BlcnR5Rm91bmQsCisgICAgICAgIFByb3BlcnR5Rm91bmQKKyAgICB9OworCisg
ICAgLy8gUmV0dXJucyBmYWxzZSBpZiBhbnkgZXhjZXB0aW9ucyB3ZXJlIHRocm93bi4KICAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgUmVzdWx0PgotICAgIGJvb2wgdHJ5R2V0UHJvcGVydHkoY29uc3Qg
Y2hhciogcHJvcGVydHlOYW1lLCBSZXN1bHQmKTsKKyAgICBib29sIHRyeUdldFByb3BlcnR5KGNv
bnN0IGNoYXIqIHByb3BlcnR5TmFtZSwgUmVzdWx0JikgY29uc3Q7CisgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFJlc3VsdD4KKyAgICBib29sIHRyeUdldFByb3BlcnR5KGNvbnN0IGNoYXIqIHByb3Bl
cnR5TmFtZSwgUmVzdWx0JiwgR2V0UHJvcGVydHlSZXN1bHQmKSBjb25zdDsKIAogICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBSZXN1bHQ+Ci0gICAgYm9vbCB0cnlHZXRQcm9wZXJ0
eShjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsIFQqIGNvbnRleHQsIHZvaWQgKCpzZXR0ZXIpKFQq
IGNvbnRleHQsIGNvbnN0IFJlc3VsdCYpKTsKKyAgICBib29sIHRyeUdldFByb3BlcnR5KGNvbnN0
IGNoYXIqIHByb3BlcnR5TmFtZSwgVCogY29udGV4dCwgdm9pZCAoKnNldHRlcikoVCogY29udGV4
dCwgY29uc3QgUmVzdWx0JikpIGNvbnN0OworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBl
bmFtZSBSZXN1bHQ+CisgICAgYm9vbCB0cnlHZXRQcm9wZXJ0eShjb25zdCBjaGFyKiBwcm9wZXJ0
eU5hbWUsIFQqIGNvbnRleHQsIHZvaWQgKCpzZXR0ZXIpKFQqIGNvbnRleHQsIGNvbnN0IFJlc3Vs
dCYpLCBHZXRQcm9wZXJ0eVJlc3VsdCYpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBSZXN1bHQ+CkBAIC02MywxMiArNzQsNyBAQCBwcml2YXRlOgogICAgICAgICB9
CiAgICAgfTsKIAotICAgIGVudW0gR2V0UHJvcGVydHlSZXN1bHQgewotICAgICAgICBFeGNlcHRp
b25UaHJvd24sCi0gICAgICAgIE5vUHJvcGVydHlGb3VuZCwKLSAgICAgICAgUHJvcGVydHlGb3Vu
ZAotICAgIH07Ci0gICAgR2V0UHJvcGVydHlSZXN1bHQgdHJ5R2V0UHJvcGVydHkoY29uc3QgY2hh
ciogcHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUmKTsKKyAgICBHZXRQcm9wZXJ0eVJlc3VsdCB0
cnlHZXRQcm9wZXJ0eShjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSYpIGNv
bnN0OwogCiAgICAgc3RhdGljIHZvaWQgY29udmVydFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpKU1ZhbHVlLCBib29sJiByZXN1bHQpOwogICAgIHN0YXRpYyB2b2lkIGNvbnZlcnRWYWx1ZShK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgaW50JiByZXN1bHQpOwpAQCAtOTcsMTAgKzEw
MywxOCBAQCBwcml2YXRlOgogCiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBSZXN1
bHQ+Ci1ib29sIEpTRGljdGlvbmFyeTo6dHJ5R2V0UHJvcGVydHkoY29uc3QgY2hhciogcHJvcGVy
dHlOYW1lLCBUKiBjb250ZXh0LCB2b2lkICgqc2V0dGVyKShUKiBjb250ZXh0LCBjb25zdCBSZXN1
bHQmKSkKK2Jvb2wgSlNEaWN0aW9uYXJ5Ojp0cnlHZXRQcm9wZXJ0eShjb25zdCBjaGFyKiBwcm9w
ZXJ0eU5hbWUsIFQqIGNvbnRleHQsIHZvaWQgKCpzZXR0ZXIpKFQqIGNvbnRleHQsIGNvbnN0IFJl
c3VsdCYpKSBjb25zdAoreworICAgIEdldFByb3BlcnR5UmVzdWx0IGdldFByb3BlcnR5UmVzdWx0
OworICAgIHJldHVybiB0cnlHZXRQcm9wZXJ0eShwcm9wZXJ0eU5hbWUsIGNvbnRleHQsIHNldHRl
ciwgZ2V0UHJvcGVydHlSZXN1bHQpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgUmVzdWx0PgorYm9vbCBKU0RpY3Rpb25hcnk6OnRyeUdldFByb3BlcnR5KGNvbnN0IGNoYXIq
IHByb3BlcnR5TmFtZSwgVCogY29udGV4dCwgdm9pZCAoKnNldHRlcikoVCogY29udGV4dCwgY29u
c3QgUmVzdWx0JiksIEdldFByb3BlcnR5UmVzdWx0JiBnZXRQcm9wZXJ0eVJlc3VsdCkgY29uc3QK
IHsKICAgICBKU0M6OkpTVmFsdWUgdmFsdWU7Ci0gICAgc3dpdGNoICh0cnlHZXRQcm9wZXJ0eShw
cm9wZXJ0eU5hbWUsIHZhbHVlKSkgeworICAgIGdldFByb3BlcnR5UmVzdWx0ID0gdHJ5R2V0UHJv
cGVydHkocHJvcGVydHlOYW1lLCB2YWx1ZSk7CisgICAgc3dpdGNoIChnZXRQcm9wZXJ0eVJlc3Vs
dCkgewogICAgIGNhc2UgRXhjZXB0aW9uVGhyb3duOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgY2FzZSBQcm9wZXJ0eUZvdW5kOiB7CkBAIC0xMjEsOSArMTM1LDE2IEBAIGJvb2wgSlNEaWN0
aW9uYXJ5Ojp0cnlHZXRQcm9wZXJ0eShjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsIFQqIGNvbnRl
eHQsIHZvaWQgKCpzCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBSZXN1bHQ+Ci1ib29sIEpTRGlj
dGlvbmFyeTo6dHJ5R2V0UHJvcGVydHkoY29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBSZXN1bHQm
IGZpbmFsUmVzdWx0KQorYm9vbCBKU0RpY3Rpb25hcnk6OnRyeUdldFByb3BlcnR5KGNvbnN0IGNo
YXIqIHByb3BlcnR5TmFtZSwgUmVzdWx0JiBmaW5hbFJlc3VsdCkgY29uc3QKK3sKKyAgICBHZXRQ
cm9wZXJ0eVJlc3VsdCBnZXRQcm9wZXJ0eVJlc3VsdDsKKyAgICByZXR1cm4gdHJ5R2V0UHJvcGVy
dHkocHJvcGVydHlOYW1lLCAmZmluYWxSZXN1bHQsIElkZW50aXR5U2V0dGVyPFJlc3VsdD46Omlk
ZW50aXR5U2V0dGVyLCBnZXRQcm9wZXJ0eVJlc3VsdCk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBSZXN1bHQ+Citib29sIEpTRGljdGlvbmFyeTo6dHJ5R2V0UHJvcGVydHkoY29uc3QgY2hhciog
cHJvcGVydHlOYW1lLCBSZXN1bHQmIGZpbmFsUmVzdWx0LCBHZXRQcm9wZXJ0eVJlc3VsdCYgZ2V0
UHJvcGVydHlSZXN1bHQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHRyeUdldFByb3BlcnR5KHByb3Bl
cnR5TmFtZSwgJmZpbmFsUmVzdWx0LCBJZGVudGl0eVNldHRlcjxSZXN1bHQ+OjppZGVudGl0eVNl
dHRlcik7CisgICAgcmV0dXJuIHRyeUdldFByb3BlcnR5KHByb3BlcnR5TmFtZSwgJmZpbmFsUmVz
dWx0LCBJZGVudGl0eVNldHRlcjxSZXN1bHQ+OjppZGVudGl0eVNldHRlciwgZ2V0UHJvcGVydHlS
ZXN1bHQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDRlY2UyMGE0ODI5
MDY4NTQ2MDkyODY2M2QyZDAxYzcxZWU1ODI3NjMuLmE4NmI4NjIzNjRiNzVmOTNkOWFjYzkxMGIy
NjE0OWMxMmZkMjEwMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0yOTE4LDkgKzI5MTgsOCBAQCBzdWIgSlNWYWx1ZVRv
TmF0aXZlCiAgICAgfQogCiAgICAgaWYgKCR0eXBlIGVxICJEaWN0aW9uYXJ5IikgewotICAgICAg
ICBBZGRUb0ltcGxJbmNsdWRlcygiSURCQmluZGluZ1V0aWxpdGllcy5oIiwgJGNvbmRpdGlvbmFs
KTsKICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkRpY3Rpb25hcnkuaCIsICRjb25kaXRpb25h
bCk7Ci0gICAgICAgIHJldHVybiAiY3JlYXRlRGljdGlvbmFyeUZyb21WYWx1ZShleGVjLCAkdmFs
dWUpIjsKKyAgICAgICAgcmV0dXJuICJleGVjLCAkdmFsdWUiOwogICAgIH0KIAogICAgIGlmICgk
dHlwZSBlcSAiRE9NU3RyaW5nW10iKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136852</attachid>
            <date>2012-04-12 01:57:16 -0700</date>
            <delta_ts>2012-04-12 02:02:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83472-20120412015917.patch</filename>
            <type>text/plain</type>
            <size>21115</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzOTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTA5MWQ4Y2UxNjI3ZWI3
MTZlODI5MmZlOWY4ZTU1NWE2ZDVlMzkwMS4uYWRkOGE1MTIxYWEwNmY5ZmQwODNkOGQwOWE3MTQ0
NGFiODgyZTFjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTA0LTEyICBKb24g
TGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgRGljdGlvbmFyeS5o
IG9uIG1hYyAoODM0NzIpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04MzQ3MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTEyMDk3NjY+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQSBkaWZmZXJlbmNlIGJl
dHdlZW4gRGljdGlvbmFyeSBhbmQgSlNEaWN0aW9uYXJ5IG1ha2VzIGl0IGRpZmZpY3VsdCB0byBt
ZXJnZSB0aGUgdHdvIHRvZ2V0aGVyIGFuZCBhdm9pZAorICAgICAgICBjcmVhdGluZyBhIGNvbmZ1
c2luZyBBUEkuIFRoZSBib29sZWFuIHJldHVybmVkIGJ5IERpY3Rpb25hcnk6OmdldCgpIHJlcHJl
c2VudHMgd2hldGhlciB0aGUKKyAgICAgICAgcHJvcGVydHkgd2FzIGZvdW5kLiBUaGUgYm9vbGVh
biByZXR1cm5lZCBieSBKU0RpY3Rpb25hcnk6OnRyeUdldFByb3BlcnR5KCkgcmVwcmVzZW50cyB3
aGV0aGVyIGFuCisgICAgICAgIGV4Y2VwdGlvbiB3YXMgdGhyb3duLgorCisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgRGljdGlvbmFyeS5oIGFuZCBEaWN0
aW9uYXJ5LmNwcC4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0RpY3Rpb25hcnkuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpY3Rpb25hcnk6OkRpY3Rpb25hcnkpOgorICAgICAgICAo
V2ViQ29yZTo6RGljdGlvbmFyeTo6Z2V0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9EaWN0aW9u
YXJ5Lmg6IExldmVyYWdlIEpTRGljdGlvbmFyeSdzIGZ1bmN0aW9uYWxpdHkgdG8gb2J0YWluIHRo
ZSBkYXRhLgorICAgICAgICAoV2ViQ29yZTo6RGljdGlvbmFyeTo6aXNPYmplY3QpOiBNYXJrIGFu
IHVuaW1wbGVtZW50ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaWN0aW9uYXJ5Ojppc1VuZGVmaW5l
ZE9yTnVsbCk6IE1hcmsgYW4gdW5pbXBsZW1lbnRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpY3Rp
b25hcnk6OmdldFdpdGhVbmRlZmluZWRPck51bGxDaGVjayk6IE1hcmsgYW4gdW5pbXBsZW1lbnRl
ZC4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU0RpY3Rpb25hcnk6OnRyeUdldFByb3BlcnR5KTogQ29udmVydCB0byBhIGNvbnN0
IGZ1bmN0aW9uLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5oOgorICAgICAg
ICAoV2ViQ29yZTo6SlNEaWN0aW9uYXJ5Ojppc1ZhbGlkKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
RGljdGlvbmFyeTo6dHJ5R2V0UHJvcGVydHkpOiBDb252ZXJ0IHRvIGEgY29uc3QgZnVuY3Rpb24u
CisgICAgICAgIChXZWJDb3JlOjpKU0RpY3Rpb25hcnk6OnZhbHVlRm9yUHJvcGVydHkpOiBTaW1p
bGFyIHRvIHRyeUdldFByb3BlcnR5KCksIGJ1dCByZXR1cm5zIHRydWUgaWYgdGhlCisgICAgICAg
IHByb3BlcnR5IHdhcyBmb3VuZCwgY29udmVydGluZyB0aGUgdmFsdWUgc3VjY2VlZGVkIGFuZCB0
aGUgb3V0IHBhcmFtZXRlciAicmVzdWx0IiB3YXMgc2V0LgorICAgICAgICAoV2ViQ29yZTo6SlNE
aWN0aW9uYXJ5Ojp0cnlHZXRQcm9wZXJ0eUFuZFJlc3VsdCk6IFJlZmFjdG9yIHRyeUdldFByb3Bl
cnR5KCkgdG8gcmV0dXJuIHRoZSBlbnVtIGRpcmVjdGx5LgorCisgICAgICAgIENoYW5nZSBiaW5k
aW5ncyBzY3JpcHRzIHRvIHVzZSBEaWN0aW9uYXJ5IGNvbnN0cnVjdG9yLgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwOiBSZW1vdmUgY3JlYXRlRGljdGlvbmFy
eUZyb21WYWx1ZSgpLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMu
aDogUmVtb3ZlIGNyZWF0ZURpY3Rpb25hcnlGcm9tVmFsdWUoKS4KKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEpTVmFsdWVUb05hdGl2ZSk6
IFVwZGF0ZSB0byByZW1vdmUgSURCQmluZGluZ1V0aWxpdGllcy5oIGRlcGVuZGVuY3ksIGFuZCB1
c2UgRGljdGlvbmFyeSBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uT3B0aW9uc09iamVjdCk6IFVwZGF0ZSBleHBlY3RlZCBnZW5lcmF0ZWQgb3V0cHV0
LgorCiAyMDEyLTA0LTExICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgSW1wbGVtZW50IExvY2F0aW9uLmFuY2VzdG9yT3JpZ2lucwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDI3ZWI1OTJjMjU2MjMw
YTVlYjlmOGI3NzQ0ZjkxMzc3NzBkN2JjMmMuLmU2M2I2MjVhNDkxNmYwNzljNWM5MjRiYzAxNmFl
MjQ1YWIyYjU4MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTg1MSw5ICs4NTEsMTEgQEAKIAkJMzEyOENBNjgxNDczMzE1MjAw
NzRDNzJBIC8qIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEyOENBNjcxNDczMzE1MjAwNzRDNzJBIC8qIE5v
dGlmaWNhdGlvbkNvbnRyb2xsZXIuY3BwICovOyB9OwogCQkzMTI4Q0E2QjE0NzMzMTYzMDA3NEM3
MkEgLyogTm90aWZpY2F0aW9uQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzEyOENBNkExNDczMzE2MzAwNzRDNzJBIC8qIE5vdGlmaWNh
dGlvbkNvbnRyb2xsZXIuaCAqLzsgfTsKIAkJMzEyQzBDNDExNDZEQzZDQzAwMTZDOTExIC8qIE5v
dGlmaWNhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzMzRjcwNEYwRkI0OUNBMjAwOEUxMkE2IC8qIE5vdGlmaWNhdGlvbi5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTMxMkQ2N0IxMTUzNTY5MUYw
MDU2M0QwRCAvKiBEaWN0aW9uYXJ5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDMxMkQ2N0IwMTUzNTY5MUYwMDU2M0QwRCAvKiBEaWN0aW9uYXJ5LmNw
cCAqLzsgfTsKIAkJMzEzMTNGNjUxNDQzQjM1RjAwNkUyQTkwIC8qIEZpbHRlckVmZmVjdFJlbmRl
cmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMx
MzEzRjYzMTQ0M0IzNUUwMDZFMkE5MCAvKiBGaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAgKi87IH07
CiAJCTMxMzEzRjY2MTQ0M0IzNUYwMDZFMkE5MCAvKiBGaWx0ZXJFZmZlY3RSZW5kZXJlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEzMTNGNjQxNDQz
QjM1RTAwNkUyQTkwIC8qIEZpbHRlckVmZmVjdFJlbmRlcmVyLmggKi87IH07CiAJCTMxMzhBOUU1
MTQ3NDQzNDYwMEIwRUQxMiAvKiBTdHlsZVNoYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEzOEE5RTQxNDc0NDM0NjAwQjBFRDEyIC8qIFN0eWxl
U2hhZGVyLmggKi87IH07CisJCTMxNjAyM0YwMTUzMkM0MEMwMEQ1MEZGNCAvKiBEaWN0aW9uYXJ5
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTYwMjNF
RjE1MzJDNDBDMDBENTBGRjQgLyogRGljdGlvbmFyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTMxNjExRTVBMEUxQzRERTAwMEY2QTU3OSAvKiBK
U1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDMxNjExRTU4MEUxQzRERTAwMEY2QTU3OSAvKiBKU1dlYktpdENT
U1RyYW5zZm9ybVZhbHVlLmNwcCAqLzsgfTsKIAkJMzE2MTFFNUIwRTFDNERFMDAwRjZBNTc5IC8q
IEpTV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDMxNjExRTU5MEUxQzRERTAwMEY2QTU3OSAvKiBKU1dlYktpdENT
U1RyYW5zZm9ybVZhbHVlLmggKi87IH07CiAJCTMxNjExRTYxMEUxQzRFMTQwMEY2QTU3OSAvKiBE
T01XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzE2MTFFNUUwRTFDNEUxNDAwRjZBNTc5IC8qIERPTVdlYktpdENT
U1RyYW5zZm9ybVZhbHVlLmggKi87IH07CkBAIC03NzUwLDkgKzc3NTIsMTEgQEAKIAkJMzEyODhF
NzEwRTMwMDVENjAwMzYxOUFFIC8qIFdlYktpdENTU0tleWZyYW1lc1J1bGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkzMTI4Q0E2NzE0NzMzMTUyMDA3NEM3MkEgLyogTm90aWZp
Y2F0aW9uQ29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBOb3RpZmljYXRpb25Db250cm9sbGVyLmNwcDsgcGF0aCA9IG5vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMjhD
QTZBMTQ3MzMxNjMwMDc0QzcyQSAvKiBOb3RpZmljYXRpb25Db250cm9sbGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIuaDsgcGF0aCA9
IG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkzMTJENjdCMDE1MzU2OTFGMDA1NjNEMEQgLyogRGljdGlvbmFyeS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaWN0aW9uYXJ5LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEzMTNGNjMxNDQzQjM1RTAwNkUyQTkwIC8qIEZp
bHRlckVmZmVjdFJlbmRlcmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMzEzMTNGNjQxNDQzQjM1RTAwNkUyQTkwIC8qIEZpbHRlckVmZmVjdFJlbmRlcmVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbHRlckVmZmVjdFJlbmRlcmVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMzhBOUU0MTQ3NDQzNDYwMEIwRUQxMiAvKiBT
dHlsZVNoYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTdHlsZVNoYWRl
ci5oOyBwYXRoID0gc3R5bGUvU3R5bGVTaGFkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMzE2MDIzRUYxNTMyQzQwQzAwRDUwRkY0IC8qIERpY3Rpb25hcnkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGljdGlvbmFyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkzMTYxMUU1NDBFMUM0RDRBMDBGNkE1NzkgLyogV2ViS2l0Q1NTVHJhbnNmb3Jt
VmFsdWUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYktpdENTU1RyYW5zZm9ybVZhbHVl
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE2MTFFNTgwRTFDNERFMDAwRjZB
NTc5IC8qIEpTV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxNjExRTU5MEUxQzRERTAwMEY2QTU3OSAvKiBKU1dlYktp
dENTU1RyYW5zZm9ybVZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
V2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTE5NTg1LDYgKzE5NTg5LDggQEAKIAkJCQkxNERGQjMzRjBBN0RGNzYzMDAxOEY3NjkgLyogRGVy
aXZlZCBTb3VyY2VzICovLAogCQkJCUJDRDUzMzYzMEVENjg0ODkwMDg4NzQ2OCAvKiBDYWNoZWRT
Y3JpcHRTb3VyY2VQcm92aWRlci5oICovLAogCQkJCTkzRjhCMzA2MEEzMDBGRUEwMEY2MUFCOCAv
KiBDb2RlR2VuZXJhdG9ySlMucG0gKi8sCisJCQkJMzEyRDY3QjAxNTM1NjkxRjAwNTYzRDBEIC8q
IERpY3Rpb25hcnkuY3BwICovLAorCQkJCTMxNjAyM0VGMTUzMkM0MEMwMEQ1MEZGNCAvKiBEaWN0
aW9uYXJ5LmggKi8sCiAJCQkJQkM1M0RBNjExMTQzMTRCRDAwMEQ4MTdFIC8qIERPTU9iamVjdEhh
c2hUYWJsZU1hcC5jcHAgKi8sCiAJCQkJQkM1M0RBNUYxMTQzMTQxQTAwMEQ4MTdFIC8qIERPTU9i
amVjdEhhc2hUYWJsZU1hcC5oICovLAogCQkJCUJDNTNEQTQ3MTE0MzEzNEQwMDBEODE3RSAvKiBE
T01XcmFwcGVyV29ybGQuY3BwICovLApAQCAtMjQ3NTgsNiArMjQ3NjQsNyBAQAogCQkJCUNFREEx
MkQ3MTUyQ0ExQ0IwMEQ5RTA4RCAvKiBBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUQ3MkY2RDdBMTUzMTU5QTMwMDFFRTQ0RSAvKiBGbG93VGhyZWFkQ29udHJvbGxl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTc0MEU4M0QxNTMyREUxNzAwNzYwNjI4IC8qIFRyZWVT
Y29wZUFkanVzdGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMTYwMjNGMDE1MzJDNDBDMDBENTBG
RjQgLyogRGljdGlvbmFyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNzc2Myw2ICsyNzc3MCw3IEBA
CiAJCQkJRTFDMkYyNEExNTMzQTIxMjAwODNGOTc0IC8qIFNldHRpbmdzTWFjLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRDcyRjZENzkxNTMxNTlBMzAwMUVFNDRFIC8qIEZsb3dUaHJlYWRDb250cm9s
bGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU3NDBFODNDMTUzMkRFMTcwMDc2MDYyOCAvKiBU
cmVlU2NvcGVBZGp1c3Rlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMTJENjdCMTE1MzU2OTFG
MDA1NjNEMEQgLyogRGljdGlvbmFyeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvRGljdGlvbmFyeS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjQyMGE1MTVmMWRkNWMxNjUz
YWQ1NjBjNzVhNzdjOWIzMDk5YjI0OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuY3BwCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEaWN0aW9uYXJ5LmgiCisKK3VzaW5nIG5hbWVz
cGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRGljdGlvbmFyeTo6RGljdGlvbmFy
eShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIHZhbHVlKQorICAgIDogbV9kaWN0
aW9uYXJ5KGV4ZWMsIHZhbHVlLmlzT2JqZWN0KCkgPyB2YWx1ZS5nZXRPYmplY3QoKSA6IDApCit7
Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBSZXN1bHQ+Citib29sIERpY3Rpb25hcnk6OmdldChj
b25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgUmVzdWx0JiByZXN1bHQpIGNvbnN0Cit7CisgICAg
aWYgKCFtX2RpY3Rpb25hcnkuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
CisgICAgcmV0dXJuIG1fZGljdGlvbmFyeS52YWx1ZUZvclByb3BlcnR5KHByb3BlcnR5TmFtZS5h
c2NpaSgpLmRhdGEoKSwgcmVzdWx0KTsKK30KKworfTsKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvRGljdGlvbmFyeS5oCmluZGV4IDFkOTQ0NDVhY2Q5OTkzMTIwYWEyYTllYTMxMTU5MTRjNzZk
ZGZkZjIuLjkzYTQ4YjhhZTU3NzE1NjRmMGY3YWZiM2QxN2U4MjVmMzhlNmQzZTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmgKQEAgLTEsNSArMSw2IEBACiAvKgogICog
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw0NCArMjcsMzMgQEAKICNpZm5kZWYgRGlj
dGlvbmFyeV9oCiAjZGVmaW5lIERpY3Rpb25hcnlfaAogCi0jaW5jbHVkZSAiU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvdGV4
dC9BdG9taWNTdHJpbmcuaD4KKyNpbmNsdWRlICJKU0RpY3Rpb25hcnkuaCIKKyNpbmNsdWRlICJO
b3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi1uYW1l
c3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEpTVmFsdWU7Cit9CiAKLWNs
YXNzIERPTVN0cmluZ0xpc3Q7Ci1jbGFzcyBET01XaW5kb3c7Ci1jbGFzcyBJREJLZXlSYW5nZTsK
LWNsYXNzIFNjcmlwdFZhbHVlOwotY2xhc3MgU3RvcmFnZTsKLWNsYXNzIFRyYWNrQmFzZTsKK25h
bWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEV2ZW50TGlzdGVuZXI7CiAKLS8vIEZJWE1FOiBJbXBs
ZW1lbnQuCiBjbGFzcyBEaWN0aW9uYXJ5IHsKIHB1YmxpYzoKLSAgICBEaWN0aW9uYXJ5KCkgeyB9
CisgICAgRGljdGlvbmFyeShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSk7CiAKLSAgICBi
b29sIGlzT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzVW5kZWZp
bmVkT3JOdWxsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAvLyBSZXR1cm5zIHRydWUg
aWYgYSB2YWx1ZSB3YXMgZm91bmQgZm9yIHRoZSBwcm92aWRlZCBwcm9wZXJ0eS4KKyAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgUmVzdWx0PgorICAgIGJvb2wgZ2V0KGNvbnN0IFN0cmluZyYgcHJvcGVy
dHlOYW1lLCBSZXN1bHQmKSBjb25zdDsKIAotICAgIGJvb2wgZ2V0KGNvbnN0IFN0cmluZyYsIGJv
b2wmKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgZ2V0KGNvbnN0IFN0cmluZyYs
IGludDMyX3QmKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgZ2V0KGNvbnN0IFN0
cmluZyYsIGRvdWJsZSYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBnZXQoY29u
c3QgU3RyaW5nJiwgU3RyaW5nJikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGdl
dChjb25zdCBTdHJpbmcmLCBTY3JpcHRWYWx1ZSYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgYm9vbCBnZXQoY29uc3QgU3RyaW5nJiwgdW5zaWduZWQgc2hvcnQmKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQotICAgIGJvb2wgZ2V0KGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkJikgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGdldChjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBs
b25nIGxvbmcmKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgZ2V0KGNvbnN0IFN0
cmluZyYsIFJlZlB0cjxET01XaW5kb3c+JikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBi
b29sIGdldChjb25zdCBTdHJpbmcmLCBSZWZQdHI8U3RvcmFnZT4mKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQotICAgIGJvb2wgZ2V0KGNvbnN0IFN0cmluZyYsIE1lc3NhZ2VQb3J0QXJyYXkmKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQotI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICBib29s
IGdldChjb25zdCBTdHJpbmcmLCBSZWZQdHI8VHJhY2tCYXNlPiYpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9Ci0jZW5kaWYKLSAgICBib29sIGdldChjb25zdCBTdHJpbmcmLCBIYXNoU2V0PEF0b21p
Y1N0cmluZz4mKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNPYmplY3QoKSBj
b25zdCB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNVbmRl
ZmluZWRPck51bGwoKSBjb25zdCB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiBmYWxzZTsgfQor
ICAgIGJvb2wgZ2V0V2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKGNvbnN0IFN0cmluZyYsIFN0cmlu
ZyYpIGNvbnN0IHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICBib29s
IGdldFdpdGhVbmRlZmluZWRPck51bGxDaGVjayhjb25zdCBTdHJpbmcmLCBTdHJpbmcmKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQorcHJpdmF0ZToKKyAgICBKU0RpY3Rpb25hcnkgbV9kaWN0aW9u
YXJ5OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURC
QmluZGluZ1V0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5k
aW5nVXRpbGl0aWVzLmNwcAppbmRleCA3MmY0OWY4OTVmNjI4ZWUxNWUxYjU0ZjVkZTZkODk0YTg3
NTRlZGRjLi5jZGMwYzQ4ODQxNWNhMjMzNDJiNDFmNGRlNTUzMTllYTdjYzk0NDhjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcApA
QCAtMjYsOSArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaWYgRU5BQkxFKElOREVY
RURfREFUQUJBU0UpCi0KICNpbmNsdWRlICJJREJCaW5kaW5nVXRpbGl0aWVzLmgiCi0jaW5jbHVk
ZSAiTm90SW1wbGVtZW50ZWQuaCIKIAogI2luY2x1ZGUgIklEQktleS5oIgogCkBAIC00NiwxMiAr
NDQsNiBAQCBQYXNzUmVmUHRyPElEQktleT4gY3JlYXRlSURCS2V5RnJvbVZhbHVlKEpTQzo6RXhl
Y1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUgdmFsdQogICAgIHJldHVybiAwOwogfQogCi1EaWN0
aW9uYXJ5IGNyZWF0ZURpY3Rpb25hcnlGcm9tVmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpT
VmFsdWUpCi17Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCBEYXRhYmFzZSBPcHRpb25zLgotICAg
IHJldHVybiBEaWN0aW9uYXJ5KCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5oCmluZGV4IDE4Nzg3YTU0OWZiMmQzNDM1ZTg2
MDc1M2VmNDY5YjYxYzliNjI4ZjcuLjhlMGM5YzVjZDA0NmE4NDAyNzNhY2ZiNmI0MDFjMDE1MTU0
MzkzMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdV
dGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRp
bGl0aWVzLmgKQEAgLTM3LDcgKzM3LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSURC
S2V5OwogCiBQYXNzUmVmUHRyPElEQktleT4gY3JlYXRlSURCS2V5RnJvbVZhbHVlKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpKU1ZhbHVlKTsKLURpY3Rpb25hcnkgY3JlYXRlRGljdGlvbmFyeUZyb21W
YWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSk7CiAKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHAKaW5kZXggZDc5MTNmYTE2M2EzODNkMTNi
MWU1OWEzY2Q5NTYwYTJhNTI1NTdhOS4uZWFkMjk3YTJjNzRmMWMyZmMzODhlN2YyM2ZhNmExNmFi
ZTQ4MDI4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9u
YXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuY3Bw
CkBAIC00Miw3ICs0Miw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotSlNEaWN0aW9uYXJ5OjpHZXRQcm9wZXJ0eVJlc3VsdCBKU0RpY3Rpb25hcnk6OnRy
eUdldFByb3BlcnR5KGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSYgZmluYWxSZXN1
bHQpCitKU0RpY3Rpb25hcnk6OkdldFByb3BlcnR5UmVzdWx0IEpTRGljdGlvbmFyeTo6dHJ5R2V0
UHJvcGVydHkoY29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBKU1ZhbHVlJiBmaW5hbFJlc3VsdCkg
Y29uc3QKIHsKICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIobV9leGVjLCBwcm9wZXJ0eU5hbWUp
OwogICAgIFByb3BlcnR5U2xvdCBzbG90KG1faW5pdGlhbGl6ZXJPYmplY3QpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuaAppbmRleCBmYjhlYTAwM2FmMDczY2JlYWI0
Y2IxOWQ5NjYzNDgyYTA5N2I1YjkyLi4zYmUxMGYwMzI4ZTdjYjEwYjhmYzk0MDQxZGMxNmFlZWE1
N2ZhMGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25h
cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuaApAQCAt
NDgsMTEgKzQ4LDE3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCisgICAgLy8gUmV0dXJucyBm
YWxzZSBpZiBhbnkgZXhjZXB0aW9ucyB3ZXJlIHRocm93biwgcmVnYXJkbGVzcyBvZiB3aGV0aGVy
IHRoZSBwcm9wZXJ0eSB3YXMgZm91bmQuCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFJlc3VsdD4K
LSAgICBib29sIHRyeUdldFByb3BlcnR5KGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSwgUmVzdWx0
Jik7Ci0KKyAgICBib29sIHRyeUdldFByb3BlcnR5KGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSwg
UmVzdWx0JikgY29uc3Q7CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFJlc3Vs
dD4KLSAgICBib29sIHRyeUdldFByb3BlcnR5KGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSwgVCog
Y29udGV4dCwgdm9pZCAoKnNldHRlcikoVCogY29udGV4dCwgY29uc3QgUmVzdWx0JikpOworICAg
IGJvb2wgdHJ5R2V0UHJvcGVydHkoY29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBUKiBjb250ZXh0
LCB2b2lkICgqc2V0dGVyKShUKiBjb250ZXh0LCBjb25zdCBSZXN1bHQmKSkgY29uc3Q7CisKKyAg
ICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHByb3BlcnR5IHdhcyBmb3VuZCBpbiB0aGUgZGljdGlv
bmFyeSwgYW5kIHRoZSB2YWx1ZSBjb3VsZCBiZSBjb252ZXJ0ZWQgdG8gdGhlIGRlc2lyZWQgdHlw
ZS4KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgUmVzdWx0PgorICAgIGJvb2wgdmFsdWVGb3JQcm9w
ZXJ0eShjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsIFJlc3VsdCYpIGNvbnN0OworCisgICAgYm9v
bCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9leGVjICYmIG1faW5pdGlhbGl6ZXJPYmplY3Q7
IH0KIAogcHJpdmF0ZToKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgUmVzdWx0PgpAQCAtNjgsNyAr
NzQsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgTm9Qcm9wZXJ0eUZvdW5kLAogICAgICAgICBQcm9w
ZXJ0eUZvdW5kCiAgICAgfTsKLSAgICBHZXRQcm9wZXJ0eVJlc3VsdCB0cnlHZXRQcm9wZXJ0eShj
b25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSYpOworICAgIAorICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBSZXN1bHQ+CisgICAgR2V0UHJvcGVydHlSZXN1bHQg
dHJ5R2V0UHJvcGVydHlBbmRSZXN1bHQoY29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBUKiBjb250
ZXh0LCB2b2lkICgqc2V0dGVyKShUKiBjb250ZXh0LCBjb25zdCBSZXN1bHQmKSkgY29uc3Q7Cisg
ICAgR2V0UHJvcGVydHlSZXN1bHQgdHJ5R2V0UHJvcGVydHkoY29uc3QgY2hhciogcHJvcGVydHlO
YW1lLCBKU0M6OkpTVmFsdWUmKSBjb25zdDsKIAogICAgIHN0YXRpYyB2b2lkIGNvbnZlcnRWYWx1
ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgYm9vbCYgcmVzdWx0KTsKICAgICBzdGF0
aWMgdm9pZCBjb252ZXJ0VmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIGludCYg
cmVzdWx0KTsKQEAgLTk1LDIwICsxMDQsMzggQEAgcHJpdmF0ZToKICAgICBKU0M6OkpTT2JqZWN0
KiBtX2luaXRpYWxpemVyT2JqZWN0OwogfTsKIAordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFJlc3VsdD4KK2Jvb2wgSlNEaWN0aW9uYXJ5Ojp0cnlHZXRQcm9wZXJ0eShjb25zdCBjaGFy
KiBwcm9wZXJ0eU5hbWUsIFQqIGNvbnRleHQsIHZvaWQgKCpzZXR0ZXIpKFQqIGNvbnRleHQsIGNv
bnN0IFJlc3VsdCYpKSBjb25zdAoreworICAgIHJldHVybiB0cnlHZXRQcm9wZXJ0eUFuZFJlc3Vs
dChwcm9wZXJ0eU5hbWUsIGNvbnRleHQsIHNldHRlcikgIT0gRXhjZXB0aW9uVGhyb3duOworfQor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgUmVzdWx0PgorYm9vbCBKU0RpY3Rpb25hcnk6OnRyeUdldFBy
b3BlcnR5KGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSwgUmVzdWx0JiBmaW5hbFJlc3VsdCkgY29u
c3QKK3sKKyAgICByZXR1cm4gdHJ5R2V0UHJvcGVydHlBbmRSZXN1bHQocHJvcGVydHlOYW1lLCAm
ZmluYWxSZXN1bHQsIElkZW50aXR5U2V0dGVyPFJlc3VsdD46OmlkZW50aXR5U2V0dGVyKSAhPSBF
eGNlcHRpb25UaHJvd247Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBSZXN1bHQ+Citib29sIEpT
RGljdGlvbmFyeTo6dmFsdWVGb3JQcm9wZXJ0eShjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsIFJl
c3VsdCYgZmluYWxSZXN1bHQpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRyeUdldFByb3BlcnR5QW5k
UmVzdWx0KHByb3BlcnR5TmFtZSwgJmZpbmFsUmVzdWx0LCBJZGVudGl0eVNldHRlcjxSZXN1bHQ+
OjppZGVudGl0eVNldHRlcikgPT0gUHJvcGVydHlGb3VuZDsKK30KIAogdGVtcGxhdGUgPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFJlc3VsdD4KLWJvb2wgSlNEaWN0aW9uYXJ5Ojp0cnlHZXRQcm9wZXJ0
eShjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsIFQqIGNvbnRleHQsIHZvaWQgKCpzZXR0ZXIpKFQq
IGNvbnRleHQsIGNvbnN0IFJlc3VsdCYpKQorSlNEaWN0aW9uYXJ5OjpHZXRQcm9wZXJ0eVJlc3Vs
dCBKU0RpY3Rpb25hcnk6OnRyeUdldFByb3BlcnR5QW5kUmVzdWx0KGNvbnN0IGNoYXIqIHByb3Bl
cnR5TmFtZSwgVCogY29udGV4dCwgdm9pZCAoKnNldHRlcikoVCogY29udGV4dCwgY29uc3QgUmVz
dWx0JikpIGNvbnN0CiB7CiAgICAgSlNDOjpKU1ZhbHVlIHZhbHVlOwotICAgIHN3aXRjaCAodHJ5
R2V0UHJvcGVydHkocHJvcGVydHlOYW1lLCB2YWx1ZSkpIHsKKyAgICBHZXRQcm9wZXJ0eVJlc3Vs
dCBnZXRQcm9wZXJ0eVJlc3VsdCA9IHRyeUdldFByb3BlcnR5KHByb3BlcnR5TmFtZSwgdmFsdWUp
OworICAgIHN3aXRjaCAoZ2V0UHJvcGVydHlSZXN1bHQpIHsKICAgICBjYXNlIEV4Y2VwdGlvblRo
cm93bjoKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gZ2V0UHJvcGVydHlS
ZXN1bHQ7CiAgICAgY2FzZSBQcm9wZXJ0eUZvdW5kOiB7CiAgICAgICAgIFJlc3VsdCByZXN1bHQ7
CiAgICAgICAgIGNvbnZlcnRWYWx1ZShtX2V4ZWMsIHZhbHVlLCByZXN1bHQpOwogCiAgICAgICAg
IGlmIChtX2V4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvblRocm93bjsKIAogICAgICAgICBzZXR0ZXIoY29u
dGV4dCwgcmVzdWx0KTsKICAgICAgICAgYnJlYWs7CkBAIC0xMTcsMTMgKzE0NCw3IEBAIGJvb2wg
SlNEaWN0aW9uYXJ5Ojp0cnlHZXRQcm9wZXJ0eShjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsIFQq
IGNvbnRleHQsIHZvaWQgKCpzCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIHJldHVybiB0
cnVlOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUmVzdWx0PgotYm9vbCBKU0RpY3Rpb25hcnk6
OnRyeUdldFByb3BlcnR5KGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSwgUmVzdWx0JiBmaW5hbFJl
c3VsdCkKLXsKLSAgICByZXR1cm4gdHJ5R2V0UHJvcGVydHkocHJvcGVydHlOYW1lLCAmZmluYWxS
ZXN1bHQsIElkZW50aXR5U2V0dGVyPFJlc3VsdD46OmlkZW50aXR5U2V0dGVyKTsKKyAgICByZXR1
cm4gZ2V0UHJvcGVydHlSZXN1bHQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5k
ZXggNzEzNzE2Mzk3YWNlYzVmNDVmY2JiYmZmZjI4OWNjNmY0NjljN2QwNi4uNDk2NGVjYjMzYTMx
N2E5ZDJhNDZlYjVmYTNjOTRhNmFiYTA4MTM5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTI5MjcsOSArMjkyNyw4IEBA
IHN1YiBKU1ZhbHVlVG9OYXRpdmUKICAgICB9CiAKICAgICBpZiAoJHR5cGUgZXEgIkRpY3Rpb25h
cnkiKSB7Ci0gICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJJREJCaW5kaW5nVXRpbGl0aWVzLmgi
LCAkY29uZGl0aW9uYWwpOwogICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiRGljdGlvbmFyeS5o
IiwgJGNvbmRpdGlvbmFsKTsKLSAgICAgICAgcmV0dXJuICJjcmVhdGVEaWN0aW9uYXJ5RnJvbVZh
bHVlKGV4ZWMsICR2YWx1ZSkiOworICAgICAgICByZXR1cm4gImV4ZWMsICR2YWx1ZSI7CiAgICAg
fQogCiAgICAgaWYgKCR0eXBlIGVxICJET01TdHJpbmdbXSIpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggZDRl
ZTAwNDAwNjA5NWVjNjg5OWI2MDY2Mjg5NTQxMDg3ZGNmZTNhNC4uZGI1MTRhZWFhMmM2OTIxNzkz
YzE3ZGE0NzUxZTEzZWNhYWU3YjExZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTE1MjAsNyArMTUyMCw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25P
cHRpb25zT2JqZWN0KEV4ZWNTdGF0ZSoKICAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nhc3Q8
VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291
bnQoKSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVy
cm9yKGV4ZWMsICJOb3QgZW5vdWdoIGFyZ3VtZW50cyIpKTsKLSAgICBEaWN0aW9uYXJ5IG9vKGNy
ZWF0ZURpY3Rpb25hcnlGcm9tVmFsdWUoZXhlYywgTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhl
YywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSkpOworICAgIERpY3Rpb25hcnkgb28oZXhlYywgTUFZ
QkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSk7CiAgICAg
aWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogCkBAIC0xNTMwLDcgKzE1MzAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3B0aW9uc09iamVjdChFeGVj
U3RhdGUqCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAg
ICAgfQogCi0gICAgRGljdGlvbmFyeSBvb28oY3JlYXRlRGljdGlvbmFyeUZyb21WYWx1ZShleGVj
LCBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAxLCBEZWZhdWx0SXNVbmRlZmluZWQpKSk7
CisgICAgRGljdGlvbmFyeSBvb28oZXhlYywgTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywg
MSwgRGVmYXVsdElzVW5kZWZpbmVkKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGltcGwt
Pm9wdGlvbnNPYmplY3Qob28sIG9vbyk7Cg==
</data>
<flag name="review"
          id="141768"
          type_id="1"
          status="+"
          setter="haraken"
    />
          </attachment>
      

    </bug>

</bugzilla>