<?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>53313</bug_id>
          
          <creation_ts>2011-01-28 10:56:23 -0800</creation_ts>
          <short_desc>Add ShareableSurface class</short_desc>
          <delta_ts>2011-01-28 12:39:58 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>341530</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-01-28 10:56:23 -0800</bug_when>
    <thetext>Add ShareableSurface class</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341532</commentid>
    <comment_count>1</comment_count>
      <attachid>80466</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-01-28 11:02:03 -0800</bug_when>
    <thetext>Created attachment 80466
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341535</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-28 11:04:32 -0800</bug_when>
    <thetext>Attachment 80466 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1

Source/WebKit2/Shared/mac/ShareableSurface.cpp:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Source/WebKit2/Shared/mac/ShareableSurface.cpp:139:  cgl_ctx is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/Shared/mac/ShareableSurface.cpp:164:  cgl_ctx is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/Shared/mac/ShareableSurface.cpp:181:  cgl_ctx is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/Shared/mac/ShareableSurface.cpp:189:  cgl_ctx is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/Shared/mac/ShareableSurface.h:39:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 6 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341550</commentid>
    <comment_count>3</comment_count>
      <attachid>80466</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-01-28 11:17:48 -0800</bug_when>
    <thetext>Comment on attachment 80466
Patch

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

&gt; Source/WebKit2/Shared/mac/ShareableSurface.cpp:53
&gt; +    encoder-&gt;encode(CoreIPC::MachPort(m_port, MACH_MSG_TYPE_COPY_SEND));

MOVE_SEND!

&gt; Source/WebKit2/Shared/mac/ShareableSurface.cpp:74
&gt; +    unsigned pixelFormat = &apos;BGRA&apos;;
&gt; +    unsigned bytesPerElement = 4;
&gt; +    int width = size.width();
&gt; +    int height = size.height();

I&apos;d put these closer to where they&apos;re used.

&gt; Source/WebKit2/Shared/mac/ShareableSurface.cpp:97
&gt; +    values[4] = CFNumberCreate(0, kCFNumberLongType, &amp;bytesPerRow);
&gt; +    keys[5] = kIOSurfaceAllocSize;
&gt; +    values[5] = CFNumberCreate(0, kCFNumberLongType, &amp;allocSize);

Should you use an unsigned long type?

&gt; Source/WebKit2/Shared/mac/ShareableSurface.cpp:100
&gt; +    RetainPtr&lt;CFDictionaryRef&gt; dictionary(AdoptCF, CFDictionaryCreate(0, keys, values, 6, &amp;kCFTypeDictionaryKeyCallBacks, &amp;kCFTypeDictionaryValueCallBacks));
&gt; +    for (unsigned i = 0; i &lt; 6; i++)

It&apos;s too bad we have to say &quot;6&quot; in 4 places overall.

&gt; Source/WebKit2/Shared/mac/ShareableSurface.cpp:117
&gt; +    ASSERT(handle.m_port != MACH_PORT_NULL);

Could use ASSERT_ARG.

&gt; Source/WebKit2/Shared/mac/ShareableSurface.cpp:128
&gt; +ShareableSurface::ShareableSurface(CGLContextObj cglContextObj, const IntSize&amp; size, RetainPtr&lt;IOSurfaceRef&gt; ioSurface)

You can just take a bare IOSurfaceRef.

&gt; Source/WebKit2/Shared/mac/ShareableSurface.cpp:139
&gt; +    CGLContextObj cgl_ctx = m_cglContextObj;

Please add a comment about why this is needed. Maybe you can get away with a single comment somewhere high up in the file. Or do the magic needed to make it use m_cglContextObj directly. Or add a SET_CGLCONTEXT(m_cglContextObj) macro (or similar).

&gt; Source/WebKit2/Shared/mac/ShareableSurface.cpp:152
&gt; +    ASSERT(handle.m_port == MACH_PORT_NULL);

ASSERT_ARG

&gt; Source/WebKit2/Shared/mac/ShareableSurface.cpp:168
&gt; +        glGenFramebuffersEXT(1, &amp;m_frameBufferObjectID);

Do we need to check whether this succeeded?

&gt; Source/WebKit2/Shared/mac/ShareableSurface.cpp:176
&gt; +        glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
&gt; +    }
&gt; +
&gt; +    glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, m_frameBufferObjectID);

You could skip the unbind when we create the FBO, but it doesn&apos;t matter very much.

