<?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>132430</bug_id>
          
          <creation_ts>2014-05-01 10:08:02 -0700</creation_ts>
          <short_desc>Fix handling of attributes prior to compiling shader</short_desc>
          <delta_ts>2014-05-01 12:03:22 -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>WebGL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>121849</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>fpizlo</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>noam</cc>
    
    <cc>oliver</cc>
    
    <cc>roger_fong</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1005757</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-05-01 10:08:02 -0700</bug_when>
    <thetext>Some WebGL sites broke after ANGLE symbol name hashing was activated under Bug 121849. This is because we were not properly honoring the expected behavior of bound attributes (from the Khronos documentation): &quot;glBindAttribLocation can be called before any vertex shader objects are bound to the specified program object. It is also permissible to bind a generic attribute index to an attribute variable name that is never used in a vertex shader.&quot;

WebGL programs that called bindAttribLocations prior to compiling shader sources would perform the bind using the non-hashed symbol name, but would later create the attributes as hashed names. Consequently, the program would refer to attributes that were never actually part of any shader, resulting in some amazing display artifacts.

This patch adds a dictionary of hashed symbol names so that we can tell the WebGL program the proper name that will be used when the shader is eventually compiled, allowing the WebGL program to link against the proper symbol after compiling and linking completes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1005758</commentid>
    <comment_count>1</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-05-01 10:08:43 -0700</bug_when>
    <thetext>&lt;rdar://problem/16394921&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1005760</commentid>
    <comment_count>2</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-05-01 10:10:36 -0700</bug_when>
    <thetext>It might be more correct to partition the hash by program, but since the hash is deterministic (the same input name will always hash to the same output, as long as the hash table is not cleared), it&apos;s probably not worth the extra complexity. This will also reduce the number of hashes we have to compute, since each symbol is only hashed once, instead of once for each program.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1005763</commentid>
    <comment_count>3</comment_count>
      <attachid>230588</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-05-01 10:16:58 -0700</bug_when>
    <thetext>Created attachment 230588
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1005771</commentid>
    <comment_count>4</comment_count>
      <attachid>230590</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-05-01 10:30:49 -0700</bug_when>
    <thetext>Created attachment 230590
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1005774</commentid>
    <comment_count>5</comment_count>
      <attachid>230590</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2014-05-01 10:39:46 -0700</bug_when>
    <thetext>Comment on attachment 230590
Patch

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

&gt; Source/WebCore/platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:807
&gt; -    Platform3DObject shaders[2];
&gt; +    Platform3DObject shaders[2] = { 0 };

I guess this could be just { } right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1005800</commentid>
    <comment_count>6</comment_count>
      <attachid>230600</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-05-01 11:57:33 -0700</bug_when>
    <thetext>Created attachment 230600
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1005801</commentid>
    <comment_count>7</comment_count>
      <attachid>230600</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2014-05-01 12:01:20 -0700</bug_when>
    <thetext>Comment on attachment 230600
Patch

Nit. You&apos;re using two space indent in the JS, but I expect you simply copied an existing test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1005802</commentid>
    <comment_count>8</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-05-01 12:03:22 -0700</bug_when>
    <thetext>Committed r168112: &lt;http://trac.webkit.org/changeset/168112&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>230588</attachid>
            <date>2014-05-01 10:16:58 -0700</date>
            <delta_ts>2014-05-01 10:30:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-132430-20140501101638.patch</filename>
            <type>text/plain</type>
            <size>5652</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2ODEwNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDE0LTA1LTAxICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIEZpeCBoYW5kbGluZyBvZiBh
