UPDATED. Please download again.
From Brad Stefanov idea to have other figures in glynniaSim? variations.
Code:
/*
JWildfire - an image and animation processor written in Java
Copyright (C) 1995-2011 Andreas Maschke
This is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser
General Public License as published by the Free Software Foundation; either version 2.1 of the
License, or (at your option) any later version.
This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with this software;
if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.jwildfire.create.tina.variation;
import static org.jwildfire.base.mathlib.MathLib.M_PI;
import static org.jwildfire.base.mathlib.MathLib.cos;
import static org.jwildfire.base.mathlib.MathLib.fabs;
import static org.jwildfire.base.mathlib.MathLib.pow;
import static org.jwildfire.base.mathlib.MathLib.sin;
import static org.jwildfire.base.mathlib.MathLib.sqr;
import static org.jwildfire.base.mathlib.MathLib.sqrt;
import org.jwildfire.create.tina.base.Layer;
import org.jwildfire.create.tina.base.XForm;
import org.jwildfire.create.tina.base.XYZPoint;
import js.glsl.G;
import js.glsl.vec2;
public class GlynnLissaFunc extends VariationFunc {
private static final long serialVersionUID = 1L;
private static final String PARAM_RADIUS = "radius";
private static final String PARAM_RADIUS1 = "radius1";
private static final String PARAM_THICKNESS = "thickness";
private static final String PARAM_PHI1 = "phi1";
private static final String PARAM_A = "a";
private static final String PARAM_B = "b";
private static final String PARAM_WIDTH = "width";
private static final String PARAM_PHASE = "phase";
private static final String PARAM_SCALE = "scale";
private static final String PARAM_POW = "pow";
private static final String PARAM_CONTRAST = "contrast";
private static final String[] paramNames = { PARAM_RADIUS,PARAM_RADIUS1,PARAM_THICKNESS,PARAM_PHI1,PARAM_A, PARAM_B, PARAM_WIDTH,PARAM_PHASE,PARAM_SCALE,PARAM_POW,PARAM_CONTRAST };
private double radius = 1.0;
private double radius1 = 0.5;
private double thickness = 1.0;
private double phi1 = 0.0;
private double a = 3.0;
private double b = 2.0;
private double width = 0.0;
private double phase = 0.0;
private double scale = .71;
private double pow = 1.5;
private double contrast = 0.5;
private double _x1, _y1, _absPow;
void circle(FlameTransformationContext pContext, vec2 p) {
double r = this.radius1 * (this.thickness + (1.0 - this.thickness) * pContext.random());
double Phi = 2.0 * M_PI * pContext.random();
double sinPhi = sin(Phi);
double cosPhi = cos(Phi);
p.x = r * cosPhi + this._x1;
p.y = r * sinPhi + this._y1;
}
vec2 lissajous(double t, double a, double b, double d)
{
return new vec2(Math.sin(a*t+d), Math.sin(b*t));
}
public boolean isInside(double px,double py,double rx,double ry,double rw,double rh)
{
if (px >= rx && // right of the left edge AND
px <= rx + rw && // left of the right edge AND
py >= ry && // below the top AND
py <= ry + rh) { // above the bottom
return true;
}
return false;
}
@Override
public void transform(FlameTransformationContext pContext, XForm pXForm, XYZPoint pAffineTP, XYZPoint pVarTP, double pAmount) {
double period = Math.PI*2.0;
double d = phase;// phase
double t = pContext.random()*period;
vec2 p = lissajous(t, a, b, d);
double r = sqrt(pAffineTP.x * pAffineTP.x + pAffineTP.y * pAffineTP.y);
// boolean test=isInside(pAffineTP.x,pAffineTP.y,-1.,-1.,2.,2.);
double y = pContext.random() - 0.5;
double xi,yi;
if(r<Math.abs(radius))
{
if(width>=0)
{
p = lissajous(t, a, b, d);
pVarTP.x += pAmount * ((p.x*scale+width*y)*radius1+_x1);
pVarTP.y += pAmount * ((p.y*scale+width*y)*radius1+_y1);
}
else
{
circle(pContext,p);
pVarTP.x += pAmount * (p.x);
pVarTP.y += pAmount * (p.y);
}
}
else
{
double Alpha = Math.abs(this.radius) / r;
if (pContext.random() > this.contrast * pow(Alpha, this._absPow)) {
xi = pAffineTP.x;
yi = pAffineTP.y;
}
else
{
xi = Alpha * Alpha * pAffineTP.x;
yi = Alpha * Alpha * pAffineTP.y;
}
double Z = sqr(xi - this._x1) + sqr(yi - this._y1);
if (Z < this.radius1 * this.radius1) {
vec2 p1 = lissajous(t, a, b, d);
pVarTP.x += pAmount * ((p.x*scale+width*y)*radius1+_x1);
pVarTP.y += pAmount * ((p.y*scale+width*y)*radius1+_y1);
}
else {
pVarTP.x += pAmount * xi;
pVarTP.y += pAmount * yi;
}
}
if (pContext.isPreserveZCoordinate()) {
pVarTP.z += pAmount * pAffineTP.z;
}
}
public void init(FlameTransformationContext pContext, Layer pLayer, XForm pXForm, double pAmount) {
double a = M_PI * phi1 / 180.0;
double sinPhi1 = sin(a);
double cosPhi1 = cos(a);
this._x1 = this.radius * cosPhi1;
this._y1 = this.radius * sinPhi1;
this._absPow = fabs(this.pow);
}
@Override
public String[] getParameterNames() {
return paramNames;
}
@Override
public Object[] getParameterValues() {
return new Object[] { radius,radius1,thickness,phi1,a, b,width, phase,scale,pow,contrast };
}
@Override
public void setParameter(String pName, double pValue) {
if (PARAM_RADIUS.equalsIgnoreCase(pName))
radius = pValue;
else if (PARAM_RADIUS1.equalsIgnoreCase(pName))
radius1 = pValue;
else if (PARAM_PHI1.equalsIgnoreCase(pName))
phi1 = pValue;
else if (PARAM_THICKNESS.equalsIgnoreCase(pName))
thickness = pValue;
else if (PARAM_A.equalsIgnoreCase(pName))
a = pValue;
else if (PARAM_B.equalsIgnoreCase(pName))
b = pValue;
else if (PARAM_WIDTH.equalsIgnoreCase(pName))
width = pValue;
else if (PARAM_PHASE.equalsIgnoreCase(pName))
phase = pValue;
else if (PARAM_SCALE.equalsIgnoreCase(pName))
scale = pValue;
else if (PARAM_POW.equalsIgnoreCase(pName))
pow = pValue;
else if (PARAM_CONTRAST.equalsIgnoreCase(pName))
contrast = limitVal(pValue, 0.0, 1.0);
else
throw new IllegalArgumentException(pName);
}
@Override
public String getName() {
return "glynnlissa";
}
}
Testflame
Code:
<flame smooth_gradient="0" version="JWildfire V3.50 (28.07.2018)" size="1024 768" center="-1.1963622 -0.281497" scale="582.6560913496575" rotate="0.0" filter="0.75" filter_type="GLOBAL_SHARPENING" filter_kernel="MITCHELL_SMOOTH" filter_indicator="0" filter_sharpness="4.0" filter_low_density="0.025" oversample="1" post_noise_filter="0" post_noise_filter_threshold="0.35" quality="100.0" background_type="GRADIENT_2X2_C" background_ul="0.0 0.0 0.0" background_ur="0.0 0.0 0.0" background_ll="0.0 0.0 0.0" background_lr="0.0 0.0 0.0" background_cc="0.0 0.0 0.0" bg_transparency="0" brightness="4.0" saturation="1.0" gamma="4.0" gamma_threshold="0.01" vibrancy="1.0" contrast="1.0" white_level="220.0" temporal_samples="1.0" cam_zoom="1.0" cam_pitch="0.0" cam_yaw="0.0" cam_persp="0.0" cam_xfocus="0.0" cam_yfocus="0.0" cam_zfocus="0.0" cam_pos_x="0.0" cam_pos_y="0.0" cam_pos_z="0.0" cam_zpos="0.0" cam_dof="0.0" cam_dof_area="0.5" cam_dof_exponent="2.0" low_density_brightness="0.24" balancing_red="1.0" balancing_green="1.0" balancing_blue="1.0" cam_dof_shape="BUBBLE" cam_dof_scale="1.0" cam_dof_rotate="0.0" cam_dof_fade="1.0" resolution_profile="1024x768" antialias_amount="0.05" antialias_radius="0.05" post_symmetry_type="NONE" post_symmetry_order="3" post_symmetry_centre_x="0.0" post_symmetry_centre_y="0.0" post_symmetry_distance="1.25" post_symmetry_rotation="6.0" frame="1" frame_count="300" fps="30" post_blur_radius="0" post_blur_fade="0.95" post_blur_falloff="2.0" zbuffer_scale="1.0" mixer_mode="OFF">
<xform weight="0.5" color="0.0" symmetry="0.0" mirror_pre_post_translations="0" material="0.0" material_speed="0.0" mod_gamma="0.0" mod_gamma_speed="0.0" mod_contrast="0.0" mod_contrast_speed="0.0" mod_saturation="0.0" mod_saturation_speed="0.0" mod_hue="0.0" mod_hue_speed="0.0" custom_wf_full="1.0" custom_wf_full_fx_priority="0" custom_wf_full_radius="1.24" custom_wf_full_radius1="-1.508" custom_wf_full_thickness="1.036" custom_wf_full_phi1="0.0" custom_wf_full_a="30.0" custom_wf_full_b="2.0" custom_wf_full_width="0.03" custom_wf_full_phase="-2.1" custom_wf_full_scale="1.37" custom_wf_full_pow="1.5" custom_wf_full_contrast="0.5" custom_wf_full_code_full_variation="2F2A0A20204A57696C6466697265202D20616E20696D61676520616E6420616E696D6174696F6E2070726F636573736F72207772697474656E20696E204A617661200A2020436F707972696768742028432920313939352D3230313120416E6472656173204D617363686B650A0A202054686973206973206672656520736F6674776172653B20796F752063616E2072656469737472696275746520697420616E642F6F72206D6F6469667920697420756E64657220746865207465726D73206F662074686520474E55204C6573736572200A202047656E6572616C205075626C6963204C6963656E7365206173207075626C697368656420627920746865204672656520536F66747761726520466F756E646174696F6E3B206569746865722076657273696F6E20322E31206F6620746865200A20204C6963656E73652C206F722028617420796F7572206F7074696F6E2920616E79206C617465722076657273696F6E2E0A200A20205468697320736F66747761726520697320646973747269627574656420696E2074686520686F706520746861742069742077696C6C2062652075736566756C2C2062757420574954484F555420414E592057415252414E54593B20776974686F7574200A20206576656E2074686520696D706C6965642077617272616E7479206F66204D45524348414E544142494C495459206F72204649544E45535320464F52204120504152544943554C415220505552504F53452E205365652074686520474E55200A20204C65737365722047656E6572616C205075626C6963204C6963656E736520666F72206D6F72652064657461696C732E0A0A2020596F752073686F756C642068617665207265636569766564206120636F7079206F662074686520474E55204C65737365722047656E6572616C205075626C6963204C6963656E736520616C6F6E672077697468207468697320736F6674776172653B200A20206966206E6F742C20777269746520746F20746865204672656520536F66747761726520466F756E646174696F6E2C20496E632E2C203531204672616E6B6C696E2053742C20466966746820466C6F6F722C20426F73746F6E2C204D410A202030323131302D31333031205553412C206F7220736565207468652046534620736974653A20687474703A2F2F7777772E6673662E6F72672E0A2A2F0A7061636B616765206F72672E6A77696C64666972652E6372656174652E74696E612E766172696174696F6E3B0A0A696D706F727420737461746963206F72672E6A77696C64666972652E626173652E6D6174686C69622E4D6174684C69622E4D5F50493B0A696D706F727420737461746963206F72672E6A77696C64666972652E626173652E6D6174686C69622E4D6174684C69622E636F733B0A696D706F727420737461746963206F72672E6A77696C64666972652E626173652E6D6174686C69622E4D6174684C69622E666162733B0A696D706F727420737461746963206F72672E6A77696C64666972652E626173652E6D6174686C69622E4D6174684C69622E706F773B0A696D706F727420737461746963206F72672E6A77696C64666972652E626173652E6D6174686C69622E4D6174684C69622E73696E3B0A696D706F727420737461746963206F72672E6A77696C64666972652E626173652E6D6174686C69622E4D6174684C69622E7371723B0A696D706F727420737461746963206F72672E6A77696C64666972652E626173652E6D6174686C69622E4D6174684C69622E737172743B0A0A696D706F7274206F72672E6A77696C64666972652E6372656174652E74696E612E626173652E4C617965723B0A696D706F7274206F72672E6A77696C64666972652E6372656174652E74696E612E626173652E58466F726D3B0A696D706F7274206F72672E6A77696C64666972652E6372656174652E74696E612E626173652E58595A506F696E743B0A0A0A696D706F7274206A732E676C736C2E473B0A696D706F7274206A732E676C736C2E766563323B0A0A7075626C696320636C61737320476C796E6E4C6973736146756E6320657874656E647320566172696174696F6E46756E63207B0A202070726976617465207374617469632066696E616C206C6F6E672073657269616C56657273696F6E554944203D20314C3B0A0A0A0A202070726976617465207374617469632066696E616C20537472696E6720504152414D5F524144495553203D2022726164697573223B0A202070726976617465207374617469632066696E616C20537472696E6720504152414D5F52414449555331203D202272616469757331223B0A202070726976617465207374617469632066696E616C20537472696E6720504152414D5F544849434B4E455353203D2022746869636B6E657373223B0A202070726976617465207374617469632066696E616C20537472696E6720504152414D5F50484931203D202270686931223B0A202070726976617465207374617469632066696E616C20537472696E6720504152414D5F41203D202261223B0A202070726976617465207374617469632066696E616C20537472696E6720504152414D5F42203D202262223B0A202070726976617465207374617469632066696E616C20537472696E6720504152414D5F5749445448203D20227769647468223B0A202070726976617465207374617469632066696E616C20537472696E6720504152414D5F5048415345203D20227068617365223B0A202070726976617465207374617469632066696E616C20537472696E6720504152414D5F5343414C45203D20227363616C65223B0A202070726976617465207374617469632066696E616C20537472696E6720504152414D5F504F57203D2022706F77223B0A202070726976617465207374617469632066696E616C20537472696E6720504152414D5F434F4E5452415354203D2022636F6E7472617374223B0A0A0A202070726976617465207374617469632066696E616C20537472696E675B5D20706172616D4E616D6573203D207B2020504152414D5F5241444955532C504152414D5F524144495553312C504152414D5F544849434B4E4553532C504152414D5F504849312C504152414D5F412C20504152414D5F422C20504152414D5F57494454482C504152414D5F50484153452C504152414D5F5343414C452C504152414D5F504F572C504152414D5F434F4E5452415354207D3B0A0A0A20207072697661746520646F75626C6520726164697573203D20312E303B0A20207072697661746520646F75626C652072616469757331203D20302E353B0A20207072697661746520646F75626C6520746869636B6E657373203D20312E303B0A20207072697661746520646F75626C652070686931203D20302E303B0A20200A20207072697661746520646F75626C652061203D20332E303B0A20207072697661746520646F75626C652062203D20322E303B0A20207072697661746520646F75626C65207769647468203D20302E303B0A20207072697661746520646F75626C65207068617365203D20302E303B0A20207072697661746520646F75626C65207363616C65203D202E37313B0A20207072697661746520646F75626C6520706F77203D20312E353B0A20207072697661746520646F75626C6520636F6E7472617374203D20302E353B0A0A20207072697661746520646F75626C65205F78312C205F79312C205F616273506F773B0A20200A20200A202020766F696420636972636C6528466C616D655472616E73666F726D6174696F6E436F6E746578742070436F6E746578742C2076656332207029207B0A0920202020646F75626C652072203D20746869732E72616469757331202A2028746869732E746869636B6E657373202B2028312E30202D20746869732E746869636B6E65737329202A2070436F6E746578742E72616E646F6D2829293B0A0920202020646F75626C6520506869203D20322E30202A204D5F5049202A2070436F6E746578742E72616E646F6D28293B0A0920202020646F75626C652073696E506869203D2073696E28506869293B0A0920202020646F75626C6520636F73506869203D20636F7328506869293B0A0920202020702E78203D2072202A20636F73506869202B20746869732E5F78313B0A0920202020702E79203D2072202A2073696E506869202B20746869732E5F79313B0A0920207D0A20200A0976656332206C697373616A6F757328646F75626C6520742C20646F75626C6520612C20646F75626C6520622C20646F75626C652064290A097B0A090972657475726E206E65772076656332284D6174682E73696E28612A742B64292C204D6174682E73696E28622A7429293B0A097D0A090A097075626C696320626F6F6C65616E206973496E7369646528646F75626C652070782C646F75626C652070792C646F75626C652072782C646F75626C652072792C646F75626C652072772C646F75626C65207268290A097B0A09696620287078203E3D2072782026262020202020202020202F2F207269676874206F6620746865206C656674206564676520414E440A0909202020207078203C3D207278202B207277202626202020202F2F206C656674206F6620746865207269676874206564676520414E440A0909202020207079203E3D2072792026262020202020202020202F2F2062656C6F772074686520746F7020414E440A0909202020207079203C3D207279202B20726829207B202020202F2F2061626F76652074686520626F74746F6D0A0909202020202020202072657475726E20747275653B0A09097D0A090972657475726E2066616C73653B0A097D0A092020404F766572726964650A0920207075626C696320766F6964207472616E73666F726D28466C616D655472616E73666F726D6174696F6E436F6E746578742070436F6E746578742C2058466F726D207058466F726D2C2058595A506F696E742070416666696E6554502C2058595A506F696E74207056617254502C20646F75626C652070416D6F756E7429207B0A0A09092020646F75626C6520706572696F64203D204D6174682E50492A322E303B0A0A09092020646F75626C652064203D2070686173653B2F2F2070686173650A0A09092020646F75626C652074203D2070436F6E746578742E72616E646F6D28292A706572696F643B0A09092020766563322070203D206C697373616A6F757328742C20612C20622C2064293B0A0A09092020646F75626C652072203D20737172742870416666696E6554502E78202A2070416666696E6554502E78202B2070416666696E6554502E79202A2070416666696E6554502E79293B0A0A0A2F2F09092020626F6F6C65616E20746573743D6973496E736964652870416666696E6554502E782C70416666696E6554502E792C2D312E2C2D312E2C322E2C322E293B0A09092020646F75626C652079203D2070436F6E746578742E72616E646F6D2829202D20302E353B0A09092020646F75626C652078692C79693B0A09092020696628723C4D6174682E6162732872616469757329290A090920207B09090920200A090909202069662877696474683E3D30290A09090920207B0A09092020202020202070203D206C697373616A6F757328742C20612C20622C2064293B0A0909092020207056617254502E78202B3D2070416D6F756E74202A202828702E782A7363616C652B77696474682A79292A726164697573312B5F7831293B0A0909092020207056617254502E79202B3D2070416D6F756E74202A202828702E792A7363616C652B77696474682A79292A726164697573312B5F7931293B0A09090920207D0A0909092020656C73650A09090920207B0A090909092020636972636C652870436F6E746578742C70293B0A0909090920207056617254502E78202B3D2070416D6F756E74202A2028702E78293B0A0909090920207056617254502E79202B3D2070416D6F756E74202A2028702E79293B0A09090920207D0A090920207D0A09092020656C7365200A090920207B0A0A0909092020646F75626C6520416C706861203D204D6174682E61627328746869732E72616469757329202F20723B0A09090920206966202870436F6E746578742E72616E646F6D2829203E20746869732E636F6E7472617374202A20706F7728416C7068612C20746869732E5F616273506F772929207B0A0909090920207869203D2070416666696E6554502E783B0A0909090920207969203D2070416666696E6554502E793B0A09090920207D0A0909092020656C73650A09090920207B0A0909090920207869203D20416C706861202A20416C706861202A2070416666696E6554502E783B0A0909090920207969203D20416C706861202A20416C706861202A2070416666696E6554502E793B0A09090920207D0A0909092020646F75626C65205A203D20737172287869202D20746869732E5F783129202B20737172287969202D20746869732E5F7931293B0A0909092020696620285A203C20746869732E72616469757331202A20746869732E7261646975733129207B200A09090909202076656332207031203D206C697373616A6F757328742C20612C20622C2064293B0A0909090920207056617254502E78202B3D2070416D6F756E74202A202828702E782A7363616C652B77696474682A79292A726164697573312B5F7831293B0A0909090920207056617254502E79202B3D2070416D6F756E74202A202828702E792A7363616C652B77696474682A79292A726164697573312B5F7931293B0A09090920207D0A0909092020656C7365207B0A0909090920207056617254502E78202B3D2070416D6F756E74202A2078693B0A0909090920207056617254502E79202B3D2070416D6F756E74202A2079693B0A09090920207D0A0A090920207D0A0A0909202069662020202870436F6E746578742E697350726573657276655A436F6F7264696E617465282929207B0A09090920207056617254502E7A202B3D2070416D6F756E74202A2070416666696E6554502E7A3B0A090920207D0A0A0920207D0A0920200A0920207075626C696320766F696420696E697428466C616D655472616E73666F726D6174696F6E436F6E746578742070436F6E746578742C204C6179657220704C617965722C2058466F726D207058466F726D2C20646F75626C652070416D6F756E7429207B0A090920202020646F75626C652061203D204D5F5049202A2070686931202F203138302E303B0A090920202020646F75626C652073696E50686931203D2073696E2861293B0A090920202020646F75626C6520636F7350686931203D20636F732861293B0A090920202020746869732E5F7831203D20746869732E726164697573202A20636F73506869313B0A090920202020746869732E5F7931203D20746869732E726164697573202A2073696E506869313B0A090920202020746869732E5F616273506F77203D206661627328746869732E706F77293B0A090920207D0A0A0A2020404F766572726964650A20207075626C696320537472696E675B5D20676574506172616D657465724E616D65732829207B0A2020202072657475726E20706172616D4E616D65733B0A20207D0A0A2020404F766572726964650A20207075626C6963204F626A6563745B5D20676574506172616D6574657256616C7565732829207B0A2020202072657475726E206E6577204F626A6563745B5D207B20207261646975732C726164697573312C746869636B6E6573732C706869312C612C20622C77696474682C2070686173652C7363616C652C706F772C636F6E7472617374207D3B0A20207D0A0A2020404F766572726964650A20207075626C696320766F696420736574506172616D6574657228537472696E6720704E616D652C20646F75626C65207056616C756529207B0A09202069662028504152414D5F5241444955532E657175616C7349676E6F72654361736528704E616D6529290A09202020202020726164697573203D207056616C75653B0A092020656C73652069662028504152414D5F524144495553312E657175616C7349676E6F72654361736528704E616D6529290A0920202020202072616469757331203D207056616C75653B0A092020656C73652069662028504152414D5F504849312E657175616C7349676E6F72654361736528704E616D6529290A0920202020202070686931203D207056616C75653B0A092020656C73652069662028504152414D5F544849434B4E4553532E657175616C7349676E6F72654361736528704E616D6529290A09202020202020746869636B6E657373203D207056616C75653B0A2020656C73652069662028504152414D5F412E657175616C7349676E6F72654361736528704E616D6529290A20202020202061203D207056616C75653B0A20202020656C73652069662028504152414D5F422E657175616C7349676E6F72654361736528704E616D6529290A20202020202062203D207056616C75653B0A20202020656C73652069662028504152414D5F57494454482E657175616C7349676E6F72654361736528704E616D6529290A20202020202020207769647468203D207056616C75653B0A20202020656C73652069662028504152414D5F50484153452E657175616C7349676E6F72654361736528704E616D6529290A2020202020207068617365203D207056616C75653B0A20202020656C73652069662028504152414D5F5343414C452E657175616C7349676E6F72654361736528704E616D6529290A20202020202020207363616C65203D207056616C75653B0A20202020656C73652069662028504152414D5F504F572E657175616C7349676E6F72654361736528704E616D6529290A2020202020202020706F77203D207056616C75653B0A202020202020656C73652069662028504152414D5F434F4E54524153542E657175616C7349676E6F72654361736528704E616D6529290A2020202020202020636F6E7472617374203D206C696D697456616C287056616C75652C20302E302C20312E30293B0A20202020656C73650A2020202020207468726F77206E657720496C6C6567616C417267756D656E74457863657074696F6E28704E616D65293B0A20207D0A0A2020404F766572726964650A20207075626C696320537472696E67206765744E616D652829207B0A2020202072657475726E2022676C796E6E6C69737361223B0A20207D0A0A7D0A0A" dc_perlin="0.0" dc_perlin_fx_priority="0" dc_perlin_shape="0" dc_perlin_map="2" dc_perlin_select_centre="0.5" dc_perlin_select_range="0.1" dc_perlin_centre="0.5" dc_perlin_range="1.0" dc_perlin_edge="0.0" dc_perlin_scale="0.03" dc_perlin_octaves="5" dc_perlin_amps="1.8" dc_perlin_freqs="1.5" dc_perlin_z="0.0" dc_perlin_select_bailout="10" coefs="-0.3311325 0.7101159 -0.7101159 -0.3311325 -1.881866 0.4270574" chaos="1.0"/>
<finalxform weight="0.0" color="0.0" symmetry="1.0" mirror_pre_post_translations="0" material="0.0" material_speed="0.0" mod_gamma="0.0" mod_gamma_speed="0.0" mod_contrast="0.0" mod_contrast_speed="0.0" mod_saturation="0.0" mod_saturation_speed="0.0" mod_hue="0.0" mod_hue_speed="0.0" falloff2="1.0" falloff2_fx_priority="0" falloff2_scatter="1.816" falloff2_mindist="0.28" falloff2_mul_x="1.0" falloff2_mul_y="1.0" falloff2_mul_z="0.0" falloff2_mul_c="0.0" falloff2_x0="-1.19" falloff2_y0="-0.28" falloff2_z0="0.0" falloff2_invert="0" falloff2_type="0" coefs="1.0 0.0 0.0 1.0 0.0 0.0" chaos="1.0"/>
<palette count="256" format="RGB">
CAA302CFA612D3A922D8AD32DDB042E2B352E6B661EBB971F0BC81F5C091F9C3A1FEC6B1
FEC89FFECA8DFECC7BFECE6AFDD058FDD246FDD434FDD622FDCE23FDC525FDBD26FDB527
FDAD29FDA42AFD9C2CFD942DFD8C2EFD8330FD7B31F48431EB8C31E19531D89E32CFA632
C6AF32BDB832B3C032AAC932A1D23298DA328FE33385EC337CF43373FD3382F53292ED30
A1E62FB0DE2EC0D62CCFCE2BDEC72AEEBF28FDB727EDAD35DEA244CE9852BF8D60AF836E
9F797D906E8B8064997159A7614FB65145C4423AD23230E02325EF131BFD2325F1322FE6
423ADA5144CE614EC27158B78062AB906D9F9F7793AF8188BF8B7CCE9570DEA064EDAA59
FDB44DF4B747EABA41E1BD3AD7BF34CEC22EC5C528BBC821B2CB1BA8CE159FD00F95D308
8CD60285C1027DAC0176970166A60257B40347C30437D10427E00518EE0608FD0718ED06
28DD0638CE0548BE0457AE04679E03778F02877F021E15002D270C3B39174A4B23585D2E
676F3A75814584925192A45CA1B668AFC873BEDA7FCCEC8ADBFE96DEF894E1F292E5EB91
E8E58FEBDF8DEED98BF1D389F4CD87F8C686FBC084FEBA82FEA672FE9163FE7D53FE6844
FD5434FD3F24FD2B15FD1605EC1413DC1320CB112EBB0F3BAA0E499A0C56890A64780971
68077F57058C47049A3602A7430FA64F1BA45C28A36834A27541A0814D9F8E5A9E9A679D
A7739BB3809AC08C99CC9997D9A596E5B295F2BE93FECB92FEBB87FEAB7BFE9B70FE8B64
FE7B59FE6B4DFD5B42FD4B36FD3B2BFD2B1FFD1B14FD0B08F81808F22507ED3207E73F07
E24C06DC5906D76605D17305CC8005C68D04C19A04BBA704B6B403B0C103ABCE02A5DB02
98C90B8CB7137FA51C73922466802D5A6E354D5C3E404A4634384F2725571B13600E0168
280C5B41164F5B2142752C358E3628A8411CC14B0FDB5602DF5D10E2641EE66C2CE9733A
ED7A49F08157F48865F79073FB9781FE9E8FFD9282FB8675FA7B69F86F5CF7634FF55742
F44B35F23F28F1341CEF280FEE1C02EB2702E83302E53E02E24902DF5402DC6002D96B02
D67602D38102D08D02CD9802 </palette>
</flame>
