Quine: Difference between revisions

16,896 bytes added ,  2 months ago
m
m (→‎{{header|Haskell}}: bleh, another typo)
(35 intermediate revisions by 24 users not shown)
Line 44:
 
=={{header|8080 Assembly}}==
<langsyntaxhighlight lang="8080asm"> org 100h
lxi b,P
call A
Line 141:
db 00Dh,00Ah,009h,06Ah,06Dh,070h,009h,072h,00Dh,00Ah,043h,03Ah,009h,064h,062h,009h
db 031h,033h,02Ch,031h,030h,02Ch,039h,02Ch,027h,064h,062h,027h,02Ch,039h,02Ch,027h
db 024h,027h,00Dh,00Ah,050h,03Ah,000h</langsyntaxhighlight>
 
=={{header|ABAP}}==
I copied one of my examples from http://www.yaabb.de/viewtopic.php?t=44
<langsyntaxhighlight ABAPlang="abap">REPORT R NO STANDARD PAGE HEADING LINE-SIZE 67.
DATA:A(440),B,C,N(3) TYPE N,I TYPE I,S.
A+000 = 'REPORT R NO STANDARD PAGE HEADING LINE-SIZE 6\7.1DATA:A'.
Line 179:
ENDIF.
I = I + 1.
ENDDO.</langsyntaxhighlight>
Here is another one, requiring SY-SAPRL >= '620':
<langsyntaxhighlight ABAPlang="abap">REPORT R NO STANDARD PAGE HEADING.DATA:A TYPE TABLE OF STRING,B(8).APPEND:
`REPORT.FORM F TABLES T.NEW-PAGE LINE-SIZE 78.WRITE:'REPORT R NO',` TO A,
`'STANDARD PAGE HEADING.DATA:A TYPE TABLE OF STRING,B(8).APPEND:'.LOOP` TO A,
Line 187:
`NO-GAP,T NO-GAP,'`` TO A,'.ENDLOOP.WRITE:AT 78'.','GENERATE',` TO A,
`'SUBROUTINE POOL A NAME B.PERFORM F IN PROGRAM (B) TABLES A.'.ENDFORM.` TO A.
GENERATE SUBROUTINE POOL A NAME B.PERFORM F IN PROGRAM (B) TABLES A.</langsyntaxhighlight>
Please note that the program still works if you fix the spelling error (s/OCCURENCES/OCCURRENCES/), thus increasing the size of the source code by 1 character.
 
One more program, created in a 7.0 unicode system, but it should work in any SAP system with SY-SAPRL >= '700', even if you'll have a hard time verifying the correctness just by studying the source code:
<langsyntaxhighlight ABAPlang="abap">REPORT A NO STANDARD
PAGE HEADING
LINE-SIZE
Line 221:
TIMES.WRITE:/'A',
X+C(33),'.'.C = C +
33.ENDDO.B FROM 14.</langsyntaxhighlight>
 
And a final one (cheating, even though not using READ REPORT), it should work in any SAP system with SY-SAPRL >= '46B':
<langsyntaxhighlight ABAPlang="abap">.REPORT Q NO STANDARD PAGE HEADING LINE-SIZE 72
.DATA QQ(69) OCCURS 0
.DATA Q LIKE QQ WITH HEADER LINE
Line 248:
.ENDLOOP
.WRITE / '.'
.</langsyntaxhighlight>
 
=={{header|ACL2}}==
<langsyntaxhighlight Lisplang="lisp">(defun print-quine (quine)
(cw quine quine))
(print-quine
"(defun print-quine (quine)
(cw quine quine))
(print-quine ~x0)~%")</langsyntaxhighlight>
 
A shorter one:
 
<langsyntaxhighlight Lisplang="lisp">(let((q"(let((q~x0))(cw q q))"))(cw q q))</langsyntaxhighlight>
 
=={{header|Acornsoft Lisp}}==
 
<syntaxhighlight lang="lisp">((lambda (s) (list s (list (quote quote) s)))
(quote (lambda (s) (list s (list (quote quote) s)))))
</syntaxhighlight>
 
=={{header|Ada}}==
The program text must be in one line.
<div style="width:100%;overflow:scroll">
<langsyntaxhighlight Adalang="ada">with Ada.Text_IO;procedure Self is Q:Character:='"';A:String:="with Ada.Text_IO;procedure Self is Q:Character:='&#39;;A:String:=;begin Ada.Text_IO.Put_Line(A(1..49)&Q&A(50..61)&Q&A&Q&A(62..A'Last));end Self;";begin Ada.Text_IO.Put_Line(A(1..49)&Q&A(50..61)&Q&A&Q&A(62..A'Last));end Self;</langsyntaxhighlight>
</div>
 
=={{header|Aime}}==
<langsyntaxhighlight lang="aime">integer f;
text s, t;
 
Line 290 ⟶ 296:
o_etext(cut(s, f - 1, 2));
o_text(cut(s, f + 1, 8888 - f));
o_text(cut(s, f, 8888 - f));</langsyntaxhighlight>
 
=={{header|ALGOL 68}}==
The following program assumes that the target machine is ASCII, hence the use of character 34 as a double quote.
<langsyntaxhighlight lang="algol68">STRINGa="STRINGa=,q=REPR34;print(a[:8]+q+a+q+a[9:])",q=REPR34;print(a[:8]+q+a+q+a[9:])</langsyntaxhighlight>
The following is a shorter and character set independent - hence portable - implementation.
<langsyntaxhighlight lang="algol68">[]CHARa="[]CHARa="";print(2*a[:9]+2*a[9:])";print(2*a[:9]+2*a[9:])</langsyntaxhighlight>
The original program - from which this is derived - was written by Richard Wendland, who is one of the team who implemented Algol 68 on Honeywell's Multics. [http://portal.acm.org/ft_gateway.cfm?id=1061754&type=pdf The original can be found in Algol Bulletin 46 - 2.1 - Page 5].
 
=={{header|APL}}==
<langsyntaxhighlight APLlang="apl">1⌽,⍨9⍴'''1⌽,⍨9⍴''' ⍝ Author: Nikolay Nikolov; Source: https://dfns.dyalog.com/n_quine.htm</langsyntaxhighlight>
 
=={{header|Applesoft BASIC}}==
<syntaxhighlight lang="applesoft Applesoft BASICbasic">10 LIST</langsyntaxhighlight>
 
=={{header|Arturo}}==
<langsyntaxhighlight lang="rebol">block: [print ["block:" as .code block "do block"]] do block</langsyntaxhighlight>
 
{{out}}
Line 315 ⟶ 321:
All from http://www.autohotkey.com/forum/viewtopic.php?t=14336:
The "cheating" way:
<langsyntaxhighlight AutoHotkeylang="autohotkey">FileRead, quine, %A_ScriptFullPath%
MsgBox % quine</langsyntaxhighlight>
Another:
<langsyntaxhighlight AutoHotkeylang="autohotkey">D(n, s)
{
global
Line 349 ⟶ 355:
)
StringSplit q, script, %nl%
D(q0, "q")</langsyntaxhighlight>
Another:
<div style="width:100%;overflow:scroll">
<langsyntaxhighlight AutoHotkeylang="autohotkey">quote := Chr(34)
sep := Chr(36)
nl := Chr(13) . Chr(10)
Line 359 ⟶ 365:
StringReplace script, script, %sep%, %nl%, All
StringReplace script, script, #, %quote%%s%%quote%
FileAppend %script%, %A_ScriptDir%\Q.txt</langsyntaxhighlight></div>
Another "cheating" method:
<langsyntaxhighlight AutoHotkeylang="autohotkey">FileCopy, %A_ScriptFullPath%, %A_ScriptDir%\Copy-Of--%A_ScriptName%</langsyntaxhighlight>
 
=={{header|AWK}}==
===version 1===
<langsyntaxhighlight AWKlang="awk">BEGIN{c="BEGIN{c=%c%s%c;printf(c,34,c,34);}";printf(c,34,c,34);}</langsyntaxhighlight>
===version 2===
<langsyntaxhighlight AWKlang="awk">BEGIN{c="BEGIN{c=%c%s%c;printf c,34,c,34}";printf c,34,c,34}</langsyntaxhighlight>
 
=={{header|Babel}}==
Line 373 ⟶ 379:
Demonstrating from the commandline:
 
<langsyntaxhighlight lang="babel">% bin/babel quine.sp
{ "{ '{ ' << dup [val 0x22 0xffffff00 ] dup <- << << -> << ' ' << << ' }' << } !" { '{ ' << dup [val 0x22 0xffffff00 ] dup <- << << -> << ' ' << << '}' << } ! }%
%
% cat quine.sp
{ "{ '{ ' << dup [val 0x22 0xffffff00 ] dup <- << << -> << ' ' << << ' }' << } !" { '{ ' << dup [val 0x22 0xffffff00 ] dup <- << << -> << ' ' << << '}' << } ! }%
%</langsyntaxhighlight>
 
Demonstrating in interactive mode:
 
<langsyntaxhighlight lang="babel">% bin/babel
babel> { "{ '{ ' << dup [val 0x22 0xffffff00 ] dup <- << << -> << ' ' << << ' }' << } !" { '{ ' << dup [val 0x22 0xffffff00 ] dup <- << << -> << ' ' << << '}' << } ! }
babel> eval
{ "{ '{ ' << dup [val 0x22 0xffffff00 ] dup <- << << -> << ' ' << << ' }' << } !" { '{ ' << dup [val 0x22 0xffffff00 ] dup <- << << -> << ' ' << << '
}' << } !}babel>
babel></langsyntaxhighlight>
 
=={{header|bash}}==
<langsyntaxhighlight lang="sh">#!/bin/bash
mapfile < $0
printf "%s" "${MAPFILE[@]}"</langsyntaxhighlight>
<langsyntaxhighlight lang="sh">$ history | tail -n 1 | cut -c 8-</langsyntaxhighlight>
<langsyntaxhighlight lang="sh">$ echo "$BASH_COMMAND"</langsyntaxhighlight>
<langsyntaxhighlight lang="bash">_ ()
{
function __ ()
Line 404 ⟶ 410:
echo "$(declare -f _);_ ${@}"
};_ __
</syntaxhighlight>
</lang>
 
=={{header|BASIC}}==
{{header|ZX Spectrum Basic}}
For dialects of BASIC that include the <code>LIST</code> command, Quines are trivial.
<syntaxhighlight lang ="qbasic">10 LIST</langsyntaxhighlight>
 
For dialects that include the <code>DATA</code> keyword, it is almost as easy.
{{works with|QBasic}}
<langsyntaxhighlight lang="qbasic">READ d$
DO
READ x$
Line 437 ⟶ 443:
DATA "LOOP UNTIL LEN(x$) < 1"
DATA "END"
DATA ""</langsyntaxhighlight>
 
==={{header|BASIC256}}===
<syntaxhighlight lang="freebasic">s$ = "s$ = : print left(s$, 5) + chr(34) + s$ + chr(34) + mid(s$, 5, 66)" : print left(s$, 5) + chr(34) + s$ + chr(34) + mid(s$, 5, 66)</syntaxhighlight>
 
==={{header|QuickBASIC}}===
{{works with|QBasic}}
<langsyntaxhighlight lang="qbasic">
A$ = "a!'dbde[39] c34);[97] 'a + c34);[98] 'b';[99] 'c';[100][101] 'e';[91] : PRINT 'CASE c';[93] ']';[33] A$;dCASE ELSE: PRINT MID$(A$, I, 1);dEND SELECTdNEXT Id"
FOR I = 1 TO LEN(A$)
Line 458 ⟶ 466:
END SELECT
NEXT I
</syntaxhighlight>
</lang>
 
 
==={{header|BaCon}}===
<langsyntaxhighlight lang="qbasic">?SOURCE$;</langsyntaxhighlight> or more in line with the task description <langsyntaxhighlight lang="freebasic">a$=SOURCE$:?a$;</langsyntaxhighlight>
 
{{out}}
Line 477 ⟶ 485:
And one that is a little less cheaty and a little more meaty:
 
<langsyntaxhighlight lang="freebasic">s$="s$=%c%s%c:?34,s$,34 FORMAT s$":?34,s$,34 FORMAT s$</langsyntaxhighlight>
 
{{out}}
Line 487 ⟶ 495:
 
Works with 1k of RAM.
<langsyntaxhighlight lang="basic"> 10 LET L$="10"
20 LET I=VAL "16512"
30 PRINT TAB (VAL "4"-LEN L$);L$;
Line 498 ⟶ 506:
100 LET L$=STR$ (VAL L$+VAL "10")
110 LET I=I+VAL "4"
120 IF VAL L$<=VAL "120" THEN GOTO VAL "30"</langsyntaxhighlight>
{{out}}
Exactly the same.
Line 511 ⟶ 519:
 
=={{header|Batch File}}==
<syntaxhighlight lang ="dos">@type %0</langsyntaxhighlight>
For Windows 2000 and later only:
<langsyntaxhighlight lang="windowsnt">@type "%~f0"</langsyntaxhighlight>
 
=={{header|BBC BASIC}}==
{{works with|BBC BASIC for Windows}}
<langsyntaxhighlight lang="bbcbasic"> PRINT $(PAGE+22)$(PAGE+21):REM PRINT $(PAGE+22)$(PAGE+21):REM</langsyntaxhighlight>
{{works with|ARM BBC BASIC}}
<langsyntaxhighlight lang="bbcbasic"> PRINT $(PAGE+23)$(PAGE+22):REM PRINT $(PAGE+23)$(PAGE+22):REM</langsyntaxhighlight>
 
=={{header|BCPL}}==
<langsyntaxhighlight lang="bcpl">get "libhdr"
 
let start() be
Line 566 ⟶ 574:
n := n + 1
$)
$)</langsyntaxhighlight>
 
=={{header|beeswax}}==
Instruction pointers in beeswax programs can drop values in their own source code (growing the program space, if necessary), or pick up values from everywhere in the source code.
 
<langsyntaxhighlight lang="beeswax">_4~++~+.@1~0@D@1J</langsyntaxhighlight>
or
<langsyntaxhighlight lang="beeswax">*4~++~+.@1~0@D@1J</langsyntaxhighlight>
 
The instruction pointer starts at the left, travels to the right, and at instruction <code>D</code> the IP drops the current value at the top of its own stack—96, or ASCII value for <code>`</code> —left of the source code, which changes the program to:
 
<langsyntaxhighlight lang="beeswax">`_4~++~+.@1~0@D@1J</langsyntaxhighlight>
or
<langsyntaxhighlight lang="beeswax">`*4~++~+.@1~0@D@1J</langsyntaxhighlight>
respectively.
 
Line 586 ⟶ 594:
A version that does not modify itself:
 
<syntaxhighlight lang ="beeswax">`_4~++~+.}1fJ</langsyntaxhighlight>
 
