<?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>61343</bug_id>
          
          <creation_ts>2011-05-23 22:30:14 -0700</creation_ts>
          <short_desc>[Qt] JSC bridge: implement __qt_sender__ without using Scope Chain</short_desc>
          <delta_ts>2011-05-25 12:28:39 -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 Qt</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>Qt, QtTriaged</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Caio Marcelo de Oliveira Filho">cmarcelo</reporter>
          <assigned_to name="Caio Marcelo de Oliveira Filho">cmarcelo</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>kling</cc>
    
    <cc>noam</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>408655</commentid>
    <comment_count>0</comment_count>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-05-23 22:30:14 -0700</bug_when>
    <thetext>When JS functions are called as result of signal emission, one can evaluate __qt_sender__ to obtain the object that emitted the signal. This is similar as QObject::sender() function.

To implement that the current bridge code manipulates the Scope Chain to add a new node with &apos;__qt_sender__&apos; inside. Oliver pointed out that there are problems with this implementation, and it breaks internal assumptions about scope chain that JSC can use for optimizations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>408668</commentid>
    <comment_count>1</comment_count>
      <attachid>94569</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-05-23 23:00:05 -0700</bug_when>
    <thetext>Created attachment 94569
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>408670</commentid>
    <comment_count>2</comment_count>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-05-23 23:07:41 -0700</bug_when>
    <thetext>First tentative to make __qt_sender__ implementation less dependent on JSC internals.

This implementation is less powerful than injecting the scope, but seems to me that the biggest use case is covered. In the long term, I think we should deprecate &apos;__qt_sender__&apos;.

Noam, I preferred to make this a separate change instead of adding more to bridge-in-jsc. If we end up landing this, it is easy to rebase the branch later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>408814</commentid>
    <comment_count>3</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2011-05-24 06:56:06 -0700</bug_when>
    <thetext>You should probably mention in the changelog that this is already tested in tst_qwebframe.
Otherwise it looks perfect to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>408893</commentid>
    <comment_count>4</comment_count>
      <attachid>94569</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-05-24 08:50:00 -0700</bug_when>
    <thetext>Comment on attachment 94569
Patch

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

&gt; Source/WebCore/bridge/qt/qt_instance.h:79
&gt; +        void pop() { Q_ASSERT(!m_stack.isEmpty()); m_stack.pop(); }

Curious to have a stack with a pop() method that doesn&apos;t return the popped value. No real objection though.

&gt; Source/WebKit/qt/Api/qwebframe.cpp:496
&gt; +    // ### Is this the correct RootObject?

This sounds like something that should be answered before landing.

&gt; Source/WebKit/qt/Api/qwebframe.cpp:516
&gt; +    // ### Can we do this with public JSC API?

Ditto.

&gt; Source/WebKit/qt/Api/qwebframe_p.h:111
&gt; +    void didClearedWindowObject();

Should be didClearWindowObject().

&gt; Source/WebKit/qt/Api/qwebframe_p.h:134
&gt; +    void addQtSenderToGlobalObject();

Missing #if USE(JSC) guard.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>408918</commentid>
    <comment_count>5</comment_count>
      <attachid>94626</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-05-24 09:27:48 -0700</bug_when>
    <thetext>Created attachment 94626
Patch v2, updates after kling comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>408920</commentid>
    <comment_count>6</comment_count>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-05-24 09:30:23 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 94569 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=94569&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bridge/qt/qt_instance.h:79
&gt; &gt; +        void pop() { Q_ASSERT(!m_stack.isEmpty()); m_stack.pop(); }
&gt; 
&gt; Curious to have a stack with a pop() method that doesn&apos;t return the popped value. No real objection though.

Since we don&apos;t use the value, I think it&apos;s fine keep it as is. If someone needs the return value from pop() it&apos;s easy to update it.

&gt; &gt; Source/WebKit/qt/Api/qwebframe.cpp:496
&gt; &gt; +    // ### Is this the correct RootObject?
&gt; 
&gt; This sounds like something that should be answered before landing.

Agreed. I&apos;ll look into that. Noam, Oliver, is getting the RootObject from the dynamicGlobalObject a sane move here?

&gt; &gt; Source/WebKit/qt/Api/qwebframe.cpp:516
&gt; &gt; +    // ### Can we do this with public JSC API?
&gt; 
&gt; Ditto.

Fixed. Commented that JSC API still can&apos;t do this as an explanation why I needed to use internals.
 
&gt; &gt; Source/WebKit/qt/Api/qwebframe_p.h:111
&gt; &gt; +    void didClearedWindowObject();
&gt; 
&gt; Should be didClearWindowObject().

Fixed.

&gt; &gt; Source/WebKit/qt/Api/qwebframe_p.h:134
&gt; &gt; +    void addQtSenderToGlobalObject();
&gt; 
&gt; Missing #if USE(JSC) guard.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>408927</commentid>
    <comment_count>7</comment_count>
      <attachid>94569</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-05-24 09:40:34 -0700</bug_when>
    <thetext>Comment on attachment 94569
Patch

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

&gt; Source/WebKit/qt/Api/qwebframe.cpp:497
&gt; +    RefPtr&lt;JSC::Bindings::RootObject&gt; rootObject = JSC::Bindings::findRootObject(exec-&gt;dynamicGlobalObject());

i recommend asking anders or weinig as i don&apos;t know how the binding objects work

&gt; Source/WebKit/qt/Api/qwebframe.cpp:518
&gt; +    window-&gt;defineGetter(exec, propertyName.get()-&gt;identifier(&amp;exec-&gt;globalData()), ::toJS(function),
&gt; +                         JSC::ReadOnly | JSC::DontEnum | JSC::DontDelete);

file a bug on the inability to use JSC API to do this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409004</commentid>
    <comment_count>8</comment_count>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-05-24 11:05:14 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 94569 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=94569&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/qt/Api/qwebframe.cpp:497
&gt; &gt; +    RefPtr&lt;JSC::Bindings::RootObject&gt; rootObject = JSC::Bindings::findRootObject(exec-&gt;dynamicGlobalObject());
&gt; 
&gt; i recommend asking anders or weinig as i don&apos;t know how the binding objects work

Thanks.


&gt; &gt; Source/WebKit/qt/Api/qwebframe.cpp:518
&gt; &gt; +    window-&gt;defineGetter(exec, propertyName.get()-&gt;identifier(&amp;exec-&gt;globalData()), ::toJS(function),
&gt; &gt; +                         JSC::ReadOnly | JSC::DontEnum | JSC::DontDelete);
&gt; 
&gt; file a bug on the inability to use JSC API to do this.

Created bug 61374 for that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409084</commentid>
    <comment_count>9</comment_count>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-05-24 12:09:16 -0700</bug_when>
    <thetext>For the record, from IRC:

&lt;cmarcelo&gt; andersca: hello. can you help me understand RootObject (JSC::Bindings)? I&apos;m working on bug https://bugs.webkit.org/show_bug.cgi?id=61343 and am unsure whether I&apos;m doing the right thing there when getting the RootObject.
&lt;andersca&gt; cmarcelo: it looks OK to me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409088</commentid>
    <comment_count>10</comment_count>
      <attachid>94660</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-05-24 12:10:15 -0700</bug_when>
    <thetext>Created attachment 94660
Patch v3, remove RootObject comment, add bug URL to API comment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409629</commentid>
    <comment_count>11</comment_count>
      <attachid>94660</attachid>
    <who name="Jędrzej Nowacki">jedrzej.nowacki</who>
    <bug_when>2011-05-25 07:43:28 -0700</bug_when>
    <thetext>Comment on attachment 94660
Patch v3, remove RootObject comment, add bug URL to API comment

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

Looks Ok

&gt; Source/WebCore/bridge/qt/qt_instance.cpp:329
&gt; +QtInstance::QtSenderStack* QtInstance::qtSenderStack()
&gt; +{
&gt; +    static QtSenderStack senderStack;
&gt; +    return &amp;senderStack;
&gt; +}
&gt; +

There are two genaral issues here (feel free to ignore them):

1. It breaks reentrancy, the object can&apos;t be shared between threads. Problably you can ignore that if you are sure that there is no multiple thread access (from log message).
2. In Qt we do not like static global, non POD variables. They introduce performance problems (compiler need to initialize most statics at the library load time) and in multithread environment initialization order is not really specified. I would suggest to use Q_GLOBAL_STATIC macro.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409738</commentid>
    <comment_count>12</comment_count>
      <attachid>94805</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-05-25 10:29:49 -0700</bug_when>
    <thetext>Created attachment 94805
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409741</commentid>
    <comment_count>13</comment_count>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-05-25 10:31:04 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; 1. It breaks reentrancy, the object can&apos;t be shared between threads. Problably you can ignore that if you are sure that there is no multiple thread access (from log message).

Yes. There&apos;ll be no multiple thread access in this case.

&gt; 2. In Qt we do not like static global, non POD variables. They introduce performance problems (compiler need to initialize most statics at the library load time) and in multithread environment initialization order is not really specified. I would suggest to use Q_GLOBAL_STATIC macro.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409744</commentid>
    <comment_count>14</comment_count>
      <attachid>94805</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-05-25 10:34:58 -0700</bug_when>
    <thetext>Comment on attachment 94805
Patch

Shazam!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409839</commentid>
    <comment_count>15</comment_count>
      <attachid>94805</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-05-25 12:28:33 -0700</bug_when>
    <thetext>Comment on attachment 94805
Patch

Clearing flags on attachment: 94805

Committed r87315: &lt;http://trac.webkit.org/changeset/87315&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409840</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-05-25 12:28:39 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>94569</attachid>
            <date>2011-05-23 23:00:05 -0700</date>
            <delta_ts>2011-05-24 09:40:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61343-20110524030003.patch</filename>
            <type>text/plain</type>
            <size>11412</size>
            <attacher name="Caio Marcelo de Oliveira Filho">cmarcelo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODcxMjEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzMmZkZGJmMzk2NTg5NTk4
