ホ="",シ=!ホ+ホ,イ=!シ+ホ,オ=ホ+{},ハ=シ[0],ヌ=シ[1],チ=オ[5],テ=(シ.イ+オ)[1],ヒ=シ[2],ト=オ[1],ネ=イ[3],ツ=シ[3],セ=シ[カ=チ+ト+テ+ネ+ハ+ヌ+ヒ+チ+ハ+ト+ヌ][カ],サ=" ",ケ="\\",キ="'",ウ='"',セ(セ((ア=ヌ+ツ+ハ+ヒ+ヌ+テ+サ)+ウ+セ(ア+セ(ア+ウ+ツ+ネ+チ+(タ=イ[1])+(ナ=ケ+160)+ツ+"("+キ+"挮獣慬攨㈬㈩ⱹ㵰㵛栽㠰〬椽そⱳ整䥮瑥牶慬⠧景爨砽䥟却祬攽椫⬦☢牧扡⠰ⰰⰰⰮ〲⤢归散琨〬〬栬栩㭸㭰學崽社䤫㜪椪砥桼籹⭩┲⥹㴰籰嬭嵟却祬攽椥㈿ㄼ㱸⼲☨㐰㤵幛栬ㄶ〬㈸㠬㔴㐬㤲そ孾縨礯㈭㔩崩㼢⌰䘰∺∣〰〢㨢⍆䙆≟呥硴⡢湮敲䡔䵌灬楴⠢㸢⥛㍝學⭉⩹ⵉ嵼簢∬ㄲ⩸⬹ⰱ㈪礫㤩㭣牡睉浡来⡡ⰰⰰⰲ⩨ⰲ⩨Ⱝ⸱ⰰⱨ⬮㔬栩✮牥灬慣攨⽟⽧ⰧⱣ楬氧⤬䤽㈳⤠"+キ+(ソ=")."+ヌ+ツ+ナ+(ケ+1+5+4)+タ+チ+ツ+"(/")+("%."+(ス="/"+ケ+147+",'")+"'")+(ソ+"(..)"+ス+ケ+ケ+ケ+ケ+ケ+170+"$1')")+ウ)())()+ウ)())()//雨>
// create basic strings
ホ="",シ=!ホ+ホ,イ=!シ+ホ,オ=ホ+{}
// get various characters
ハ=シ[0],ヌ=シ[1],チ=オ[5],テ=(シ.イ+オ)[1],
ヒ=シ[2],ト=オ[1],ネ=イ[3],ツ=シ[3]
// get Function to eval scripts
セ=シ[カ=チ+ト+テ+ネ+ハ+ヌ+ヒ+チ+ハ+ト+ヌ][カ],
// add special characters
サ=" ",ケ="\\",キ="'",ウ='"',
// eval and return string four times
// to get rid of escape sequences
セ(
セ(
// "return"
(ア=ヌ+ツ+ハ+ヒ+ヌ+テ+サ)+
ウ+
セ(
ア+セ(
// escape the encoded script
ア+ウ+ツ+ネ+チ+(タ=イ[1])+(ナ=ケ+160)+ツ+
"("+キ+
// encoded script
// every Kanji contains two Latin characters
"挮獣慬攨㈬㈩ⱹ㵰㵛栽㠰 ......"+
キ+(
ソ=")."+
// reference to ".replace" method
ヌ+ツ+ナ+(ケ+1+5+4)+タ+チ+ツ+
"(/"
)+
// remove % signs …
("%."+(ス="/"+ケ+147+",'")+"'")+
// … and place \x before two chars
(ソ+"(..)"+ス+ケ+ケ+ケ+ケ+ケ+170+"$1')")+ウ
)()
)()+ウ
)()
)()//雨>
// annotaaded source of encoded data
// 挮獣慬攨㈬㈩ⱹ㵰㵛栽㠰 ......
// scale up canvas
c.scale(2, 2),
// initialize basic vars
y = p = [h = 800, i = 0],
setInterval(function() {
for (
// get row with 23 character positions
x = I,
// fill with black on first run
// then fade content on following cycles
c.fillStyle = i++ && "rgba(0,0,0,.02)",
c.fillRect(0, 0, h, h);
x;
// assign new pseudo random position
// if char is out of visible area
p[x] = y > I + 7 * i * x % h || y + i % 2
)
// get next y position and make sure it is set
y = 0 | p[--x],
// set color based on cycle and x/y position
c.fillStyle = i % 2 ? 1 << x / 2 & (
// encoded bitmap data for JS logo
4095 ^ [h,160,288,544,920][~~(y/2-5)]
) ? "#0F0": "#000": "#FFF",
// draw text
c.fillText(
// get character inside of <script> tag
b.innerHTML.split(">")[3][x+I*y-I] || "",
12 * x + 9,
12 * y + 9
);
// special zoom and blur effect
c.drawImage(a, 0, 0, 2 * h, 2 * h, -.1, 0, h +.5, h)
}, I=23)