=={{header|Befunge}}==
The code space is also the data space of a Befunge program. Programs can be read and modified on the fly. This quine works by reading and printing each character of the source. (This is a implicit loop, since the Befunge codespace wraps around.)
<syntaxhighlight lang Befunge="befunge">:0g,:66+`#@_1+</langsyntaxhighlight>
 
=={{header|Binary Lambda Calculus}}==
As explained at https://tromp.github.io/cl/Binary_lambda_calculus.html#A_quinea_quine
<langpre lang="blc">000101100100011010000000000001011011110010111100111111011111011010000101100100011010000000000001011011110010111100111111011111011010</langpre>A byte oriented version is given by the 18 byte program
 
<code>16 46 80 05 bc bc fd f6 80 16 46 80 05 bc bc fd f6 80</code>                                                       
 
=={{header|Bob}}==
<langsyntaxhighlight lang="bob">c=","; n="\n"; q="\""; s="\\";
v=\[
"c=\",\"; n=\"\\n\"; q=\"\\\"\"; s=\"\\\\\";",
Line 634 ⟶ 644:
prtQuote(v[v.size-1]); stdout.Display(n);
stdout.Display(v[v.size-1]); stdout.Display(n);
for(i=2; i<v.size-1; i++){ stdout.Display(v[i]); stdout.Display(n); }</langsyntaxhighlight>
Bob is a dynamic object-oriented language with syntax similar to C/C++, Java, and JavaScript. Bob was created by David Betz, a former technical editor for DDJ, and the author of XLisp and XScheme, among other languages.
 
=={{header|bootBASIC}}==
<syntaxhighlight lang bootBASIC="bootbasic">10 list</langsyntaxhighlight>
 
=={{header|BQN}}==
Line 648 ⟶ 658:
A BQN spin on the classic APL quine. <code>•Repr</code> helps with quoting the data string here.
 
<langsyntaxhighlight lang="bqn">•Out 1⌽∾˜18⥊•Repr"•Out 1⌽∾˜18⥊•Repr"</langsyntaxhighlight>
 
=={{header|Bracmat}}==
<syntaxhighlight lang ="bracmat">quine$</langsyntaxhighlight>
 
=={{header|Brainf***}}==
<langsyntaxhighlight lang="bf">->+>+++>>+>++>+>+++>>+>++>>>+>+>+>++>+>>>>+++>+>>++>+>+++>>++>++>>+>>+>++>++>+>>>>+++>+>>>>++>++>>>>+>>++>+>+++>>>++>>++++++>>+>>++>
+>>>>+++>>+++++>>+>+++>>>++>>++>>+>>++>+>+++>>>++>>+++++++++++++>>+>>++>+>+++>+>+++>>>++>>++++>>+>>++>+>>>>+++>>+++++>>>>++>>>>+>+>+
+>>+++>+>>>>+++>+>>>>+++>+>>>>+++>>++>++>+>+++>+>++>++>>>>>>++>+>+++>>>>>+++>>>++>+>+++>+>+>++>>>>>>++>>>+>>>++>+>>>>+++>+>>>+>>++>+
Line 660 ⟶ 670:
+>>++++++++>>+>>++>+>>>>+++>>++++>>+>+++>>>>>>++>+>+++>>+>++>>>>+>+>++>+>>>>+++>>+++>>>+[[->>+<<]<+]+++++[->+++++++++<]>.[+]>>
[<<+++++++[->+++++++++<]>-.------------------->-[-<.<+>>]<[+]<+>>>]<<<[-[-[-[>>+<++++++[->+++++<]]>++++++++++++++<]>+++<]++++++
[->+++++++<]>+<<<-[->>>++<<<]>[->>.<<]<<]</langsyntaxhighlight>
 
=={{header|Burlesque}}==
Line 666 ⟶ 676:
Using the official interpreter:
 
<langsyntaxhighlight lang="burlesque">blsq ) "I'm a quine."
"I'm a quine."</langsyntaxhighlight>
 
Every string, every number, every block is a quine.
 
=={{header|C}}==
<langsyntaxhighlight lang="c">#include <stdio.h>
 
static char sym[] = "\n\t\\\"";
Line 682 ⟶ 692:
return 0;
}
</syntaxhighlight>
</lang>
 
===Shorter version===
<langsyntaxhighlight lang="c">#include <stdio.h>
int main(){char*c="#include <stdio.h>%cint main(){char*c=%c%s%c;printf(c,10,34,c,34,10);return 0;}%c";printf(c,10,34,c,34,10);return 0;}
</syntaxhighlight>
</lang>
 
===Cheating using __FILE__===
On operating systems where a large range of characters can be used, it is possible to create a Quine by putting the following C code in a file with the same name.
<langsyntaxhighlight lang="c">#include <stdio.h>
main(void){printf(__FILE__);}
</syntaxhighlight>
</lang>
 
If white space is not permitted in file names, the first line and trailing newline can be omitted.
Line 700 ⟶ 710:
 
=={{header|C sharp}}==
<langsyntaxhighlight lang="csharp">class Program { static void Main() { var s = "class Program {{ static void Main() {{ var s = {0}{1}{0}; System.Console.WriteLine(s, (char)34, s); }} }}"; System.Console.WriteLine(s, (char)34, s); } }</langsyntaxhighlight>
 
=={{header|C++}}==
<langsyntaxhighlight lang="cpp">#include<cstdio>
int main(){char n[]=R"(#include<cstdio>
int main(){char n[]=R"(%s%c";printf(n,n,41);})";printf(n,n,41);}</langsyntaxhighlight>
 
=={{header|C1R}}==
The C1R compiler usually copies C solutions from tasks at Rosetta Code. The Quine task is an exception; it gets special treatment in the C1R compiler.
<syntaxhighlight lang ="c">Quine</langsyntaxhighlight>
 
=={{header|C3}}==
<syntaxhighlight lang="c">import std::io; fn void main() => io::printfn("%sString q = \x60%s\x60;", q, q);String q = `import std::io; fn void main() => io::printfn("%sString q = \x60%s\x60;", q, q);`;</syntaxhighlight>
 
=={{header|Ceylon}}==
<langsyntaxhighlight lang="ceylon">shared void run() {print(let (x = """shared void run() {print(let (x = $) x.replaceFirst("$", "\"\"\"" + x + "\"\"\""));}""") x.replaceFirst("$", "\"\"\"" + x + "\"\"\""));}</langsyntaxhighlight>
 
=={{header|Clojure}}==
<langsyntaxhighlight lang="clojure">((fn [x] (list x (list (quote quote) x))) (quote (fn [x] (list x (list (quote quote) x)))))</langsyntaxhighlight>
A shorter but less interesting version:
<langsyntaxhighlight lang="clojure">(#(print (str "(#" % " '" % ")")) '(print (str "(#" % " '" % ")")))</langsyntaxhighlight>
 
=={{header|CLU}}==
<syntaxhighlight lang="clu">q="start_up=proc()\n"||
" po:stream:=stream$primary_output()\n"||
" stream$puts(po,\"q=\\\"\")\n"||
" for c:char in string$chars(q) do\n"||
" if c='\\n' then stream$puts(po,\"\\\\n\\\"||\\n\\\"\")\n"||
" elseif c='\\\\' then stream$puts(po,\"\\\\\\\\\")\n"||
" elseif c='\\\"' then stream$puts(po,\"\\\\\\\"\")\n"||
" else stream$putc(po,c)\n"||
" end\n"||
" end\n"||
" stream$puts(po,\"\\\"\\n\"||q)\n"||
"end start_up\n"||
""
start_up=proc()
po:stream:=stream$primary_output()
stream$puts(po,"q=\"")
for c:char in string$chars(q) do
if c='\n' then stream$puts(po,"\\n\"||\n\"")
elseif c='\\' then stream$puts(po,"\\\\")
elseif c='\"' then stream$puts(po,"\\\"")
else stream$putc(po,c)
end
end
stream$puts(po,"\"\n"||q)
end start_up</syntaxhighlight>
 
=={{header|COBOL}}==
Line 726 ⟶ 766:
cobc -x -free -frelax quine.cob
 
<langsyntaxhighlight lang="cobol">linkage section. 78 c value "display 'linkage section. 78 c value ' x'22' c x'222e20' c.". display 'linkage section. 78 c value ' x'22' c x'222e20' c.</langsyntaxhighlight>
 
The following two quines were in a gray past (around 2004?) posted to the (currently inaccessible) language forum of the [http://mvshelp.net/vbforums/ mvsHelp Boards]
<langsyntaxhighlight lang="cobol"> IDENTIFICATION DIVISION.
PROGRAM-ID. GRICE.
ENVIRONMENT DIVISION.
Line 1,067 ⟶ 1,107:
ML-99.
CLOSE OUTPUT-FILE.
STOP RUN.</langsyntaxhighlight>
 
<langsyntaxhighlight lang="cobol"> ID DIVISION.
PROGRAM-ID. QUINE.
DATA DIVISION.
Line 1,116 ⟶ 1,156:
MOVE T1 (X) TO FF DISPLAY F MOVE T2 (X) TO FF DISPLAY F
END-PERFORM PERFORM VARYING X FROM 7 BY 1 UNTIL X > 16
DISPLAY TE (X) END-PERFORM STOP RUN.</langsyntaxhighlight>
An even smaller one could be found of the site of [http://www.tmdg.co.uk/programing/quine.cbl.php Tom Dawes-Gamble], but is reproduced below, as the original seems to have vanished:
<langsyntaxhighlight lang="cobol">
Author. Tom Dawes-Gamble. (c) 2000
01 src-lines pic x(768) value
Line 1,143 ⟶ 1,183:
Display ' ' sl(i).
Stop run.
</syntaxhighlight>
</lang>
 
=={{header|CoffeeScript}}==
<langsyntaxhighlight lang="coffeescript">s="s=#&# ;alert s.replace(/&/,s).replace /#(?=[^&;'(]|';;$)/g, '#';;" ;alert s.replace(/&/,s).replace /#(?=[^&;'(]|';;$)/g, '"';;</langsyntaxhighlight>
 
=={{header|Commodore BASIC}}==
A rather long and unwieldy (although nicely formatted) BASIC quine that doesn't use the <tt>10 LIST</tt> cheat. Works on the PET, VIC-20, C-64, C-128, C-16 and Plus/4, CBM-II, and CBM-5x0 series, and probably several non-Commodore BASICs as well, especially those based on Microsoft BASIC.
 
<langsyntaxhighlight lang="basic">10 DATA 49,54,48,32,78,61,51,51,48,13,49,55,48,32,68,73,77,32,65,40,78,41,13
20 DATA 49,56,48,32,70,79,82,32,73,61,48,32,84,79,32,78,13,49,57,48,32,58,32
30 DATA 82,69,65,68,32,65,40,73,41,13,50,48,48,32,78,69,88,84,32,73,13,50,49
Line 1,181 ⟶ 1,221:
290 FOR I=0 TO N
300 : PRINT CHR$(A(I));
310 NEXT I</langsyntaxhighlight>
 
=={{header|Common Lisp}}==
There are many simple ways to write a quine in Common Lisp, since source can be quoted and manipulated; this one defines an anonymous function, which is applied to its own source, which writes out that application of itself to its source. Note that Common Lisp by default does not distinguish cases.
<langsyntaxhighlight lang="lisp">((lambda (s) (print (list s (list 'quote s))))
'(lambda (s) (print (list s (list 'quote s)))))</langsyntaxhighlight>
 
This one does the same thing using quasiquote (template) syntax; in some implementations it may not print nicely (but will still work):
<langsyntaxhighlight lang="lisp">((lambda (s) (print `(,s ',s))) '(lambda (s) (print `(,s ',s))))</langsyntaxhighlight>
 
or another version:
<langsyntaxhighlight lang="lisp">((lambda (x) `(,x ',x)) '(lambda (x) `(,x ',x)))</langsyntaxhighlight>
 
This program's source contains an explicit reference to itself, which it prints in a manner preserving that reference:
<langsyntaxhighlight lang="lisp">#1=(write '#1# :circle t)</langsyntaxhighlight>
 
or another version (the former version cause looping in SBCL 1.0.56):
<langsyntaxhighlight lang="lisp">#1=(progn (setq *print-circle* t) (write '#1#))</langsyntaxhighlight>
 
This is an example using format and explicit referencing:
<langsyntaxhighlight lang="lisp">(format t #1='"(format t #1='~s #1#)" #1#)</langsyntaxhighlight>
 
An example using [[REPL]] variables:
<syntaxhighlight lang ="lisp">(write -)</langsyntaxhighlight>
 
=={{header|Cowgol}}==
<langsyntaxhighlight lang="cowgol">include "cowgol.coh";
var i: uint8 := 0;
var c: uint8[] := {
Line 1,245 ⟶ 1,285:
end loop;
print("\n};\n");
print(&c as [uint8]);</langsyntaxhighlight>
 
=={{header|Crystal}}==
<langsyntaxhighlight lang="crystal">".tap{|s|print s.inspect,s}".tap{|s|print s.inspect,s}</langsyntaxhighlight>
 
<tt>tap</tt> is an Object method which passes its invocant to the provided block.
Line 1,254 ⟶ 1,294:
=={{header|D}}==
This Quine outputs its own source both during compiling and running.
<langsyntaxhighlight lang="d">const auto s=`const auto q="const auto s=\x60"~s~"\x60;
mixin(s);";import std.stdio;void main(){writefln(q);pragma(msg,q);}`;
mixin(s);
</syntaxhighlight>
</lang>
''NB:'' last line should be CRLF to match <tt>pragma</tt>'s newline output behaviour.
 
Line 1,263 ⟶ 1,303:
Dao's BNF-like meta-programming macro supports quoting expressions as strings,
which allow writing a quine as the following:
<langsyntaxhighlight lang="dao">syntax{Q $EXP}as{io.writef('syntax{Q $EXP}as{%s}Q %s',\'$EXP\',\'$EXP\')}Q io.writef('syntax{Q $EXP}as{%s}Q %s',\'$EXP\',\'$EXP\')</langsyntaxhighlight>
 
=={{header|Dart}}==
<langsyntaxhighlight lang="dart">main()=>(s){print('$s(r\x22$s\x22);');}(r"main()=>(s){print('$s(r\x22$s\x22);');}");</langsyntaxhighlight>
 
=={{header|dc}}==
<syntaxhighlight lang ="dc">[91PP93P[dx]P]dx</langsyntaxhighlight>
 
=={{header|Déjà Vu}}==
<langsyntaxhighlight lang="dejavu">"!print !. dup"
!print !. dup</langsyntaxhighlight>
 
=={{header|Draco}}==
<syntaxhighlight lang="draco">*char q=
"proc main() void:\r\n"
" [128]char l;\r\n"
" char ch;\r\n"
" channel input text qc, lc;\r\n"
" open(qc, q);\r\n"
" writeln(\"*char q=\");\r\n"
" while readln(qc; &l[0]) do\r\n"
" write('\"');\r\n"
" open(lc, &l[0]);\r\n"
" while read(lc; ch) do\r\n"
" if ch='\"' or ch='\\\\' then write('\\\\') fi;\r\n"
" write(ch)\r\n"
" od;\r\n"
" close(lc);\r\n"
" writeln(\"\\\\r\\\\n\\\"\")\r\n"
" od;\r\n"
" close(qc);\r\n"
" writeln(';');\r\n"
" writeln(q)\r\n"
"corp\r\n"
;
proc main() void:
[128]char l;
char ch;
channel input text qc, lc;
open(qc, q);
writeln("*char q=");
while readln(qc; &l[0]) do
write('"');
open(lc, &l[0]);
while read(lc; ch) do
if ch='"' or ch='\\' then write('\\') fi;
write(ch)
od;
close(lc);
writeln("\\r\\n\"")
od;
close(qc);
writeln(';');
writeln(q)
corp</syntaxhighlight>
 
=={{header|E}}==
<langsyntaxhighlight lang="e">" =~ x; println(E.toQuote(x),x)" =~ x; println(E.toQuote(x),x)</langsyntaxhighlight>
 
=={{header|EasyLang}}==
<syntaxhighlight lang="easylang">
S$ = "print strchar 83 & strchar 36 & strchar 32 & strchar 61 & strchar 32 & strchar 34 & S$ & strchar 34 & strchar 10 & S$"
print strchar 83 & strchar 36 & strchar 32 & strchar 61 & strchar 32 & strchar 34 & S$ & strchar 34 & strchar 10 & S$
</syntaxhighlight>
 
=={{header|Ecstasy}}==
<syntaxhighlight lang="java">
module test {
@Inject Console console;
void run() {
console.print($./test.x);
}
}
</syntaxhighlight>
 
{{out}}
<pre>
module test {
@Inject Console console;
void run() {
console.print($./test.x);
}
}
</pre>
 
=={{header|Elixir}}==
<langsyntaxhighlight lang="elixir">a = <<"a = ~p~n:io.fwrite(a,[a])~n">>
:io.fwrite(a,[a])</langsyntaxhighlight>
 
=={{header|Erlang}}==
<div style="width:100%;overflow:scroll">
<langsyntaxhighlight Erlanglang="erlang">-module(quine).
-export([do/0]).
 
do() -> Txt=txt(), io:format("~s~ntxt() ->~n~w.~n",[Txt,Txt]), halt().
txt() ->
[45,109,111,100,117,108,101,40,113,117,105,110,101,41,46,10,45,101,120,112,111,114,116,40,91,100,111,47,48,93,41,46,10,10,100,111,40,41,32,45,62,32,84,120,116,61,116,120,116,40,41,44,32,105,111,58,102,111,114,109,97,116,40,34,126,115,126,110,116,120,116,40,41,32,45,62,126,110,126,119,46,126,110,34,44,91,84,120,116,44,84,120,116,93,41,44,32,104,97,108,116,40,41,46].</langsyntaxhighlight>
</div>
 
=={{header|ERRE}}==
<langsyntaxhighlight ERRElang="erre">PROGRAM QUINE
BEGIN
READ(D$,Y$)
Line 1,328 ⟶ 1,438:
DATA("PRINT(Y$)")
DATA("")
END PROGRAM</langsyntaxhighlight>
 
=={{header|Euphoria}}==
{{trans|C}}
<langsyntaxhighlight lang="euphoria">constant p="constant p=%s%s%s printf(1,p,{34,p,34})" printf(1,p,{34,p,34})</langsyntaxhighlight>
 
=={{header|F Sharp|F#}}==
Using .NET string formatting
<langsyntaxhighlight lang="fsharp">let s = "let s = {0}{1}{0} in System.Console.WriteLine(s, char 34, s);;" in System.Console.WriteLine(s, char 34, s);;</langsyntaxhighlight>
Using Printf library
<langsyntaxhighlight lang="fsharp">(fun s c -> printf s c s.Value c) "(fun s c -> printf s c s.Value c) %c%s%c <| char 34;;" <| char 34;;</langsyntaxhighlight>
 
=={{header|Factor}}==
With printf:
<langsyntaxhighlight lang="factor">"%s [ 34 1string dup surround ] keep printf" [ 34 1string dup surround ] keep printf</langsyntaxhighlight>
With prettyprinter:
<langsyntaxhighlight lang="factor">"[ pprint ] [ write ] bi"[ pprint ] [ write ] bi</langsyntaxhighlight>
 
 
=={{header|FALSE}}==
El código es de Mathew Hendry (m.hendry@dial.pipex.com)
<langsyntaxhighlight lang="false">["'[,34,$!34,'],!"]'[,34,$!34,'],!</langsyntaxhighlight>
 
 
=={{header|Fish}}==
All the zeros and +'s on the first line are just for aesthetic purposes. Only two zeros are needed, although the v at the end must line up.
<langsyntaxhighlight lang="fish"> 00000000000000000000++++++++++++++++++ v
2[$:{:@]$g:0=?v >o:4a*=?!v~1+:3=?;0ao>
>~" "^ >1+ ^</langsyntaxhighlight>
 
=={{header|Forth}}==
A large number of quine methods are listed [http://www.complang.tuwien.ac.at/forth/quines.html here], the simplest of which is:
<syntaxhighlight lang ="forth">SOURCE TYPE</langsyntaxhighlight>
 
=={{header|Fortran}}==
===F90+===
Fortran allows the start of a text literal to be marked by either an apostrophe or a double quote and the end by the corresponding character. Doubling is used to signify that the delimiter appears within a literal.
<langsyntaxhighlight lang="fortran">character*46::s='("character*46::s=",3a,";print s,39,s,39;end")';print s,39,s,39;end</langsyntaxhighlight>
{{out}}
<pre>
Line 1,372 ⟶ 1,482:
In ASCII, character 39 is an apostrophe. When run, the last "print" is preceded by three spaces after the semicolon that do not appear in the source. This wouldn't worry a Fortran compiler, because spaces are ignored outside text literals. More troublesome is that the first letter of the output appears in column one, and, being the letter "c", that marks a comment. This is why the text lighlighting has rendered the source text in italic. Later Fortran compilers may disregard this comment formalism in favour of the now standard in-line comment starter of an exclamation mark, and for them, the source would not be a comment.
===Older Fortran===
This reverts to fixed-format source form, relying on the format code / to signify a new line so that ASCII control characters need not be represented. Code T''n'' means "tab" to column ''n'' - no ASCII tab characters are involved. And difficulty with quoted strings is avoided by using the Hollerith form, ''n''H, signifying that ''n'' characters follow the H as a text literal. <langsyntaxhighlight Fortranlang="fortran"> WRITE(6,100)
STOP
100 FORMAT(6X,12HWRITE(6,100)/6X,4HSTOP/
Line 1,379 ⟶ 1,489:
.)/T48,2H)/T1,5X2(21H.)/T48,2H)/T1,5X2(21H)/
.T62,10H)/6X3HEND)T1,5X2(28H.T62,10H)/6X3HEND)T1,5X2(28H)/6X3HEND)
END</langsyntaxhighlight>
And indeed, exactly that opaque gibberish is written, with leading spaces to column seven and full stops in column six to mark a continuation. This was checked by UltraCompare, not just by eye!
 
Line 1,393 ⟶ 1,503:
 
=={{header|Free Pascal}}==
<langsyntaxhighlight lang="freepascal">const s=';begin writeln(#99#111#110#115#116#32#115#61#39,s,#39,s);readln;end.';begin writeln(#99#111#110#115#116#32#115#61#39,s,#39,s);readln;end.</langsyntaxhighlight>
 
=={{header|FreeBASIC}}==
===Código 1:===
<langsyntaxhighlight lang="freebasic">#Define P(X) Print X: Print "P(" & #X & ")"
P("#Define P(X) Print X: Print ""P("" & #X & "")""")</langsyntaxhighlight>
 
===Código 2:===
<langsyntaxhighlight lang="freebasic">Dim As String s = "Dim As String s = : Print Left(s, 18) + Chr(34) + s + Chr(34) + Mid(s, 18)" : Print Left(s, 18) + Chr(34) + s + Chr(34) + Mid(s, 18)</langsyntaxhighlight>
 
=={{header|Frink}}==
This is not a particularly clever nor concise quine, but it is indeed a quine.
<langsyntaxhighlight lang="frink">d="633d636861725b33345d3b653d643b7072696e745b22643d2463246424635c6e222b28653d7e25732f285b612d7a302d395d7b327d292f636861725b7061727365496e745b24312c31365d5d2f6567295d"
c=char[34];e=d;print["d=$c$d$c\n"+(e=~%s/([a-z0-9]{2})/char[parseInt[$1,16]]/eg)]</langsyntaxhighlight>
A more concise quine is:
<syntaxhighlight lang ="frink">1</langsyntaxhighlight>
The most concise quine in Frink, though, is the empty string.
 
=={{header|Fōrmulæ}}==
 
{{FormulaeEntry|page=https://formulae.org/?script=examples/Quine}}
Fōrmulæ programs are not textual, visualization/edition of programs is done showing/manipulating structures but not text. Moreover, there can be multiple visual representations of the same program. Even though it is possible to have textual representation &mdash;i.e. XML, JSON&mdash; they are intended for storage and transfer purposes more than visualization and edition.
 
'''Solution'''
Programs in Fōrmulæ are created/edited online in its [https://formulae.org website], However they run on execution servers. By default remote servers are used, but they are limited in memory and processing power, since they are intended for demonstration and casual use. A local server can be downloaded and installed, it has no limitations (it runs in your own computer). Because of that, example programs can be fully visualized and edited, but some of them will not run if they require a moderate or heavy computation/memory resources, and no local server is being used.
 
'''Preamble. Symbolic computation'''
In '''[https://formulae.org/?example=Quine this]''' page you can see the program(s) related to this task and their results.
 
Symbolic computation works different than traditional one. In symbolic computation, the program becomes gradually in its output, by the application of [[wp:Rewriting|rewriting rules]].
 
'''Example 1. The simplest program'''
 
The simplest program is a Null expression. Please notice that it is not an empty program (which is disallowed). It is just a one expression program: the Null expression, which has no rewriting rules.
 
[[File:Fōrmulæ - Quine 01.png]]
 
[[File:Fōrmulæ - Quine 02.png]]
 
'''Example 2. A program with non-reducible expressions'''
 
According to symbolic computation, if a program contains only non-reducible expressions (expression with no rewriting rules), then it will no be transformed to anything else, and it will be its own output.
 
[[File:Fōrmulæ - Quine 03.png]]
 
[[File:Fōrmulæ - Quine 04.png]]
 
[[File:Fōrmulæ - Quine 05.png]]
 
[[File:Fōrmulæ - Quine 06.png]]
 
[[File:Fōrmulæ - Quine 07.png]]
 
[[File:Fōrmulæ - Quine 08.png]]
 
=={{header|Furor}}==
A very short solution, using some special features of Furor:
<langsyntaxhighlight Furorlang="furor">"#s sto selfstring QUOTE @selfstring dup print QUOTE NL printnl end { „selfstring” }"
#s sto selfstring QUOTE @selfstring dup print QUOTE NL printnl end { „selfstring” }</langsyntaxhighlight>
And behold, here is a more complex but "traditional" solution of this famous task, solved by 3 loops:
<langsyntaxhighlight Furorlang="furor">#g §vége §eleje - tokensize / sto maxlines
#s
7 {| {} §eleje[] printnl |}
Line 1,442 ⟶ 1,579:
vége:
{ „selfstring” }
{ „maxlines” }</langsyntaxhighlight>
 
=={{header|Peri}}==
<syntaxhighlight lang="peri">
###sysinclude standard.uh
#g §vége §eleje - sto maxlines
#s
8 {{ {{}} §eleje[] printnl }}
@maxlines {{ {{}} §eleje[] QUOTE print QUOTE NL }}
8 @maxlines {{ , {{}} §eleje[] printnl }}
end
eleje:
"###sysinclude standard.uh"
"#g §vége §eleje - sto maxlines"
"#s"
"8 {{ {{}} §eleje[] printnl }}"
" @maxlines {{ {{}} §eleje[] QUOTE print QUOTE NL }}"
"8 @maxlines {{ , {{}} §eleje[] printnl }}"
"end"
"eleje:"
"vége:"
"{ „selfstring” }"
"{ „maxlines” }"
vége:
{ „selfstring” }
{ „maxlines” }
 
</syntaxhighlight>
 
=={{header|FutureBasic}}==
This quine depends on BASIC syntax which, although still compilable with FB, is long obsolete.
<syntaxhighlight lang="futurebasic">
window 1,,(0,0,350,430)
Str255 d, x
read d
do
read x
print x
until len$(x) == 0
restore
do
read x
print d; chr$(34); x; chr$(34)
until len$(x) == 0
HandleEvents
 
data "data "
data "window 1,,(0,0,350,430)"
data "Str255 d, x"
data "read d"
data "do"
data " read x"
data " print x"
data "until len$(x) == 0"
data "restore"
data "do"
data " read x"
data " print d; chr$(34); x; chr$(34)"
data "until len$(x) == 0"
data "HandleEvents"
data ""
</syntaxhighlight>
{{output}}
<pre>
Ditto, of course.
</pre>
 
 
=={{header|Gabuzomeu}}==
<langsyntaxhighlight lang="gabuzomeu"> CALCGA,#ZOGAGABIRDBULIFTBUCALCGA,#MEUZOZOBIRDZOLIFTZOCALCGA,#BUBUMEUMEUBIRDBULIFTBUCALCGA,#ZOGAGABIRDZOLIFTZOCALCGA,#BUGAZOGABIRDBULIFTBUCALCGA,#BUGABUBUBIRDZOLIFTZOCALCGA,#BUGAGABUBIRDBULIFTBUCALCGA,#BUGABUGABIRDZOLIFTZOCALCGA,#BUGAGAZOBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#ZOMEUGABIRDBULIFTBUCALCGA,#BUZOGABUBIRDZOLIFTZOCALCGA,#ZOGAGABIRDBULIFTBUCALCGA,#BUGAZOGABIRDZOLIFTZOCALCGA,#BUGABUBUBIRDBULIFTBUCALCGA,#BUGAGABUBIRDZOLIFTZOCALCGA,#BUGABUGABIRDBULIFTBUCALCGA,#BUBUZOZOBIRDZOLIFTZOCALCGA,#BUGAMEUMEUBIRDBULIFTBUCALCGA,#ZOMEUGABIRDZOLIFTZOCALCGA,#BUZOGAZOBIRDBULIFTBUCALCGA,#ZOGAGABIRDZOLIFTZOCALCGA,#BUGAZOZOBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGAMEUBUBIRDBULIFTBUCALCGA,#BUBUGAGABIRDZOLIFTZOCALCGA,#BUZOGAMEUBIRDBULIFTBUCALCGA,#ZOGAGABIRDZOLIFTZOCALCGA,#MEUZOZOBIRDBULIFTBUCALCGA,#BUZOGABUBIRDZOLIFTZOCALCGA,#ZOGAGABIRDBULIFTBUCALCGA,#BUGAMEUGABIRDZOLIFTZOCALCGA,#BUGAZOBUBIRDBULIFTBUCALCGA,#BUGABUZOBIRDZOLIFTZOCALCGA,#BUBUBUGABIRDBULIFTBUCALCGA,#BUGAGAZOBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGAZOZOBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGAMEUBUBIRDZOLIFTZOCALCGA,#BUBUGAGABIRDBULIFTBUCALCGA,#BUBUMEUMEUBIRDZOLIFTZOCALCGA,#ZOGAGABIRDBULIFTBUCALCGA,#MEUZOZOBIRDZOLIFTZOCALCGA,#BUZOGAZOBIRDBULIFTBUCALCGA,#ZOGAGABIRDZOLIFTZOCALCGA,#BUGAMEUGABIRDBULIFTBUCALCGA,#BUGAZOBUBIRDZOLIFTZOCALCGA,#BUGABUZOBIRDBULIFTBUCALCGA,#BUBUBUGABIRDZOLIFTZOCALCGA,#BUBUZOZOBIRDBULIFTBUCALCGA,#BUGAMEUMEUBIRDZOLIFTZOCALCGA,#BUGAZOZOBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGAMEUBUBIRDBULIFTBUCALCGA,#BUBUGAGABIRDZOLIFTZOCALCGA,#BUBUMEUMEUBIRDBULIFTBUCALCGA,#ZOGAGABIRDZOLIFTZOCALCGA,#MEUZOZOBIRDBULIFTBUCALCGA,#BUZOGAMEUBIRDZOLIFTZOCALCGA,#ZOGAGABIRDBULIFTBUCALCGA,#BUGAGAMEUBIRDZOLIFTZOCALCGA,#BUGAGABUBIRDBULIFTBUCALCGA,#BUGAMEUGABIRDZOLIFTZOCALCGA,#BUGAGAMEUBIRDBULIFTBUCALCGA,#BUGAMEUBUBIRDZOLIFTZOCALCGA,#BUGABUBUBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#ZOMEUGABIRDBULIFTBUCALCGA,#ZOGAMEUBIRDZOLIFTZOCALCGA,#BUGAGAZOBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGABUMEUBIRDBULIFTBUCALCGA,#BUGAGABUBIRDZOLIFTZOCALCGA,#BUGABUMEUBIRDBULIFTBUCALCGA,#BUGAGABUBIRDZOLIFTZOCALCGA,#BUGAMEUBUBIRDBULIFTBUCALCGA,#BUGABUBUBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGABUGABIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGAMEUBUBIRDZOLIFTZOCALCGA,#BUBUGAGABIRDBULIFTBUCALCGA,#BUGAMEUBUBIRDZOLIFTZOCALCGA,#BUGABUBUBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGAGAMEUBIRDBULIFTBUCALCGA,#BUGAGABUBIRDZOLIFTZOCALCGA,#BUGAMEUGABIRDBULIFTBUCALCGA,#BUGAGAMEUBIRDZOLIFTZOCALCGA,#BUGAMEUBUBIRDBULIFTBUCALCGA,#BUGABUBUBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#ZOMEUGABIRDZOLIFTZOCALCGA,#ZOGAMEUBIRDBULIFTBUCALCGA,#BUGAGAZOBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGABUMEUBIRDZOLIFTZOCALCGA,#BUGAGABUBIRDBULIFTBUCALCGA,#BUGABUMEUBIRDZOLIFTZOCALCGA,#BUGAGABUBIRDBULIFTBUCALCGA,#BUGAGAZOBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGABUGABIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGAMEUBUBIRDZOLIFTZOCALCGA,#BUBUGAGABIRDBULIFTBUCALCGA,#BUGAMEUBUBIRDZOLIFTZOCALCGA,#BUGABUBUBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGAGAMEUBIRDBULIFTBUCALCGA,#BUGAGABUBIRDZOLIFTZOCALCGA,#BUGAMEUGABIRDBULIFTBUCALCGA,#BUGAGAMEUBIRDZOLIFTZOCALCGA,#BUGAMEUBUBIRDBULIFTBUCALCGA,#BUGABUBUBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#ZOMEUGABIRDZOLIFTZOCALCGA,#ZOGAMEUBIRDBULIFTBUCALCGA,#BUGAGAZOBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGABUMEUBIRDZOLIFTZOCALCGA,#BUGAGABUBIRDBULIFTBUCALCGA,#BUGAMEUBUBIRDZOLIFTZOCALCGA,#BUGABUBUBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGABUMEUBIRDBULIFTBUCALCGA,#BUGAGABUBIRDZOLIFTZOCALCGA,#BUGABUGABIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGAMEUBUBIRDBULIFTBUCALCGA,#BUBUGAGABIRDZOLIFTZOCALCGA,#BUGAMEUBUBIRDBULIFTBUCALCGA,#BUGABUBUBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGAGAMEUBIRDZOLIFTZOCALCGA,#BUGAGABUBIRDBULIFTBUCALCGA,#BUGAMEUGABIRDZOLIFTZOCALCGA,#BUGAGAMEUBIRDBULIFTBUCALCGA,#BUGAMEUBUBIRDZOLIFTZOCALCGA,#BUGABUBUBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#ZOMEUGABIRDBULIFTBUCALCGA,#ZOGAMEUBIRDZOLIFTZOCALCGA,#BUGAGAZOBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGABUMEUBIRDBULIFTBUCALCGA,#BUGAGABUBIRDZOLIFTZOCALCGA,#BUGABUMEUBIRDBULIFTBUCALCGA,#BUGAGABUBIRDZOLIFTZOCALCGA,#BUGAMEUBUBIRDBULIFTBUCALCGA,#BUGABUBUBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGABUGABIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGAMEUBUBIRDZOLIFTZOCALCGA,#BUBUGAGABIRDBULIFTBUCALCGA,#BUGAMEUBUBIRDZOLIFTZOCALCGA,#BUGABUBUBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGAGAMEUBIRDBULIFTBUCALCGA,#BUGAGABUBIRDZOLIFTZOCALCGA,#BUGAMEUGABIRDBULIFTBUCALCGA,#BUGAGAMEUBIRDZOLIFTZOCALCGA,#BUGAMEUBUBIRDBULIFTBUCALCGA,#BUGABUBUBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#ZOMEUGABIRDZOLIFTZOCALCGA,#ZOGAMEUBIRDBULIFTBUCALCGA,#BUGAGAZOBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGABUMEUBIRDZOLIFTZOCALCGA,#BUGAGABUBIRDBULIFTBUCALCGA,#BUGAGAZOBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGAMEUBUBIRDZOLIFTZOCALCGA,#BUGABUBUBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGABUGABIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGAMEUBUBIRDBULIFTBUCALCGA,#BUBUGAGABIRDZOLIFTZOCALCGA,#BUGAMEUBUBIRDBULIFTBUCALCGA,#BUGABUBUBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGAGAMEUBIRDZOLIFTZOCALCGA,#BUGAGABUBIRDBULIFTBUCALCGA,#BUGAMEUGABIRDZOLIFTZOCALCGA,#BUGAGAMEUBIRDBULIFTBUCALCGA,#BUGAMEUBUBIRDZOLIFTZOCALCGA,#BUGABUBUBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#ZOMEUGABIRDBULIFTBUCALCGA,#ZOGAMEUBIRDZOLIFTZOCALCGA,#BUGAGAZOBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGABUMEUBIRDBULIFTBUCALCGA,#BUGAGABUBIRDZOLIFTZOCALCGA,#BUGABUMEUBIRDBULIFTBUCALCGA,#BUGAGABUBIRDZOLIFTZOCALCGA,#BUGAGAZOBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGABUGABIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGAMEUBUBIRDBULIFTBUCALCGA,#BUBUGAGABIRDZOLIFTZOCALCGA,#BUGAMEUBUBIRDBULIFTBUCALCGA,#BUGABUBUBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGAGAMEUBIRDZOLIFTZOCALCGA,#BUGAGABUBIRDBULIFTBUCALCGA,#BUGAMEUGABIRDZOLIFTZOCALCGA,#BUGAGAMEUBIRDBULIFTBUCALCGA,#BUGAMEUBUBIRDZOLIFTZOCALCGA,#BUGABUBUBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#ZOMEUGABIRDBULIFTBUCALCGA,#ZOGAMEUBIRDZOLIFTZOCALCGA,#BUBUZOZOBIRDBULIFTBUCALCGA,#BUGAMEUMEUBIRDZOLIFTZOCALCGA,#BUGAMEUBUBIRDBULIFTBUCALCGA,#BUGABUBUBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGABUMEUBIRDZOLIFTZOCALCGA,#BUGAGABUBIRDBULIFTBUCALCGA,#BUGABUGABIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGAMEUBUBIRDZOLIFTZOCALCGA,#BUBUGAGABIRDBULIFTBUCALCGA,#BUGAMEUBUBIRDZOLIFTZOCALCGA,#BUGABUBUBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGAGAZOBIRDBULIFTBUCALCGA,#BUGAGABUBIRDZOLIFTZOCALCGA,#BUBUGAMEUBIRDBULIFTBUCALCGA,#BUGABUBUBIRDZOLIFTZOCALCGA,#ZOGAMEUBIRDBULIFTBUCALCGA,#BUGAGAZOBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGABUMEUBIRDZOLIFTZOCALCGA,#BUGAGABUBIRDBULIFTBUCALCGA,#BUGABUGABIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGAMEUBUBIRDZOLIFTZOCALCGA,#BUBUGAGABIRDBULIFTBUCALCGA,#BUGABUMEUBIRDZOLIFTZOCALCGA,#BUGAGABUBIRDBULIFTBUCALCGA,#BUGAGAZOBIRDZOLIFTZOCALCGA,#BUGAGABUBIRDBULIFTBUCALCGA,#BUBUGAMEUBIRDZOLIFTZOCALCGA,#BUGABUBUBIRDBULIFTBUCALCGA,#ZOGAMEUBIRDZOLIFTZOCALCGA,#BUGAGAZOBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGABUMEUBIRDBULIFTBUCALCGA,#BUGAGABUBIRDZOLIFTZOCALCGA,#BUGABUMEUBIRDBULIFTBUCALCGA,#BUGAGABUBIRDZOLIFTZOCALCGA,#BUGABUMEUBIRDBULIFTBUCALCGA,#BUGAGABUBIRDZOLIFTZOCALCGA,#BUGABUMEUBIRDBULIFTBUCALCGA,#BUGAGABUBIRDZOLIFTZOCALCGA,#BUBUBUGABIRDBULIFTBUCALCGA,#BUGAGABUBIRDZOLIFTZOCALCGA,#BUGAZOBUBIRDBULIFTBUCALCGA,#BUGAMEUGABIRDZOLIFTZOCALCGA,#BUGAGAZOBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#ZOMEUGABIRDBULIFTBUCALCGA,#BUZOBUGABIRDZOLIFTZOCALCGA,#ZOGAGABIRDBULIFTBUCALCGA,#BUBUBUGABIRDZOLIFTZOCALCGA,#BUGAGABUBIRDBULIFTBUCALCGA,#BUGAZOBUBIRDZOLIFTZOCALCGA,#BUGAMEUGABIRDBULIFTBUCALCGA,#BUBUZOZOBIRDZOLIFTZOCALCGA,#BUGAMEUMEUBIRDBULIFTBUCALCGA,#ZOMEUGABIRDZOLIFTZOCALCGA,#BUZOBUBUBIRDBULIFTBUCALCGA,#ZOGAGABIRDZOLIFTZOCALCGA,#BUGAZOZOBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGAMEUBUBIRDBULIFTBUCALCGA,#BUBUGAGABIRDZOLIFTZOCALCGA,#BUZOBUZOBIRDBULIFTBUCALCGA,#ZOGAGABIRDZOLIFTZOCALCGA,#MEUZOZOBIRDBULIFTBUCALCGA,#BUZOBUGABIRDZOLIFTZOCALCGA,#ZOGAGABIRDBULIFTBUCALCGA,#BUGAGAMEUBIRDZOLIFTZOCALCGA,#BUGAGABUBIRDBULIFTBUCALCGA,#BUGAMEUGABIRDZOLIFTZOCALCGA,#BUGAGAMEUBIRDBULIFTBUCALCGA,#BUGAMEUBUBIRDZOLIFTZOCALCGA,#BUGABUBUBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#ZOMEUGABIRDBULIFTBUCALCGA,#ZOGAMEUBIRDZOLIFTZOCALCGA,#BUGAGAZOBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGABUMEUBIRDBULIFTBUCALCGA,#BUGAGABUBIRDZOLIFTZOCALCGA,#BUGABUMEUBIRDBULIFTBUCALCGA,#BUGAGABUBIRDZOLIFTZOCALCGA,#BUBUZOZOBIRDBULIFTBUCALCGA,#BUGAMEUMEUBIRDZOLIFTZOCALCGA,#BUGABUGABIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGAMEUBUBIRDBULIFTBUCALCGA,#BUBUGAGABIRDZOLIFTZOCALCGA,#BUGAMEUBUBIRDBULIFTBUCALCGA,#BUGABUBUBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGAGAMEUBIRDZOLIFTZOCALCGA,#BUGAGABUBIRDBULIFTBUCALCGA,#BUGAMEUGABIRDZOLIFTZOCALCGA,#BUGAGAMEUBIRDBULIFTBUCALCGA,#BUGAMEUBUBIRDZOLIFTZOCALCGA,#BUGABUBUBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#ZOMEUGABIRDBULIFTBUCALCGA,#ZOGAMEUBIRDZOLIFTZOCALCGA,#BUGAGAZOBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGABUMEUBIRDBULIFTBUCALCGA,#BUGAGABUBIRDZOLIFTZOCALCGA,#BUBUZOZOBIRDBULIFTBUCALCGA,#BUGAMEUMEUBIRDZOLIFTZOCALCGA,#BUGAGAZOBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGABUGABIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGAMEUBUBIRDBULIFTBUCALCGA,#BUBUGAGABIRDZOLIFTZOCALCGA,#BUGAMEUBUBIRDBULIFTBUCALCGA,#BUGABUBUBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGAGAMEUBIRDZOLIFTZOCALCGA,#BUGAGABUBIRDBULIFTBUCALCGA,#BUGAMEUGABIRDZOLIFTZOCALCGA,#BUGAGAMEUBIRDBULIFTBUCALCGA,#BUGAMEUBUBIRDZOLIFTZOCALCGA,#BUGABUBUBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#ZOMEUGABIRDBULIFTBUCALCGA,#ZOGAMEUBIRDZOLIFTZOCALCGA,#BUGAGAZOBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGAGAZOBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGABUMEUBIRDBULIFTBUCALCGA,#BUGAGABUBIRDZOLIFTZOCALCGA,#BUBUZOZOBIRDBULIFTBUCALCGA,#BUGAMEUMEUBIRDZOLIFTZOCALCGA,#BUGABUGABIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGAMEUBUBIRDBULIFTBUCALCGA,#BUBUGAGABIRDZOLIFTZOCALCGA,#BUGAMEUBUBIRDBULIFTBUCALCGA,#BUGABUBUBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGAGAMEUBIRDZOLIFTZOCALCGA,#BUGAGABUBIRDBULIFTBUCALCGA,#BUGAMEUGABIRDZOLIFTZOCALCGA,#BUGAGAMEUBIRDBULIFTBUCALCGA,#BUGAMEUBUBIRDZOLIFTZOCALCGA,#BUGABUBUBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#ZOMEUGABIRDBULIFTBUCALCGA,#ZOGAMEUBIRDZOLIFTZOCALCGA,#BUGAGAZOBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGABUMEUBIRDBULIFTBUCALCGA,#BUGAGABUBIRDZOLIFTZOCALCGA,#BUGAGAZOBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGABUMEUBIRDBULIFTBUCALCGA,#BUGAGABUBIRDZOLIFTZOCALCGA,#BUGABUGABIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGAMEUBUBIRDBULIFTBUCALCGA,#BUBUGAGABIRDZOLIFTZOCALCGA,#BUGAMEUBUBIRDBULIFTBUCALCGA,#BUGABUBUBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGAGAMEUBIRDZOLIFTZOCALCGA,#BUGAGABUBIRDBULIFTBUCALCGA,#BUGAMEUGABIRDZOLIFTZOCALCGA,#BUGAGAMEUBIRDBULIFTBUCALCGA,#BUGAMEUBUBIRDZOLIFTZOCALCGA,#BUGABUBUBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#ZOMEUGABIRDBULIFTBUCALCGA,#ZOGAMEUBIRDZOLIFTZOCALCGA,#BUGAGAZOBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGABUMEUBIRDBULIFTBUCALCGA,#BUGAGABUBIRDZOLIFTZOCALCGA,#BUGABUMEUBIRDBULIFTBUCALCGA,#BUGAGABUBIRDZOLIFTZOCALCGA,#BUBUZOZOBIRDBULIFTBUCALCGA,#BUGAMEUMEUBIRDZOLIFTZOCALCGA,#BUGABUGABIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGAMEUBUBIRDBULIFTBUCALCGA,#BUBUGAGABIRDZOLIFTZOCALCGA,#BUGAMEUBUBIRDBULIFTBUCALCGA,#BUGABUBUBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGAGAMEUBIRDZOLIFTZOCALCGA,#BUGAGABUBIRDBULIFTBUCALCGA,#BUGAMEUGABIRDZOLIFTZOCALCGA,#BUGAGAMEUBIRDBULIFTBUCALCGA,#BUGAMEUBUBIRDZOLIFTZOCALCGA,#BUGABUBUBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#ZOMEUGABIRDBULIFTBUCALCGA,#ZOGAMEUBIRDZOLIFTZOCALCGA,#BUGAGAZOBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGAGAZOBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGAGAZOBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGAGAZOBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGABUGABIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGAMEUBUBIRDBULIFTBUCALCGA,#BUBUGAGABIRDZOLIFTZOCALCGA,#BUGAMEUBUBIRDBULIFTBUCALCGA,#BUGABUBUBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGAGAMEUBIRDZOLIFTZOCALCGA,#BUGAGABUBIRDBULIFTBUCALCGA,#BUGAMEUGABIRDZOLIFTZOCALCGA,#BUGAGAMEUBIRDBULIFTBUCALCGA,#BUGAMEUBUBIRDZOLIFTZOCALCGA,#BUGABUBUBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#ZOMEUGABIRDBULIFTBUCALCGA,#ZOGAMEUBIRDZOLIFTZOCALCGA,#BUGAGAZOBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGABUMEUBIRDBULIFTBUCALCGA,#BUGAGABUBIRDZOLIFTZOCALCGA,#BUGAMEUBUBIRDBULIFTBUCALCGA,#BUGABUBUBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGABUMEUBIRDZOLIFTZOCALCGA,#BUGAGABUBIRDBULIFTBUCALCGA,#BUGABUGABIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGAMEUBUBIRDZOLIFTZOCALCGA,#BUBUGAGABIRDBULIFTBUCALCGA,#BUGAMEUBUBIRDZOLIFTZOCALCGA,#BUGABUBUBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGAGAMEUBIRDBULIFTBUCALCGA,#BUGAGABUBIRDZOLIFTZOCALCGA,#BUGAMEUGABIRDBULIFTBUCALCGA,#BUGAGAMEUBIRDZOLIFTZOCALCGA,#BUGAMEUBUBIRDBULIFTBUCALCGA,#BUGABUBUBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#ZOMEUGABIRDZOLIFTZOCALCGA,#ZOGAMEUBIRDBULIFTBUCALCGA,#BUGAGAZOBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGABUMEUBIRDZOLIFTZOCALCGA,#BUGAGABUBIRDBULIFTBUCALCGA,#BUBUZOZOBIRDZOLIFTZOCALCGA,#BUGAMEUMEUBIRDBULIFTBUCALCGA,#BUGAGAZOBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGABUGABIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGAMEUBUBIRDZOLIFTZOCALCGA,#BUBUGAGABIRDBULIFTBUCALCGA,#BUGAMEUBUBIRDZOLIFTZOCALCGA,#BUGABUBUBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGAGAMEUBIRDBULIFTBUCALCGA,#BUGAGABUBIRDZOLIFTZOCALCGA,#BUGAMEUGABIRDBULIFTBUCALCGA,#BUGAGAMEUBIRDZOLIFTZOCALCGA,#BUGAMEUBUBIRDBULIFTBUCALCGA,#BUGABUBUBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#ZOMEUGABIRDZOLIFTZOCALCGA,#ZOGAMEUBIRDBULIFTBUCALCGA,#BUGAGAZOBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGABUMEUBIRDZOLIFTZOCALCGA,#BUGAGABUBIRDBULIFTBUCALCGA,#BUGAGAZOBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUBUZOZOBIRDZOLIFTZOCALCGA,#BUGAMEUMEUBIRDBULIFTBUCALCGA,#BUGABUGABIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGAMEUBUBIRDZOLIFTZOCALCGA,#BUBUGAGABIRDBULIFTBUCALCGA,#BUGAMEUBUBIRDZOLIFTZOCALCGA,#BUGABUBUBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGAGAMEUBIRDBULIFTBUCALCGA,#BUGAGABUBIRDZOLIFTZOCALCGA,#BUGAMEUGABIRDBULIFTBUCALCGA,#BUGAGAMEUBIRDZOLIFTZOCALCGA,#BUGAMEUBUBIRDBULIFTBUCALCGA,#BUGABUBUBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#ZOMEUGABIRDZOLIFTZOCALCGA,#ZOGAMEUBIRDBULIFTBUCALCGA,#BUGAGAZOBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGAGAZOBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGAGAZOBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGABUMEUBIRDZOLIFTZOCALCGA,#BUGAGABUBIRDBULIFTBUCALCGA,#BUGABUGABIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGAMEUBUBIRDZOLIFTZOCALCGA,#BUBUGAGABIRDBULIFTBUCALCGA,#BUGAMEUBUBIRDZOLIFTZOCALCGA,#BUGABUBUBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGAGAMEUBIRDBULIFTBUCALCGA,#BUGAGABUBIRDZOLIFTZOCALCGA,#BUGAMEUGABIRDBULIFTBUCALCGA,#BUGAGAMEUBIRDZOLIFTZOCALCGA,#BUGAMEUBUBIRDBULIFTBUCALCGA,#BUGABUBUBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#ZOMEUGABIRDZOLIFTZOCALCGA,#ZOGAMEUBIRDBULIFTBUCALCGA,#BUGAGAZOBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGABUMEUBIRDZOLIFTZOCALCGA,#BUGAGABUBIRDBULIFTBUCALCGA,#BUGABUMEUBIRDZOLIFTZOCALCGA,#BUGAGABUBIRDBULIFTBUCALCGA,#BUBUZOZOBIRDZOLIFTZOCALCGA,#BUGAMEUMEUBIRDBULIFTBUCALCGA,#BUGABUGABIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGAMEUBUBIRDZOLIFTZOCALCGA,#BUBUGAGABIRDBULIFTBUCALCGA,#BUGAMEUBUBIRDZOLIFTZOCALCGA,#BUGABUBUBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGAGAMEUBIRDBULIFTBUCALCGA,#BUGAGABUBIRDZOLIFTZOCALCGA,#BUGAMEUGABIRDBULIFTBUCALCGA,#BUGAGAMEUBIRDZOLIFTZOCALCGA,#BUGAMEUBUBIRDBULIFTBUCALCGA,#BUGABUBUBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#ZOMEUGABIRDZOLIFTZOCALCGA,#ZOGAMEUBIRDBULIFTBUCALCGA,#BUGAGAZOBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGAGAZOBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGAGAZOBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGAGAZOBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGABUGABIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGAMEUBUBIRDZOLIFTZOCALCGA,#BUBUGAGABIRDBULIFTBUCALCGA,#BUGAMEUBUBIRDZOLIFTZOCALCGA,#BUGABUBUBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGAMEUGABIRDBULIFTBUCALCGA,#BUGAZOBUBIRDZOLIFTZOCALCGA,#BUGABUZOBIRDBULIFTBUCALCGA,#BUBUBUGABIRDZOLIFTZOCALCGA,#BUGAGAZOBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGAZOZOBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGAMEUBUBIRDBULIFTBUCALCGA,#BUBUGAGABIRDZOLIFTZOCALCGA,#BUZOGAMEUBIRDBULIFTBUCALCGA,#ZOGAGABIRDZOLIFTZOCALCGA,#MEUZOZOBIRDBULIFTBUCALCGA,#BUZOBUBUBIRDZOLIFTZOCALCGA,#ZOGAGABIRDBULIFTBUCALCGA,#BUGAGAMEUBIRDZOLIFTZOCALCGA,#BUGAGABUBIRDBULIFTBUCALCGA,#BUGAMEUGABIRDZOLIFTZOCALCGA,#BUGAGAMEUBIRDBULIFTBUCALCGA,#BUGAMEUBUBIRDZOLIFTZOCALCGA,#BUGABUBUBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#ZOMEUGABIRDBULIFTBUCALCGA,#ZOGAMEUBIRDZOLIFTZOCALCGA,#BUGAGAZOBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGABUMEUBIRDBULIFTBUCALCGA,#BUGAGABUBIRDZOLIFTZOCALCGA,#BUGABUMEUBIRDBULIFTBUCALCGA,#BUGAGABUBIRDZOLIFTZOCALCGA,#BUBUZOZOBIRDBULIFTBUCALCGA,#BUGAMEUMEUBIRDZOLIFTZOCALCGA,#BUGABUGABIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGAMEUBUBIRDBULIFTBUCALCGA,#BUBUGAGABIRDZOLIFTZOCALCGA,#BUGAMEUBUBIRDBULIFTBUCALCGA,#BUGABUBUBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGAGAMEUBIRDZOLIFTZOCALCGA,#BUGAGABUBIRDBULIFTBUCALCGA,#BUGAMEUGABIRDZOLIFTZOCALCGA,#BUGAGAMEUBIRDBULIFTBUCALCGA,#BUGAMEUBUBIRDZOLIFTZOCALCGA,#BUGABUBUBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#ZOMEUGABIRDBULIFTBUCALCGA,#ZOGAMEUBIRDZOLIFTZOCALCGA,#BUGAGAZOBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGABUMEUBIRDBULIFTBUCALCGA,#BUGAGABUBIRDZOLIFTZOCALCGA,#BUBUZOZOBIRDBULIFTBUCALCGA,#BUGAMEUMEUBIRDZOLIFTZOCALCGA,#BUGAGAZOBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGABUGABIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGAMEUBUBIRDBULIFTBUCALCGA,#BUBUGAGABIRDZOLIFTZOCALCGA,#BUGAMEUBUBIRDBULIFTBUCALCGA,#BUGABUBUBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGAGAMEUBIRDZOLIFTZOCALCGA,#BUGAGABUBIRDBULIFTBUCALCGA,#BUGAMEUGABIRDZOLIFTZOCALCGA,#BUGAGAMEUBIRDBULIFTBUCALCGA,#BUGAMEUBUBIRDZOLIFTZOCALCGA,#BUGABUBUBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#ZOMEUGABIRDBULIFTBUCALCGA,#ZOGAMEUBIRDZOLIFTZOCALCGA,#BUGAGAZOBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGAGAZOBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGABUMEUBIRDBULIFTBUCALCGA,#BUGAGABUBIRDZOLIFTZOCALCGA,#BUBUZOZOBIRDBULIFTBUCALCGA,#BUGAMEUMEUBIRDZOLIFTZOCALCGA,#BUGABUGABIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGAMEUBUBIRDBULIFTBUCALCGA,#BUBUGAGABIRDZOLIFTZOCALCGA,#BUGAMEUBUBIRDBULIFTBUCALCGA,#BUGABUBUBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGAGAMEUBIRDZOLIFTZOCALCGA,#BUGAGABUBIRDBULIFTBUCALCGA,#BUGAMEUGABIRDZOLIFTZOCALCGA,#BUGAGAMEUBIRDBULIFTBUCALCGA,#BUGAMEUBUBIRDZOLIFTZOCALCGA,#BUGABUBUBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#ZOMEUGABIRDBULIFTBUCALCGA,#ZOGAMEUBIRDZOLIFTZOCALCGA,#BUGAGAZOBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGABUMEUBIRDBULIFTBUCALCGA,#BUGAGABUBIRDZOLIFTZOCALCGA,#BUGAGAZOBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGABUMEUBIRDBULIFTBUCALCGA,#BUGAGABUBIRDZOLIFTZOCALCGA,#BUGABUGABIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGAMEUBUBIRDBULIFTBUCALCGA,#BUBUGAGABIRDZOLIFTZOCALCGA,#BUGAMEUBUBIRDBULIFTBUCALCGA,#BUGABUBUBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGAGAMEUBIRDZOLIFTZOCALCGA,#BUGAGABUBIRDBULIFTBUCALCGA,#BUGAMEUGABIRDZOLIFTZOCALCGA,#BUGAGAMEUBIRDBULIFTBUCALCGA,#BUGAMEUBUBIRDZOLIFTZOCALCGA,#BUGABUBUBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#ZOMEUGABIRDBULIFTBUCALCGA,#ZOGAMEUBIRDZOLIFTZOCALCGA,#BUGAGAZOBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGAGAZOBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUBUZOZOBIRDBULIFTBUCALCGA,#BUGAMEUMEUBIRDZOLIFTZOCALCGA,#BUBUZOZOBIRDBULIFTBUCALCGA,#BUGAMEUMEUBIRDZOLIFTZOCALCGA,#BUGABUGABIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGAMEUBUBIRDBULIFTBUCALCGA,#BUBUGAGABIRDZOLIFTZOCALCGA,#BUGAMEUBUBIRDBULIFTBUCALCGA,#BUGABUBUBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGAGAMEUBIRDZOLIFTZOCALCGA,#BUGAGABUBIRDBULIFTBUCALCGA,#BUGAMEUGABIRDZOLIFTZOCALCGA,#BUGAGAMEUBIRDBULIFTBUCALCGA,#BUGAMEUBUBIRDZOLIFTZOCALCGA,#BUGABUBUBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#ZOMEUGABIRDBULIFTBUCALCGA,#ZOGAMEUBIRDZOLIFTZOCALCGA,#BUGAGAZOBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGABUMEUBIRDBULIFTBUCALCGA,#BUGAGABUBIRDZOLIFTZOCALCGA,#BUGAMEUBUBIRDBULIFTBUCALCGA,#BUGABUBUBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGAMEUBUBIRDZOLIFTZOCALCGA,#BUGABUBUBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGABUGABIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGAMEUBUBIRDBULIFTBUCALCGA,#BUBUGAGABIRDZOLIFTZOCALCGA,#BUGAMEUBUBIRDBULIFTBUCALCGA,#BUGABUBUBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGAGAMEUBIRDZOLIFTZOCALCGA,#BUGAGABUBIRDBULIFTBUCALCGA,#BUGAMEUGABIRDZOLIFTZOCALCGA,#BUGAGAMEUBIRDBULIFTBUCALCGA,#BUGAMEUBUBIRDZOLIFTZOCALCGA,#BUGABUBUBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#ZOMEUGABIRDBULIFTBUCALCGA,#ZOGAMEUBIRDZOLIFTZOCALCGA,#BUGAGAZOBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGABUMEUBIRDBULIFTBUCALCGA,#BUGAGABUBIRDZOLIFTZOCALCGA,#BUGAMEUBUBIRDBULIFTBUCALCGA,#BUGABUBUBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGABUMEUBIRDZOLIFTZOCALCGA,#BUGAGABUBIRDBULIFTBUCALCGA,#BUGABUGABIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGAMEUBUBIRDZOLIFTZOCALCGA,#BUBUGAGABIRDBULIFTBUCALCGA,#BUGAMEUBUBIRDZOLIFTZOCALCGA,#BUGABUBUBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGAGAMEUBIRDBULIFTBUCALCGA,#BUGAGABUBIRDZOLIFTZOCALCGA,#BUGAMEUGABIRDBULIFTBUCALCGA,#BUGAGAMEUBIRDZOLIFTZOCALCGA,#BUGAMEUBUBIRDBULIFTBUCALCGA,#BUGABUBUBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#ZOMEUGABIRDZOLIFTZOCALCGA,#ZOGAMEUBIRDBULIFTBUCALCGA,#BUGAGAZOBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGABUMEUBIRDZOLIFTZOCALCGA,#BUGAGABUBIRDBULIFTBUCALCGA,#BUBUZOZOBIRDZOLIFTZOCALCGA,#BUGAMEUMEUBIRDBULIFTBUCALCGA,#BUGAGAZOBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGABUGABIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGAMEUBUBIRDZOLIFTZOCALCGA,#BUBUGAGABIRDBULIFTBUCALCGA,#BUGAMEUBUBIRDZOLIFTZOCALCGA,#BUGABUBUBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGAGAMEUBIRDBULIFTBUCALCGA,#BUGAGABUBIRDZOLIFTZOCALCGA,#BUGAMEUGABIRDBULIFTBUCALCGA,#BUGAGAMEUBIRDZOLIFTZOCALCGA,#BUGAMEUBUBIRDBULIFTBUCALCGA,#BUGABUBUBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#ZOMEUGABIRDZOLIFTZOCALCGA,#ZOGAMEUBIRDBULIFTBUCALCGA,#BUGAGAZOBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGABUMEUBIRDZOLIFTZOCALCGA,#BUGAGABUBIRDBULIFTBUCALCGA,#BUGAGAZOBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUBUZOZOBIRDZOLIFTZOCALCGA,#BUGAMEUMEUBIRDBULIFTBUCALCGA,#BUGABUGABIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGAMEUBUBIRDZOLIFTZOCALCGA,#BUBUGAGABIRDBULIFTBUCALCGA,#BUGAMEUBUBIRDZOLIFTZOCALCGA,#BUGABUBUBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGAGAMEUBIRDBULIFTBUCALCGA,#BUGAGABUBIRDZOLIFTZOCALCGA,#BUGAMEUGABIRDBULIFTBUCALCGA,#BUGAGAMEUBIRDZOLIFTZOCALCGA,#BUGAMEUBUBIRDBULIFTBUCALCGA,#BUGABUBUBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#ZOMEUGABIRDZOLIFTZOCALCGA,#ZOGAMEUBIRDBULIFTBUCALCGA,#BUGAGAZOBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGAGAZOBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGAGAZOBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGABUMEUBIRDZOLIFTZOCALCGA,#BUGAGABUBIRDBULIFTBUCALCGA,#BUGABUGABIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGAMEUBUBIRDZOLIFTZOCALCGA,#BUBUGAGABIRDBULIFTBUCALCGA,#BUGAMEUBUBIRDZOLIFTZOCALCGA,#BUGABUBUBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGAGAMEUBIRDBULIFTBUCALCGA,#BUGAGABUBIRDZOLIFTZOCALCGA,#BUGAMEUGABIRDBULIFTBUCALCGA,#BUGAGAMEUBIRDZOLIFTZOCALCGA,#BUGAMEUBUBIRDBULIFTBUCALCGA,#BUGABUBUBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#ZOMEUGABIRDZOLIFTZOCALCGA,#ZOGAMEUBIRDBULIFTBUCALCGA,#BUGAGAZOBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGAGAZOBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUBUZOZOBIRDZOLIFTZOCALCGA,#BUGAMEUMEUBIRDBULIFTBUCALCGA,#BUBUZOZOBIRDZOLIFTZOCALCGA,#BUGAMEUMEUBIRDBULIFTBUCALCGA,#BUGABUGABIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGAMEUBUBIRDZOLIFTZOCALCGA,#BUBUGAGABIRDBULIFTBUCALCGA,#BUGAMEUBUBIRDZOLIFTZOCALCGA,#BUGABUBUBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGAGAMEUBIRDBULIFTBUCALCGA,#BUGAGABUBIRDZOLIFTZOCALCGA,#BUGAMEUGABIRDBULIFTBUCALCGA,#BUGAGAMEUBIRDZOLIFTZOCALCGA,#BUGAMEUBUBIRDBULIFTBUCALCGA,#BUGABUBUBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#ZOMEUGABIRDZOLIFTZOCALCGA,#ZOGAMEUBIRDBULIFTBUCALCGA,#BUGAGAZOBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGABUMEUBIRDZOLIFTZOCALCGA,#BUGAGABUBIRDBULIFTBUCALCGA,#BUGAMEUBUBIRDZOLIFTZOCALCGA,#BUGABUBUBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGAMEUBUBIRDBULIFTBUCALCGA,#BUGABUBUBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGABUGABIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGAMEUBUBIRDZOLIFTZOCALCGA,#BUBUGAGABIRDBULIFTBUCALCGA,#BUGAMEUBUBIRDZOLIFTZOCALCGA,#BUGABUBUBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGAMEUGABIRDBULIFTBUCALCGA,#BUGAZOBUBIRDZOLIFTZOCALCGA,#BUGABUZOBIRDBULIFTBUCALCGA,#BUBUBUGABIRDZOLIFTZOCALCGA,#BUBUZOZOBIRDBULIFTBUCALCGA,#BUGAMEUMEUBIRDZOLIFTZOCALCGA,#BUGAZOZOBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGAMEUBUBIRDBULIFTBUCALCGA,#BUBUGAGABIRDZOLIFTZOCALCGA,#BUZOGAMEUBIRDBULIFTBUCALCGA,#ZOGAGABIRDZOLIFTZOCALCGA,#MEUZOZOBIRDBULIFTBUCALCGA,#BUZOBUZOBIRDZOLIFTZOCALCGA,#ZOGAGABIRDBULIFTBUCALCGA,#BUGAZOGABIRDZOLIFTZOCALCGA,#BUGABUBUBIRDBULIFTBUCALCGA,#BUGAGABUBIRDZOLIFTZOCALCGA,#BUGABUGABIRDBULIFTBUCALCGA,#BUGAGAZOBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#ZOMEUGABIRDZOLIFTZOCALCGA,#BUZOBUMEUBIRDBULIFTBUCALCGA,#ZOGAGABIRDZOLIFTZOCALCGA,#BUGAZOGABIRDBULIFTBUCALCGA,#BUGABUBUBIRDZOLIFTZOCALCGA,#BUGAGABUBIRDBULIFTBUCALCGA,#BUGABUGABIRDZOLIFTZOCALCGA,#BUBUZOZOBIRDBULIFTBUCALCGA,#BUGAMEUMEUBIRDZOLIFTZOCALCGA,#ZOMEUGABIRDBULIFTBUCALCGA,#BUZOZOGABIRDZOLIFTZOCALCGA,#ZOGAGABIRDBULIFTBUCALCGA,#BUGAZOZOBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGAMEUBUBIRDZOLIFTZOCALCGA,#BUBUGAGABIRDBULIFTBUCALCGA,#BUZOZOBUBIRDZOLIFTZOCALCGA,#ZOGAGABIRDBULIFTBUCALCGA,#MEUZOZOBIRDZOLIFTZOCALCGA,#BUZOBUMEUBIRDBULIFTBUCALCGA,#ZOGAGABIRDZOLIFTZOCALCGA,#BUGAMEUGABIRDBULIFTBUCALCGA,#BUGAZOBUBIRDZOLIFTZOCALCGA,#BUGABUZOBIRDBULIFTBUCALCGA,#BUBUBUGABIRDZOLIFTZOCALCGA,#BUGAGAZOBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGAZOZOBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGAMEUBUBIRDBULIFTBUCALCGA,#BUBUGAGABIRDZOLIFTZOCALCGA,#BUZOBUZOBIRDBULIFTBUCALCGA,#ZOGAGABIRDZOLIFTZOCALCGA,#MEUZOZOBIRDBULIFTBUCALCGA,#BUZOZOGABIRDZOLIFTZOCALCGA,#ZOGAGABIRDBULIFTBUCALCGA,#BUGAMEUGABIRDZOLIFTZOCALCGA,#BUGAZOBUBIRDBULIFTBUCALCGA,#BUGABUZOBIRDZOLIFTZOCALCGA,#BUBUBUGABIRDBULIFTBUCALCGA,#BUBUZOZOBIRDZOLIFTZOCALCGA,#BUGAMEUMEUBIRDBULIFTBUCALCGA,#BUGAZOZOBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGAMEUBUBIRDZOLIFTZOCALCGA,#BUBUGAGABIRDBULIFTBUCALCGA,#BUZOBUZOBIRDZOLIFTZOCALCGA,#ZOGAGABIRDBULIFTBUCALCGA,#MEUZOZOBIRDZOLIFTZOCALCGA,#BUZOZOBUBIRDBULIFTBUCALCGA,#ZOGAGABIRDZOLIFTZOCALCGA,#BUGABUGABIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGAMEUBUBIRDBULIFTBUCALCGA,#BUBUGAGABIRDZOLIFTZOCALCGA,#BUGABUMEUBIRDBULIFTBUCALCGA,#BUGAGABUBIRDZOLIFTZOCALCGA,#BUBUBUGABIRDBULIFTBUCALCGA,#BUGAGABUBIRDZOLIFTZOCALCGA,#BUGAZOBUBIRDBULIFTBUCALCGA,#BUGAMEUGABIRDZOLIFTZOCALCGA,#BUGAGAZOBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#ZOMEUGABIRDBULIFTBUCALCGA,#BUZOZOZOBIRDZOLIFTZOCALCGA,#ZOGAGABIRDBULIFTBUCALCGA,#BUBUBUGABIRDZOLIFTZOCALCGA,#BUGAGABUBIRDBULIFTBUCALCGA,#BUGAZOBUBIRDZOLIFTZOCALCGA,#BUGAMEUGABIRDBULIFTBUCALCGA,#BUBUZOZOBIRDZOLIFTZOCALCGA,#BUGAMEUMEUBIRDBULIFTBUCALCGA,#ZOMEUGABIRDZOLIFTZOCALCGA,#BUZOZOMEUBIRDBULIFTBUCALCGA,#ZOGAGABIRDZOLIFTZOCALCGA,#BUGAZOZOBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGAMEUBUBIRDBULIFTBUCALCGA,#BUBUGAGABIRDZOLIFTZOCALCGA,#BUZOMEUGABIRDBULIFTBUCALCGA,#ZOGAGABIRDZOLIFTZOCALCGA,#MEUZOZOBIRDBULIFTBUCALCGA,#BUZOZOZOBIRDZOLIFTZOCALCGA,#ZOGAGABIRDBULIFTBUCALCGA,#BUGAMEUGABIRDZOLIFTZOCALCGA,#BUGAZOBUBIRDBULIFTBUCALCGA,#BUGABUZOBIRDZOLIFTZOCALCGA,#BUBUBUGABIRDBULIFTBUCALCGA,#BUGAGAZOBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGAZOZOBIRDZOLIFTZOCALCGA,#BUBUBUBUBIRDBULIFTBUCALCGA,#BUGAMEUBUBIRDZOLIFTZOCALCGA,#BUBUGAGABIRDBULIFTBUCALCGA,#BUZOZOBUBIRDZOLIFTZOCALCGA,#ZOGAGABIRDBULIFTBUCALCGA,#MEUZOZOBIRDZOLIFTZOCALCGA,#BUZOZOMEUBIRDBULIFTBUCALCGA,#ZOGAGABIRDZOLIFTZOCALCGA,#BUGAMEUGABIRDBULIFTBUCALCGA,#BUGAZOBUBIRDZOLIFTZOCALCGA,#BUGABUZOBIRDBULIFTBUCALCGA,#BUBUBUGABIRDZOLIFTZOCALCGA,#BUBUZOZOBIRDBULIFTBUCALCGA,#BUGAMEUMEUBIRDZOLIFTZOCALCGA,#BUGAZOZOBIRDBULIFTBUCALCGA,#BUBUBUBUBIRDZOLIFTZOCALCGA,#BUGAMEUBUBIRDBULIFTBUCALCGA,#BUBUGAGABIRDZOLIFTZOCALCGA,#BUZOZOBUBIRDBULIFTBUCALCGA,#ZOGAGABIRDZOLIFTZOCALCGA,#MEUZOZOBIRDBULIFTBUCALCGA,#BUZOMEUGA :_ HEADBU,a HEADZO,b JUMPc :a LIFTBUJUMP_ :b LIFTZOJUMP_ :c CALCMEU,#BUGAGAMEUDUMPMEUCALCMEU,#BUGAGABUDUMPMEUCALCMEU,#BUGAMEUGADUMPMEUCALCMEU,#BUGAGAMEUDUMPMEUCALCMEU,#BUGABUMEUDUMPMEUCALCMEU,#BUGAGABUDUMPMEUCALCMEU,#ZOMEUGADUMPMEUBASE#BUGADUMPGABASE#BUGAGAGAGATAILBU,d TAILZO,e JUMPf :d CALCMEU,#BUGAGAZODUMPMEUCALCMEU,#BUGAZOBUDUMPMEUCALCMEU,#BUBUGAZODUMPMEUCALCMEU,#BUGABUGADUMPMEUCALCMEU,#BUGAGAZODUMPMEUCALCMEU,#BUBUBUBUDUMPMEUCALCMEU,#BUGAMEUGADUMPMEUCALCMEU,#BUGAZOBUDUMPMEUCALCMEU,#BUGABUZODUMPMEUCALCMEU,#BUBUBUGADUMPMEUCALCMEU,#BUGAGAZODUMPMEUCALCMEU,#BUBUBUBUDUMPMEULIFTBUJUMPc :e CALCMEU,#BUGAGAZODUMPMEUCALCMEU,#BUGAZOBUDUMPMEUCALCMEU,#BUBUGAZODUMPMEUCALCMEU,#BUGABUGADUMPMEUCALCMEU,#BUBUZOZODUMPMEUCALCMEU,#BUGAMEUMEUDUMPMEUCALCMEU,#BUGAMEUGADUMPMEUCALCMEU,#BUGAZOBUDUMPMEUCALCMEU,#BUGABUZODUMPMEUCALCMEU,#BUBUBUGADUMPMEUCALCMEU,#BUBUZOZODUMPMEUCALCMEU,#BUGAMEUMEUDUMPMEULIFTZOJUMPc :f HEADBU,g HEADZO,h JUMPi :g LIFTBUJUMPf :h LIFTZOJUMPf :i DUMPGATAILBU,j TAILZO,k JUMPl :j LIFTBUJUMPi :k LIFTZOJUMPi :l
</syntaxhighlight>
</lang>
 
=={{header|Gambas}}==
You can run this from shell with "gbs3" of the Gambas3 project (BASIC dialect).
<langsyntaxhighlight lang="gambas">dim s as string="dim s as string=&1&2&3&4print subst(s,chr(34),s,chr(34),chr(10))"
print subst(s,chr(34),s,chr(34),chr(10))
</syntaxhighlight>
</lang>
{{Out}}
<pre>> gbs3 quine_1.gambas
Line 1,459 ⟶ 1,662:
 
=={{header|GAP}}==
<langsyntaxhighlight lang="gap">f:=function ( )
Print( "f:=", f, ";;\nf();\n" );
return;
end;;
f();
</syntaxhighlight>
</lang>
 
=={{header|Gema}}==
<langsyntaxhighlight lang="gema">*=$1@quote{$1}\}\n@abort;@{\*\=\$1\@quote\{\$1\}\\\}\\n\@abort\;\@\{}</langsyntaxhighlight>
 
=={{header|Go}}==
<langsyntaxhighlight lang="go">package main
 
import "fmt"
Line 1,477 ⟶ 1,680:
a := "package main\n\nimport \"fmt\"\n\nfunc main() {\n\ta := %q\n\tfmt.Printf(a, a)\n}\n"
fmt.Printf(a, a)
}</langsyntaxhighlight>
 
=={{header|Groovy}}==
There are several ways to do this. Here are five:
<langsyntaxhighlight lang="groovy">s="s=%s;printf s,s.inspect()";printf s,s.inspect()</langsyntaxhighlight>
<langsyntaxhighlight lang="groovy">evaluate s='char q=39;print"evaluate s=$q$s$q"'</langsyntaxhighlight>
<langsyntaxhighlight lang="groovy">s="s=%c%s%c;printf s,34,s,34";printf s,34,s,34</langsyntaxhighlight>
<langsyntaxhighlight lang="groovy">s='s=%c%s%1$c;printf s,39,s';printf s,39,s</langsyntaxhighlight>
<langsyntaxhighlight lang="groovy">printf _='printf _=%c%s%1$c,39,_',39,_</langsyntaxhighlight>
Also Groovy has a trivial solution of an empty (0 length) file even though that isn't an allowable solution here.
 
=={{header|GW-BASIC}}==
<syntaxhighlight lang ="qbasic">10 LIST</langsyntaxhighlight>
 
=={{header|Hare}}==
<syntaxhighlight lang="hare">use fmt;
const src: str = "use fmt;
const src: str = {0}{1}{0};
export fn main() void = {{fmt::printfln(src, '{0}', src)!;}};";
export fn main() void = {fmt::printfln(src, '"', src)!;};</syntaxhighlight>
 
=={{header|Haskell}}==
Line 1,495 ⟶ 1,705:
 
In Haskell, function arguments are not surrounded by parentheses, which permits a simple quine where there is only the unquoted code followed by the quoted code.
<langsyntaxhighlight lang="haskell">let q s = putStrLn (s ++ show s) in q "let q s = putStrLn (s ++ show s) in q "</langsyntaxhighlight>
 
It is also possible to eliminate one or both of the variables (point-free style): the <code>let</code> can be replaced with a lambda. (<code>.</code> is function composition.)
<langsyntaxhighlight lang="haskell">(\s -> putStrLn (s ++ show s)) "(\\s -> putStrLn (s ++ show s)) "</langsyntaxhighlight>
<langsyntaxhighlight lang="haskell">(putStrLn . \s -> s ++ show s) "(putStrLn . \\s -> s ++ show s) "</langsyntaxhighlight>
 
and <var><code>s</code></var> can be replaced by <code>ap</code>, which when applied to functions has the effect of the [[wp:SKI combinator calculus|S combinator]]:
<langsyntaxhighlight lang="haskell">import Control.Monad.Reader
(putStrLn . ap (++) show) "(putStrLn . ap (++) show) "</langsyntaxhighlight>
 
Since Haskell is a purely functional language, it is better at evaluating to things than printing them out. The following expression evaluates to a string of itself:
<langsyntaxhighlight lang="haskell">ap(++)show"ap(++)show"</langsyntaxhighlight>
 
Finally, here is a standalone program (the preceding examples only work in the REPL):
<langsyntaxhighlight lang="haskell">main = putStrLn $ (++) <*> show $ "main = putStrLn $ (++) <*> show $ "</langsyntaxhighlight>
 
=={{header|Hoon}}==
Unfortunately, this is quite a long quine due to the pretty-printing that is employeed. A majority of the code is fixing up the printed result of the array so it can be ran directly.
<langsyntaxhighlight Hoonlang="hoon">!: :- %say |= [^ [~ ~]] =+ ^= s ((list ,@tas) ~['!: :- %say |= [^ [~ ~]] =+ ^= s ((list ,@tas) ~[' 'x' ']) :- %noun (,tape (turn s |=(a=@tas ?:(=(a %x) (crip `(list ,@tas)`(turn s |=(b=@tas =+([s=?:(=(b %x) " " "") m=(trip ~~~[[User:Wodan58|Wodan58]] ([[User talk:Wodan58|talk]])27.)] (crip :(welp s m (trip b) m s)))))) a))))']) :- %noun (,tape (turn s |=(a=@tas ?:(=(a %x) (crip `(list ,@tas)`(turn s |=(b=@tas =+([s=?:(=(b %x) " " "") m=(trip ~~~[[User:Wodan58|Wodan58]] ([[User talk:Wodan58|talk]])27.)] (crip :(welp s m (trip b) m s)))))) a))))</langsyntaxhighlight>
 
Two much shorter quines were created and tweeted from the @urbit_ twitter account, which might be more interesting:
<langsyntaxhighlight Hoonlang="hoon">=-(`@t`(rap 3 - (scot %uw -) ")") 0wwai8F.8y0Fb.i1Tti.kwt6Z.zsOww.bi0P8.71xsy.xwt41.wa2QZ)</langsyntaxhighlight>[https://twitter.com/urbit_/status/651127726670147584 1]
<langsyntaxhighlight Hoonlang="hoon">=<(`_""`~[. `@`39 . `@`10.535] '=<(`_""`~[. `@`39 . `@`10.535] ')</langsyntaxhighlight>[https://twitter.com/urbit_/status/651126581499314176 2]
 
=={{header|HQ9+}}==
Any program with a single “<tt>Q</tt>” is a quine. The simplest possible such program is just this:
<syntaxhighlight lang ="hq9plus">Q</langsyntaxhighlight>
 
=={{header|HTML}}==
Line 1,529 ⟶ 1,739:
 
This solution uses CSS to print out the source itself, e.g. the "direct accessing" method. Doesn't work in Internet Explorer; try it in one of Opera, Firefox, Safari, Chromium etc.
<langsyntaxhighlight lang="css"><!DOCTYPE html>
<html>
<head>
Line 1,557 ⟶ 1,767:
</head>
<body></body>
</html></langsyntaxhighlight>
 
=={{header|Huginn}}==
<langsyntaxhighlight lang="huginn">#! /bin/sh
exec huginn --no-argv -E "${0}"
#! huginn
Line 1,578 ⟶ 1,788:
)
);
}</langsyntaxhighlight>
 
=={{header|Icon}} and {{header|Unicon}}==
<langsyntaxhighlight lang="icon">procedure main();x:="write(\"procedure main();x:=\",image(x));write(x);end"
write("procedure main();x:=",image(x));write(x);end</langsyntaxhighlight>
 
=={{header|Inform 7}}==
<langsyntaxhighlight lang="inform7">R is a room. To quit: (- quit; -). When play begins: say entry 1 in Q; say Q in brace notation; quit. Q is a list of text variable. Q is {"R is a room. To quit: (- quit; -). When play begins: say entry 1 in Q; say Q in brace notation; quit. Q is a list of text variable. Q is "}</langsyntaxhighlight>
 
=={{header|Insitux}}==
<syntaxhighlight lang="insitux">(#(join(char-code 34)[% %(char-code 41)])"(#(join(char-code 34)[% %(char-code 41)])")</syntaxhighlight>
 
=={{header|INTERCAL}}==
Line 1,591 ⟶ 1,804:
 
=={{header|Io}}==
<syntaxhighlight lang ="io">thisMessage print</langsyntaxhighlight>
 
=={{header|J}}==
Technically, the empty program in J is a quine, as it has an empty result. For example:
 
<langsyntaxhighlight Jlang="j">
</syntaxhighlight>
</lang>
 
Also, many many numbers in J are quines. For example (result not shown, here, for clarity):
<syntaxhighlight lang J="j">0 </langsyntaxhighlight>
 
Note: this implementation assumes that J is being used interactively. If J is being used in a command line script, having the script read and output itself would be a better approach. And it's not clear whether quines are a relevant concept in a none textual context (such as a windowing environment).
Line 1,611 ⟶ 1,824:
Author: Bertram Felgenhauer
<div style="width:100%;overflow:scroll">
<langsyntaxhighlight lang="java">class S{public static void main(String[]a){String s="class S{public static void main(String[]a){String s=;char c=34;System.out.println(s.substring(0,52)+c+s+c+s.substring(52));}}";char c=34;System.out.println(s.substring(0,52)+c+s+c+s.substring(52));}}</langsyntaxhighlight>
</div>
 
{{works with|Java|1.5+}}
<div style="width:100%;overflow:scroll">
<langsyntaxhighlight lang="java">class S{public static void main(String[]a){String p="class S{public static void main(String[]a){String p=%c%s%1$c;System.out.printf(p,34,p);}}";System.out.printf(p,34,p);}}</langsyntaxhighlight>
</div>
 
=={{header|JavaScript}}==
{{works with|SpiderMonkey}} 1.7.0
<langsyntaxhighlight lang="javascript">(function(){print("("+arguments.callee.toString().replace(/\s/g,'')+")()");})()</langsyntaxhighlight>
 
=== Using eval ===
{{works with|SpiderMonkey}} 1.7.0
This version doesn't use arguments.callee.toString() to return the string representation of itself. Instead, it relies on eval().
<langsyntaxhighlight lang="javascript">var code='var q=String.fromCharCode(39);print("var code="+q+code+q+";eval(code)")';eval(code)</langsyntaxhighlight>
 
=== Replacing String ===
<langsyntaxhighlight JavaScriptlang="javascript">(function(){str=["(function(){str=[F].join(String.fromCharCode(34));str=str.replace(/F/,String.fromCharCode(34)+str+String.fromCharCode(34));console.log(str)})()"].join(String.fromCharCode(34));str=str.replace(/F/,String.fromCharCode(34)+str+String.fromCharCode(34));console.log(str)})()</langsyntaxhighlight>
 
=== encodeURI as string escapes ===
Functions like <code>encodeURI/decodeURI</code> benefit js with highly controllable string escapes, like the quotes, newlines, etc. Thus, the following js-flavored quine requires no explicit or implicit <code>stringify</code>, <code>eval</code> or template literals functionalities:
<syntaxhighlight lang="javascript">let x="let x=%22quinner%22; alert(decodeURI(x).replace(%22quinner%22, x));"; alert(decodeURI(x).replace("quinner", x));
</syntaxhighlight>
 
===Code As Data===
Line 1,635 ⟶ 1,853:
ES6 expression that evaluates to the expression (<code>eval(expression) === expression</code>)
 
<langsyntaxhighlight lang="javascript">(($)=>$+JSON.stringify($)+")")("(($)=>$+JSON.stringify($)+\")\")(")</langsyntaxhighlight>
 
ES5 version of above
<langsyntaxhighlight lang="javascript">(function($){return $+JSON.stringify($)+")"})("(function($){return $+JSON.stringify($)+\")\"})(")</langsyntaxhighlight>
 
prints itself via <code>console.log</code> (note <code>console.log</code> is not in the ECMAScript Standard)
<langsyntaxhighlight lang="javascript">q=`%3Bconsole.log(%60q%3D%5C%60%24%7Bq%7D%5C%60%60%2BdecodeURIComponent(q))`;console.log(`q=\`${q}\``+decodeURIComponent(q))</langsyntaxhighlight>
 
===Another Method===
<langsyntaxhighlight lang="javascript">var a=function () {var b="var a="+a.toString()+"\;a()";alert(b)};a()</langsyntaxhighlight>
 
===A simple module which simply evaluates to itself===
 
<langsyntaxhighlight lang="javascript">(function f() {
return '(' + f.toString() + ')();';
})();</langsyntaxhighlight>
 
{{Out}}
 
<langsyntaxhighlight lang="javascript">(function f() {
 
return '(' + f.toString() + ')();';
})();</langsyntaxhighlight>
 
===Or logs itself to the console===
<langsyntaxhighlight lang="javascript">(function f() {
 
console.log('(' + f.toString() + ')();');
 
})();</langsyntaxhighlight>
 
{{Out}}
Line 1,678 ⟶ 1,896:
===ES6 syntax===
 
<langsyntaxhighlight lang="javascript">(f=_=>`(f=${f})()`)()</langsyntaxhighlight>
 
with 2 statements:
 
<langsyntaxhighlight lang="javascript">f=_=>`f=${f};f()`;f()</langsyntaxhighlight>
 
===ASCII Art===
 
<langsyntaxhighlight lang="javascript"> q=u=>(`in equinequ inequinequinequinequinequi nequinequinequinequinequinequi
nequinequineq uinequin equinequinequinequinequineq uinequinequinequinequinequineq
uinequinequinequi nequineq uinequinequinequinequinequin equinequinequinequinequinequin
Line 1,703 ⟶ 1,921:
uinequinequine quinequin equinequinequinequ inequinequinequinequinequineq
uineq`,
e);q()</langsyntaxhighlight>
 
=={{header|Joy}}==
<langsyntaxhighlight Joylang="joy">"dup put putchars 10 putch." dup put putchars 10 putch.</langsyntaxhighlight>
 
=={{header|Jsish}}==
Based on Javascript eval solution.
<langsyntaxhighlight lang="javascript">var code='var q=String.fromCharCode(39);puts("var code="+q+code+q+";eval(code)")';eval(code)</langsyntaxhighlight>
{{out}}
Double test, run quine.jsi output through the jsish argument evaluator:
Line 1,717 ⟶ 1,935:
 
=={{header|Julia}}==
<langsyntaxhighlight Julialang="julia">x="println(\"x=\$(repr(x))\\n\$x\")"
println("x=$(repr(x))\n$x")</langsyntaxhighlight>
 
In Julia, <tt>$x</tt> in a string literal interpolates the value of the variable into the string.
Line 1,728 ⟶ 1,946:
=={{header|Kotlin}}==
The following is based on the classic C quine but makes use of Kotlin's 'raw' (i.e. triple quoted) string literals.
<langsyntaxhighlight lang="scala">// version 1.1.2
 
const val F = """// version 1.1.2
Line 1,741 ⟶ 1,959:
fun main(args: Array<String>) {
System.out.printf(F, 34, 34, 34, F, 34, 34, 34)
}</langsyntaxhighlight>
 
=={{header|Lambdatalk}}==
<langsyntaxhighlight lang="scheme">{{lambda {:x} :x} '{lambda {:x} :x}}
-> {lambda {:x} :x}</langsyntaxhighlight>
 
=={{header|Lang}}==
<syntaxhighlight lang="lang"># Execute in command line without any arguments except this Lang file
lang.name = Quine
lang.version = v1.0.0
 
$h = {{{# Execute in command line without any arguments except this Lang file
lang.name = Quine
lang.version = v1.0.0}}}
$s = {{{func.printf($h\n\n\$h \= %s{{%s}}%s\n\$s \= %s{{%s}}%s\n%s, {, $h, }, {, $s, }, $s)}}}
func.printf($h\n\n\$h \= %s{{%s}}%s\n\$s \= %s{{%s}}%s\n%s, {, $h, }, {, $s, }, $s)</syntaxhighlight>
 
=={{header|Lasso}}==
Line 1,751 ⟶ 1,980:
In template mode, any text that doesn't include Lasso tags is a trivial quine, because it is passed through unmodified by the interpreter. But here is a more traditional quine:
 
<langsyntaxhighlight lang="lasso">var(a=(:10,39,118,97,114,40,97,61,40,58,39,10,36,97,45,62,106,111,105,110,40,39,44,39,41,10,39,41,41,39,10,118,97,114,40,98,61,98,121,116,101,115,41,10,36,97,45,62,102,111,114,101,97,99,104,32,61,62,32,123,32,36,98,45,62,105,109,112,111,114,116,56,98,105,116,115,40,35,49,41,32,125,10,36,98,45,62,97,115,83,116,114,105,110,103))
'var(a=(:'
$a->join(',')
Line 1,757 ⟶ 1,986:
var(b=bytes)
$a->foreach => { $b->import8bits(#1) }
$b->asString</langsyntaxhighlight>
 
=={{header|LDPL}}==
<langsyntaxhighlight lang="ldpl">DATA:
A IS NUMBER VECTOR
C IS TEXT
Line 2,502 ⟶ 2,731:
STORE 704 IN N
 
CALL SUB-PROCEDURE SHOW</langsyntaxhighlight>
 
=={{header|Liberty BASIC}}==
<langsyntaxhighlight lang="lb">s$ = "s$ = : Print Left$(s$, 5) + chr$(34) + s$ + chr$(34) + Mid$(s$, 5)" : Print Left$(s$, 5) + chr$(34) + s$ + chr$(34) + Mid$(s$, 5)</langsyntaxhighlight>
 
=={{header|LIL}}==
Line 2,516 ⟶ 2,745:
Source from a file read from lil when the shell is invoked ''gets a little trickier''. The interactive shell wraps code read from files which changes '''this'''. So, as a testament to ease of embedding, here's a new non-interactive LIL one liner shell so we can '''write [reflect this]'''.
 
<langsyntaxhighlight lang="c">/*
One line of LIL, given as argv[1]
Tectonics: gcc -o lilone lilone.c lil.c -lm
Line 2,533 ⟶ 2,762:
lil_free(lil);
return 0;
}</langsyntaxhighlight>
 
{{out}}
Line 2,562 ⟶ 2,791:
=={{header|Lisp}}==
Lisp has a mechanism to ''quote'' code without the need to use strings:
<langsyntaxhighlight lang="lisp">((lambda (x) (list x (list 'quote x)))
'(lambda (x) (list x (list 'quote x))))</langsyntaxhighlight>
 
=={{header|Logo}}==
Somewhat brute-force..
<langsyntaxhighlight lang="logo">make "a [ 116 121 112 101 32 34 124 109 97 107 101 32 34 97 32 91 124 10 102 111 114 101 97 99 104 32 58 97 32 91 32 116 121 112 101 32 119 111 114 100 32 34 124 32 124 32 63 32 93 10 112 114 105 110 116 32 34 124 32 93 124 10 102 111 114 101 97 99 104 32 58 97 32 91 32 116 121 112 101 32 99 104 97 114 32 63 32 93 10 98 121 101 10 ]
type "|make "a [|
foreach :a [ type word "| | ? ]
print "| ]|
foreach :a [ type char ? ]
bye</langsyntaxhighlight>
 
=={{header|Lua}}==
<langsyntaxhighlight lang="lua">s=[[io.write('s=[','[',s,']','];',s)]];io.write('s=[','[',s,']','];',s)</langsyntaxhighlight>
 
=={{header|M2000 Interpreter}}==
<syntaxhighlight lang="m2000 interpreter">
Module Alfa {
Rem {This Program Show itself in Help Form}
inline "help "+quote$(module.name$)
}
Alfa
</syntaxhighlight>
=={{header|M4}}==
 
 
<langsyntaxhighlight lang="m4">define(`quine',``$1(`$1')'')dnl
quine(`define(`quine',``$1(`$1')'')dnl
quine')</langsyntaxhighlight>
 
=={{header|make}}==
 
<syntaxhighlight lang="make">quine=$(info quine=$(value quine))$(info $$(quine))$(eval quine:;@:)
$(quine)</syntaxhighlight>
 
=={{header|Mathematica}}/{{header|Wolfram Language}}==
<langsyntaxhighlight Mathematicalang="mathematica">a="Print[\"a=\",InputForm[a],\";\",a]";Print["a=",InputForm[a],";",a]</langsyntaxhighlight>
 
or
 
<langsyntaxhighlight Mathematicalang="mathematica">a := Print[InputForm[Definition[a]], ";a"];a</langsyntaxhighlight>
 
or
 
<langsyntaxhighlight Mathematicalang="mathematica">(#1[#0[#1]] &)[Defer]</langsyntaxhighlight>
 
or
 
<langsyntaxhighlight Mathematicalang="mathematica">ToString[#0][] & []</langsyntaxhighlight>
 
or
 
<syntaxhighlight lang Mathematica="mathematica">Unevaluated[1989 - 1989]</langsyntaxhighlight>
 
or
 
<syntaxhighlight lang Mathematica="mathematica">x</langsyntaxhighlight> :)
 
=={{header|MATLAB}} / {{header|Octave}}==
This script runs either from an m-file or directly from workspace (author: J. C. Lucero):
<langsyntaxhighlight Matlablang="matlab">x='{>\(y>(((-y-(((<(^<ejtq)\{-y.2^*<';z=['x=''',x,''';'];disp([z,x-1]);</langsyntaxhighlight>
 
----
 
The example works for functions and scripts stored as m-files. It does not work for functions defined only in the workspace.
<langsyntaxhighlight Matlablang="matlab"> function quine()
fid = fopen([mfilename,'.m']);
while ~feof(fid)
Line 2,620 ⟶ 2,862:
end;
fclose(fid);
end;</langsyntaxhighlight>
or
<langsyntaxhighlight Matlablang="matlab"> function quine()
type(mfilename);
end;</langsyntaxhighlight>
 
Without accessing the file:
<langsyntaxhighlight Matlablang="matlab">function quine; y = 'function quine; y = %c%s%c; fprintf(1, y, 39, y, 39)\n'; fprintf(1, y, 39, y, 39)</langsyntaxhighlight>
 
=={{header|Maxima}}==
<syntaxhighlight lang="maxima">
<lang maxima>/* Using ?format from the unerlying Lisp system */
/* Using ?format from the underlying Lisp system */
 
lambda([],block([q:ascii(34),s:"lambda([],block([q:ascii(34),s:~A~A~A],print(?format(false,s,q,s,q))))()$"],print(?format(false,s,q,s,q))))()$</lang>
</syntaxhighlight>
 
=={{header|MiniScript}}==
A simple one-liner:
<langsyntaxhighlight MiniScriptlang="miniscript">s="s=;print s[:2]+char(34)+s+char(34)+s[2:]";print s[:2]+char(34)+s+char(34)+s[2:]</langsyntaxhighlight>
 
A multi-line version; and in this version, the hash character (ASCII code 35) is used to indicate where the string constant goes in the source. Also, semicolons (ASCII code 59) are used in this case as arbitrary line break indicators.
<langsyntaxhighlight MiniScriptlang="miniscript">Q=char(34)
s="Q=char(34);s=#;for line in s.split(char(59)); print line.replace(char(35),Q+s+Q);end for"
for line in s.split(char(59))
print line.replace(char(35),Q+s+Q)
end for</langsyntaxhighlight>
 
=={{header|Modula-2}}==
<langsyntaxhighlight lang="modula2">MODULE Quine;
FROM FormatString IMPORT FormatString;
FROM Terminal IMPORT WriteString,ReadChar;
Line 2,656 ⟶ 2,900:
WriteString(buf);
ReadChar
END Quine.</langsyntaxhighlight>
 
=={{header|MUMPS}}==
<langsyntaxhighlight MUMPSlang="mumps">QUINE
NEW I,L SET I=0
FOR SET I=I+1,L=$TEXT(+I) Q:L="" WRITE $TEXT(+I),!
Line 2,666 ⟶ 2,910:
 
SMALL
S %=0 F W $T(+$I(%)),! Q:$T(+%)=""</langsyntaxhighlight>
Both of the routines will work, but the second has the minor advantage of only using one variable instead of two.
 
=={{header|NASM}}==
Compiles to the source code when -f raw
<langsyntaxhighlight ASMlang="asm">%define a "%define "
%define b "db "
%define c "%deftok "
%define d "a, 97, 32, 34, a, 34, 10, a, 98, 32, 34, b, 34, 10, a, 99, 32, 34, c, 34, 10, a, 100, 32, 34, d, 34, 10, c, 101, 32, 100, 10, b, 101, 10"
%deftok e d
db e</langsyntaxhighlight>
 
=={{header|NetRexx}}==
<langsyntaxhighlight NetRexxlang="netrexx">/* NetRexx */
options replace format comments java crossref savelog symbols nobinary
 
Line 2,792 ⟶ 3,036:
say pgm
 
return</langsyntaxhighlight>
 
=={{header|NewLISP}}==
<langsyntaxhighlight NewLISPlang="newlisp">(lambda (s) (print (list s (list 'quote s))))</langsyntaxhighlight>
 
=={{header|Nim}}==
 
The empty program is a quine in Nim:
<lang nim></lang>
 
Another quine:
<langsyntaxhighlight lang="nim">var x = "var x = echo x[0..7],chr(34),x,chr(34),chr(10),x[8 .. ^1]"
echo x[0..7],chr(34),x,chr(34),chr(10),x[8 .. ^1]</langsyntaxhighlight>
 
Another one:
<langsyntaxhighlight lang="nim">import strutils; let a = "import strutils; let a = $#; echo a % (chr(34) & a & chr(34))"; echo a % (chr(34) & a & chr(34))</langsyntaxhighlight>
 
This quine prints its own sourcecode at compiletime as well as at runtime:
<langsyntaxhighlight lang="nim">const x = "const x = |const y = x[0..9]&34.chr&x&34.chr&10.chr&x[11..100]&10.chr&x[102..115]&10.chr&x[117 .. ^1]|static: echo y|echo y"
const y = x[0..9]&34.chr&x&34.chr&10.chr&x[11..100]&10.chr&x[102..115]&10.chr&x[117 .. ^1]
static: echo y
echo y</langsyntaxhighlight>
Compile with: nim --verbosity:0 c quine
 
=={{header|NS-HUBASIC}}==
<syntaxhighlight lang NS="ns-HUBASIChubasic">10 LIST</langsyntaxhighlight>
 
=={{header|Oberon-2}}==
<syntaxhighlight lang="oberon2">MODULE M;
IMPORT O:=Out;
CONST
T=";PROCEDURE c*;BEGIN O.Char(22X);O.String(T) END c;BEGIN O.String('MODULE M;IMPORT O:=Out;CONST T=');c END M.";
 
PROCEDURE c*;
BEGIN
O.Char(22X);O.String(T)
END c;
 
BEGIN
O.String('MODULE M;IMPORT O:=Out;CONST T=');
c
END M.</syntaxhighlight>
 
=={{header|Objeck}}==
<langsyntaxhighlight lang="ocaml">class Program { function : Main(args : String[]) ~ Nil { s := "class Program { function : Main(args : String[]) ~ Nil { s :=; IO.Console->Print(s->SubString(61))->Print(34->As(Char))->Print(s)->Print(34->As(Char))->PrintLine(s->SubString(61, 129)); } }"; IO.Console->Print(s->SubString(61))->Print(34->As(Char))->Print(s)->Print(34->As(Char))->PrintLine(s->SubString(61, 129)); } }</langsyntaxhighlight>
 
=={{header|OCaml}}==
(newline included)
<langsyntaxhighlight lang="ocaml">(fun p -> Printf.printf p (string_of_format p)) "(fun p -> Printf.printf p (string_of_format p)) %S;;\n";;</langsyntaxhighlight>
 
Alternative:
(newline included)
<langsyntaxhighlight lang="ocaml">(fun s -> Printf.printf "%s%S;;\n" s s) "(fun s -> Printf.printf \"%s%S;;\\n\" s s) ";;</langsyntaxhighlight>
 
=={{header|Oforth}}==
 
<langsyntaxhighlight Oforthlang="oforth">"dup 34 emit print 34 emit BL emit print" dup 34 emit print 34 emit BL emit print</langsyntaxhighlight>
 
=={{header|Ol}}==
Like others Lisps,
<langsyntaxhighlight lang="scheme">((lambda (s) (display (list s (list (quote quote) s)))) (quote (lambda (s) (display (list s (list (quote quote) s))))))</langsyntaxhighlight>
 
=={{header|ooRexx}}==
 
===Cheating===
<syntaxhighlight lang ooRexx="oorexx">say sourceline(1)</langsyntaxhighlight>
 
===Non-Cheating, with INTERPRET===
<langsyntaxhighlight ooRexxlang="oorexx">r="say'r='x2c(22)r||22~x2c';interpret r'";interpret r</langsyntaxhighlight>
 
===Non-Cheating, without INTERPRET===
<langsyntaxhighlight ooRexxlang="oorexx">r=";say'r=.'r'.'r~changestr(.,'22'x,2)";say'r="'r'"'r~changestr(.,'22'x,2)</langsyntaxhighlight>
 
===Non-Cheating, without INTERPRET, with unprintable characters===
Line 2,855 ⟶ 3,112:
 
The two unprintable characters are '07'x. Somewhat difficult to enter, but still a perfectly valid ooRexx program (and Quine).
<langsyntaxhighlight ooRexxlang="oorexx">r=";say'r=�'r'�'r~bitor(,' ')";say'r="'r'"'r~bitor(,' ')</langsyntaxhighlight>
 
=={{header|OxygenBasic}}==
<langsyntaxhighlight lang="oxygenbasic">'RUNTIME COMPILING
 
source="print source"
 
a=compile source : call a : freememory a</langsyntaxhighlight>
 
=={{header|Oz}}==
A one-liner that uses the ASCII code for <code>"</code> to avoid "quoted quotes". We put the value assignment to the end by using multithreading and implicit synchronization on the dataflow variable <code>I</code>.
<langsyntaxhighlight lang="oz">declare I in thread {System.showInfo I#[34]#I#[34]} end I ="declare I in thread {System.showInfo I#[34]#I#[34]} end I ="</langsyntaxhighlight>
 
=={{header|PARI/GP}}==
<syntaxhighlight lang ="parigp">()->quine</langsyntaxhighlight>
 
Assign this source code to variable quine:
<langsyntaxhighlight lang="parigp">quine=()->quine</langsyntaxhighlight>
 
Output of interpreter:<pre>gp > quine
Line 2,887 ⟶ 3,144:
=={{header|Pascal}}==
A modification of one Pascal example (Author: Oliver Heen) from http://www.nyx.net/~gthompso/self_pasc.txt. This example includes newline at the end.
<langsyntaxhighlight lang="pascal">const s=';begin writeln(#99#111#110#115#116#32#115#61#39,s,#39,s)end.';begin writeln(#99#111#110#115#116#32#115#61#39,s,#39,s)end.</langsyntaxhighlight>
 
This version does compile in Free Pascal and UCSD Pascal. Newline included.
<langsyntaxhighlight lang="pascal">program Quine(Output);const A='program Quine(Output);const A=';B='begin writeln(A,char(39),A,char(39),char(59),char(66),char(61),char(39),B,char(39),char(59),B)end.';begin writeln(A,char(39),A,char(39),char(59),char(66),char(61),char(39),B,char(39),char(59),B)end.</langsyntaxhighlight>
 
A quality quine should not depend on a particular character set. This version also works on systems limited to 80-character lines and on legacy word-based systems which require literal strings to be packed and of a fixed size if assigned to an array.
<langsyntaxhighlight lang="pascal">program main(output);type string=packed array[1..60]of char;
var l:array[1..9]of string; c:array[1..7]of char; i:integer;
lc, a, o, k, n, e, s, t:char; begin
Line 2,912 ⟶ 3,169:
writeln(a, t, n, e, lc, lc, lc, lc, s);
for i := 1 to 7 do write(t,o,i:1,k,n,e,lc,c[i],lc,s);
writeln; for i := 4 to 9 do writeln(l[i]); end.</langsyntaxhighlight>
 
=={{header|Perl}}==
This relatively simple Perl example imitates the C example.
<langsyntaxhighlight lang="perl">$s = q($s = q(%s); printf($s, $s);
); printf($s, $s);
</syntaxhighlight>
</lang>
Note the terminating newline.
 
===Self-reading (some consider cheating)===
Accessing source code via <code>DATA</code> filehandle:<langsyntaxhighlight Perllang="perl">seek(DATA, 0, 0);
print <DATA>
__DATA__</langsyntaxhighlight>
even simpler:
<langsyntaxhighlight Perllang="perl">open ME, $0 and print <ME>;</langsyntaxhighlight>
<syntaxhighlight lang Perl="perl">open 0; print <0>;</langsyntaxhighlight>
 
===Quine Generator===
 
Perhaps the simplest quine in Perl 5 is:
<langsyntaxhighlight Perllang="perl">$_=q{print"\$_=q{$_};eval"};eval</langsyntaxhighlight>
By carefully examining the code, you will find that you can insert any valid perl sentences before and after the print statement in q{}.
It is just a few lines of codes away before you come up with a quine generator that turns a given perl script into a quine. Note this quine generator itself is a quine.
Line 2,939 ⟶ 3,196:
 
 
<langsyntaxhighlight Perllang="perl">{local$_=q{
{
package Quine;
Line 2,985 ⟶ 3,242:
=cut
}
return 1 if caller(1);print"{local\$_=q{$_};eval}\n"};eval}</langsyntaxhighlight>
 
=={{header|Phix}}==
Credit: Aidan Bindoff
<!--<langsyntaxhighlight Phixlang="phix">(phixonline)-->
<span style="color: #008080;">constant</span> <span style="color: #000000;">c</span><span style="color: #0000FF;">=</span><span style="color: #008000;">"constant c=%sprintf(1,c,{34&c&34})"</span><span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #000000;">c</span><span style="color: #0000FF;">,{</span><span style="color: #000000;">34</span><span style="color: #0000FF;">&</span><span style="color: #000000;">c</span><span style="color: #0000FF;">&</span><span style="color: #000000;">34</span><span style="color: #0000FF;">})</span>
<!--</langsyntaxhighlight>-->
 
=={{header|PHP}}==
{{trans|C}}
<langsyntaxhighlight lang="php"><?php $p = '<?php $p = %c%s%c; printf($p,39,$p,39); ?>
'; printf($p,39,$p,39); ?></langsyntaxhighlight>
Note the terminating newline.
 
Line 3,006 ⟶ 3,263:
===Using 'quote'===
Note that 'quote' in PicoLisp corresponds to 'lambda' in other Lisps
<langsyntaxhighlight PicoLisplang="picolisp">('((X) (list (lit X) (lit X))) '((X) (list (lit X) (lit X))))</langsyntaxhighlight>
{{out}}
<pre>-> ('((X) (list (lit X) (lit X))) '((X) (list (lit X) (lit X))))</pre>
 
===Using 'let'===
<langsyntaxhighlight PicoLisplang="picolisp">(let X '(list 'let 'X (lit X) X) (list 'let 'X (lit X) X))</langsyntaxhighlight>
{{out}}
<pre>-> (let X '(list 'let 'X (lit X) X) (list 'let 'X (lit X) X))</pre>
Line 3,017 ⟶ 3,274:
=={{header|PL/I}}==
The following code, containing 709 significant bytes, compiles completely clean using the old MVS PL/I V2.3.0 Compiler, using the default 2,72,1 margins:
<langsyntaxhighlight PLlang="pl/Ii"> s:proc options(main)reorder;dcl sysprint file,m(7)init(
' s:proc options(main)reorder\dcl sysprint file,m(7)init(',
' *)char(99),i,j,(translate,substr)builtin,c char\i=1\j=n',
Line 3,028 ⟶ 3,285:
(m(i),j);put edit(c)(a);n:proc;put list(translate(m(i),
'5e'x,'e0'x));end n;if c='''' then put edit(c)(a);end;
put edit(''',')(a(50));end;do i=2 to 6;j=n;end;end s;</langsyntaxhighlight>
 
An even smaller version (believed to be the smallest possible PL/I Quine), containing 326 significant bytes, shows the unique capabilities of the same old V2.3.0 compiler in being able to generate correct code, ovecoming 2 pre-processor errors, 8 severe errors, 10 errors, 6 warnings and 2 informational messages. It requires the following non-default compile options, 'M,MAR(1,90),C'.
<langsyntaxhighlight PLlang="pl/Ii">%dcl z%z='put edit';proc options(main;q=''''put list(m;do i=1,2;z(q)skip;do j=
1to 78c=substr(m(i),j;if c=q z(c;z(c;end;z(q',';dcl(c,q)char,m(2)char(99)init(
'%dcl z%z=''put edit'';proc options(main;q=''''''''put list(m;do i=1,2;z(q)skip;do j=',
'1to 78c=substr(m(i),j;if c=q z(c;z(c;end;z(q'','';dcl(c,q)char,m(2)char(99)init(',</langsyntaxhighlight>
 
The equivalent version that compiles with the newer z/OS Enterprise PL/I compilers, coming in at 434 significant bytes and requiring the following two compiler options, 'm,margins(1,80,0)', is:
<langsyntaxhighlight PLlang="pl/Ii">%dcl z;%z="put edit";w:proc options(main);q="'";put list(m)do i=1,2,3;z
(q)(a)skip;do j=1to 71;c=substr(m(i),j)if c=q then z(c)(a)z(c)(a)end;if
i<3then z(q,",")(a)else z(q,";")(a)end;dcl(c,q)char,m(3)char(99)init(
'%dcl z;%z="put edit";w:proc options(main);q="''";put list(m)do i=1,2,3;z',
'(q)(a)skip;do j=1to 71;c=substr(m(i),j)if c=q then z(c)(a)z(c)(a)end;if',
'i<3then z(q,",")(a)else z(q,";")(a)end;dcl(c,q)char,m(3)char(99)init( ';</langsyntaxhighlight>
 
=={{header|PlainTeX}}==
===Output to terminal===
This assumes the filename of the source file to be ‘q.tex’, and the banner from vanilla Knuth’s TeX:
<langsyntaxhighlight plainTeXlang="plaintex">This is TeX, Version 3.1415926 (no format preloaded)
(q.tex \output {\message {\output \the \output \end }\batchmode }\end </langsyntaxhighlight>
===Output to dvi===
<langsyntaxhighlight plainTeXlang="plaintex"> \let~\expandafter\def\0{~\ttraggedright~\let~\s~\string~\def~~~[[User:Wodan58|Wodan58]] ([[User talk:Wodan58|talk]]){~\s~~~[[User:Wodan58|Wodan58]] ([[User talk:Wodan58|talk]])\s~}~\output~
~{~}~\s~\let~~~[[User:Wodan58|Wodan58]] ([[User talk:Wodan58|talk]])\expandafter~\s~\def~\s~\0~\s~{~\0~\s~}~\s~\0~\end}\0</langsyntaxhighlight>
 
=={{header|Pony}}==
<langsyntaxhighlight lang="pony">actor Main
new create(env: Env) =>
let a = """env.out.print("actor Main\nnew create(env: Env) =>\nlet a = \"\"\""+a+"\"\"\"\n"+a)"""
env.out.print("actor Main\nnew create(env: Env) =>\nlet a = \"\"\""+a+"\"\"\"\n"+a)</langsyntaxhighlight>
 
=={{header|PowerBASIC}}==
This is ''technically'' based on the [[#BASIC|BASIC]] code above, but is in fact a complete rewrite.
<langsyntaxhighlight lang="powerbasic">FUNCTION PBMAIN () AS LONG
REDIM s(1 TO DATACOUNT) AS STRING
o$ = READ$(1)
Line 3,099 ⟶ 3,356:
DATA " CLOSE"
DATA "END FUNCTION"
END FUNCTION</langsyntaxhighlight>
 
=={{header|PowerShell}}==
{{works with|PowerShell|2}}
Adapted from Liberty BASIC.
<langsyntaxhighlight PowerShelllang="powershell">$S = '$S = $S.Substring(0,5) + [string][char]39 + $S + [string][char]39 + [string][char]10 + $S.Substring(5)'
$S.Substring(0,5) + [string][char]39 + $S + [string][char]39 + [string][char]10 + $S.Substring(5)</langsyntaxhighlight>
{{out}}
<pre>
Line 3,113 ⟶ 3,370:
<br><b>Variations to access the code directly</b><br><br>
<b>In a saved script</b>
<syntaxhighlight lang PowerShell="powershell">$MyInvocation.MyCommand.ScriptContents</langsyntaxhighlight>
<b>At the command line</b>
<syntaxhighlight lang PowerShell="powershell">$MyInvocation.MyCommand.Definition</langsyntaxhighlight>
<b>In a function</b>
<langsyntaxhighlight PowerShelllang="powershell">function Quine { $MyInvocation.MyCommand.Definition }</langsyntaxhighlight>
 
=={{header|Processing}}==
Line 3,125 ⟶ 3,382:
 
{{works with|Processing}}
<langsyntaxhighlight Processinglang="processing">String p="String p=%c%s%1$c;System.out.printf(p,34,p);";System.out.printf(p,34,p);</langsyntaxhighlight>
 
This takes advantage of the fact that Processing does not require a wrapping class or main method (unlike the Java it is based on). Further, Processing "immediate mode" without setup() or draw() methods does not require a method or function at all, and instead can compile and run direct commands. Processing normally uses "print", and calling the undocumented "System.out.printf" from Java is not idiomatic. However that is used here because it gives easy access to string templating. In printf(p,34,p) the template p is passed two arguments: 34 is inserted into %c and the back-reference %1$c, where they each become an ASCII quote character, while p (itself) is inserted at %s.
Line 3,133 ⟶ 3,390:
 
{{works with|Processing|2.x+}}
<langsyntaxhighlight Processinglang="processing">int o=12,i=0;
void setup(){size(480,240);noLoop();}void draw(){background(0);
String[] c = {
Line 3,150 ⟶ 3,407:
for(i=0;i<9;i++)text(char(34)+c[i]+char(34)+',',o*3,o*(i+1+3));
saveFrame();
}</langsyntaxhighlight>
 
The code uses a line offset o of 12px for laying out lines of text using the default 10px white font. It reuses a global int i across all three loops to save a bit of space and to take advantage of non-linear drawing to the screen: the outer lines 0-3 and 4-9 are drawn in the first and second loops without resetting i, then the inner lines 0-9 are drawn between them in the third loop.
Line 3,156 ⟶ 3,413:
=={{header|Prolog}}==
One method to produce a quine is to read the data structures that hold the source code:
<langsyntaxhighlight Prologlang="prolog">quine :-
listing(quine).</langsyntaxhighlight>
 
Producing a quine without cheating is more complex. The following program produces a data structure equivalent to the program itself, then outputs it:
 
<langsyntaxhighlight Prologlang="prolog">quine:-asserta(a((quine:-asserta(a(A,B)),a(C,D+E),a(D,E),numbervars(C),write(C),write(.)),A+B)),a(F,G+H),a(G,H),numbervars(F),write(F),write(.).</langsyntaxhighlight>
 
The use of <tt>numbervars</tt> is a GNU Prolog extension that fixes the variable names in the output to be single letters, in alphabetical order by appearance, and thus match the original program. Removing it, the quine still works, but the variable names in the output will probably be different; thus, it will produce a program equivalent to itself, rather than an exact copy of itself.
Line 3,167 ⟶ 3,424:
A version that is source-code-centric rather than AST-centric, and does not rely on any built-in facilities for formatted printing, might look as follows:
 
<langsyntaxhighlight Prologlang="prolog">% Tested with SWI-Prolog version 7.1.37
:- initialization(main).
 
Line 3,278 ⟶ 3,535:
main :- (quine(Q), write(Q);true),halt.
% line break in the end of file is important
</syntaxhighlight>
</lang>
It could be made shorter. This version contains some introns that have been used for code generation (like the encode/2 predicate, that is not really needed).
 
Using format/2 predicate:
<langsyntaxhighlight Prologlang="prolog">main:-X='main:-X=~q,format(X,X).',format(X,X).</langsyntaxhighlight>
 
=={{header|PureBasic}}==
<langsyntaxhighlight PureBasiclang="purebasic">s$="s$= : Debug Mid(s$,1,3)+Chr(34)+s$+Chr(34)+Mid(s$,4,100)" : Debug Mid(s$,1,3)+Chr(34)+s$+Chr(34)+Mid(s$,4,100)</langsyntaxhighlight>
 
=={{header|Python}}==
Line 3,292 ⟶ 3,549:
A simple and straightforward quine. Character chr(34) is a double quote, and chr(10) is a new line (Author: J. C. Lucero).
<langsyntaxhighlight lang="python">w = "print('w = ' + chr(34) + w + chr(34) + chr(10) + w)"
print('w = ' + chr(34) + w + chr(34) + chr(10) + w)</langsyntaxhighlight>
 
----
Line 3,299 ⟶ 3,556:
{{works with|Python|2.x and 3.x}}
Python's <tt>%r</tt> format conversion uses the <tt>repr()</tt> function to return a string containing the source code representation of its argument:
<langsyntaxhighlight lang="python">x = 'x = %r\nprint(x %% x)'
print(x % x)</langsyntaxhighlight>
 
{{works with|Python|3.x and 2.6+}}
With the new <tt>str.format</tt>:
<langsyntaxhighlight lang="python">x = 'x = {!r};print(x.format(x))';print(x.format(x))</langsyntaxhighlight>
 
{{works with|Python|2.x and 3.x}}
Line 3,310 ⟶ 3,567:
program will spit the code back out on a terminal window:
 
<langsyntaxhighlight lang="python">import sys; sys.stdout.write(open(sys.argv[0]).read())</langsyntaxhighlight>
Note: actually an empty file could be treated as python quine too.
 
{{works with|Python|2.x and 3.x}}
<langsyntaxhighlight lang="python">import sys,inspect;sys.stdout.write(inspect.getsource(inspect.currentframe()))</langsyntaxhighlight>
 
{{works with|Python|3.8+}}
A simple implementation that uses exec, an f-string, and the walrus operator.
<langsyntaxhighlight lang="python">exec(c:="print(f'exec(c:={chr(34)+c+chr(34)})')")</langsyntaxhighlight>
 
----
Line 3,327 ⟶ 3,584:
 
make a program with this single line in it
<syntaxhighlight lang ="python">print(__file__[:-3])</langsyntaxhighlight>
and name the file print(__file__[:-3]).py
 
Line 3,333 ⟶ 3,590:
 
bash example command:
<langsyntaxhighlight lang="bash">$ python print\(__file__\[\:-3\]\).py
print(__file__[:-3])
</syntaxhighlight>
</lang>
 
Python 3, from same thread at same forum, created by wewhgyih, tested by LambertDW. Works on unix and Windows7. On Windows7 I commanded python "print(__file__)" .
<langsyntaxhighlight lang="bash">$ cat print\(__file__\)
print(__file__)
$ python print\(__file__\)
print(__file__)</langsyntaxhighlight>
I saw this clever solution somewhere some time ago (dont' remember the source.) Assuming the input does not have to be a correct program...
<syntaxhighlight lang="text">$ cat reproducing.py
File "reproducing.py", line 1
File "reproducing.py", line 1
Line 3,353 ⟶ 3,610:
File "reproducing.py", line 1
^
IndentationError: unexpected indent</langsyntaxhighlight>
 
----
Line 3,359 ⟶ 3,616:
Here's a few by me (Nathaniel Virgo). They represent attempts to make clean, readable "Pythonic" quines. The first one is straightforward, using format and chr(34) to construct a multiline string:
 
<langsyntaxhighlight lang="python">x = """x = {0}{1}{0}
print x.format(chr(34)*3,x)"""
print x.format(chr(34)*3,x)</langsyntaxhighlight>
 
This next one uses a base64 encoding, which is an off-the-shelf way to pack strings containing quotes and newlines etc. into ones that consist only of printable characters. Python purists will probably tell me I should have used the base64 package instead.
 
<langsyntaxhighlight lang="python">a = 'YSA9ICcnCmIgPSBhLmRlY29kZSgnYmFzZTY0JykKcHJpbnQgYls6NV0rYStiWzU6XQ=='
b = a.decode('base64')
print b[:5]+a+b[5:]</langsyntaxhighlight>
 
In the above quine I felt it was inelegant to hard code the insertion of the data after the 5th character and I wondered if I could do it in a cleaner way. Eventually I came up with this:
 
<langsyntaxhighlight lang="python">data = (
'ZGF0YSA9ICgKCSc=',
'JywKCSc=',
Line 3,377 ⟶ 3,634:
)
prefix, separator, suffix = (d.decode('base64') for d in data)
print prefix + data[0] + separator + data[1] + separator + data[2] + suffix</langsyntaxhighlight>
 
Finally, here's one that echoes the classic "Y combinator" way of constructing quines. First we define a function that takes some code, wraps it in a function and then applies than function to its own source code, then we apply *that* function to its own source code:
 
<langsyntaxhighlight lang="python">def applyToOwnSourceCode(functionBody):
print "def applyToOwnSourceCode(functionBody):"
print functionBody
print "applyToOwnSourceCode(" + repr(functionBody) + ")"
applyToOwnSourceCode('\tprint "def applyToOwnSourceCode(functionBody):"\n\tprint functionBody\n\tprint "applyToOwnSourceCode(" + repr(functionBody) + ")"')</langsyntaxhighlight>
 
=={{header|Quackery}}==
Using the Quackery decompiler, ''build''.
 
<langsyntaxhighlight Quackerylang="quackery">[ ' [ ' unbuild dup 4 split rot space rot 3 times join echo$ ] unbuild dup 4 split rot space rot 3 times join echo$ ]</langsyntaxhighlight>
{{Out}}
<pre>[ ' [ ' unbuild dup 4 split rot space rot 3 times join echo$ ] unbuild dup 4 split rot space rot 3 times join echo$ ]</pre>
 
Using self reference, and the decompiler built into ''echo''.
<syntaxhighlight lang Quackery="quackery">[ this echo ]</langsyntaxhighlight>
{{Out}}
<pre>[ this echo ]</pre>
Line 3,401 ⟶ 3,658:
=={{header|R}}==
Adapted from the C version in this list.
<langsyntaxhighlight Rlang="r">(function(){x<-intToUtf8(34);s<-"(function(){x<-intToUtf8(34);s<-%s%s%s;cat(sprintf(s,x,s,x))})()";cat(sprintf(s,x,s,x))})()</langsyntaxhighlight>
 
Another version, perhaps more understandable.
<langsyntaxhighlight Rlang="r">src <- "\nwriteLines(c(paste(\"src <-\", encodeString(src, quote='\"')), src))"
 
writeLines(c(paste("src <-", encodeString(src, quote='"')), src))
</syntaxhighlight>
</lang>
 
=={{header|Racket}}==
The classic:
<langsyntaxhighlight lang="racket">((λ (x) `(,x ',x)) '(λ (x) `(,x ',x)))</langsyntaxhighlight>
 
As a module:
<langsyntaxhighlight lang="racket">(module quine racket
(pretty-write
((λ (x) `(module quine racket (pretty-write (,x ',x))))
'(λ (x) `(module quine racket (pretty-write (,x ',x)))))))</langsyntaxhighlight>
 
As a module via #lang line:
<langsyntaxhighlight lang="racket">#lang racket
((λ(x)(printf "#lang racket\n(~a\n ~s)" x x))
"(λ(x)(printf \"#lang racket\\n(~a\\n ~s)\" x x))")</langsyntaxhighlight>
 
=={{header|Raku}}==
Line 3,428 ⟶ 3,685:
{{trans|Haskell}}
{{works with|Rakudo|#32 "Pisa"}}
<syntaxhighlight lang="raku" perl6line>my &f = {say $^s, $^s.raku;}; f "my \&f = \{say \$^s, \$^s.raku;}; f "
</syntaxhighlight>
</lang>
Note the terminating newline.
 
Line 3,435 ⟶ 3,692:
{{works with|Rakudo|2014.04}}
A more compact, but still purely functional, approach:
<syntaxhighlight lang="raku" perl6line>{.fmt($_).say}(<{.fmt($_).say}(<%s>)>)
</syntaxhighlight>
</lang>
Note again the terminating newline.
 
=={{header|REBOL}}==
<langsyntaxhighlight REBOLlang="rebol">rebol [] q: [print ["rebol [] q:" mold q "do q"]] do q</langsyntaxhighlight>
 
=={{header|REXX}}==
 
===version 1===
<langsyntaxhighlight lang="rexx">/*REXX program outputs its own 1─line source.*/ say sourceline(1)</langsyntaxhighlight>
{{out|output}}
<pre>
Line 3,452 ⟶ 3,709:
 
===version 2===
<langsyntaxhighlight lang="rexx">/*REXX program outputs its own multi─line source.*/
 
do j=1 for sourceline()
say sourceline(j)
end /*j*/</langsyntaxhighlight>
{{out|output}}
<pre>
Line 3,473 ⟶ 3,730:
''The rest of this conversation moved to [[Talk:Quine|Talk]]''
 
<langsyntaxhighlight lang="rexx">/* Rexx */
 
Q = "'"
Line 3,524 ⟶ 3,781:
Say line
End
End x_</langsyntaxhighlight>
 
=={{header|Ring}}==
<langsyntaxhighlight lang="ring">v = "see substr(`v = ` + char(34) + `@` + char(34) + nl + `@` ,`@`,v)"
see substr(`v = ` + char(34) + `@` + char(34) + nl + `@` ,`@`,v)</langsyntaxhighlight>
 
=={{header|RPL}}==
RPL programs are stored in RAM as a specific data structure, and can then be recalled the same way as an ordinary variable.
{{works with|Halcyon Calc|4.2.7}}
≪ 'QUINE' RCL ≫
'QUINE' STO
QUINE
{{out}}
<pre>
1: ≪ 'QUINE' RCL ≫
</pre>
 
=={{header|Ruby}}==
Found online:
<langsyntaxhighlight lang="ruby">_="_=%p;puts _%%_";puts _%_</langsyntaxhighlight>
 
A shell session demonstrating that it is valid:
Line 3,541 ⟶ 3,810:
 
A more readable version of the above example:
<langsyntaxhighlight lang="ruby">x = "x = %p; puts x %% x"; puts x % x</langsyntaxhighlight>
The <code>%p</code> specifier outputs the result of calling the <code>.inspect</code> method on the argument.
 
Even shorter (by a few characters):
<langsyntaxhighlight lang="ruby">puts <<e*2,'e'
puts <<e*2,'e'
e</langsyntaxhighlight>
 
Perhaps the simplest:
<langsyntaxhighlight lang="ruby">eval s="puts'eval s='+s.inspect"</langsyntaxhighlight>
 
An implementation that reads and prints the file the code is stored in (which violates some definitions of “quine”):
<syntaxhighlight lang ="ruby">puts open(__FILE__).read</langsyntaxhighlight>
 
As the above implementation depends on the code being saved in a file, it doesn’t work in IRB.
 
 
=={{header|Rust}}==
Line 3,562 ⟶ 3,830:
A short quine (works with Rust 1.3.0):
 
<langsyntaxhighlight lang="rust">fn main() {
let x = "fn main() {\n let x = ";
let y = "print!(\"{}{:?};\n let y = {:?};\n {}\", x, x, y, y)\n}\n";
Line 3,568 ⟶ 3,836:
let y = {:?};
{}", x, x, y, y)
}</langsyntaxhighlight>
 
Using the method on Wikipedia (0.9-pre-compatible, does not compile on Rust 1.0.0 and newer):
<langsyntaxhighlight lang="rust">fn main()
{
let q = 34u8;
Line 3,629 ⟶ 3,897:
i+=1;
}
}</langsyntaxhighlight>
 
A quine in the shape of a circle:
 
<langsyntaxhighlight lang="rust">
fn main(){let q:&[u8]=&[
32,00,00,00,00,00,00,00,61,27,80,82,
Line 3,676 ⟶ 3,944:
'o; }} print!("\n"); } for n in q.iter() { print!("{}", (if *n==32{10} else
{*n+32}) as char);}print!("\n");} // github.com/kirjavascript
</syntaxhighlight>
</lang>
 
From [https://www.reddit.com/r/rust/comments/iocgex/i_made_a_rust_quine/ Reddit] (works in Rust 1.59.0)
<syntaxhighlight lang="rust">fn main() {
macro_rules! script {() => {"fn main() {{\n\tmacro_rules! script {{() => {{{:?}}}}}\n\tprintln!(script!(), script!());\n}}"}}
println!(script!(), script!());
}
</syntaxhighlight>
 
=={{header|Scala}}==
script:
<langsyntaxhighlight lang="scala">val q = "\"" * 3
val c = """val q = "\"" * 3
val c = %s%s%s
println(c format (q, c, q))
"""
println(c format (q, c, q))</langsyntaxhighlight>
 
application:
<langsyntaxhighlight lang="scala">object Quine {
def main(args: Array[String]) {
val q = "\"" * 3
Line 3,700 ⟶ 3,975:
println(c format (q, c, q))
}
}</langsyntaxhighlight>
 
script, using printf with indexed arguments (proposed here: http://www.codecommit.com/blog/scala/useless-hackery-a-scala-quine):
<langsyntaxhighlight lang="scala">val x="val x=%c%s%1$c;printf(x,34,x)";printf(x,34,x)</langsyntaxhighlight>
 
=={{header|Scheme}}==
{{trans|Common Lisp}}
{{Works with|Scheme|R<math>^5</math>RS}}
<langsyntaxhighlight lang="scheme">((lambda (s) (display (list s (list (quote quote) s)))) (quote (lambda (s) (display (list s (list (quote quote) s))))))</langsyntaxhighlight>
or more "directly" (and classically)
<langsyntaxhighlight lang="scheme">((lambda (q) (quasiquote ((unquote q) (quote (unquote q))))) (quote (lambda (q) (quasiquote ((unquote q) (quote (unquote q)))))))</langsyntaxhighlight>
which is a long-hand for "cute"
<langsyntaxhighlight lang="scheme">((lambda (q) `(,q ',q)) '(lambda (q) `(,q ',q)))</langsyntaxhighlight>
 
=={{header|Seed7}}==
<langsyntaxhighlight lang="seed7">$ include "seed7_05.s7i";
const array string: prog is [](
"$ include \"seed7_05.s7i\";",
Line 3,738 ⟶ 4,013:
writeln(literal(prog[12]) <& ");");
for number range 3 to 12 do writeln(prog[number]); end for;
end func;</langsyntaxhighlight>
Original source: [http://seed7.sourceforge.net/algorith/puzzles.htm#self]
 
=={{header|Shale}}==
<langsyntaxhighlight Shalelang="shale">i var i "i var i %c%s%c = 34 i 34 i printf" = 34 i 34 i printf</langsyntaxhighlight>
 
=={{header|Sidef}}==
With printf():
<langsyntaxhighlight lang="ruby">s = %(s = %%(%s); printf(s, s);
); printf(s, s);</langsyntaxhighlight>
 
With HERE-doc:
<langsyntaxhighlight lang="ruby">say(<<e*2, 'e')
say(<<e*2, 'e')
e</langsyntaxhighlight>
 
=={{header|Smalltalk}}==
(newline included)
<langsyntaxhighlight lang="smalltalk">[:s| Transcript show: s, s printString; cr ] value: '[:s| Transcript show: s, s printString; cr ] value: '
</syntaxhighlight>
</lang>
{{works with|GNU Smalltalk}} (newline included)
<langsyntaxhighlight lang="smalltalk">' print; displayNl' print; displayNl
</syntaxhighlight>
</lang>
 
=={{header|SmileBASIC}}==
Fairly standard with a format string and character codes.
<langsyntaxhighlight lang="smilebasic">Q$="Q$=%SPRINT FORMAT$(Q$,CHR$(34)+Q$+CHR$(34)+CHR$(10))"
PRINT FORMAT$(Q$,CHR$(34)+Q$+CHR$(34)+CHR$(10))</langsyntaxhighlight>
 
=={{header|SNOBOL4}}==
<langsyntaxhighlight lang="snobol4"> S = ' OUTPUT = " S = 0" S "0"; OUTPUT = REPLACE(S,+"","0");END'
OUTPUT = " S = '" S ""; OUTPUT = REPLACE(S,+"","'");END</langsyntaxhighlight>
 
=={{header|SPL}}==
Line 3,776 ⟶ 4,051:
 
=={{header|SPWN}}==
<langsyntaxhighlight lang="spwn">d='JC5wcmludCgiZD0nIitkKyInOyIrJC5iNjRkZWNvZGUoZCkp';$.print("d='"+d+"';"+$.b64decode(d))
</syntaxhighlight>
</lang>
 
=={{header|Standard ML}}==
(newline included)
<langsyntaxhighlight lang="sml">(fn s => print (s ^ "\"" ^ String.toString s ^ "\";\n")) "(fn s => print (s ^ \"\\\"\" ^ String.toString s ^ \"\\\";\\n\")) ";</langsyntaxhighlight>
 
(without newline)
<langsyntaxhighlight lang="sml">(fn y=>(fn x=>(print(x^y^x^y)))) (implode[chr(34)])"(fn y=>(fn x=>(print(x^y^x^y)))) (implode[chr(34)])"</langsyntaxhighlight>
 
=={{header|Swift}}==
Line 3,790 ⟶ 4,065:
{{works with|Swift|2.x}}
(newline included)
<langsyntaxhighlight lang="swift">({print($0+$0.debugDescription+")")})("({print($0+$0.debugDescription+\")\")})(")</langsyntaxhighlight>
{{works with|Swift|1.x}}
(newline included)
<langsyntaxhighlight lang="swift">{println($0+$0.debugDescription+")")}("{println($0+$0.debugDescription+\")\")}(")</langsyntaxhighlight>
===Version 2===
(newline included)
<langsyntaxhighlight lang="swift">let x = ["let x =", ";print(x[0], x, x[1])"] ;print(x[0], x, x[1])</langsyntaxhighlight>
based on the above (passes swift-format):
<syntaxhighlight lang="swift">
let x = ["let x = ", "\nprint(x[0], x, x[1], separator: String())"]
print(x[0], x, x[1], separator: String())
</syntaxhighlight>
 
=={{header|Tcl}}==
Line 3,802 ⟶ 4,082:
 
The most straightforward one in the spirit of Quine is probably the one that uses <tt>[join]</tt>, which appends the elements in the list given in its first argument with a "joining string" which is given in the second element of the list. For example the three-element list <tt>{} A B</tt> (the first element of which is an empty list):
<langsyntaxhighlight lang="tcl">join { {} A B } any_string
=> any_stringAany_stringB</langsyntaxhighlight>
If "A" and "B" are replaced by literal (i.e. escaped) opening and closing curled braces, the result becomes valid Tcl code:
<langsyntaxhighlight lang="tcl">join { {} \{ \} } something
=> something{something}</langsyntaxhighlight>
and re-assembling these parts with a connecting string that is exactly this operation of re-assembly:
<langsyntaxhighlight lang="tcl">join { {} \{ \} } { join { {} \{ \} } }
=> join { {} \{ \} } { join { {} \{ \} } }</langsyntaxhighlight>
 
==Turbo {{header|Pascal}}==
The following code was tested in Turbo Pascal 5.5 under DOSbox DOS, and using gpc 4.1. It assumes ASCII.
<langsyntaxhighlight lang="pascal">program quine;
 
const
Line 3,846 ⟶ 4,126:
writeln(apos, lines[17], apos);
for num := 7 to 17 do writeln(lines[num]);
end.</langsyntaxhighlight>
 
=={{header|TXR}}==
A suite for four variations on a theme. The first three use HTML encoding to avoid solving quoting problem. The third stops using <code>&amp;#10;</code> to encode newlines, but instead represents the coded portion of the program as a list of lines rather than a string containing newlines encoded in some other way. The fourth dispenses with the HTML crutch and solves the quoting problem with a filter defined in the program itself.
===="double filtered"====
<langsyntaxhighlight lang="txr">@(deffilter me ("ME" "@(bind me &quot;ME&quot;)&#10;@(output)&#10;@@(deffilter me (&quot;ME&quot; &quot;@{me :filter me}&quot;))&#10;@{me :filter (me :from_html)}&#10;@(end)"))
@(bind me "ME")
@(output)
@@(deffilter me ("ME" "@{me :filter me}"))
@{me :filter (me :from_html)}
@(end)</langsyntaxhighlight>
===="straight up"====
<langsyntaxhighlight lang="txr">@(bind me "@(output)&#10;@@(bind me &quot;@me&quot;)&#10;@{me :filter :from_html}&#10;@(end)")
@(output)
@@(bind me "@me")
@{me :filter :from_html}
@(end)</langsyntaxhighlight>
===="code free"====
<langsyntaxhighlight lang="txr">@(bind me ("@(output)" "@@(bind me (@(rep)&quot;@me&quot; @(last)&quot;@me&quot;@(end)))" "@(repeat)" "@{me :filter :from_html}" "@(end)" "@(end)"))
@(output)
@@(bind me (@(rep)"@me" @(last)"@me"@(end)))
Line 3,870 ⟶ 4,150:
@{me :filter :from_html}
@(end)
@(end)</langsyntaxhighlight>
===="404"====
<langsyntaxhighlight lang="txr">@(bind me ("@(deffilter q (*'**'*' *'*/*'*') (*'**/*' *'*/*/*') (*'*****' *'***'))" "@(output)" "@@(bind me (@(rep)*'@me*' @(last)*'@me*'@(end)))" "@(repeat)" "@{me :filter q}" "@(end)" "@(end)"))
@(deffilter q ("*'" "\"") ("*/" "\\") ("**" "*"))
@(output)
Line 3,879 ⟶ 4,159:
@{me :filter q}
@(end)
@(end)</langsyntaxhighlight>
 
=={{header|UNIX Shell}}==
Line 3,886 ⟶ 4,166:
A cheat that reads its own source code, because <tt>$0</tt> is the path to the script:
 
<langsyntaxhighlight lang="bash">#!/bin/sh
cat < "$0"</langsyntaxhighlight>
 
A cheat that reads its own input using the <tt>history</tt> command (only works in an interactive shell):
<langsyntaxhighlight lang="bash">history | tail -n 1 | cut -c 8-</langsyntaxhighlight>
 
A real quine that doesn't cheat:
 
<langsyntaxhighlight lang="bash">{
string=`cat`
printf "$string" "$string"
Line 3,907 ⟶ 4,187:
} <<'END-FORMAT'
%s
END-FORMAT</langsyntaxhighlight>
 
 
=={{header|Unlambda}}==
<langsyntaxhighlight lang="unlambda">``d`.v`.vv```s``si`k`ki``si`k`d`..`.``.d`.``.c`.s`.``.``.s`.``.``.vv``s``sc`d`.`v``s``sc`d`.`v``s``sc`d`.dv``s``sc`d`.`v``s``sc`d`..v``s``sc`d`.vv``s``sc`d`.`v``s``sc`d`..v``s``sc`d`.vv``s``sc`d`.vv``s``sc`d`.`v``s``sc`d`.`v``s``sc`d`.`v``s``sc`d`.sv``s``sc`d`.`v``s``sc`d`.`v``s``sc`d`.sv``s``sc`d`.iv``s``sc`d`.`v``s``sc`d`.kv``s``sc`d`.`v``s``sc`d`.kv``s``sc`d`.iv``s``sc`d`.`v``s``sc`d`.`v``s``sc`d`.sv``s``sc`d`.iv``s``sc`d`.`v``s``sc`d`.kv``s``sc`d`.`v``s``sc`d`.dv``s``sc`d`.`v``s``sc`d`..v``s``sc`d`..v``s``sc`d`.`v``s``sc`d`..v``s``sc`d`.`v``s``sc`d`.`v``s``sc`d`..v``s``sc`d`.dv``s``sc`d`.`v``s``sc`d`..v``s``sc`d`.`v``s``sc`d`.`v``s``sc`d`..v``s``sc`d`.cv``s``sc`d`.`v``s``sc`d`..v``s``sc`d`.sv``s``sc`d`.`v``s``sc`d`..v``s``sc`d`.`v``s``sc`d`.`v``s``sc`d`..v``s``sc`d`.`v``s``sc`d`.`v``s``sc`d`..v``s``sc`d`.sv``s``sc`d`.`v``s``sc`d`..v``s``sc`d`.`v``s``sc`d`.`v``s``sc`d`..v``s``sc`d`.`v``s``sc`d`.`v``s``sc`d`..v``s``sc`d`.vvv</langsyntaxhighlight>
 
 
=={{header|V}}==
First we need a function that can print a list as a library.
<langsyntaxhighlight lang="v">[p [put ' 'put] map ' ' puts].</langsyntaxhighlight>
with that, the quine reduces to
quine.v:
<langsyntaxhighlight lang="v">[dup puts p]
dup puts p</langsyntaxhighlight>
 
Using it:
$./v quine.v
<langsyntaxhighlight lang="v">[dup puts p]
dup puts p</langsyntaxhighlight>
 
{{omit from|Brlcad}}
Line 3,932 ⟶ 4,212:
=={{header|VBA}}==
Inspired bij the Pascal version
<langsyntaxhighlight lang="vb">Public Sub quine()
quote = Chr(34)
comma = Chr(44)
Line 3,963 ⟶ 4,243:
Debug.Print n(i)
Next i
End Sub</langsyntaxhighlight>
 
=={{header|Verbexx}}==
Note: The input source code would normally include a Byte Order Mark (BOM) at the start. The output written to the
console does not contain a BOM -- visually, the output looks the same as the input.
<langsyntaxhighlight Verbexxlang="verbexx">@VAR s = «@SAY (@FORMAT fmt:"@VAR s = %c%s%c;" 0x00AB s 0x00BB) s no_nl:;»; @SAY (@FORMAT fmt:"@VAR s = %c%s%c;" 0x00AB s 0x00BB) s no_nl:;</langsyntaxhighlight>
 
=={{header|VHDL}}==
<langsyntaxhighlight VHDLlang="vhdl">LIBRARY ieee; USE std.TEXTIO.all;
entity quine is end entity quine;
architecture beh of quine is
Line 4,010 ⟶ 4,290:
wait;
end process;
end architecture beh;</langsyntaxhighlight>
NOTE: ModelSim escapes each line in the console output with "# ".
 
=={{header|Visual Basic .NET}}==
Leading newline for appearance.
<langsyntaxhighlight lang="vbnet">Module Program
Sub Main()
Dim s = "
Line 4,026 ⟶ 4,306:
Console.WriteLine(s, ChrW(34), s)
End Sub
End Module</langsyntaxhighlight>
 
Possibly shortest possible (must have strict and explicit off):
<langsyntaxhighlight lang="vbnet">Module M
Sub Main
s="Module M
Line 4,039 ⟶ 4,319:
Console.Write(s,ChrW(34),s)
End Sub
End Module</langsyntaxhighlight>
 
=={{header|WDTE}}==
 
<langsyntaxhighlight WDTElang="wdte">let str => import 'strings';
let v => "let str => import 'strings';\nlet v => {q};\nstr.format v v -- io.writeln io.stdout;";
str.format v v -- io.writeln io.stdout;</langsyntaxhighlight>
 
=={{header|Whitespace}}==
Line 4,055 ⟶ 4,335:
 
 
<syntaxhighlight lang="whitespace">
<lang Whitespace>
Line 4,220 ⟶ 4,500:
 
</syntaxhighlight>
</lang>
 
=={{header|Wren}}==
{{libheader|Wren-fmt}}
<langsyntaxhighlight ecmascriptlang="wren">import "./fmt" for Fmt
 
var a = "import $c./fmt$c for Fmt$c$cvar a = $q$cFmt.lprint(a, [34, 34, 10, 10, a, 10])"
Fmt.lprint(a, [34, 34, 10, 10, a, 10])</langsyntaxhighlight>
 
=={{header|x86 Assembly}}==
<!-- Used with permission from: https://github.com/calculuswhiz/Assembly-Syntax-Definition/tree/master/test -->
<syntaxhighlight lang="text">
.global _start;_start:mov $p,%rsi;mov $1,%rax;mov $1,%rdi;mov $255,%rdx;syscall;mov $q,%rsi;mov $1,%rax;mov $1,%rdx;syscall;mov $p,%rsi;mov $1,%rax;mov $255,%rdx;syscall;mov $q,%rsi;mov $1,%rax;mov $1,%rdx;syscall;mov $60,%rax;syscall;q:.byte 34;p:.ascii ".global _start;_start:mov $p,%rsi;mov $1,%rax;mov $1,%rdi;mov $255,%rdx;syscall;mov $q,%rsi;mov $1,%rax;mov $1,%rdx;syscall;mov $p,%rsi;mov $1,%rax;mov $255,%rdx;syscall;mov $q,%rsi;mov $1,%rax;mov $1,%rdx;syscall;mov $60,%rax;syscall;q:.byte 34;p:.ascii "
</syntaxhighlight>
</lang>
Compile with `gcc -nostdlib quine.sx` where quine.sx is the filename. This is for GNU Assembler x64 syntax.
 
Here is the 32 bit version. Compile this with `gcc -nostdlib quine32.sx -m32`. The m32 flag tells gcc to parse the code as 32-bit.
<syntaxhighlight lang="text">
.global _start;_start:mov $p,%ecx;mov $4,%eax;mov $1,%ebx;mov $264,%edx;int $0x80;mov $q,%ecx;mov $4,%eax;mov $1,%edx;int $0x80;mov $p,%ecx;mov $4,%eax;mov $264,%edx;int $0x80;mov $q,%ecx;mov $4,%eax;mov $1,%edx;int $0x80;mov $1,%eax;int $0x80;q:.byte 34;p:.ascii ".global _start;_start:mov $p,%ecx;mov $4,%eax;mov $1,%ebx;mov $264,%edx;int $0x80;mov $q,%ecx;mov $4,%eax;mov $1,%edx;int $0x80;mov $p,%ecx;mov $4,%eax;mov $264,%edx;int $0x80;mov $q,%ecx;mov $4,%eax;mov $1,%edx;int $0x80;mov $1,%eax;int $0x80;q:.byte 34;p:.ascii "
</syntaxhighlight>
</lang>
 
For readability, here's a bash one-liner. Again, quine.sx is the filename. If you have the scat highlighter, you can pipe it to that, too. Of course, this breaks the quine, so don't compile this version expecting it to work.
<langsyntaxhighlight lang="bash">python -c "from pprint import pprint;prog=open('quine.sx', 'r').read().split(';',24);pprint(prog)" | tr "[]" " " | perl -pe "s/( '|'(,| ))//g"</langsyntaxhighlight>
 
=={{header|zkl}}==
The simplest is the zkl REPL and integers
<langsyntaxhighlight lang="zkl">zkl: 123
123</langsyntaxhighlight>
{{trans|Groovy}}
<langsyntaxhighlight lang="zkl">s:="s:=%c%s%c;print(s.fmt(34,s,34));";print(s.fmt(34,s,34));</langsyntaxhighlight>
{{trans|ALGOL 68}}
<langsyntaxhighlight lang="zkl"> a:="a:=;q:=(34).toChar();print(a[0,3]+q+a+q+a[3,*]);";q:=(34).toChar();print(a[0,3]+q+a+q+a[3,*]);</langsyntaxhighlight>
{{trans|C}}
<langsyntaxhighlight lang="zkl">reg c=0'|"|,s="reg c=0'|%c|,s=%c%s%c;s.fmt(c,c,s,c).print();";s.fmt(c,c,s,c).print();</langsyntaxhighlight>
{{trans|Python}}
Create a file with:
<langsyntaxhighlight lang="zkl">File(__FILE__).readln().print()</langsyntaxhighlight>
and run it: $ zkl foo.zkl to generate the contents.
 
We can also write a quine tester since print both sends the results to the output device and returns them:
<langsyntaxhighlight lang="zkl">fcn testQuine(quine){
Compiler.Compiler.compileText(quine).__constructor(); out:=vm.regX;
println("\ndiff>>",quine-out,"<<");
}</langsyntaxhighlight>
<pre>
testQuine(0'|s:="s:=%c%s%c;print(s.fmt(34,s,34));";print(s.fmt(34,s,34));|);
56

edits