YmM5ZTBmYjk3OTEzYjFlZDMxYmJiMDdkLi4zZWVmNGE1YzAwMjM5ZWRlYzhiYWUwNTAzNzc3MGRk
MzIyNmNhZTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTEtMDUtMjMgIENhaW8g
TWFyY2VsbyBkZSBPbGl2ZWlyYSBGaWxobyAgPGNhaW8ub2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUXRdIEpT
QyBicmlkZ2U6IGltcGxlbWVudCBfX3F0X3NlbmRlcl9fIHdpdGhvdXQgdXNpbmcgU2NvcGUgQ2hh
aW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxMzQz
CisKKyAgICAgICAgQ3JlYXRlIGEgc3RhY2sgdG8ga2VlcCB0cmFjayBvZiB0aGUgc2VuZGVyIG9i
amVjdHMuIFRoaXMgaXMgc2ltcGxlciB0aGFuCisgICAgICAgIHRoZSBzaW1pbGFyIG1lY2hhbmlz
bSBpbiBRT2JqZWN0IChDKysgQVBJKSwgdGhhdCBrZWVwcyBhIHN0YWNrIHBlci1vYmplY3QuCisK
KyAgICAgICAgU2luY2Ugd2UgZG8gbm90IHN1cHBvcnQgbXVsdGlwbGUgdGhyZWFkcywgb25lIHN0
YXRpYyBzdGFjayB3aWxsIGJlIGVub3VnaCBmb3IKKyAgICAgICAgaGFuZGxpbmcgdGhlIGJlaGF2
aW9yLgorCisgICAgICAgICogYnJpZGdlL3F0L3F0X2luc3RhbmNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6QmluZGluZ3M6OlF0SW5zdGFuY2U6OnF0U2VuZGVyU3RhY2spOgorICAgICAgICBXZSBoYXZl
IG9uZSBzdGF0aWMgc3RhY2sgb2YgUU9iamVjdCouIFRoZSB0b3Agb2YgdGhlIHN0YWNrIGNvbnRh
aW5zIHRoZQorICAgICAgICBsYXN0IG9iamVjdCB0aGF0IGVtaXR0ZWQgc2lnbmFsIHRoYXQgY2Fs
bGVkIGEgSmF2YVNjcmlwdCBmdW5jdGlvbi4KKworICAgICAgICAqIGJyaWRnZS9xdC9xdF9pbnN0
YW5jZS5oOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UXRJbnN0YW5jZTo6UXRTZW5kZXJTdGFj
azo6dG9wKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlF0SW5zdGFuY2U6OlF0U2VuZGVyU3Rh
Y2s6OnB1c2gpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UXRJbnN0YW5jZTo6UXRTZW5kZXJT
dGFjazo6cG9wKToKKyAgICAgICAgTWluaW1hbCBmdW5jdGlvbmFsaXR5IHRvIG1hbmlwdWxhdGUg
dGhlIHNlbmRlciBzdGFjay4KKworICAgICAgICAqIGJyaWRnZS9xdC9xdF9ydW50aW1lLmNwcDoK
KyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlF0Q29ubmVjdGlvbk9iamVjdDo6ZXhlY3V0ZSk6Cisg
ICAgICAgIFJlbW92ZSB0aGUgcHJldmlvdXMgY29kZSB0aGF0IG1vZGlmaWVkIHRoZSBzY29wZSBj
aGFpbi4gUHVzaCB0aGUgc2VuZGVyIG9iamVjdAorICAgICAgICB0byB0aGUgc3RhY2sgYmVmb3Jl
IGNhbGxpbmcgdGhlIEphdmFTY3JpcHQgZnVuY3Rpb24gKHRoZSAic2xvdCIgaW4gUXQtc3BlYWsp
IGFuZAorICAgICAgICBwb3AgaXQgYWZ0ZXJ3YXJkcy4KKwogMjAxMS0wNS0yMyAgTWlrZSBMYXd0
aGVyICA8bWlrZWxhd3RoZXJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEph
bWVzIFJvYmluc29uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2lu
c3RhbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9pbnN0YW5jZS5jcHAKaW5k
ZXggNjhlMjk1NGJkNTU0N2EwMmJhMWViMzdjYmQ2YWI3MTkxMzBjMGIxZi4uYTA0NTNlNWQyNWFk
OTY2MTk2ODc3Y2VjNjA4MDIyMjJlZjU3ZjFlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YnJpZGdlL3F0L3F0X2luc3RhbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQv
cXRfaW5zdGFuY2UuY3BwCkBAIC0zMjEsNiArMzIxLDEyIEBAIEpTVmFsdWUgUXRJbnN0YW5jZTo6
dmFsdWVPZihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiAgICAgcmV0dXJuIHN0cmluZ1ZhbHVlKGV4
ZWMpOwogfQogCitRdEluc3RhbmNlOjpRdFNlbmRlclN0YWNrKiBRdEluc3RhbmNlOjpxdFNlbmRl
clN0YWNrKCkKK3sKKyAgICBzdGF0aWMgUXRTZW5kZXJTdGFjayBzZW5kZXJTdGFjazsKKyAgICBy
ZXR1cm4gJnNlbmRlclN0YWNrOworfQorCiAvLyBJbiBxdF9ydW50aW1lLmNwcAogSlNWYWx1ZSBj
b252ZXJ0UVZhcmlhbnRUb1ZhbHVlKEV4ZWNTdGF0ZSosIFBhc3NSZWZQdHI8Um9vdE9iamVjdD4g
cm9vdCwgY29uc3QgUVZhcmlhbnQmIHZhcmlhbnQpOwogUVZhcmlhbnQgY29udmVydFZhbHVlVG9R
VmFyaWFudChFeGVjU3RhdGUqLCBKU1ZhbHVlLCBRTWV0YVR5cGU6OlR5cGUgaGludCwgaW50ICpk
aXN0YW5jZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFu
Y2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9pbnN0YW5jZS5oCmluZGV4IDFkNTFj
YTI2NTY3YzAwZTI1NDA3NDhhZjk3YWE4NmU2ZmFkNjc1YzkuLjY5MzUwMjJhN2YwOTM4OTQ4ODFk
NmFjMDY4MDY3Y2Y1NTMzYTJiNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9x
dC9xdF9pbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9pbnN0YW5j
ZS5oCkBAIC0yMiw2ICsyMiw3IEBACiAKICNpbmNsdWRlICJCcmlkZ2VKU0MuaCIKICNpbmNsdWRl
ICJydW50aW1lX3Jvb3QuaCIKKyNpbmNsdWRlIDxRU3RhY2s+CiAjaW5jbHVkZSA8UXRTY3JpcHQv
cXNjcmlwdGVuZ2luZS5oPgogI2luY2x1ZGUgPHFoYXNoLmg+CiAjaW5jbHVkZSA8cXBvaW50ZXIu
aD4KQEAgLTcxLDYgKzcyLDE4IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBRdEluc3RhbmNlKiBn
ZXRJbnN0YW5jZShKU09iamVjdCopOwogCisgICAgY2xhc3MgUXRTZW5kZXJTdGFjayB7CisgICAg
cHVibGljOgorICAgICAgICBRT2JqZWN0KiB0b3AoKSBjb25zdCB7IHJldHVybiBtX3N0YWNrLmlz
RW1wdHkoKSA/IDAgOiBtX3N0YWNrLnRvcCgpOyB9CisgICAgICAgIHZvaWQgcHVzaChRT2JqZWN0
KiBvYmplY3QpIHsgbV9zdGFjay5wdXNoKG9iamVjdCk7IH0KKyAgICAgICAgdm9pZCBwb3AoKSB7
IFFfQVNTRVJUKCFtX3N0YWNrLmlzRW1wdHkoKSk7IG1fc3RhY2sucG9wKCk7IH0KKyAgICBwcml2
YXRlOgorICAgICAgICBRU3RhY2s8UU9iamVjdCo+IG1fc3RhY2s7CisgICAgfTsKKworICAgIC8v
IFVzZWQgdG8gaW1wbGVtZW50ICdfX3F0X3NlbmRlcl9fJy4KKyAgICBzdGF0aWMgUXRTZW5kZXJT
dGFjayogcXRTZW5kZXJTdGFjaygpOworCiBwcml2YXRlOgogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFF0SW5zdGFuY2U+IGNyZWF0ZShRT2JqZWN0ICppbnN0YW5jZSwgUGFzc1JlZlB0cjxSb290T2Jq
ZWN0PiByb290T2JqZWN0LCBRU2NyaXB0RW5naW5lOjpWYWx1ZU93bmVyc2hpcCBvd25lcnNoaXAp
CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwCmluZGV4IDYyZDQ0
MTdhNzQyMmU5OGYwZTA4MzU3MWZlZTgyZDhhZjZkZGZmY2YuLmExN2ViMzE4NjI4M2ZkNTViOWNj
MzExMGYwZjUxMTAyYzFmMGE0ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9x
dC9xdF9ydW50aW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGlt
ZS5jcHAKQEAgLTE4MzgsMjYgKzE4MzgsMTcgQEAgdm9pZCBRdENvbm5lY3Rpb25PYmplY3Q6OmV4
ZWN1dGUodm9pZCAqKmFyZ3YpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbC5hcHBlbmQo
anNVbmRlZmluZWQoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgLy8gU3R1ZmYgaW4gdGhlIF9fcXRfc2VuZGVy
IHByb3BlcnR5LCBpZiB3ZSBjYW4KLSAgICAgICAgICAgICAgICAgICAgU2NvcGVDaGFpbk5vZGUq
IG9sZHNjID0gMDsKLSAgICAgICAgICAgICAgICAgICAgSlNGdW5jdGlvbiogZmltcCA9IDA7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmIChtX2Z1bmNPYmplY3QtPmluaGVyaXRzKCZKU0Z1bmN0aW9u
OjpzX2luZm8pKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmaW1wID0gc3RhdGljX2Nhc3Q8
SlNGdW5jdGlvbio+KG1fZnVuY09iamVjdC5nZXQoKSk7Ci0KLSAgICAgICAgICAgICAgICAgICAg
ICAgIEpTT2JqZWN0KiBxdF9zZW5kZXIgPSBRdEluc3RhbmNlOjpnZXRRdEluc3RhbmNlKHNlbmRl
cigpLCBybywgUVNjcmlwdEVuZ2luZTo6UXRPd25lcnNoaXApLT5jcmVhdGVSdW50aW1lT2JqZWN0
KGV4ZWMpOwotICAgICAgICAgICAgICAgICAgICAgICAgSlNPYmplY3QqIHdyYXBwZXIgPSBjb25z
dHJ1Y3RFbXB0eU9iamVjdChleGVjLCBjcmVhdGVFbXB0eU9iamVjdFN0cnVjdHVyZShleGVjLT5n
bG9iYWxEYXRhKCksIGpzTnVsbCgpKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQdXRQcm9w
ZXJ0eVNsb3Qgc2xvdDsKLSAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBwZXItPnB1dChleGVj
LCBJZGVudGlmaWVyKGV4ZWMsICJfX3F0X3NlbmRlcl9fIiksIHF0X3NlbmRlciwgc2xvdCk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBvbGRzYyA9IGZpbXAtPnNjb3BlKCk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBmaW1wLT5zZXRTY29wZShleGVjLT5nbG9iYWxEYXRhKCksIG9sZHNjLT5w
dXNoKHdyYXBwZXIpKTsKLSAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGJvb2wgd2l0aFF0U2VuZGVyU3RhY2sgPSBtX2Z1bmNPYmplY3QtPmluaGVyaXRz
KCZKU0Z1bmN0aW9uOjpzX2luZm8pOworICAgICAgICAgICAgICAgICAgICBpZiAod2l0aFF0U2Vu
ZGVyU3RhY2spCisgICAgICAgICAgICAgICAgICAgICAgICBRdEluc3RhbmNlOjpxdFNlbmRlclN0
YWNrKCktPnB1c2goUU9iamVjdDo6c2VuZGVyKCkpOwogCiAgICAgICAgICAgICAgICAgICAgIENh
bGxEYXRhIGNhbGxEYXRhOwogICAgICAgICAgICAgICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9
IG1fZnVuY09iamVjdC0+Z2V0Q2FsbERhdGEoY2FsbERhdGEpOwogICAgICAgICAgICAgICAgICAg
ICBjYWxsKGV4ZWMsIG1fZnVuY09iamVjdC5nZXQoKSwgY2FsbFR5cGUsIGNhbGxEYXRhLCBtX3Ro
aXNPYmplY3QuZ2V0KCksIGwpOwogCi0gICAgICAgICAgICAgICAgICAgIGlmIChmaW1wKQotICAg
ICAgICAgICAgICAgICAgICAgICAgZmltcC0+c2V0U2NvcGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBv
bGRzYyk7CisgICAgICAgICAgICAgICAgICAgIGlmICh3aXRoUXRTZW5kZXJTdGFjaykKKyAgICAg
ICAgICAgICAgICAgICAgICAgIFF0SW5zdGFuY2U6OnF0U2VuZGVyU3RhY2soKS0+cG9wKCk7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9xdC9BcGkv
cXdlYmZyYW1lLmNwcAppbmRleCBiYzg3ZGQxZDc5ODYyNmU2OWY0MzcwMGJkYjdhOWMwZmRiN2I0
MzE0Li44OTBmYzJiMWY3NWUzOTRhNDJjOTJjYzdiZTMxMjZlZGI2MzM1NmEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
cXQvQXBpL3F3ZWJmcmFtZS5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJxd2ViZnJh
bWUuaCIKIAogI2lmIFVTRShKU0MpCisjaW5jbHVkZSAiQVBJQ2FzdC5oIgogI2luY2x1ZGUgIkJy
aWRnZUpTQy5oIgogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogI2VsaWYgVVNFKFY4KQpAQCAtNDks
MTAgKzUwLDEzIEBACiAjaW5jbHVkZSAiSWNvbkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9yQ29udHJvbGxlci5oIgogI2lmIFVTRShKU0MpCisjaW5jbHVkZSAiSmF2YVNjcmlwdC5oIgog
I2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93QmFzZS5oIgog
I2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNS
ZXRhaW5QdHIuaCIKKyNpbmNsdWRlICJPcGFxdWVKU1N0cmluZy5oIgogI2VsaWYgVVNFKFY4KQog
I2luY2x1ZGUgIlY4RE9NV3JhcHBlci5oIgogI2luY2x1ZGUgIlY4RE9NV2luZG93U2hlbGwuaCIK
QEAgLTQ3MSw2ICs0NzUsNTAgQEAgdm9pZCBRV2ViRnJhbWVQcml2YXRlOjpfcV9vcmllbnRhdGlv
bkNoYW5nZWQoKQogICAgIGZyYW1lLT5zZW5kT3JpZW50YXRpb25DaGFuZ2VFdmVudChvcmllbnRh
dGlvbik7CiAjZW5kaWYKIH0KKwordm9pZCBRV2ViRnJhbWVQcml2YXRlOjpkaWRDbGVhcmVkV2lu
ZG93T2JqZWN0KCkKK3sKKyNpZiBVU0UoSlNDKQorICAgIGlmIChwYWdlLT5zZXR0aW5ncygpLT50
ZXN0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6SmF2YXNjcmlwdEVuYWJsZWQpKQorICAgICAgICBh
ZGRRdFNlbmRlclRvR2xvYmFsT2JqZWN0KCk7CisjZW5kaWYKKyAgICBlbWl0IHEtPmphdmFTY3Jp
cHRXaW5kb3dPYmplY3RDbGVhcmVkKCk7Cit9CisKKyNpZiBVU0UoSlNDKQorc3RhdGljIEpTVmFs
dWVSZWYgcXRTZW5kZXJDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYs
IEpTT2JqZWN0UmVmLCBzaXplX3QsIGNvbnN0IEpTVmFsdWVSZWZbXSwgSlNWYWx1ZVJlZiopCit7
CisgICAgUU9iamVjdCogc2VuZGVyID0gSlNDOjpCaW5kaW5nczo6UXRJbnN0YW5jZTo6cXRTZW5k
ZXJTdGFjaygpLT50b3AoKTsKKyAgICBpZiAoIXNlbmRlcikKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworCisgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSA6
OnRvSlMoY29udGV4dCk7CisgICAgLy8gIyMjIElzIHRoaXMgdGhlIGNvcnJlY3QgUm9vdE9iamVj
dD8KKyAgICBSZWZQdHI8SlNDOjpCaW5kaW5nczo6Um9vdE9iamVjdD4gcm9vdE9iamVjdCA9IEpT
Qzo6QmluZGluZ3M6OmZpbmRSb290T2JqZWN0KGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKSk7
CisgICAgSlNDOjpKU09iamVjdCoganNTZW5kZXIgPSBKU0M6OkJpbmRpbmdzOjpRdEluc3RhbmNl
OjpnZXRRdEluc3RhbmNlKHNlbmRlciwgcm9vdE9iamVjdCwgUVNjcmlwdEVuZ2luZTo6UXRPd25l
cnNoaXApLT5jcmVhdGVSdW50aW1lT2JqZWN0KGV4ZWMpOworICAgIHJldHVybiA6OnRvUmVmKGpz
U2VuZGVyKTsKK30KKwordm9pZCBRV2ViRnJhbWVQcml2YXRlOjphZGRRdFNlbmRlclRvR2xvYmFs
T2JqZWN0KCkKK3sKKyAgICBKU0M6OkpTTG9jayBsb2NrKEpTQzo6U2lsZW5jZUFzc2VydGlvbnNP
bmx5KTsKKworICAgIEpTRE9NV2luZG93KiB3aW5kb3cgPSB0b0pTRE9NV2luZG93KGZyYW1lLCBt
YWluVGhyZWFkTm9ybWFsV29ybGQoKSk7CisgICAgUV9BU1NFUlQod2luZG93KTsKKworICAgIEpT
Qzo6RXhlY1N0YXRlKiBleGVjID0gd2luZG93LT5nbG9iYWxFeGVjKCk7CisgICAgUV9BU1NFUlQo
ZXhlYyk7CisKKyAgICBKU0NvbnRleHRSZWYgY29udGV4dCA9IDo6dG9SZWYoZXhlYyk7CisgICAg
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHByb3BlcnR5TmFtZShBZG9wdCwgSlNTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoIl9fcXRfc2VuZGVyX18iKSk7CisgICAgSlNPYmplY3RSZWYgZnVu
Y3Rpb24gPSBKU09iamVjdE1ha2VGdW5jdGlvbldpdGhDYWxsYmFjayhjb250ZXh0LCBwcm9wZXJ0
eU5hbWUuZ2V0KCksIHF0U2VuZGVyQ2FsbGJhY2spOworCisgICAgLy8gIyMjIENhbiB3ZSBkbyB0
aGlzIHdpdGggcHVibGljIEpTQyBBUEk/CisgICAgd2luZG93LT5kZWZpbmVHZXR0ZXIoZXhlYywg
cHJvcGVydHlOYW1lLmdldCgpLT5pZGVudGlmaWVyKCZleGVjLT5nbG9iYWxEYXRhKCkpLCA6OnRv
SlMoZnVuY3Rpb24pLAorICAgICAgICAgICAgICAgICAgICAgICAgIEpTQzo6UmVhZE9ubHkgfCBK
U0M6OkRvbnRFbnVtIHwgSlNDOjpEb250RGVsZXRlKTsKK30KKyNlbmRpZgorCiAvKiEKICAgICBc
Y2xhc3MgUVdlYkZyYW1lCiAgICAgXHNpbmNlIDQuNApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9xdC9BcGkvcXdlYmZyYW1lX3AuaCBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZV9w
LmgKaW5kZXggNzcxZTY4YWE3ZWIxYTlmMmIyOWVkMTQyZDVkZTI2YTAxOTdjMzU2Yy4uNWFlNDhi
Y2JhOWE1MmQxZjk0ZGViOGM5ZGMzYTA1OTYxYzRmYzE2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9xdC9BcGkvcXdlYmZyYW1lX3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vi
ZnJhbWVfcC5oCkBAIC0xMDgsNiArMTA4LDggQEAgcHVibGljOgogICAgIHZvaWQgZW1pdFVybENo
YW5nZWQoKTsKICAgICB2b2lkIF9xX29yaWVudGF0aW9uQ2hhbmdlZCgpOwogCisgICAgdm9pZCBk
aWRDbGVhcmVkV2luZG93T2JqZWN0KCk7CisKICAgICBRV2ViRnJhbWUgKnE7CiAgICAgUXQ6OlNj
cm9sbEJhclBvbGljeSBob3Jpem9udGFsU2Nyb2xsQmFyUG9saWN5OwogICAgIFF0OjpTY3JvbGxC
YXJQb2xpY3kgdmVydGljYWxTY3JvbGxCYXJQb2xpY3k7CkBAIC0xMjcsNiArMTI5LDkgQEAgcHVi
bGljOgogI2lmIEVOQUJMRShPUklFTlRBVElPTl9FVkVOVFMpICYmIEVOQUJMRShERVZJQ0VfT1JJ
RU5UQVRJT04pCiAgICAgUXRNb2JpbGl0eTo6UU9yaWVudGF0aW9uU2Vuc29yIG1fb3JpZW50YXRp
b247CiAjZW5kaWYKKworcHJpdmF0ZToKKyAgICB2b2lkIGFkZFF0U2VuZGVyVG9HbG9iYWxPYmpl
Y3QoKTsKIH07CiAKIGNsYXNzIFFXZWJIaXRUZXN0UmVzdWx0UHJpdmF0ZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9n
CmluZGV4IGQ5NzQwNGQ1NjIzNTcwYjAxYjNiYjc1ZDViMWE2NGY3NzdmZjRmN2QuLjgwMGFmMGIw
NDFhMGVjOTliM2E2YTRjMmM0ZmQzOGE1NjEwYTg3OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvcXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzUgQEAKKzIwMTEtMDUtMjMgIENhaW8gTWFyY2VsbyBkZSBPbGl2ZWlyYSBGaWxobyAgPGNh
aW8ub2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBbUXRdIEpTQyBicmlkZ2U6IGltcGxlbWVudCBfX3F0X3NlbmRl
cl9fIHdpdGhvdXQgdXNpbmcgU2NvcGUgQ2hhaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTYxMzQzCisKKyAgICAgICAgQ3JlYXRlIGEgJ19fcXRfc2Vu
ZGVyX18nIHByb3BlcnR5IGluIHRoZSBnbG9iYWwgb2JqZWN0LCB0aGF0IHJldHVybnMgdGhlIHRv
cCBvZgorICAgICAgICB0aGUgcXRTZW5kZXJTdGFjay4gVGhpcyBpcyBhbiBhbHRlcm5hdGl2ZSBp
bXBsZW1lbnRhdGlvbiBmb3IgdGhlIGZlYXR1cmUgb2YKKyAgICAgICAgcHJvdmlkaW5nIGEgd2F5
IGZvciBhIGZ1bmN0aW9uIChhY3RpbmcgYXMgYSBRdCAnc2xvdCcpIGRpc2NvdmVyIHdoaWNoIG9i
amVjdAorICAgICAgICBlbWl0dGVkIHRoZSBzaWduYWwgdGhhdCBjYXVzZWQgaXQgdG8gYmUgZXhl
Y3V0ZWQuCisKKyAgICAgICAgVGhpcyByZWR1Y2VzIHRoZSBjb3VwbGluZyBvZiB0aGUgUXQgYnJp
ZGdlIGFuZCBKU0MgaW50ZXJuYWwgaW1wbGVtZW50YXRpb24uIFRoZQorICAgICAgICBwYXRjaCB0
cmllcyB0byB1c2UgYXMgbXVjaCBKU0MgcHVibGljIEFQSSBhcyBwb3NzaWJsZS4KKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdElu
V29ybGQpOgorICAgICAgICBJbnN0ZWFkIG9mIGVtaXR0aW5nIHRoZSBRV2ViUGFnZTo6amF2YVNj
cmlwdFdpbmRvd09iamVjdENsZWFyZWQoKSBkaXJlY3RseSwgY2FsbHMKKyAgICAgICAgYSBRV2Vi
UGFnZVByaXZhdGUgZnVuY3Rpb24gdG8gZG8gaXQuCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1l
X3AuaDoKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZVBy
aXZhdGU6OmRpZENsZWFyZWRXaW5kb3dPYmplY3QpOgorICAgICAgICBCZWZvcmUgZW1pdHRpbmcg
dGhlIHNpZ25hbCBtZW50aW9uZWQsIGFkZHMgdGhlICdfX3F0X3NlbmRlcl9fJyB0byB0aGUgZnJl
c2gKKyAgICAgICAgZ2xvYmFsIG9iamVjdC4KKworICAgICAgICAocXRTZW5kZXJDYWxsYmFjayk6
CisgICAgICAgIFJldHVybnMgdGhlIEpTT2JqZWN0UmVmIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHRv
cCBvZiBxdFNlbmRlclN0YWNrLgorCisgICAgICAgIChRV2ViRnJhbWVQcml2YXRlOjphZGRRdFNl
bmRlclRvR2xvYmFsT2JqZWN0KToKKyAgICAgICAgQ3JlYXRlIGEgcHJvcGVydHkgd2l0aCBhIHF0
U2VuZGVyQ2FsbGJhY2sgYXMgZ2V0dGVyIGZ1bmN0aW9uIGluIHRoZSBnbG9iYWwgb2JqZWN0Lgor
CiAyMDExLTA1LTIzICBMdWl6IEFnb3N0aW5pICA8bHVpei5hZ29zdGluaUBvcGVuYm9zc2Eub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwIGIvU291
cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAppbmRl
eCA1NmJlMzI0ZGY2NThmYTZiNzYyYjUxMTU1NGUzZWMyOGU5YzA1NTc2Li4zZGI1NThjZWU0YmRm
MTIzNzUyODgxZWRjNmQ5N2I1NTQ5OTIyMzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKQEAgLTc2Miw3ICs3
NjIsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dP
YmplY3RJbldvcmxkKERPTVdyYXBwZXJXb3JsZCogdwogICAgICAgICByZXR1cm47CiAKICAgICBp
ZiAobV93ZWJGcmFtZSkKLSAgICAgICAgZW1pdCBtX3dlYkZyYW1lLT5qYXZhU2NyaXB0V2luZG93
T2JqZWN0Q2xlYXJlZCgpOworICAgICAgICBtX3dlYkZyYW1lLT5kLT5kaWRDbGVhcmVkV2luZG93
T2JqZWN0KCk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZG9jdW1lbnRFbGVtZW50
QXZhaWxhYmxlKCkK
</data>
<flag name="review"
          id="87881"
          type_id="1"
          status="-"
          setter="kling"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>94626</attachid>
            <date>2011-05-24 09:27:48 -0700</date>
            <delta_ts>2011-05-24 12:10:15 -0700</delta_ts>
            <desc>Patch v2, updates after kling comments</desc>
            <filename>0001-Qt-JSC-bridge-implement-__qt_sender__-without-using-.patch</filename>
            <type>text/plain</type>
            <size>14250</size>
            <attacher name="Caio Marcelo de Oliveira Filho">cmarcelo</attacher>
            
              <data encoding="base64">RnJvbSAwNGRmNDk0MzVhZTg2NDEyMGQ1ZDhiMDUyNzM4ODk5ODc1ZTMwMDdiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDYWlvIE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gPGNhaW8u