&gt; Source/WebKit2/Shared/mac/ShareableSurface.cpp:188
&gt; +    if (!m_textureID) {

Early return!

&gt; Source/WebKit2/Shared/mac/ShareableSurface.cpp:192
&gt; +        glGenTextures(1, &amp;m_textureID);

Can this fail?

&gt; Source/WebKit2/Shared/mac/ShareableSurface.h:47
&gt; +    class Handle {

Seems like we could share this with SharedMemory, at least on Mac.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341651</commentid>
    <comment_count>4</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-01-28 12:39:58 -0800</bug_when>
    <thetext>Committed r76974: &lt;http://trac.webkit.org/changeset/76974&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80466</attachid>
            <date>2011-01-28 11:02:03 -0800</date>
            <delta_ts>2011-01-28 11:17:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53313-20110128110202.patch</filename>
            <type>text/plain</type>
            <size>17501</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDc2OTU0KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTEtMDEtMjggIEFuZGVycyBD
YXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgU2hhcmVhYmxlU3VyZmFjZSBjbGFzcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTMzMTMKKworICAgICAg
ICAqIFNoYXJlZC9tYWMvU2hhcmVhYmxlU3VyZmFjZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpTaGFyZWFibGVTdXJmYWNlOjpIYW5kbGU6OkhhbmRsZSk6CisgICAgICAgIEluaXRpYWxp
emUgdGhlIG1hY2ggcG9ydC4KKworICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVTdXJmYWNlOjpI
YW5kbGU6On5IYW5kbGUpOgorICAgICAgICBEZWFsbG9jYXRlIG91ciBzZW5kIHJpZ2h0IGlmIG5l
ZWRlZC4KKworICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVTdXJmYWNlOjpIYW5kbGU6OmVuY29k
ZSk6CisgICAgICAgIEVuY29kZSB0aGUgc2VuZCByaWdodCwgYW5kIHRoZW4gbnVsbCBpdCBvdXQu
CisKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlU3VyZmFjZTo6SGFuZGxlOjpkZWNvZGUpOgor
ICAgICAgICBEZWNvZGUgdGhlIHNlbmQgcmlnaHQuCisgICAgICAgIAorICAgICAgICAoV2ViS2l0
OjpjcmVhdGVJT1N1cmZhY2UpOgorICAgICAgICBDcmVhdGUgYW4gSU9TdXJmYWNlIHdpdGggdGhl
IGdpdmVuIHNpemUuCisKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlU3VyZmFjZTo6Y3JlYXRl
KToKKyAgICAgICAgQ3JlYXRlIGFuIElPU3VyZmFjZSwgZWl0aGVyIGZyb20gYSBzaXplIG9yIGZy
b20gYSBoYW5kbGUuCisKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlU3VyZmFjZTo6flNoYXJl
YWJsZVN1cmZhY2UpOgorICAgICAgICBEZWxldGUgdGhlIHRleHR1cmUgYW5kIGZyYW1lYnVmZmVy
LgorCisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVN1cmZhY2U6OmNyZWF0ZUhhbmRsZSk6Cisg
ICAgICAgIENyZWF0ZSBhIG1hY2ggcG9ydCBmcm9tIHRoZSBzdXJmYWNlLgorCisgICAgICAgIChX
ZWJLaXQ6OlNoYXJlYWJsZVN1cmZhY2U6OmF0dGFjaCk6CisgICAgICAgIENyZWF0ZSBhbiBGQk8g
aWYgbmVlZGVkIGFuZCBiaW5kIGl0LgorCisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVN1cmZh
Y2U6OmRldGFjaCk6CisgICAgICAgIFVuYmluZCB0aGUgRkJPLgorCisgICAgICAgIChXZWJLaXQ6
OlNoYXJlYWJsZVN1cmZhY2U6OnRleHR1cmVJRCk6CisgICAgICAgIEdlbmVyYXRlIGEgbmV3IHRl
eHR1cmUgYW5kIGJpbmQgaXQgdG8gdGhlIElPU3VyZmFjZS4KKworICAgICAgICAqIFNoYXJlZC9t
YWMvU2hhcmVhYmxlU3VyZmFjZS5oOiBBZGRlZC4KKworICAgICAgICAqIFdlYktpdDIueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkIG5ldyBmaWxlcy4KKwogMjAxMS0wMS0y
OCAgQWxlamFuZHJvIEcuIENhc3RybyAgPGFsZXhAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBYYW4gTG9wZXouCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1NoYXJl
YWJsZVN1cmZhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMv
U2hhcmVhYmxlU3VyZmFjZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvbWFjL1NoYXJlYWJsZVN1cmZhY2UuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIwNCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJTaGFyZWFibGVTdXJmYWNlLmgiCisKKyNpbmNsdWRl
ICJBcmd1bWVudERlY29kZXIuaCIKKyNpbmNsdWRlICJBcmd1bWVudEVuY29kZXIuaCIKKyNpbmNs
dWRlICJNYWNoUG9ydC5oIgorI2luY2x1ZGUgPElPU3VyZmFjZS9JT1N1cmZhY2UuaD4KKyNpbmNs
dWRlIDxPcGVuR0wvQ0dMSU9TdXJmYWNlLmg+CisjaW5jbHVkZSA8T3BlbkdML0NHTE1hY3JvLmg+
CisjaW5jbHVkZSA8T3BlbkdML09wZW5HTC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK1NoYXJlYWJsZVN1cmZhY2U6OkhhbmRsZTo6SGFuZGxl
KCkKKyAgICA6IG1fcG9ydChNQUNIX1BPUlRfTlVMTCkKK3sKK30KKworU2hhcmVhYmxlU3VyZmFj
ZTo6SGFuZGxlOjp+SGFuZGxlKCkKK3sKKyAgICBpZiAobV9wb3J0ICE9IE1BQ0hfUE9SVF9OVUxM
KQorICAgICAgICBtYWNoX3BvcnRfZGVhbGxvY2F0ZShtYWNoX3Rhc2tfc2VsZigpLCBtX3BvcnQp
OworfQorCit2b2lkIFNoYXJlYWJsZVN1cmZhY2U6OkhhbmRsZTo6ZW5jb2RlKENvcmVJUEM6OkFy
Z3VtZW50RW5jb2RlciogZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyLT5lbmNvZGUoQ29y
ZUlQQzo6TWFjaFBvcnQobV9wb3J0LCBNQUNIX01TR19UWVBFX0NPUFlfU0VORCkpOworICAgIG1f
cG9ydCA9IE1BQ0hfUE9SVF9OVUxMOworfQorCitib29sIFNoYXJlYWJsZVN1cmZhY2U6OkhhbmRs
ZTo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgSGFuZGxlJiBoYW5k
bGUpCit7CisgICAgQVNTRVJUKGhhbmRsZS5tX3BvcnQgPT0gTUFDSF9QT1JUX05VTEwpOworCisg
ICAgQ29yZUlQQzo6TWFjaFBvcnQgbWFjaFBvcnQ7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUo
bWFjaFBvcnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBoYW5kbGUubV9wb3J0ID0g
bWFjaFBvcnQucG9ydCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIFJldGFpblB0
cjxJT1N1cmZhY2VSZWY+IGNyZWF0ZUlPU3VyZmFjZShjb25zdCBJbnRTaXplJiBzaXplKQorewor
ICAgIHVuc2lnbmVkIHBpeGVsRm9ybWF0ID0gJ0JHUkEnOworICAgIHVuc2lnbmVkIGJ5dGVzUGVy
RWxlbWVudCA9IDQ7CisgICAgaW50IHdpZHRoID0gc2l6ZS53aWR0aCgpOworICAgIGludCBoZWln
aHQgPSBzaXplLmhlaWdodCgpOworICAgIAorICAgIHVuc2lnbmVkIGxvbmcgYnl0ZXNQZXJSb3cg
PSBJT1N1cmZhY2VBbGlnblByb3BlcnR5KGtJT1N1cmZhY2VCeXRlc1BlclJvdywgc2l6ZS53aWR0
aCgpICogYnl0ZXNQZXJFbGVtZW50KTsKKyAgICBpZiAoIWJ5dGVzUGVyUm93KQorICAgICAgICBy
ZXR1cm4gMDsKKyAgICAKKyAgICB1bnNpZ25lZCBsb25nIGFsbG9jU2l6ZSA9IElPU3VyZmFjZUFs
aWduUHJvcGVydHkoa0lPU3VyZmFjZUFsbG9jU2l6ZSwgc2l6ZS5oZWlnaHQoKSAqIGJ5dGVzUGVy
Um93KTsKKyAgICBpZiAoIWFsbG9jU2l6ZSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAg
Y29uc3Qgdm9pZCAqa2V5c1s2XTsKKyAgICBjb25zdCB2b2lkICp2YWx1ZXNbNl07CisgICAga2V5
c1swXSA9IGtJT1N1cmZhY2VXaWR0aDsKKyAgICB2YWx1ZXNbMF0gPSBDRk51bWJlckNyZWF0ZSgw
LCBrQ0ZOdW1iZXJJbnRUeXBlLCAmd2lkdGgpOworICAgIGtleXNbMV0gPSBrSU9TdXJmYWNlSGVp
Z2h0OworICAgIHZhbHVlc1sxXSA9IENGTnVtYmVyQ3JlYXRlKDAsIGtDRk51bWJlckludFR5cGUs
ICZoZWlnaHQpOworICAgIGtleXNbMl0gPSBrSU9TdXJmYWNlUGl4ZWxGb3JtYXQ7CisgICAgdmFs
dWVzWzJdID0gQ0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVySW50VHlwZSwgJnBpeGVsRm9ybWF0
KTsKKyAgICBrZXlzWzNdID0ga0lPU3VyZmFjZUJ5dGVzUGVyRWxlbWVudDsKKyAgICB2YWx1ZXNb
M10gPSBDRk51bWJlckNyZWF0ZSgwLCBrQ0ZOdW1iZXJJbnRUeXBlLCAmYnl0ZXNQZXJFbGVtZW50
KTsKKyAgICBrZXlzWzRdID0ga0lPU3VyZmFjZUJ5dGVzUGVyUm93OworICAgIHZhbHVlc1s0XSA9
IENGTnVtYmVyQ3JlYXRlKDAsIGtDRk51bWJlckxvbmdUeXBlLCAmYnl0ZXNQZXJSb3cpOworICAg
IGtleXNbNV0gPSBrSU9TdXJmYWNlQWxsb2NTaXplOworICAgIHZhbHVlc1s1XSA9IENGTnVtYmVy
Q3JlYXRlKDAsIGtDRk51bWJlckxvbmdUeXBlLCAmYWxsb2NTaXplKTsKKyAgICAKKyAgICBSZXRh
aW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBkaWN0aW9uYXJ5KEFkb3B0Q0YsIENGRGljdGlvbmFyeUNy
ZWF0ZSgwLCBrZXlzLCB2YWx1ZXMsIDYsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywg
JmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgNjsgaSsrKQorICAgICAgICBDRlJlbGVhc2UodmFsdWVzW2ldKTsKKyAgICAKKyAg
ICByZXR1cm4gUmV0YWluUHRyPElPU3VyZmFjZVJlZj4oQWRvcHRDRiwgSU9TdXJmYWNlQ3JlYXRl
KGRpY3Rpb25hcnkuZ2V0KCkpKTsKK30KKyAgICAgICAgCitQYXNzUmVmUHRyPFNoYXJlYWJsZVN1
cmZhY2U+IFNoYXJlYWJsZVN1cmZhY2U6OmNyZWF0ZShDR0xDb250ZXh0T2JqIGNnbENvbnRleHRP
YmosIGNvbnN0IEludFNpemUmIHNpemUpCit7CisgICAgUmV0YWluUHRyPElPU3VyZmFjZVJlZj4g
aW9TdXJmYWNlID0gY3JlYXRlSU9TdXJmYWNlKHNpemUpOworICAgIGlmICghaW9TdXJmYWNlKQor
ICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVhYmxlU3Vy
ZmFjZShjZ2xDb250ZXh0T2JqLCBzaXplLCBpb1N1cmZhY2UpKTsKK30KKworUGFzc1JlZlB0cjxT
aGFyZWFibGVTdXJmYWNlPiBTaGFyZWFibGVTdXJmYWNlOjpjcmVhdGUoQ0dMQ29udGV4dE9iaiBj
Z2xDb250ZXh0T2JqLCBjb25zdCBIYW5kbGUmIGhhbmRsZSkKK3sKKyAgICBBU1NFUlQoaGFuZGxl
Lm1fcG9ydCAhPSBNQUNIX1BPUlRfTlVMTCk7CisKKyAgICBSZXRhaW5QdHI8SU9TdXJmYWNlUmVm
PiBpb1N1cmZhY2UoQWRvcHRDRiwgSU9TdXJmYWNlTG9va3VwRnJvbU1hY2hQb3J0KGhhbmRsZS5t
X3BvcnQpKTsKKyAgICBpZiAoIWlvU3VyZmFjZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBJ
bnRTaXplIHNpemUgPSBJbnRTaXplKElPU3VyZmFjZUdldFdpZHRoKGlvU3VyZmFjZS5nZXQoKSks
IElPU3VyZmFjZUdldEhlaWdodChpb1N1cmZhY2UuZ2V0KCkpKTsKKyAgICAKKyAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFNoYXJlYWJsZVN1cmZhY2UoY2dsQ29udGV4dE9iaiwgc2l6ZSwgaW9TdXJm
YWNlKSk7Cit9CisKK1NoYXJlYWJsZVN1cmZhY2U6OlNoYXJlYWJsZVN1cmZhY2UoQ0dMQ29udGV4
dE9iaiBjZ2xDb250ZXh0T2JqLCBjb25zdCBJbnRTaXplJiBzaXplLCBSZXRhaW5QdHI8SU9TdXJm
YWNlUmVmPiBpb1N1cmZhY2UpCisgICAgOiBtX2NnbENvbnRleHRPYmooQ0dMUmV0YWluQ29udGV4
dChjZ2xDb250ZXh0T2JqKSkKKyAgICAsIG1fc2l6ZShzaXplKQorICAgICwgbV90ZXh0dXJlSUQo
MCkKKyAgICAsIG1fZnJhbWVCdWZmZXJPYmplY3RJRCgwKQorICAgICwgbV9pb1N1cmZhY2UoaW9T
dXJmYWNlKQoreworfQorCitTaGFyZWFibGVTdXJmYWNlOjp+U2hhcmVhYmxlU3VyZmFjZSgpCit7
CisgICAgQ0dMQ29udGV4dE9iaiBjZ2xfY3R4ID0gbV9jZ2xDb250ZXh0T2JqOworCisgICAgaWYg
KG1fdGV4dHVyZUlEKQorICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZtX3RleHR1cmVJRCk7
CisKKyAgICBpZiAobV9mcmFtZUJ1ZmZlck9iamVjdElEKQorICAgICAgICBnbERlbGV0ZUZyYW1l
YnVmZmVyc0VYVCgxLCAmbV9mcmFtZUJ1ZmZlck9iamVjdElEKTsKKworICAgIENHTFJlbGVhc2VD
b250ZXh0KG1fY2dsQ29udGV4dE9iaik7Cit9CisKK2Jvb2wgU2hhcmVhYmxlU3VyZmFjZTo6Y3Jl
YXRlSGFuZGxlKEhhbmRsZSYgaGFuZGxlKQoreworICAgIEFTU0VSVChoYW5kbGUubV9wb3J0ID09
IE1BQ0hfUE9SVF9OVUxMKTsKKworICAgIG1hY2hfcG9ydF90IHBvcnQgPSBJT1N1cmZhY2VDcmVh
dGVNYWNoUG9ydChtX2lvU3VyZmFjZS5nZXQoKSk7CisgICAgaWYgKHBvcnQgPT0gTUFDSF9QT1JU
X05VTEwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGhhbmRsZS5tX3BvcnQgPSBwb3J0
OworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFNoYXJlYWJsZVN1cmZhY2U6OmF0dGFjaCgp
Cit7CisgICAgQ0dMQ29udGV4dE9iaiBjZ2xfY3R4ID0gbV9jZ2xDb250ZXh0T2JqOworCisgICAg
aWYgKCFtX2ZyYW1lQnVmZmVyT2JqZWN0SUQpIHsKKyAgICAgICAgLy8gR2VuZXJhdGUgYSBmcmFt
ZSBidWZmZXIgb2JqZWN0LgorICAgICAgICBnbEdlbkZyYW1lYnVmZmVyc0VYVCgxLCAmbV9mcmFt
ZUJ1ZmZlck9iamVjdElEKTsKKworICAgICAgICAvLyBBc3NvY2lhdGUgaXQgd2l0aCB0aGUgdGV4
dHVyZS4KKyAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhULCBt
X2ZyYW1lQnVmZmVyT2JqZWN0SUQpOworICAgICAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJERVhU
KEdMX0ZSQU1FQlVGRkVSX0VYVCwgR0xfQ09MT1JfQVRUQUNITUVOVDBfRVhULCBHTF9URVhUVVJF
X1JFQ1RBTkdMRV9FWFQsIHRleHR1cmVJRCgpLCAwKTsKKyAgICAgICAgZ2xCaW5kRnJhbWVidWZm
ZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhULCAwKTsKKyAgICB9CisKKyAgICBnbEJpbmRGcmFtZWJ1
ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIG1fZnJhbWVCdWZmZXJPYmplY3RJRCk7Cit9CisK
K3ZvaWQgU2hhcmVhYmxlU3VyZmFjZTo6ZGV0YWNoKCkKK3sKKyAgICBDR0xDb250ZXh0T2JqIGNn
bF9jdHggPSBtX2NnbENvbnRleHRPYmo7CisKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9G
UkFNRUJVRkZFUl9FWFQsIDApOworfQorCit1bnNpZ25lZCBTaGFyZWFibGVTdXJmYWNlOjp0ZXh0
dXJlSUQoKQoreworICAgIGlmICghbV90ZXh0dXJlSUQpIHsKKyAgICAgICAgQ0dMQ29udGV4dE9i
aiBjZ2xfY3R4ID0gbV9jZ2xDb250ZXh0T2JqOworICAgICAgICAKKyAgICAgICAgLy8gR2VuZXJh
dGUgYSB0ZXh0dXJlLgorICAgICAgICBnbEdlblRleHR1cmVzKDEsICZtX3RleHR1cmVJRCk7Cisg
ICAgICAgIAorICAgICAgICAvLyBBc3NvY2lhdGUgaXQgd2l0aCBvdXIgSU9TdXJmYWNlLgorICAg
ICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfUkVDVEFOR0xFX0VYVCwgbV90ZXh0dXJlSUQp
OworICAgICAgICBDR0xUZXhJbWFnZUlPU3VyZmFjZTJEKGNnbF9jdHgsIEdMX1RFWFRVUkVfUkVD
VEFOR0xFX0VYVCwgR0xfUkdCQTgsIG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCksIEdM
X0JHUkEsIEdMX1VOU0lHTkVEX0lOVF84XzhfOF84X1JFViwgbV9pb1N1cmZhY2UuZ2V0KCksIDAp
OworICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfUkVDVEFOR0xFX0VYVCwgMCk7Cisg
ICAgfQorCisgICAgcmV0dXJuIG1fdGV4dHVyZUlEOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKwpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9TaGFyZWFibGVTdXJmYWNlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9TaGFyZWFibGVTdXJmYWNl
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1NoYXJlYWJsZVN1
cmZhY2UuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgU2hhcmVhYmxlU3VyZmFjZV9oCisjZGVmaW5lIFNoYXJlYWJsZVN1cmZhY2VfaAorCisjaW5j
bHVkZSA8V2ViQ29yZS9JbnRTaXplLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Cisj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgor
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKwordHlwZWRlZiBzdHJ1Y3QgX0NHTENvbnRleHRP
YmplY3QqIENHTENvbnRleHRPYmo7Cit0eXBlZGVmIHN0cnVjdCBfX0lPU3VyZmFjZSogSU9TdXJm
YWNlUmVmOworCituYW1lc3BhY2UgQ29yZUlQQyB7CisgICAgY2xhc3MgQXJndW1lbnREZWNvZGVy
OworICAgIGNsYXNzIEFyZ3VtZW50RW5jb2RlcjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIFNoYXJlYWJsZVN1cmZhY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxTaGFyZWFibGVTdXJm
YWNlPiB7CitwdWJsaWM6CisgICAgY2xhc3MgSGFuZGxlIHsKKyAgICAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoSGFuZGxlKTsKKyAgICAKKyAgICBwdWJsaWM6CisgICAgICAgIEhhbmRsZSgpOwor
ICAgICAgICB+SGFuZGxlKCk7CisKKyAgICAgICAgdm9pZCBlbmNvZGUoQ29yZUlQQzo6QXJndW1l
bnRFbmNvZGVyKikgY29uc3Q7CisgICAgICAgIHN0YXRpYyBib29sIGRlY29kZShDb3JlSVBDOjpB
cmd1bWVudERlY29kZXIqLCBIYW5kbGUmKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVu
ZCBjbGFzcyBTaGFyZWFibGVTdXJmYWNlOworCisgICAgICAgIG11dGFibGUgbWFjaF9wb3J0X3Qg
bV9wb3J0OworICAgIH07CisKKyAgICAvLyBDcmVhdGUgYSBzaGFyZWFibGUgc3VyZmFjZSB3aXRo
IHRoZSBnaXZlbiBzaXplLiBSZXR1cm5zIDAgb24gZmFpbHVyZS4KKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxTaGFyZWFibGVTdXJmYWNlPiBjcmVhdGUoQ0dMQ29udGV4dE9iaiwgY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYpOworCisgICAgLy8gQ3JlYXRlIGEgc2hhcmVhYmxlIHN1cmZhY2UgZnJvbSBh
IGhhbmRsZS4gUmV0dXJucyAwIG9uIGZhaWx1cmUuCisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2hh
cmVhYmxlU3VyZmFjZT4gY3JlYXRlKENHTENvbnRleHRPYmosIGNvbnN0IEhhbmRsZSYpOworCisg
ICAgflNoYXJlYWJsZVN1cmZhY2UoKTsKKworICAgIGJvb2wgY3JlYXRlSGFuZGxlKEhhbmRsZSYp
OworICAgIAorICAgIHVuc2lnbmVkIHRleHR1cmVJRCgpOworCisgICAgdm9pZCBhdHRhY2goKTsK
KyAgICB2b2lkIGRldGFjaCgpOworCitwcml2YXRlOgorICAgIFNoYXJlYWJsZVN1cmZhY2UoQ0dM
Q29udGV4dE9iaiwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFJldGFpblB0cjxJT1N1cmZhY2VS
ZWY+KTsKKworICAgIC8vIFRoZSBPcGVuR0wgY29udGV4dC4KKyAgICBDR0xDb250ZXh0T2JqIG1f
Y2dsQ29udGV4dE9iajsKKworICAgIC8vIFRoZSBzaXplIG9mIHRoZSBzdXJmYWNlLgorICAgIFdl
YkNvcmU6OkludFNpemUgbV9zaXplOworICAgIAorICAgIC8vIFRoZSBJRCBvZiB0aGUgdGV4dHVy
ZS4KKyAgICB1bnNpZ25lZCBtX3RleHR1cmVJRDsKKworICAgIC8vIFRoZSBmcmFtZSBidWZmZXIg
b2JqZWN0IElEIG9mIHRoZSB0ZXh0dXJlOyB1c2VkIHdoZW4gdGhlIHN1cmZhY2UgaXMgdXNlZCBh
cyBhIHJlbmRlciBkZXN0aW5hdGlvbi4KKyAgICB1bnNpZ25lZCBtX2ZyYW1lQnVmZmVyT2JqZWN0
SUQ7CisKKyAgICBSZXRhaW5QdHI8SU9TdXJmYWNlUmVmPiBtX2lvU3VyZmFjZTsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gU2hhcmVhYmxlU3VyZmFjZV9oCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiA3NjgxMCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTc0LDYgKzE3NCw4IEBACiAJCTFBOTEw
MDcyMTI2Njc1QzQwMDE4NDJGNSAvKiBGaW5kSW5kaWNhdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOTEwMDcwMTI2Njc1QzQwMDE4NDJGNSAv
KiBGaW5kSW5kaWNhdG9yLmNwcCAqLzsgfTsKIAkJMUE5MTAxMEExMjY4QzhDQTAwMTg0MkY1IC8q
IEZpbmRJbmRpY2F0b3JXaW5kb3cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFBOTEwMTA4MTI2OEM4Q0EwMDE4NDJGNSAvKiBGaW5kSW5kaWNhdG9yV2lu
ZG93LmggKi87IH07CiAJCTFBOTEwMTBCMTI2OEM4Q0EwMDE4NDJGNSAvKiBGaW5kSW5kaWNhdG9y
V2luZG93Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUE5MTAxMDkxMjY4QzhDQTAwMTg0MkY1IC8qIEZpbmRJbmRpY2F0b3JXaW5kb3cubW0gKi87IH07
CisJCTFBOTYzNkJDMTJGMzQ4NDkwMDc4QTA2MiAvKiBTaGFyZWFibGVTdXJmYWNlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOTYzNkJBMTJGMzQ4
NDkwMDc4QTA2MiAvKiBTaGFyZWFibGVTdXJmYWNlLmNwcCAqLzsgfTsKKwkJMUE5NjM2QkQxMkYz
NDg0OTAwNzhBMDYyIC8qIFNoYXJlYWJsZVN1cmZhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOTYzNkJCMTJGMzQ4NDkwMDc4QTA2MiAvKiBTaGFy
ZWFibGVTdXJmYWNlLmggKi87IH07CiAJCTFBQTFDQzVEMTAwRkExQTEwMDc4REVCQyAvKiBRdWFy
dHpDb3JlLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFBQTFDQzVDMTAwRkExQTEwMDc4REVCQyAvKiBRdWFydHpDb3JlLmZyYW1ld29y
ayAqLzsgfTsKIAkJMUFBMUNEMDcxMDBGQTFCQTAwNzhERUJDIC8qIENhcmJvbi5mcmFtZXdvcmsg
aW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUExQ0Qw
NjEwMEZBMUJBMDA3OERFQkMgLyogQ2FyYm9uLmZyYW1ld29yayAqLzsgfTsKIAkJMUFBMkU1MUQx
MkU0QzA1RTAwQkM0OTY2IC8qIENHVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUEyRTUxQjEyRTRDMDVFMDBCQzQ5NjYgLyogQ0dVdGls
aXRpZXMuaCAqLzsgfTsKQEAgLTkxNiw2ICs5MTgsOCBAQAogCQkxQTkxMDA3MDEyNjY3NUM0MDAx
ODQyRjUgLyogRmluZEluZGljYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBGaW5kSW5kaWNhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUE5MTAxMDgxMjY4QzhDQTAwMTg0MkY1IC8qIEZpbmRJbmRpY2F0b3JXaW5kb3cuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmluZEluZGljYXRvcldpbmRvdy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxQTkxMDEwOTEyNjhDOENBMDAxODQyRjUgLyogRmluZElu
ZGljYXRvcldpbmRvdy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IEZpbmRJbmRpY2F0b3JXaW5kb3cubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFB
OTYzNkJBMTJGMzQ4NDkwMDc4QTA2MiAvKiBTaGFyZWFibGVTdXJmYWNlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYXJlYWJsZVN1cmZhY2UuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkxQTk2MzZCQjEyRjM0ODQ5MDA3OEEwNjIgLyogU2hhcmVh
YmxlU3VyZmFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWFibGVT
dXJmYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQTFDNzlBMTAwRTdGQzUw
MDc4REVCQyAvKiBXZWJDb3JlLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBwYXRoID0gV2ViQ29yZS5m
cmFtZXdvcms7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTFBQTFDN0RF
MTAwRTg0NkUwMDc4REVCQyAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsg
cGF0aCA9IEphdmFTY3JpcHRDb3JlLmZyYW1ld29yazsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RV
Q1RTX0RJUjsgfTsKIAkJMUFBMUNDNUMxMDBGQTFBMTAwNzhERUJDIC8qIFF1YXJ0ekNvcmUuZnJh
bWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
d3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBRdWFydHpDb3JlLmZyYW1ld29yazsgcGF0aCA9IC9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1F1YXJ0ekNvcmUuZnJhbWV3b3JrOyBzb3VyY2VUcmVl
ID0gIjxhYnNvbHV0ZT4iOyB9OwpAQCAtMjM1MCwxMyArMjM1NCwxNiBAQAogCQlCQzExMUI1QTEx
MkY2MjgyMDAzMzdCQUIgLyogbWFjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKLQkJCQlDNTc0QTU3RjEyRTY2NjgxMDAyREZFOTggLyogUGFzdGVib2FyZFR5cGVz
LmggKi8sCi0JCQkJQzU3NEE1ODAxMkU2NjY4MTAwMkRGRTk4IC8qIFBhc3RlYm9hcmRUeXBlcy5t
bSAqLywKIAkJCQkxQTZGOUZCNjExRTE0MDg1MDBEQjEzNzEgLyogQ29tbWFuZExpbmVNYWMuY3Bw
ICovLAogCQkJCUMwMkJGRjFEMTI1MTUwMkUwMDlDQ0JFQSAvKiBOYXRpdmVXZWJLZXlib2FyZEV2
ZW50TWFjLm1tICovLAotCQkJCUJDRjUwNUU2MTI0MzA0N0IwMDU5NTVBRSAvKiBQbGF0Zm9ybUNl
cnRpZmljYXRlSW5mby5tbSAqLywKKwkJCQlDNTc0QTU3RjEyRTY2NjgxMDAyREZFOTggLyogUGFz
dGVib2FyZFR5cGVzLmggKi8sCisJCQkJQzU3NEE1ODAxMkU2NjY4MTAwMkRGRTk4IC8qIFBhc3Rl
Ym9hcmRUeXBlcy5tbSAqLywKIAkJCQlCQ0Y1MDVFNTEyNDMwNDdCMDA1OTU1QUUgLyogUGxhdGZv
cm1DZXJ0aWZpY2F0ZUluZm8uaCAqLywKKwkJCQlCQ0Y1MDVFNjEyNDMwNDdCMDA1OTU1QUUgLyog
UGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8ubW0gKi8sCiAJCQkJRTFDQzFCOEYxMkQ3RUFERjAwNjI1
ODM4IC8qIFByaW50SW5mb01hYy5tbSAqLywKKwkJCQkxQUFCNEFBOTEyOTZGMTU0MDAyMzk1MkYg
LyogU2FuZGJveEV4dGVuc2lvbk1hYy5tbSAqLywKKwkJCQkxQTk2MzZCQTEyRjM0ODQ5MDA3OEEw
NjIgLyogU2hhcmVhYmxlU3VyZmFjZS5jcHAgKi8sCisJCQkJMUE5NjM2QkIxMkYzNDg0OTAwNzhB
MDYyIC8qIFNoYXJlYWJsZVN1cmZhY2UuaCAqLywKIAkJCQlCQzlFOTVEMjExNDQ5QjAzMDA4NzBF
NzEgLyogVXBkYXRlQ2h1bmsuY3BwICovLAogCQkJCUJDOUU5NUQxMTE0NDlCMDMwMDg3MEU3MSAv
KiBVcGRhdGVDaHVuay5oICovLAogCQkJCUJDRTIzMjYyMTIyQzZDRjMwMEQ1QzM1QSAvKiBXZWJD
b3JlQXJndW1lbnRDb2RlcnNNYWMubW0gKi8sCkBAIC0yMzY1LDcgKzIzNzIsNiBAQAogCQkJCTkw
NTYyMEU1MTJCQzI0NzYwMDA3OTlCNiAvKiBXZWJNZW1vcnlTYW1wbGVyLm1hYy5tbSAqLywKIAkJ
CQlCQ0UyMzFDMDEyMkM0NjZFMDBENUMzNUEgLyogV2ViVVJMUmVxdWVzdE1hYy5tbSAqLywKIAkJ
CQlCQzkwQTFENTEyMkRENjZBMDBDQzhDNTAgLyogV2ViVVJMUmVzcG9uc2VNYWMubW0gKi8sCi0J
CQkJMUFBQjRBQTkxMjk2RjE1NDAwMjM5NTJGIC8qIFNhbmRib3hFeHRlbnNpb25NYWMubW0gKi8s
CiAJCQkpOwogCQkJcGF0aCA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0z
MDk3LDYgKzMxMDMsNyBAQAogCQkJCUUxMzRGMDE3MTJFQTVEMzMwMDRFQzU4RCAvKiBXS1ByaW50
aW5nVmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUExODZFRUExMkVGNzYxODAwOEU1RjM3IC8q
IExheWVyVHJlZUhvc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUJGQTYxNzlGMTJGMEI5OUQwMDMz
RTBDQSAvKiBXS1ZpZXdQcml2YXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQkxQTk2MzZCRDEyRjM0
ODQ5MDA3OEEwNjIgLyogU2hhcmVhYmxlU3VyZmFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwog
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0zNTY0
LDYgKzM1NzEsNyBAQAogCQkJCTFBMTg2RUVCMTJFRjc2MTgwMDhFNUYzNyAvKiBMYXllclRyZWVI
b3N0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMTg3MTg1MTJFRjk4NzcwMDhFNUYzNyAvKiBM
YXllclRyZWVIb3N0TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNjUwMUJEMUExMkYxMjQzNDAw
RTlGMjQ4IC8qIFdLQnVuZGxlSW5zcGVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFBOTYz
NkJDMTJGMzQ4NDkwMDc4QTA2MiAvKiBTaGFyZWFibGVTdXJmYWNlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9
Owo=
</data>
<flag name="review"
          id="71954"
          type_id="1"
          status="+"
          setter="aroben"
    />
          </attachment>
      

    </bug>

</bugzilla>