<?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>63482</bug_id>
          
          <creation_ts>2011-06-27 14:38:17 -0700</creation_ts>
          <short_desc>Allow non-main thread text drawing in ICU ports</short_desc>
          <delta_ts>2011-06-27 16:58:43 -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 Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>darin</cc>
    
    <cc>joepeck</cc>
    
    <cc>mitz</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>428317</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-06-27 14:38:17 -0700</bug_when>
    <thetext>Some ports may allow non main threads to draw text. In those
ports the ASSERT(isMainThread()) would fire when creating the
LineBreakIteratorPool. We can make the pool a thread specific
object to avoid this problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428328</commentid>
    <comment_count>1</comment_count>
      <attachid>98789</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-06-27 14:48:37 -0700</bug_when>
    <thetext>Created attachment 98789
[PATCH] Put a Pool in ThreadGlobalData for ICU</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428332</commentid>
    <comment_count>2</comment_count>
      <attachid>98789</attachid>
    <who name="">mitz</who>
    <bug_when>2011-06-27 14:50:43 -0700</bug_when>
    <thetext>Comment on attachment 98789
[PATCH] Put a Pool in ThreadGlobalData for ICU

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

&gt; Source/WebCore/platform/ThreadGlobalData.h:79
&gt; +        LineBreakIteratorPool* m_lineBreakIteratorPool;

Can this be an OwnPtr?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428333</commentid>
    <comment_count>3</comment_count>
      <attachid>98789</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-06-27 14:51:20 -0700</bug_when>
    <thetext>Comment on attachment 98789
[PATCH] Put a Pool in ThreadGlobalData for ICU

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

&gt; Source/WebCore/platform/ThreadGlobalData.cpp:89
&gt; +        m_lineBreakIteratorPool = new LineBreakIteratorPool();

Normal style is probably to drop the parens. I&apos;ll drop them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428337</commentid>
    <comment_count>4</comment_count>
      <attachid>98789</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-27 14:55:44 -0700</bug_when>
    <thetext>Comment on attachment 98789
[PATCH] Put a Pool in ThreadGlobalData for ICU

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

&gt;&gt; Source/WebCore/platform/ThreadGlobalData.cpp:89
&gt;&gt; +        m_lineBreakIteratorPool = new LineBreakIteratorPool();
&gt; 
&gt; Normal style is probably to drop the parens. I&apos;ll drop them.

I like it better without the parens, yes.

&gt; Source/WebCore/platform/ThreadGlobalData.cpp:107
&gt; +    if (m_lineBreakIteratorPool) {
&gt; +        delete m_lineBreakIteratorPool;
&gt; +        m_lineBreakIteratorPool = 0;
&gt; +    }

No need for the if statement. The delete operator already checks for 0.

&gt;&gt; Source/WebCore/platform/ThreadGlobalData.h:79
&gt;&gt; +        LineBreakIteratorPool* m_lineBreakIteratorPool;
&gt; 
&gt; Can this be an OwnPtr?

I think using an OwnPtr for this would be good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428364</commentid>
    <comment_count>5</comment_count>
      <attachid>98789</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-06-27 15:14:54 -0700</bug_when>
    <thetext>Comment on attachment 98789
[PATCH] Put a Pool in ThreadGlobalData for ICU

Attachment 98789 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/8951313</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428406</commentid>
    <comment_count>6</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-06-27 15:54:45 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 98789 [details])
&gt; Attachment 98789 [details] did not pass qt-ews (qt):
&gt; Output: http://queues.webkit.org/results/8951313

Probably failed because I forgot to wrap ThreadGlobalData::lineBreakIteratorPool
in the USE(ICU_UNICODE) block. I&apos;ll put another patch up for the bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428407</commentid>
    <comment_count>7</comment_count>
      <attachid>98806</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-06-27 15:55:20 -0700</bug_when>
    <thetext>Created attachment 98806
[PATCH] For Bots (Uses OwnPtr)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428409</commentid>
    <comment_count>8</comment_count>
      <attachid>98808</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-06-27 15:56:29 -0700</bug_when>
    <thetext>Created attachment 98808
[PATCH] For Bots (Uses OwnPtr)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428411</commentid>
    <comment_count>9</comment_count>
      <attachid>98808</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-27 16:00:12 -0700</bug_when>
    <thetext>Comment on attachment 98808
[PATCH] For Bots (Uses OwnPtr)

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

&gt; Source/WebCore/platform/ThreadGlobalData.cpp:90
&gt; +    return *m_lineBreakIteratorPool.get();

No need for the .get() here.

&gt; Source/WebCore/platform/ThreadGlobalData.h:80
&gt; +        OwnPtr&lt;LineBreakIteratorPool&gt; m_lineBreakIteratorPool;

I think you still need to set this to nullptr in destroy().

&gt; Source/WebCore/platform/text/LineBreakIteratorPoolICU.h:49
&gt;      LineBreakIteratorPool() { }

This can be private now. Or you can remove it if you want to leave it public.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428421</commentid>
    <comment_count>10</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-06-27 16:08:31 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 98808 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=98808&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/ThreadGlobalData.cpp:90
&gt; &gt; +    return *m_lineBreakIteratorPool.get();
&gt; 
&gt; No need for the .get() here.

Okay.

&gt; &gt; Source/WebCore/platform/ThreadGlobalData.h:80
&gt; &gt; +        OwnPtr&lt;LineBreakIteratorPool&gt; m_lineBreakIteratorPool;
&gt; 
&gt; I think you still need to set this to nullptr in destroy().

I thought about this, but decided it was best to keep this as is. If I cleared
the pool object inside of destroy it doesn&apos;t mean much if the object will
be recreated on access (because of the lazy loading). Also, the sharedPool
code never expects a null value and OwnPtr guarantees this whether or not
the destroy() happened or not.