b2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4KRGF0ZTogVHVlLCAyNCBNYXkgMjAxMSAxMzoyNjoyMSAt
MDMwMApTdWJqZWN0OiBbUEFUQ0hdIFtRdF0gSlNDIGJyaWRnZTogaW1wbGVtZW50IF9fcXRfc2Vu
ZGVyX18gd2l0aG91dCB1c2luZyBTY29wZQogQ2hhaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTYxMzQzCgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KClNvdXJj
ZS9XZWJDb3JlOgoKQ3JlYXRlIGEgc3RhY2sgdG8ga2VlcCB0cmFjayBvZiB0aGUgc2VuZGVyIG9i
amVjdHMuIFRoaXMgaXMgc2ltcGxlciB0aGFuCnRoZSBzaW1pbGFyIG1lY2hhbmlzbSBpbiBRT2Jq
ZWN0IChDKysgQVBJKSwgdGhhdCBrZWVwcyBhIHN0YWNrIHBlci1vYmplY3QuCgpTaW5jZSB3ZSBk
byBub3Qgc3VwcG9ydCBtdWx0aXBsZSB0aHJlYWRzLCBvbmUgc3RhdGljIHN0YWNrIHdpbGwgYmUg
ZW5vdWdoIGZvcgpoYW5kbGluZyB0aGUgYmVoYXZpb3IuCgpUaGlzIGJlaGF2aW9yIGlzIGNvdmVy
ZWQgYnkgdGhlIHRzdF9RV2ViRnJhbWU6OmNvbm5lY3RBbmREaXNjb25uZWN0KCkgYXV0byB0ZXN0
LgoKKiBicmlkZ2UvcXQvcXRfaW5zdGFuY2UuY3BwOgooSlNDOjpCaW5kaW5nczo6UXRJbnN0YW5j
ZTo6cXRTZW5kZXJTdGFjayk6CldlIGhhdmUgb25lIHN0YXRpYyBzdGFjayBvZiBRT2JqZWN0Ki4g
VGhlIHRvcCBvZiB0aGUgc3RhY2sgY29udGFpbnMgdGhlCmxhc3Qgb2JqZWN0IHRoYXQgZW1pdHRl
ZCBzaWduYWwgdGhhdCBjYWxsZWQgYSBKYXZhU2NyaXB0IGZ1bmN0aW9uLgoKKiBicmlkZ2UvcXQv
cXRfaW5zdGFuY2UuaDoKKEpTQzo6QmluZGluZ3M6OlF0SW5zdGFuY2U6OlF0U2VuZGVyU3RhY2s6
OnRvcCk6CihKU0M6OkJpbmRpbmdzOjpRdEluc3RhbmNlOjpRdFNlbmRlclN0YWNrOjpwdXNoKToK
KEpTQzo6QmluZGluZ3M6OlF0SW5zdGFuY2U6OlF0U2VuZGVyU3RhY2s6OnBvcCk6Ck1pbmltYWwg
ZnVuY3Rpb25hbGl0eSB0byBtYW5pcHVsYXRlIHRoZSBzZW5kZXIgc3RhY2suCgoqIGJyaWRnZS9x
dC9xdF9ydW50aW1lLmNwcDoKKEpTQzo6QmluZGluZ3M6OlF0Q29ubmVjdGlvbk9iamVjdDo6ZXhl
Y3V0ZSk6ClJlbW92ZSB0aGUgcHJldmlvdXMgY29kZSB0aGF0IG1vZGlmaWVkIHRoZSBzY29wZSBj
aGFpbi4gUHVzaCB0aGUgc2VuZGVyIG9iamVjdAp0byB0aGUgc3RhY2sgYmVmb3JlIGNhbGxpbmcg
dGhlIEphdmFTY3JpcHQgZnVuY3Rpb24gKHRoZSAic2xvdCIgaW4gUXQtc3BlYWspIGFuZApwb3Ag
aXQgYWZ0ZXJ3YXJkcy4KClNvdXJjZS9XZWJLaXQvcXQ6CgpDcmVhdGUgYSAnX19xdF9zZW5kZXJf
XycgcHJvcGVydHkgaW4gdGhlIGdsb2JhbCBvYmplY3QsIHRoYXQgcmV0dXJucyB0aGUgdG9wIG9m
CnRoZSBxdFNlbmRlclN0YWNrLiBUaGlzIGlzIGFuIGFsdGVybmF0aXZlIGltcGxlbWVudGF0aW9u
IGZvciB0aGUgZmVhdHVyZSBvZgpwcm92aWRpbmcgYSB3YXkgZm9yIGEgZnVuY3Rpb24gKGFjdGlu
ZyBhcyBhIFF0ICdzbG90JykgZGlzY292ZXIgd2hpY2ggb2JqZWN0CmVtaXR0ZWQgdGhlIHNpZ25h
bCB0aGF0IGNhdXNlZCBpdCB0byBiZSBleGVjdXRlZC4KClRoaXMgcmVkdWNlcyB0aGUgY291cGxp
bmcgb2YgdGhlIFF0IGJyaWRnZSBhbmQgSlNDIGludGVybmFsIGltcGxlbWVudGF0aW9uLiBUaGUK
cGF0Y2ggdHJpZXMgdG8gdXNlIGFzIG11Y2ggSlNDIHB1YmxpYyBBUEkgYXMgcG9zc2libGUuCgpU
aGlzIGJlaGF2aW9yIGlzIGNvdmVyZWQgYnkgdGhlIHRzdF9RV2ViRnJhbWU6OmNvbm5lY3RBbmRE
aXNjb25uZWN0KCkgYXV0byB0ZXN0LgoKKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dFF0LmNwcDoKKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkQ2xlYXJX
aW5kb3dPYmplY3RJbldvcmxkKToKSW5zdGVhZCBvZiBlbWl0dGluZyB0aGUgUVdlYlBhZ2U6Omph
dmFTY3JpcHRXaW5kb3dPYmplY3RDbGVhcmVkKCkgZGlyZWN0bHksIGNhbGxzCmEgUVdlYlBhZ2VQ
cml2YXRlIGZ1bmN0aW9uIHRvIGRvIGl0LgoKKiBBcGkvcXdlYmZyYW1lX3AuaDoKKiBBcGkvcXdl
YmZyYW1lLmNwcDoKKFFXZWJGcmFtZVByaXZhdGU6OmRpZENsZWFyZWRXaW5kb3dPYmplY3QpOgpC
ZWZvcmUgZW1pdHRpbmcgdGhlIHNpZ25hbCBtZW50aW9uZWQsIGFkZHMgdGhlICdfX3F0X3NlbmRl
cl9fJyB0byB0aGUgZnJlc2gKZ2xvYmFsIG9iamVjdC4KCihxdFNlbmRlckNhbGxiYWNrKToKUmV0
dXJucyB0aGUgSlNPYmplY3RSZWYgY29ycmVzcG9uZGluZyB0byB0aGUgdG9wIG9mIHF0U2VuZGVy
U3RhY2suCgooUVdlYkZyYW1lUHJpdmF0ZTo6YWRkUXRTZW5kZXJUb0dsb2JhbE9iamVjdCk6CkNy
ZWF0ZSBhIHByb3BlcnR5IHdpdGggYSBxdFNlbmRlckNhbGxiYWNrIGFzIGdldHRlciBmdW5jdGlv
biBpbiB0aGUgZ2xvYmFsIG9iamVjdC4KLS0tCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgMzIgKysrKysrKysrKysrKwogU291cmNlL1dlYkNv
cmUvYnJpZGdlL3F0L3F0X2luc3RhbmNlLmNwcCAgICAgICAgICAgfCAgICA2ICsrKwogU291cmNl
L1dlYkNvcmUvYnJpZGdlL3F0L3F0X2luc3RhbmNlLmggICAgICAgICAgICAgfCAgIDEzICsrKysr
CiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5jcHAgICAgICAgICAgICB8ICAg
MjEgKysrLS0tLS0tCiBTb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwICAgICAgICAg
ICAgICAgICB8ICAgNDggKysrKysrKysrKysrKysrKysrKysKIFNvdXJjZS9XZWJLaXQvcXQvQXBp
L3F3ZWJmcmFtZV9wLmggICAgICAgICAgICAgICAgIHwgICAgNyArKysKIFNvdXJjZS9XZWJLaXQv
cXQvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzNCArKysrKysrKysrKysr
KwogLi4uL3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwICAgICAgfCAg
ICAyICstCiA4IGZpbGVzIGNoYW5nZWQsIDE0NyBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMo
LSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggN2NhOTY2NS4uNWZkOTBlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDM1IEBACisyMDExLTA1LTIzICBDYWlvIE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlv
Lm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgW1F0XSBKU0MgYnJpZGdlOiBpbXBsZW1lbnQgX19xdF9zZW5kZXJf
XyB3aXRob3V0IHVzaW5nIFNjb3BlIENoYWluCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02MTM0MworCisgICAgICAgIENyZWF0ZSBhIHN0YWNrIHRvIGtl
ZXAgdHJhY2sgb2YgdGhlIHNlbmRlciBvYmplY3RzLiBUaGlzIGlzIHNpbXBsZXIgdGhhbgorICAg
ICAgICB0aGUgc2ltaWxhciBtZWNoYW5pc20gaW4gUU9iamVjdCAoQysrIEFQSSksIHRoYXQga2Vl
cHMgYSBzdGFjayBwZXItb2JqZWN0LgorCisgICAgICAgIFNpbmNlIHdlIGRvIG5vdCBzdXBwb3J0
IG11bHRpcGxlIHRocmVhZHMsIG9uZSBzdGF0aWMgc3RhY2sgd2lsbCBiZSBlbm91Z2ggZm9yCisg
ICAgICAgIGhhbmRsaW5nIHRoZSBiZWhhdmlvci4KKworICAgICAgICBUaGlzIGJlaGF2aW9yIGlz
IGNvdmVyZWQgYnkgdGhlIHRzdF9RV2ViRnJhbWU6OmNvbm5lY3RBbmREaXNjb25uZWN0KCkgYXV0
byB0ZXN0LgorCisgICAgICAgICogYnJpZGdlL3F0L3F0X2luc3RhbmNlLmNwcDoKKyAgICAgICAg
KEpTQzo6QmluZGluZ3M6OlF0SW5zdGFuY2U6OnF0U2VuZGVyU3RhY2spOgorICAgICAgICBXZSBo
YXZlIG9uZSBzdGF0aWMgc3RhY2sgb2YgUU9iamVjdCouIFRoZSB0b3Agb2YgdGhlIHN0YWNrIGNv
bnRhaW5zIHRoZQorICAgICAgICBsYXN0IG9iamVjdCB0aGF0IGVtaXR0ZWQgc2lnbmFsIHRoYXQg
Y2FsbGVkIGEgSmF2YVNjcmlwdCBmdW5jdGlvbi4KKworICAgICAgICAqIGJyaWRnZS9xdC9xdF9p
bnN0YW5jZS5oOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UXRJbnN0YW5jZTo6UXRTZW5kZXJT
dGFjazo6dG9wKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlF0SW5zdGFuY2U6OlF0U2VuZGVy
U3RhY2s6OnB1c2gpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UXRJbnN0YW5jZTo6UXRTZW5k
ZXJTdGFjazo6cG9wKToKKyAgICAgICAgTWluaW1hbCBmdW5jdGlvbmFsaXR5IHRvIG1hbmlwdWxh
dGUgdGhlIHNlbmRlciBzdGFjay4KKworICAgICAgICAqIGJyaWRnZS9xdC9xdF9ydW50aW1lLmNw
cDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlF0Q29ubmVjdGlvbk9iamVjdDo6ZXhlY3V0ZSk6
CisgICAgICAgIFJlbW92ZSB0aGUgcHJldmlvdXMgY29kZSB0aGF0IG1vZGlmaWVkIHRoZSBzY29w
ZSBjaGFpbi4gUHVzaCB0aGUgc2VuZGVyIG9iamVjdAorICAgICAgICB0byB0aGUgc3RhY2sgYmVm
b3JlIGNhbGxpbmcgdGhlIEphdmFTY3JpcHQgZnVuY3Rpb24gKHRoZSAic2xvdCIgaW4gUXQtc3Bl
YWspIGFuZAorICAgICAgICBwb3AgaXQgYWZ0ZXJ3YXJkcy4KKwogMjAxMS0wNS0yNCAgUnl1YW4g
Q2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5k
cmVhcyBLbGluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9pbnN0
YW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2UuY3BwCmluZGV4
IDY4ZTI5NTQuLmEwNDUzZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9x
dF9pbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2luc3RhbmNl
LmNwcApAQCAtMzIxLDYgKzMyMSwxMiBAQCBKU1ZhbHVlIFF0SW5zdGFuY2U6OnZhbHVlT2YoRXhl
Y1N0YXRlKiBleGVjKSBjb25zdAogICAgIHJldHVybiBzdHJpbmdWYWx1ZShleGVjKTsKIH0KIAor
UXRJbnN0YW5jZTo6UXRTZW5kZXJTdGFjayogUXRJbnN0YW5jZTo6cXRTZW5kZXJTdGFjaygpCit7
CisgICAgc3RhdGljIFF0U2VuZGVyU3RhY2sgc2VuZGVyU3RhY2s7CisgICAgcmV0dXJuICZzZW5k
ZXJTdGFjazsKK30KKwogLy8gSW4gcXRfcnVudGltZS5jcHAKIEpTVmFsdWUgY29udmVydFFWYXJp
YW50VG9WYWx1ZShFeGVjU3RhdGUqLCBQYXNzUmVmUHRyPFJvb3RPYmplY3Q+IHJvb3QsIGNvbnN0
IFFWYXJpYW50JiB2YXJpYW50KTsKIFFWYXJpYW50IGNvbnZlcnRWYWx1ZVRvUVZhcmlhbnQoRXhl
Y1N0YXRlKiwgSlNWYWx1ZSwgUU1ldGFUeXBlOjpUeXBlIGhpbnQsIGludCAqZGlzdGFuY2UpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2luc3RhbmNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2UuaAppbmRleCAxZDUxY2EyLi42OTM1MDIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2UuaApAQCAtMjIsNiArMjIsNyBA
QAogCiAjaW5jbHVkZSAiQnJpZGdlSlNDLmgiCiAjaW5jbHVkZSAicnVudGltZV9yb290LmgiCisj
aW5jbHVkZSA8UVN0YWNrPgogI2luY2x1ZGUgPFF0U2NyaXB0L3FzY3JpcHRlbmdpbmUuaD4KICNp
bmNsdWRlIDxxaGFzaC5oPgogI2luY2x1ZGUgPHFwb2ludGVyLmg+CkBAIC03MSw2ICs3MiwxOCBA
QCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUXRJbnN0YW5jZSogZ2V0SW5zdGFuY2UoSlNPYmplY3Qq
KTsKIAorICAgIGNsYXNzIFF0U2VuZGVyU3RhY2sgeworICAgIHB1YmxpYzoKKyAgICAgICAgUU9i
amVjdCogdG9wKCkgY29uc3QgeyByZXR1cm4gbV9zdGFjay5pc0VtcHR5KCkgPyAwIDogbV9zdGFj
ay50b3AoKTsgfQorICAgICAgICB2b2lkIHB1c2goUU9iamVjdCogb2JqZWN0KSB7IG1fc3RhY2su
cHVzaChvYmplY3QpOyB9CisgICAgICAgIHZvaWQgcG9wKCkgeyBRX0FTU0VSVCghbV9zdGFjay5p
c0VtcHR5KCkpOyBtX3N0YWNrLnBvcCgpOyB9CisgICAgcHJpdmF0ZToKKyAgICAgICAgUVN0YWNr
PFFPYmplY3QqPiBtX3N0YWNrOworICAgIH07CisKKyAgICAvLyBVc2VkIHRvIGltcGxlbWVudCAn
X19xdF9zZW5kZXJfXycuCisgICAgc3RhdGljIFF0U2VuZGVyU3RhY2sqIHF0U2VuZGVyU3RhY2so
KTsKKwogcHJpdmF0ZToKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxRdEluc3RhbmNlPiBjcmVhdGUo
UU9iamVjdCAqaW5zdGFuY2UsIFBhc3NSZWZQdHI8Um9vdE9iamVjdD4gcm9vdE9iamVjdCwgUVNj
cmlwdEVuZ2luZTo6VmFsdWVPd25lcnNoaXAgb3duZXJzaGlwKQogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9xdC9xdF9ydW50aW1lLmNwcAppbmRleCA2MmQ0NDE3Li5hMTdlYjMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwCkBAIC0xODM4LDI2ICsxODM4LDE3IEBA
IHZvaWQgUXRDb25uZWN0aW9uT2JqZWN0OjpleGVjdXRlKHZvaWQgKiphcmd2KQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGwuYXBwZW5kKGpzVW5kZWZpbmVkKCkpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
IC8vIFN0dWZmIGluIHRoZSBfX3F0X3NlbmRlciBwcm9wZXJ0eSwgaWYgd2UgY2FuCi0gICAgICAg
ICAgICAgICAgICAgIFNjb3BlQ2hhaW5Ob2RlKiBvbGRzYyA9IDA7Ci0gICAgICAgICAgICAgICAg
ICAgIEpTRnVuY3Rpb24qIGZpbXAgPSAwOwotICAgICAgICAgICAgICAgICAgICBpZiAobV9mdW5j
T2JqZWN0LT5pbmhlcml0cygmSlNGdW5jdGlvbjo6c19pbmZvKSkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgZmltcCA9IHN0YXRpY19jYXN0PEpTRnVuY3Rpb24qPihtX2Z1bmNPYmplY3QuZ2V0
KCkpOwotCi0gICAgICAgICAgICAgICAgICAgICAgICBKU09iamVjdCogcXRfc2VuZGVyID0gUXRJ
bnN0YW5jZTo6Z2V0UXRJbnN0YW5jZShzZW5kZXIoKSwgcm8sIFFTY3JpcHRFbmdpbmU6OlF0T3du
ZXJzaGlwKS0+Y3JlYXRlUnVudGltZU9iamVjdChleGVjKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIEpTT2JqZWN0KiB3cmFwcGVyID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywgY3JlYXRl
RW1wdHlPYmplY3RTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBqc051bGwoKSkpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Q7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICB3cmFwcGVyLT5wdXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAiX19xdF9zZW5k
ZXJfXyIpLCBxdF9zZW5kZXIsIHNsb3QpOwotICAgICAgICAgICAgICAgICAgICAgICAgb2xkc2Mg
PSBmaW1wLT5zY29wZSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgZmltcC0+c2V0U2NvcGUo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBvbGRzYy0+cHVzaCh3cmFwcGVyKSk7Ci0gICAgICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBjb25zdCBib29sIHdpdGhRdFNlbmRlclN0
YWNrID0gbV9mdW5jT2JqZWN0LT5pbmhlcml0cygmSlNGdW5jdGlvbjo6c19pbmZvKTsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKHdpdGhRdFNlbmRlclN0YWNrKQorICAgICAgICAgICAgICAgICAg
ICAgICAgUXRJbnN0YW5jZTo6cXRTZW5kZXJTdGFjaygpLT5wdXNoKFFPYmplY3Q6OnNlbmRlcigp
KTsKIAogICAgICAgICAgICAgICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICAgICAgICAg
ICAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBtX2Z1bmNPYmplY3QtPmdldENhbGxEYXRhKGNh
bGxEYXRhKTsKICAgICAgICAgICAgICAgICAgICAgY2FsbChleGVjLCBtX2Z1bmNPYmplY3QuZ2V0
KCksIGNhbGxUeXBlLCBjYWxsRGF0YSwgbV90aGlzT2JqZWN0LmdldCgpLCBsKTsKIAotICAgICAg
ICAgICAgICAgICAgICBpZiAoZmltcCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGZpbXAtPnNl
dFNjb3BlKGV4ZWMtPmdsb2JhbERhdGEoKSwgb2xkc2MpOworICAgICAgICAgICAgICAgICAgICBp
ZiAod2l0aFF0U2VuZGVyU3RhY2spCisgICAgICAgICAgICAgICAgICAgICAgICBRdEluc3RhbmNl
OjpxdFNlbmRlclN0YWNrKCktPnBvcCgpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1l
LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAKaW5kZXggYmM4N2RkMS4u
MDUzYmE2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCkBAIC0yMiw2ICsyMiw3IEBA
CiAjaW5jbHVkZSAicXdlYmZyYW1lLmgiCiAKICNpZiBVU0UoSlNDKQorI2luY2x1ZGUgIkFQSUNh
c3QuaCIKICNpbmNsdWRlICJCcmlkZ2VKU0MuaCIKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNl
bGlmIFVTRShWOCkKQEAgLTQ5LDEwICs1MCwxMyBAQAogI2luY2x1ZGUgIkljb25EYXRhYmFzZS5o
IgogI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpZiBVU0UoSlNDKQorI2luY2x1
ZGUgIkphdmFTY3JpcHQuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJK
U0RPTVdpbmRvd0Jhc2UuaCIKICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJKU09iamVj
dC5oIgorI2luY2x1ZGUgIkpTUmV0YWluUHRyLmgiCisjaW5jbHVkZSAiT3BhcXVlSlNTdHJpbmcu
aCIKICNlbGlmIFVTRShWOCkKICNpbmNsdWRlICJWOERPTVdyYXBwZXIuaCIKICNpbmNsdWRlICJW
OERPTVdpbmRvd1NoZWxsLmgiCkBAIC00NzEsNiArNDc1LDUwIEBAIHZvaWQgUVdlYkZyYW1lUHJp
dmF0ZTo6X3Ffb3JpZW50YXRpb25DaGFuZ2VkKCkKICAgICBmcmFtZS0+c2VuZE9yaWVudGF0aW9u
Q2hhbmdlRXZlbnQob3JpZW50YXRpb24pOwogI2VuZGlmCiB9CisKK3ZvaWQgUVdlYkZyYW1lUHJp
dmF0ZTo6ZGlkQ2xlYXJXaW5kb3dPYmplY3QoKQoreworI2lmIFVTRShKU0MpCisgICAgaWYgKHBh
Z2UtPnNldHRpbmdzKCktPnRlc3RBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpKYXZhc2NyaXB0RW5h
YmxlZCkpCisgICAgICAgIGFkZFF0U2VuZGVyVG9HbG9iYWxPYmplY3QoKTsKKyNlbmRpZgorICAg
IGVtaXQgcS0+amF2YVNjcmlwdFdpbmRvd09iamVjdENsZWFyZWQoKTsKK30KKworI2lmIFVTRShK
U0MpCitzdGF0aWMgSlNWYWx1ZVJlZiBxdFNlbmRlckNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250
ZXh0LCBKU09iamVjdFJlZiwgSlNPYmplY3RSZWYsIHNpemVfdCwgY29uc3QgSlNWYWx1ZVJlZltd
LCBKU1ZhbHVlUmVmKikKK3sKKyAgICBRT2JqZWN0KiBzZW5kZXIgPSBKU0M6OkJpbmRpbmdzOjpR
dEluc3RhbmNlOjpxdFNlbmRlclN0YWNrKCktPnRvcCgpOworICAgIGlmICghc2VuZGVyKQorICAg
ICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisKKyAgICBKU0M6OkV4
ZWNTdGF0ZSogZXhlYyA9IDo6dG9KUyhjb250ZXh0KTsKKyAgICAvLyBGSVhNRTogSXMgdGhpcyB0
aGUgY29ycmVjdCBSb290T2JqZWN0PworICAgIFJlZlB0cjxKU0M6OkJpbmRpbmdzOjpSb290T2Jq
ZWN0PiByb290T2JqZWN0ID0gSlNDOjpCaW5kaW5nczo6ZmluZFJvb3RPYmplY3QoZXhlYy0+ZHlu
YW1pY0dsb2JhbE9iamVjdCgpKTsKKyAgICBKU0M6OkpTT2JqZWN0KiBqc1NlbmRlciA9IEpTQzo6
QmluZGluZ3M6OlF0SW5zdGFuY2U6OmdldFF0SW5zdGFuY2Uoc2VuZGVyLCByb290T2JqZWN0LCBR
U2NyaXB0RW5naW5lOjpRdE93bmVyc2hpcCktPmNyZWF0ZVJ1bnRpbWVPYmplY3QoZXhlYyk7Cisg
ICAgcmV0dXJuIDo6dG9SZWYoanNTZW5kZXIpOworfQorCit2b2lkIFFXZWJGcmFtZVByaXZhdGU6
OmFkZFF0U2VuZGVyVG9HbG9iYWxPYmplY3QoKQoreworICAgIEpTQzo6SlNMb2NrIGxvY2soSlND
OjpTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOworCisgICAgSlNET01XaW5kb3cqIHdpbmRvdyA9IHRv
SlNET01XaW5kb3coZnJhbWUsIG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKKyAgICBRX0FTU0VS
VCh3aW5kb3cpOworCisgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSB3aW5kb3ctPmdsb2JhbEV4
ZWMoKTsKKyAgICBRX0FTU0VSVChleGVjKTsKKworICAgIEpTQ29udGV4dFJlZiBjb250ZXh0ID0g
Ojp0b1JlZihleGVjKTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gcHJvcGVydHlOYW1l
KEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiX19xdF9zZW5kZXJfXyIpKTsK
KyAgICBKU09iamVjdFJlZiBmdW5jdGlvbiA9IEpTT2JqZWN0TWFrZUZ1bmN0aW9uV2l0aENhbGxi
YWNrKGNvbnRleHQsIHByb3BlcnR5TmFtZS5nZXQoKSwgcXRTZW5kZXJDYWxsYmFjayk7CisKKyAg
ICAvLyBKU0MgcHVibGljIEFQSSBkb2Vzbid0IHN1cHBvcnQgc2V0dGluZyBhIEdldHRlciBmb3Ig
YSBwcm9wZXJ0eSBvZiBhIGdpdmVuIG9iamVjdC4KKyAgICB3aW5kb3ctPmRlZmluZUdldHRlcihl
eGVjLCBwcm9wZXJ0eU5hbWUuZ2V0KCktPmlkZW50aWZpZXIoJmV4ZWMtPmdsb2JhbERhdGEoKSks
IDo6dG9KUyhmdW5jdGlvbiksCisgICAgICAgICAgICAgICAgICAgICAgICAgSlNDOjpSZWFkT25s
eSB8IEpTQzo6RG9udEVudW0gfCBKU0M6OkRvbnREZWxldGUpOworfQorI2VuZGlmCisKIC8qIQog
ICAgIFxjbGFzcyBRV2ViRnJhbWUKICAgICBcc2luY2UgNC40CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3F0L0FwaS9xd2ViZnJhbWVfcC5oIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmZy
YW1lX3AuaAppbmRleCA3NzFlNjhhLi5kYmRiYzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3F0L0FwaS9xd2ViZnJhbWVfcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFt
ZV9wLmgKQEAgLTEwOCw2ICsxMDgsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbWl0VXJsQ2hhbmdl
ZCgpOwogICAgIHZvaWQgX3Ffb3JpZW50YXRpb25DaGFuZ2VkKCk7CiAKKyAgICB2b2lkIGRpZENs
ZWFyV2luZG93T2JqZWN0KCk7CisKICAgICBRV2ViRnJhbWUgKnE7CiAgICAgUXQ6OlNjcm9sbEJh
clBvbGljeSBob3Jpem9udGFsU2Nyb2xsQmFyUG9saWN5OwogICAgIFF0OjpTY3JvbGxCYXJQb2xp
Y3kgdmVydGljYWxTY3JvbGxCYXJQb2xpY3k7CkBAIC0xMjcsNiArMTI5LDExIEBAIHB1YmxpYzoK
ICNpZiBFTkFCTEUoT1JJRU5UQVRJT05fRVZFTlRTKSAmJiBFTkFCTEUoREVWSUNFX09SSUVOVEFU
SU9OKQogICAgIFF0TW9iaWxpdHk6OlFPcmllbnRhdGlvblNlbnNvciBtX29yaWVudGF0aW9uOwog
I2VuZGlmCisKK3ByaXZhdGU6CisjaWYgVVNFKEpTQykKKyAgICB2b2lkIGFkZFF0U2VuZGVyVG9H
bG9iYWxPYmplY3QoKTsKKyNlbmRpZgogfTsKIAogY2xhc3MgUVdlYkhpdFRlc3RSZXN1bHRQcml2
YXRlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggZDk3NDA0ZC4uMzE3MDk3YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwzNyBAQAorMjAxMS0wNS0yMyAgQ2FpbyBNYXJjZWxvIGRlIE9saXZlaXJhIEZp
bGhvICA8Y2Fpby5vbGl2ZWlyYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtRdF0gSlNDIGJyaWRnZTogaW1wbGVtZW50IF9f
cXRfc2VuZGVyX18gd2l0aG91dCB1c2luZyBTY29wZSBDaGFpbgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjEzNDMKKworICAgICAgICBDcmVhdGUgYSAn
X19xdF9zZW5kZXJfXycgcHJvcGVydHkgaW4gdGhlIGdsb2JhbCBvYmplY3QsIHRoYXQgcmV0dXJu
cyB0aGUgdG9wIG9mCisgICAgICAgIHRoZSBxdFNlbmRlclN0YWNrLiBUaGlzIGlzIGFuIGFsdGVy
bmF0aXZlIGltcGxlbWVudGF0aW9uIGZvciB0aGUgZmVhdHVyZSBvZgorICAgICAgICBwcm92aWRp
bmcgYSB3YXkgZm9yIGEgZnVuY3Rpb24gKGFjdGluZyBhcyBhIFF0ICdzbG90JykgZGlzY292ZXIg
d2hpY2ggb2JqZWN0CisgICAgICAgIGVtaXR0ZWQgdGhlIHNpZ25hbCB0aGF0IGNhdXNlZCBpdCB0
byBiZSBleGVjdXRlZC4KKworICAgICAgICBUaGlzIHJlZHVjZXMgdGhlIGNvdXBsaW5nIG9mIHRo
ZSBRdCBicmlkZ2UgYW5kIEpTQyBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbi4gVGhlCisgICAgICAg
IHBhdGNoIHRyaWVzIHRvIHVzZSBhcyBtdWNoIEpTQyBwdWJsaWMgQVBJIGFzIHBvc3NpYmxlLgor
CisgICAgICAgIFRoaXMgYmVoYXZpb3IgaXMgY292ZXJlZCBieSB0aGUgdHN0X1FXZWJGcmFtZTo6
Y29ubmVjdEFuZERpc2Nvbm5lY3QoKSBhdXRvIHRlc3QuCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKToKKyAgICAg
ICAgSW5zdGVhZCBvZiBlbWl0dGluZyB0aGUgUVdlYlBhZ2U6OmphdmFTY3JpcHRXaW5kb3dPYmpl
Y3RDbGVhcmVkKCkgZGlyZWN0bHksIGNhbGxzCisgICAgICAgIGEgUVdlYlBhZ2VQcml2YXRlIGZ1
bmN0aW9uIHRvIGRvIGl0LgorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZV9wLmg6CisgICAgICAg
ICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViRnJhbWVQcml2YXRlOjpkaWRDbGVh
cmVkV2luZG93T2JqZWN0KToKKyAgICAgICAgQmVmb3JlIGVtaXR0aW5nIHRoZSBzaWduYWwgbWVu
dGlvbmVkLCBhZGRzIHRoZSAnX19xdF9zZW5kZXJfXycgdG8gdGhlIGZyZXNoCisgICAgICAgIGds
b2JhbCBvYmplY3QuCisKKyAgICAgICAgKHF0U2VuZGVyQ2FsbGJhY2spOgorICAgICAgICBSZXR1
cm5zIHRoZSBKU09iamVjdFJlZiBjb3JyZXNwb25kaW5nIHRvIHRoZSB0b3Agb2YgcXRTZW5kZXJT
dGFjay4KKworICAgICAgICAoUVdlYkZyYW1lUHJpdmF0ZTo6YWRkUXRTZW5kZXJUb0dsb2JhbE9i
amVjdCk6CisgICAgICAgIENyZWF0ZSBhIHByb3BlcnR5IHdpdGggYSBxdFNlbmRlckNhbGxiYWNr
IGFzIGdldHRlciBmdW5jdGlvbiBpbiB0aGUgZ2xvYmFsIG9iamVjdC4KKwogMjAxMS0wNS0yMyAg
THVpeiBBZ29zdGluaSAgPGx1aXouYWdvc3RpbmlAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKaW5kZXggNTZiZTMyNC4uMzUw
ZDhhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50UXQuY3BwCkBAIC03NjIsNyArNzYyLDcgQEAgdm9pZCBGcmFtZUxvYWRl
ckNsaWVudFF0OjpkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChET01XcmFwcGVy
V29ybGQqIHcKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fd2ViRnJhbWUpCi0gICAgICAg
IGVtaXQgbV93ZWJGcmFtZS0+amF2YVNjcmlwdFdpbmRvd09iamVjdENsZWFyZWQoKTsKKyAgICAg
ICAgbV93ZWJGcmFtZS0+ZC0+ZGlkQ2xlYXJXaW5kb3dPYmplY3QoKTsKIH0KIAogdm9pZCBGcmFt
ZUxvYWRlckNsaWVudFF0Ojpkb2N1bWVudEVsZW1lbnRBdmFpbGFibGUoKQotLSAKMS43LjQuNAoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>94660</attachid>
            <date>2011-05-24 12:10:15 -0700</date>
            <delta_ts>2011-05-25 10:29:41 -0700</delta_ts>
            <desc>Patch v3, remove RootObject comment, add bug URL to API comment</desc>
            <filename>0001-Qt-JSC-bridge-implement-__qt_sender__-without-using-.patch</filename>
            <type>text/plain</type>
            <size>14250</size>
            <attacher name="Caio Marcelo de Oliveira Filho">cmarcelo</attacher>
            
              <data encoding="base64">RnJvbSA5N2M0ZTI0MzgxYmJiY2YxMjIxZjdlODMxNmMwMDhhMjRhMjg3NzNjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDYWlvIE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gPGNhaW8u
