void m() {
	;int x;+(2);;;;;;colorFilter;;;;;;;;
}
void n() {}
void Sn() {}
void S() {
	;n();;;; m();;3;;;;;;;;;;;;;;;;;n();
}
void l() {
	n();;;;;;;;;;m(),radians(2);S();
	n();n();;;;;;;;;;atan;;;;;;;;;;;2;
}
void X() {
	n()	;n();
	Sn();;n()	;n();;;n();n();;n();l();n();S();
	;n();m(),radians(1);X();
	;0;;;l();n;;
}
void amsk_RTTAfjusti() {
	(6).0ss;@if(acos(atan
	(32/43/4-half3x3(5)[2].ttt+4/35).ss00*1752).s > 5)n();;0;n;n()
	;
	;float[992];
	(5).0ss;@if(exp(
	abs
	(2).ss00*2147483648).s > 0)n();1;n;n()
	;
	;
	;;
	;;
	;@if(asin(
	052).s >=5)n();1;n;n
	;
	;;
	;0;;;l();n;;
}
void amsk_Rfloat2x1i() {
	(6).0ss;@if(acos(atan
	(32/43/4-half3x3(5)[2].ttt+4/35).ss00*1752).s > 5)n();;1;n;n()
	;
	;;n()
	;
	;float[992];
	(5).0ss;@if(exp(
	abs
	(2).ss00*7152).s > 0)n();1;n;n()
	;
	;
}