Clearing this in destroy would likely mean:

  - no more lazy loading or state so we don&apos;t want to create after we are destroyed
  - handle a possible null value in sharedPool()?

Even the current approach has a possible issue where the GlobalData&apos;s could
deconstruct a LayerPool that was returned from sharedPool(). Clearing it earlier
in destroy() would make this slightly more possible.

Does either approach sound better to you?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428422</commentid>
    <comment_count>11</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-06-27 16:09:16 -0700</bug_when>
    <thetext>See my reply above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428431</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-27 16:23:06 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; &gt; I think you still need to set this to nullptr in destroy().
&gt; 
&gt; I thought about this, but decided it was best to keep this as is. If I cleared
&gt; the pool object inside of destroy it doesn&apos;t mean much if the object will
&gt; be recreated on access (because of the lazy loading).

I don’t really understand. Sure, if you try to use the global data after destroying it, there will be a problem. But that’s not specific to your new data member. You can’t use the global data after it has been destroyed.

&gt; Also, the sharedPool code never expects a null value

The sharedPool code will never get a null value, because it calls a function that allocates a new pool if it is zero. This is not an issue.

&gt; OwnPtr guarantees this whether or not the destroy() happened or not.

Sorry, I don’t understand what you are saying OwnPtr guarantees.

&gt; Clearing this in destroy would likely mean:
&gt; 
&gt;   - no more lazy loading or state so we don&apos;t want to create after we are destroyed
&gt;   - handle a possible null value in sharedPool()?

It wouldn’t mean either of those things. It’s not legal to call sharedPool after calling destroy.

&gt; Even the current approach has a possible issue where the GlobalData&apos;s could
&gt; deconstruct a LayerPool that was returned from sharedPool(). Clearing it earlier
&gt; in destroy() would make this slightly more possible.

I think you are misunderstanding. The destroy function exists so it can be called on worker threads. On normal threads it will be called from inside the destructor. So this timing thing you are talking about, a window of time after the destroy function is called and before the destructor, does not really exist.

&gt; Does either approach sound better to you?

I think your new data member needs to match the rest of the class, and do the actual deallocation in destroy, not just in the destructor. Unless we eliminate the destroy function, which might be good. I don’t understand why worker threads need a different way to destroy the thread data, and it would be better if they did it by actually deallocating.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428442</commentid>
    <comment_count>13</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-06-27 16:42:29 -0700</bug_when>
    <thetext>&gt; I think you are misunderstanding. The destroy function exists so it can be called on worker threads. On normal threads it will be called from inside the destructor. So this timing thing you are talking about, a window of time after the destroy function is called and before the destructor, does not really exist.
&gt; 
&gt; I think your new data member needs to match the rest of the class, and do the actual deallocation in destroy, not just in the destructor. Unless we eliminate the destroy function, which might be good. I don’t understand why worker threads need a different way to destroy the thread data, and it would be better if they did it by actually deallocating.

You&apos;re right. The issues I was concerned with, &quot;after destroy and before deallocating&quot; don&apos;t really exist and is not something I should be worrying about. It looks like the bots are happy with the new #if guards. I&apos;ll land with the nullptr assignment in destroy (and an updated changelog).

Thanks for the reviews.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428451</commentid>
    <comment_count>14</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-06-27 16:58:43 -0700</bug_when>
    <thetext>Landed in r89878: &lt;http://trac.webkit.org/changeset/89878&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98789</attachid>
            <date>2011-06-27 14:48:37 -0700</date>
            <delta_ts>2011-06-27 15:14:54 -0700</delta_ts>
            <desc>[PATCH] Put a Pool in ThreadGlobalData for ICU</desc>
            <filename>per-thread.patch</filename>
            <type>text/plain</type>
            <size>4547</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjYzYxYTA4Li40NTdhZTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzAg
QEAKIDIwMTEtMDYtMjcgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KIAor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbGxvdyBub24t
bWFpbiB0aHJlYWQgdGV4dCBkcmF3aW5nIGluIElDVSBwb3J0cworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjM0ODIKKworICAgICAgICBTb21lIHBvcnRz
IGFsbG93IG11bHRpcGxlIHRocmVhZHMgdG8gZHJhdyBzdHJpbmdzLgorICAgICAgICBMaW5lQnJl
YWtJdGVyYXRvclBvb2wgaXMgbm90IHRocmVhZCBzYWZlIGFuZCB0aGUgZXhpc3RpbmcKKyAgICAg
ICAgQVNTRVJUIGNhdWdodCBjYXNlcyB3aGVyZSBtdWx0aXBsZSB0aHJlYWRzIHdlcmUgdHJ5aW5n
CisgICAgICAgIHRvIGFjY2VzcyB0aGUgc2hhcmVkIHBvb2wuIFRoaXMgbWFrZXMgdGhlIHBvb2wg
YSBsYXppbHkKKyAgICAgICAgY3JlYXRlZCBwZXItdGhyZWFkIHBvb2wgdG8gYWxsb3cgZm9yIHRo
cmVhZCBzYWZlIHBvb2wgdXNlLgorCisgICAgICAgICogcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0
YS5oOgorICAgICAgICAqIHBsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VGhyZWFkR2xvYmFsRGF0YTo6VGhyZWFkR2xvYmFsRGF0YSk6IHN0YXJ0IHdpdGgg
bnVsbC4KKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZEdsb2JhbERhdGE6OmxpbmVCcmVha0l0ZXJh
dG9yUG9vbCk6IGxhemlseSBjcmVhdGUuCisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRHbG9iYWxE
YXRhOjpkZXN0cm95KTogZGVjb25zdHJ1Y3QgaWYgY3JlYXRlZC4KKyAgICAgICAgTWFuYWdlIHRo
ZSBsaWZldGltZSBvZiB0aGUgcGVyLXRocmVhZCBwb29sIGluc3RhbmNlLgorCisgICAgICAgICog
cGxhdGZvcm0vdGV4dC9MaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkxpbmVCcmVha0l0ZXJhdG9yUG9vbDo6c2hhcmVkUG9vbCk6CisgICAgICAgIFVzZSB0aGUg
cGVyLXRocmVhZCBwb29sIGluc3RhbmNlIGFuZCByZW1vdmUgdGhlIEFTU0VSVCB0aGF0CisgICAg
ICAgIHRoaXMgbmVlZHMgdG8gYmUgb24gdGhlIG1haW4gdGhyZWFkLgorCisyMDExLTA2LTI3ICBK
b3NlcGggUGVjb3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+CisKICAgICAgICAgUmV2aWV3ZWQg
YnkgRGFyaW4gQWRsZXIuCiAKICAgICAgICAgRXh0cmFjdCBMaW5lQnJlYWtJdGVyYXRvclBvb2wg
Y2xhc3MgaW50byBpdHMgb3duIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1RocmVhZEdsb2JhbERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFk
R2xvYmFsRGF0YS5jcHAKaW5kZXggNmQ3ZWI1MS4uOWY1ODRhMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+CiAKICNpZiBVU0UoSUNVX1VOSUNPREUpCisjaW5j
bHVkZSAiTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmgiCiAjaW5jbHVkZSAiVGV4dENvZGVjSUNV
LmgiCiAjZW5kaWYKIApAQCAtNjMsNiArNjQsNyBAQCBUaHJlYWRHbG9iYWxEYXRhOjpUaHJlYWRH
bG9iYWxEYXRhKCkKICNlbmRpZgogI2lmIFVTRShJQ1VfVU5JQ09ERSkKICAgICAsIG1fY2FjaGVk
Q29udmVydGVySUNVKG5ldyBJQ1VDb252ZXJ0ZXJXcmFwcGVyKQorICAgICwgbV9saW5lQnJlYWtJ
dGVyYXRvclBvb2woMCkKICNlbmRpZgogI2lmIFBMQVRGT1JNKE1BQykKICAgICAsIG1fY2FjaGVk
Q29udmVydGVyVEVDKG5ldyBURUNDb252ZXJ0ZXJXcmFwcGVyKQpAQCAtODEsNiArODMsMTMgQEAg
VGhyZWFkR2xvYmFsRGF0YTo6flRocmVhZEdsb2JhbERhdGEoKQogICAgIGRlc3Ryb3koKTsKIH0K
IAorTGluZUJyZWFrSXRlcmF0b3JQb29sJiBUaHJlYWRHbG9iYWxEYXRhOjpsaW5lQnJlYWtJdGVy
YXRvclBvb2woKQoreworICAgIGlmICghbV9saW5lQnJlYWtJdGVyYXRvclBvb2wpCisgICAgICAg
IG1fbGluZUJyZWFrSXRlcmF0b3JQb29sID0gbmV3IExpbmVCcmVha0l0ZXJhdG9yUG9vbCgpOwor
ICAgIHJldHVybiAqbV9saW5lQnJlYWtJdGVyYXRvclBvb2w7Cit9CisKIHZvaWQgVGhyZWFkR2xv
YmFsRGF0YTo6ZGVzdHJveSgpCiB7CiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtOTEsNiArMTAwLDEx
IEBAIHZvaWQgVGhyZWFkR2xvYmFsRGF0YTo6ZGVzdHJveSgpCiAjaWYgVVNFKElDVV9VTklDT0RF
KQogICAgIGRlbGV0ZSBtX2NhY2hlZENvbnZlcnRlcklDVTsKICAgICBtX2NhY2hlZENvbnZlcnRl
cklDVSA9IDA7CisKKyAgICBpZiAobV9saW5lQnJlYWtJdGVyYXRvclBvb2wpIHsKKyAgICAgICAg
ZGVsZXRlIG1fbGluZUJyZWFrSXRlcmF0b3JQb29sOworICAgICAgICBtX2xpbmVCcmVha0l0ZXJh
dG9yUG9vbCA9IDA7CisgICAgfQogI2VuZGlmCiAKICAgICBkZWxldGUgbV9ldmVudE5hbWVzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5oCmluZGV4IDc2Mzc3YjQu
LmNhMzg0ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2Jh
bERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmgK
QEAgLTQxLDkgKzQxLDExIEBAIHVzaW5nIFdURjo6VGhyZWFkU3BlY2lmaWM7CiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICAgICBjbGFzcyBFdmVudE5hbWVzOworICAgIGNsYXNzIExpbmVCcmVha0l0
ZXJhdG9yUG9vbDsKKyAgICBjbGFzcyBUaHJlYWRUaW1lcnM7CisKICAgICBzdHJ1Y3QgSUNVQ29u
dmVydGVyV3JhcHBlcjsKICAgICBzdHJ1Y3QgVEVDQ29udmVydGVyV3JhcHBlcjsKLSAgICBjbGFz
cyBUaHJlYWRUaW1lcnM7CiAKICAgICBjbGFzcyBUaHJlYWRHbG9iYWxEYXRhIHsKICAgICAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoVGhyZWFkR2xvYmFsRGF0YSk7CkBAIC01Nyw2ICs1OSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIFVTRShJQ1VfVU5JQ09ERSkKICAgICAgICAgSUNV
Q29udmVydGVyV3JhcHBlciYgY2FjaGVkQ29udmVydGVySUNVKCkgeyByZXR1cm4gKm1fY2FjaGVk
Q29udmVydGVySUNVOyB9CisgICAgICAgIExpbmVCcmVha0l0ZXJhdG9yUG9vbCYgbGluZUJyZWFr
SXRlcmF0b3JQb29sKCk7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTczLDYgKzc2
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgVVNFKElDVV9VTklDT0RFKQogICAgICAg
ICBJQ1VDb252ZXJ0ZXJXcmFwcGVyKiBtX2NhY2hlZENvbnZlcnRlcklDVTsKKyAgICAgICAgTGlu
ZUJyZWFrSXRlcmF0b3JQb29sKiBtX2xpbmVCcmVha0l0ZXJhdG9yUG9vbDsKICNlbmRpZgogCiAj
aWYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9MaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmgKaW5kZXggZjgwNjFhMC4uY2VkMWM2ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9MaW5lQnJlYWtJdGVyYXRvclBv
b2xJQ1UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xpbmVCcmVha0l0ZXJh
dG9yUG9vbElDVS5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIExpbmVCcmVha0l0ZXJhdG9y
UG9vbElDVV9oCiAKICNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVLmgiCisj
aW5jbHVkZSAiVGhyZWFkR2xvYmFsRGF0YS5oIgogI2luY2x1ZGUgPHVuaWNvZGUvdWJyay5oPgog
I2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAg
LTM5LDkgKzQwLDcgQEAgY2xhc3MgTGluZUJyZWFrSXRlcmF0b3JQb29sIHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgTGluZUJyZWFrSXRlcmF0b3JQb29sJiBzaGFyZWRQb29sKCkKICAgICB7Ci0gICAg
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwo
TGluZUJyZWFrSXRlcmF0b3JQb29sLCBwb29sLCAoKSk7Ci0gICAgICAgIHJldHVybiBwb29sOwor
ICAgICAgICByZXR1cm4gdGhyZWFkR2xvYmFsRGF0YSgpLmxpbmVCcmVha0l0ZXJhdG9yUG9vbCgp
OwogICAgIH0KIAogICAgIExpbmVCcmVha0l0ZXJhdG9yUG9vbCgpIHsgfQo=
</data>
<flag name="review"
          id="93097"
          type_id="1"
          status="+"
          setter="darin"
    />
    <flag name="commit-queue"
          id="93111"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98806</attachid>
            <date>2011-06-27 15:55:20 -0700</date>
            <delta_ts>2011-06-27 15:56:06 -0700</delta_ts>
            <desc>[PATCH] For Bots (Uses OwnPtr)</desc>
            <filename>for-bots.patch</filename>
            <type>text/plain</type>
            <size>5985</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">Y29tbWl0IDcyNzkxNzYyMzhkYWIxY2FlM2NlNzdlMzQzMDVkYmU0MTlhNzg2ZTEKQXV0aG9yOiBK