b2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4KRGF0ZTogVHVlLCAyNCBNYXkgMjAxMSAxMzoyNjoyMSAt
MDMwMApTdWJqZWN0OiBbUEFUQ0hdIFtRdF0gSlNDIGJyaWRnZTogaW1wbGVtZW50IF9fcXRfc2Vu
ZGVyX18gd2l0aG91dCB1c2luZyBTY29wZQogQ2hhaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTYxMzQzCgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KClNvdXJj
ZS9XZWJDb3JlOgoKQ3JlYXRlIGEgc3RhY2sgdG8ga2VlcCB0cmFjayBvZiB0aGUgc2VuZGVyIG9i
amVjdHMuIFRoaXMgaXMgc2ltcGxlciB0aGFuCnRoZSBzaW1pbGFyIG1lY2hhbmlzbSBpbiBRT2Jq
ZWN0IChDKysgQVBJKSwgdGhhdCBrZWVwcyBhIHN0YWNrIHBlci1vYmplY3QuCgpTaW5jZSB3ZSBk
byBub3Qgc3VwcG9ydCBtdWx0aXBsZSB0aHJlYWRzLCBvbmUgc3RhdGljIHN0YWNrIHdpbGwgYmUg
ZW5vdWdoIGZvcgpoYW5kbGluZyB0aGUgYmVoYXZpb3IuCgpUaGlzIGJlaGF2aW9yIGlzIGNvdmVy
ZWQgYnkgdGhlIHRzdF9RV2ViRnJhbWU6OmNvbm5lY3RBbmREaXNjb25uZWN0KCkgYXV0byB0ZXN0
LgoKKiBicmlkZ2UvcXQvcXRfaW5zdGFuY2UuY3BwOgooSlNDOjpCaW5kaW5nczo6UXRJbnN0YW5j
ZTo6cXRTZW5kZXJTdGFjayk6CldlIGhhdmUgb25lIHN0YXRpYyBzdGFjayBvZiBRT2JqZWN0Ki4g
VGhlIHRvcCBvZiB0aGUgc3RhY2sgY29udGFpbnMgdGhlCmxhc3Qgb2JqZWN0IHRoYXQgZW1pdHRl
ZCBzaWduYWwgdGhhdCBjYWxsZWQgYSBKYXZhU2NyaXB0IGZ1bmN0aW9uLgoKKiBicmlkZ2UvcXQv
cXRfaW5zdGFuY2UuaDoKKEpTQzo6QmluZGluZ3M6OlF0SW5zdGFuY2U6OlF0U2VuZGVyU3RhY2s6
OnRvcCk6CihKU0M6OkJpbmRpbmdzOjpRdEluc3RhbmNlOjpRdFNlbmRlclN0YWNrOjpwdXNoKToK
KEpTQzo6QmluZGluZ3M6OlF0SW5zdGFuY2U6OlF0U2VuZGVyU3RhY2s6OnBvcCk6Ck1pbmltYWwg
ZnVuY3Rpb25hbGl0eSB0byBtYW5pcHVsYXRlIHRoZSBzZW5kZXIgc3RhY2suCgoqIGJyaWRnZS9x
dC9xdF9ydW50aW1lLmNwcDoKKEpTQzo6QmluZGluZ3M6OlF0Q29ubmVjdGlvbk9iamVjdDo6ZXhl
Y3V0ZSk6ClJlbW92ZSB0aGUgcHJldmlvdXMgY29kZSB0aGF0IG1vZGlmaWVkIHRoZSBzY29wZSBj
aGFpbi4gUHVzaCB0aGUgc2VuZGVyIG9iamVjdAp0byB0aGUgc3RhY2sgYmVmb3JlIGNhbGxpbmcg
dGhlIEphdmFTY3JpcHQgZnVuY3Rpb24gKHRoZSAic2xvdCIgaW4gUXQtc3BlYWspIGFuZApwb3Ag
aXQgYWZ0ZXJ3YXJkcy4KClNvdXJjZS9XZWJLaXQvcXQ6CgpDcmVhdGUgYSAnX19xdF9zZW5kZXJf
XycgcHJvcGVydHkgaW4gdGhlIGdsb2JhbCBvYmplY3QsIHRoYXQgcmV0dXJucyB0aGUgdG9wIG9m
CnRoZSBxdFNlbmRlclN0YWNrLiBUaGlzIGlzIGFuIGFsdGVybmF0aXZlIGltcGxlbWVudGF0aW9u
IGZvciB0aGUgZmVhdHVyZSBvZgpwcm92aWRpbmcgYSB3YXkgZm9yIGEgZnVuY3Rpb24gKGFjdGlu
ZyBhcyBhIFF0ICdzbG90JykgZGlzY292ZXIgd2hpY2ggb2JqZWN0CmVtaXR0ZWQgdGhlIHNpZ25h
bCB0aGF0IGNhdXNlZCBpdCB0byBiZSBleGVjdXRlZC4KClRoaXMgcmVkdWNlcyB0aGUgY291cGxp
bmcgb2YgdGhlIFF0IGJyaWRnZSBhbmQgSlNDIGludGVybmFsIGltcGxlbWVudGF0aW9uLiBUaGUK
cGF0Y2ggdHJpZXMgdG8gdXNlIGFzIG11Y2ggSlNDIHB1YmxpYyBBUEkgYXMgcG9zc2libGUuCgpU
aGlzIGJlaGF2aW9yIGlzIGNvdmVyZWQgYnkgdGhlIHRzdF9RV2ViRnJhbWU6OmNvbm5lY3RBbmRE
aXNjb25uZWN0KCkgYXV0byB0ZXN0LgoKKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dFF0LmNwcDoKKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkQ2xlYXJX
aW5kb3dPYmplY3RJbldvcmxkKToKSW5zdGVhZCBvZiBlbWl0dGluZyB0aGUgUVdlYlBhZ2U6Omph
dmFTY3JpcHRXaW5kb3dPYmplY3RDbGVhcmVkKCkgZGlyZWN0bHksIGNhbGxzCmEgUVdlYlBhZ2VQ
cml2YXRlIGZ1bmN0aW9uIHRvIGRvIGl0LgoKKiBBcGkvcXdlYmZyYW1lX3AuaDoKKiBBcGkvcXdl
YmZyYW1lLmNwcDoKKFFXZWJGcmFtZVByaXZhdGU6OmRpZENsZWFyZWRXaW5kb3dPYmplY3QpOgpC
ZWZvcmUgZW1pdHRpbmcgdGhlIHNpZ25hbCBtZW50aW9uZWQsIGFkZHMgdGhlICdfX3F0X3NlbmRl
cl9fJyB0byB0aGUgZnJlc2gKZ2xvYmFsIG9iamVjdC4KCihxdFNlbmRlckNhbGxiYWNrKToKUmV0
dXJucyB0aGUgSlNPYmplY3RSZWYgY29ycmVzcG9uZGluZyB0byB0aGUgdG9wIG9mIHF0U2VuZGVy
U3RhY2suCgooUVdlYkZyYW1lUHJpdmF0ZTo6YWRkUXRTZW5kZXJUb0dsb2JhbE9iamVjdCk6CkNy
ZWF0ZSBhIHByb3BlcnR5IHdpdGggYSBxdFNlbmRlckNhbGxiYWNrIGFzIGdldHRlciBmdW5jdGlv
biBpbiB0aGUgZ2xvYmFsIG9iamVjdC4KLS0tCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgMzIgKysrKysrKysrKysrKwogU291cmNlL1dlYkNv
cmUvYnJpZGdlL3F0L3F0X2luc3RhbmNlLmNwcCAgICAgICAgICAgfCAgICA2ICsrKwogU291cmNl
L1dlYkNvcmUvYnJpZGdlL3F0L3F0X2luc3RhbmNlLmggICAgICAgICAgICAgfCAgIDEzICsrKysr
CiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5jcHAgICAgICAgICAgICB8ICAg
MjEgKysrLS0tLS0tCiBTb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwICAgICAgICAg
ICAgICAgICB8ICAgNDcgKysrKysrKysrKysrKysrKysrKysKIFNvdXJjZS9XZWJLaXQvcXQvQXBp
L3F3ZWJmcmFtZV9wLmggICAgICAgICAgICAgICAgIHwgICAgNyArKysKIFNvdXJjZS9XZWJLaXQv
cXQvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzNCArKysrKysrKysrKysr
KwogLi4uL3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwICAgICAgfCAg
ICAyICstCiA4IGZpbGVzIGNoYW5nZWQsIDE0NiBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMo
LSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggN2NhOTY2NS4uNWZkOTBlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDM1IEBACisyMDExLTA1LTIzICBDYWlvIE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlv
Lm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgW1F0XSBKU0MgYnJpZGdlOiBpbXBsZW1lbnQgX19xdF9zZW5kZXJf
XyB3aXRob3V0IHVzaW5nIFNjb3BlIENoYWluCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02MTM0MworCisgICAgICAgIENyZWF0ZSBhIHN0YWNrIHRvIGtl
ZXAgdHJhY2sgb2YgdGhlIHNlbmRlciBvYmplY3RzLiBUaGlzIGlzIHNpbXBsZXIgdGhhbgorICAg
ICAgICB0aGUgc2ltaWxhciBtZWNoYW5pc20gaW4gUU9iamVjdCAoQysrIEFQSSksIHRoYXQga2Vl
cHMgYSBzdGFjayBwZXItb2JqZWN0LgorCisgICAgICAgIFNpbmNlIHdlIGRvIG5vdCBzdXBwb3J0
IG11bHRpcGxlIHRocmVhZHMsIG9uZSBzdGF0aWMgc3RhY2sgd2lsbCBiZSBlbm91Z2ggZm9yCisg
ICAgICAgIGhhbmRsaW5nIHRoZSBiZWhhdmlvci4KKworICAgICAgICBUaGlzIGJlaGF2aW9yIGlz
IGNvdmVyZWQgYnkgdGhlIHRzdF9RV2ViRnJhbWU6OmNvbm5lY3RBbmREaXNjb25uZWN0KCkgYXV0
byB0ZXN0LgorCisgICAgICAgICogYnJpZGdlL3F0L3F0X2luc3RhbmNlLmNwcDoKKyAgICAgICAg
KEpTQzo6QmluZGluZ3M6OlF0SW5zdGFuY2U6OnF0U2VuZGVyU3RhY2spOgorICAgICAgICBXZSBo
YXZlIG9uZSBzdGF0aWMgc3RhY2sgb2YgUU9iamVjdCouIFRoZSB0b3Agb2YgdGhlIHN0YWNrIGNv
bnRhaW5zIHRoZQorICAgICAgICBsYXN0IG9iamVjdCB0aGF0IGVtaXR0ZWQgc2lnbmFsIHRoYXQg
Y2FsbGVkIGEgSmF2YVNjcmlwdCBmdW5jdGlvbi4KKworICAgICAgICAqIGJyaWRnZS9xdC9xdF9p
bnN0YW5jZS5oOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UXRJbnN0YW5jZTo6UXRTZW5kZXJT
dGFjazo6dG9wKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlF0SW5zdGFuY2U6OlF0U2VuZGVy
U3RhY2s6OnB1c2gpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UXRJbnN0YW5jZTo6UXRTZW5k
ZXJTdGFjazo6cG9wKToKKyAgICAgICAgTWluaW1hbCBmdW5jdGlvbmFsaXR5IHRvIG1hbmlwdWxh
dGUgdGhlIHNlbmRlciBzdGFjay4KKworICAgICAgICAqIGJyaWRnZS9xdC9xdF9ydW50aW1lLmNw
cDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlF0Q29ubmVjdGlvbk9iamVjdDo6ZXhlY3V0ZSk6
CisgICAgICAgIFJlbW92ZSB0aGUgcHJldmlvdXMgY29kZSB0aGF0IG1vZGlmaWVkIHRoZSBzY29w
ZSBjaGFpbi4gUHVzaCB0aGUgc2VuZGVyIG9iamVjdAorICAgICAgICB0byB0aGUgc3RhY2sgYmVm
b3JlIGNhbGxpbmcgdGhlIEphdmFTY3JpcHQgZnVuY3Rpb24gKHRoZSAic2xvdCIgaW4gUXQtc3Bl
YWspIGFuZAorICAgICAgICBwb3AgaXQgYWZ0ZXJ3YXJkcy4KKwogMjAxMS0wNS0yNCAgUnl1YW4g
Q2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5k
cmVhcyBLbGluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9pbnN0
YW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2UuY3BwCmluZGV4
IDY4ZTI5NTQuLmEwNDUzZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9x
dF9pbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2luc3RhbmNl
LmNwcApAQCAtMzIxLDYgKzMyMSwxMiBAQCBKU1ZhbHVlIFF0SW5zdGFuY2U6OnZhbHVlT2YoRXhl
Y1N0YXRlKiBleGVjKSBjb25zdAogICAgIHJldHVybiBzdHJpbmdWYWx1ZShleGVjKTsKIH0KIAor
UXRJbnN0YW5jZTo6UXRTZW5kZXJTdGFjayogUXRJbnN0YW5jZTo6cXRTZW5kZXJTdGFjaygpCit7
CisgICAgc3RhdGljIFF0U2VuZGVyU3RhY2sgc2VuZGVyU3RhY2s7CisgICAgcmV0dXJuICZzZW5k
ZXJTdGFjazsKK30KKwogLy8gSW4gcXRfcnVudGltZS5jcHAKIEpTVmFsdWUgY29udmVydFFWYXJp
YW50VG9WYWx1ZShFeGVjU3RhdGUqLCBQYXNzUmVmUHRyPFJvb3RPYmplY3Q+IHJvb3QsIGNvbnN0
IFFWYXJpYW50JiB2YXJpYW50KTsKIFFWYXJpYW50IGNvbnZlcnRWYWx1ZVRvUVZhcmlhbnQoRXhl
Y1N0YXRlKiwgSlNWYWx1ZSwgUU1ldGFUeXBlOjpUeXBlIGhpbnQsIGludCAqZGlzdGFuY2UpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2luc3RhbmNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2UuaAppbmRleCAxZDUxY2EyLi42OTM1MDIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2UuaApAQCAtMjIsNiArMjIsNyBA
QAogCiAjaW5jbHVkZSAiQnJpZGdlSlNDLmgiCiAjaW5jbHVkZSAicnVudGltZV9yb290LmgiCisj
aW5jbHVkZSA8UVN0YWNrPgogI2luY2x1ZGUgPFF0U2NyaXB0L3FzY3JpcHRlbmdpbmUuaD4KICNp
bmNsdWRlIDxxaGFzaC5oPgogI2luY2x1ZGUgPHFwb2ludGVyLmg+CkBAIC03MSw2ICs3MiwxOCBA
QCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUXRJbnN0YW5jZSogZ2V0SW5zdGFuY2UoSlNPYmplY3Qq
KTsKIAorICAgIGNsYXNzIFF0U2VuZGVyU3RhY2sgeworICAgIHB1YmxpYzoKKyAgICAgICAgUU9i
amVjdCogdG9wKCkgY29uc3QgeyByZXR1cm4gbV9zdGFjay5pc0VtcHR5KCkgPyAwIDogbV9zdGFj
ay50b3AoKTsgfQorICAgICAgICB2b2lkIHB1c2goUU9iamVjdCogb2JqZWN0KSB7IG1fc3RhY2su
cHVzaChvYmplY3QpOyB9CisgICAgICAgIHZvaWQgcG9wKCkgeyBRX0FTU0VSVCghbV9zdGFjay5p
c0VtcHR5KCkpOyBtX3N0YWNrLnBvcCgpOyB9CisgICAgcHJpdmF0ZToKKyAgICAgICAgUVN0YWNr
PFFPYmplY3QqPiBtX3N0YWNrOworICAgIH07CisKKyAgICAvLyBVc2VkIHRvIGltcGxlbWVudCAn
X19xdF9zZW5kZXJfXycuCisgICAgc3RhdGljIFF0U2VuZGVyU3RhY2sqIHF0U2VuZGVyU3RhY2so
KTsKKwogcHJpdmF0ZToKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxRdEluc3RhbmNlPiBjcmVhdGUo
UU9iamVjdCAqaW5zdGFuY2UsIFBhc3NSZWZQdHI8Um9vdE9iamVjdD4gcm9vdE9iamVjdCwgUVNj
cmlwdEVuZ2luZTo6VmFsdWVPd25lcnNoaXAgb3duZXJzaGlwKQogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9xdC9xdF9ydW50aW1lLmNwcAppbmRleCA2MmQ0NDE3Li5hMTdlYjMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwCkBAIC0xODM4LDI2ICsxODM4LDE3IEBA
IHZvaWQgUXRDb25uZWN0aW9uT2JqZWN0OjpleGVjdXRlKHZvaWQgKiphcmd2KQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGwuYXBwZW5kKGpzVW5kZWZpbmVkKCkpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
IC8vIFN0dWZmIGluIHRoZSBfX3F0X3NlbmRlciBwcm9wZXJ0eSwgaWYgd2UgY2FuCi0gICAgICAg
ICAgICAgICAgICAgIFNjb3BlQ2hhaW5Ob2RlKiBvbGRzYyA9IDA7Ci0gICAgICAgICAgICAgICAg
ICAgIEpTRnVuY3Rpb24qIGZpbXAgPSAwOwotICAgICAgICAgICAgICAgICAgICBpZiAobV9mdW5j
T2JqZWN0LT5pbmhlcml0cygmSlNGdW5jdGlvbjo6c19pbmZvKSkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgZmltcCA9IHN0YXRpY19jYXN0PEpTRnVuY3Rpb24qPihtX2Z1bmNPYmplY3QuZ2V0
KCkpOwotCi0gICAgICAgICAgICAgICAgICAgICAgICBKU09iamVjdCogcXRfc2VuZGVyID0gUXRJ
bnN0YW5jZTo6Z2V0UXRJbnN0YW5jZShzZW5kZXIoKSwgcm8sIFFTY3JpcHRFbmdpbmU6OlF0T3du
ZXJzaGlwKS0+Y3JlYXRlUnVudGltZU9iamVjdChleGVjKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIEpTT2JqZWN0KiB3cmFwcGVyID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywgY3JlYXRl
RW1wdHlPYmplY3RTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBqc051bGwoKSkpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Q7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICB3cmFwcGVyLT5wdXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAiX19xdF9zZW5k
ZXJfXyIpLCBxdF9zZW5kZXIsIHNsb3QpOwotICAgICAgICAgICAgICAgICAgICAgICAgb2xkc2Mg
PSBmaW1wLT5zY29wZSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgZmltcC0+c2V0U2NvcGUo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBvbGRzYy0+cHVzaCh3cmFwcGVyKSk7Ci0gICAgICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBjb25zdCBib29sIHdpdGhRdFNlbmRlclN0
YWNrID0gbV9mdW5jT2JqZWN0LT5pbmhlcml0cygmSlNGdW5jdGlvbjo6c19pbmZvKTsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKHdpdGhRdFNlbmRlclN0YWNrKQorICAgICAgICAgICAgICAgICAg
ICAgICAgUXRJbnN0YW5jZTo6cXRTZW5kZXJTdGFjaygpLT5wdXNoKFFPYmplY3Q6OnNlbmRlcigp
KTsKIAogICAgICAgICAgICAgICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICAgICAgICAg
ICAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBtX2Z1bmNPYmplY3QtPmdldENhbGxEYXRhKGNh
bGxEYXRhKTsKICAgICAgICAgICAgICAgICAgICAgY2FsbChleGVjLCBtX2Z1bmNPYmplY3QuZ2V0
KCksIGNhbGxUeXBlLCBjYWxsRGF0YSwgbV90aGlzT2JqZWN0LmdldCgpLCBsKTsKIAotICAgICAg
ICAgICAgICAgICAgICBpZiAoZmltcCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGZpbXAtPnNl
dFNjb3BlKGV4ZWMtPmdsb2JhbERhdGEoKSwgb2xkc2MpOworICAgICAgICAgICAgICAgICAgICBp
ZiAod2l0aFF0U2VuZGVyU3RhY2spCisgICAgICAgICAgICAgICAgICAgICAgICBRdEluc3RhbmNl
OjpxdFNlbmRlclN0YWNrKCktPnBvcCgpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1l
LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAKaW5kZXggYmM4N2RkMS4u
Y2MyZWYwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCkBAIC0yMiw2ICsyMiw3IEBA
CiAjaW5jbHVkZSAicXdlYmZyYW1lLmgiCiAKICNpZiBVU0UoSlNDKQorI2luY2x1ZGUgIkFQSUNh
c3QuaCIKICNpbmNsdWRlICJCcmlkZ2VKU0MuaCIKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNl
bGlmIFVTRShWOCkKQEAgLTQ5LDEwICs1MCwxMyBAQAogI2luY2x1ZGUgIkljb25EYXRhYmFzZS5o
IgogI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpZiBVU0UoSlNDKQorI2luY2x1
ZGUgIkphdmFTY3JpcHQuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJK
U0RPTVdpbmRvd0Jhc2UuaCIKICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJKU09iamVj
dC5oIgorI2luY2x1ZGUgIkpTUmV0YWluUHRyLmgiCisjaW5jbHVkZSAiT3BhcXVlSlNTdHJpbmcu
aCIKICNlbGlmIFVTRShWOCkKICNpbmNsdWRlICJWOERPTVdyYXBwZXIuaCIKICNpbmNsdWRlICJW
OERPTVdpbmRvd1NoZWxsLmgiCkBAIC00NzEsNiArNDc1LDQ5IEBAIHZvaWQgUVdlYkZyYW1lUHJp
dmF0ZTo6X3Ffb3JpZW50YXRpb25DaGFuZ2VkKCkKICAgICBmcmFtZS0+c2VuZE9yaWVudGF0aW9u
Q2hhbmdlRXZlbnQob3JpZW50YXRpb24pOwogI2VuZGlmCiB9CisKK3ZvaWQgUVdlYkZyYW1lUHJp
dmF0ZTo6ZGlkQ2xlYXJXaW5kb3dPYmplY3QoKQoreworI2lmIFVTRShKU0MpCisgICAgaWYgKHBh
Z2UtPnNldHRpbmdzKCktPnRlc3RBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpKYXZhc2NyaXB0RW5h
YmxlZCkpCisgICAgICAgIGFkZFF0U2VuZGVyVG9HbG9iYWxPYmplY3QoKTsKKyNlbmRpZgorICAg
IGVtaXQgcS0+amF2YVNjcmlwdFdpbmRvd09iamVjdENsZWFyZWQoKTsKK30KKworI2lmIFVTRShK
U0MpCitzdGF0aWMgSlNWYWx1ZVJlZiBxdFNlbmRlckNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250
ZXh0LCBKU09iamVjdFJlZiwgSlNPYmplY3RSZWYsIHNpemVfdCwgY29uc3QgSlNWYWx1ZVJlZltd
LCBKU1ZhbHVlUmVmKikKK3sKKyAgICBRT2JqZWN0KiBzZW5kZXIgPSBKU0M6OkJpbmRpbmdzOjpR
dEluc3RhbmNlOjpxdFNlbmRlclN0YWNrKCktPnRvcCgpOworICAgIGlmICghc2VuZGVyKQorICAg
ICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisKKyAgICBKU0M6OkV4
ZWNTdGF0ZSogZXhlYyA9IDo6dG9KUyhjb250ZXh0KTsKKyAgICBSZWZQdHI8SlNDOjpCaW5kaW5n
czo6Um9vdE9iamVjdD4gcm9vdE9iamVjdCA9IEpTQzo6QmluZGluZ3M6OmZpbmRSb290T2JqZWN0
KGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKSk7CisgICAgSlNDOjpKU09iamVjdCoganNTZW5k
ZXIgPSBKU0M6OkJpbmRpbmdzOjpRdEluc3RhbmNlOjpnZXRRdEluc3RhbmNlKHNlbmRlciwgcm9v
dE9iamVjdCwgUVNjcmlwdEVuZ2luZTo6UXRPd25lcnNoaXApLT5jcmVhdGVSdW50aW1lT2JqZWN0
KGV4ZWMpOworICAgIHJldHVybiA6OnRvUmVmKGpzU2VuZGVyKTsKK30KKwordm9pZCBRV2ViRnJh
bWVQcml2YXRlOjphZGRRdFNlbmRlclRvR2xvYmFsT2JqZWN0KCkKK3sKKyAgICBKU0M6OkpTTG9j
ayBsb2NrKEpTQzo6U2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKKworICAgIEpTRE9NV2luZG93KiB3
aW5kb3cgPSB0b0pTRE9NV2luZG93KGZyYW1lLCBtYWluVGhyZWFkTm9ybWFsV29ybGQoKSk7Cisg
ICAgUV9BU1NFUlQod2luZG93KTsKKworICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gd2luZG93
LT5nbG9iYWxFeGVjKCk7CisgICAgUV9BU1NFUlQoZXhlYyk7CisKKyAgICBKU0NvbnRleHRSZWYg
Y29udGV4dCA9IDo6dG9SZWYoZXhlYyk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHBy
b3BlcnR5TmFtZShBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIl9fcXRfc2Vu
ZGVyX18iKSk7CisgICAgSlNPYmplY3RSZWYgZnVuY3Rpb24gPSBKU09iamVjdE1ha2VGdW5jdGlv
bldpdGhDYWxsYmFjayhjb250ZXh0LCBwcm9wZXJ0eU5hbWUuZ2V0KCksIHF0U2VuZGVyQ2FsbGJh
Y2spOworCisgICAgLy8gSlNDIHB1YmxpYyBBUEkgZG9lc24ndCBzdXBwb3J0IHNldHRpbmcgYSBH
ZXR0ZXIgZm9yIGEgcHJvcGVydHkgb2YgYSBnaXZlbiBvYmplY3QsIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTM3NC4KKyAgICB3aW5kb3ctPmRlZmluZUdldHRlcihl
eGVjLCBwcm9wZXJ0eU5hbWUuZ2V0KCktPmlkZW50aWZpZXIoJmV4ZWMtPmdsb2JhbERhdGEoKSks
IDo6dG9KUyhmdW5jdGlvbiksCisgICAgICAgICAgICAgICAgICAgICAgICAgSlNDOjpSZWFkT25s
eSB8IEpTQzo6RG9udEVudW0gfCBKU0M6OkRvbnREZWxldGUpOworfQorI2VuZGlmCisKIC8qIQog
ICAgIFxjbGFzcyBRV2ViRnJhbWUKICAgICBcc2luY2UgNC40CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3F0L0FwaS9xd2ViZnJhbWVfcC5oIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmZy
YW1lX3AuaAppbmRleCA3NzFlNjhhLi5kYmRiYzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3F0L0FwaS9xd2ViZnJhbWVfcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFt
ZV9wLmgKQEAgLTEwOCw2ICsxMDgsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbWl0VXJsQ2hhbmdl
ZCgpOwogICAgIHZvaWQgX3Ffb3JpZW50YXRpb25DaGFuZ2VkKCk7CiAKKyAgICB2b2lkIGRpZENs
ZWFyV2luZG93T2JqZWN0KCk7CisKICAgICBRV2ViRnJhbWUgKnE7CiAgICAgUXQ6OlNjcm9sbEJh
clBvbGljeSBob3Jpem9udGFsU2Nyb2xsQmFyUG9saWN5OwogICAgIFF0OjpTY3JvbGxCYXJQb2xp
Y3kgdmVydGljYWxTY3JvbGxCYXJQb2xpY3k7CkBAIC0xMjcsNiArMTI5LDExIEBAIHB1YmxpYzoK
ICNpZiBFTkFCTEUoT1JJRU5UQVRJT05fRVZFTlRTKSAmJiBFTkFCTEUoREVWSUNFX09SSUVOVEFU
SU9OKQogICAgIFF0TW9iaWxpdHk6OlFPcmllbnRhdGlvblNlbnNvciBtX29yaWVudGF0aW9uOwog
I2VuZGlmCisKK3ByaXZhdGU6CisjaWYgVVNFKEpTQykKKyAgICB2b2lkIGFkZFF0U2VuZGVyVG9H
bG9iYWxPYmplY3QoKTsKKyNlbmRpZgogfTsKIAogY2xhc3MgUVdlYkhpdFRlc3RSZXN1bHRQcml2
YXRlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggZDk3NDA0ZC4uMzE3MDk3YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwzNyBAQAorMjAxMS0wNS0yMyAgQ2FpbyBNYXJjZWxvIGRlIE9saXZlaXJhIEZp
bGhvICA8Y2Fpby5vbGl2ZWlyYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtRdF0gSlNDIGJyaWRnZTogaW1wbGVtZW50IF9f
cXRfc2VuZGVyX18gd2l0aG91dCB1c2luZyBTY29wZSBDaGFpbgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjEzNDMKKworICAgICAgICBDcmVhdGUgYSAn
X19xdF9zZW5kZXJfXycgcHJvcGVydHkgaW4gdGhlIGdsb2JhbCBvYmplY3QsIHRoYXQgcmV0dXJu
cyB0aGUgdG9wIG9mCisgICAgICAgIHRoZSBxdFNlbmRlclN0YWNrLiBUaGlzIGlzIGFuIGFsdGVy
bmF0aXZlIGltcGxlbWVudGF0aW9uIGZvciB0aGUgZmVhdHVyZSBvZgorICAgICAgICBwcm92aWRp
bmcgYSB3YXkgZm9yIGEgZnVuY3Rpb24gKGFjdGluZyBhcyBhIFF0ICdzbG90JykgZGlzY292ZXIg
d2hpY2ggb2JqZWN0CisgICAgICAgIGVtaXR0ZWQgdGhlIHNpZ25hbCB0aGF0IGNhdXNlZCBpdCB0
byBiZSBleGVjdXRlZC4KKworICAgICAgICBUaGlzIHJlZHVjZXMgdGhlIGNvdXBsaW5nIG9mIHRo
ZSBRdCBicmlkZ2UgYW5kIEpTQyBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbi4gVGhlCisgICAgICAg
IHBhdGNoIHRyaWVzIHRvIHVzZSBhcyBtdWNoIEpTQyBwdWJsaWMgQVBJIGFzIHBvc3NpYmxlLgor
CisgICAgICAgIFRoaXMgYmVoYXZpb3IgaXMgY292ZXJlZCBieSB0aGUgdHN0X1FXZWJGcmFtZTo6
Y29ubmVjdEFuZERpc2Nvbm5lY3QoKSBhdXRvIHRlc3QuCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKToKKyAgICAg
ICAgSW5zdGVhZCBvZiBlbWl0dGluZyB0aGUgUVdlYlBhZ2U6OmphdmFTY3JpcHRXaW5kb3dPYmpl
Y3RDbGVhcmVkKCkgZGlyZWN0bHksIGNhbGxzCisgICAgICAgIGEgUVdlYlBhZ2VQcml2YXRlIGZ1
bmN0aW9uIHRvIGRvIGl0LgorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZV9wLmg6CisgICAgICAg
ICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViRnJhbWVQcml2YXRlOjpkaWRDbGVh
cmVkV2luZG93T2JqZWN0KToKKyAgICAgICAgQmVmb3JlIGVtaXR0aW5nIHRoZSBzaWduYWwgbWVu
dGlvbmVkLCBhZGRzIHRoZSAnX19xdF9zZW5kZXJfXycgdG8gdGhlIGZyZXNoCisgICAgICAgIGds
b2JhbCBvYmplY3QuCisKKyAgICAgICAgKHF0U2VuZGVyQ2FsbGJhY2spOgorICAgICAgICBSZXR1
cm5zIHRoZSBKU09iamVjdFJlZiBjb3JyZXNwb25kaW5nIHRvIHRoZSB0b3Agb2YgcXRTZW5kZXJT
dGFjay4KKworICAgICAgICAoUVdlYkZyYW1lUHJpdmF0ZTo6YWRkUXRTZW5kZXJUb0dsb2JhbE9i
amVjdCk6CisgICAgICAgIENyZWF0ZSBhIHByb3BlcnR5IHdpdGggYSBxdFNlbmRlckNhbGxiYWNr
IGFzIGdldHRlciBmdW5jdGlvbiBpbiB0aGUgZ2xvYmFsIG9iamVjdC4KKwogMjAxMS0wNS0yMyAg
THVpeiBBZ29zdGluaSAgPGx1aXouYWdvc3RpbmlAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKaW5kZXggNTZiZTMyNC4uMzUw
ZDhhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50UXQuY3BwCkBAIC03NjIsNyArNzYyLDcgQEAgdm9pZCBGcmFtZUxvYWRl
ckNsaWVudFF0OjpkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChET01XcmFwcGVy
V29ybGQqIHcKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fd2ViRnJhbWUpCi0gICAgICAg
IGVtaXQgbV93ZWJGcmFtZS0+amF2YVNjcmlwdFdpbmRvd09iamVjdENsZWFyZWQoKTsKKyAgICAg
ICAgbV93ZWJGcmFtZS0+ZC0+ZGlkQ2xlYXJXaW5kb3dPYmplY3QoKTsKIH0KIAogdm9pZCBGcmFt
ZUxvYWRlckNsaWVudFF0Ojpkb2N1bWVudEVsZW1lbnRBdmFpbGFibGUoKQotLSAKMS43LjQuNAoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>94805</attachid>
            <date>2011-05-25 10:29:49 -0700</date>
            <delta_ts>2011-05-25 12:28:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61343-20110525142954.patch</filename>
            <type>text/plain</type>
            <size>11941</size>
            <attacher name="Caio Marcelo de Oliveira Filho">cmarcelo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODczMDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1OGIxNDcxYmU0MjFlNDIx