dHRyaWJ1dGVzIHByaW9yIHRvIGNvbXBpbGluZyBzaGFkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMjQzMAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYkdMIHByb2dyYW1zIHRoYXQgY2FsbGVkIGJp
bmRBdHRyaWJMb2NhdGlvbnMgcHJpb3IgdG8gY29tcGlsaW5nIHNoYWRlciBzb3VyY2VzCisgICAg
ICAgIHdvdWxkIHBlcmZvcm0gdGhlIGJpbmQgdXNpbmcgdGhlIG5vbi1oYXNoZWQgc3ltYm9sIG5h
bWUsIGJ1dCB3b3VsZCBsYXRlciBjcmVhdGUKKyAgICAgICAgdGhlIGF0dHJpYnV0ZXMgYXMgaGFz
aGVkIG5hbWVzLiBDb25zZXF1ZW50bHksIHRoZSBwcm9ncmFtIHdvdWxkIHJlZmVyIHRvCisgICAg
ICAgIGF0dHJpYnV0ZXMgdGhhdCB3ZXJlIG5ldmVyIGFjdHVhbGx5IHBhcnQgb2YgYW55IHNoYWRl
ciwgcmVzdWx0aW5nIGluIHNvbWUgYW1hemluZworICAgICAgICBkaXNwbGF5IGFydGlmYWN0cy4K
KworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYSBkaWN0aW9uYXJ5IG9mIGhhc2hlZCBzeW1ib2wg
bmFtZXMgc28gdGhhdCB3ZSBjYW4gdGVsbCB0aGUgV2ViR0wKKyAgICAgICAgcHJvZ3JhbSB0aGUg
cHJvcGVyIG5hbWUgdGhhdCB3aWxsIGJlIHVzZWQgd2hlbiB0aGUgc2hhZGVyIGlzIGV2ZW50dWFs
bHkgY29tcGlsZWQsCisgICAgICAgIGFsbG93aW5nIHRoZSBXZWJHTCBwcm9ncmFtIHRvIGxpbmsg
YWdhaW5zdCB0aGUgcHJvcGVyIHN5bWJvbCBhZnRlciBjb21waWxpbmcgYW5kCisgICAgICAgIGxp
bmtpbmcgY29tcGxldGVzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0M0QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0M0RPcGVuR0xDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2VuZXJhdGVIYXNo
ZWROYW1lKTogRnVuY3Rpb24gdXNlcyB0aGUgQU5HTEUgaGFzaGluZworICAgICAgICBmdW5jdGlv
biB0byBnZW5lcmF0ZSBjb3JyZWN0IHN5bWJvbC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjptYXBwZWRTeW1ib2xOYW1lKTogSWYgd2UgaGF2ZW4ndCBjb21waWxlZCBzaGFk
ZXJzIHlldCwgbG9vaworICAgICAgICBpbiBvdXIgc2V0IG9mIHBvdGVudGlhbGx5IHVudXNlZCBh
dHRyaWJ1dGVzLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Om9yaWdpbmFs
U3ltYm9sTmFtZSk6IERpdHRvLCBmb3IgcmV2ZXJzZSBsb29rdXAuCisKIDIwMTQtMDQtMzAgIEpl
ciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgW01TRV0gU2Vla2luZyBi
ZXR3ZWVuIHR3byBidWZmZXJlZCByYW5nZXMgZW5xdXVlcyBpbmNvcnJlY3QgYnVmZmVycy4KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0M0QuaAkocmV2aXNpb24gMTY4MDM1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAkod29ya2luZyBjb3B5KQpAQCAtMTA5MSw3ICsx
MDkxLDEwIEBAIHByaXZhdGU6CiAgICAgfTsKICAgICB0eXBlZGVmIEhhc2hNYXA8UGxhdGZvcm0z
RE9iamVjdCwgQWN0aXZlU2hhZGVyU3ltYm9sQ291bnRzPiBTaGFkZXJQcm9ncmFtU3ltYm9sQ291
bnRNYXA7CiAgICAgU2hhZGVyUHJvZ3JhbVN5bWJvbENvdW50TWFwIG1fc2hhZGVyUHJvZ3JhbVN5
bWJvbENvdW50TWFwOwotICAgIAorCisgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgU3RyaW5n
PiBIYXNoZWRTeW1ib2xNYXA7CisgICAgSGFzaGVkU3ltYm9sTWFwIG1fcG9zc2libHlVbnVzZWRB
dHRyaWJ1dGVNYXA7CisKICAgICBTdHJpbmcgbWFwcGVkU3ltYm9sTmFtZShQbGF0Zm9ybTNET2Jq
ZWN0IHByb2dyYW0sIEFOR0xFU2hhZGVyU3ltYm9sVHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lKTsK
ICAgICBTdHJpbmcgbWFwcGVkU3ltYm9sTmFtZShQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcnNbMl0s
IHNpemVfdCBjb3VudCwgY29uc3QgU3RyaW5nJiBuYW1lKTsKICAgICBTdHJpbmcgb3JpZ2luYWxT
eW1ib2xOYW1lKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgQU5HTEVTaGFkZXJTeW1ib2xUeXBl
LCBjb25zdCBTdHJpbmcmIG5hbWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0M0RPcGVuR0xDb21tb24uY3BwCShyZXZpc2lvbiAxNjgwMzUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw2ICs1NCw3IEBACiAjaW5jbHVkZSA8cnVudGltZS9G
bG9hdDMyQXJyYXkuaD4KICNpbmNsdWRlIDxydW50aW1lL0ludDMyQXJyYXkuaD4KICNpbmNsdWRl
IDxydW50aW1lL1VpbnQ4QXJyYXkuaD4KKyNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+CiAjaW5j
bHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgpAQCAtNzYsNyArNzcsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBTaGFkZXJOYW1lSGFzaCogY3VycmVudE5hbWVI
YXNoTWFwRm9yU2hhZGVyOworc3RhdGljIFNoYWRlck5hbWVIYXNoKiBjdXJyZW50TmFtZUhhc2hN
YXBGb3JTaGFkZXIgPSBudWxscHRyOwogCiAvLyBIYXNoIGZ1bmN0aW9uIHVzZWQgYnkgdGhlIEFO
R0xFIHRyYW5zbGF0b3IvY29tcGlsZXIgdG8gZG8KIC8vIHN5bWJvbCBuYW1lIG1hbmdsaW5nLiBT
aW5jZSB0aGlzIGlzIGEgc3RhdGljIG1ldGhvZCwgYmVmb3JlCkBAIC03ODksMTAgKzc5MCwyMSBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRBdHRhY2hlZFNoYWRlCiAgICAgOjpnbEdldEF0
dGFjaGVkU2hhZGVycyhwcm9ncmFtLCBtYXhDb3VudCwgY291bnQsIHNoYWRlcnMpOwogfQogCitz
dGF0aWMgU3RyaW5nIGdlbmVyYXRlSGFzaGVkTmFtZShjb25zdCBTdHJpbmcmIG5hbWUpCit7Cisg
ICAgaWYgKG5hbWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbmFtZTsKKyAgICB1aW50NjRf
dCBudW1iZXIgPSBuYW1lSGFzaEZvclNoYWRlcihuYW1lLnV0ZjgoKS5kYXRhKCksIG5hbWUubGVu
Z3RoKCkpOworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZCgi
d2ViZ2xfIik7CisgICAgYXBwZW5kVW5zaWduZWQ2NEFzSGV4KG51bWJlciwgYnVpbGRlciwgTG93
ZXJjYXNlKTsKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQorCiBTdHJpbmcgR3Jh
cGhpY3NDb250ZXh0M0Q6Om1hcHBlZFN5bWJvbE5hbWUoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFt
LCBBTkdMRVNoYWRlclN5bWJvbFR5cGUgc3ltYm9sVHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lKQog
ewogICAgIEdDM0RzaXplaSBjb3VudDsKLSAgICBQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcnNbMl07
CisgICAgUGxhdGZvcm0zRE9iamVjdCBzaGFkZXJzWzJdID0geyAwIH07CiAgICAgZ2V0QXR0YWNo
ZWRTaGFkZXJzKHByb2dyYW0sIDIsICZjb3VudCwgc2hhZGVycyk7CiAKICAgICBmb3IgKEdDM0Rz
aXplaSBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKQEAgLTgwNSw2ICs4MTcsMjMgQEAgU3RyaW5n
IEdyYXBoaWNzQ29udGV4dDNEOjptYXBwZWRTeW1ib2xOYQogICAgICAgICBpZiAoc3ltYm9sRW50
cnkgIT0gc3ltYm9sTWFwLmVuZCgpKQogICAgICAgICAgICAgcmV0dXJuIHN5bWJvbEVudHJ5LT52
YWx1ZS5tYXBwZWROYW1lOwogICAgIH0KKworICAgIGlmIChzeW1ib2xUeXBlID09IFNIQURFUl9T
WU1CT0xfVFlQRV9BVFRSSUJVVEUgJiYgIW5hbWUuaXNFbXB0eSgpKSB7CisgICAgICAgIC8vIEF0
dHJpYnV0ZXMgYXJlIGEgc3BlY2lhbCBjYXNlOiB0aGV5IG1heSBiZSByZXF1ZXN0ZWQgYmVmb3Jl
IGFueSBzaGFkZXJzIGhhdmUgYmVlbiBjb21waWxlZCwKKyAgICAgICAgLy8gYW5kIGFyZW4ndCBl
dmVuIHJlcXVpcmVkIHRvIGJlIHVzZWQgaW4gYW55IHNoYWRlciBwcm9ncmFtLgorICAgICAgICBp
ZiAoIW5hbWVIYXNoTWFwRm9yU2hhZGVycykKKyAgICAgICAgICAgIG5hbWVIYXNoTWFwRm9yU2hh
ZGVycyA9IGFkb3B0UHRyKG5ldyBTaGFkZXJOYW1lSGFzaCk7CisgICAgICAgIGN1cnJlbnROYW1l
SGFzaE1hcEZvclNoYWRlciA9IG5hbWVIYXNoTWFwRm9yU2hhZGVycy5nZXQoKTsKKworICAgICAg
ICBTdHJpbmcgZ2VuZXJhdGVkTmFtZSA9IGdlbmVyYXRlSGFzaGVkTmFtZShuYW1lKTsKKworICAg
ICAgICBjdXJyZW50TmFtZUhhc2hNYXBGb3JTaGFkZXIgPSBudWxscHRyOworCisgICAgICAgIG1f
cG9zc2libHlVbnVzZWRBdHRyaWJ1dGVNYXAuc2V0KGdlbmVyYXRlZE5hbWUsIG5hbWUpOworCisg
ICAgICAgIHJldHVybiBnZW5lcmF0ZWROYW1lOworICAgIH0KKwogICAgIHJldHVybiBuYW1lOwog
fQogICAgIApAQCAtODI1LDYgKzg1NCwxNiBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6Om9y
aWdpbmFsU3ltYm9sCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN5bWJvbEVudHJ5LmtleTsKICAg
ICAgICAgfQogICAgIH0KKworICAgIGlmIChzeW1ib2xUeXBlID09IFNIQURFUl9TWU1CT0xfVFlQ
RV9BVFRSSUJVVEUgJiYgIW5hbWUuaXNFbXB0eSgpKSB7CisgICAgICAgIC8vIEF0dHJpYnV0ZXMg
YXJlIGEgc3BlY2lhbCBjYXNlOiB0aGV5IG1heSBiZSByZXF1ZXN0ZWQgYmVmb3JlIGFueSBzaGFk
ZXJzIGhhdmUgYmVlbiBjb21waWxlZCwKKyAgICAgICAgLy8gYW5kIGFyZW4ndCBldmVuIHJlcXVp
cmVkIHRvIGJlIHVzZWQgaW4gYW55IHNoYWRlciBwcm9ncmFtLgorCisgICAgICAgIGNvbnN0IGF1
dG8mIGNhY2hlZCA9IG1fcG9zc2libHlVbnVzZWRBdHRyaWJ1dGVNYXAuZmluZChuYW1lKTsKKyAg
ICAgICAgaWYgKGNhY2hlZCAhPSBtX3Bvc3NpYmx5VW51c2VkQXR0cmlidXRlTWFwLmVuZCgpKQor
ICAgICAgICAgICAgcmV0dXJuIGNhY2hlZC0+dmFsdWU7CisgICAgfQorCiAgICAgcmV0dXJuIG5h
bWU7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>230590</attachid>
            <date>2014-05-01 10:30:49 -0700</date>
            <delta_ts>2014-05-01 11:57:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-132430-20140501103027.patch</filename>
            <type>text/plain</type>
            <size>7844</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNjgxMDcpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDE0LTA1LTAxICBCcmVudCBGdWxnaGFtICA8YmZ1
bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIEZpeCBoYW5kbGluZyBvZiBhdHRyaWJ1dGVzIHBy
aW9yIHRvIGNvbXBpbGluZyBzaGFkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzMjQzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFdlYkdMIHByb2dyYW1zIHRoYXQgY2FsbGVkIGJpbmRBdHRyaWJMb2Nh
dGlvbnMgcHJpb3IgdG8gY29tcGlsaW5nIHNoYWRlciBzb3VyY2VzCisgICAgICAgIHdvdWxkIHBl
cmZvcm0gdGhlIGJpbmQgdXNpbmcgdGhlIG5vbi1oYXNoZWQgc3ltYm9sIG5hbWUsIGJ1dCB3b3Vs
ZCBsYXRlciBjcmVhdGUKKyAgICAgICAgdGhlIGF0dHJpYnV0ZXMgYXMgaGFzaGVkIG5hbWVzLiBD
b25zZXF1ZW50bHksIHRoZSBwcm9ncmFtIHdvdWxkIHJlZmVyIHRvCisgICAgICAgIGF0dHJpYnV0
ZXMgdGhhdCB3ZXJlIG5ldmVyIGFjdHVhbGx5IHBhcnQgb2YgYW55IHNoYWRlciwgcmVzdWx0aW5n
IGluIHNvbWUgYW1hemluZworICAgICAgICBkaXNwbGF5IGFydGlmYWN0cy4KKworICAgICAgICBU
aGlzIHBhdGNoIGFkZHMgYSBkaWN0aW9uYXJ5IG9mIGhhc2hlZCBzeW1ib2wgbmFtZXMgc28gdGhh
dCB3ZSBjYW4gdGVsbCB0aGUgV2ViR0wKKyAgICAgICAgcHJvZ3JhbSB0aGUgcHJvcGVyIG5hbWUg
dGhhdCB3aWxsIGJlIHVzZWQgd2hlbiB0aGUgc2hhZGVyIGlzIGV2ZW50dWFsbHkgY29tcGlsZWQs
CisgICAgICAgIGFsbG93aW5nIHRoZSBXZWJHTCBwcm9ncmFtIHRvIGxpbmsgYWdhaW5zdCB0aGUg
cHJvcGVyIHN5bWJvbCBhZnRlciBjb21waWxpbmcgYW5kCisgICAgICAgIGxpbmtpbmcgY29tcGxl
dGVzLgorCisgICAgICAgICogd3RmL0hleE51bWJlci5oOgorICAgICAgICAoV1RGOjphcHBlbmRV
bnNpZ25lZDY0QXNIZXgpOiBBZGQgdWludDY0X3QtY29tcGF0aWJsZSBoZXgtPnN0cmluZyBjb252
ZXJ0ZXIuCisKIDIwMTQtMDUtMDEgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29t
PgogCiAgICAgICAgIFtFRkxdIFRoZXJlIGFyZSBtYW55IHdhcm5pbmdzIHdpdGggc29mdHdhcmUg
YmFja2VuZApJbmRleDogU291cmNlL1dURi93dGYvSGV4TnVtYmVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dURi93dGYvSGV4TnVtYmVyLmgJKHJldmlzaW9uIDE2ODEwNikKKysrIFNvdXJjZS9X
VEYvd3RmL0hleE51bWJlci5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCw2ICs3OCwyMCBAQCBpbmxp
bmUgdm9pZCBhcHBlbmRVbnNpZ25lZEFzSGV4KHVuc2lnbmVkCiAgICAgcmVzdWx0LnJldmVyc2Uo
KTsKICAgICBkZXN0aW5hdGlvbi5hcHBlbmQocmVzdWx0LmRhdGEoKSwgcmVzdWx0LnNpemUoKSk7
CiB9CisgICAgCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgoraW5saW5lIHZvaWQgYXBwZW5kVW5zaWdu
ZWQ2NEFzSGV4KHVpbnQ2NF90IG51bWJlciwgVCYgZGVzdGluYXRpb24sIEhleENvbnZlcnNpb25N
b2RlIG1vZGUgPSBVcHBlcmNhc2UpCit7CisgICAgY29uc3QgTENoYXIqIGhleERpZ2l0cyA9IElu
dGVybmFsOjpoZXhEaWdpdHNGb3JNb2RlKG1vZGUpOworICAgIFZlY3RvcjxMQ2hhciwgOD4gcmVz
dWx0OworICAgIGRvIHsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChoZXhEaWdpdHNbbnVtYmVyICUg
MTZdKTsKKyAgICAgICAgbnVtYmVyID4+PSA0OworICAgIH0gd2hpbGUgKG51bWJlciA+IDApOwor
ICAgIAorICAgIHJlc3VsdC5yZXZlcnNlKCk7CisgICAgZGVzdGluYXRpb24uYXBwZW5kKHJlc3Vs
dC5kYXRhKCksIHJlc3VsdC5zaXplKCkpOworfQogCiAvLyBTYW1lIGFzIGFwcGVuZFVuc2lnbmVk
QXNIZXgsIGJ1dCB1c2luZyBleGFjdGx5ICdkZXNpcmVkRGlnaXRzJyBmb3IgdGhlIGNvbnZlcnNp
b24uCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY4MTA2
KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MjkgQEAKKzIwMTQtMDUtMDEgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisK
KyAgICAgICAgRml4IGhhbmRsaW5nIG9mIGF0dHJpYnV0ZXMgcHJpb3IgdG8gY29tcGlsaW5nIHNo
YWRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMy
NDMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2Vi
R0wgcHJvZ3JhbXMgdGhhdCBjYWxsZWQgYmluZEF0dHJpYkxvY2F0aW9ucyBwcmlvciB0byBjb21w
aWxpbmcgc2hhZGVyIHNvdXJjZXMKKyAgICAgICAgd291bGQgcGVyZm9ybSB0aGUgYmluZCB1c2lu
ZyB0aGUgbm9uLWhhc2hlZCBzeW1ib2wgbmFtZSwgYnV0IHdvdWxkIGxhdGVyIGNyZWF0ZQorICAg
ICAgICB0aGUgYXR0cmlidXRlcyBhcyBoYXNoZWQgbmFtZXMuIENvbnNlcXVlbnRseSwgdGhlIHBy
b2dyYW0gd291bGQgcmVmZXIgdG8KKyAgICAgICAgYXR0cmlidXRlcyB0aGF0IHdlcmUgbmV2ZXIg
YWN0dWFsbHkgcGFydCBvZiBhbnkgc2hhZGVyLCByZXN1bHRpbmcgaW4gc29tZSBhbWF6aW5nCisg
ICAgICAgIGRpc3BsYXkgYXJ0aWZhY3RzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBhIGRp
Y3Rpb25hcnkgb2YgaGFzaGVkIHN5bWJvbCBuYW1lcyBzbyB0aGF0IHdlIGNhbiB0ZWxsIHRoZSBX
ZWJHTAorICAgICAgICBwcm9ncmFtIHRoZSBwcm9wZXIgbmFtZSB0aGF0IHdpbGwgYmUgdXNlZCB3
aGVuIHRoZSBzaGFkZXIgaXMgZXZlbnR1YWxseSBjb21waWxlZCwKKyAgICAgICAgYWxsb3dpbmcg
dGhlIFdlYkdMIHByb2dyYW0gdG8gbGluayBhZ2FpbnN0IHRoZSBwcm9wZXIgc3ltYm9sIGFmdGVy
IGNvbXBpbGluZyBhbmQKKyAgICAgICAgbGlua2luZyBjb21wbGV0ZXMuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpnZW5lcmF0ZUhhc2hlZE5hbWUpOiBGdW5jdGlvbiB1c2VzIHRoZSBBTkdM
RSBoYXNoaW5nCisgICAgICAgIGZ1bmN0aW9uIHRvIGdlbmVyYXRlIGNvcnJlY3Qgc3ltYm9sLgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Om1hcHBlZFN5bWJvbE5hbWUpOiBJ
ZiB3ZSBoYXZlbid0IGNvbXBpbGVkIHNoYWRlcnMgeWV0LCBsb29rCisgICAgICAgIGluIG91ciBz
ZXQgb2YgcG90ZW50aWFsbHkgdW51c2VkIGF0dHJpYnV0ZXMuCisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6b3JpZ2luYWxTeW1ib2xOYW1lKTogRGl0dG8sIGZvciByZXZlcnNl
IGxvb2t1cC4KKwogMjAxNC0wNC0zMCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4K
IAogICAgICAgICBbTVNFXSBTZWVraW5nIGJldHdlZW4gdHdvIGJ1ZmZlcmVkIHJhbmdlcyBlbnF1
dWVzIGluY29ycmVjdCBidWZmZXJzLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCShyZXZpc2lvbiAxNjgxMDYpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDkxLDcgKzEwOTEsMTAgQEAgcHJpdmF0ZToKICAgICB9OwogICAg
IHR5cGVkZWYgSGFzaE1hcDxQbGF0Zm9ybTNET2JqZWN0LCBBY3RpdmVTaGFkZXJTeW1ib2xDb3Vu
dHM+IFNoYWRlclByb2dyYW1TeW1ib2xDb3VudE1hcDsKICAgICBTaGFkZXJQcm9ncmFtU3ltYm9s
Q291bnRNYXAgbV9zaGFkZXJQcm9ncmFtU3ltYm9sQ291bnRNYXA7Ci0gICAgCisKKyAgICB0eXBl
ZGVmIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IEhhc2hlZFN5bWJvbE1hcDsKKyAgICBIYXNoZWRT
eW1ib2xNYXAgbV9wb3NzaWJseVVudXNlZEF0dHJpYnV0ZU1hcDsKKwogICAgIFN0cmluZyBtYXBw
ZWRTeW1ib2xOYW1lKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgQU5HTEVTaGFkZXJTeW1ib2xU
eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogICAgIFN0cmluZyBtYXBwZWRTeW1ib2xOYW1lKFBs
YXRmb3JtM0RPYmplY3Qgc2hhZGVyc1syXSwgc2l6ZV90IGNvdW50LCBjb25zdCBTdHJpbmcmIG5h
bWUpOwogICAgIFN0cmluZyBvcmlnaW5hbFN5bWJvbE5hbWUoUGxhdGZvcm0zRE9iamVjdCBwcm9n
cmFtLCBBTkdMRVNoYWRlclN5bWJvbFR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RP
cGVuR0xDb21tb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAJKHJldmlzaW9u
IDE2ODEwNikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDYgKzU0
LDcgQEAKICNpbmNsdWRlIDxydW50aW1lL0Zsb2F0MzJBcnJheS5oPgogI2luY2x1ZGUgPHJ1bnRp
bWUvSW50MzJBcnJheS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhBcnJheS5oPgorI2luY2x1
ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVy
Lmg+CkBAIC03Niw3ICs3Nyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIFNo
YWRlck5hbWVIYXNoKiBjdXJyZW50TmFtZUhhc2hNYXBGb3JTaGFkZXI7CitzdGF0aWMgU2hhZGVy
TmFtZUhhc2gqIGN1cnJlbnROYW1lSGFzaE1hcEZvclNoYWRlciA9IG51bGxwdHI7CiAKIC8vIEhh
c2ggZnVuY3Rpb24gdXNlZCBieSB0aGUgQU5HTEUgdHJhbnNsYXRvci9jb21waWxlciB0byBkbwog
Ly8gc3ltYm9sIG5hbWUgbWFuZ2xpbmcuIFNpbmNlIHRoaXMgaXMgYSBzdGF0aWMgbWV0aG9kLCBi
ZWZvcmUKQEAgLTc4OSwxMCArNzkwLDIxIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEF0
dGFjaGVkU2hhZGUKICAgICA6OmdsR2V0QXR0YWNoZWRTaGFkZXJzKHByb2dyYW0sIG1heENvdW50
LCBjb3VudCwgc2hhZGVycyk7CiB9CiAKK3N0YXRpYyBTdHJpbmcgZ2VuZXJhdGVIYXNoZWROYW1l
KGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBpZiAobmFtZS5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybiBuYW1lOworICAgIHVpbnQ2NF90IG51bWJlciA9IG5hbWVIYXNoRm9yU2hhZGVyKG5h
bWUudXRmOCgpLmRhdGEoKSwgbmFtZS5sZW5ndGgoKSk7CisgICAgU3RyaW5nQnVpbGRlciBidWls
ZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKCJ3ZWJnbF8iKTsKKyAgICBhcHBlbmRVbnNpZ25lZDY0
QXNIZXgobnVtYmVyLCBidWlsZGVyLCBMb3dlcmNhc2UpOworICAgIHJldHVybiBidWlsZGVyLnRv
U3RyaW5nKCk7Cit9CisKIFN0cmluZyBHcmFwaGljc0NvbnRleHQzRDo6bWFwcGVkU3ltYm9sTmFt
ZShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEFOR0xFU2hhZGVyU3ltYm9sVHlwZSBzeW1ib2xU
eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgR0MzRHNpemVpIGNvdW50OwotICAgIFBs
YXRmb3JtM0RPYmplY3Qgc2hhZGVyc1syXTsKKyAgICBQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcnNb
Ml0gPSB7IDAgfTsKICAgICBnZXRBdHRhY2hlZFNoYWRlcnMocHJvZ3JhbSwgMiwgJmNvdW50LCBz
aGFkZXJzKTsKIAogICAgIGZvciAoR0MzRHNpemVpIGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewpA
QCAtODA1LDYgKzgxNywyMyBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6Om1hcHBlZFN5bWJv
bE5hCiAgICAgICAgIGlmIChzeW1ib2xFbnRyeSAhPSBzeW1ib2xNYXAuZW5kKCkpCiAgICAgICAg
ICAgICByZXR1cm4gc3ltYm9sRW50cnktPnZhbHVlLm1hcHBlZE5hbWU7CiAgICAgfQorCisgICAg
aWYgKHN5bWJvbFR5cGUgPT0gU0hBREVSX1NZTUJPTF9UWVBFX0FUVFJJQlVURSAmJiAhbmFtZS5p
c0VtcHR5KCkpIHsKKyAgICAgICAgLy8gQXR0cmlidXRlcyBhcmUgYSBzcGVjaWFsIGNhc2U6IHRo
ZXkgbWF5IGJlIHJlcXVlc3RlZCBiZWZvcmUgYW55IHNoYWRlcnMgaGF2ZSBiZWVuIGNvbXBpbGVk
LAorICAgICAgICAvLyBhbmQgYXJlbid0IGV2ZW4gcmVxdWlyZWQgdG8gYmUgdXNlZCBpbiBhbnkg
c2hhZGVyIHByb2dyYW0uCisgICAgICAgIGlmICghbmFtZUhhc2hNYXBGb3JTaGFkZXJzKQorICAg
ICAgICAgICAgbmFtZUhhc2hNYXBGb3JTaGFkZXJzID0gYWRvcHRQdHIobmV3IFNoYWRlck5hbWVI
YXNoKTsKKyAgICAgICAgY3VycmVudE5hbWVIYXNoTWFwRm9yU2hhZGVyID0gbmFtZUhhc2hNYXBG
b3JTaGFkZXJzLmdldCgpOworCisgICAgICAgIFN0cmluZyBnZW5lcmF0ZWROYW1lID0gZ2VuZXJh
dGVIYXNoZWROYW1lKG5hbWUpOworCisgICAgICAgIGN1cnJlbnROYW1lSGFzaE1hcEZvclNoYWRl
ciA9IG51bGxwdHI7CisKKyAgICAgICAgbV9wb3NzaWJseVVudXNlZEF0dHJpYnV0ZU1hcC5zZXQo
Z2VuZXJhdGVkTmFtZSwgbmFtZSk7CisKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRlZE5hbWU7Cisg
ICAgfQorCiAgICAgcmV0dXJuIG5hbWU7CiB9CiAgICAgCkBAIC04MjUsNiArODU0LDE2IEBAIFN0
cmluZyBHcmFwaGljc0NvbnRleHQzRDo6b3JpZ2luYWxTeW1ib2wKICAgICAgICAgICAgICAgICBy
ZXR1cm4gc3ltYm9sRW50cnkua2V5OwogICAgICAgICB9CiAgICAgfQorCisgICAgaWYgKHN5bWJv
bFR5cGUgPT0gU0hBREVSX1NZTUJPTF9UWVBFX0FUVFJJQlVURSAmJiAhbmFtZS5pc0VtcHR5KCkp
IHsKKyAgICAgICAgLy8gQXR0cmlidXRlcyBhcmUgYSBzcGVjaWFsIGNhc2U6IHRoZXkgbWF5IGJl
IHJlcXVlc3RlZCBiZWZvcmUgYW55IHNoYWRlcnMgaGF2ZSBiZWVuIGNvbXBpbGVkLAorICAgICAg
ICAvLyBhbmQgYXJlbid0IGV2ZW4gcmVxdWlyZWQgdG8gYmUgdXNlZCBpbiBhbnkgc2hhZGVyIHBy
b2dyYW0uCisKKyAgICAgICAgY29uc3QgYXV0byYgY2FjaGVkID0gbV9wb3NzaWJseVVudXNlZEF0
dHJpYnV0ZU1hcC5maW5kKG5hbWUpOworICAgICAgICBpZiAoY2FjaGVkICE9IG1fcG9zc2libHlV
bnVzZWRBdHRyaWJ1dGVNYXAuZW5kKCkpCisgICAgICAgICAgICByZXR1cm4gY2FjaGVkLT52YWx1
ZTsKKyAgICB9CisKICAgICByZXR1cm4gbmFtZTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>230600</attachid>
            <date>2014-05-01 11:57:33 -0700</date>
            <delta_ts>2014-05-01 12:01:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-132430-20140501115710.patch</filename>
            <type>text/plain</type>
            <size>16300</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNjgxMDgpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDE0LTA1LTAxICBCcmVudCBGdWxnaGFtICA8YmZ1
bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIEZpeCBoYW5kbGluZyBvZiBhdHRyaWJ1dGVzIHBy
aW9yIHRvIGNvbXBpbGluZyBzaGFkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzMjQzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFdlYkdMIHByb2dyYW1zIHRoYXQgY2FsbGVkIGJpbmRBdHRyaWJMb2Nh
dGlvbnMgcHJpb3IgdG8gY29tcGlsaW5nIHNoYWRlciBzb3VyY2VzCisgICAgICAgIHdvdWxkIHBl
cmZvcm0gdGhlIGJpbmQgdXNpbmcgdGhlIG5vbi1oYXNoZWQgc3ltYm9sIG5hbWUsIGJ1dCB3b3Vs
ZCBsYXRlciBjcmVhdGUKKyAgICAgICAgdGhlIGF0dHJpYnV0ZXMgYXMgaGFzaGVkIG5hbWVzLiBD
b25zZXF1ZW50bHksIHRoZSBwcm9ncmFtIHdvdWxkIHJlZmVyIHRvCisgICAgICAgIGF0dHJpYnV0
ZXMgdGhhdCB3ZXJlIG5ldmVyIGFjdHVhbGx5IHBhcnQgb2YgYW55IHNoYWRlciwgcmVzdWx0aW5n
IGluIHNvbWUgYW1hemluZworICAgICAgICBkaXNwbGF5IGFydGlmYWN0cy4KKworICAgICAgICBU
aGlzIHBhdGNoIGFkZHMgYSBkaWN0aW9uYXJ5IG9mIGhhc2hlZCBzeW1ib2wgbmFtZXMgc28gdGhh
dCB3ZSBjYW4gdGVsbCB0aGUgV2ViR0wKKyAgICAgICAgcHJvZ3JhbSB0aGUgcHJvcGVyIG5hbWUg
dGhhdCB3aWxsIGJlIHVzZWQgd2hlbiB0aGUgc2hhZGVyIGlzIGV2ZW50dWFsbHkgY29tcGlsZWQs
CisgICAgICAgIGFsbG93aW5nIHRoZSBXZWJHTCBwcm9ncmFtIHRvIGxpbmsgYWdhaW5zdCB0aGUg
cHJvcGVyIHN5bWJvbCBhZnRlciBjb21waWxpbmcgYW5kCisgICAgICAgIGxpbmtpbmcgY29tcGxl
dGVzLgorCisgICAgICAgICogd3RmL0hleE51bWJlci5oOgorICAgICAgICAoV1RGOjphcHBlbmRV
bnNpZ25lZDY0QXNIZXgpOiBBZGQgdWludDY0X3QtY29tcGF0aWJsZSBoZXgtPnN0cmluZyBjb252
ZXJ0ZXIuCisKIDIwMTQtMDUtMDEgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29t
PgogCiAgICAgICAgIFtFRkxdIFRoZXJlIGFyZSBtYW55IHdhcm5pbmdzIHdpdGggc29mdHdhcmUg
YmFja2VuZApJbmRleDogU291cmNlL1dURi93dGYvSGV4TnVtYmVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dURi93dGYvSGV4TnVtYmVyLmgJKHJldmlzaW9uIDE2ODEwOCkKKysrIFNvdXJjZS9X
VEYvd3RmL0hleE51bWJlci5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCw2ICs3OCwyMCBAQCBpbmxp
bmUgdm9pZCBhcHBlbmRVbnNpZ25lZEFzSGV4KHVuc2lnbmVkCiAgICAgcmVzdWx0LnJldmVyc2Uo
KTsKICAgICBkZXN0aW5hdGlvbi5hcHBlbmQocmVzdWx0LmRhdGEoKSwgcmVzdWx0LnNpemUoKSk7
CiB9CisgICAgCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgoraW5saW5lIHZvaWQgYXBwZW5kVW5zaWdu
ZWQ2NEFzSGV4KHVpbnQ2NF90IG51bWJlciwgVCYgZGVzdGluYXRpb24sIEhleENvbnZlcnNpb25N
b2RlIG1vZGUgPSBVcHBlcmNhc2UpCit7CisgICAgY29uc3QgTENoYXIqIGhleERpZ2l0cyA9IElu
dGVybmFsOjpoZXhEaWdpdHNGb3JNb2RlKG1vZGUpOworICAgIFZlY3RvcjxMQ2hhciwgOD4gcmVz
dWx0OworICAgIGRvIHsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChoZXhEaWdpdHNbbnVtYmVyICUg
MTZdKTsKKyAgICAgICAgbnVtYmVyID4+PSA0OworICAgIH0gd2hpbGUgKG51bWJlciA+IDApOwor
ICAgIAorICAgIHJlc3VsdC5yZXZlcnNlKCk7CisgICAgZGVzdGluYXRpb24uYXBwZW5kKHJlc3Vs
dC5kYXRhKCksIHJlc3VsdC5zaXplKCkpOworfQogCiAvLyBTYW1lIGFzIGFwcGVuZFVuc2lnbmVk
QXNIZXgsIGJ1dCB1c2luZyBleGFjdGx5ICdkZXNpcmVkRGlnaXRzJyBmb3IgdGhlIGNvbnZlcnNp
b24uCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY4MTA4
KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MjkgQEAKKzIwMTQtMDUtMDEgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisK
KyAgICAgICAgRml4IGhhbmRsaW5nIG9mIGF0dHJpYnV0ZXMgcHJpb3IgdG8gY29tcGlsaW5nIHNo
YWRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMy
NDMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2Vi
R0wgcHJvZ3JhbXMgdGhhdCBjYWxsZWQgYmluZEF0dHJpYkxvY2F0aW9ucyBwcmlvciB0byBjb21w
aWxpbmcgc2hhZGVyIHNvdXJjZXMKKyAgICAgICAgd291bGQgcGVyZm9ybSB0aGUgYmluZCB1c2lu
ZyB0aGUgbm9uLWhhc2hlZCBzeW1ib2wgbmFtZSwgYnV0IHdvdWxkIGxhdGVyIGNyZWF0ZQorICAg
ICAgICB0aGUgYXR0cmlidXRlcyBhcyBoYXNoZWQgbmFtZXMuIENvbnNlcXVlbnRseSwgdGhlIHBy
b2dyYW0gd291bGQgcmVmZXIgdG8KKyAgICAgICAgYXR0cmlidXRlcyB0aGF0IHdlcmUgbmV2ZXIg
YWN0dWFsbHkgcGFydCBvZiBhbnkgc2hhZGVyLCByZXN1bHRpbmcgaW4gc29tZSBhbWF6aW5nCisg
ICAgICAgIGRpc3BsYXkgYXJ0aWZhY3RzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBhIGRp
Y3Rpb25hcnkgb2YgaGFzaGVkIHN5bWJvbCBuYW1lcyBzbyB0aGF0IHdlIGNhbiB0ZWxsIHRoZSBX
ZWJHTAorICAgICAgICBwcm9ncmFtIHRoZSBwcm9wZXIgbmFtZSB0aGF0IHdpbGwgYmUgdXNlZCB3
aGVuIHRoZSBzaGFkZXIgaXMgZXZlbnR1YWxseSBjb21waWxlZCwKKyAgICAgICAgYWxsb3dpbmcg
dGhlIFdlYkdMIHByb2dyYW0gdG8gbGluayBhZ2FpbnN0IHRoZSBwcm9wZXIgc3ltYm9sIGFmdGVy
IGNvbXBpbGluZyBhbmQKKyAgICAgICAgbGlua2luZyBjb21wbGV0ZXMuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpnZW5lcmF0ZUhhc2hlZE5hbWUpOiBGdW5jdGlvbiB1c2VzIHRoZSBBTkdM
RSBoYXNoaW5nCisgICAgICAgIGZ1bmN0aW9uIHRvIGdlbmVyYXRlIGNvcnJlY3Qgc3ltYm9sLgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Om1hcHBlZFN5bWJvbE5hbWUpOiBJ
ZiB3ZSBoYXZlbid0IGNvbXBpbGVkIHNoYWRlcnMgeWV0LCBsb29rCisgICAgICAgIGluIG91ciBz
ZXQgb2YgcG90ZW50aWFsbHkgdW51c2VkIGF0dHJpYnV0ZXMuCisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6b3JpZ2luYWxTeW1ib2xOYW1lKTogRGl0dG8sIGZvciByZXZlcnNl
IGxvb2t1cC4KKwogMjAxNC0wNS0wMSAgSmF2aWVyIEZlcm5hbmRleiAgPGpmZXJuYW5kZXpAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbQ1NTIEdyaWQgTGF5b3V0XSBDbGFtcGluZyB0aGUgbnVtYmVy
IG9mIHJlcGV0aXRpb25zIGluIHJlcGVhdCgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgJKHJldmlzaW9uIDE2ODEw
OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNE
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOTEsNyArMTA5MSwxMCBAQCBwcml2YXRlOgogICAgIH07
CiAgICAgdHlwZWRlZiBIYXNoTWFwPFBsYXRmb3JtM0RPYmplY3QsIEFjdGl2ZVNoYWRlclN5bWJv
bENvdW50cz4gU2hhZGVyUHJvZ3JhbVN5bWJvbENvdW50TWFwOwogICAgIFNoYWRlclByb2dyYW1T
eW1ib2xDb3VudE1hcCBtX3NoYWRlclByb2dyYW1TeW1ib2xDb3VudE1hcDsKLSAgICAKKworICAg
IHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gSGFzaGVkU3ltYm9sTWFwOworICAgIEhh
c2hlZFN5bWJvbE1hcCBtX3Bvc3NpYmx5VW51c2VkQXR0cmlidXRlTWFwOworCiAgICAgU3RyaW5n
IG1hcHBlZFN5bWJvbE5hbWUoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBBTkdMRVNoYWRlclN5
bWJvbFR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgU3RyaW5nIG1hcHBlZFN5bWJvbE5h
bWUoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXJzWzJdLCBzaXplX3QgY291bnQsIGNvbnN0IFN0cmlu
ZyYgbmFtZSk7CiAgICAgU3RyaW5nIG9yaWdpbmFsU3ltYm9sTmFtZShQbGF0Zm9ybTNET2JqZWN0
IHByb2dyYW0sIEFOR0xFU2hhZGVyU3ltYm9sVHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHQzRE9wZW5HTENvbW1vbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcAkocmV2
aXNpb24gMTY4MTA4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQs
NiArNTQsNyBAQAogI2luY2x1ZGUgPHJ1bnRpbWUvRmxvYXQzMkFycmF5Lmg+CiAjaW5jbHVkZSA8
cnVudGltZS9JbnQzMkFycmF5Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9VaW50OEFycmF5Lmg+Cisj
aW5jbHVkZSA8d3RmL0hleE51bWJlci5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KQEAgLTc2LDcgKzc3LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0
aWMgU2hhZGVyTmFtZUhhc2gqIGN1cnJlbnROYW1lSGFzaE1hcEZvclNoYWRlcjsKK3N0YXRpYyBT
aGFkZXJOYW1lSGFzaCogY3VycmVudE5hbWVIYXNoTWFwRm9yU2hhZGVyID0gbnVsbHB0cjsKIAog
Ly8gSGFzaCBmdW5jdGlvbiB1c2VkIGJ5IHRoZSBBTkdMRSB0cmFuc2xhdG9yL2NvbXBpbGVyIHRv
IGRvCiAvLyBzeW1ib2wgbmFtZSBtYW5nbGluZy4gU2luY2UgdGhpcyBpcyBhIHN0YXRpYyBtZXRo
b2QsIGJlZm9yZQpAQCAtNzg5LDEwICs3OTAsMjEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
Z2V0QXR0YWNoZWRTaGFkZQogICAgIDo6Z2xHZXRBdHRhY2hlZFNoYWRlcnMocHJvZ3JhbSwgbWF4
Q291bnQsIGNvdW50LCBzaGFkZXJzKTsKIH0KIAorc3RhdGljIFN0cmluZyBnZW5lcmF0ZUhhc2hl
ZE5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuIG5hbWU7CisgICAgdWludDY0X3QgbnVtYmVyID0gbmFtZUhhc2hGb3JTaGFk
ZXIobmFtZS51dGY4KCkuZGF0YSgpLCBuYW1lLmxlbmd0aCgpKTsKKyAgICBTdHJpbmdCdWlsZGVy
IGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQoIndlYmdsXyIpOworICAgIGFwcGVuZFVuc2ln
bmVkNjRBc0hleChudW1iZXIsIGJ1aWxkZXIsIExvd2VyY2FzZSk7CisgICAgcmV0dXJuIGJ1aWxk
ZXIudG9TdHJpbmcoKTsKK30KKwogU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjptYXBwZWRTeW1i
b2xOYW1lKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgQU5HTEVTaGFkZXJTeW1ib2xUeXBlIHN5
bWJvbFR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBHQzNEc2l6ZWkgY291bnQ7Ci0g
ICAgUGxhdGZvcm0zRE9iamVjdCBzaGFkZXJzWzJdOworICAgIFBsYXRmb3JtM0RPYmplY3Qgc2hh
ZGVyc1syXSA9IHsgfTsKICAgICBnZXRBdHRhY2hlZFNoYWRlcnMocHJvZ3JhbSwgMiwgJmNvdW50
LCBzaGFkZXJzKTsKIAogICAgIGZvciAoR0MzRHNpemVpIGkgPSAwOyBpIDwgY291bnQ7ICsraSkg
ewpAQCAtODA1LDYgKzgxNywyMyBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6Om1hcHBlZFN5
bWJvbE5hCiAgICAgICAgIGlmIChzeW1ib2xFbnRyeSAhPSBzeW1ib2xNYXAuZW5kKCkpCiAgICAg
ICAgICAgICByZXR1cm4gc3ltYm9sRW50cnktPnZhbHVlLm1hcHBlZE5hbWU7CiAgICAgfQorCisg
ICAgaWYgKHN5bWJvbFR5cGUgPT0gU0hBREVSX1NZTUJPTF9UWVBFX0FUVFJJQlVURSAmJiAhbmFt
ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgLy8gQXR0cmlidXRlcyBhcmUgYSBzcGVjaWFsIGNhc2U6
IHRoZXkgbWF5IGJlIHJlcXVlc3RlZCBiZWZvcmUgYW55IHNoYWRlcnMgaGF2ZSBiZWVuIGNvbXBp
bGVkLAorICAgICAgICAvLyBhbmQgYXJlbid0IGV2ZW4gcmVxdWlyZWQgdG8gYmUgdXNlZCBpbiBh
bnkgc2hhZGVyIHByb2dyYW0uCisgICAgICAgIGlmICghbmFtZUhhc2hNYXBGb3JTaGFkZXJzKQor
ICAgICAgICAgICAgbmFtZUhhc2hNYXBGb3JTaGFkZXJzID0gYWRvcHRQdHIobmV3IFNoYWRlck5h
bWVIYXNoKTsKKyAgICAgICAgY3VycmVudE5hbWVIYXNoTWFwRm9yU2hhZGVyID0gbmFtZUhhc2hN
YXBGb3JTaGFkZXJzLmdldCgpOworCisgICAgICAgIFN0cmluZyBnZW5lcmF0ZWROYW1lID0gZ2Vu
ZXJhdGVIYXNoZWROYW1lKG5hbWUpOworCisgICAgICAgIGN1cnJlbnROYW1lSGFzaE1hcEZvclNo
YWRlciA9IG51bGxwdHI7CisKKyAgICAgICAgbV9wb3NzaWJseVVudXNlZEF0dHJpYnV0ZU1hcC5z
ZXQoZ2VuZXJhdGVkTmFtZSwgbmFtZSk7CisKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRlZE5hbWU7
CisgICAgfQorCiAgICAgcmV0dXJuIG5hbWU7CiB9CiAgICAgCkBAIC04MjUsNiArODU0LDE2IEBA
IFN0cmluZyBHcmFwaGljc0NvbnRleHQzRDo6b3JpZ2luYWxTeW1ib2wKICAgICAgICAgICAgICAg
ICByZXR1cm4gc3ltYm9sRW50cnkua2V5OwogICAgICAgICB9CiAgICAgfQorCisgICAgaWYgKHN5
bWJvbFR5cGUgPT0gU0hBREVSX1NZTUJPTF9UWVBFX0FUVFJJQlVURSAmJiAhbmFtZS5pc0VtcHR5
KCkpIHsKKyAgICAgICAgLy8gQXR0cmlidXRlcyBhcmUgYSBzcGVjaWFsIGNhc2U6IHRoZXkgbWF5
IGJlIHJlcXVlc3RlZCBiZWZvcmUgYW55IHNoYWRlcnMgaGF2ZSBiZWVuIGNvbXBpbGVkLAorICAg
ICAgICAvLyBhbmQgYXJlbid0IGV2ZW4gcmVxdWlyZWQgdG8gYmUgdXNlZCBpbiBhbnkgc2hhZGVy
IHByb2dyYW0uCisKKyAgICAgICAgY29uc3QgYXV0byYgY2FjaGVkID0gbV9wb3NzaWJseVVudXNl
ZEF0dHJpYnV0ZU1hcC5maW5kKG5hbWUpOworICAgICAgICBpZiAoY2FjaGVkICE9IG1fcG9zc2li
bHlVbnVzZWRBdHRyaWJ1dGVNYXAuZW5kKCkpCisgICAgICAgICAgICByZXR1cm4gY2FjaGVkLT52
YWx1ZTsKKyAgICB9CisKICAgICByZXR1cm4gbmFtZTsKIH0KIApJbmRleDogTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24g
MTY4MTExKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMTQtMDUtMDEgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+
CisKKyAgICAgICAgRml4IGhhbmRsaW5nIG9mIGF0dHJpYnV0ZXMgcHJpb3IgdG8gY29tcGlsaW5n
IHNoYWRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTMyNDMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBmYXN0L2NhbnZhcy93ZWJnbC9nbC1iaW5kLWF0dHJpYi1sb2NhdGlvbi1iZWZvcmUtY29tcGls
ZS10ZXN0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wv
Z2wtYmluZC1hdHRyaWItbG9jYXRpb24tYmVmb3JlLWNvbXBpbGUtdGVzdC5odG1sOiBBZGRlZC4K
KwogMjAxNC0wNS0wMSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFN1YnBpeGVsIHJlbmRlcmluZzogTWFrZSBzZWxlY3Rpb24gZ2FwcyBwYWludGluZyBzdWJwaXhl
bCBhd2FyZS4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2dsLWJpbmQtYXR0
cmliLWxvY2F0aW9uLWJlZm9yZS1jb21waWxlLXRlc3QtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2dsLWJpbmQtYXR0cmliLWxvY2F0aW9u
LWJlZm9yZS1jb21waWxlLXRlc3QtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2wtYmluZC1hdHRyaWItbG9jYXRpb24tYmVmb3JlLWNv
bXBpbGUtdGVzdC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyOCBAQAor
VGhpcyB0ZXN0IGVuc3VyZXMgV2ViR0wgaW1wbGVtZW50YXRpb25zIHByb3Blcmx5IGhhbmRsZSBi
aW5kQXR0cmliTG9jYXRpb24gYmVmb3JlIGNvbXBpbGluZyBzaGFkZXJzLgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworQ2FudmFzLmdldENvbnRleHQKK1BBU1MgW29iamVjdCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRdIGlzIG5vbi1udWxsLgorCitDaGVja2luZyBnbC5iaW5kQXR0cmli
TG9jYXRpb24uCitQQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiBi
aW5kQXR0cmliTG9jYXRpb24gc2hvdWxkIHJldHVybiBOT19FUlJPUiB3aGVuIGNhbGxlZCBiZWZv
cmUgY29tcGlsaW5nIHNoYWRlci4KK1BBU1MgcHJvZ3JhbSBsaW5rZWQgc3VjY2Vzc2Z1bGx5Citf
Z2xlc1ZlcnRleDo1Cit2Q29sb3IgICA6MgorUEFTUyBsb2NhdGlvbiBvZiBfZ2xlc1ZlcnRleCBz
aG91bGQgYmUgNQorUEFTUyBsb2NhdGlvbiBvZiB2Q29sb3Igc2hvdWxkIGJlIDIKK1BBU1MgZHJh
d2luZyBpcyBjb3JyZWN0CitQQVNTIHByb2dyYW0gbGlua2VkIHN1Y2Nlc3NmdWxseQorX2dsZXNW
ZXJ0ZXg6NQordkNvbG9yICAgOjEKK1BBU1MgbG9jYXRpb24gb2YgX2dsZXNWZXJ0ZXggc2hvdWxk
IGJlIDUKK1BBU1MgbG9jYXRpb24gb2YgdkNvbG9yIHNob3VsZCBiZSAxCitGQUlMIHBpeGVsIGF0
ICgyMCwxNSkgaXMgKDAsMjU1LDAsMjU1KSwgc2hvdWxkIGJlICgyNTUsMCwwLDI1NSkKK1BBU1Mg
Z2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IAorCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvd2ViZ2wvZ2wtYmluZC1hdHRyaWItbG9jYXRpb24tYmVmb3JlLWNvbXBpbGUt
dGVzdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2ds
LWJpbmQtYXR0cmliLWxvY2F0aW9uLWJlZm9yZS1jb21waWxlLXRlc3QuaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2dsLWJpbmQtYXR0cmliLWxvY2F0
aW9uLWJlZm9yZS1jb21waWxlLXRlc3QuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE5
NyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNp
dGlvbmFsLy9FTiIKKyAgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Cis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0
ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIEJpbmRBdHRyaWJMb2NhdGlv
biAoQmVmb3JlIENvbXBpbGUpIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy93ZWJnbC10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
Y2FudmFzIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCBibGFjazsiIGlkPSJjYW52YXMiIHdpZHRo
PSI1MCIgaGVpZ2h0PSI1MCI+PC9jYW52YXM+Cis8c2NyaXB0IGlkPSJ2c2hhZGVyIiB0eXBlPSJ0
ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlwdCI+CithdHRyaWJ1dGUgdmVjNCBfZ2xlc1ZlcnRl
eDsKK2F0dHJpYnV0ZSB2ZWM0IHZDb2xvcjsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKK3ZvaWQgbWFp
bigpCit7CisgIGdsX1Bvc2l0aW9uID0gX2dsZXNWZXJ0ZXg7CisgIGNvbG9yID0gdkNvbG9yOwor
fQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmc2hhZGVyIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1u
b3QtamF2YXNjcmlwdCI+CisjaWZkZWYgR0xfRVMKK3ByZWNpc2lvbiBoaWdocCBmbG9hdDsKKyNl
bmRpZgordmFyeWluZyB2ZWM0IGNvbG9yOwordm9pZCBtYWluKCkKK3sKKyAgZ2xfRnJhZ0NvbG9y
ID0gY29sb3I7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0
IGVuc3VyZXMgV2ViR0wgaW1wbGVtZW50YXRpb25zIHByb3Blcmx5IGhhbmRsZSBiaW5kQXR0cmli
TG9jYXRpb24gYmVmb3JlIGNvbXBpbGluZyBzaGFkZXJzLiIpOworCitpZiAod2luZG93LmludGVy
bmFscykKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldFdlYkdMRXJyb3JzVG9Db25z
b2xlRW5hYmxlZChmYWxzZSk7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJDYW52YXMuZ2V0Q29udGV4
dCIpOworCit2YXIgZ2wgPSBjcmVhdGUzRENvbnRleHQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImNhbnZhcyIpKTsKK3Nob3VsZEJlTm9uTnVsbChnbCk7CisKK2Z1bmN0aW9uIGZhaWwoeCx5LCBi
dWYsIHNob3VsZEJlKQoreworICB2YXIgaSA9ICh5KjUwK3gpICogNDsKKyAgdmFyIHJlYXNvbiA9
ICJwaXhlbCBhdCAoIit4KyIsIit5KyIpIGlzICgiK2J1ZltpXSsiLCIrYnVmW2krMV0rIiwiK2J1
ZltpKzJdKyIsIitidWZbaSszXSsiKSwgc2hvdWxkIGJlICIrc2hvdWxkQmU7CisgIHRlc3RGYWls
ZWQocmVhc29uKTsKK30KKworZnVuY3Rpb24gcGFzcygpCit7CisgIHRlc3RQYXNzZWQoImRyYXdp
bmcgaXMgY29ycmVjdCIpOworfQorCitmdW5jdGlvbiBsb2FkU2hhZGVyKHNoYWRlclR5cGUsIHNo
YWRlcklkKSB7CisgIC8vIEdldCB0aGUgc2hhZGVyIHNvdXJjZS4KKyAgdmFyIHNoYWRlclNvdXJj
ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNoYWRlcklkKS50ZXh0OworCisgIC8vIENyZWF0
ZSB0aGUgc2hhZGVyIG9iamVjdAorICB2YXIgc2hhZGVyID0gZ2wuY3JlYXRlU2hhZGVyKHNoYWRl
clR5cGUpOworICBpZiAoc2hhZGVyID09IG51bGwpIHsKKyAgICBkZWJ1ZygiKioqIEVycm9yOiB1
bmFibGUgdG8gY3JlYXRlIHNoYWRlciAnIitzaGFkZXJJZCsiJyIpOworICAgIHJldHVybiBudWxs
OworICB9CisKKyAgLy8gTG9hZCB0aGUgc2hhZGVyIHNvdXJjZQorICBnbC5zaGFkZXJTb3VyY2Uo
c2hhZGVyLCBzaGFkZXJTb3VyY2UpOworCisgIC8vIENvbXBpbGUgdGhlIHNoYWRlcgorICBnbC5j
b21waWxlU2hhZGVyKHNoYWRlcik7CisKKyAgLy8gQ2hlY2sgdGhlIGNvbXBpbGUgc3RhdHVzCisg
IHZhciBjb21waWxlZCA9IGdsLmdldFNoYWRlclBhcmFtZXRlcihzaGFkZXIsIGdsLkNPTVBJTEVf
U1RBVFVTKTsKKyAgaWYgKCFjb21waWxlZCkgeworICAgIC8vIFNvbWV0aGluZyB3ZW50IHdyb25n
IGR1cmluZyBjb21waWxhdGlvbjsgZ2V0IHRoZSBlcnJvcgorICAgIHZhciBlcnJvciA9IGdsLmdl
dFNoYWRlckluZm9Mb2coc2hhZGVyKTsKKyAgICBkZWJ1ZygiKioqIEVycm9yIGNvbXBpbGluZyBz
aGFkZXIgJyIrc2hhZGVyKyInOiIrZXJyb3IpOworICAgIGdsLmRlbGV0ZVNoYWRlcihzaGFkZXIp
OworICAgIHJldHVybiBudWxsOworICB9CisgIHJldHVybiBzaGFkZXI7Cit9CisKK2RlYnVnKCIi
KTsKK2RlYnVnKCJDaGVja2luZyBnbC5iaW5kQXR0cmliTG9jYXRpb24uIik7CisKK3ZhciBwcm9n
cmFtID0gZ2wuY3JlYXRlUHJvZ3JhbSgpOworCisvLyBCaW5kIF9nbGVzVmVydGV4IEJFRk9SRSB3
ZSBjb21pbGUgdGhlIHByb2dyYW0uCitnbC5iaW5kQXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgNSwg
Il9nbGVzVmVydGV4Iik7CitnbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLAorICAgICJi
aW5kQXR0cmliTG9jYXRpb24gc2hvdWxkIHJldHVybiBOT19FUlJPUiB3aGVuIGNhbGxlZCBiZWZv
cmUgY29tcGlsaW5nIHNoYWRlci4iKTsKKwordmFyIHZzID0gbG9hZFNoYWRlcihnbC5WRVJURVhf
U0hBREVSLCAidnNoYWRlciIpOwordmFyIGZzID0gbG9hZFNoYWRlcihnbC5GUkFHTUVOVF9TSEFE
RVIsICJmc2hhZGVyIik7CitnbC5hdHRhY2hTaGFkZXIocHJvZ3JhbSwgdnMpOworZ2wuYXR0YWNo
U2hhZGVyKHByb2dyYW0sIGZzKTsKKwordmFyIHBvc2l0aW9ucyA9IGdsLmNyZWF0ZUJ1ZmZlcigp
OworZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIHBvc2l0aW9ucyk7CitnbC5idWZmZXJE
YXRhKGdsLkFSUkFZX0JVRkZFUiwgbmV3IEZsb2F0MzJBcnJheShbIDAsMC41LDAsIC0wLjUsLTAu
NSwwLCAwLjUsLTAuNSwwIF0pLCBnbC5TVEFUSUNfRFJBVyk7CisKK3ZhciBjb2xvcnMgPSBnbC5j
cmVhdGVCdWZmZXIoKTsKK2dsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBjb2xvcnMpOwor
Z2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIG5ldyBGbG9hdDMyQXJyYXkoWworICAgIDAs
MSwwLDEsCisgICAgMCwxLDAsMSwKKyAgICAwLDEsMCwxXSksIGdsLlNUQVRJQ19EUkFXKTsKKwor
ZnVuY3Rpb24gc2V0QmluZExvY2F0aW9ucyhjb2xvckxvY2F0aW9uLCBwb3NpdGlvbkxvY2F0aW9u
KSB7CisgIGdsLmJpbmRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCBjb2xvckxvY2F0aW9uLCAidkNv
bG9yIik7CisgIGdsLmxpbmtQcm9ncmFtKHByb2dyYW0pOworICBnbC51c2VQcm9ncmFtKHByb2dy
YW0pOworICB2YXIgbGlua2VkID0gKGdsLmdldFByb2dyYW1QYXJhbWV0ZXIocHJvZ3JhbSwgZ2wu
TElOS19TVEFUVVMpICE9IDApOworICBhc3NlcnRNc2cobGlua2VkLCAicHJvZ3JhbSBsaW5rZWQg
c3VjY2Vzc2Z1bGx5Iik7CisKKyAgZGVidWcoIl9nbGVzVmVydGV4OiIgKyBnbC5nZXRBdHRyaWJM
b2NhdGlvbihwcm9ncmFtLCAiX2dsZXNWZXJ0ZXgiKSkKKyAgZGVidWcoInZDb2xvciAgIDoiICsg
Z2wuZ2V0QXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgInZDb2xvciIpKQorICBhc3NlcnRNc2coZ2wu
Z2V0QXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgIl9nbGVzVmVydGV4IikgPT0gcG9zaXRpb25Mb2Nh
dGlvbiwKKyAgICAgICAgICAgICJsb2NhdGlvbiBvZiBfZ2xlc1ZlcnRleCBzaG91bGQgYmUgIiAr
IHBvc2l0aW9uTG9jYXRpb24pOworICBhc3NlcnRNc2coZ2wuZ2V0QXR0cmliTG9jYXRpb24ocHJv
Z3JhbSwgInZDb2xvciIpID09IGNvbG9yTG9jYXRpb24sCisgICAgICAgICAgICAibG9jYXRpb24g
b2YgdkNvbG9yIHNob3VsZCBiZSAiICsgY29sb3JMb2NhdGlvbik7CisKKyAgdmFyIHBsb2MgPSBn
bC5nZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCAiX2dsZXNWZXJ0ZXgiKTsKKyAgdmFyIGNsb2Mg
PSBnbC5nZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCAidkNvbG9yIik7CisgIGdsLmJpbmRCdWZm
ZXIoZ2wuQVJSQVlfQlVGRkVSLCBwb3NpdGlvbnMpOworICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJB
cnJheShwb3NpdGlvbkxvY2F0aW9uKTsKKyAgZ2wudmVydGV4QXR0cmliUG9pbnRlcihwb3NpdGlv
bkxvY2F0aW9uLCAzLCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOworICBnbC5iaW5kQnVmZmVyKGds
LkFSUkFZX0JVRkZFUiwgY29sb3JzKTsKKyAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoY29s
b3JMb2NhdGlvbik7CisgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIoY29sb3JMb2NhdGlvbiwgNCwg
Z2wuRkxPQVQsIGZhbHNlLCAwLCAwKTsKK30KKworZnVuY3Rpb24gY2hlY2tEcmF3KGNvbG9yTG9j
YXRpb24sIHBvc2l0aW9uTG9jYXRpb24sIHIsIGcsIGIsIGEpIHsKKyAgZ2wuY2xlYXJDb2xvcigw
LCAwLCAwLCAxKTsKKyAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCB8IGdsLkRFUFRIX0JV
RkZFUl9CSVQpOworICBnbC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xFUywgMCwgMyk7CisKKyAgdmFy
IHdpZHRoID0gNTA7CisgIHZhciBoZWlnaHQgPSA1MDsKKyAgdmFyIGJ1ZiA9IG5ldyBVaW50OEFy
cmF5KHdpZHRoICogaGVpZ2h0ICogNCk7CisgIGdsLnJlYWRQaXhlbHMoMCwgMCwgd2lkdGgsIGhl
aWdodCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgYnVmKTsKKworICBmdW5jdGlvbiBjaGVj
a1BpeGVsKHgsIHksIHIsIGcsIGIsIGEpIHsKKyAgICB2YXIgb2Zmc2V0ID0gKHkgKiB3aWR0aCAr
IHgpICogNDsKKyAgICBpZiAoYnVmW29mZnNldCArIDBdICE9IHIgfHwKKyAgICAgICAgYnVmW29m
ZnNldCArIDFdICE9IGcgfHwKKyAgICAgICAgYnVmW29mZnNldCArIDJdICE9IGIgfHwKKyAgICAg
ICAgYnVmW29mZnNldCArIDNdICE9IGEpIHsKKyAgICAgICAgZmFpbCh4LCB5LCBidWYsICIoIiAr
IHIgKyAiLCIgKyBnICsgIiwiICsgYiArICIsIiArIGEgKyAiKSIpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworICB9CisKKyAgLy8gVGVzdCBzZXZlcmFs
IGxvY2F0aW9ucworICAvLyBGaXJzdCBsaW5lIHNob3VsZCBiZSBhbGwgYmxhY2sKKyAgdmFyIHN1
Y2Nlc3MgPSB0cnVlOworICBmb3IgKHZhciBpID0gMDsgaSA8IDUwOyArK2kpCisgICAgc3VjY2Vz
cyA9IHN1Y2Nlc3MgJiYgY2hlY2tQaXhlbChpLCAwLCAwLCAwLCAwLCAyNTUpOworCisgIC8vIExp
bmUgMTUgc2hvdWxkIGJlIHJlZCBmb3IgYXQgbGVhc3QgMTAgcmdiYSBwaXhlbHMgc3RhcnRpbmcg
MjAgcGl4ZWxzIGluCisgIHZhciBvZmZzZXQgPSAoMTUgKiA1MCArIDIwKSAqIDQ7CisgIGZvciAo
dmFyIGkgPSAwOyBpIDwgMTA7ICsraSkKKyAgICBzdWNjZXNzID0gc3VjY2VzcyAmJiBjaGVja1Bp
eGVsKDIwICsgaSwgMTUsIHIsIGcsIGIsIGEpOworCisgIC8vIExhc3QgbGluZSBzaG91bGQgYmUg
YWxsIGJsYWNrCisgIGZvciAodmFyIGkgPSAwOyBpIDwgNTA7ICsraSkKKyAgICBzdWNjZXNzID0g
c3VjY2VzcyAmJiBjaGVja1BpeGVsKGksIDQ5LCAwLCAwLCAwLCAyNTUpOworCisgIGlmIChzdWNj
ZXNzKQorICAgIHBhc3MoKTsKKworICBnbC5kaXNhYmxlVmVydGV4QXR0cmliQXJyYXkocG9zaXRp
b25Mb2NhdGlvbik7CisgIGdsLmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShjb2xvckxvY2F0aW9u
KTsKK30KKworc2V0QmluZExvY2F0aW9ucygyLCA1KTsKK2NoZWNrRHJhdygyLCA1LCAwLCAyNTUs
IDAsIDI1NSk7CisKK3NldEJpbmRMb2NhdGlvbnMoMSwgNSk7CitnbC5kaXNhYmxlVmVydGV4QXR0
cmliQXJyYXkoMCk7CitnbC52ZXJ0ZXhBdHRyaWI0ZigwLCAxLCAwLCAwLCAxKTsKK2NoZWNrRHJh
dygxLCA1LCAyNTUsIDAsIDAsIDI1NSk7CisKK2dsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJS
T1IpOworCitkZWJ1ZygiIik7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="254978"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
      

    </bug>

</bugzilla>