b3NlcGggUGVjb3Jhcm8gPGpvZXBlY2tAd2Via2l0Lm9yZz4KRGF0ZTogICBNb24gSnVuIDI3IDE1
OjUxOjQyIDIwMTEgLTA3MDAKCiAgICAyMDExLTA2LTI3ICBKb3NlcGggUGVjb3Jhcm8gIDxqb2Vw
ZWNrQHdlYmtpdC5vcmc+CiAgICAKICAgICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIu
CiAgICAKICAgICAgICAgICAgQWxsb3cgbm9uLW1haW4gdGhyZWFkIHRleHQgZHJhd2luZyBpbiBJ
Q1UgcG9ydHMKICAgICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTYzNDgyCiAgICAKICAgICAgICAgICAgU29tZSBwb3J0cyBhbGxvdyBtdWx0aXBsZSB0aHJl
YWRzIHRvIGRyYXcgc3RyaW5ncy4KICAgICAgICAgICAgTGluZUJyZWFrSXRlcmF0b3JQb29sIGlz
IG5vdCB0aHJlYWQgc2FmZSBhbmQgdGhlIGV4aXN0aW5nCiAgICAgICAgICAgIEFTU0VSVCBjYXVn
aHQgY2FzZXMgd2hlcmUgbXVsdGlwbGUgdGhyZWFkcyB3ZXJlIHRyeWluZwogICAgICAgICAgICB0
byBhY2Nlc3MgdGhlIHNoYXJlZCBwb29sLiBUaGlzIG1ha2VzIHRoZSBwb29sIGEgbGF6aWx5CiAg
ICAgICAgICAgIGNyZWF0ZWQgcGVyLXRocmVhZCBwb29sIHRvIGFsbG93IGZvciB0aHJlYWQgc2Fm
ZSBwb29sIHVzZS4KICAgIAogICAgICAgICAgICAqIHBsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEu
aDoKICAgICAgICAgICAgKiBwbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcDoKICAgICAgICAg
ICAgKFdlYkNvcmU6OlRocmVhZEdsb2JhbERhdGE6OlRocmVhZEdsb2JhbERhdGEpOiBzdGFydCB3
aXRoIG51bGwuCiAgICAgICAgICAgIChXZWJDb3JlOjpUaHJlYWRHbG9iYWxEYXRhOjpsaW5lQnJl
YWtJdGVyYXRvclBvb2wpOiBsYXppbHkgY3JlYXRlLgogICAgICAgICAgICBMZXQgT3duUHRyIGhh
bmRsZSB0aGUgbGlmZXRpbWUgb2YgdGhlIHBlci10aHJlYWQgcG9vbCBpbnN0YW5jZSwKICAgICAg
ICAgICAgYnV0IGNyZWF0ZSBpdCBsYXppbHkgd2hlbiBmaXJzdCBhY2Nlc3NlZC4KICAgIAogICAg
ICAgICAgICAqIHBsYXRmb3JtL3RleHQvTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmg6CiAgICAg
ICAgICAgIChXZWJDb3JlOjpMaW5lQnJlYWtJdGVyYXRvclBvb2w6OnNoYXJlZFBvb2wpOgogICAg
ICAgICAgICBVc2UgdGhlIHBlci10aHJlYWQgcG9vbCBpbnN0YW5jZSBhbmQgcmVtb3ZlIHRoZSBB
U1NFUlQgdGhhdAogICAgICAgICAgICB0aGlzIG5lZWRzIHRvIGJlIG9uIHRoZSBtYWluIHRocmVh
ZC4KICAgIAogICAgICAgICAgICAoV2ViQ29yZTo6TGluZUJyZWFrSXRlcmF0b3JQb29sOjpjcmVh
dGUpOgogICAgICAgICAgICBDcmVhdGUgYSBQYXNzT3duUHRyIHNvIHdlIGNhbiB1c2UgT3duUHRy
IG9uIHBvb2xzLgoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjYzYxYTA4Li4wOTYzNmU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0yLDYgKzIsMzQgQEAKIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KIAorICAg
ICAgICBBbGxvdyBub24tbWFpbiB0aHJlYWQgdGV4dCBkcmF3aW5nIGluIElDVSBwb3J0cworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjM0ODIKKworICAg
ICAgICBTb21lIHBvcnRzIGFsbG93IG11bHRpcGxlIHRocmVhZHMgdG8gZHJhdyBzdHJpbmdzLgor
ICAgICAgICBMaW5lQnJlYWtJdGVyYXRvclBvb2wgaXMgbm90IHRocmVhZCBzYWZlIGFuZCB0aGUg
ZXhpc3RpbmcKKyAgICAgICAgQVNTRVJUIGNhdWdodCBjYXNlcyB3aGVyZSBtdWx0aXBsZSB0aHJl
YWRzIHdlcmUgdHJ5aW5nCisgICAgICAgIHRvIGFjY2VzcyB0aGUgc2hhcmVkIHBvb2wuIFRoaXMg
bWFrZXMgdGhlIHBvb2wgYSBsYXppbHkKKyAgICAgICAgY3JlYXRlZCBwZXItdGhyZWFkIHBvb2wg
dG8gYWxsb3cgZm9yIHRocmVhZCBzYWZlIHBvb2wgdXNlLgorCisgICAgICAgICogcGxhdGZvcm0v
VGhyZWFkR2xvYmFsRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkR2xvYmFsRGF0YTo6VGhyZWFkR2xvYmFsRGF0
YSk6IHN0YXJ0IHdpdGggbnVsbC4KKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZEdsb2JhbERhdGE6
OmxpbmVCcmVha0l0ZXJhdG9yUG9vbCk6IGxhemlseSBjcmVhdGUuCisgICAgICAgIExldCBPd25Q
dHIgaGFuZGxlIHRoZSBsaWZldGltZSBvZiB0aGUgcGVyLXRocmVhZCBwb29sIGluc3RhbmNlLAor
ICAgICAgICBidXQgY3JlYXRlIGl0IGxhemlseSB3aGVuIGZpcnN0IGFjY2Vzc2VkLgorCisgICAg
ICAgICogcGxhdGZvcm0vdGV4dC9MaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkxpbmVCcmVha0l0ZXJhdG9yUG9vbDo6c2hhcmVkUG9vbCk6CisgICAgICAgIFVz
ZSB0aGUgcGVyLXRocmVhZCBwb29sIGluc3RhbmNlIGFuZCByZW1vdmUgdGhlIEFTU0VSVCB0aGF0
CisgICAgICAgIHRoaXMgbmVlZHMgdG8gYmUgb24gdGhlIG1haW4gdGhyZWFkLgorCisgICAgICAg
IChXZWJDb3JlOjpMaW5lQnJlYWtJdGVyYXRvclBvb2w6OmNyZWF0ZSk6CisgICAgICAgIENyZWF0
ZSBhIFBhc3NPd25QdHIgc28gd2UgY2FuIHVzZSBPd25QdHIgb24gcG9vbHMuCisKKzIwMTEtMDYt
MjcgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBEYXJpbiBBZGxlci4KKwogICAgICAgICBFeHRyYWN0IExpbmVCcmVha0l0ZXJhdG9y
UG9vbCBjbGFzcyBpbnRvIGl0cyBvd24gZmlsZQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjM0NzEKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9U
aHJlYWRHbG9iYWxEYXRhLmNwcAppbmRleCA2ZDdlYjUxLi45NjY2ZDU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcApAQCAtMzQsNiArMzQsNyBAQAog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KIAogI2lmIFVTRShJQ1VfVU5JQ09ERSkK
KyNpbmNsdWRlICJMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCIKICNpbmNsdWRlICJUZXh0Q29k
ZWNJQ1UuaCIKICNlbmRpZgogCkBAIC04MSw2ICs4MiwxMyBAQCBUaHJlYWRHbG9iYWxEYXRhOjp+
VGhyZWFkR2xvYmFsRGF0YSgpCiAgICAgZGVzdHJveSgpOwogfQogCitMaW5lQnJlYWtJdGVyYXRv
clBvb2wmIFRocmVhZEdsb2JhbERhdGE6OmxpbmVCcmVha0l0ZXJhdG9yUG9vbCgpCit7CisgICAg
aWYgKCFtX2xpbmVCcmVha0l0ZXJhdG9yUG9vbCkKKyAgICAgICAgbV9saW5lQnJlYWtJdGVyYXRv
clBvb2wgPSBMaW5lQnJlYWtJdGVyYXRvclBvb2w6OmNyZWF0ZSgpOworICAgIHJldHVybiAqbV9s
aW5lQnJlYWtJdGVyYXRvclBvb2wuZ2V0KCk7Cit9CisKIHZvaWQgVGhyZWFkR2xvYmFsRGF0YTo6
ZGVzdHJveSgpCiB7CiAjaWYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VGhyZWFkR2xvYmFsRGF0YS5oCmluZGV4IDc2Mzc3YjQuLmQxNTU2MzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogI2lmIEVOQUJMRShXT1JLRVJTKQpAQCAtNDEsOSArNDIs
MTEgQEAgdXNpbmcgV1RGOjpUaHJlYWRTcGVjaWZpYzsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ICAgIGNsYXNzIEV2ZW50TmFtZXM7CisgICAgY2xhc3MgTGluZUJyZWFrSXRlcmF0b3JQb29sOwor
ICAgIGNsYXNzIFRocmVhZFRpbWVyczsKKwogICAgIHN0cnVjdCBJQ1VDb252ZXJ0ZXJXcmFwcGVy
OwogICAgIHN0cnVjdCBURUNDb252ZXJ0ZXJXcmFwcGVyOwotICAgIGNsYXNzIFRocmVhZFRpbWVy
czsKIAogICAgIGNsYXNzIFRocmVhZEdsb2JhbERhdGEgewogICAgICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShUaHJlYWRHbG9iYWxEYXRhKTsKQEAgLTU3LDYgKzYwLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAjaWYgVVNFKElDVV9VTklDT0RFKQogICAgICAgICBJQ1VDb252ZXJ0ZXJXcmFw
cGVyJiBjYWNoZWRDb252ZXJ0ZXJJQ1UoKSB7IHJldHVybiAqbV9jYWNoZWRDb252ZXJ0ZXJJQ1U7
IH0KKyAgICAgICAgTGluZUJyZWFrSXRlcmF0b3JQb29sJiBsaW5lQnJlYWtJdGVyYXRvclBvb2wo
KTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtNzMsNiArNzcsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKICNpZiBVU0UoSUNVX1VOSUNPREUpCiAgICAgICAgIElDVUNvbnZlcnRl
cldyYXBwZXIqIG1fY2FjaGVkQ29udmVydGVySUNVOworICAgICAgICBPd25QdHI8TGluZUJyZWFr
SXRlcmF0b3JQb29sPiBtX2xpbmVCcmVha0l0ZXJhdG9yUG9vbDsKICNlbmRpZgogCiAjaWYgUExB
VEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9MaW5l
QnJlYWtJdGVyYXRvclBvb2xJQ1UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTGlu
ZUJyZWFrSXRlcmF0b3JQb29sSUNVLmgKaW5kZXggZjgwNjFhMC4uYjE2YjY4OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9MaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xpbmVCcmVha0l0ZXJhdG9yUG9v
bElDVS5oCkBAIC0yNyw5ICsyNywxMSBAQAogI2RlZmluZSBMaW5lQnJlYWtJdGVyYXRvclBvb2xJ
Q1VfaAogCiAjaW5jbHVkZSAiVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5oIgorI2luY2x1
ZGUgIlRocmVhZEdsb2JhbERhdGEuaCIKICNpbmNsdWRlIDx1bmljb2RlL3VicmsuaD4KICNpbmNs
dWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVk
ZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM5LDExICs0MSwxMSBAQCBjbGFzcyBMaW5lQnJlYWtJdGVy
YXRvclBvb2wgewogcHVibGljOgogICAgIHN0YXRpYyBMaW5lQnJlYWtJdGVyYXRvclBvb2wmIHNo
YXJlZFBvb2woKQogICAgIHsKLSAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICAg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChMaW5lQnJlYWtJdGVyYXRvclBvb2wsIHBvb2wsICgpKTsK
LSAgICAgICAgcmV0dXJuIHBvb2w7CisgICAgICAgIHJldHVybiB0aHJlYWRHbG9iYWxEYXRhKCku
bGluZUJyZWFrSXRlcmF0b3JQb29sKCk7CiAgICAgfQogCisgICAgc3RhdGljIFBhc3NPd25QdHI8
TGluZUJyZWFrSXRlcmF0b3JQb29sPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFB0cihuZXcgTGlu
ZUJyZWFrSXRlcmF0b3JQb29sKTsgfQorCiAgICAgTGluZUJyZWFrSXRlcmF0b3JQb29sKCkgeyB9
CiAKICAgICBVQnJlYWtJdGVyYXRvciogdGFrZShjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98808</attachid>
            <date>2011-06-27 15:56:29 -0700</date>
            <delta_ts>2011-06-27 16:58:26 -0700</delta_ts>
            <desc>[PATCH] For Bots (Uses OwnPtr)</desc>
            <filename>for-bots.patch</filename>
            <type>text/plain</type>
            <size>6015</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">Y29tbWl0IDhiNWIyNTk4MGYzZGNhMGU3OTAwMDAzNjNmZGIwZmRiZDc5NTY2YmQKQXV0aG9yOiBK