MmE5MGQzYTUwMjczMTUyYTQzZDYzMzhlLi43MDEzYmI1ZDk0MjdjZmJhNDFjMGE1OGQxNzk4MGIw
OTUwMzdiOTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTEtMDUtMjUgIENhaW8g
TWFyY2VsbyBkZSBPbGl2ZWlyYSBGaWxobyAgPGNhaW8ub2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUXRdIEpT
QyBicmlkZ2U6IGltcGxlbWVudCBfX3F0X3NlbmRlcl9fIHdpdGhvdXQgdXNpbmcgU2NvcGUgQ2hh
aW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxMzQz
CisKKyAgICAgICAgQ3JlYXRlIGEgc3RhY2sgdG8ga2VlcCB0cmFjayBvZiB0aGUgc2VuZGVyIG9i
amVjdHMuIFRoaXMgaXMgc2ltcGxlciB0aGFuCisgICAgICAgIHRoZSBzaW1pbGFyIG1lY2hhbmlz
bSBpbiBRT2JqZWN0IChDKysgQVBJKSwgdGhhdCBrZWVwcyBhIHN0YWNrIHBlci1vYmplY3QuCisK
KyAgICAgICAgU2luY2Ugd2UgZG8gbm90IHN1cHBvcnQgbXVsdGlwbGUgdGhyZWFkcywgb25lIHN0
YXRpYyBzdGFjayB3aWxsIGJlIGVub3VnaCBmb3IKKyAgICAgICAgaGFuZGxpbmcgdGhlIGJlaGF2
aW9yLgorCisgICAgICAgIFRoaXMgYmVoYXZpb3IgaXMgY292ZXJlZCBieSB0aGUgdHN0X1FXZWJG
cmFtZTo6Y29ubmVjdEFuZERpc2Nvbm5lY3QoKSBhdXRvIHRlc3QuCisKKyAgICAgICAgKiBicmlk
Z2UvcXQvcXRfaW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UXRJbnN0YW5j
ZTo6cXRTZW5kZXJTdGFjayk6CisgICAgICAgIFdlIGhhdmUgb25lIHN0YXRpYyBzdGFjayBvZiBR
T2JqZWN0Ki4gVGhlIHRvcCBvZiB0aGUgc3RhY2sgY29udGFpbnMgdGhlCisgICAgICAgIGxhc3Qg
b2JqZWN0IHRoYXQgZW1pdHRlZCBzaWduYWwgdGhhdCBjYWxsZWQgYSBKYXZhU2NyaXB0IGZ1bmN0
aW9uLgorCisgICAgICAgICogYnJpZGdlL3F0L3F0X2luc3RhbmNlLmg6CisgICAgICAgIChKU0M6
OkJpbmRpbmdzOjpRdEluc3RhbmNlOjpRdFNlbmRlclN0YWNrOjp0b3ApOgorICAgICAgICAoSlND
OjpCaW5kaW5nczo6UXRJbnN0YW5jZTo6UXRTZW5kZXJTdGFjazo6cHVzaCk6CisgICAgICAgIChK
U0M6OkJpbmRpbmdzOjpRdEluc3RhbmNlOjpRdFNlbmRlclN0YWNrOjpwb3ApOgorICAgICAgICBN
aW5pbWFsIGZ1bmN0aW9uYWxpdHkgdG8gbWFuaXB1bGF0ZSB0aGUgc2VuZGVyIHN0YWNrLgorCisg
ICAgICAgICogYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5n
czo6UXRDb25uZWN0aW9uT2JqZWN0OjpleGVjdXRlKToKKyAgICAgICAgUmVtb3ZlIHRoZSBwcmV2
aW91cyBjb2RlIHRoYXQgbW9kaWZpZWQgdGhlIHNjb3BlIGNoYWluLiBQdXNoIHRoZSBzZW5kZXIg
b2JqZWN0CisgICAgICAgIHRvIHRoZSBzdGFjayBiZWZvcmUgY2FsbGluZyB0aGUgSmF2YVNjcmlw
dCBmdW5jdGlvbiAodGhlICJzbG90IiBpbiBRdC1zcGVhaykgYW5kCisgICAgICAgIHBvcCBpdCBh
ZnRlcndhcmRzLgorCiAyMDExLTA1LTI1ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90
QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByODcyMjkuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2luc3RhbmNlLmNwcAppbmRleCA2OGUyOTU0YmQ1NTQ3
YTAyYmExZWIzN2NiZDZhYjcxOTEzMGMwYjFmLi5kZjM5YmJjMjc5Y2ZlNjc3YzMzYjUxMWVlZmIz
OTQ3N2Q5MjE0ZmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5z
dGFuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9pbnN0YW5jZS5jcHAK
QEAgLTQ0LDYgKzQ0LDkgQEAgbmFtZXNwYWNlIEJpbmRpbmdzIHsKIHR5cGVkZWYgUU11bHRpSGFz
aDx2b2lkKiwgUXRJbnN0YW5jZSo+IFFPYmplY3RJbnN0YW5jZU1hcDsKIHN0YXRpYyBRT2JqZWN0
SW5zdGFuY2VNYXAgY2FjaGVkSW5zdGFuY2VzOwogCisvLyBVc2VkIGZvciBpbXBsZW1lbnRpbmcg
J19fcXRfc2VuZGVyX18nLgorUV9HTE9CQUxfU1RBVElDKFF0SW5zdGFuY2U6OlF0U2VuZGVyU3Rh
Y2ssIHNlbmRlclN0YWNrKQorCiAvLyBEZXJpdmVkIFJ1bnRpbWVPYmplY3QKIGNsYXNzIFF0UnVu
dGltZU9iamVjdCA6IHB1YmxpYyBSdW50aW1lT2JqZWN0IHsKIHB1YmxpYzoKQEAgLTMyMSw2ICsz
MjQsMTEgQEAgSlNWYWx1ZSBRdEluc3RhbmNlOjp2YWx1ZU9mKEV4ZWNTdGF0ZSogZXhlYykgY29u
c3QKICAgICByZXR1cm4gc3RyaW5nVmFsdWUoZXhlYyk7CiB9CiAKK1F0SW5zdGFuY2U6OlF0U2Vu
ZGVyU3RhY2sqIFF0SW5zdGFuY2U6OnF0U2VuZGVyU3RhY2soKQoreworICAgIHJldHVybiBzZW5k
ZXJTdGFjaygpOworfQorCiAvLyBJbiBxdF9ydW50aW1lLmNwcAogSlNWYWx1ZSBjb252ZXJ0UVZh
cmlhbnRUb1ZhbHVlKEV4ZWNTdGF0ZSosIFBhc3NSZWZQdHI8Um9vdE9iamVjdD4gcm9vdCwgY29u
c3QgUVZhcmlhbnQmIHZhcmlhbnQpOwogUVZhcmlhbnQgY29udmVydFZhbHVlVG9RVmFyaWFudChF
eGVjU3RhdGUqLCBKU1ZhbHVlLCBRTWV0YVR5cGU6OlR5cGUgaGludCwgaW50ICpkaXN0YW5jZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9pbnN0YW5jZS5oCmluZGV4IDFkNTFjYTI2NTY3YzAw
ZTI1NDA3NDhhZjk3YWE4NmU2ZmFkNjc1YzkuLjY5MzUwMjJhN2YwOTM4OTQ4ODFkNmFjMDY4MDY3
Y2Y1NTMzYTJiNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9pbnN0
YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9pbnN0YW5jZS5oCkBAIC0y
Miw2ICsyMiw3IEBACiAKICNpbmNsdWRlICJCcmlkZ2VKU0MuaCIKICNpbmNsdWRlICJydW50aW1l
X3Jvb3QuaCIKKyNpbmNsdWRlIDxRU3RhY2s+CiAjaW5jbHVkZSA8UXRTY3JpcHQvcXNjcmlwdGVu
Z2luZS5oPgogI2luY2x1ZGUgPHFoYXNoLmg+CiAjaW5jbHVkZSA8cXBvaW50ZXIuaD4KQEAgLTcx
LDYgKzcyLDE4IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBRdEluc3RhbmNlKiBnZXRJbnN0YW5j
ZShKU09iamVjdCopOwogCisgICAgY2xhc3MgUXRTZW5kZXJTdGFjayB7CisgICAgcHVibGljOgor
ICAgICAgICBRT2JqZWN0KiB0b3AoKSBjb25zdCB7IHJldHVybiBtX3N0YWNrLmlzRW1wdHkoKSA/
IDAgOiBtX3N0YWNrLnRvcCgpOyB9CisgICAgICAgIHZvaWQgcHVzaChRT2JqZWN0KiBvYmplY3Qp
IHsgbV9zdGFjay5wdXNoKG9iamVjdCk7IH0KKyAgICAgICAgdm9pZCBwb3AoKSB7IFFfQVNTRVJU
KCFtX3N0YWNrLmlzRW1wdHkoKSk7IG1fc3RhY2sucG9wKCk7IH0KKyAgICBwcml2YXRlOgorICAg
ICAgICBRU3RhY2s8UU9iamVjdCo+IG1fc3RhY2s7CisgICAgfTsKKworICAgIC8vIFVzZWQgdG8g
aW1wbGVtZW50ICdfX3F0X3NlbmRlcl9fJy4KKyAgICBzdGF0aWMgUXRTZW5kZXJTdGFjayogcXRT
ZW5kZXJTdGFjaygpOworCiBwcml2YXRlOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFF0SW5zdGFu
Y2U+IGNyZWF0ZShRT2JqZWN0ICppbnN0YW5jZSwgUGFzc1JlZlB0cjxSb290T2JqZWN0PiByb290
T2JqZWN0LCBRU2NyaXB0RW5naW5lOjpWYWx1ZU93bmVyc2hpcCBvd25lcnNoaXApCiAgICAgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwCmluZGV4IDYyZDQ0MTdhNzQyMmU5
OGYwZTA4MzU3MWZlZTgyZDhhZjZkZGZmY2YuLmExN2ViMzE4NjI4M2ZkNTViOWNjMzExMGYwZjUx
MTAyYzFmMGE0ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50
aW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5jcHAKQEAg
LTE4MzgsMjYgKzE4MzgsMTcgQEAgdm9pZCBRdENvbm5lY3Rpb25PYmplY3Q6OmV4ZWN1dGUodm9p
ZCAqKmFyZ3YpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbC5hcHBlbmQoanNVbmRlZmlu
ZWQoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgICAgLy8gU3R1ZmYgaW4gdGhlIF9fcXRfc2VuZGVyIHByb3BlcnR5
LCBpZiB3ZSBjYW4KLSAgICAgICAgICAgICAgICAgICAgU2NvcGVDaGFpbk5vZGUqIG9sZHNjID0g
MDsKLSAgICAgICAgICAgICAgICAgICAgSlNGdW5jdGlvbiogZmltcCA9IDA7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChtX2Z1bmNPYmplY3QtPmluaGVyaXRzKCZKU0Z1bmN0aW9uOjpzX2luZm8p
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmaW1wID0gc3RhdGljX2Nhc3Q8SlNGdW5jdGlv
bio+KG1fZnVuY09iamVjdC5nZXQoKSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIEpTT2Jq
ZWN0KiBxdF9zZW5kZXIgPSBRdEluc3RhbmNlOjpnZXRRdEluc3RhbmNlKHNlbmRlcigpLCBybywg
UVNjcmlwdEVuZ2luZTo6UXRPd25lcnNoaXApLT5jcmVhdGVSdW50aW1lT2JqZWN0KGV4ZWMpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgSlNPYmplY3QqIHdyYXBwZXIgPSBjb25zdHJ1Y3RFbXB0
eU9iamVjdChleGVjLCBjcmVhdGVFbXB0eU9iamVjdFN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRh
KCksIGpzTnVsbCgpKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qg
c2xvdDsKLSAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBwZXItPnB1dChleGVjLCBJZGVudGlm
aWVyKGV4ZWMsICJfX3F0X3NlbmRlcl9fIiksIHF0X3NlbmRlciwgc2xvdCk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBvbGRzYyA9IGZpbXAtPnNjb3BlKCk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBmaW1wLT5zZXRTY29wZShleGVjLT5nbG9iYWxEYXRhKCksIG9sZHNjLT5wdXNoKHdyYXBw
ZXIpKTsKLSAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGJvb2wgd2l0aFF0U2VuZGVyU3RhY2sgPSBtX2Z1bmNPYmplY3QtPmluaGVyaXRzKCZKU0Z1bmN0
aW9uOjpzX2luZm8pOworICAgICAgICAgICAgICAgICAgICBpZiAod2l0aFF0U2VuZGVyU3RhY2sp
CisgICAgICAgICAgICAgICAgICAgICAgICBRdEluc3RhbmNlOjpxdFNlbmRlclN0YWNrKCktPnB1
c2goUU9iamVjdDo6c2VuZGVyKCkpOwogCiAgICAgICAgICAgICAgICAgICAgIENhbGxEYXRhIGNh
bGxEYXRhOwogICAgICAgICAgICAgICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IG1fZnVuY09i
amVjdC0+Z2V0Q2FsbERhdGEoY2FsbERhdGEpOwogICAgICAgICAgICAgICAgICAgICBjYWxsKGV4
ZWMsIG1fZnVuY09iamVjdC5nZXQoKSwgY2FsbFR5cGUsIGNhbGxEYXRhLCBtX3RoaXNPYmplY3Qu
Z2V0KCksIGwpOwogCi0gICAgICAgICAgICAgICAgICAgIGlmIChmaW1wKQotICAgICAgICAgICAg
ICAgICAgICAgICAgZmltcC0+c2V0U2NvcGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBvbGRzYyk7Cisg
ICAgICAgICAgICAgICAgICAgIGlmICh3aXRoUXRTZW5kZXJTdGFjaykKKyAgICAgICAgICAgICAg
ICAgICAgICAgIFF0SW5zdGFuY2U6OnF0U2VuZGVyU3RhY2soKS0+cG9wKCk7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1l
LmNwcAppbmRleCBiYzg3ZGQxZDc5ODYyNmU2OWY0MzcwMGJkYjdhOWMwZmRiN2I0MzE0Li5jYzJl
ZjBkZDJhZTkxOTQ4YTkwMzBmNzUzNzI3NTdmMjc3MWY2NmUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3
ZWJmcmFtZS5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJxd2ViZnJhbWUuaCIKIAog
I2lmIFVTRShKU0MpCisjaW5jbHVkZSAiQVBJQ2FzdC5oIgogI2luY2x1ZGUgIkJyaWRnZUpTQy5o
IgogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogI2VsaWYgVVNFKFY4KQpAQCAtNDksMTAgKzUwLDEz
IEBACiAjaW5jbHVkZSAiSWNvbkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJv
bGxlci5oIgogI2lmIFVTRShKU0MpCisjaW5jbHVkZSAiSmF2YVNjcmlwdC5oIgogI2luY2x1ZGUg
IkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93QmFzZS5oIgogI2luY2x1ZGUg
IkpTTG9jay5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNSZXRhaW5QdHIu
aCIKKyNpbmNsdWRlICJPcGFxdWVKU1N0cmluZy5oIgogI2VsaWYgVVNFKFY4KQogI2luY2x1ZGUg
IlY4RE9NV3JhcHBlci5oIgogI2luY2x1ZGUgIlY4RE9NV2luZG93U2hlbGwuaCIKQEAgLTQ3MSw2
ICs0NzUsNDkgQEAgdm9pZCBRV2ViRnJhbWVQcml2YXRlOjpfcV9vcmllbnRhdGlvbkNoYW5nZWQo
KQogICAgIGZyYW1lLT5zZW5kT3JpZW50YXRpb25DaGFuZ2VFdmVudChvcmllbnRhdGlvbik7CiAj
ZW5kaWYKIH0KKwordm9pZCBRV2ViRnJhbWVQcml2YXRlOjpkaWRDbGVhcldpbmRvd09iamVjdCgp
Cit7CisjaWYgVVNFKEpTQykKKyAgICBpZiAocGFnZS0+c2V0dGluZ3MoKS0+dGVzdEF0dHJpYnV0
ZShRV2ViU2V0dGluZ3M6OkphdmFzY3JpcHRFbmFibGVkKSkKKyAgICAgICAgYWRkUXRTZW5kZXJU
b0dsb2JhbE9iamVjdCgpOworI2VuZGlmCisgICAgZW1pdCBxLT5qYXZhU2NyaXB0V2luZG93T2Jq
ZWN0Q2xlYXJlZCgpOworfQorCisjaWYgVVNFKEpTQykKK3N0YXRpYyBKU1ZhbHVlUmVmIHF0U2Vu
ZGVyQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmLCBKU09iamVjdFJl
Ziwgc2l6ZV90LCBjb25zdCBKU1ZhbHVlUmVmW10sIEpTVmFsdWVSZWYqKQoreworICAgIFFPYmpl
Y3QqIHNlbmRlciA9IEpTQzo6QmluZGluZ3M6OlF0SW5zdGFuY2U6OnF0U2VuZGVyU3RhY2soKS0+
dG9wKCk7CisgICAgaWYgKCFzZW5kZXIpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVm
aW5lZChjb250ZXh0KTsKKworICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gOjp0b0pTKGNvbnRl
eHQpOworICAgIFJlZlB0cjxKU0M6OkJpbmRpbmdzOjpSb290T2JqZWN0PiByb290T2JqZWN0ID0g
SlNDOjpCaW5kaW5nczo6ZmluZFJvb3RPYmplY3QoZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgp
KTsKKyAgICBKU0M6OkpTT2JqZWN0KiBqc1NlbmRlciA9IEpTQzo6QmluZGluZ3M6OlF0SW5zdGFu
Y2U6OmdldFF0SW5zdGFuY2Uoc2VuZGVyLCByb290T2JqZWN0LCBRU2NyaXB0RW5naW5lOjpRdE93
bmVyc2hpcCktPmNyZWF0ZVJ1bnRpbWVPYmplY3QoZXhlYyk7CisgICAgcmV0dXJuIDo6dG9SZWYo
anNTZW5kZXIpOworfQorCit2b2lkIFFXZWJGcmFtZVByaXZhdGU6OmFkZFF0U2VuZGVyVG9HbG9i
YWxPYmplY3QoKQoreworICAgIEpTQzo6SlNMb2NrIGxvY2soSlNDOjpTaWxlbmNlQXNzZXJ0aW9u
c09ubHkpOworCisgICAgSlNET01XaW5kb3cqIHdpbmRvdyA9IHRvSlNET01XaW5kb3coZnJhbWUs
IG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKKyAgICBRX0FTU0VSVCh3aW5kb3cpOworCisgICAg
SlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSB3aW5kb3ctPmdsb2JhbEV4ZWMoKTsKKyAgICBRX0FTU0VS
VChleGVjKTsKKworICAgIEpTQ29udGV4dFJlZiBjb250ZXh0ID0gOjp0b1JlZihleGVjKTsKKyAg
ICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gcHJvcGVydHlOYW1lKEFkb3B0LCBKU1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZygiX19xdF9zZW5kZXJfXyIpKTsKKyAgICBKU09iamVjdFJlZiBm
dW5jdGlvbiA9IEpTT2JqZWN0TWFrZUZ1bmN0aW9uV2l0aENhbGxiYWNrKGNvbnRleHQsIHByb3Bl
cnR5TmFtZS5nZXQoKSwgcXRTZW5kZXJDYWxsYmFjayk7CisKKyAgICAvLyBKU0MgcHVibGljIEFQ
SSBkb2Vzbid0IHN1cHBvcnQgc2V0dGluZyBhIEdldHRlciBmb3IgYSBwcm9wZXJ0eSBvZiBhIGdp
dmVuIG9iamVjdCwgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxMzc0
LgorICAgIHdpbmRvdy0+ZGVmaW5lR2V0dGVyKGV4ZWMsIHByb3BlcnR5TmFtZS5nZXQoKS0+aWRl
bnRpZmllcigmZXhlYy0+Z2xvYmFsRGF0YSgpKSwgOjp0b0pTKGZ1bmN0aW9uKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICBKU0M6OlJlYWRPbmx5IHwgSlNDOjpEb250RW51bSB8IEpTQzo6RG9u
dERlbGV0ZSk7Cit9CisjZW5kaWYKKwogLyohCiAgICAgXGNsYXNzIFFXZWJGcmFtZQogICAgIFxz
aW5jZSA0LjQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZV9wLmgg
Yi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWVfcC5oCmluZGV4IDc3MWU2OGFhN2ViMWE5
ZjJiMjllZDE0MmQ1ZGUyNmEwMTk3YzM1NmMuLmRiZGJjMzQ4YWFkMjA4ZGYzMTU5N2EyZjAwMzE1
YmYyNmVkMjk2M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZV9w
LmgKKysrIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lX3AuaApAQCAtMTA4LDYgKzEw
OCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGVtaXRVcmxDaGFuZ2VkKCk7CiAgICAgdm9pZCBfcV9v
cmllbnRhdGlvbkNoYW5nZWQoKTsKIAorICAgIHZvaWQgZGlkQ2xlYXJXaW5kb3dPYmplY3QoKTsK
KwogICAgIFFXZWJGcmFtZSAqcTsKICAgICBRdDo6U2Nyb2xsQmFyUG9saWN5IGhvcml6b250YWxT
Y3JvbGxCYXJQb2xpY3k7CiAgICAgUXQ6OlNjcm9sbEJhclBvbGljeSB2ZXJ0aWNhbFNjcm9sbEJh
clBvbGljeTsKQEAgLTEyNyw2ICsxMjksMTEgQEAgcHVibGljOgogI2lmIEVOQUJMRShPUklFTlRB
VElPTl9FVkVOVFMpICYmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCiAgICAgUXRNb2JpbGl0
eTo6UU9yaWVudGF0aW9uU2Vuc29yIG1fb3JpZW50YXRpb247CiAjZW5kaWYKKworcHJpdmF0ZToK
KyNpZiBVU0UoSlNDKQorICAgIHZvaWQgYWRkUXRTZW5kZXJUb0dsb2JhbE9iamVjdCgpOworI2Vu
ZGlmCiB9OwogCiBjbGFzcyBRV2ViSGl0VGVzdFJlc3VsdFByaXZhdGUgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwpp
bmRleCA5OTVlNTc1MzE3YzBiYTU0MDMwZDhhMWNhMjYyN2FkY2Y1ZDI3OTJjLi45NTNjY2MwYTMy
MWI5ZmY3NzMwYWE4ZDgyNDkwMDM2NTM5NWIzNGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3F0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDM3IEBACisyMDExLTA1LTI1ICBDYWlvIE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlv
Lm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgW1F0XSBKU0MgYnJpZGdlOiBpbXBsZW1lbnQgX19xdF9zZW5kZXJf
XyB3aXRob3V0IHVzaW5nIFNjb3BlIENoYWluCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02MTM0MworCisgICAgICAgIENyZWF0ZSBhICdfX3F0X3NlbmRl
cl9fJyBwcm9wZXJ0eSBpbiB0aGUgZ2xvYmFsIG9iamVjdCwgdGhhdCByZXR1cm5zIHRoZSB0b3Ag
b2YKKyAgICAgICAgdGhlIHF0U2VuZGVyU3RhY2suIFRoaXMgaXMgYW4gYWx0ZXJuYXRpdmUgaW1w
bGVtZW50YXRpb24gZm9yIHRoZSBmZWF0dXJlIG9mCisgICAgICAgIHByb3ZpZGluZyBhIHdheSBm
b3IgYSBmdW5jdGlvbiAoYWN0aW5nIGFzIGEgUXQgJ3Nsb3QnKSBkaXNjb3ZlciB3aGljaCBvYmpl
Y3QKKyAgICAgICAgZW1pdHRlZCB0aGUgc2lnbmFsIHRoYXQgY2F1c2VkIGl0IHRvIGJlIGV4ZWN1
dGVkLgorCisgICAgICAgIFRoaXMgcmVkdWNlcyB0aGUgY291cGxpbmcgb2YgdGhlIFF0IGJyaWRn
ZSBhbmQgSlNDIGludGVybmFsIGltcGxlbWVudGF0aW9uLiBUaGUKKyAgICAgICAgcGF0Y2ggdHJp
ZXMgdG8gdXNlIGFzIG11Y2ggSlNDIHB1YmxpYyBBUEkgYXMgcG9zc2libGUuCisKKyAgICAgICAg
VGhpcyBiZWhhdmlvciBpcyBjb3ZlcmVkIGJ5IHRoZSB0c3RfUVdlYkZyYW1lOjpjb25uZWN0QW5k
RGlzY29ubmVjdCgpIGF1dG8gdGVzdC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRR
dDo6ZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQpOgorICAgICAgICBJbnN0ZWFk
IG9mIGVtaXR0aW5nIHRoZSBRV2ViUGFnZTo6amF2YVNjcmlwdFdpbmRvd09iamVjdENsZWFyZWQo
KSBkaXJlY3RseSwgY2FsbHMKKyAgICAgICAgYSBRV2ViUGFnZVByaXZhdGUgZnVuY3Rpb24gdG8g
ZG8gaXQuCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lX3AuaDoKKyAgICAgICAgKiBBcGkvcXdl
YmZyYW1lLmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZVByaXZhdGU6OmRpZENsZWFyZWRXaW5kb3dP
YmplY3QpOgorICAgICAgICBCZWZvcmUgZW1pdHRpbmcgdGhlIHNpZ25hbCBtZW50aW9uZWQsIGFk
ZHMgdGhlICdfX3F0X3NlbmRlcl9fJyB0byB0aGUgZnJlc2gKKyAgICAgICAgZ2xvYmFsIG9iamVj
dC4KKworICAgICAgICAocXRTZW5kZXJDYWxsYmFjayk6CisgICAgICAgIFJldHVybnMgdGhlIEpT
T2JqZWN0UmVmIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHRvcCBvZiBxdFNlbmRlclN0YWNrLgorCisg
ICAgICAgIChRV2ViRnJhbWVQcml2YXRlOjphZGRRdFNlbmRlclRvR2xvYmFsT2JqZWN0KToKKyAg
ICAgICAgQ3JlYXRlIGEgcHJvcGVydHkgd2l0aCBhIHF0U2VuZGVyQ2FsbGJhY2sgYXMgZ2V0dGVy
IGZ1bmN0aW9uIGluIHRoZSBnbG9iYWwgb2JqZWN0LgorCiAyMDExLTA1LTI0ICBBZGFtIEJhcnRo
ICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50UXQuY3BwIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudFF0LmNwcAppbmRleCA3MWQyMWFkMDJmMTJkODM0ZWE5MDE4YmI2NWEwNTU3YTRhNTdl
NWZhLi44ZGQ4MDg1ZTFhNjMwMzY1OGZlNTM4MGQwNDgzMjUwODc2MDEyZGZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRR
dC5jcHAKQEAgLTc2Myw3ICs3NjMsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3Bh
dGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKERPTVdyYXBwZXJXb3JsZCogdwogICAgICAg
ICByZXR1cm47CiAKICAgICBpZiAobV93ZWJGcmFtZSkKLSAgICAgICAgZW1pdCBtX3dlYkZyYW1l
LT5qYXZhU2NyaXB0V2luZG93T2JqZWN0Q2xlYXJlZCgpOworICAgICAgICBtX3dlYkZyYW1lLT5k
LT5kaWRDbGVhcldpbmRvd09iamVjdCgpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6
OmRvY3VtZW50RWxlbWVudEF2YWlsYWJsZSgpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>