b3NlcGggUGVjb3Jhcm8gPGpvZXBlY2tAd2Via2l0Lm9yZz4KRGF0ZTogICBNb24gSnVuIDI3IDE1
OjUxOjQyIDIwMTEgLTA3MDAKCiAgICAyMDExLTA2LTI3ICBKb3NlcGggUGVjb3Jhcm8gIDxqb2Vw
ZWNrQHdlYmtpdC5vcmc+CiAgICAKICAgICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIu
CiAgICAKICAgICAgICAgICAgQWxsb3cgbm9uLW1haW4gdGhyZWFkIHRleHQgZHJhd2luZyBpbiBJ
Q1UgcG9ydHMKICAgICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTYzNDgyCiAgICAKICAgICAgICAgICAgU29tZSBwb3J0cyBhbGxvdyBtdWx0aXBsZSB0aHJl
YWRzIHRvIGRyYXcgc3RyaW5ncy4KICAgICAgICAgICAgTGluZUJyZWFrSXRlcmF0b3JQb29sIGlz
IG5vdCB0aHJlYWQgc2FmZSBhbmQgdGhlIGV4aXN0aW5nCiAgICAgICAgICAgIEFTU0VSVCBjYXVn
aHQgY2FzZXMgd2hlcmUgbXVsdGlwbGUgdGhyZWFkcyB3ZXJlIHRyeWluZwogICAgICAgICAgICB0
byBhY2Nlc3MgdGhlIHNoYXJlZCBwb29sLiBUaGlzIG1ha2VzIHRoZSBwb29sIGEgbGF6aWx5CiAg
ICAgICAgICAgIGNyZWF0ZWQgcGVyLXRocmVhZCBwb29sIHRvIGFsbG93IGZvciB0aHJlYWQgc2Fm
ZSBwb29sIHVzZS4KICAgIAogICAgICAgICAgICAqIHBsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEu
aDoKICAgICAgICAgICAgKiBwbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcDoKICAgICAgICAg
ICAgKFdlYkNvcmU6OlRocmVhZEdsb2JhbERhdGE6OlRocmVhZEdsb2JhbERhdGEpOiBzdGFydCB3
aXRoIG51bGwuCiAgICAgICAgICAgIChXZWJDb3JlOjpUaHJlYWRHbG9iYWxEYXRhOjpsaW5lQnJl
YWtJdGVyYXRvclBvb2wpOiBsYXppbHkgY3JlYXRlLgogICAgICAgICAgICBMZXQgT3duUHRyIGhh
bmRsZSB0aGUgbGlmZXRpbWUgb2YgdGhlIHBlci10aHJlYWQgcG9vbCBpbnN0YW5jZSwKICAgICAg
ICAgICAgYnV0IGNyZWF0ZSBpdCBsYXppbHkgd2hlbiBmaXJzdCBhY2Nlc3NlZC4KICAgIAogICAg
ICAgICAgICAqIHBsYXRmb3JtL3RleHQvTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmg6CiAgICAg
ICAgICAgIChXZWJDb3JlOjpMaW5lQnJlYWtJdGVyYXRvclBvb2w6OnNoYXJlZFBvb2wpOgogICAg
ICAgICAgICBVc2UgdGhlIHBlci10aHJlYWQgcG9vbCBpbnN0YW5jZSBhbmQgcmVtb3ZlIHRoZSBB
U1NFUlQgdGhhdAogICAgICAgICAgICB0aGlzIG5lZWRzIHRvIGJlIG9uIHRoZSBtYWluIHRocmVh
ZC4KICAgIAogICAgICAgICAgICAoV2ViQ29yZTo6TGluZUJyZWFrSXRlcmF0b3JQb29sOjpjcmVh
dGUpOgogICAgICAgICAgICBDcmVhdGUgYSBQYXNzT3duUHRyIHNvIHdlIGNhbiB1c2UgT3duUHRy
IG9uIHBvb2xzLgoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjYzYxYTA4Li4wOTYzNmU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0yLDYgKzIsMzQgQEAKIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KIAorICAg
ICAgICBBbGxvdyBub24tbWFpbiB0aHJlYWQgdGV4dCBkcmF3aW5nIGluIElDVSBwb3J0cworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjM0ODIKKworICAg
ICAgICBTb21lIHBvcnRzIGFsbG93IG11bHRpcGxlIHRocmVhZHMgdG8gZHJhdyBzdHJpbmdzLgor
ICAgICAgICBMaW5lQnJlYWtJdGVyYXRvclBvb2wgaXMgbm90IHRocmVhZCBzYWZlIGFuZCB0aGUg
ZXhpc3RpbmcKKyAgICAgICAgQVNTRVJUIGNhdWdodCBjYXNlcyB3aGVyZSBtdWx0aXBsZSB0aHJl
YWRzIHdlcmUgdHJ5aW5nCisgICAgICAgIHRvIGFjY2VzcyB0aGUgc2hhcmVkIHBvb2wuIFRoaXMg
bWFrZXMgdGhlIHBvb2wgYSBsYXppbHkKKyAgICAgICAgY3JlYXRlZCBwZXItdGhyZWFkIHBvb2wg
dG8gYWxsb3cgZm9yIHRocmVhZCBzYWZlIHBvb2wgdXNlLgorCisgICAgICAgICogcGxhdGZvcm0v
VGhyZWFkR2xvYmFsRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkR2xvYmFsRGF0YTo6VGhyZWFkR2xvYmFsRGF0
YSk6IHN0YXJ0IHdpdGggbnVsbC4KKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZEdsb2JhbERhdGE6
OmxpbmVCcmVha0l0ZXJhdG9yUG9vbCk6IGxhemlseSBjcmVhdGUuCisgICAgICAgIExldCBPd25Q
dHIgaGFuZGxlIHRoZSBsaWZldGltZSBvZiB0aGUgcGVyLXRocmVhZCBwb29sIGluc3RhbmNlLAor
ICAgICAgICBidXQgY3JlYXRlIGl0IGxhemlseSB3aGVuIGZpcnN0IGFjY2Vzc2VkLgorCisgICAg
ICAgICogcGxhdGZvcm0vdGV4dC9MaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkxpbmVCcmVha0l0ZXJhdG9yUG9vbDo6c2hhcmVkUG9vbCk6CisgICAgICAgIFVz
ZSB0aGUgcGVyLXRocmVhZCBwb29sIGluc3RhbmNlIGFuZCByZW1vdmUgdGhlIEFTU0VSVCB0aGF0
CisgICAgICAgIHRoaXMgbmVlZHMgdG8gYmUgb24gdGhlIG1haW4gdGhyZWFkLgorCisgICAgICAg
IChXZWJDb3JlOjpMaW5lQnJlYWtJdGVyYXRvclBvb2w6OmNyZWF0ZSk6CisgICAgICAgIENyZWF0
ZSBhIFBhc3NPd25QdHIgc28gd2UgY2FuIHVzZSBPd25QdHIgb24gcG9vbHMuCisKKzIwMTEtMDYt
MjcgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBEYXJpbiBBZGxlci4KKwogICAgICAgICBFeHRyYWN0IExpbmVCcmVha0l0ZXJhdG9y
UG9vbCBjbGFzcyBpbnRvIGl0cyBvd24gZmlsZQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjM0NzEKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9U
aHJlYWRHbG9iYWxEYXRhLmNwcAppbmRleCA2ZDdlYjUxLi43MzU5MGI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcApAQCAtMzQsNiArMzQsNyBAQAog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KIAogI2lmIFVTRShJQ1VfVU5JQ09ERSkK
KyNpbmNsdWRlICJMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCIKICNpbmNsdWRlICJUZXh0Q29k
ZWNJQ1UuaCIKICNlbmRpZgogCkBAIC04MSw2ICs4MiwxNSBAQCBUaHJlYWRHbG9iYWxEYXRhOjp+
VGhyZWFkR2xvYmFsRGF0YSgpCiAgICAgZGVzdHJveSgpOwogfQogCisjaWYgVVNFKElDVV9VTklD
T0RFKQorTGluZUJyZWFrSXRlcmF0b3JQb29sJiBUaHJlYWRHbG9iYWxEYXRhOjpsaW5lQnJlYWtJ
dGVyYXRvclBvb2woKQoreworICAgIGlmICghbV9saW5lQnJlYWtJdGVyYXRvclBvb2wpCisgICAg
ICAgIG1fbGluZUJyZWFrSXRlcmF0b3JQb29sID0gTGluZUJyZWFrSXRlcmF0b3JQb29sOjpjcmVh
dGUoKTsKKyAgICByZXR1cm4gKm1fbGluZUJyZWFrSXRlcmF0b3JQb29sLmdldCgpOworfQorI2Vu
ZGlmCisKIHZvaWQgVGhyZWFkR2xvYmFsRGF0YTo6ZGVzdHJveSgpCiB7CiAjaWYgUExBVEZPUk0o
TUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0
YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5oCmluZGV4IDc2
Mzc3YjQuLmQxNTU2MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVh
ZEdsb2JhbERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxE
YXRhLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVk
ZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogI2lm
IEVOQUJMRShXT1JLRVJTKQpAQCAtNDEsOSArNDIsMTEgQEAgdXNpbmcgV1RGOjpUaHJlYWRTcGVj
aWZpYzsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEV2ZW50TmFtZXM7CisgICAg
Y2xhc3MgTGluZUJyZWFrSXRlcmF0b3JQb29sOworICAgIGNsYXNzIFRocmVhZFRpbWVyczsKKwog
ICAgIHN0cnVjdCBJQ1VDb252ZXJ0ZXJXcmFwcGVyOwogICAgIHN0cnVjdCBURUNDb252ZXJ0ZXJX
cmFwcGVyOwotICAgIGNsYXNzIFRocmVhZFRpbWVyczsKIAogICAgIGNsYXNzIFRocmVhZEdsb2Jh
bERhdGEgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUaHJlYWRHbG9iYWxEYXRhKTsK
QEAgLTU3LDYgKzYwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgVVNFKElDVV9VTklD
T0RFKQogICAgICAgICBJQ1VDb252ZXJ0ZXJXcmFwcGVyJiBjYWNoZWRDb252ZXJ0ZXJJQ1UoKSB7
IHJldHVybiAqbV9jYWNoZWRDb252ZXJ0ZXJJQ1U7IH0KKyAgICAgICAgTGluZUJyZWFrSXRlcmF0
b3JQb29sJiBsaW5lQnJlYWtJdGVyYXRvclBvb2woKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0o
TUFDKQpAQCAtNzMsNiArNzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiBVU0UoSUNV
X1VOSUNPREUpCiAgICAgICAgIElDVUNvbnZlcnRlcldyYXBwZXIqIG1fY2FjaGVkQ29udmVydGVy
SUNVOworICAgICAgICBPd25QdHI8TGluZUJyZWFrSXRlcmF0b3JQb29sPiBtX2xpbmVCcmVha0l0
ZXJhdG9yUG9vbDsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9MaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmgKaW5k
ZXggZjgwNjFhMC4uYjE2YjY4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9MaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L0xpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oCkBAIC0yNyw5ICsyNywxMSBAQAog
I2RlZmluZSBMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1VfaAogCiAjaW5jbHVkZSAiVGV4dEJyZWFr
SXRlcmF0b3JJbnRlcm5hbElDVS5oIgorI2luY2x1ZGUgIlRocmVhZEdsb2JhbERhdGEuaCIKICNp
bmNsdWRlIDx1bmljb2RlL3VicmsuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM5LDEx
ICs0MSwxMSBAQCBjbGFzcyBMaW5lQnJlYWtJdGVyYXRvclBvb2wgewogcHVibGljOgogICAgIHN0
YXRpYyBMaW5lQnJlYWtJdGVyYXRvclBvb2wmIHNoYXJlZFBvb2woKQogICAgIHsKLSAgICAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChMaW5l
QnJlYWtJdGVyYXRvclBvb2wsIHBvb2wsICgpKTsKLSAgICAgICAgcmV0dXJuIHBvb2w7CisgICAg
ICAgIHJldHVybiB0aHJlYWRHbG9iYWxEYXRhKCkubGluZUJyZWFrSXRlcmF0b3JQb29sKCk7CiAg
ICAgfQogCisgICAgc3RhdGljIFBhc3NPd25QdHI8TGluZUJyZWFrSXRlcmF0b3JQb29sPiBjcmVh
dGUoKSB7IHJldHVybiBhZG9wdFB0cihuZXcgTGluZUJyZWFrSXRlcmF0b3JQb29sKTsgfQorCiAg
ICAgTGluZUJyZWFrSXRlcmF0b3JQb29sKCkgeyB9CiAKICAgICBVQnJlYWtJdGVyYXRvciogdGFr
ZShjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>